From 85d54861412b6ee4e80cd757f22b84522936a650 Mon Sep 17 00:00:00 2001 From: Kenneth Jao Date: Thu, 2 Dec 2021 22:41:12 -0500 Subject: [PATCH] Reorganized Cython modules and updated Radial[T] formula --- squish/_squish/_squish.pxd | 253 - squish/_squish/_squish.pyx | 3 - squish/_squish/core.pyx | 385 - squish/_squish/energy.pyx | 338 - squish/_squish/voronoi_dcel.pyx | 689 - squish/common.py | 3 +- squish/core.c | 8834 +++++++ squish/core.pxd | 135 + squish/core.pyx | 363 + squish/diagram.py | 4 +- squish/energy.c | 27737 ++++++++++++++++++++++ squish/energy.pyx | 302 + squish/ordered.py | 58 +- squish/simulation.py | 18 +- squish/{_squish/_squish.c => voronoi.c} | 21762 ++++++----------- squish/voronoi.pxd | 99 + squish/voronoi.pyx | 736 + 17 files changed, 45154 insertions(+), 16565 deletions(-) delete mode 100644 squish/_squish/_squish.pxd delete mode 100644 squish/_squish/_squish.pyx delete mode 100644 squish/_squish/core.pyx delete mode 100644 squish/_squish/energy.pyx delete mode 100644 squish/_squish/voronoi_dcel.pyx create mode 100644 squish/core.c create mode 100644 squish/core.pxd create mode 100644 squish/core.pyx create mode 100644 squish/energy.c create mode 100644 squish/energy.pyx rename squish/{_squish/_squish.c => voronoi.c} (64%) create mode 100644 squish/voronoi.pxd create mode 100644 squish/voronoi.pyx diff --git a/squish/_squish/_squish.pxd b/squish/_squish/_squish.pxd deleted file mode 100644 index 6b6b654..0000000 --- a/squish/_squish/_squish.pxd +++ /dev/null @@ -1,253 +0,0 @@ -cimport numpy as np - -# Cython Types. -ctypedef np.int64_t INT_T -ctypedef np.float64_t FLOAT_T - -# Stores initialization functions. -cdef struct Init: - IArray (*IArray)(INT_T*, (INT_T, INT_T)) nogil - FArray (*FArray)(FLOAT_T*, (INT_T, INT_T)) nogil - #IList (*IList)() nogil - BitSet (*BitSet)(INT_T) nogil - Vector2D (*Vector2D)(FLOAT_T, FLOAT_T) nogil - Matrix2x2 (*Matrix2x2)(FLOAT_T, FLOAT_T, FLOAT_T, FLOAT_T) nogil - SiteCacheMap (*SiteCacheMap)(INT_T, INT_T, INT_T, INT_T, INT_T) nogil - EdgeCacheMap (*EdgeCacheMap)(INT_T, INT_T, INT_T, INT_T, INT_T, INT_T, INT_T, INT_T, - INT_T, INT_T, INT_T, INT_T, INT_T, INT_T) nogil - VoronoiInfo (*VoronoiInfo)(INT_T [:, ::1], INT_T[:, ::1], FLOAT_T[:, ::1], - FLOAT_T[:, ::1], FLOAT_T[:, ::1], FLOAT_T[:, ::1], - EdgeCacheMap*) nogil - Site (*Site)(INT_T, VoronoiInfo*) nogil - HalfEdge (*HalfEdge)(INT_T, VoronoiInfo*) nogil - -# Integer Array psuedo-class for continguous arrays. -cdef struct IArray: - INT_T* arr - (INT_T, INT_T) shape - - INT_T (*get)(IArray*, (INT_T, INT_T)) nogil - void (*set)(IArray*, (INT_T, INT_T), INT_T) nogil - -# Float Array psuedo-class for continguous arrays. -ctypedef struct FArray: - FLOAT_T* arr - (INT_T, INT_T) shape - - FLOAT_T (*get)(FArray*, (INT_T, INT_T)) nogil - void (*set)(FArray*, (INT_T, INT_T), FLOAT_T) nogil - -# Simple append-only dynamic integer array. -# ctypedef struct IList: -# INT_T* data -# INT_T size, length - -# void (*append)(IList*, INT_T) nogil -# void (*free)(IList*) nogil - -# Uses an array of bits to determine if value in set. -ctypedef struct BitSet: - INT_T* bits - - bint (*add)(BitSet*, INT_T) nogil - void (*free)(BitSet*) nogil - -# Psuedo-operator definitions. -ctypedef Vector2D* (*VectorSelfVecOp)(Vector2D*, Vector2D) nogil -ctypedef Vector2D (*VectorCopyVecOp)(Vector2D*, Vector2D) nogil -ctypedef Vector2D* (*VectorSelfSclOp)(Vector2D*, FLOAT_T) nogil -ctypedef Vector2D (*VectorCopySclOp)(Vector2D*, FLOAT_T) nogil - -ctypedef Matrix2x2* (*MatrixSelfMatOp)(Matrix2x2*, Matrix2x2) nogil -ctypedef Matrix2x2 (*MatrixCopyMatOp)(Matrix2x2*, Matrix2x2) nogil -ctypedef Matrix2x2* (*MatrixSelfSclOp)(Matrix2x2*, FLOAT_T) nogil -ctypedef Matrix2x2 (*MatrixCopySclOp)(Matrix2x2*, FLOAT_T) nogil - - -ctypedef struct VectorSelfOps: - Vector2D* (*neg)(Vector2D*) nogil - - VectorSelfVecOp vadd - VectorSelfVecOp vsub - VectorSelfVecOp vmul - VectorSelfVecOp vdiv - Vector2D* (*matmul)(Vector2D*, Matrix2x2) nogil - - VectorSelfSclOp sadd - VectorSelfSclOp ssub - VectorSelfSclOp smul - VectorSelfSclOp sdiv - - -ctypedef struct VectorCopyOps: - Vector2D (*neg)(Vector2D*) nogil - - VectorCopyVecOp vadd - VectorCopyVecOp vsub - VectorCopyVecOp vmul - VectorCopyVecOp vdiv - Vector2D (*matmul)(Vector2D*, Matrix2x2) nogil - - VectorCopySclOp sadd - VectorCopySclOp ssub - VectorCopySclOp smul - VectorCopySclOp sdiv - - -ctypedef struct MatrixSelfOps: - Matrix2x2* (*neg)(Matrix2x2*) nogil - - MatrixSelfMatOp madd - MatrixSelfMatOp msub - MatrixSelfMatOp mmul - MatrixSelfMatOp mdiv - MatrixSelfMatOp matmul - - MatrixSelfSclOp sadd - MatrixSelfSclOp ssub - MatrixSelfSclOp smul - MatrixSelfSclOp sdiv - - -ctypedef struct MatrixCopyOps: - Matrix2x2 (*neg)(Matrix2x2*) nogil - - MatrixCopyMatOp madd - MatrixCopyMatOp msub - MatrixCopyMatOp mmul - MatrixCopyMatOp mdiv - MatrixCopyMatOp matmul - - MatrixCopySclOp sadd - MatrixCopySclOp ssub - MatrixCopySclOp smul - MatrixCopySclOp sdiv - -# Psuedo-class for a 2-dimensional vector. No orientation. -ctypedef struct Vector2D: - FLOAT_T x, y - VectorSelfOps self - VectorCopyOps copy - - bint (*equals)(Vector2D*, Vector2D) nogil - Vector2D (*rot)(Vector2D*) nogil - FLOAT_T (*dot)(Vector2D*, Vector2D) nogil - FLOAT_T (*mag)(Vector2D*) nogil - -# Psuedo-class for a 2x2 matrix. -ctypedef struct Matrix2x2: - FLOAT_T a, b, c, d - MatrixSelfOps self - MatrixCopyOps copy - - bint (*equals)(Matrix2x2*, Matrix2x2) nogil - Vector2D (*vecmul)(Matrix2x2*, Vector2D) nogil - -# Psuedo-class that handles caching for sites. -ctypedef struct SiteCacheMap: - INT_T iarea, iperim, iisoparam, ienergy, iavg_radius - - FLOAT_T (*area)(Site*, FLOAT_T) nogil - FLOAT_T (*perim)(Site*, FLOAT_T) nogil - FLOAT_T (*isoparam)(Site*, FLOAT_T) nogil - FLOAT_T (*energy)(Site*, FLOAT_T) nogil - FLOAT_T (*avg_radius)(Site*, FLOAT_T) nogil - -# Psuedo-class that handles caching for edges. -ctypedef struct EdgeCacheMap: - INT_T iH, ila, ila_mag, ida, ida_mag, ixij, idVdv, iphi, iB, iF, ii2p,\ - ilntan, icsc, size - - Matrix2x2 (*H)(HalfEdge*, Matrix2x2) nogil - - Vector2D (*la)(HalfEdge*, Vector2D) nogil - Vector2D (*da)(HalfEdge*, Vector2D) nogil - Vector2D (*xij)(HalfEdge*, Vector2D) nogil - Vector2D (*dVdv)(HalfEdge*, Vector2D) nogil - Vector2D (*i2p)(HalfEdge*, Vector2D) nogil - - FLOAT_T (*la_mag)(HalfEdge*, FLOAT_T) nogil - FLOAT_T (*da_mag)(HalfEdge*, FLOAT_T) nogil - FLOAT_T (*phi)(HalfEdge*, FLOAT_T) nogil - FLOAT_T (*B)(HalfEdge*, FLOAT_T) nogil - FLOAT_T (*F)(HalfEdge*, FLOAT_T) nogil - FLOAT_T (*lntan)(HalfEdge*, FLOAT_T) nogil - FLOAT_T (*csc)(HalfEdge*, FLOAT_T) nogil - -# Psuedo-class to just contain all pertaining info for sites and edges. -ctypedef struct VoronoiInfo: - IArray sites, edges - FArray points, vertices, site_cache, edge_cache - EdgeCacheMap* edge_cache_map - -# Psuedo-class for a Site. -ctypedef struct Site: - INT_T arr_index - VoronoiInfo* info - SiteCacheMap* cache - - INT_T (*index)(Site*) nogil - Vector2D (*vec)(Site*) nogil - HalfEdge (*edge)(Site*) nogil - INT_T (*edge_num)(Site*) nogil - -# Psuedo-class for an HalfEdge. -ctypedef struct HalfEdge: - INT_T orig_arr_index, arr_index - VoronoiInfo* info - EdgeCacheMap* cache - - INT_T (*origin_index)(HalfEdge*) nogil - Vector2D (*origin)(HalfEdge*) nogil - Site (*face)(HalfEdge*) nogil - HalfEdge (*next)(HalfEdge*) nogil - HalfEdge (*prev)(HalfEdge*) nogil - HalfEdge (*twin)(HalfEdge*) nogil - Matrix2x2 (*get_H)(HalfEdge*, Site) nogil - - -cdef class VoronoiContainer: - cdef readonly INT_T n - cdef readonly FLOAT_T w, h, r, energy - cdef FLOAT_T [2] dim - cdef FLOAT_T [:, ::1] points, vertices, site_cache, edge_cache, grad - cdef INT_T [:, ::1] sites, edges - cdef EdgeCacheMap* edge_cache_map - cdef dict __dict__ - - cdef void calculate_voronoi(VoronoiContainer self, - np.ndarray[FLOAT_T, ndim=2] site_arr) except * - cdef void generate_dcel(VoronoiContainer self) except * - cdef void common_cache(VoronoiContainer self) except * - cdef void precompute(self) except * - cdef void calc_grad(self) except * - cdef void get_statistics(VoronoiContainer self) except * - - @staticmethod - cdef inline Matrix2x2 calc_H(HalfEdge, HalfEdge) nogil - @staticmethod - cdef inline bint sign(FLOAT_T [::1], FLOAT_T [::1], FLOAT_T [::1]) - - -cdef class AreaEnergy(VoronoiContainer): - cdef readonly FLOAT_T minimum - cdef void precompute(self) except * - cdef void calc_grad(self) except * - - -cdef class RadialALEnergy(VoronoiContainer): - cdef void precompute(self) except * - cdef void calc_grad(self) except * - - -cdef class RadialTEnergy(VoronoiContainer): - cdef void precompute(self) except * - cdef void calc_grad(self) except * - -cdef class Calc: - @staticmethod - cdef inline FLOAT_T phi(HalfEdge) nogil - @staticmethod - cdef inline Vector2D I2(HalfEdge, FLOAT_T, FLOAT_T) nogil - @staticmethod - cdef Vector2D radialt_edge_grad(HalfEdge, Site, FLOAT_T) nogil \ No newline at end of file diff --git a/squish/_squish/_squish.pyx b/squish/_squish/_squish.pyx deleted file mode 100644 index ab12540..0000000 --- a/squish/_squish/_squish.pyx +++ /dev/null @@ -1,3 +0,0 @@ -include "core.pyx" -include "voronoi_dcel.pyx" -include "energy.pyx" \ No newline at end of file diff --git a/squish/_squish/core.pyx b/squish/_squish/core.pyx deleted file mode 100644 index a1fcf19..0000000 --- a/squish/_squish/core.pyx +++ /dev/null @@ -1,385 +0,0 @@ -import array, scipy.spatial, numpy as np -from cython.parallel import parallel, prange - -cimport numpy as np -from cpython cimport array -from libc.stdlib cimport malloc, realloc, calloc, free -from libc.math cimport isnan, NAN, pi as PI, M_PI_2 as PI_2, \ - sqrt, log, sin, cos, tan, acos, fabs -from _squish cimport INT_T, FLOAT_T, Init, IArray, FArray, BitSet, Vector2D, Matrix2x2, \ - VectorSelfOps, VectorCopyOps, MatrixSelfOps, MatrixCopyOps, \ - SiteCacheMap, EdgeCacheMap, VoronoiInfo, Site, HalfEdge - -#### Constants #### - -INT = np.int64 -FLOAT = np.float64 - -cdef FLOAT_T TAU = 2*PI -# In most cases, the amount of edges relevant to a gradient will -# not exceed this number. However, we assign a growth rate of 8 edges, -# when dynamically allocating. -cdef INT_T EDGE_ARR_SIZE = 32 - -cdef Init init -init.IArray, init.FArray, init.BitSet, init.Vector2D, init.Matrix2x2 = \ - init_iarray, init_farray, init_bitset, init_vector2d, init_matrix2x2 - -cdef VectorSelfOps VSO -cdef VectorCopyOps VCO -cdef MatrixSelfOps MSO -cdef MatrixCopyOps MCO - -VSO.neg, VSO.vadd, VSO.vsub, VSO.vmul, VSO.vdiv, VSO.sadd, VSO.ssub, VSO.smul, VSO.sdiv = \ - v_neg_s, v_vadd_s, v_vsub_s, v_vmul_s, v_vdiv_s, v_sadd_s, v_ssub_s, v_smul_s, v_sdiv_s -VSO.matmul = v_matmul_s - -VCO.neg, VCO.vadd, VCO.vsub, VCO.vmul, VCO.vdiv, VCO.sadd, VCO.ssub, VCO.smul, VCO.sdiv = \ - v_neg_c, v_vadd_c, v_vsub_c, v_vmul_c, v_vdiv_c, v_sadd_c, v_ssub_c, v_smul_c, v_sdiv_c -VCO.matmul = v_matmul_c - -MSO.neg, MSO.madd, MSO.msub, MSO.mmul, MSO.mdiv, MSO.sadd, MSO.ssub, MSO.smul, MSO.sdiv = \ - m_neg_s, m_madd_s, m_msub_s, m_mmul_s, m_mdiv_s, m_sadd_s, m_ssub_s, m_smul_s, m_sdiv_s -MSO.matmul = m_matmul_s - -MCO.neg, MCO.madd, MCO.msub, MCO.mmul, MCO.mdiv, MCO.sadd, MCO.ssub, MCO.smul, MCO.sdiv = \ - m_neg_c, m_madd_c, m_msub_c, m_mmul_c, m_mdiv_c, m_sadd_c, m_ssub_c, m_smul_c, m_sdiv_c -MCO.matmul = m_matmul_c - -cdef Vector2D NAN_VECTOR = init.Vector2D(NAN, NAN) -cdef Matrix2x2 NAN_MATRIX = init.Matrix2x2(NAN, NAN, NAN, NAN) - -cdef FLOAT_T[18] SYMM = [0,0, 1,0, 1,1, 0,1, -1,1, -1,0, -1,-1, 0,-1, 1,-1] -cdef Matrix2x2 R = init.Matrix2x2(0, -1, 1, 0) - -""" -If bound checking is desired, uncomment out ..._valid_indices functions. -""" - -#### IArray Methods #### - -cdef inline IArray init_iarray(INT_T* arr, (INT_T, INT_T) shape) nogil: - cdef IArray iarray - iarray.arr, iarray.shape = arr, shape - - iarray.get = iarray_get - iarray.set = iarray_set - return iarray - -cdef inline bint iarray_valid_indices(IArray* self, (INT_T, INT_T) index) nogil: - if index[0] > self.shape[0] or index[1] > self.shape[1]: - with gil: - raise IndexError(f"Index out of range for IArray with shape {self.shape}") - -cdef inline INT_T iarray_get(IArray* self, (INT_T, INT_T) index) nogil: - #iarray_valid_indices(&self, index) - return self.arr[index[0]*self.shape[1] + index[1]] - -cdef inline void iarray_set(IArray* self, (INT_T, INT_T) index, INT_T val) nogil: - #iarray_valid_indices(&self, index) - self.arr[index[0]*self.shape[1] + index[1]] = val - - -#### FArray Methods #### - -cdef inline FArray init_farray(FLOAT_T* arr, (INT_T, INT_T) shape) nogil: - cdef FArray farray - farray.arr, farray.shape = arr, shape - - farray.get = farray_get - farray.set = farray_set - return farray - -cdef inline bint farray_valid_indices(FArray* self, (INT_T, INT_T) index) nogil: - if index[0] > self.shape[0] or index[1] > self.shape[1]: - with gil: - raise IndexError(f"Index out of range for FArray with shape {self.shape}") - -cdef inline FLOAT_T farray_get(FArray* self, (INT_T, INT_T) index) nogil: - #iarray_valid_indices(&self, index) - return self.arr[index[0]*self.shape[1] + index[1]] - -cdef inline void farray_set(FArray* self, (INT_T, INT_T) index, FLOAT_T val) nogil: - #iarray_valid_indices(&self, index) - self.arr[index[0]*self.shape[1] + index[1]] = val - - -#### IList Methods #### - -# cdef inline IList init_ilist() nogil: -# cdef IList ilist -# ilist.size = EDGE_ARR_SIZE -# ilist.length = 0 -# ilist.data = malloc(self.size * sizeof(INT_T)) - -# ilist.append, ilist.free = ilist_append, ilist_free - -# return ilist - -# cdef inline void ilist_append(IList* self, INT_T) nogil: -# if self.size == self.length: -# ilist.data = realloc((self.size+8) * sizeof(INT_T)) -# self.size += 8 - -# self.data[self.length] == INT_T -# self.length += 1 - -# cdef inline void ilist_free(IList* self) nogil: -# free(self.data) - -#### BitSet Methods #### - -cdef inline BitSet init_bitset(INT_T elements) nogil: - cdef BitSet bitset - bitset.bits = calloc(((elements/sizeof(INT_T))+1), sizeof(INT_T)) - - bitset.add, bitset.free = bitset_add, bitset_free - return bitset - -cdef inline bint bitset_add(BitSet* self, INT_T val) nogil: - cdef INT_T index, rel_index, old - index = val/sizeof(INT_T) - old = self.bits[index] - rel_index = val - index*sizeof(INT_T) - - self.bits[index] = (1 << rel_index) | old # New value. - - return old == self.bits[index] # Means 1 was already there. - -cdef inline void bitset_free(BitSet* self) nogil: - free(self.bits) - -#### Vector2D Methods #### -""" -Prefix 'v' stands for vector, element by element operation. -Prefix 's' stands for scalar, broadcasted operation. -Suffix 'w' stands for write, overwriting current value. -Suffix 'n' stands for new, copying to a new location. - -While it's possible to chain 'new' operations, when possible, -avoid this, so fewer objects are needed. -""" - -cdef inline Vector2D init_vector2d(FLOAT_T x, FLOAT_T y) nogil: - cdef Vector2D vec - vec.x, vec.y = x, y - vec.self, vec.copy = VSO, VCO - - vec.equals, vec.rot, vec.dot, vec.mag = v_equals, rot, dot, mag - - return vec - - -cdef inline bint v_equals(Vector2D* self, Vector2D w) nogil: - return ((self.x == w.x) and (self.y == w.y)) - -cdef inline Vector2D* v_neg_s(Vector2D* self) nogil: - self.x = -self.x - self.y = -self.y - return self - -cdef inline Vector2D* v_vadd_s(Vector2D* self, Vector2D w) nogil: - self.x += w.x - self.y += w.y - return self - -cdef inline Vector2D* v_vsub_s(Vector2D* self, Vector2D w) nogil: - self.x -= w.x - self.y -= w.y - return self - -cdef inline Vector2D* v_vmul_s(Vector2D* self, Vector2D w) nogil: - self.x *= w.x - self.y *= w.y - return self - -cdef inline Vector2D* v_vdiv_s(Vector2D* self, Vector2D w) nogil: - self.x /= w.x - self.y /= w.y - return self - -cdef inline Vector2D* v_sadd_s(Vector2D* self, FLOAT_T s) nogil: - self.x += s - self.y += s - return self - -cdef inline Vector2D* v_ssub_s(Vector2D* self, FLOAT_T s) nogil: - self.x -= s - self.y -= s - return self - -cdef inline Vector2D* v_smul_s(Vector2D* self, FLOAT_T s) nogil: - self.x *= s - self.y *= s - return self - -cdef inline Vector2D* v_sdiv_s(Vector2D* self, FLOAT_T s) nogil: - self.x /= s - self.y /= s - return self - -cdef inline Vector2D* v_matmul_s(Vector2D* self, Matrix2x2 m) nogil: - self.x, self.y = self.x*m.a + self.y*m.c, self.x*m.b + self.y*m.d - return self - -cdef inline Vector2D v_neg_c(Vector2D* self) nogil: - return init.Vector2D(-self.x, -self.y) - -cdef inline Vector2D v_vadd_c(Vector2D* self, Vector2D w) nogil: - return init.Vector2D(self.x + w.x, self.y + w.y) - -cdef inline Vector2D v_vsub_c(Vector2D* self, Vector2D w) nogil: - return init.Vector2D(self.x - w.x, self.y - w.y) - -cdef inline Vector2D v_vmul_c(Vector2D* self, Vector2D w) nogil: - return init.Vector2D(self.x * w.x, self.y * w.y) - -cdef inline Vector2D v_vdiv_c(Vector2D* self, Vector2D w) nogil: - return init.Vector2D(self.x / w.x, self.y / w.y) - -cdef inline Vector2D v_sadd_c(Vector2D* self, FLOAT_T s) nogil: - return init.Vector2D(self.x + s, self.y + s) - -cdef inline Vector2D v_ssub_c(Vector2D* self, FLOAT_T s) nogil: - return init.Vector2D(self.x + s, self.y + s) - -cdef inline Vector2D v_smul_c(Vector2D* self, FLOAT_T s) nogil: - return init.Vector2D(self.x * s, self.y * s) - -cdef inline Vector2D v_sdiv_c(Vector2D* self, FLOAT_T s) nogil: - return init.Vector2D(self.x / s, self.y / s) - -cdef inline Vector2D v_matmul_c(Vector2D* self, Matrix2x2 m) nogil: - return init.Vector2D( - self.x*m.a + self.y*m.c, self.x*m.b + self.y*m.d - ) - -cdef inline Vector2D rot(Vector2D* self) nogil: - return init.Vector2D(-self.y, self.x) - -cdef inline FLOAT_T dot(Vector2D* self, Vector2D w) nogil: - return self.x*w.x + self.y*w.y - -cdef inline FLOAT_T mag(Vector2D* self) nogil: - return sqrt((self.x*self.x + self.y*self.y)) - - -#### Matrix2x2 Methods #### - -cdef inline Matrix2x2 init_matrix2x2(FLOAT_T a, FLOAT_T b, FLOAT_T c, FLOAT_T d) nogil: - cdef Matrix2x2 matrix - matrix.a, matrix.b, matrix.c, matrix.d = a, b, c, d - matrix.self, matrix.copy = MSO, MCO - - matrix.equals, matrix.vecmul = m_equals, m_vecmul - - return matrix - -cdef inline bint m_equals(Matrix2x2* self, Matrix2x2 m) nogil: - return ( - (self.a == m.a) and (self.b == m.b) and (self.c == m.c) and (self.d == m.d) - ) - -cdef inline Vector2D m_vecmul(Matrix2x2* self, Vector2D v) nogil: - return init.Vector2D( - self.a*v.x + self.b*v.y, self.c*v.x + self.d*v.y - ) - -cdef inline Matrix2x2* m_neg_s(Matrix2x2* self) nogil: - self.a, self.b, self.c, self.d = -self.a, -self.b, -self.c, -self.d - return self - -cdef inline Matrix2x2* m_madd_s(Matrix2x2* self, Matrix2x2 m) nogil: - self.a += m.a - self.b += m.b - self.c += m.c - self.d += m.d - return self - -cdef inline Matrix2x2* m_msub_s(Matrix2x2* self, Matrix2x2 m) nogil: - self.a -= m.a - self.b -= m.b - self.c -= m.c - self.d -= m.d - return self - -cdef inline Matrix2x2* m_mmul_s(Matrix2x2* self, Matrix2x2 m) nogil: - self.a *= m.a - self.b *= m.b - self.c *= m.c - self.d *= m.d - return self - -cdef inline Matrix2x2* m_mdiv_s(Matrix2x2* self, Matrix2x2 m) nogil: - self.a /= m.a - self.b /= m.b - self.c /= m.c - self.d /= m.d - return self - -cdef inline Matrix2x2* m_sadd_s(Matrix2x2* self, FLOAT_T s) nogil: - self.a += s - self.b += s - self.c += s - self.d += s - return self - -cdef inline Matrix2x2* m_ssub_s(Matrix2x2* self, FLOAT_T s) nogil: - self.a -= s - self.b -= s - self.c -= s - self.d -= s - return self - -cdef inline Matrix2x2* m_smul_s(Matrix2x2* self, FLOAT_T s) nogil: - self.a *= s - self.b *= s - self.c *= s - self.d *= s - return self - -cdef inline Matrix2x2* m_sdiv_s(Matrix2x2* self, FLOAT_T s) nogil: - self.a /= s - self.b /= s - self.c /= s - self.d /= s - return self - -cdef inline Matrix2x2* m_matmul_s(Matrix2x2* self, Matrix2x2 m) nogil: - self.a, self.b, self.c, self.d = \ - self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, \ - self.c*m.a + self.d*m.c, self.c*m.b + self.d*m.d - return self - -cdef inline Matrix2x2 m_neg_c(Matrix2x2* self) nogil: - return init.Matrix2x2(-self.a, -self.b, -self.c, -self.d) - -cdef inline Matrix2x2 m_madd_c(Matrix2x2* self, Matrix2x2 m) nogil: - return init.Matrix2x2(self.a+m.a, self.b+m.b, self.c+m.c, self.d+m.d) - -cdef inline Matrix2x2 m_msub_c(Matrix2x2* self, Matrix2x2 m) nogil: - return init.Matrix2x2(self.a-m.a, self.b-m.b, self.c-m.c, self.d-m.d) - -cdef inline Matrix2x2 m_mmul_c(Matrix2x2* self, Matrix2x2 m) nogil: - return init.Matrix2x2(self.a*m.a, self.b*m.b, self.c*m.c, self.d*m.d) - -cdef inline Matrix2x2 m_mdiv_c(Matrix2x2* self, Matrix2x2 m) nogil: - return init.Matrix2x2(self.a/m.a, self.b/m.b, self.c/m.c, self.d/m.d) - -cdef inline Matrix2x2 m_sadd_c(Matrix2x2* self, FLOAT_T s) nogil: - return init.Matrix2x2(self.a+s, self.b+s, self.c+s, self.d+s) - -cdef inline Matrix2x2 m_ssub_c(Matrix2x2* self, FLOAT_T s) nogil: - return init.Matrix2x2(self.a-s, self.b-s, self.c-s, self.d-s) - -cdef inline Matrix2x2 m_smul_c(Matrix2x2* self, FLOAT_T s) nogil: - return init.Matrix2x2(self.a*s, self.b*s, self.c*s, self.d*s) - -cdef inline Matrix2x2 m_sdiv_c(Matrix2x2* self, FLOAT_T s) nogil: - return init.Matrix2x2(self.a/s, self.b/s, self.c/s, self.d/s) - -cdef inline Matrix2x2 m_matmul_c(Matrix2x2* self, Matrix2x2 m) nogil: - return init.Matrix2x2( - self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, - self.c*m.a + self.d*m.c, self.c*m.b + self.d*m.d - ) \ No newline at end of file diff --git a/squish/_squish/energy.pyx b/squish/_squish/energy.pyx deleted file mode 100644 index 411e37b..0000000 --- a/squish/_squish/energy.pyx +++ /dev/null @@ -1,338 +0,0 @@ -cdef class AreaEnergy(VoronoiContainer): - """ - Class for formulas relevant to the Area energy. - :param n: [int] how many sites to generate. - :param w: [float] width of the bounding domain. - :param h: [float] height of the bounding domain. - :param r: [float] radius of zero energy circle. - :param sites: [np.ndarray] collection of sites. - """ - - attr_str = "area" - title_str = "Area" - - def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, - np.ndarray[FLOAT_T, ndim=2] site_arr): - self.edge_cache_map = &AREA_EDGE_CACHE_MAP - self.energy = 0.0 - - super().__init__(n, w, h, r, site_arr) - self.minimum = (n)*(w*h/(n)-PI*r**2)**2 - - - cdef void precompute(self) except *: - cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - - cdef Site xi - cdef HalfEdge em, e, ep - cdef Vector2D vdiff - cdef FLOAT_T A = PI*self.r**2 - cdef FLOAT_T energy = 0 - - cdef INT_T i, j - for i in prange(self.sites.shape[0], nogil=True): - xi = init.Site(i, &info) - e = xi.edge(&xi) - xi.cache.energy(&xi, - (xi.cache.area(&xi, NAN) - A)**2 - ) - if i < self.n: - energy += xi.cache.energy(&xi, NAN) - - for j in range(xi.edge_num(&xi)): - em, ep = e.prev(&e), e.next(&e) - vdiff = em.origin(&em) - vdiff.self.vsub(&vdiff, ep.origin(&ep)) - e.cache.dVdv(&e, R.vecmul(&R, vdiff)) - e.cache.H(&e, VoronoiContainer.calc_H(em, e)) - - e = e.next(&e) - - self.energy = energy - - - cdef void calc_grad(self) except *: - cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - - cdef Site xi, xf - cdef HalfEdge e, f - cdef Vector2D dedxi_p - cdef BitSet edge_set - - cdef INT_T num_edges = self.edges.shape[0] - cdef FLOAT_T A = PI*self.r**2 - - cdef FLOAT_T [:, ::1] dedx = np.zeros((self.n, 2), dtype=FLOAT) - - cdef INT_T i, j - for i in prange(self.n, nogil=True): - xi = init.Site(i, &info) - e = xi.edge(&xi) - edge_set = init.BitSet(num_edges) - for j in range(xi.edge_num(&xi)): # Looping through site edges. - f = e - while True: # Circling this vertex. - if not edge_set.add(&edge_set, f.arr_index): - xf = f.face(&f) - dedxi_p = f.cache.dVdv(&f, NAN_VECTOR) #dVdv - dedxi_p.self.smul(&dedxi_p, xf.cache.area(&xf, NAN) - A) - dedxi_p.self.matmul(&dedxi_p, e.cache.H(&e, NAN_MATRIX)) - dedx[i][0] -= dedxi_p.x - dedx[i][1] -= dedxi_p.y - - f = f.twin(&f) - f = f.next(&f) - if f.arr_index == e.arr_index: - break - - e = e.next(&e) - edge_set.free(&edge_set) - self.grad = dedx - - -cdef class RadialALEnergy(VoronoiContainer): - """ - Class for formulas relevant to the Area energy. - :param n: [int] how many sites to generate. - :param w: [float] width of the bounding domain. - :param h: [float] height of the bounding domain. - :param r: [float] radius of zero energy circle. - :param sites: [np.ndarray] collection of sites. - """ - - attr_str = "radial-al" - title_str = "Radial[AL]" - - - def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, - np.ndarray[FLOAT_T, ndim=2] site_arr): - #self.edge_cache_map = &AREA_EDGE_CACHE_MAP - self.energy = 0.0 - - super().__init__(n, w, h, r, site_arr) - - - cdef void precompute(self) except *: - cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - - pass - - - cdef void calc_grad(self) except *: - cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - - pass - - -cdef class RadialTEnergy(VoronoiContainer): - """ - Class for formulas relevant to the Area energy. - :param n: [int] how many sites to generate. - :param w: [float] width of the bounding domain. - :param h: [float] height of the bounding domain. - :param r: [float] radius of zero energy circle. - :param sites: [np.ndarray] collection of sites. - """ - - attr_str = "radial-t" - title_str = "Radial[T]" - def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, - np.ndarray[FLOAT_T, ndim=2] site_arr): - self.edge_cache_map = &RADIALT_EDGE_CACHE_MAP - self.energy = 0.0 - - super().__init__(n, w, h, r, site_arr) - - - cdef void precompute(self) except *: - cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - - cdef Site xi - cdef HalfEdge em, e - cdef Vector2D Rnla - - # All energy has a 2pir_0 term. - cdef FLOAT_T [:] site_energy = np.full(self.sites.shape[0], TAU*self.r**2) - cdef FLOAT_T [:] avg_radii = np.zeros(self.sites.shape[0]) - cdef FLOAT_T energy, r0, t, tp, B, lntan, csc - energy, r0 = 0, self.r - - cdef INT_T i, j - for i in prange(self.sites.shape[0], nogil=True): - xi = init.Site(i, &info) - e = xi.edge(&xi) - for j in range(xi.edge_num(&xi)): - em = e.prev(&e) - e.cache.H(&e, VoronoiContainer.calc_H(em, e)) - t = Calc.phi(e) - - e.cache.phi(&e, t) - Rnla = e.cache.la(&e, NAN_VECTOR) - Rnla.self.neg(&Rnla) - Rnla = Rnla.rot(&Rnla) - - if Rnla.x < 0: - e.cache.B(&e, -acos((Rnla.y/e.cache.la_mag(&e, NAN)))) - else: - e.cache.B(&e, acos((Rnla.y/e.cache.la_mag(&e, NAN)))) - - e.cache.i2p(&e, Calc.I2(e, r0, t)) - e = e.next(&e) - - # For looping again to calculate integrals. - em = xi.edge(&xi) - for j in range(xi.edge_num(&xi)): - e = em.next(&em) - B = em.cache.B(&em, NAN) - t, tp = em.cache.phi(&em, NAN), e.cache.phi(&e, NAN) - - lntan = (log(fabs(tan(((tp+B)/2))))) - \ - (log(fabs(tan(((t+B)/2))))) - - csc = 1/((sin((tp+B)))) - \ - 1/((sin((t+B)))) - - em.cache.lntan(&em, lntan) - em.cache.csc(&em, csc) - - avg_radii[i] += (em.cache.F(&em, NAN)/em.cache.la_mag(&em, NAN))*lntan - - em = em.next(&em) - - site_energy[i] += 2*(xi.cache.area(&xi, NAN) - r0*avg_radii[i]) - - xi.cache.avg_radius(&xi, avg_radii[i]/TAU) - xi.cache.energy(&xi, site_energy[i]) - if i < self.n: - energy += site_energy[i] - - self.energy = energy - - - cdef void calc_grad(self) except *: - cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - - cdef Site xi - cdef HalfEdge e, fm, f - cdef Vector2D dedxi_p - cdef BitSet edge_set - - cdef INT_T num_edges = self.edges.shape[0] - cdef FLOAT_T r0 = self.r - - cdef FLOAT_T [:, ::1] dedx = np.zeros((self.n, 2), dtype=FLOAT) - - cdef INT_T i, j - for i in prange(self.n, nogil=True): - xi = init.Site(i, &info) - e = xi.edge(&xi) - edge_set = init.BitSet(num_edges) - - for j in range(xi.edge_num(&xi)): # Looping through site edges. - f = e - while True: # Circling this vertex. - fm = f.prev(&f) - if not edge_set.add(&edge_set, f.arr_index): - dedxi_p = Calc.radialt_edge_grad(f, xi, r0) - dedx[i][0] -= dedxi_p.x - dedx[i][1] -= dedxi_p.y - - if not edge_set.add(&edge_set, fm.arr_index): - dedxi_p = Calc.radialt_edge_grad(fm, xi, r0) - dedx[i][0] -= dedxi_p.x - dedx[i][1] -= dedxi_p.y - - - f = f.twin(&f) - f = f.next(&f) - - if f.arr_index == e.arr_index: - break - - e = e.next(&e) - edge_set.free(&edge_set) - self.grad = dedx - - -cdef class Calc: - @staticmethod - cdef inline FLOAT_T phi(HalfEdge e) nogil: - cdef Vector2D da = e.cache.da(&e, NAN_VECTOR) - cdef FLOAT_T angle = acos((da.x/e.cache.da_mag(&e, NAN))) - return angle if da.y >= 0 else TAU - angle - - - @staticmethod - cdef inline Vector2D I2(HalfEdge e, FLOAT_T r0, FLOAT_T t) nogil: - cdef Vector2D Rda = e.cache.da(&e, NAN_VECTOR) - Rda = Rda.rot(&Rda) - Rda.self.sdiv(&Rda, e.cache.da_mag(&e, NAN)) - - return Rda - - - @staticmethod - cdef Vector2D radialt_edge_grad(HalfEdge e, Site xi, FLOAT_T r0) nogil: - cdef Site xe - cdef HalfEdge ep - cdef Vector2D Rda, i2ps, fp, gterms, q - cdef Matrix2x2 ha, hap, hdiff - - cdef FLOAT_T t1, t2, lntan, csc, sinB, cosB, sinBp, cosBp, F, A, B - - xe = e.face(&e) - ep = e.next(&e) - F, A, B = e.cache.F(&e, NAN), e.cache.la_mag(&e, NAN), e.cache.B(&e, NAN) - t1, t2 = e.cache.phi(&e, NAN), ep.cache.phi(&ep, NAN) - - lntan, csc = e.cache.lntan(&e, NAN), e.cache.csc(&e, NAN) - - sinB, cosB = (sin((B))), (cos((B))) - sinBp, cosBp = (sin((B-PI_2))), \ - (cos((B-PI_2))) - - - ha, hap = e.get_H(&e, xi), ep.get_H(&ep, xi) - hdiff = hap.copy.msub(&hap, ha) - # If edge is part of differentiated site. - if xe.index(&xe) == xi.index(&xi): - ha.self.msub(&ha, init.Matrix2x2(1.0, 0.0, 0.0, 1.0)) - hap.self.msub(&hap, init.Matrix2x2(1.0, 0.0, 0.0, 1.0)) - - i2ps = ep.cache.i2p(&ep, NAN_VECTOR) - i2ps.self.matmul(&i2ps, hap) - - q = e.cache.i2p(&e, NAN_VECTOR) - q.self.matmul(&q, ha) - - i2ps.self.vsub(&i2ps, q) - - Rda = e.cache.da(&e, NAN_VECTOR) - Rda = Rda.rot(&Rda) - - fp = e.cache.la(&e, NAN_VECTOR) - fp.self.matmul(&fp, R.copy.matmul(&R, ha)) - fp.self.vadd(&fp, Rda.copy.matmul(&Rda, hdiff)) - fp.self.smul(&fp, lntan/A) - - gterms = init.Vector2D( - cosBp*lntan + sinBp*csc, - cosB*lntan + sinB*csc - ) - gterms.self.smul(>erms, -F/A**2) - - gterms = gterms.rot(>erms) - gterms.self.matmul(>erms, hdiff) - - fp.self.vadd(&fp, gterms) - - i2ps.self.vadd(&i2ps, fp) - i2ps.self.smul(&i2ps, -2*r0) - - return i2ps \ No newline at end of file diff --git a/squish/_squish/voronoi_dcel.pyx b/squish/_squish/voronoi_dcel.pyx deleted file mode 100644 index 885eac9..0000000 --- a/squish/_squish/voronoi_dcel.pyx +++ /dev/null @@ -1,689 +0,0 @@ -from _squish cimport SiteCacheMap, EdgeCacheMap, VoronoiInfo, Site, HalfEdge - -#### Constants #### - -init.SiteCacheMap, init.EdgeCacheMap, init.VoronoiInfo, init.Site, init.HalfEdge = \ - init_sitecachemap, init_edgecachemap, init_voronoiinfo, init_site, init_halfedge - -cdef SiteCacheMap SITE_CACHE_MAP = init.SiteCacheMap(0, 1, 2, 3, 4) - -cdef EdgeCacheMap AREA_EDGE_CACHE_MAP = init.EdgeCacheMap(0, 4, 6, 8, 10, -1, 12, 13, - -1, -1, -1, -1, -1, 14) -cdef EdgeCacheMap RADIALT_EDGE_CACHE_MAP = init.EdgeCacheMap(0, 4, 6, 8, -1, 10, 12, 13, - 14, 15, 16, 17, 18, 19) - -#### SiteCacheMap Methods #### - -cdef inline SiteCacheMap init_sitecachemap(INT_T iarea, INT_T iperim, INT_T iisoparam, - INT_T ienergy, INT_T iavg_radius) nogil: - cdef SiteCacheMap sc - sc.iarea, sc.iperim, sc.iisoparam, sc.ienergy, sc.iavg_radius = \ - iarea, iperim, iisoparam, ienergy, iavg_radius - - sc.area, sc.perim, sc.isoparam, sc.energy, sc.avg_radius = \ - area, perim, isoparam, energy, avg_radius - - return sc - - -cdef inline FLOAT_T area(Site* self, FLOAT_T val) nogil: - if isnan(val): - return self.info.site_cache.get(&self.info.site_cache, - (self.arr_index, self.cache.iarea) - ) - else: - self.info.site_cache.set(&self.info.site_cache, - (self.arr_index, self.cache.iarea), val) - return val - -cdef inline FLOAT_T perim(Site* self, FLOAT_T val) nogil: - if isnan(val): - return self.info.site_cache.get(&self.info.site_cache, - (self.arr_index, self.cache.iperim) - ) - else: - self.info.site_cache.set(&self.info.site_cache, - (self.arr_index, self.cache.iperim), val) - return val - -cdef inline FLOAT_T isoparam(Site* self, FLOAT_T val) nogil: - if isnan(val): - return self.info.site_cache.get(&self.info.site_cache, - (self.arr_index, self.cache.iisoparam) - ) - else: - self.info.site_cache.set(&self.info.site_cache, - (self.arr_index, self.cache.iisoparam), val) - return val - -cdef inline FLOAT_T energy(Site* self, FLOAT_T val) nogil: - if isnan(val): - return self.info.site_cache.get(&self.info.site_cache, - (self.arr_index, self.cache.ienergy) - ) - else: - self.info.site_cache.set(&self.info.site_cache, - (self.arr_index, self.cache.ienergy), val) - return val - -cdef inline FLOAT_T avg_radius(Site* self, FLOAT_T val) nogil: - if isnan(val): - return self.info.site_cache.get(&self.info.site_cache, - (self.arr_index, self.cache.iavg_radius) - ) - else: - self.info.site_cache.set(&self.info.site_cache, - (self.arr_index, self.cache.iavg_radius), val) - return val - - -#### EdgeCacheMap Methods #### - -cdef inline EdgeCacheMap init_edgecachemap(INT_T iH, INT_T ila, INT_T ida, INT_T ixij, - INT_T idVdv, INT_T ii2p, INT_T ila_mag, INT_T ida_mag, INT_T iphi, INT_T iB, - INT_T iF, INT_T ilntan, INT_T icsc, INT_T size) nogil: - cdef EdgeCacheMap ec - ec.iH, ec.ila, ec.ida, ec.ixij, ec.idVdv, ec.ii2p, ec.ila_mag, ec.ida_mag, ec.iphi, \ - ec.iB, ec.iF, ec.ilntan, ec.icsc = iH, ila, ida, ixij, idVdv, ii2p, \ - ila_mag, ida_mag, iphi, iB, iF, ilntan, icsc - ec.size = size - - ec.H, ec.la, ec.da, ec.xij, ec.dVdv, ec.i2p, ec.la_mag, ec.da_mag, ec.phi, ec.B, ec.F, \ - ec.lntan, ec.csc = H, la, da, xij, dVdv, i2p, la_mag, da_mag, phi, B, F, lntan, csc - - return ec - - -cdef inline Matrix2x2 H(HalfEdge* self, Matrix2x2 val) nogil: - if isnan(val.a): - return init.Matrix2x2( - self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.iH) - ), - self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.iH+1) - ), - self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.iH+2) - ), - self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.iH+3) - ), - ) - else: - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.iH), val.a) - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.iH+1), val.b) - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.iH+2), val.c) - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.iH+3), val.d) - return val - -cdef inline Vector2D la(HalfEdge* self, Vector2D val) nogil: - if isnan(val.x): - return init.Vector2D( - self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.ila) - ), - self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.ila+1) - ) - ) - else: - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.ila), val.x) - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.ila+1), val.y) - return val - -cdef inline Vector2D da(HalfEdge* self, Vector2D val) nogil: - if isnan(val.x): - return init.Vector2D( - self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.ida) - ), - self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.ida+1) - ) - ) - else: - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.ida), val.x) - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.ida+1), val.y) - return val - -cdef inline Vector2D xij(HalfEdge* self, Vector2D val) nogil: - if isnan(val.x): - return init.Vector2D( - self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.ixij) - ), - self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.ixij+1) - ) - ) - else: - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.ixij), val.x) - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.ixij+1), val.y) - return val - -cdef inline Vector2D dVdv(HalfEdge* self, Vector2D val) nogil: - if isnan(val.x): - return init.Vector2D( - self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.idVdv) - ), - self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.idVdv+1) - ) - ) - else: - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.idVdv), val.x) - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.idVdv+1), val.y) - return val - -cdef inline Vector2D i2p(HalfEdge* self, Vector2D val) nogil: - if isnan(val.x): - return init.Vector2D( - self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.ii2p) - ), - self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.ii2p+1) - ) - ) - else: - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.ii2p), val.x) - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.ii2p+1), val.y) - return val - -cdef inline FLOAT_T la_mag(HalfEdge* self, FLOAT_T val) nogil: - if isnan(val): - return self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.ila_mag) - ) - else: - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.ila_mag), val) - return val - -cdef inline FLOAT_T da_mag(HalfEdge* self, FLOAT_T val) nogil: - if isnan(val): - return self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.ida_mag) - ) - else: - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.ida_mag), val) - return val - -cdef inline FLOAT_T phi(HalfEdge* self, FLOAT_T val) nogil: - if isnan(val): - return self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.iphi) - ) - else: - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.iphi), val) - return val - -cdef inline FLOAT_T B(HalfEdge* self, FLOAT_T val) nogil: - if isnan(val): - return self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.iB) - ) - else: - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.iB), val) - return val - -cdef inline FLOAT_T F(HalfEdge* self, FLOAT_T val) nogil: - if isnan(val): - return self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.iF) - ) - else: - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.iF), val) - return val - -cdef inline FLOAT_T lntan(HalfEdge* self, FLOAT_T val) nogil: - if isnan(val): - return self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.ilntan) - ) - else: - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.ilntan), val) - return val - -cdef inline FLOAT_T csc(HalfEdge* self, FLOAT_T val) nogil: - if isnan(val): - return self.info.edge_cache.get(&self.info.edge_cache, - (self.arr_index, self.cache.icsc) - ) - else: - self.info.edge_cache.set(&self.info.edge_cache, - (self.arr_index, self.cache.icsc), val) - return val - - -#### VoronoiInfo Methods #### - -cdef inline VoronoiInfo init_voronoiinfo(INT_T [:, ::1] sites, INT_T [:, ::1] edges, - FLOAT_T [:, ::1] points, FLOAT_T [:, ::1] vertices, - FLOAT_T [:, ::1] site_cache, FLOAT_T [:, ::1] edge_cache, - EdgeCacheMap* edge_cache_map) nogil: - cdef VoronoiInfo info - info.sites = init_iarray(&sites[0,0], (sites.shape[0], sites.shape[1])) - info.edges = init_iarray(&edges[0,0], (edges.shape[0], edges.shape[1])) - info.points = init_farray(&points[0,0], (points.shape[0], points.shape[1])) - info.vertices = init_farray(&vertices[0,0], - (vertices.shape[0], vertices.shape[1]) - ) - info.site_cache = init_farray(&site_cache[0,0], - (site_cache.shape[0], site_cache.shape[1]) - ) - info.edge_cache = init_farray(&edge_cache[0,0], - (edge_cache.shape[0], edge_cache.shape[1]) - ) - info.edge_cache_map = edge_cache_map - - return info - - -#### Site Methods #### - -cdef inline Site init_site(INT_T arr_index, VoronoiInfo* info) nogil: - cdef Site site - site.arr_index, site.info, site.cache = arr_index, info, &SITE_CACHE_MAP - - site.index, site.vec, site.edge, site.edge_num = index, vec, edge, edge_num - - return site - - -cdef inline INT_T index(Site* self) nogil: - return self.info.sites.get(&self.info.sites, (self.arr_index, 0)) - -cdef inline Vector2D vec(Site* self) nogil: - return init.Vector2D( - self.info.points.get(&self.info.points, (self.index(self), 0)), - self.info.points.get(&self.info.points, (self.index(self), 1)) - ) - -cdef inline HalfEdge edge(Site* self) nogil: - return init.HalfEdge( - self.info.sites.get(&self.info.sites, (self.arr_index, 1)), self.info - ) - -cdef inline INT_T edge_num(Site* self) nogil: - return self.info.sites.get(&self.info.sites, (self.arr_index, 2)) - - -#### HalfEdge Methods #### - -cdef inline HalfEdge init_halfedge(INT_T arr_index, VoronoiInfo* info) nogil: - cdef HalfEdge edge - edge.arr_index, edge.info, edge.cache = arr_index, info, info.edge_cache_map - edge.orig_arr_index = arr_index - - edge.origin_index, edge.origin, edge.face, edge.next, edge.prev, edge.twin, edge.get_H = \ - origin_index, origin, face, edge_next, prev, twin, get_H - - return edge - - -cdef inline INT_T origin_index(HalfEdge* self) nogil: - return self.info.edges.get(&self.info.edges, (self.arr_index, 0)) - -cdef inline Vector2D origin(HalfEdge* self) nogil: - return init.Vector2D( - self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 0)), - self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 1)) - ) - -cdef inline Site face(HalfEdge* self) nogil: - return init.Site( - self.info.edges.get(&self.info.edges, (self.arr_index, 1)), self.info - ) - -cdef inline HalfEdge edge_next(HalfEdge* self) nogil: - - return init.HalfEdge( - self.info.edges.get(&self.info.edges, (self.arr_index, 2)), self.info - ) - -cdef inline HalfEdge prev(HalfEdge* self) nogil: - return init.HalfEdge( - self.info.edges.get(&self.info.edges, (self.arr_index, 3)), self.info - ) - -cdef inline HalfEdge twin(HalfEdge* self) nogil: - return init.HalfEdge( - self.info.edges.get(&self.info.edges, (self.arr_index, 4)), self.info - ) - -cdef inline Matrix2x2 get_H(HalfEdge* self, Site xi) nogil: - cdef INT_T this_e = self.origin_index(self) - cdef HalfEdge s_e = xi.edge(&xi) - cdef INT_T i - - for i in range(xi.edge_num(&xi)): - if s_e.origin_index(&s_e) == this_e: - return s_e.cache.H(&s_e, NAN_MATRIX) - s_e = s_e.next(&s_e) - return init.Matrix2x2(0.0, 0.0, 0.0, 0.0) - - -cdef class VoronoiContainer: - """ - Class for Voronoi diagrams, stored in a modified DCEL. - :param n: [int] how many sites to generate. - :param w: [float] width of the bounding domain. - :param h: [float] height of the bounding domain. - :param r: [float] radius of zero energy circle. - :param sites: np.ndarray collection of sites. - """ - - def __init__(VoronoiContainer self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, object site_arr): - self.n, self.w, self.h, self.r = n, w, h, r - self.dim = [w, h] - - self.calculate_voronoi(site_arr.astype(FLOAT)) - self.generate_dcel() - - self.common_cache() - self.precompute() - self.calc_grad() - self.get_statistics() - - - cdef void calculate_voronoi(VoronoiContainer self, - np.ndarray[FLOAT_T, ndim=2] site_arr) except *: - """ - Does all necessary computation and caching once points are set. - :param site_arr: initial points for this container. - """ - global SYMM - cdef np.ndarray[FLOAT_T, ndim=2] symm = np.asarray(SYMM).reshape(9,2) - cdef np.ndarray[FLOAT_T, ndim=1] dim = np.asarray(self.dim) - cdef np.ndarray[FLOAT_T, ndim=2] full_site_arr = np.empty((self.n*9+8, 2), dtype=FLOAT) - - # Generate periodic sites and sites that bound periodic sites. - cdef INT_T i - for i in range(9): - full_site_arr[self.n*i:self.n*(i+1)] = site_arr + symm[i]*dim - if i > 0: - full_site_arr[9*self.n+i-1] = dim/2 + 2*dim*symm[i] - - # Use SciPy to compute the Voronoi set. - self.scipy_vor = scipy.spatial.Voronoi(full_site_arr) - self.points = self.scipy_vor.points - self.vertices = self.scipy_vor.vertices - - - cdef void generate_dcel(VoronoiContainer self) except *: - cdef INT_T npoints = self.n*9+8 - cdef array.array int_tmplt = array.array('q', []) - - cdef np.ndarray[INT_T, ndim=1] offsets = np.zeros(self.n*9+1, dtype=INT) - cdef array.array vert_indices = array.clone(int_tmplt, 0, False) - - # Flatten regions into array, so it can be used later. - cdef INT_T i - for i in range(self.n*9): - verts = self.scipy_vor.regions[self.scipy_vor.point_region[i]] - offsets[i+1] = offsets[i] + len(verts) # Build offsets. - vert_indices.extend(array.array('q', verts)) # Flatten - - # Get vertices of original N sites. - cdef np.ndarray[INT_T, ndim=1] vert_indices_np = np.asarray(vert_indices) - cdef np.ndarray[INT_T, ndim=1] border_sites = np.unique(np.searchsorted( - np.asarray(offsets), # Check indices where below matches would be inserted - np.nonzero(np.isin( # Indices of other verts being in bound verts. - vert_indices_np[offsets[self.n]:], # Rest of the verts to check. - np.unique(vert_indices_np[:offsets[self.n]]) # Bound verts - ))[0] + offsets[self.n], - side='right' # If on index == offset_number, should be part of the next site. - ) - 1) # Subtract by one to get actual site number. - - cdef INT_T border_num = len(border_sites) - - # Build sites array. - # [Site Index, Edge Index/Offset, Edge Count] - self.sites = np.empty((self.n+border_num, 3), dtype=INT) - self.sites.base[:self.n, 0] = np.arange(self.n, dtype=INT) - self.sites.base[self.n:, 0] = border_sites - self.sites.base[:self.n+1, 1] = offsets[:self.n+1] - for i in range(self.n): - self.sites[i, 2] = self.sites[i+1, 1] - self.sites[i, 1] - - cdef INT_T edge_count = offsets[self.n] - cdef INT_T diff - for i in range(border_num): - diff = offsets[border_sites[i]+1] - offsets[border_sites[i]] - edge_count += diff - self.sites[self.n+i, 2] = diff - if i < border_num - 1: - self.sites[self.n+i+1, 1] = self.sites[self.n+i, 1] + diff - - # Build edges array - # [Origin Index, Site Index, Next Index, Prev Index, Twin Index] - self.edges = np.empty((edge_count, 5), dtype=INT) - cdef np.ndarray[INT_T, ndim=1] site_verts - cdef INT_T j, site_i, edge_i, edge_offset, vert_num, twin_index, prev_res - - edge_indices = dict() - - for i in range(self.n + border_num): - site_i = self.sites[i, 0] - edge_offset = self.sites[i, 1] - site_verts = vert_indices_np[offsets[site_i]:offsets[site_i+1]] - - # Scipy outputs sorted vertices, but reverse if not counterclockwise. - if not VoronoiContainer.sign(self.points[site_i], - self.vertices[site_verts[0]], self.vertices[site_verts[1]]): - site_verts = np.flip(site_verts) - - vert_num = offsets[site_i+1] - offsets[site_i] - - for j in range(vert_num): - edge_i = edge_offset+j - self.edges[edge_i, 0] = site_verts[j] - self.edges[edge_i, 1] = i - # Add vert_num because of C modulo to get always positive. - self.edges[edge_i, 2] = (j+vert_num+1) % vert_num + edge_offset - self.edges[edge_i, 3] = (j+vert_num-1) % vert_num + edge_offset - - # Get reversed tuple to theck for twin. - twin_index = edge_indices.get( - (site_verts[(j+1) % vert_num], site_verts[j] - ), -1) - - self.edges[edge_i, 4] = twin_index - if twin_index == -1: - edge_indices[(site_verts[j], site_verts[(j+1) % vert_num])] = \ - j + edge_offset - else: - self.edges[twin_index, 4] = j + edge_offset - - self.site_cache = np.empty((self.n + border_num, 5), dtype=FLOAT) - self.edge_cache = np.empty((edge_count, self.edge_cache_map.size), dtype=FLOAT) - - - cdef void common_cache(VoronoiContainer self) except *: - cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - - cdef Site xi - cdef HalfEdge em, ep - cdef Vector2D p, q, la, da, Rla - - cdef FLOAT_T [:] area = np.zeros(self.sites.shape[0], dtype=FLOAT) - cdef FLOAT_T [:] perim = np.zeros(self.sites.shape[0], dtype=FLOAT) - - cdef INT_T i, j - cdef FLOAT_T e_area, la_mag - for i in prange(self.sites.shape[0], nogil=True): - xi = init.Site(i, &info) - em = xi.edge(&xi) - for j in range(xi.edge_num(&xi)): - ep = em.next(&em) - p, q = em.origin(&em), ep.origin(&ep) - la, da = q.copy.vsub(&q, p), p.copy.vsub(&p, xi.vec(&xi)) # vp - vm, vm - xi - - la_mag = la.mag(&la) - e_area = la.dot(&la, da.rot(&da)) - Rla = la.rot(&la) - - em.cache.la(&em, la) - em.cache.la_mag(&em, la_mag) - em.cache.da(&em, da) - em.cache.da_mag(&em, da.mag(&da)) - em.cache.xij(&em, Rla.copy.smul(&Rla, -e_area/la.dot(&la, la))) - - if info.edge_cache_map.iF != -1: - em.cache.F(&em, e_area) - - area[i] += e_area - perim[i] += la_mag - - em = em.next(&em) - - xi.cache.area(&xi, area[i]/2) - xi.cache.perim(&xi, perim[i]) - xi.cache.isoparam(&xi, 2*PI*area[i]/(perim[i]*perim[i])) - - - @staticmethod - cdef inline Matrix2x2 calc_H(HalfEdge em, HalfEdge ep) nogil: - cdef Vector2D xmv, xpv, im, mp, right, Rpm, Rim, f - cdef Matrix2x2 h - cdef FLOAT_T im2, mp2 - - # Vectors from xi to xm and xp. - xmv, xpv = em.cache.xij(&em, NAN_VECTOR), ep.cache.xij(&ep, NAN_VECTOR) - im, mp = xmv.copy.neg(&xmv), xmv.copy.vsub(&xmv, xpv) # -xmv, xmv - xpv - im2, mp2 = -(xmv.dot(&xmv, xmv)), xmv.dot(&xmv, xmv) - xpv.dot(&xpv, xpv) - # (-xmv*xmv, xmv*xmv - xpv*xpv) - right = init.Vector2D(im2, mp2) - Rpm, Rim = R.vecmul(&R, mp.copy.neg(&mp)), im.rot(&im) # R*-mp, R*im - - h = init.Matrix2x2(Rpm.x, Rim.x, Rpm.y, Rim.y) # [Rpm | Rim], h is temporary. - f = h.vecmul(&h, right) # [Rpm | Rim]*right - h = R.copy.smul(&R, mp2*(2*mp.dot(&mp, Rim))) # fp*g, g is a scalar. - # (fp*g - f*gp)/(g**2). f is a column vector, gp = 2*Rpm is a row vector. - h.self.msub(&h, init.Matrix2x2( - f.x*2*Rpm.x, f.x*2*Rpm.y, f.y*2*Rpm.x, f.y*2*Rpm.y - )) - h.self.sdiv(&h, (2*mp.dot(&mp, Rim))**2) - - return h - - - @staticmethod - cdef inline bint sign(FLOAT_T [::1] ref, FLOAT_T [::1] p, FLOAT_T [::1] q): - """ - Outputs if p2 - self is counterclockwise of p1 - self. - :param p1: [List[float]] first vector - :param p2: [List[float]] second vector - :return: [bool] returns if counterclockwise. - """ - return ((q[0] - ref[0])*-(p[1] - ref[1]) + \ - (q[1] - ref[1])*(p[0] - ref[0])) >= 0 - - # global ROT - # cdef np.ndarray[FLOAT_T, ndim=2] rot = np.asarray(ROT).reshape(2,2) - # return (q - ref).dot(rot.dot(p - ref)) >= 0 - - cdef void precompute(self) except *: - pass - - cdef void calc_grad(self) except *: - pass - - cdef void get_statistics(self) except *: - self.stats = {} - cache = self.site_cache[:self.n, :] - - self.stats["site_areas"] = np.asarray(cache[:, SITE_CACHE_MAP.iarea]) - self.stats["site_edge_count"] = np.asarray(self.sites[:self.n, 2]) - - self.stats["site_isos"] = np.asarray(cache[:, SITE_CACHE_MAP.iisoparam]) - self.stats["site_energies"] = np.asarray(cache[:, SITE_CACHE_MAP.ienergy]) - self.stats["avg_radius"] = np.asarray(cache[:, SITE_CACHE_MAP.iavg_radius]) - - self.stats["isoparam_avg"] = self.stats["site_areas"] / \ - (PI*self.stats["avg_radius"]**2) - - edges = np.asarray(self.edges) - - mask = np.nonzero(edges[:, 0] != -1)[0] - all_edges = mask[(mask % 2 == 0)] - caches = edges[all_edges, 4] - - edge_cache = np.asarray(self.edge_cache) - - self.stats["edge_lengths"] = edge_cache[caches, self.edge_cache_map.ila_mag] - - @property - def site_arr(self): - return np.asarray(self.points[:self.n], dtype=FLOAT) - - @property - def vor_data(self): - return self.scipy_vor - - @property - def gradient(self): - return np.asarray(self.grad, dtype=FLOAT) - - def add_sites(self, add): - return (self.site_arr + add) % np.asarray(self.dim, dtype=FLOAT) - - def iterate(self, FLOAT_T step): - k1 = self.gradient - k2 = self.__class__(self.n, self.w, self.h, self.r, - self.add_sites(step*k1) - ).gradient - - return (step/2)*(k1+k2), k1 - - - def hessian(self, d: float) -> np.ndarray: - """ - Obtains the approximate Hessian. - :param d: [float] small d for approximation. - :return: 2Nx2N array that represents Hessian. - """ - HE = np.zeros((2*self.n, 2*self.n)) - new_sites = np.copy(self.site_arr) # Maintain one copy for speed. - for i in range(self.n): - for j in range(2): - mod = self.w if j == 0 else self.h - new_sites[i][j] = (new_sites[i][j] + d) % mod - Ep = self.__class__(self.n, self.w, self.h, self.r, new_sites) - new_sites[i][j] = (new_sites[i][j] - 2*d) % mod - Em = self.__class__(self.n, self.w, self.h, self.r, new_sites) - new_sites[i][j] = (new_sites[i][j] + d) % mod - - HE[:, 2*i+j] = ((Ep.gradient - Em.gradient)/(2*d)).flatten() - - # Average out discrepencies, since it should be symmetric. - for i in range(2*self.n): - for j in range(i, 2*self.n): - HE[i][j] = (HE[i][j] + HE[j][i])/2 - HE[j][i] = HE[i][j] - - return HE - diff --git a/squish/common.py b/squish/common.py index e44877b..2cf60fd 100644 --- a/squish/common.py +++ b/squish/common.py @@ -3,7 +3,8 @@ from typing import List, Tuple, Union, Optional, Iterator, Generator import pickle, numpy as np from math import gcd from pathlib import Path -from ._squish import VoronoiContainer, AreaEnergy, RadialALEnergy, RadialTEnergy +from squish.voronoi import VoronoiContainer +from squish.energy import AreaEnergy, RadialALEnergy, RadialTEnergy OUTPUT_DIR = Path("squish_output") diff --git a/squish/core.c b/squish/core.c new file mode 100644 index 0000000..02f9c39 --- /dev/null +++ b/squish/core.c @@ -0,0 +1,8834 @@ +/* Generated by Cython 0.29.24 */ + +/* BEGIN: Cython Metadata +{ + "distutils": { + "depends": [], + "name": "squish.core", + "sources": [ + "squish/core.pyx" + ] + }, + "module_name": "squish.core" +} +END: Cython Metadata */ + +#ifndef PY_SSIZE_T_CLEAN +#define PY_SSIZE_T_CLEAN +#endif /* PY_SSIZE_T_CLEAN */ +#include "Python.h" +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) + #error Cython requires Python 2.6+ or Python 3.3+. +#else +#define CYTHON_ABI "0_29_24" +#define CYTHON_HEX_VERSION 0x001D18F0 +#define CYTHON_FUTURE_DIVISION 1 +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#define __PYX_COMMA , +#ifndef HAVE_LONG_LONG + #if PY_VERSION_HEX >= 0x02070000 + #define HAVE_LONG_LONG + #endif +#endif +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#ifdef PYPY_VERSION + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_PYSTON 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 +#elif defined(PYSTON_VERSION) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_PYSTON 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_PYSTON 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #if PY_VERSION_HEX < 0x02070000 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) + #define CYTHON_USE_PYTYPE_LOOKUP 1 + #endif + #if PY_MAJOR_VERSION < 3 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #if PY_VERSION_HEX < 0x02070000 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #elif !defined(CYTHON_USE_PYLONG_INTERNALS) + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #ifndef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if PY_VERSION_HEX < 0x030300F0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000) + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) + #endif + #ifndef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1) + #endif + #ifndef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3) + #endif +#endif +#if !defined(CYTHON_FAST_PYCCALL) +#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #include "longintrepr.h" + #undef SHIFT + #undef BASE + #undef MASK + #ifdef SIZEOF_VOID_P + enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; + #endif +#endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int32 uint32_t; + #endif + #endif +#else + #include +#endif +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) && __cplusplus >= 201103L + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #elif __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__ ) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif + +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) + #define Py_OptimizeFlag 0 +#endif +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#if PY_MAJOR_VERSION < 3 + #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) + #define __Pyx_DefaultClassType PyClass_Type +#else + #define __Pyx_BUILTIN_MODULE_NAME "builtins" +#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2 + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#endif + #define __Pyx_DefaultClassType PyType_Type +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#ifndef METH_STACKLESS + #define METH_STACKLESS 0 +#endif +#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #define __Pyx_PyCFunctionFast _PyCFunctionFast + #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords +#endif +#if CYTHON_FAST_PYCCALL +#define __Pyx_PyFastCFunction_Check(func)\ + ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))))) +#else +#define __Pyx_PyFastCFunction_Check(func) 0 +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1 + #define PyMem_RawMalloc(n) PyMem_Malloc(n) + #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n) + #define PyMem_RawFree(p) PyMem_Free(p) +#endif +#if CYTHON_COMPILING_IN_PYSTON + #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#elif PY_VERSION_HEX >= 0x03060000 + #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() +#elif PY_VERSION_HEX >= 0x03000000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#else + #define __Pyx_PyThreadState_Current _PyThreadState_Current +#endif +#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) +#include "pythread.h" +#define Py_tss_NEEDS_INIT 0 +typedef int Py_tss_t; +static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { + *key = PyThread_create_key(); + return 0; +} +static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { + Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); + *key = Py_tss_NEEDS_INIT; + return key; +} +static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { + PyObject_Free(key); +} +static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { + return *key != Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { + PyThread_delete_key(*key); + *key = Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { + return PyThread_set_key_value(*key, value); +} +static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + return PyThread_get_key_value(*key); +} +#endif +#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) +#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) +#else +#define __Pyx_PyDict_NewPresized(n) PyDict_New() +#endif +#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION + #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#else + #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS +#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) +#else +#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) +#endif +#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 + #if defined(PyUnicode_IS_READY) + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #else + #define __Pyx_PyUnicode_READY(op) (0) + #endif + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) + #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE) + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #endif + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #endif +#else + #define CYTHON_PEP393_ENABLED 0 + #define PyUnicode_1BYTE_KIND 1 + #define PyUnicode_2BYTE_KIND 2 + #define PyUnicode_4BYTE_KIND 4 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) + #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) + #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) +#endif +#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) +#else + #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) +#endif +#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) + #define PyObject_ASCII(o) PyObject_Repr(o) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBaseString_Type PyUnicode_Type + #define PyStringObject PyUnicodeObject + #define PyString_Type PyUnicode_Type + #define PyString_Check PyUnicode_Check + #define PyString_CheckExact PyUnicode_CheckExact +#ifndef PyObject_Unicode + #define PyObject_Unicode PyObject_Str +#endif +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) + #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else + #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) +#endif +#if PY_VERSION_HEX >= 0x030900A4 + #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) +#else + #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) +#endif +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) +#else + #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyIntObject PyLongObject + #define PyInt_Type PyLong_Type + #define PyInt_Check(op) PyLong_Check(op) + #define PyInt_CheckExact(op) PyLong_CheckExact(op) + #define PyInt_FromString PyLong_FromString + #define PyInt_FromUnicode PyLong_FromUnicode + #define PyInt_FromLong PyLong_FromLong + #define PyInt_FromSize_t PyLong_FromSize_t + #define PyInt_FromSsize_t PyLong_FromSsize_t + #define PyInt_AsLong PyLong_AsLong + #define PyInt_AS_LONG PyLong_AS_LONG + #define PyInt_AsSsize_t PyLong_AsSsize_t + #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask + #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask + #define PyNumber_Int PyNumber_Long +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBoolObject PyLongObject +#endif +#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY + #ifndef PyUnicode_InternFromString + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) + #endif +#endif +#if PY_VERSION_HEX < 0x030200A4 + typedef long Py_hash_t; + #define __Pyx_PyInt_FromHash_t PyInt_FromLong + #define __Pyx_PyInt_AsHash_t PyInt_AsLong +#else + #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t + #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func)) +#else + #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) +#endif +#if CYTHON_USE_ASYNC_SLOTS + #if PY_VERSION_HEX >= 0x030500B1 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods + #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) + #else + #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) + #endif +#else + #define __Pyx_PyType_AsAsync(obj) NULL +#endif +#ifndef __Pyx_PyAsyncMethodsStruct + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + } __Pyx_PyAsyncMethodsStruct; +#endif + +#if defined(WIN32) || defined(MS_WINDOWS) + #define _USE_MATH_DEFINES +#endif +#include +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + +#define __PYX_MARK_ERR_POS(f_index, lineno) \ + { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } +#define __PYX_ERR(f_index, lineno, Ln_error) \ + { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } + +#ifndef __PYX_EXTERN_C + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE__squish__core +#define __PYX_HAVE_API__squish__core +/* Early includes */ +#include +#include +#include "numpy/arrayobject.h" +#include "numpy/ndarrayobject.h" +#include "numpy/ndarraytypes.h" +#include "numpy/arrayscalars.h" +#include "numpy/ufuncobject.h" + + /* NumPy API declarations from "numpy/__init__.pxd" */ + +#include +#include +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { + return (size_t) i < (size_t) limit; +} +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) + #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else + #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { + const Py_UNICODE *u_end = u; + while (*u_end++) ; + return (size_t)(u_end - u - 1); +} +#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) +#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) +#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); +#define __Pyx_PySequence_Tuple(obj)\ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); +#if CYTHON_ASSUME_SAFE_MACROS +#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#else +#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#endif +#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#else +#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) +#endif +#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + PyObject* ascii_chars_u = NULL; + PyObject* ascii_chars_b = NULL; + const char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + if (strcmp(default_encoding_c, "ascii") == 0) { + __Pyx_sys_getdefaultencoding_not_ascii = 0; + } else { + char ascii_chars[128]; + int c; + for (c = 0; c < 128; c++) { + ascii_chars[c] = c; + } + __Pyx_sys_getdefaultencoding_not_ascii = 1; + ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); + if (!ascii_chars_u) goto bad; + ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); + if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + PyErr_Format( + PyExc_ValueError, + "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", + default_encoding_c); + goto bad; + } + Py_DECREF(ascii_chars_u); + Py_DECREF(ascii_chars_b); + } + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); + if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; + strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + return -1; +} +#endif +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } + +static PyObject *__pyx_m = NULL; +static PyObject *__pyx_d; +static PyObject *__pyx_b; +static PyObject *__pyx_cython_runtime = NULL; +static PyObject *__pyx_empty_tuple; +static PyObject *__pyx_empty_bytes; +static PyObject *__pyx_empty_unicode; +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * __pyx_cfilenm= __FILE__; +static const char *__pyx_filename; + +/* Header.proto */ +#if !defined(CYTHON_CCOMPLEX) + #if defined(__cplusplus) + #define CYTHON_CCOMPLEX 1 + #elif defined(_Complex_I) + #define CYTHON_CCOMPLEX 1 + #else + #define CYTHON_CCOMPLEX 0 + #endif +#endif +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + #include + #else + #include + #endif +#endif +#if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__) + #undef _Complex_I + #define _Complex_I 1.0fj +#endif + + +static const char *__pyx_f[] = { + "squish/core.pyx", + "__init__.pxd", + "type.pxd", +}; +/* ForceInitThreads.proto */ +#ifndef __PYX_FORCE_INIT_THREADS + #define __PYX_FORCE_INIT_THREADS 0 +#endif + +/* NoFastGil.proto */ +#define __Pyx_PyGILState_Ensure PyGILState_Ensure +#define __Pyx_PyGILState_Release PyGILState_Release +#define __Pyx_FastGIL_Remember() +#define __Pyx_FastGIL_Forget() +#define __Pyx_FastGilFuncInit() + + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":690 + * # in Cython to enable them only on the right systems. + * + * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< + * ctypedef npy_int16 int16_t + * ctypedef npy_int32 int32_t + */ +typedef npy_int8 __pyx_t_5numpy_int8_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":691 + * + * ctypedef npy_int8 int8_t + * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< + * ctypedef npy_int32 int32_t + * ctypedef npy_int64 int64_t + */ +typedef npy_int16 __pyx_t_5numpy_int16_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":692 + * ctypedef npy_int8 int8_t + * ctypedef npy_int16 int16_t + * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< + * ctypedef npy_int64 int64_t + * #ctypedef npy_int96 int96_t + */ +typedef npy_int32 __pyx_t_5numpy_int32_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":693 + * ctypedef npy_int16 int16_t + * ctypedef npy_int32 int32_t + * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< + * #ctypedef npy_int96 int96_t + * #ctypedef npy_int128 int128_t + */ +typedef npy_int64 __pyx_t_5numpy_int64_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":697 + * #ctypedef npy_int128 int128_t + * + * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< + * ctypedef npy_uint16 uint16_t + * ctypedef npy_uint32 uint32_t + */ +typedef npy_uint8 __pyx_t_5numpy_uint8_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":698 + * + * ctypedef npy_uint8 uint8_t + * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< + * ctypedef npy_uint32 uint32_t + * ctypedef npy_uint64 uint64_t + */ +typedef npy_uint16 __pyx_t_5numpy_uint16_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":699 + * ctypedef npy_uint8 uint8_t + * ctypedef npy_uint16 uint16_t + * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< + * ctypedef npy_uint64 uint64_t + * #ctypedef npy_uint96 uint96_t + */ +typedef npy_uint32 __pyx_t_5numpy_uint32_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":700 + * ctypedef npy_uint16 uint16_t + * ctypedef npy_uint32 uint32_t + * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< + * #ctypedef npy_uint96 uint96_t + * #ctypedef npy_uint128 uint128_t + */ +typedef npy_uint64 __pyx_t_5numpy_uint64_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":704 + * #ctypedef npy_uint128 uint128_t + * + * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< + * ctypedef npy_float64 float64_t + * #ctypedef npy_float80 float80_t + */ +typedef npy_float32 __pyx_t_5numpy_float32_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":705 + * + * ctypedef npy_float32 float32_t + * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< + * #ctypedef npy_float80 float80_t + * #ctypedef npy_float128 float128_t + */ +typedef npy_float64 __pyx_t_5numpy_float64_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":714 + * # The int types are mapped a bit surprising -- + * # numpy.int corresponds to 'l' and numpy.long to 'q' + * ctypedef npy_long int_t # <<<<<<<<<<<<<< + * ctypedef npy_longlong long_t + * ctypedef npy_longlong longlong_t + */ +typedef npy_long __pyx_t_5numpy_int_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":715 + * # numpy.int corresponds to 'l' and numpy.long to 'q' + * ctypedef npy_long int_t + * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< + * ctypedef npy_longlong longlong_t + * + */ +typedef npy_longlong __pyx_t_5numpy_long_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":716 + * ctypedef npy_long int_t + * ctypedef npy_longlong long_t + * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< + * + * ctypedef npy_ulong uint_t + */ +typedef npy_longlong __pyx_t_5numpy_longlong_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":718 + * ctypedef npy_longlong longlong_t + * + * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< + * ctypedef npy_ulonglong ulong_t + * ctypedef npy_ulonglong ulonglong_t + */ +typedef npy_ulong __pyx_t_5numpy_uint_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":719 + * + * ctypedef npy_ulong uint_t + * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< + * ctypedef npy_ulonglong ulonglong_t + * + */ +typedef npy_ulonglong __pyx_t_5numpy_ulong_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":720 + * ctypedef npy_ulong uint_t + * ctypedef npy_ulonglong ulong_t + * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< + * + * ctypedef npy_intp intp_t + */ +typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":722 + * ctypedef npy_ulonglong ulonglong_t + * + * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< + * ctypedef npy_uintp uintp_t + * + */ +typedef npy_intp __pyx_t_5numpy_intp_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":723 + * + * ctypedef npy_intp intp_t + * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< + * + * ctypedef npy_double float_t + */ +typedef npy_uintp __pyx_t_5numpy_uintp_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":725 + * ctypedef npy_uintp uintp_t + * + * ctypedef npy_double float_t # <<<<<<<<<<<<<< + * ctypedef npy_double double_t + * ctypedef npy_longdouble longdouble_t + */ +typedef npy_double __pyx_t_5numpy_float_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":726 + * + * ctypedef npy_double float_t + * ctypedef npy_double double_t # <<<<<<<<<<<<<< + * ctypedef npy_longdouble longdouble_t + * + */ +typedef npy_double __pyx_t_5numpy_double_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":727 + * ctypedef npy_double float_t + * ctypedef npy_double double_t + * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< + * + * ctypedef npy_cfloat cfloat_t + */ +typedef npy_longdouble __pyx_t_5numpy_longdouble_t; + +/* "squish/core.pxd":4 + * + * # Cython Types. + * ctypedef np.int64_t INT_T # <<<<<<<<<<<<<< + * ctypedef np.float64_t FLOAT_T + * + */ +typedef __pyx_t_5numpy_int64_t __pyx_t_6squish_4core_INT_T; + +/* "squish/core.pxd":5 + * # Cython Types. + * ctypedef np.int64_t INT_T + * ctypedef np.float64_t FLOAT_T # <<<<<<<<<<<<<< + * + * ctypedef (INT_T, INT_T) Pair + */ +typedef __pyx_t_5numpy_float64_t __pyx_t_6squish_4core_FLOAT_T; +/* Declarations.proto */ +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + typedef ::std::complex< float > __pyx_t_float_complex; + #else + typedef float _Complex __pyx_t_float_complex; + #endif +#else + typedef struct { float real, imag; } __pyx_t_float_complex; +#endif +static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float); + +/* Declarations.proto */ +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + typedef ::std::complex< double > __pyx_t_double_complex; + #else + typedef double _Complex __pyx_t_double_complex; + #endif +#else + typedef struct { double real, imag; } __pyx_t_double_complex; +#endif +static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double); + + +/*--- Type declarations ---*/ + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":729 + * ctypedef npy_longdouble longdouble_t + * + * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< + * ctypedef npy_cdouble cdouble_t + * ctypedef npy_clongdouble clongdouble_t + */ +typedef npy_cfloat __pyx_t_5numpy_cfloat_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":730 + * + * ctypedef npy_cfloat cfloat_t + * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< + * ctypedef npy_clongdouble clongdouble_t + * + */ +typedef npy_cdouble __pyx_t_5numpy_cdouble_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":731 + * ctypedef npy_cfloat cfloat_t + * ctypedef npy_cdouble cdouble_t + * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< + * + * ctypedef npy_cdouble complex_t + */ +typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":733 + * ctypedef npy_clongdouble clongdouble_t + * + * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew1(a): + */ +typedef npy_cdouble __pyx_t_5numpy_complex_t; +struct __pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc; +typedef struct __pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc __pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc; +struct __pyx_t_6squish_4core_IArray; +struct __pyx_t_6squish_4core_FArray; +typedef struct __pyx_t_6squish_4core_FArray __pyx_t_6squish_4core_FArray; +struct __pyx_t_6squish_4core_BitSet; +typedef struct __pyx_t_6squish_4core_BitSet __pyx_t_6squish_4core_BitSet; +struct __pyx_t_6squish_4core_VectorSelfOps; +typedef struct __pyx_t_6squish_4core_VectorSelfOps __pyx_t_6squish_4core_VectorSelfOps; +struct __pyx_t_6squish_4core_VectorCopyOps; +typedef struct __pyx_t_6squish_4core_VectorCopyOps __pyx_t_6squish_4core_VectorCopyOps; +struct __pyx_t_6squish_4core_MatrixSelfOps; +typedef struct __pyx_t_6squish_4core_MatrixSelfOps __pyx_t_6squish_4core_MatrixSelfOps; +struct __pyx_t_6squish_4core_MatrixCopyOps; +typedef struct __pyx_t_6squish_4core_MatrixCopyOps __pyx_t_6squish_4core_MatrixCopyOps; +struct __pyx_t_6squish_4core_Vector2D; +typedef struct __pyx_t_6squish_4core_Vector2D __pyx_t_6squish_4core_Vector2D; +struct __pyx_t_6squish_4core_Matrix2x2; +typedef struct __pyx_t_6squish_4core_Matrix2x2 __pyx_t_6squish_4core_Matrix2x2; + +/* "squish/core.pxd":7 + * ctypedef np.float64_t FLOAT_T + * + * ctypedef (INT_T, INT_T) Pair # <<<<<<<<<<<<<< + * + * # Integer Array psuedo-class for continguous arrays. + */ +struct __pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc { + __pyx_t_6squish_4core_INT_T f0; + __pyx_t_6squish_4core_INT_T f1; +}; +typedef __pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc __pyx_t_6squish_4core_Pair; + +/* "squish/core.pxd":10 + * + * # Integer Array psuedo-class for continguous arrays. + * cdef struct IArray: # <<<<<<<<<<<<<< + * INT_T* arr + * Pair shape + */ +struct __pyx_t_6squish_4core_IArray { + __pyx_t_6squish_4core_INT_T *arr; + __pyx_t_6squish_4core_Pair shape; + __pyx_t_6squish_4core_INT_T (*get)(struct __pyx_t_6squish_4core_IArray *, __pyx_t_6squish_4core_Pair); + void (*set)(struct __pyx_t_6squish_4core_IArray *, __pyx_t_6squish_4core_Pair, __pyx_t_6squish_4core_INT_T); +}; + +/* "squish/core.pxd":18 + * + * # Float Array psuedo-class for continguous arrays. + * ctypedef struct FArray: # <<<<<<<<<<<<<< + * FLOAT_T* arr + * Pair shape + */ +struct __pyx_t_6squish_4core_FArray { + __pyx_t_6squish_4core_FLOAT_T *arr; + __pyx_t_6squish_4core_Pair shape; + __pyx_t_6squish_4core_FLOAT_T (*get)(__pyx_t_6squish_4core_FArray *, __pyx_t_6squish_4core_Pair); + void (*set)(__pyx_t_6squish_4core_FArray *, __pyx_t_6squish_4core_Pair, __pyx_t_6squish_4core_FLOAT_T); +}; + +/* "squish/core.pxd":34 + * + * # Uses an array of bits to determine if value in set. + * ctypedef struct BitSet: # <<<<<<<<<<<<<< + * INT_T* bits + * + */ +struct __pyx_t_6squish_4core_BitSet { + __pyx_t_6squish_4core_INT_T *bits; + int (*add)(__pyx_t_6squish_4core_BitSet *, __pyx_t_6squish_4core_INT_T); + void (*free)(__pyx_t_6squish_4core_BitSet *); +}; + +/* "squish/core.pxd":41 + * + * # Psuedo-operator definitions. + * ctypedef Vector2D* (*VectorSelfVecOp)(Vector2D*, Vector2D) nogil # <<<<<<<<<<<<<< + * ctypedef Vector2D (*VectorCopyVecOp)(Vector2D*, Vector2D) nogil + * ctypedef Vector2D* (*VectorSelfSclOp)(Vector2D*, FLOAT_T) nogil + */ +typedef __pyx_t_6squish_4core_Vector2D *(*__pyx_t_6squish_4core_VectorSelfVecOp)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + +/* "squish/core.pxd":42 + * # Psuedo-operator definitions. + * ctypedef Vector2D* (*VectorSelfVecOp)(Vector2D*, Vector2D) nogil + * ctypedef Vector2D (*VectorCopyVecOp)(Vector2D*, Vector2D) nogil # <<<<<<<<<<<<<< + * ctypedef Vector2D* (*VectorSelfSclOp)(Vector2D*, FLOAT_T) nogil + * ctypedef Vector2D (*VectorCopySclOp)(Vector2D*, FLOAT_T) nogil + */ +typedef __pyx_t_6squish_4core_Vector2D (*__pyx_t_6squish_4core_VectorCopyVecOp)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + +/* "squish/core.pxd":43 + * ctypedef Vector2D* (*VectorSelfVecOp)(Vector2D*, Vector2D) nogil + * ctypedef Vector2D (*VectorCopyVecOp)(Vector2D*, Vector2D) nogil + * ctypedef Vector2D* (*VectorSelfSclOp)(Vector2D*, FLOAT_T) nogil # <<<<<<<<<<<<<< + * ctypedef Vector2D (*VectorCopySclOp)(Vector2D*, FLOAT_T) nogil + * + */ +typedef __pyx_t_6squish_4core_Vector2D *(*__pyx_t_6squish_4core_VectorSelfSclOp)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); + +/* "squish/core.pxd":44 + * ctypedef Vector2D (*VectorCopyVecOp)(Vector2D*, Vector2D) nogil + * ctypedef Vector2D* (*VectorSelfSclOp)(Vector2D*, FLOAT_T) nogil + * ctypedef Vector2D (*VectorCopySclOp)(Vector2D*, FLOAT_T) nogil # <<<<<<<<<<<<<< + * + * ctypedef Matrix2x2* (*MatrixSelfMatOp)(Matrix2x2*, Matrix2x2) nogil + */ +typedef __pyx_t_6squish_4core_Vector2D (*__pyx_t_6squish_4core_VectorCopySclOp)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); + +/* "squish/core.pxd":46 + * ctypedef Vector2D (*VectorCopySclOp)(Vector2D*, FLOAT_T) nogil + * + * ctypedef Matrix2x2* (*MatrixSelfMatOp)(Matrix2x2*, Matrix2x2) nogil # <<<<<<<<<<<<<< + * ctypedef Matrix2x2 (*MatrixCopyMatOp)(Matrix2x2*, Matrix2x2) nogil + * ctypedef Matrix2x2* (*MatrixSelfSclOp)(Matrix2x2*, FLOAT_T) nogil + */ +typedef __pyx_t_6squish_4core_Matrix2x2 *(*__pyx_t_6squish_4core_MatrixSelfMatOp)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); + +/* "squish/core.pxd":47 + * + * ctypedef Matrix2x2* (*MatrixSelfMatOp)(Matrix2x2*, Matrix2x2) nogil + * ctypedef Matrix2x2 (*MatrixCopyMatOp)(Matrix2x2*, Matrix2x2) nogil # <<<<<<<<<<<<<< + * ctypedef Matrix2x2* (*MatrixSelfSclOp)(Matrix2x2*, FLOAT_T) nogil + * ctypedef Matrix2x2 (*MatrixCopySclOp)(Matrix2x2*, FLOAT_T) nogil + */ +typedef __pyx_t_6squish_4core_Matrix2x2 (*__pyx_t_6squish_4core_MatrixCopyMatOp)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); + +/* "squish/core.pxd":48 + * ctypedef Matrix2x2* (*MatrixSelfMatOp)(Matrix2x2*, Matrix2x2) nogil + * ctypedef Matrix2x2 (*MatrixCopyMatOp)(Matrix2x2*, Matrix2x2) nogil + * ctypedef Matrix2x2* (*MatrixSelfSclOp)(Matrix2x2*, FLOAT_T) nogil # <<<<<<<<<<<<<< + * ctypedef Matrix2x2 (*MatrixCopySclOp)(Matrix2x2*, FLOAT_T) nogil + * + */ +typedef __pyx_t_6squish_4core_Matrix2x2 *(*__pyx_t_6squish_4core_MatrixSelfSclOp)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); + +/* "squish/core.pxd":49 + * ctypedef Matrix2x2 (*MatrixCopyMatOp)(Matrix2x2*, Matrix2x2) nogil + * ctypedef Matrix2x2* (*MatrixSelfSclOp)(Matrix2x2*, FLOAT_T) nogil + * ctypedef Matrix2x2 (*MatrixCopySclOp)(Matrix2x2*, FLOAT_T) nogil # <<<<<<<<<<<<<< + * + * + */ +typedef __pyx_t_6squish_4core_Matrix2x2 (*__pyx_t_6squish_4core_MatrixCopySclOp)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); + +/* "squish/core.pxd":52 + * + * + * ctypedef struct VectorSelfOps: # <<<<<<<<<<<<<< + * Vector2D* (*neg)(Vector2D*) nogil + * + */ +struct __pyx_t_6squish_4core_VectorSelfOps { + __pyx_t_6squish_4core_Vector2D *(*neg)(__pyx_t_6squish_4core_Vector2D *); + __pyx_t_6squish_4core_VectorSelfVecOp vadd; + __pyx_t_6squish_4core_VectorSelfVecOp vsub; + __pyx_t_6squish_4core_VectorSelfVecOp vmul; + __pyx_t_6squish_4core_VectorSelfVecOp vdiv; + __pyx_t_6squish_4core_Vector2D *(*matmul)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_VectorSelfSclOp sadd; + __pyx_t_6squish_4core_VectorSelfSclOp ssub; + __pyx_t_6squish_4core_VectorSelfSclOp smul; + __pyx_t_6squish_4core_VectorSelfSclOp sdiv; +}; + +/* "squish/core.pxd":67 + * + * + * ctypedef struct VectorCopyOps: # <<<<<<<<<<<<<< + * Vector2D (*neg)(Vector2D*) nogil + * + */ +struct __pyx_t_6squish_4core_VectorCopyOps { + __pyx_t_6squish_4core_Vector2D (*neg)(__pyx_t_6squish_4core_Vector2D *); + __pyx_t_6squish_4core_VectorCopyVecOp vadd; + __pyx_t_6squish_4core_VectorCopyVecOp vsub; + __pyx_t_6squish_4core_VectorCopyVecOp vmul; + __pyx_t_6squish_4core_VectorCopyVecOp vdiv; + __pyx_t_6squish_4core_Vector2D (*matmul)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_VectorCopySclOp sadd; + __pyx_t_6squish_4core_VectorCopySclOp ssub; + __pyx_t_6squish_4core_VectorCopySclOp smul; + __pyx_t_6squish_4core_VectorCopySclOp sdiv; +}; + +/* "squish/core.pxd":82 + * + * + * ctypedef struct MatrixSelfOps: # <<<<<<<<<<<<<< + * Matrix2x2* (*neg)(Matrix2x2*) nogil + * + */ +struct __pyx_t_6squish_4core_MatrixSelfOps { + __pyx_t_6squish_4core_Matrix2x2 *(*neg)(__pyx_t_6squish_4core_Matrix2x2 *); + __pyx_t_6squish_4core_MatrixSelfMatOp madd; + __pyx_t_6squish_4core_MatrixSelfMatOp msub; + __pyx_t_6squish_4core_MatrixSelfMatOp mmul; + __pyx_t_6squish_4core_MatrixSelfMatOp mdiv; + __pyx_t_6squish_4core_MatrixSelfMatOp matmul; + __pyx_t_6squish_4core_MatrixSelfSclOp sadd; + __pyx_t_6squish_4core_MatrixSelfSclOp ssub; + __pyx_t_6squish_4core_MatrixSelfSclOp smul; + __pyx_t_6squish_4core_MatrixSelfSclOp sdiv; +}; + +/* "squish/core.pxd":97 + * + * + * ctypedef struct MatrixCopyOps: # <<<<<<<<<<<<<< + * Matrix2x2 (*neg)(Matrix2x2*) nogil + * + */ +struct __pyx_t_6squish_4core_MatrixCopyOps { + __pyx_t_6squish_4core_Matrix2x2 (*neg)(__pyx_t_6squish_4core_Matrix2x2 *); + __pyx_t_6squish_4core_MatrixCopyMatOp madd; + __pyx_t_6squish_4core_MatrixCopyMatOp msub; + __pyx_t_6squish_4core_MatrixCopyMatOp mmul; + __pyx_t_6squish_4core_MatrixCopyMatOp mdiv; + __pyx_t_6squish_4core_MatrixCopyMatOp matmul; + __pyx_t_6squish_4core_MatrixCopySclOp sadd; + __pyx_t_6squish_4core_MatrixCopySclOp ssub; + __pyx_t_6squish_4core_MatrixCopySclOp smul; + __pyx_t_6squish_4core_MatrixCopySclOp sdiv; +}; + +/* "squish/core.pxd":112 + * + * # Psuedo-class for a 2-dimensional vector. No orientation. + * ctypedef struct Vector2D: # <<<<<<<<<<<<<< + * FLOAT_T x, y + * VectorSelfOps self + */ +struct __pyx_t_6squish_4core_Vector2D { + __pyx_t_6squish_4core_FLOAT_T x; + __pyx_t_6squish_4core_FLOAT_T y; + __pyx_t_6squish_4core_VectorSelfOps self; + __pyx_t_6squish_4core_VectorCopyOps copy; + int (*equals)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*rot)(__pyx_t_6squish_4core_Vector2D *); + __pyx_t_6squish_4core_FLOAT_T (*dot)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_FLOAT_T (*mag)(__pyx_t_6squish_4core_Vector2D *); +}; + +/* "squish/core.pxd":123 + * + * # Psuedo-class for a 2x2 matrix. + * ctypedef struct Matrix2x2: # <<<<<<<<<<<<<< + * FLOAT_T a, b, c, d + * MatrixSelfOps self + */ +struct __pyx_t_6squish_4core_Matrix2x2 { + __pyx_t_6squish_4core_FLOAT_T a; + __pyx_t_6squish_4core_FLOAT_T b; + __pyx_t_6squish_4core_FLOAT_T c; + __pyx_t_6squish_4core_FLOAT_T d; + __pyx_t_6squish_4core_MatrixSelfOps self; + __pyx_t_6squish_4core_MatrixCopyOps copy; + int (*equals)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_Vector2D (*vecmul)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Vector2D); +}; + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, int); + void (*DECREF)(void*, PyObject*, int); + void (*GOTREF)(void*, PyObject*, int); + void (*GIVEREF)(void*, PyObject*, int); + void* (*SetupContext)(const char*, int, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; +#ifdef WITH_THREAD + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ + } +#else + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) +#endif + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* PyObjectGetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* PyObjectFormatSimple.proto */ +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#elif PY_MAJOR_VERSION < 3 + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyString_CheckExact(s)) ? PyUnicode_FromEncodedObject(s, NULL, "strict") :\ + PyObject_Format(s, f)) +#elif CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_str(s) :\ + likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_str(s) :\ + PyObject_Format(s, f)) +#else + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#endif + +/* PyCFunctionFastCall.proto */ +#if CYTHON_FAST_PYCCALL +static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); +#else +#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) +#endif + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +#if 1 || PY_VERSION_HEX < 0x030600B1 +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); +#else +#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) +#endif +#define __Pyx_BUILD_ASSERT_EXPR(cond)\ + (sizeof(char [1 - 2*!(cond)]) - 1) +#ifndef Py_MEMBER_SIZE +#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) +#endif + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets()\ + ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ + (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) + #define __Pyx_PyFrame_GetLocalsplus(frame)\ + (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) +#endif + +/* PyObjectCall.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* RaiseException.proto */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* WriteUnraisableException.proto */ +static void __Pyx_WriteUnraisable(const char *name, int clineno, + int lineno, const char *filename, + int full_traceback, int nogil); + +/* GetTopmostException.proto */ +#if CYTHON_USE_EXC_INFO_STACK +static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); +#endif + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* GetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* TypeImport.proto */ +#ifndef __PYX_HAVE_RT_ImportType_proto +#define __PYX_HAVE_RT_ImportType_proto +enum __Pyx_ImportType_CheckSize { + __Pyx_ImportType_CheckSize_Error = 0, + __Pyx_ImportType_CheckSize_Warn = 1, + __Pyx_ImportType_CheckSize_Ignore = 2 +}; +static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size); +#endif + +/* PyDictVersioning.proto */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) +#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ + (version_var) = __PYX_GET_DICT_VERSION(dict);\ + (cache_var) = (value); +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ + (VAR) = __pyx_dict_cached_value;\ + } else {\ + (VAR) = __pyx_dict_cached_value = (LOOKUP);\ + __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ + }\ +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); +#else +#define __PYX_GET_DICT_VERSION(dict) (0) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); +#endif + +/* CLineInTraceback.proto */ +#ifdef CYTHON_CLINE_IN_TRACEBACK +#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) +#else +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); +#endif + +/* CodeObjectCache.proto */ +typedef struct { + PyCodeObject* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; +}; +static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static PyCodeObject *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +/* GCCDiagnostics.proto */ +#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) +#define __Pyx_HAS_GCC_DIAGNOSTIC +#endif + +/* ToPyCTupleUtility.proto */ +static PyObject* __pyx_convert__to_py___pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc(__pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc); + +/* RealImag.proto */ +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + #define __Pyx_CREAL(z) ((z).real()) + #define __Pyx_CIMAG(z) ((z).imag()) + #else + #define __Pyx_CREAL(z) (__real__(z)) + #define __Pyx_CIMAG(z) (__imag__(z)) + #endif +#else + #define __Pyx_CREAL(z) ((z).real) + #define __Pyx_CIMAG(z) ((z).imag) +#endif +#if defined(__cplusplus) && CYTHON_CCOMPLEX\ + && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103) + #define __Pyx_SET_CREAL(z,x) ((z).real(x)) + #define __Pyx_SET_CIMAG(z,y) ((z).imag(y)) +#else + #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x) + #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y) +#endif + +/* Arithmetic.proto */ +#if CYTHON_CCOMPLEX + #define __Pyx_c_eq_float(a, b) ((a)==(b)) + #define __Pyx_c_sum_float(a, b) ((a)+(b)) + #define __Pyx_c_diff_float(a, b) ((a)-(b)) + #define __Pyx_c_prod_float(a, b) ((a)*(b)) + #define __Pyx_c_quot_float(a, b) ((a)/(b)) + #define __Pyx_c_neg_float(a) (-(a)) + #ifdef __cplusplus + #define __Pyx_c_is_zero_float(z) ((z)==(float)0) + #define __Pyx_c_conj_float(z) (::std::conj(z)) + #if 1 + #define __Pyx_c_abs_float(z) (::std::abs(z)) + #define __Pyx_c_pow_float(a, b) (::std::pow(a, b)) + #endif + #else + #define __Pyx_c_is_zero_float(z) ((z)==0) + #define __Pyx_c_conj_float(z) (conjf(z)) + #if 1 + #define __Pyx_c_abs_float(z) (cabsf(z)) + #define __Pyx_c_pow_float(a, b) (cpowf(a, b)) + #endif + #endif +#else + static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex); + static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex); + #if 1 + static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex, __pyx_t_float_complex); + #endif +#endif + +/* Arithmetic.proto */ +#if CYTHON_CCOMPLEX + #define __Pyx_c_eq_double(a, b) ((a)==(b)) + #define __Pyx_c_sum_double(a, b) ((a)+(b)) + #define __Pyx_c_diff_double(a, b) ((a)-(b)) + #define __Pyx_c_prod_double(a, b) ((a)*(b)) + #define __Pyx_c_quot_double(a, b) ((a)/(b)) + #define __Pyx_c_neg_double(a) (-(a)) + #ifdef __cplusplus + #define __Pyx_c_is_zero_double(z) ((z)==(double)0) + #define __Pyx_c_conj_double(z) (::std::conj(z)) + #if 1 + #define __Pyx_c_abs_double(z) (::std::abs(z)) + #define __Pyx_c_pow_double(a, b) (::std::pow(a, b)) + #endif + #else + #define __Pyx_c_is_zero_double(z) ((z)==0) + #define __Pyx_c_conj_double(z) (conj(z)) + #if 1 + #define __Pyx_c_abs_double(z) (cabs(z)) + #define __Pyx_c_pow_double(a, b) (cpow(a, b)) + #endif + #endif +#else + static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex); + static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex); + #if 1 + static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex, __pyx_t_double_complex); + #endif +#endif + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int64(npy_int64 value); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) +#endif +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) + +/* CheckBinaryVersion.proto */ +static int __Pyx_check_binary_version(void); + +/* FunctionExport.proto */ +static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); + +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); + + +/* Module declarations from 'cpython.buffer' */ + +/* Module declarations from 'libc.string' */ + +/* Module declarations from 'libc.stdio' */ + +/* Module declarations from '__builtin__' */ + +/* Module declarations from 'cpython.type' */ +static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0; + +/* Module declarations from 'cpython' */ + +/* Module declarations from 'cpython.object' */ + +/* Module declarations from 'cpython.ref' */ + +/* Module declarations from 'cpython.mem' */ + +/* 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 PyTypeObject *__pyx_ptype_5numpy_generic = 0; +static PyTypeObject *__pyx_ptype_5numpy_number = 0; +static PyTypeObject *__pyx_ptype_5numpy_integer = 0; +static PyTypeObject *__pyx_ptype_5numpy_signedinteger = 0; +static PyTypeObject *__pyx_ptype_5numpy_unsignedinteger = 0; +static PyTypeObject *__pyx_ptype_5numpy_inexact = 0; +static PyTypeObject *__pyx_ptype_5numpy_floating = 0; +static PyTypeObject *__pyx_ptype_5numpy_complexfloating = 0; +static PyTypeObject *__pyx_ptype_5numpy_flexible = 0; +static PyTypeObject *__pyx_ptype_5numpy_character = 0; +static PyTypeObject *__pyx_ptype_5numpy_ufunc = 0; + +/* Module declarations from 'libc.stdlib' */ + +/* Module declarations from 'libc.math' */ + +/* Module declarations from 'squish.core' */ +static __pyx_t_6squish_4core_INT_T __pyx_v_6squish_4core_EDGE_ARR_SIZE; +static __pyx_t_6squish_4core_VectorSelfOps __pyx_v_6squish_4core_VSO; +static __pyx_t_6squish_4core_VectorCopyOps __pyx_v_6squish_4core_VCO; +static __pyx_t_6squish_4core_MatrixSelfOps __pyx_v_6squish_4core_MSO; +static __pyx_t_6squish_4core_MatrixCopyOps __pyx_v_6squish_4core_MCO; +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core__Vector2D(__pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core__Matrix2x2(__pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_INT_T __pyx_f_6squish_4core_iarray_get(struct __pyx_t_6squish_4core_IArray *, __pyx_t_6squish_4core_Pair); /*proto*/ +static CYTHON_INLINE void __pyx_f_6squish_4core_iarray_set(struct __pyx_t_6squish_4core_IArray *, __pyx_t_6squish_4core_Pair, __pyx_t_6squish_4core_INT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_4core_farray_get(__pyx_t_6squish_4core_FArray *, __pyx_t_6squish_4core_Pair); /*proto*/ +static CYTHON_INLINE void __pyx_f_6squish_4core_farray_set(__pyx_t_6squish_4core_FArray *, __pyx_t_6squish_4core_Pair, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE int __pyx_f_6squish_4core_bitset_add(__pyx_t_6squish_4core_BitSet *, __pyx_t_6squish_4core_INT_T); /*proto*/ +static CYTHON_INLINE void __pyx_f_6squish_4core_bitset_free(__pyx_t_6squish_4core_BitSet *); /*proto*/ +static CYTHON_INLINE int __pyx_f_6squish_4core_v_equals(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_neg_s(__pyx_t_6squish_4core_Vector2D *); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_vadd_s(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_vsub_s(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_vmul_s(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_vdiv_s(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_sadd_s(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_ssub_s(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_smul_s(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_sdiv_s(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_matmul_s(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Matrix2x2); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_neg_c(__pyx_t_6squish_4core_Vector2D *); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_vadd_c(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_vsub_c(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_vmul_c(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_vdiv_c(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_sadd_c(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_ssub_c(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_smul_c(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_sdiv_c(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_matmul_c(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Matrix2x2); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_rot(__pyx_t_6squish_4core_Vector2D *); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_4core_dot(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_4core_mag(__pyx_t_6squish_4core_Vector2D *); /*proto*/ +static CYTHON_INLINE int __pyx_f_6squish_4core_m_equals(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_m_vecmul(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Vector2D); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_neg_s(__pyx_t_6squish_4core_Matrix2x2 *); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_madd_s(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_msub_s(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_mmul_s(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_mdiv_s(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_sadd_s(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_ssub_s(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_smul_s(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_sdiv_s(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_matmul_s(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_neg_c(__pyx_t_6squish_4core_Matrix2x2 *); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_madd_c(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_msub_c(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_mmul_c(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_mdiv_c(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_sadd_c(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_ssub_c(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_smul_c(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_sdiv_c(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_matmul_c(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); /*proto*/ +#define __Pyx_MODULE_NAME "squish.core" +extern int __pyx_module_is_main_squish__core; +int __pyx_module_is_main_squish__core = 0; + +/* Implementation of 'squish.core' */ +static PyObject *__pyx_builtin_IndexError; +static PyObject *__pyx_builtin_ImportError; +static const char __pyx_k_main[] = "__main__"; +static const char __pyx_k_name[] = "__name__"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_IndexError[] = "IndexError"; +static const char __pyx_k_ImportError[] = "ImportError"; +static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; +static const char __pyx_k_numpy_core_multiarray_failed_to[] = "numpy.core.multiarray failed to import"; +static const char __pyx_k_Index_out_of_range_for_FArray_wi[] = "Index out of range for FArray with shape "; +static const char __pyx_k_Index_out_of_range_for_IArray_wi[] = "Index out of range for IArray with shape "; +static const char __pyx_k_numpy_core_umath_failed_to_impor[] = "numpy.core.umath failed to import"; +static PyObject *__pyx_n_s_ImportError; +static PyObject *__pyx_n_s_IndexError; +static PyObject *__pyx_kp_u_Index_out_of_range_for_FArray_wi; +static PyObject *__pyx_kp_u_Index_out_of_range_for_IArray_wi; +static PyObject *__pyx_n_s_cline_in_traceback; +static PyObject *__pyx_n_s_main; +static PyObject *__pyx_n_s_name; +static PyObject *__pyx_kp_u_numpy_core_multiarray_failed_to; +static PyObject *__pyx_kp_u_numpy_core_umath_failed_to_impor; +static PyObject *__pyx_n_s_test; +static PyObject *__pyx_tuple_; +static PyObject *__pyx_tuple__2; +/* Late includes */ + +/* "squish/core.pyx":41 + * #### IArray Methods #### + * + * cdef inline IArray _IArray(INT_T* arr, Pair shape) nogil: # <<<<<<<<<<<<<< + * cdef IArray iarray + * iarray.arr, iarray.shape = arr, shape + */ + +static CYTHON_INLINE struct __pyx_t_6squish_4core_IArray __pyx_f_6squish_4core__IArray(__pyx_t_6squish_4core_INT_T *__pyx_v_arr, __pyx_t_6squish_4core_Pair __pyx_v_shape) { + struct __pyx_t_6squish_4core_IArray __pyx_v_iarray; + struct __pyx_t_6squish_4core_IArray __pyx_r; + __pyx_t_6squish_4core_INT_T *__pyx_t_1; + __pyx_t_6squish_4core_Pair __pyx_t_2; + __pyx_t_6squish_4core_INT_T (*__pyx_t_3)(struct __pyx_t_6squish_4core_IArray *, __pyx_t_6squish_4core_Pair); + void (*__pyx_t_4)(struct __pyx_t_6squish_4core_IArray *, __pyx_t_6squish_4core_Pair, __pyx_t_6squish_4core_INT_T); + + /* "squish/core.pyx":43 + * cdef inline IArray _IArray(INT_T* arr, Pair shape) nogil: + * cdef IArray iarray + * iarray.arr, iarray.shape = arr, shape # <<<<<<<<<<<<<< + * + * iarray.get, iarray.set = &iarray_get, &iarray_set + */ + __pyx_t_1 = __pyx_v_arr; + __pyx_t_2 = __pyx_v_shape; + __pyx_v_iarray.arr = __pyx_t_1; + __pyx_v_iarray.shape = __pyx_t_2; + + /* "squish/core.pyx":45 + * iarray.arr, iarray.shape = arr, shape + * + * iarray.get, iarray.set = &iarray_get, &iarray_set # <<<<<<<<<<<<<< + * return iarray + * + */ + __pyx_t_3 = (&__pyx_f_6squish_4core_iarray_get); + __pyx_t_4 = (&__pyx_f_6squish_4core_iarray_set); + __pyx_v_iarray.get = __pyx_t_3; + __pyx_v_iarray.set = __pyx_t_4; + + /* "squish/core.pyx":46 + * + * iarray.get, iarray.set = &iarray_get, &iarray_set + * return iarray # <<<<<<<<<<<<<< + * + * cdef inline bint iarray_valid_indices(IArray* self, Pair index) nogil: + */ + __pyx_r = __pyx_v_iarray; + goto __pyx_L0; + + /* "squish/core.pyx":41 + * #### IArray Methods #### + * + * cdef inline IArray _IArray(INT_T* arr, Pair shape) nogil: # <<<<<<<<<<<<<< + * cdef IArray iarray + * iarray.arr, iarray.shape = arr, shape + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":48 + * return iarray + * + * cdef inline bint iarray_valid_indices(IArray* self, Pair index) nogil: # <<<<<<<<<<<<<< + * if index[0] > self.shape[0] or index[1] > self.shape[1]: + * with gil: + */ + +static CYTHON_INLINE int __pyx_f_6squish_4core_iarray_valid_indices(struct __pyx_t_6squish_4core_IArray *__pyx_v_self, __pyx_t_6squish_4core_Pair __pyx_v_index) { + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save; + #endif + __Pyx_RefNannySetupContext("iarray_valid_indices", 1); + + /* "squish/core.pyx":49 + * + * cdef inline bint iarray_valid_indices(IArray* self, Pair index) nogil: + * if index[0] > self.shape[0] or index[1] > self.shape[1]: # <<<<<<<<<<<<<< + * with gil: + * raise IndexError(f"Index out of range for IArray with shape {self.shape}") + */ + /*try:*/ { + __pyx_t_2 = ((__pyx_v_index.f0 > __pyx_v_self->shape.f0) != 0); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L7_bool_binop_done; + } + __pyx_t_2 = ((__pyx_v_index.f1 > __pyx_v_self->shape.f1) != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L7_bool_binop_done:; + if (__pyx_t_1) { + + /* "squish/core.pyx":50 + * cdef inline bint iarray_valid_indices(IArray* self, Pair index) nogil: + * if index[0] > self.shape[0] or index[1] > self.shape[1]: + * with gil: # <<<<<<<<<<<<<< + * raise IndexError(f"Index out of range for IArray with shape {self.shape}") + * + */ + { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); + #endif + /*try:*/ { + + /* "squish/core.pyx":51 + * if index[0] > self.shape[0] or index[1] > self.shape[1]: + * with gil: + * raise IndexError(f"Index out of range for IArray with shape {self.shape}") # <<<<<<<<<<<<<< + * + * cdef inline INT_T iarray_get(IArray* self, Pair index) nogil: + */ + __pyx_t_3 = __pyx_convert__to_py___pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc(__pyx_v_self->shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 51, __pyx_L10_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 51, __pyx_L10_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Index_out_of_range_for_IArray_wi, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 51, __pyx_L10_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IndexError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 51, __pyx_L10_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __PYX_ERR(0, 51, __pyx_L10_error) + } + + /* "squish/core.pyx":50 + * cdef inline bint iarray_valid_indices(IArray* self, Pair index) nogil: + * if index[0] > self.shape[0] or index[1] > self.shape[1]: + * with gil: # <<<<<<<<<<<<<< + * raise IndexError(f"Index out of range for IArray with shape {self.shape}") + * + */ + /*finally:*/ { + __pyx_L10_error: { + #ifdef WITH_THREAD + __Pyx_PyGILState_Release(__pyx_gilstate_save); + #endif + goto __pyx_L4_error; + } + } + } + + /* "squish/core.pyx":49 + * + * cdef inline bint iarray_valid_indices(IArray* self, Pair index) nogil: + * if index[0] > self.shape[0] or index[1] > self.shape[1]: # <<<<<<<<<<<<<< + * with gil: + * raise IndexError(f"Index out of range for IArray with shape {self.shape}") + */ + } + } + /*finally:*/ { + /*normal exit:*/{ + #ifdef WITH_THREAD + __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); + #endif + goto __pyx_L5; + } + __pyx_L4_error: { + #ifdef WITH_THREAD + __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); + #endif + goto __pyx_L1_error; + } + __pyx_L5:; + } + + /* "squish/core.pyx":48 + * return iarray + * + * cdef inline bint iarray_valid_indices(IArray* self, Pair index) nogil: # <<<<<<<<<<<<<< + * if index[0] > self.shape[0] or index[1] > self.shape[1]: + * with gil: + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_WriteUnraisable("squish.core.iarray_valid_indices", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1); + __pyx_r = 0; + __pyx_L0:; + #ifdef WITH_THREAD + __Pyx_PyGILState_Release(__pyx_gilstate_save); + #endif + return __pyx_r; +} + +/* "squish/core.pyx":53 + * raise IndexError(f"Index out of range for IArray with shape {self.shape}") + * + * cdef inline INT_T iarray_get(IArray* self, Pair index) nogil: # <<<<<<<<<<<<<< + * #iarray_valid_indices(&self, index) + * return self.arr[index[0]*self.shape[1] + index[1]] + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_INT_T __pyx_f_6squish_4core_iarray_get(struct __pyx_t_6squish_4core_IArray *__pyx_v_self, __pyx_t_6squish_4core_Pair __pyx_v_index) { + __pyx_t_6squish_4core_INT_T __pyx_r; + + /* "squish/core.pyx":55 + * cdef inline INT_T iarray_get(IArray* self, Pair index) nogil: + * #iarray_valid_indices(&self, index) + * return self.arr[index[0]*self.shape[1] + index[1]] # <<<<<<<<<<<<<< + * + * cdef inline void iarray_set(IArray* self, Pair index, INT_T val) nogil: + */ + __pyx_r = (__pyx_v_self->arr[((__pyx_v_index.f0 * __pyx_v_self->shape.f1) + __pyx_v_index.f1)]); + goto __pyx_L0; + + /* "squish/core.pyx":53 + * raise IndexError(f"Index out of range for IArray with shape {self.shape}") + * + * cdef inline INT_T iarray_get(IArray* self, Pair index) nogil: # <<<<<<<<<<<<<< + * #iarray_valid_indices(&self, index) + * return self.arr[index[0]*self.shape[1] + index[1]] + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":57 + * return self.arr[index[0]*self.shape[1] + index[1]] + * + * cdef inline void iarray_set(IArray* self, Pair index, INT_T val) nogil: # <<<<<<<<<<<<<< + * #iarray_valid_indices(&self, index) + * self.arr[index[0]*self.shape[1] + index[1]] = val + */ + +static CYTHON_INLINE void __pyx_f_6squish_4core_iarray_set(struct __pyx_t_6squish_4core_IArray *__pyx_v_self, __pyx_t_6squish_4core_Pair __pyx_v_index, __pyx_t_6squish_4core_INT_T __pyx_v_val) { + + /* "squish/core.pyx":59 + * cdef inline void iarray_set(IArray* self, Pair index, INT_T val) nogil: + * #iarray_valid_indices(&self, index) + * self.arr[index[0]*self.shape[1] + index[1]] = val # <<<<<<<<<<<<<< + * + * + */ + (__pyx_v_self->arr[((__pyx_v_index.f0 * __pyx_v_self->shape.f1) + __pyx_v_index.f1)]) = __pyx_v_val; + + /* "squish/core.pyx":57 + * return self.arr[index[0]*self.shape[1] + index[1]] + * + * cdef inline void iarray_set(IArray* self, Pair index, INT_T val) nogil: # <<<<<<<<<<<<<< + * #iarray_valid_indices(&self, index) + * self.arr[index[0]*self.shape[1] + index[1]] = val + */ + + /* function exit code */ +} + +/* "squish/core.pyx":64 + * #### FArray Methods #### + * + * cdef inline FArray _FArray(FLOAT_T* arr, Pair shape) nogil: # <<<<<<<<<<<<<< + * cdef FArray farray + * farray.arr, farray.shape = arr, shape + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_FArray __pyx_f_6squish_4core__FArray(__pyx_t_6squish_4core_FLOAT_T *__pyx_v_arr, __pyx_t_6squish_4core_Pair __pyx_v_shape) { + __pyx_t_6squish_4core_FArray __pyx_v_farray; + __pyx_t_6squish_4core_FArray __pyx_r; + __pyx_t_6squish_4core_FLOAT_T *__pyx_t_1; + __pyx_t_6squish_4core_Pair __pyx_t_2; + __pyx_t_6squish_4core_FLOAT_T (*__pyx_t_3)(__pyx_t_6squish_4core_FArray *, __pyx_t_6squish_4core_Pair); + void (*__pyx_t_4)(__pyx_t_6squish_4core_FArray *, __pyx_t_6squish_4core_Pair, __pyx_t_6squish_4core_FLOAT_T); + + /* "squish/core.pyx":66 + * cdef inline FArray _FArray(FLOAT_T* arr, Pair shape) nogil: + * cdef FArray farray + * farray.arr, farray.shape = arr, shape # <<<<<<<<<<<<<< + * + * farray.get, farray.set = &farray_get, &farray_set + */ + __pyx_t_1 = __pyx_v_arr; + __pyx_t_2 = __pyx_v_shape; + __pyx_v_farray.arr = __pyx_t_1; + __pyx_v_farray.shape = __pyx_t_2; + + /* "squish/core.pyx":68 + * farray.arr, farray.shape = arr, shape + * + * farray.get, farray.set = &farray_get, &farray_set # <<<<<<<<<<<<<< + * return farray + * + */ + __pyx_t_3 = (&__pyx_f_6squish_4core_farray_get); + __pyx_t_4 = (&__pyx_f_6squish_4core_farray_set); + __pyx_v_farray.get = __pyx_t_3; + __pyx_v_farray.set = __pyx_t_4; + + /* "squish/core.pyx":69 + * + * farray.get, farray.set = &farray_get, &farray_set + * return farray # <<<<<<<<<<<<<< + * + * cdef inline bint farray_valid_indices(FArray* self, Pair index) nogil: + */ + __pyx_r = __pyx_v_farray; + goto __pyx_L0; + + /* "squish/core.pyx":64 + * #### FArray Methods #### + * + * cdef inline FArray _FArray(FLOAT_T* arr, Pair shape) nogil: # <<<<<<<<<<<<<< + * cdef FArray farray + * farray.arr, farray.shape = arr, shape + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":71 + * return farray + * + * cdef inline bint farray_valid_indices(FArray* self, Pair index) nogil: # <<<<<<<<<<<<<< + * if index[0] > self.shape[0] or index[1] > self.shape[1]: + * with gil: + */ + +static CYTHON_INLINE int __pyx_f_6squish_4core_farray_valid_indices(__pyx_t_6squish_4core_FArray *__pyx_v_self, __pyx_t_6squish_4core_Pair __pyx_v_index) { + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save; + #endif + __Pyx_RefNannySetupContext("farray_valid_indices", 1); + + /* "squish/core.pyx":72 + * + * cdef inline bint farray_valid_indices(FArray* self, Pair index) nogil: + * if index[0] > self.shape[0] or index[1] > self.shape[1]: # <<<<<<<<<<<<<< + * with gil: + * raise IndexError(f"Index out of range for FArray with shape {self.shape}") + */ + /*try:*/ { + __pyx_t_2 = ((__pyx_v_index.f0 > __pyx_v_self->shape.f0) != 0); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L7_bool_binop_done; + } + __pyx_t_2 = ((__pyx_v_index.f1 > __pyx_v_self->shape.f1) != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L7_bool_binop_done:; + if (__pyx_t_1) { + + /* "squish/core.pyx":73 + * cdef inline bint farray_valid_indices(FArray* self, Pair index) nogil: + * if index[0] > self.shape[0] or index[1] > self.shape[1]: + * with gil: # <<<<<<<<<<<<<< + * raise IndexError(f"Index out of range for FArray with shape {self.shape}") + * + */ + { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); + #endif + /*try:*/ { + + /* "squish/core.pyx":74 + * if index[0] > self.shape[0] or index[1] > self.shape[1]: + * with gil: + * raise IndexError(f"Index out of range for FArray with shape {self.shape}") # <<<<<<<<<<<<<< + * + * cdef inline FLOAT_T farray_get(FArray* self, Pair index) nogil: + */ + __pyx_t_3 = __pyx_convert__to_py___pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc(__pyx_v_self->shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 74, __pyx_L10_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 74, __pyx_L10_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Index_out_of_range_for_FArray_wi, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 74, __pyx_L10_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IndexError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 74, __pyx_L10_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __PYX_ERR(0, 74, __pyx_L10_error) + } + + /* "squish/core.pyx":73 + * cdef inline bint farray_valid_indices(FArray* self, Pair index) nogil: + * if index[0] > self.shape[0] or index[1] > self.shape[1]: + * with gil: # <<<<<<<<<<<<<< + * raise IndexError(f"Index out of range for FArray with shape {self.shape}") + * + */ + /*finally:*/ { + __pyx_L10_error: { + #ifdef WITH_THREAD + __Pyx_PyGILState_Release(__pyx_gilstate_save); + #endif + goto __pyx_L4_error; + } + } + } + + /* "squish/core.pyx":72 + * + * cdef inline bint farray_valid_indices(FArray* self, Pair index) nogil: + * if index[0] > self.shape[0] or index[1] > self.shape[1]: # <<<<<<<<<<<<<< + * with gil: + * raise IndexError(f"Index out of range for FArray with shape {self.shape}") + */ + } + } + /*finally:*/ { + /*normal exit:*/{ + #ifdef WITH_THREAD + __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); + #endif + goto __pyx_L5; + } + __pyx_L4_error: { + #ifdef WITH_THREAD + __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); + #endif + goto __pyx_L1_error; + } + __pyx_L5:; + } + + /* "squish/core.pyx":71 + * return farray + * + * cdef inline bint farray_valid_indices(FArray* self, Pair index) nogil: # <<<<<<<<<<<<<< + * if index[0] > self.shape[0] or index[1] > self.shape[1]: + * with gil: + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_WriteUnraisable("squish.core.farray_valid_indices", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1); + __pyx_r = 0; + __pyx_L0:; + #ifdef WITH_THREAD + __Pyx_PyGILState_Release(__pyx_gilstate_save); + #endif + return __pyx_r; +} + +/* "squish/core.pyx":76 + * raise IndexError(f"Index out of range for FArray with shape {self.shape}") + * + * cdef inline FLOAT_T farray_get(FArray* self, Pair index) nogil: # <<<<<<<<<<<<<< + * #iarray_valid_indices(&self, index) + * return self.arr[index[0]*self.shape[1] + index[1]] + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_4core_farray_get(__pyx_t_6squish_4core_FArray *__pyx_v_self, __pyx_t_6squish_4core_Pair __pyx_v_index) { + __pyx_t_6squish_4core_FLOAT_T __pyx_r; + + /* "squish/core.pyx":78 + * cdef inline FLOAT_T farray_get(FArray* self, Pair index) nogil: + * #iarray_valid_indices(&self, index) + * return self.arr[index[0]*self.shape[1] + index[1]] # <<<<<<<<<<<<<< + * + * cdef inline void farray_set(FArray* self, Pair index, FLOAT_T val) nogil: + */ + __pyx_r = (__pyx_v_self->arr[((__pyx_v_index.f0 * __pyx_v_self->shape.f1) + __pyx_v_index.f1)]); + goto __pyx_L0; + + /* "squish/core.pyx":76 + * raise IndexError(f"Index out of range for FArray with shape {self.shape}") + * + * cdef inline FLOAT_T farray_get(FArray* self, Pair index) nogil: # <<<<<<<<<<<<<< + * #iarray_valid_indices(&self, index) + * return self.arr[index[0]*self.shape[1] + index[1]] + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":80 + * return self.arr[index[0]*self.shape[1] + index[1]] + * + * cdef inline void farray_set(FArray* self, Pair index, FLOAT_T val) nogil: # <<<<<<<<<<<<<< + * #iarray_valid_indices(&self, index) + * self.arr[index[0]*self.shape[1] + index[1]] = val + */ + +static CYTHON_INLINE void __pyx_f_6squish_4core_farray_set(__pyx_t_6squish_4core_FArray *__pyx_v_self, __pyx_t_6squish_4core_Pair __pyx_v_index, __pyx_t_6squish_4core_FLOAT_T __pyx_v_val) { + + /* "squish/core.pyx":82 + * cdef inline void farray_set(FArray* self, Pair index, FLOAT_T val) nogil: + * #iarray_valid_indices(&self, index) + * self.arr[index[0]*self.shape[1] + index[1]] = val # <<<<<<<<<<<<<< + * + * + */ + (__pyx_v_self->arr[((__pyx_v_index.f0 * __pyx_v_self->shape.f1) + __pyx_v_index.f1)]) = __pyx_v_val; + + /* "squish/core.pyx":80 + * return self.arr[index[0]*self.shape[1] + index[1]] + * + * cdef inline void farray_set(FArray* self, Pair index, FLOAT_T val) nogil: # <<<<<<<<<<<<<< + * #iarray_valid_indices(&self, index) + * self.arr[index[0]*self.shape[1] + index[1]] = val + */ + + /* function exit code */ +} + +/* "squish/core.pyx":110 + * #### BitSet Methods #### + * + * cdef inline BitSet _BitSet(INT_T elements) nogil: # <<<<<<<<<<<<<< + * cdef BitSet bitset + * bitset.bits = calloc(((elements/sizeof(INT_T))+1), sizeof(INT_T)) + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_BitSet __pyx_f_6squish_4core__BitSet(__pyx_t_6squish_4core_INT_T __pyx_v_elements) { + __pyx_t_6squish_4core_BitSet __pyx_v_bitset; + __pyx_t_6squish_4core_BitSet __pyx_r; + int (*__pyx_t_1)(__pyx_t_6squish_4core_BitSet *, __pyx_t_6squish_4core_INT_T); + void (*__pyx_t_2)(__pyx_t_6squish_4core_BitSet *); + + /* "squish/core.pyx":112 + * cdef inline BitSet _BitSet(INT_T elements) nogil: + * cdef BitSet bitset + * bitset.bits = calloc(((elements/sizeof(INT_T))+1), sizeof(INT_T)) # <<<<<<<<<<<<<< + * + * bitset.add, bitset.free = &bitset_add, &bitset_free + */ + __pyx_v_bitset.bits = ((__pyx_t_6squish_4core_INT_T *)calloc(((__pyx_v_elements / ((__pyx_t_6squish_4core_INT_T)(sizeof(__pyx_t_6squish_4core_INT_T)))) + 1), (sizeof(__pyx_t_6squish_4core_INT_T)))); + + /* "squish/core.pyx":114 + * bitset.bits = calloc(((elements/sizeof(INT_T))+1), sizeof(INT_T)) + * + * bitset.add, bitset.free = &bitset_add, &bitset_free # <<<<<<<<<<<<<< + * return bitset + * + */ + __pyx_t_1 = (&__pyx_f_6squish_4core_bitset_add); + __pyx_t_2 = (&__pyx_f_6squish_4core_bitset_free); + __pyx_v_bitset.add = __pyx_t_1; + __pyx_v_bitset.free = __pyx_t_2; + + /* "squish/core.pyx":115 + * + * bitset.add, bitset.free = &bitset_add, &bitset_free + * return bitset # <<<<<<<<<<<<<< + * + * cdef inline bint bitset_add(BitSet* self, INT_T val) nogil: + */ + __pyx_r = __pyx_v_bitset; + goto __pyx_L0; + + /* "squish/core.pyx":110 + * #### BitSet Methods #### + * + * cdef inline BitSet _BitSet(INT_T elements) nogil: # <<<<<<<<<<<<<< + * cdef BitSet bitset + * bitset.bits = calloc(((elements/sizeof(INT_T))+1), sizeof(INT_T)) + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":117 + * return bitset + * + * cdef inline bint bitset_add(BitSet* self, INT_T val) nogil: # <<<<<<<<<<<<<< + * cdef INT_T index, rel_index, old + * index = val/sizeof(INT_T) + */ + +static CYTHON_INLINE int __pyx_f_6squish_4core_bitset_add(__pyx_t_6squish_4core_BitSet *__pyx_v_self, __pyx_t_6squish_4core_INT_T __pyx_v_val) { + __pyx_t_6squish_4core_INT_T __pyx_v_index; + __pyx_t_6squish_4core_INT_T __pyx_v_rel_index; + __pyx_t_6squish_4core_INT_T __pyx_v_old; + int __pyx_r; + + /* "squish/core.pyx":119 + * cdef inline bint bitset_add(BitSet* self, INT_T val) nogil: + * cdef INT_T index, rel_index, old + * index = val/sizeof(INT_T) # <<<<<<<<<<<<<< + * old = self.bits[index] + * rel_index = val - index*sizeof(INT_T) + */ + __pyx_v_index = (__pyx_v_val / ((__pyx_t_6squish_4core_INT_T)(sizeof(__pyx_t_6squish_4core_INT_T)))); + + /* "squish/core.pyx":120 + * cdef INT_T index, rel_index, old + * index = val/sizeof(INT_T) + * old = self.bits[index] # <<<<<<<<<<<<<< + * rel_index = val - index*sizeof(INT_T) + * + */ + __pyx_v_old = (__pyx_v_self->bits[__pyx_v_index]); + + /* "squish/core.pyx":121 + * index = val/sizeof(INT_T) + * old = self.bits[index] + * rel_index = val - index*sizeof(INT_T) # <<<<<<<<<<<<<< + * + * self.bits[index] = (1 << rel_index) | old # New value. + */ + __pyx_v_rel_index = (__pyx_v_val - (__pyx_v_index * (sizeof(__pyx_t_6squish_4core_INT_T)))); + + /* "squish/core.pyx":123 + * rel_index = val - index*sizeof(INT_T) + * + * self.bits[index] = (1 << rel_index) | old # New value. # <<<<<<<<<<<<<< + * + * return old == self.bits[index] # Means 1 was already there. + */ + (__pyx_v_self->bits[__pyx_v_index]) = ((1 << __pyx_v_rel_index) | __pyx_v_old); + + /* "squish/core.pyx":125 + * self.bits[index] = (1 << rel_index) | old # New value. + * + * return old == self.bits[index] # Means 1 was already there. # <<<<<<<<<<<<<< + * + * cdef inline void bitset_free(BitSet* self) nogil: + */ + __pyx_r = (__pyx_v_old == (__pyx_v_self->bits[__pyx_v_index])); + goto __pyx_L0; + + /* "squish/core.pyx":117 + * return bitset + * + * cdef inline bint bitset_add(BitSet* self, INT_T val) nogil: # <<<<<<<<<<<<<< + * cdef INT_T index, rel_index, old + * index = val/sizeof(INT_T) + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":127 + * return old == self.bits[index] # Means 1 was already there. + * + * cdef inline void bitset_free(BitSet* self) nogil: # <<<<<<<<<<<<<< + * free(self.bits) + * + */ + +static CYTHON_INLINE void __pyx_f_6squish_4core_bitset_free(__pyx_t_6squish_4core_BitSet *__pyx_v_self) { + + /* "squish/core.pyx":128 + * + * cdef inline void bitset_free(BitSet* self) nogil: + * free(self.bits) # <<<<<<<<<<<<<< + * + * #### Vector2D Methods #### + */ + free(__pyx_v_self->bits); + + /* "squish/core.pyx":127 + * return old == self.bits[index] # Means 1 was already there. + * + * cdef inline void bitset_free(BitSet* self) nogil: # <<<<<<<<<<<<<< + * free(self.bits) + * + */ + + /* function exit code */ +} + +/* "squish/core.pyx":141 + * """ + * + * cdef inline Vector2D _Vector2D(FLOAT_T x, FLOAT_T y) nogil: # <<<<<<<<<<<<<< + * cdef Vector2D vec + * vec.x, vec.y = x, y + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core__Vector2D(__pyx_t_6squish_4core_FLOAT_T __pyx_v_x, __pyx_t_6squish_4core_FLOAT_T __pyx_v_y) { + __pyx_t_6squish_4core_Vector2D __pyx_v_vec; + __pyx_t_6squish_4core_Vector2D __pyx_r; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_1; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_2; + __pyx_t_6squish_4core_VectorSelfOps __pyx_t_3; + __pyx_t_6squish_4core_VectorCopyOps __pyx_t_4; + int (*__pyx_t_5)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*__pyx_t_6)(__pyx_t_6squish_4core_Vector2D *); + __pyx_t_6squish_4core_FLOAT_T (*__pyx_t_7)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_FLOAT_T (*__pyx_t_8)(__pyx_t_6squish_4core_Vector2D *); + + /* "squish/core.pyx":143 + * cdef inline Vector2D _Vector2D(FLOAT_T x, FLOAT_T y) nogil: + * cdef Vector2D vec + * vec.x, vec.y = x, y # <<<<<<<<<<<<<< + * vec.self, vec.copy = VSO, VCO + * + */ + __pyx_t_1 = __pyx_v_x; + __pyx_t_2 = __pyx_v_y; + __pyx_v_vec.x = __pyx_t_1; + __pyx_v_vec.y = __pyx_t_2; + + /* "squish/core.pyx":144 + * cdef Vector2D vec + * vec.x, vec.y = x, y + * vec.self, vec.copy = VSO, VCO # <<<<<<<<<<<<<< + * + * vec.equals, vec.rot, vec.dot, vec.mag = &v_equals, &rot, &dot, &mag + */ + __pyx_t_3 = __pyx_v_6squish_4core_VSO; + __pyx_t_4 = __pyx_v_6squish_4core_VCO; + __pyx_v_vec.self = __pyx_t_3; + __pyx_v_vec.copy = __pyx_t_4; + + /* "squish/core.pyx":146 + * vec.self, vec.copy = VSO, VCO + * + * vec.equals, vec.rot, vec.dot, vec.mag = &v_equals, &rot, &dot, &mag # <<<<<<<<<<<<<< + * + * return vec + */ + __pyx_t_5 = (&__pyx_f_6squish_4core_v_equals); + __pyx_t_6 = (&__pyx_f_6squish_4core_rot); + __pyx_t_7 = (&__pyx_f_6squish_4core_dot); + __pyx_t_8 = (&__pyx_f_6squish_4core_mag); + __pyx_v_vec.equals = __pyx_t_5; + __pyx_v_vec.rot = __pyx_t_6; + __pyx_v_vec.dot = __pyx_t_7; + __pyx_v_vec.mag = __pyx_t_8; + + /* "squish/core.pyx":148 + * vec.equals, vec.rot, vec.dot, vec.mag = &v_equals, &rot, &dot, &mag + * + * return vec # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = __pyx_v_vec; + goto __pyx_L0; + + /* "squish/core.pyx":141 + * """ + * + * cdef inline Vector2D _Vector2D(FLOAT_T x, FLOAT_T y) nogil: # <<<<<<<<<<<<<< + * cdef Vector2D vec + * vec.x, vec.y = x, y + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":151 + * + * + * cdef inline bint v_equals(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * return ((self.x == w.x) and (self.y == w.y)) + * + */ + +static CYTHON_INLINE int __pyx_f_6squish_4core_v_equals(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_Vector2D __pyx_v_w) { + int __pyx_r; + int __pyx_t_1; + int __pyx_t_2; + + /* "squish/core.pyx":152 + * + * cdef inline bint v_equals(Vector2D* self, Vector2D w) nogil: + * return ((self.x == w.x) and (self.y == w.y)) # <<<<<<<<<<<<<< + * + * cdef inline Vector2D* v_neg_s(Vector2D* self) nogil: + */ + __pyx_t_2 = ((__pyx_v_self->x == __pyx_v_w.x) != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L3_bool_binop_done; + } + __pyx_t_2 = ((__pyx_v_self->y == __pyx_v_w.y) != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L3_bool_binop_done:; + __pyx_r = __pyx_t_1; + goto __pyx_L0; + + /* "squish/core.pyx":151 + * + * + * cdef inline bint v_equals(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * return ((self.x == w.x) and (self.y == w.y)) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":154 + * return ((self.x == w.x) and (self.y == w.y)) + * + * cdef inline Vector2D* v_neg_s(Vector2D* self) nogil: # <<<<<<<<<<<<<< + * self.x = -self.x + * self.y = -self.y + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_neg_s(__pyx_t_6squish_4core_Vector2D *__pyx_v_self) { + __pyx_t_6squish_4core_Vector2D *__pyx_r; + + /* "squish/core.pyx":155 + * + * cdef inline Vector2D* v_neg_s(Vector2D* self) nogil: + * self.x = -self.x # <<<<<<<<<<<<<< + * self.y = -self.y + * return self + */ + __pyx_v_self->x = (-__pyx_v_self->x); + + /* "squish/core.pyx":156 + * cdef inline Vector2D* v_neg_s(Vector2D* self) nogil: + * self.x = -self.x + * self.y = -self.y # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_v_self->y = (-__pyx_v_self->y); + + /* "squish/core.pyx":157 + * self.x = -self.x + * self.y = -self.y + * return self # <<<<<<<<<<<<<< + * + * cdef inline Vector2D* v_vadd_s(Vector2D* self, Vector2D w) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":154 + * return ((self.x == w.x) and (self.y == w.y)) + * + * cdef inline Vector2D* v_neg_s(Vector2D* self) nogil: # <<<<<<<<<<<<<< + * self.x = -self.x + * self.y = -self.y + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":159 + * return self + * + * cdef inline Vector2D* v_vadd_s(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * self.x += w.x + * self.y += w.y + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_vadd_s(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_Vector2D __pyx_v_w) { + __pyx_t_6squish_4core_Vector2D *__pyx_r; + + /* "squish/core.pyx":160 + * + * cdef inline Vector2D* v_vadd_s(Vector2D* self, Vector2D w) nogil: + * self.x += w.x # <<<<<<<<<<<<<< + * self.y += w.y + * return self + */ + __pyx_v_self->x = (__pyx_v_self->x + __pyx_v_w.x); + + /* "squish/core.pyx":161 + * cdef inline Vector2D* v_vadd_s(Vector2D* self, Vector2D w) nogil: + * self.x += w.x + * self.y += w.y # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_v_self->y = (__pyx_v_self->y + __pyx_v_w.y); + + /* "squish/core.pyx":162 + * self.x += w.x + * self.y += w.y + * return self # <<<<<<<<<<<<<< + * + * cdef inline Vector2D* v_vsub_s(Vector2D* self, Vector2D w) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":159 + * return self + * + * cdef inline Vector2D* v_vadd_s(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * self.x += w.x + * self.y += w.y + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":164 + * return self + * + * cdef inline Vector2D* v_vsub_s(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * self.x -= w.x + * self.y -= w.y + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_vsub_s(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_Vector2D __pyx_v_w) { + __pyx_t_6squish_4core_Vector2D *__pyx_r; + + /* "squish/core.pyx":165 + * + * cdef inline Vector2D* v_vsub_s(Vector2D* self, Vector2D w) nogil: + * self.x -= w.x # <<<<<<<<<<<<<< + * self.y -= w.y + * return self + */ + __pyx_v_self->x = (__pyx_v_self->x - __pyx_v_w.x); + + /* "squish/core.pyx":166 + * cdef inline Vector2D* v_vsub_s(Vector2D* self, Vector2D w) nogil: + * self.x -= w.x + * self.y -= w.y # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_v_self->y = (__pyx_v_self->y - __pyx_v_w.y); + + /* "squish/core.pyx":167 + * self.x -= w.x + * self.y -= w.y + * return self # <<<<<<<<<<<<<< + * + * cdef inline Vector2D* v_vmul_s(Vector2D* self, Vector2D w) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":164 + * return self + * + * cdef inline Vector2D* v_vsub_s(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * self.x -= w.x + * self.y -= w.y + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":169 + * return self + * + * cdef inline Vector2D* v_vmul_s(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * self.x *= w.x + * self.y *= w.y + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_vmul_s(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_Vector2D __pyx_v_w) { + __pyx_t_6squish_4core_Vector2D *__pyx_r; + + /* "squish/core.pyx":170 + * + * cdef inline Vector2D* v_vmul_s(Vector2D* self, Vector2D w) nogil: + * self.x *= w.x # <<<<<<<<<<<<<< + * self.y *= w.y + * return self + */ + __pyx_v_self->x = (__pyx_v_self->x * __pyx_v_w.x); + + /* "squish/core.pyx":171 + * cdef inline Vector2D* v_vmul_s(Vector2D* self, Vector2D w) nogil: + * self.x *= w.x + * self.y *= w.y # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_v_self->y = (__pyx_v_self->y * __pyx_v_w.y); + + /* "squish/core.pyx":172 + * self.x *= w.x + * self.y *= w.y + * return self # <<<<<<<<<<<<<< + * + * cdef inline Vector2D* v_vdiv_s(Vector2D* self, Vector2D w) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":169 + * return self + * + * cdef inline Vector2D* v_vmul_s(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * self.x *= w.x + * self.y *= w.y + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":174 + * return self + * + * cdef inline Vector2D* v_vdiv_s(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * self.x /= w.x + * self.y /= w.y + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_vdiv_s(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_Vector2D __pyx_v_w) { + __pyx_t_6squish_4core_Vector2D *__pyx_r; + + /* "squish/core.pyx":175 + * + * cdef inline Vector2D* v_vdiv_s(Vector2D* self, Vector2D w) nogil: + * self.x /= w.x # <<<<<<<<<<<<<< + * self.y /= w.y + * return self + */ + __pyx_v_self->x = (__pyx_v_self->x / __pyx_v_w.x); + + /* "squish/core.pyx":176 + * cdef inline Vector2D* v_vdiv_s(Vector2D* self, Vector2D w) nogil: + * self.x /= w.x + * self.y /= w.y # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_v_self->y = (__pyx_v_self->y / __pyx_v_w.y); + + /* "squish/core.pyx":177 + * self.x /= w.x + * self.y /= w.y + * return self # <<<<<<<<<<<<<< + * + * cdef inline Vector2D* v_sadd_s(Vector2D* self, FLOAT_T s) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":174 + * return self + * + * cdef inline Vector2D* v_vdiv_s(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * self.x /= w.x + * self.y /= w.y + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":179 + * return self + * + * cdef inline Vector2D* v_sadd_s(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * self.x += s + * self.y += s + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_sadd_s(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_s) { + __pyx_t_6squish_4core_Vector2D *__pyx_r; + + /* "squish/core.pyx":180 + * + * cdef inline Vector2D* v_sadd_s(Vector2D* self, FLOAT_T s) nogil: + * self.x += s # <<<<<<<<<<<<<< + * self.y += s + * return self + */ + __pyx_v_self->x = (__pyx_v_self->x + __pyx_v_s); + + /* "squish/core.pyx":181 + * cdef inline Vector2D* v_sadd_s(Vector2D* self, FLOAT_T s) nogil: + * self.x += s + * self.y += s # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_v_self->y = (__pyx_v_self->y + __pyx_v_s); + + /* "squish/core.pyx":182 + * self.x += s + * self.y += s + * return self # <<<<<<<<<<<<<< + * + * cdef inline Vector2D* v_ssub_s(Vector2D* self, FLOAT_T s) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":179 + * return self + * + * cdef inline Vector2D* v_sadd_s(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * self.x += s + * self.y += s + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":184 + * return self + * + * cdef inline Vector2D* v_ssub_s(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * self.x -= s + * self.y -= s + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_ssub_s(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_s) { + __pyx_t_6squish_4core_Vector2D *__pyx_r; + + /* "squish/core.pyx":185 + * + * cdef inline Vector2D* v_ssub_s(Vector2D* self, FLOAT_T s) nogil: + * self.x -= s # <<<<<<<<<<<<<< + * self.y -= s + * return self + */ + __pyx_v_self->x = (__pyx_v_self->x - __pyx_v_s); + + /* "squish/core.pyx":186 + * cdef inline Vector2D* v_ssub_s(Vector2D* self, FLOAT_T s) nogil: + * self.x -= s + * self.y -= s # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_v_self->y = (__pyx_v_self->y - __pyx_v_s); + + /* "squish/core.pyx":187 + * self.x -= s + * self.y -= s + * return self # <<<<<<<<<<<<<< + * + * cdef inline Vector2D* v_smul_s(Vector2D* self, FLOAT_T s) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":184 + * return self + * + * cdef inline Vector2D* v_ssub_s(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * self.x -= s + * self.y -= s + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":189 + * return self + * + * cdef inline Vector2D* v_smul_s(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * self.x *= s + * self.y *= s + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_smul_s(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_s) { + __pyx_t_6squish_4core_Vector2D *__pyx_r; + + /* "squish/core.pyx":190 + * + * cdef inline Vector2D* v_smul_s(Vector2D* self, FLOAT_T s) nogil: + * self.x *= s # <<<<<<<<<<<<<< + * self.y *= s + * return self + */ + __pyx_v_self->x = (__pyx_v_self->x * __pyx_v_s); + + /* "squish/core.pyx":191 + * cdef inline Vector2D* v_smul_s(Vector2D* self, FLOAT_T s) nogil: + * self.x *= s + * self.y *= s # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_v_self->y = (__pyx_v_self->y * __pyx_v_s); + + /* "squish/core.pyx":192 + * self.x *= s + * self.y *= s + * return self # <<<<<<<<<<<<<< + * + * cdef inline Vector2D* v_sdiv_s(Vector2D* self, FLOAT_T s) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":189 + * return self + * + * cdef inline Vector2D* v_smul_s(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * self.x *= s + * self.y *= s + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":194 + * return self + * + * cdef inline Vector2D* v_sdiv_s(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * self.x /= s + * self.y /= s + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_sdiv_s(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_s) { + __pyx_t_6squish_4core_Vector2D *__pyx_r; + + /* "squish/core.pyx":195 + * + * cdef inline Vector2D* v_sdiv_s(Vector2D* self, FLOAT_T s) nogil: + * self.x /= s # <<<<<<<<<<<<<< + * self.y /= s + * return self + */ + __pyx_v_self->x = (__pyx_v_self->x / __pyx_v_s); + + /* "squish/core.pyx":196 + * cdef inline Vector2D* v_sdiv_s(Vector2D* self, FLOAT_T s) nogil: + * self.x /= s + * self.y /= s # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_v_self->y = (__pyx_v_self->y / __pyx_v_s); + + /* "squish/core.pyx":197 + * self.x /= s + * self.y /= s + * return self # <<<<<<<<<<<<<< + * + * cdef inline Vector2D* v_matmul_s(Vector2D* self, Matrix2x2 m) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":194 + * return self + * + * cdef inline Vector2D* v_sdiv_s(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * self.x /= s + * self.y /= s + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":199 + * return self + * + * cdef inline Vector2D* v_matmul_s(Vector2D* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * self.x, self.y = self.x*m.a + self.y*m.c, self.x*m.b + self.y*m.d + * return self + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D *__pyx_f_6squish_4core_v_matmul_s(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_Matrix2x2 __pyx_v_m) { + __pyx_t_6squish_4core_Vector2D *__pyx_r; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_1; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_2; + + /* "squish/core.pyx":200 + * + * cdef inline Vector2D* v_matmul_s(Vector2D* self, Matrix2x2 m) nogil: + * self.x, self.y = self.x*m.a + self.y*m.c, self.x*m.b + self.y*m.d # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_t_1 = ((__pyx_v_self->x * __pyx_v_m.a) + (__pyx_v_self->y * __pyx_v_m.c)); + __pyx_t_2 = ((__pyx_v_self->x * __pyx_v_m.b) + (__pyx_v_self->y * __pyx_v_m.d)); + __pyx_v_self->x = __pyx_t_1; + __pyx_v_self->y = __pyx_t_2; + + /* "squish/core.pyx":201 + * cdef inline Vector2D* v_matmul_s(Vector2D* self, Matrix2x2 m) nogil: + * self.x, self.y = self.x*m.a + self.y*m.c, self.x*m.b + self.y*m.d + * return self # <<<<<<<<<<<<<< + * + * cdef inline Vector2D v_neg_c(Vector2D* self) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":199 + * return self + * + * cdef inline Vector2D* v_matmul_s(Vector2D* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * self.x, self.y = self.x*m.a + self.y*m.c, self.x*m.b + self.y*m.d + * return self + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":203 + * return self + * + * cdef inline Vector2D v_neg_c(Vector2D* self) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(-self.x, -self.y) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_neg_c(__pyx_t_6squish_4core_Vector2D *__pyx_v_self) { + __pyx_t_6squish_4core_Vector2D __pyx_r; + + /* "squish/core.pyx":204 + * + * cdef inline Vector2D v_neg_c(Vector2D* self) nogil: + * return _Vector2D(-self.x, -self.y) # <<<<<<<<<<<<<< + * + * cdef inline Vector2D v_vadd_c(Vector2D* self, Vector2D w) nogil: + */ + __pyx_r = __pyx_f_6squish_4core__Vector2D((-__pyx_v_self->x), (-__pyx_v_self->y)); + goto __pyx_L0; + + /* "squish/core.pyx":203 + * return self + * + * cdef inline Vector2D v_neg_c(Vector2D* self) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(-self.x, -self.y) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":206 + * return _Vector2D(-self.x, -self.y) + * + * cdef inline Vector2D v_vadd_c(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(self.x + w.x, self.y + w.y) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_vadd_c(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_Vector2D __pyx_v_w) { + __pyx_t_6squish_4core_Vector2D __pyx_r; + + /* "squish/core.pyx":207 + * + * cdef inline Vector2D v_vadd_c(Vector2D* self, Vector2D w) nogil: + * return _Vector2D(self.x + w.x, self.y + w.y) # <<<<<<<<<<<<<< + * + * cdef inline Vector2D v_vsub_c(Vector2D* self, Vector2D w) nogil: + */ + __pyx_r = __pyx_f_6squish_4core__Vector2D((__pyx_v_self->x + __pyx_v_w.x), (__pyx_v_self->y + __pyx_v_w.y)); + goto __pyx_L0; + + /* "squish/core.pyx":206 + * return _Vector2D(-self.x, -self.y) + * + * cdef inline Vector2D v_vadd_c(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(self.x + w.x, self.y + w.y) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":209 + * return _Vector2D(self.x + w.x, self.y + w.y) + * + * cdef inline Vector2D v_vsub_c(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(self.x - w.x, self.y - w.y) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_vsub_c(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_Vector2D __pyx_v_w) { + __pyx_t_6squish_4core_Vector2D __pyx_r; + + /* "squish/core.pyx":210 + * + * cdef inline Vector2D v_vsub_c(Vector2D* self, Vector2D w) nogil: + * return _Vector2D(self.x - w.x, self.y - w.y) # <<<<<<<<<<<<<< + * + * cdef inline Vector2D v_vmul_c(Vector2D* self, Vector2D w) nogil: + */ + __pyx_r = __pyx_f_6squish_4core__Vector2D((__pyx_v_self->x - __pyx_v_w.x), (__pyx_v_self->y - __pyx_v_w.y)); + goto __pyx_L0; + + /* "squish/core.pyx":209 + * return _Vector2D(self.x + w.x, self.y + w.y) + * + * cdef inline Vector2D v_vsub_c(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(self.x - w.x, self.y - w.y) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":212 + * return _Vector2D(self.x - w.x, self.y - w.y) + * + * cdef inline Vector2D v_vmul_c(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(self.x * w.x, self.y * w.y) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_vmul_c(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_Vector2D __pyx_v_w) { + __pyx_t_6squish_4core_Vector2D __pyx_r; + + /* "squish/core.pyx":213 + * + * cdef inline Vector2D v_vmul_c(Vector2D* self, Vector2D w) nogil: + * return _Vector2D(self.x * w.x, self.y * w.y) # <<<<<<<<<<<<<< + * + * cdef inline Vector2D v_vdiv_c(Vector2D* self, Vector2D w) nogil: + */ + __pyx_r = __pyx_f_6squish_4core__Vector2D((__pyx_v_self->x * __pyx_v_w.x), (__pyx_v_self->y * __pyx_v_w.y)); + goto __pyx_L0; + + /* "squish/core.pyx":212 + * return _Vector2D(self.x - w.x, self.y - w.y) + * + * cdef inline Vector2D v_vmul_c(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(self.x * w.x, self.y * w.y) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":215 + * return _Vector2D(self.x * w.x, self.y * w.y) + * + * cdef inline Vector2D v_vdiv_c(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(self.x / w.x, self.y / w.y) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_vdiv_c(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_Vector2D __pyx_v_w) { + __pyx_t_6squish_4core_Vector2D __pyx_r; + + /* "squish/core.pyx":216 + * + * cdef inline Vector2D v_vdiv_c(Vector2D* self, Vector2D w) nogil: + * return _Vector2D(self.x / w.x, self.y / w.y) # <<<<<<<<<<<<<< + * + * cdef inline Vector2D v_sadd_c(Vector2D* self, FLOAT_T s) nogil: + */ + __pyx_r = __pyx_f_6squish_4core__Vector2D((__pyx_v_self->x / __pyx_v_w.x), (__pyx_v_self->y / __pyx_v_w.y)); + goto __pyx_L0; + + /* "squish/core.pyx":215 + * return _Vector2D(self.x * w.x, self.y * w.y) + * + * cdef inline Vector2D v_vdiv_c(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(self.x / w.x, self.y / w.y) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":218 + * return _Vector2D(self.x / w.x, self.y / w.y) + * + * cdef inline Vector2D v_sadd_c(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(self.x + s, self.y + s) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_sadd_c(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_s) { + __pyx_t_6squish_4core_Vector2D __pyx_r; + + /* "squish/core.pyx":219 + * + * cdef inline Vector2D v_sadd_c(Vector2D* self, FLOAT_T s) nogil: + * return _Vector2D(self.x + s, self.y + s) # <<<<<<<<<<<<<< + * + * cdef inline Vector2D v_ssub_c(Vector2D* self, FLOAT_T s) nogil: + */ + __pyx_r = __pyx_f_6squish_4core__Vector2D((__pyx_v_self->x + __pyx_v_s), (__pyx_v_self->y + __pyx_v_s)); + goto __pyx_L0; + + /* "squish/core.pyx":218 + * return _Vector2D(self.x / w.x, self.y / w.y) + * + * cdef inline Vector2D v_sadd_c(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(self.x + s, self.y + s) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":221 + * return _Vector2D(self.x + s, self.y + s) + * + * cdef inline Vector2D v_ssub_c(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(self.x + s, self.y + s) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_ssub_c(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_s) { + __pyx_t_6squish_4core_Vector2D __pyx_r; + + /* "squish/core.pyx":222 + * + * cdef inline Vector2D v_ssub_c(Vector2D* self, FLOAT_T s) nogil: + * return _Vector2D(self.x + s, self.y + s) # <<<<<<<<<<<<<< + * + * cdef inline Vector2D v_smul_c(Vector2D* self, FLOAT_T s) nogil: + */ + __pyx_r = __pyx_f_6squish_4core__Vector2D((__pyx_v_self->x + __pyx_v_s), (__pyx_v_self->y + __pyx_v_s)); + goto __pyx_L0; + + /* "squish/core.pyx":221 + * return _Vector2D(self.x + s, self.y + s) + * + * cdef inline Vector2D v_ssub_c(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(self.x + s, self.y + s) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":224 + * return _Vector2D(self.x + s, self.y + s) + * + * cdef inline Vector2D v_smul_c(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(self.x * s, self.y * s) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_smul_c(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_s) { + __pyx_t_6squish_4core_Vector2D __pyx_r; + + /* "squish/core.pyx":225 + * + * cdef inline Vector2D v_smul_c(Vector2D* self, FLOAT_T s) nogil: + * return _Vector2D(self.x * s, self.y * s) # <<<<<<<<<<<<<< + * + * cdef inline Vector2D v_sdiv_c(Vector2D* self, FLOAT_T s) nogil: + */ + __pyx_r = __pyx_f_6squish_4core__Vector2D((__pyx_v_self->x * __pyx_v_s), (__pyx_v_self->y * __pyx_v_s)); + goto __pyx_L0; + + /* "squish/core.pyx":224 + * return _Vector2D(self.x + s, self.y + s) + * + * cdef inline Vector2D v_smul_c(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(self.x * s, self.y * s) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":227 + * return _Vector2D(self.x * s, self.y * s) + * + * cdef inline Vector2D v_sdiv_c(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(self.x / s, self.y / s) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_sdiv_c(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_s) { + __pyx_t_6squish_4core_Vector2D __pyx_r; + + /* "squish/core.pyx":228 + * + * cdef inline Vector2D v_sdiv_c(Vector2D* self, FLOAT_T s) nogil: + * return _Vector2D(self.x / s, self.y / s) # <<<<<<<<<<<<<< + * + * cdef inline Vector2D v_matmul_c(Vector2D* self, Matrix2x2 m) nogil: + */ + __pyx_r = __pyx_f_6squish_4core__Vector2D((__pyx_v_self->x / __pyx_v_s), (__pyx_v_self->y / __pyx_v_s)); + goto __pyx_L0; + + /* "squish/core.pyx":227 + * return _Vector2D(self.x * s, self.y * s) + * + * cdef inline Vector2D v_sdiv_c(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(self.x / s, self.y / s) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":230 + * return _Vector2D(self.x / s, self.y / s) + * + * cdef inline Vector2D v_matmul_c(Vector2D* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * return _Vector2D( + * self.x*m.a + self.y*m.c, self.x*m.b + self.y*m.d + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_v_matmul_c(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_Matrix2x2 __pyx_v_m) { + __pyx_t_6squish_4core_Vector2D __pyx_r; + + /* "squish/core.pyx":231 + * + * cdef inline Vector2D v_matmul_c(Vector2D* self, Matrix2x2 m) nogil: + * return _Vector2D( # <<<<<<<<<<<<<< + * self.x*m.a + self.y*m.c, self.x*m.b + self.y*m.d + * ) + */ + __pyx_r = __pyx_f_6squish_4core__Vector2D(((__pyx_v_self->x * __pyx_v_m.a) + (__pyx_v_self->y * __pyx_v_m.c)), ((__pyx_v_self->x * __pyx_v_m.b) + (__pyx_v_self->y * __pyx_v_m.d))); + goto __pyx_L0; + + /* "squish/core.pyx":230 + * return _Vector2D(self.x / s, self.y / s) + * + * cdef inline Vector2D v_matmul_c(Vector2D* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * return _Vector2D( + * self.x*m.a + self.y*m.c, self.x*m.b + self.y*m.d + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":235 + * ) + * + * cdef inline Vector2D rot(Vector2D* self) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(-self.y, self.x) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_rot(__pyx_t_6squish_4core_Vector2D *__pyx_v_self) { + __pyx_t_6squish_4core_Vector2D __pyx_r; + + /* "squish/core.pyx":236 + * + * cdef inline Vector2D rot(Vector2D* self) nogil: + * return _Vector2D(-self.y, self.x) # <<<<<<<<<<<<<< + * + * cdef inline FLOAT_T dot(Vector2D* self, Vector2D w) nogil: + */ + __pyx_r = __pyx_f_6squish_4core__Vector2D((-__pyx_v_self->y), __pyx_v_self->x); + goto __pyx_L0; + + /* "squish/core.pyx":235 + * ) + * + * cdef inline Vector2D rot(Vector2D* self) nogil: # <<<<<<<<<<<<<< + * return _Vector2D(-self.y, self.x) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":238 + * return _Vector2D(-self.y, self.x) + * + * cdef inline FLOAT_T dot(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * return self.x*w.x + self.y*w.y + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_4core_dot(__pyx_t_6squish_4core_Vector2D *__pyx_v_self, __pyx_t_6squish_4core_Vector2D __pyx_v_w) { + __pyx_t_6squish_4core_FLOAT_T __pyx_r; + + /* "squish/core.pyx":239 + * + * cdef inline FLOAT_T dot(Vector2D* self, Vector2D w) nogil: + * return self.x*w.x + self.y*w.y # <<<<<<<<<<<<<< + * + * cdef inline FLOAT_T mag(Vector2D* self) nogil: + */ + __pyx_r = ((__pyx_v_self->x * __pyx_v_w.x) + (__pyx_v_self->y * __pyx_v_w.y)); + goto __pyx_L0; + + /* "squish/core.pyx":238 + * return _Vector2D(-self.y, self.x) + * + * cdef inline FLOAT_T dot(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< + * return self.x*w.x + self.y*w.y + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":241 + * return self.x*w.x + self.y*w.y + * + * cdef inline FLOAT_T mag(Vector2D* self) nogil: # <<<<<<<<<<<<<< + * return sqrt((self.x*self.x + self.y*self.y)) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_4core_mag(__pyx_t_6squish_4core_Vector2D *__pyx_v_self) { + __pyx_t_6squish_4core_FLOAT_T __pyx_r; + + /* "squish/core.pyx":242 + * + * cdef inline FLOAT_T mag(Vector2D* self) nogil: + * return sqrt((self.x*self.x + self.y*self.y)) # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = ((__pyx_t_6squish_4core_FLOAT_T)sqrt(((double)((__pyx_v_self->x * __pyx_v_self->x) + (__pyx_v_self->y * __pyx_v_self->y))))); + goto __pyx_L0; + + /* "squish/core.pyx":241 + * return self.x*w.x + self.y*w.y + * + * cdef inline FLOAT_T mag(Vector2D* self) nogil: # <<<<<<<<<<<<<< + * return sqrt((self.x*self.x + self.y*self.y)) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":247 + * #### Matrix2x2 Methods #### + * + * cdef inline Matrix2x2 _Matrix2x2(FLOAT_T a, FLOAT_T b, FLOAT_T c, FLOAT_T d) nogil: # <<<<<<<<<<<<<< + * cdef Matrix2x2 matrix + * matrix.a, matrix.b, matrix.c, matrix.d = a, b, c, d + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core__Matrix2x2(__pyx_t_6squish_4core_FLOAT_T __pyx_v_a, __pyx_t_6squish_4core_FLOAT_T __pyx_v_b, __pyx_t_6squish_4core_FLOAT_T __pyx_v_c, __pyx_t_6squish_4core_FLOAT_T __pyx_v_d) { + __pyx_t_6squish_4core_Matrix2x2 __pyx_v_matrix; + __pyx_t_6squish_4core_Matrix2x2 __pyx_r; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_1; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_2; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_3; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_4; + __pyx_t_6squish_4core_MatrixSelfOps __pyx_t_5; + __pyx_t_6squish_4core_MatrixCopyOps __pyx_t_6; + int (*__pyx_t_7)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_Vector2D (*__pyx_t_8)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Vector2D); + + /* "squish/core.pyx":249 + * cdef inline Matrix2x2 _Matrix2x2(FLOAT_T a, FLOAT_T b, FLOAT_T c, FLOAT_T d) nogil: + * cdef Matrix2x2 matrix + * matrix.a, matrix.b, matrix.c, matrix.d = a, b, c, d # <<<<<<<<<<<<<< + * matrix.self, matrix.copy = MSO, MCO + * + */ + __pyx_t_1 = __pyx_v_a; + __pyx_t_2 = __pyx_v_b; + __pyx_t_3 = __pyx_v_c; + __pyx_t_4 = __pyx_v_d; + __pyx_v_matrix.a = __pyx_t_1; + __pyx_v_matrix.b = __pyx_t_2; + __pyx_v_matrix.c = __pyx_t_3; + __pyx_v_matrix.d = __pyx_t_4; + + /* "squish/core.pyx":250 + * cdef Matrix2x2 matrix + * matrix.a, matrix.b, matrix.c, matrix.d = a, b, c, d + * matrix.self, matrix.copy = MSO, MCO # <<<<<<<<<<<<<< + * + * matrix.equals, matrix.vecmul = &m_equals, &m_vecmul + */ + __pyx_t_5 = __pyx_v_6squish_4core_MSO; + __pyx_t_6 = __pyx_v_6squish_4core_MCO; + __pyx_v_matrix.self = __pyx_t_5; + __pyx_v_matrix.copy = __pyx_t_6; + + /* "squish/core.pyx":252 + * matrix.self, matrix.copy = MSO, MCO + * + * matrix.equals, matrix.vecmul = &m_equals, &m_vecmul # <<<<<<<<<<<<<< + * + * return matrix + */ + __pyx_t_7 = (&__pyx_f_6squish_4core_m_equals); + __pyx_t_8 = (&__pyx_f_6squish_4core_m_vecmul); + __pyx_v_matrix.equals = __pyx_t_7; + __pyx_v_matrix.vecmul = __pyx_t_8; + + /* "squish/core.pyx":254 + * matrix.equals, matrix.vecmul = &m_equals, &m_vecmul + * + * return matrix # <<<<<<<<<<<<<< + * + * cdef inline bint m_equals(Matrix2x2* self, Matrix2x2 m) nogil: + */ + __pyx_r = __pyx_v_matrix; + goto __pyx_L0; + + /* "squish/core.pyx":247 + * #### Matrix2x2 Methods #### + * + * cdef inline Matrix2x2 _Matrix2x2(FLOAT_T a, FLOAT_T b, FLOAT_T c, FLOAT_T d) nogil: # <<<<<<<<<<<<<< + * cdef Matrix2x2 matrix + * matrix.a, matrix.b, matrix.c, matrix.d = a, b, c, d + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":256 + * return matrix + * + * cdef inline bint m_equals(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * return ( + * (self.a == m.a) and (self.b == m.b) and (self.c == m.c) and (self.d == m.d) + */ + +static CYTHON_INLINE int __pyx_f_6squish_4core_m_equals(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_Matrix2x2 __pyx_v_m) { + int __pyx_r; + int __pyx_t_1; + int __pyx_t_2; + + /* "squish/core.pyx":258 + * cdef inline bint m_equals(Matrix2x2* self, Matrix2x2 m) nogil: + * return ( + * (self.a == m.a) and (self.b == m.b) and (self.c == m.c) and (self.d == m.d) # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_2 = ((__pyx_v_self->a == __pyx_v_m.a) != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L3_bool_binop_done; + } + __pyx_t_2 = ((__pyx_v_self->b == __pyx_v_m.b) != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L3_bool_binop_done; + } + __pyx_t_2 = ((__pyx_v_self->c == __pyx_v_m.c) != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L3_bool_binop_done; + } + __pyx_t_2 = ((__pyx_v_self->d == __pyx_v_m.d) != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L3_bool_binop_done:; + __pyx_r = __pyx_t_1; + goto __pyx_L0; + + /* "squish/core.pyx":256 + * return matrix + * + * cdef inline bint m_equals(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * return ( + * (self.a == m.a) and (self.b == m.b) and (self.c == m.c) and (self.d == m.d) + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":261 + * ) + * + * cdef inline Vector2D m_vecmul(Matrix2x2* self, Vector2D v) nogil: # <<<<<<<<<<<<<< + * return _Vector2D( + * self.a*v.x + self.b*v.y, self.c*v.x + self.d*v.y + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_4core_m_vecmul(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_Vector2D __pyx_v_v) { + __pyx_t_6squish_4core_Vector2D __pyx_r; + + /* "squish/core.pyx":262 + * + * cdef inline Vector2D m_vecmul(Matrix2x2* self, Vector2D v) nogil: + * return _Vector2D( # <<<<<<<<<<<<<< + * self.a*v.x + self.b*v.y, self.c*v.x + self.d*v.y + * ) + */ + __pyx_r = __pyx_f_6squish_4core__Vector2D(((__pyx_v_self->a * __pyx_v_v.x) + (__pyx_v_self->b * __pyx_v_v.y)), ((__pyx_v_self->c * __pyx_v_v.x) + (__pyx_v_self->d * __pyx_v_v.y))); + goto __pyx_L0; + + /* "squish/core.pyx":261 + * ) + * + * cdef inline Vector2D m_vecmul(Matrix2x2* self, Vector2D v) nogil: # <<<<<<<<<<<<<< + * return _Vector2D( + * self.a*v.x + self.b*v.y, self.c*v.x + self.d*v.y + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":266 + * ) + * + * cdef inline Matrix2x2* m_neg_s(Matrix2x2* self) nogil: # <<<<<<<<<<<<<< + * self.a, self.b, self.c, self.d = -self.a, -self.b, -self.c, -self.d + * return self + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_neg_s(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self) { + __pyx_t_6squish_4core_Matrix2x2 *__pyx_r; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_1; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_2; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_3; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_4; + + /* "squish/core.pyx":267 + * + * cdef inline Matrix2x2* m_neg_s(Matrix2x2* self) nogil: + * self.a, self.b, self.c, self.d = -self.a, -self.b, -self.c, -self.d # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_t_1 = (-__pyx_v_self->a); + __pyx_t_2 = (-__pyx_v_self->b); + __pyx_t_3 = (-__pyx_v_self->c); + __pyx_t_4 = (-__pyx_v_self->d); + __pyx_v_self->a = __pyx_t_1; + __pyx_v_self->b = __pyx_t_2; + __pyx_v_self->c = __pyx_t_3; + __pyx_v_self->d = __pyx_t_4; + + /* "squish/core.pyx":268 + * cdef inline Matrix2x2* m_neg_s(Matrix2x2* self) nogil: + * self.a, self.b, self.c, self.d = -self.a, -self.b, -self.c, -self.d + * return self # <<<<<<<<<<<<<< + * + * cdef inline Matrix2x2* m_madd_s(Matrix2x2* self, Matrix2x2 m) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":266 + * ) + * + * cdef inline Matrix2x2* m_neg_s(Matrix2x2* self) nogil: # <<<<<<<<<<<<<< + * self.a, self.b, self.c, self.d = -self.a, -self.b, -self.c, -self.d + * return self + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":270 + * return self + * + * cdef inline Matrix2x2* m_madd_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * self.a += m.a + * self.b += m.b + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_madd_s(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_Matrix2x2 __pyx_v_m) { + __pyx_t_6squish_4core_Matrix2x2 *__pyx_r; + + /* "squish/core.pyx":271 + * + * cdef inline Matrix2x2* m_madd_s(Matrix2x2* self, Matrix2x2 m) nogil: + * self.a += m.a # <<<<<<<<<<<<<< + * self.b += m.b + * self.c += m.c + */ + __pyx_v_self->a = (__pyx_v_self->a + __pyx_v_m.a); + + /* "squish/core.pyx":272 + * cdef inline Matrix2x2* m_madd_s(Matrix2x2* self, Matrix2x2 m) nogil: + * self.a += m.a + * self.b += m.b # <<<<<<<<<<<<<< + * self.c += m.c + * self.d += m.d + */ + __pyx_v_self->b = (__pyx_v_self->b + __pyx_v_m.b); + + /* "squish/core.pyx":273 + * self.a += m.a + * self.b += m.b + * self.c += m.c # <<<<<<<<<<<<<< + * self.d += m.d + * return self + */ + __pyx_v_self->c = (__pyx_v_self->c + __pyx_v_m.c); + + /* "squish/core.pyx":274 + * self.b += m.b + * self.c += m.c + * self.d += m.d # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_v_self->d = (__pyx_v_self->d + __pyx_v_m.d); + + /* "squish/core.pyx":275 + * self.c += m.c + * self.d += m.d + * return self # <<<<<<<<<<<<<< + * + * cdef inline Matrix2x2* m_msub_s(Matrix2x2* self, Matrix2x2 m) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":270 + * return self + * + * cdef inline Matrix2x2* m_madd_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * self.a += m.a + * self.b += m.b + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":277 + * return self + * + * cdef inline Matrix2x2* m_msub_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * self.a -= m.a + * self.b -= m.b + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_msub_s(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_Matrix2x2 __pyx_v_m) { + __pyx_t_6squish_4core_Matrix2x2 *__pyx_r; + + /* "squish/core.pyx":278 + * + * cdef inline Matrix2x2* m_msub_s(Matrix2x2* self, Matrix2x2 m) nogil: + * self.a -= m.a # <<<<<<<<<<<<<< + * self.b -= m.b + * self.c -= m.c + */ + __pyx_v_self->a = (__pyx_v_self->a - __pyx_v_m.a); + + /* "squish/core.pyx":279 + * cdef inline Matrix2x2* m_msub_s(Matrix2x2* self, Matrix2x2 m) nogil: + * self.a -= m.a + * self.b -= m.b # <<<<<<<<<<<<<< + * self.c -= m.c + * self.d -= m.d + */ + __pyx_v_self->b = (__pyx_v_self->b - __pyx_v_m.b); + + /* "squish/core.pyx":280 + * self.a -= m.a + * self.b -= m.b + * self.c -= m.c # <<<<<<<<<<<<<< + * self.d -= m.d + * return self + */ + __pyx_v_self->c = (__pyx_v_self->c - __pyx_v_m.c); + + /* "squish/core.pyx":281 + * self.b -= m.b + * self.c -= m.c + * self.d -= m.d # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_v_self->d = (__pyx_v_self->d - __pyx_v_m.d); + + /* "squish/core.pyx":282 + * self.c -= m.c + * self.d -= m.d + * return self # <<<<<<<<<<<<<< + * + * cdef inline Matrix2x2* m_mmul_s(Matrix2x2* self, Matrix2x2 m) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":277 + * return self + * + * cdef inline Matrix2x2* m_msub_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * self.a -= m.a + * self.b -= m.b + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":284 + * return self + * + * cdef inline Matrix2x2* m_mmul_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * self.a *= m.a + * self.b *= m.b + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_mmul_s(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_Matrix2x2 __pyx_v_m) { + __pyx_t_6squish_4core_Matrix2x2 *__pyx_r; + + /* "squish/core.pyx":285 + * + * cdef inline Matrix2x2* m_mmul_s(Matrix2x2* self, Matrix2x2 m) nogil: + * self.a *= m.a # <<<<<<<<<<<<<< + * self.b *= m.b + * self.c *= m.c + */ + __pyx_v_self->a = (__pyx_v_self->a * __pyx_v_m.a); + + /* "squish/core.pyx":286 + * cdef inline Matrix2x2* m_mmul_s(Matrix2x2* self, Matrix2x2 m) nogil: + * self.a *= m.a + * self.b *= m.b # <<<<<<<<<<<<<< + * self.c *= m.c + * self.d *= m.d + */ + __pyx_v_self->b = (__pyx_v_self->b * __pyx_v_m.b); + + /* "squish/core.pyx":287 + * self.a *= m.a + * self.b *= m.b + * self.c *= m.c # <<<<<<<<<<<<<< + * self.d *= m.d + * return self + */ + __pyx_v_self->c = (__pyx_v_self->c * __pyx_v_m.c); + + /* "squish/core.pyx":288 + * self.b *= m.b + * self.c *= m.c + * self.d *= m.d # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_v_self->d = (__pyx_v_self->d * __pyx_v_m.d); + + /* "squish/core.pyx":289 + * self.c *= m.c + * self.d *= m.d + * return self # <<<<<<<<<<<<<< + * + * cdef inline Matrix2x2* m_mdiv_s(Matrix2x2* self, Matrix2x2 m) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":284 + * return self + * + * cdef inline Matrix2x2* m_mmul_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * self.a *= m.a + * self.b *= m.b + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":291 + * return self + * + * cdef inline Matrix2x2* m_mdiv_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * self.a /= m.a + * self.b /= m.b + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_mdiv_s(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_Matrix2x2 __pyx_v_m) { + __pyx_t_6squish_4core_Matrix2x2 *__pyx_r; + + /* "squish/core.pyx":292 + * + * cdef inline Matrix2x2* m_mdiv_s(Matrix2x2* self, Matrix2x2 m) nogil: + * self.a /= m.a # <<<<<<<<<<<<<< + * self.b /= m.b + * self.c /= m.c + */ + __pyx_v_self->a = (__pyx_v_self->a / __pyx_v_m.a); + + /* "squish/core.pyx":293 + * cdef inline Matrix2x2* m_mdiv_s(Matrix2x2* self, Matrix2x2 m) nogil: + * self.a /= m.a + * self.b /= m.b # <<<<<<<<<<<<<< + * self.c /= m.c + * self.d /= m.d + */ + __pyx_v_self->b = (__pyx_v_self->b / __pyx_v_m.b); + + /* "squish/core.pyx":294 + * self.a /= m.a + * self.b /= m.b + * self.c /= m.c # <<<<<<<<<<<<<< + * self.d /= m.d + * return self + */ + __pyx_v_self->c = (__pyx_v_self->c / __pyx_v_m.c); + + /* "squish/core.pyx":295 + * self.b /= m.b + * self.c /= m.c + * self.d /= m.d # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_v_self->d = (__pyx_v_self->d / __pyx_v_m.d); + + /* "squish/core.pyx":296 + * self.c /= m.c + * self.d /= m.d + * return self # <<<<<<<<<<<<<< + * + * cdef inline Matrix2x2* m_sadd_s(Matrix2x2* self, FLOAT_T s) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":291 + * return self + * + * cdef inline Matrix2x2* m_mdiv_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * self.a /= m.a + * self.b /= m.b + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":298 + * return self + * + * cdef inline Matrix2x2* m_sadd_s(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * self.a += s + * self.b += s + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_sadd_s(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_s) { + __pyx_t_6squish_4core_Matrix2x2 *__pyx_r; + + /* "squish/core.pyx":299 + * + * cdef inline Matrix2x2* m_sadd_s(Matrix2x2* self, FLOAT_T s) nogil: + * self.a += s # <<<<<<<<<<<<<< + * self.b += s + * self.c += s + */ + __pyx_v_self->a = (__pyx_v_self->a + __pyx_v_s); + + /* "squish/core.pyx":300 + * cdef inline Matrix2x2* m_sadd_s(Matrix2x2* self, FLOAT_T s) nogil: + * self.a += s + * self.b += s # <<<<<<<<<<<<<< + * self.c += s + * self.d += s + */ + __pyx_v_self->b = (__pyx_v_self->b + __pyx_v_s); + + /* "squish/core.pyx":301 + * self.a += s + * self.b += s + * self.c += s # <<<<<<<<<<<<<< + * self.d += s + * return self + */ + __pyx_v_self->c = (__pyx_v_self->c + __pyx_v_s); + + /* "squish/core.pyx":302 + * self.b += s + * self.c += s + * self.d += s # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_v_self->d = (__pyx_v_self->d + __pyx_v_s); + + /* "squish/core.pyx":303 + * self.c += s + * self.d += s + * return self # <<<<<<<<<<<<<< + * + * cdef inline Matrix2x2* m_ssub_s(Matrix2x2* self, FLOAT_T s) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":298 + * return self + * + * cdef inline Matrix2x2* m_sadd_s(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * self.a += s + * self.b += s + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":305 + * return self + * + * cdef inline Matrix2x2* m_ssub_s(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * self.a -= s + * self.b -= s + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_ssub_s(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_s) { + __pyx_t_6squish_4core_Matrix2x2 *__pyx_r; + + /* "squish/core.pyx":306 + * + * cdef inline Matrix2x2* m_ssub_s(Matrix2x2* self, FLOAT_T s) nogil: + * self.a -= s # <<<<<<<<<<<<<< + * self.b -= s + * self.c -= s + */ + __pyx_v_self->a = (__pyx_v_self->a - __pyx_v_s); + + /* "squish/core.pyx":307 + * cdef inline Matrix2x2* m_ssub_s(Matrix2x2* self, FLOAT_T s) nogil: + * self.a -= s + * self.b -= s # <<<<<<<<<<<<<< + * self.c -= s + * self.d -= s + */ + __pyx_v_self->b = (__pyx_v_self->b - __pyx_v_s); + + /* "squish/core.pyx":308 + * self.a -= s + * self.b -= s + * self.c -= s # <<<<<<<<<<<<<< + * self.d -= s + * return self + */ + __pyx_v_self->c = (__pyx_v_self->c - __pyx_v_s); + + /* "squish/core.pyx":309 + * self.b -= s + * self.c -= s + * self.d -= s # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_v_self->d = (__pyx_v_self->d - __pyx_v_s); + + /* "squish/core.pyx":310 + * self.c -= s + * self.d -= s + * return self # <<<<<<<<<<<<<< + * + * cdef inline Matrix2x2* m_smul_s(Matrix2x2* self, FLOAT_T s) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":305 + * return self + * + * cdef inline Matrix2x2* m_ssub_s(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * self.a -= s + * self.b -= s + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":312 + * return self + * + * cdef inline Matrix2x2* m_smul_s(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * self.a *= s + * self.b *= s + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_smul_s(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_s) { + __pyx_t_6squish_4core_Matrix2x2 *__pyx_r; + + /* "squish/core.pyx":313 + * + * cdef inline Matrix2x2* m_smul_s(Matrix2x2* self, FLOAT_T s) nogil: + * self.a *= s # <<<<<<<<<<<<<< + * self.b *= s + * self.c *= s + */ + __pyx_v_self->a = (__pyx_v_self->a * __pyx_v_s); + + /* "squish/core.pyx":314 + * cdef inline Matrix2x2* m_smul_s(Matrix2x2* self, FLOAT_T s) nogil: + * self.a *= s + * self.b *= s # <<<<<<<<<<<<<< + * self.c *= s + * self.d *= s + */ + __pyx_v_self->b = (__pyx_v_self->b * __pyx_v_s); + + /* "squish/core.pyx":315 + * self.a *= s + * self.b *= s + * self.c *= s # <<<<<<<<<<<<<< + * self.d *= s + * return self + */ + __pyx_v_self->c = (__pyx_v_self->c * __pyx_v_s); + + /* "squish/core.pyx":316 + * self.b *= s + * self.c *= s + * self.d *= s # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_v_self->d = (__pyx_v_self->d * __pyx_v_s); + + /* "squish/core.pyx":317 + * self.c *= s + * self.d *= s + * return self # <<<<<<<<<<<<<< + * + * cdef inline Matrix2x2* m_sdiv_s(Matrix2x2* self, FLOAT_T s) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":312 + * return self + * + * cdef inline Matrix2x2* m_smul_s(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * self.a *= s + * self.b *= s + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":319 + * return self + * + * cdef inline Matrix2x2* m_sdiv_s(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * self.a /= s + * self.b /= s + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_sdiv_s(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_s) { + __pyx_t_6squish_4core_Matrix2x2 *__pyx_r; + + /* "squish/core.pyx":320 + * + * cdef inline Matrix2x2* m_sdiv_s(Matrix2x2* self, FLOAT_T s) nogil: + * self.a /= s # <<<<<<<<<<<<<< + * self.b /= s + * self.c /= s + */ + __pyx_v_self->a = (__pyx_v_self->a / __pyx_v_s); + + /* "squish/core.pyx":321 + * cdef inline Matrix2x2* m_sdiv_s(Matrix2x2* self, FLOAT_T s) nogil: + * self.a /= s + * self.b /= s # <<<<<<<<<<<<<< + * self.c /= s + * self.d /= s + */ + __pyx_v_self->b = (__pyx_v_self->b / __pyx_v_s); + + /* "squish/core.pyx":322 + * self.a /= s + * self.b /= s + * self.c /= s # <<<<<<<<<<<<<< + * self.d /= s + * return self + */ + __pyx_v_self->c = (__pyx_v_self->c / __pyx_v_s); + + /* "squish/core.pyx":323 + * self.b /= s + * self.c /= s + * self.d /= s # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_v_self->d = (__pyx_v_self->d / __pyx_v_s); + + /* "squish/core.pyx":324 + * self.c /= s + * self.d /= s + * return self # <<<<<<<<<<<<<< + * + * cdef inline Matrix2x2* m_matmul_s(Matrix2x2* self, Matrix2x2 m) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":319 + * return self + * + * cdef inline Matrix2x2* m_sdiv_s(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * self.a /= s + * self.b /= s + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":326 + * return self + * + * cdef inline Matrix2x2* m_matmul_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * self.a, self.b, self.c, self.d = \ + * self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, \ + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 *__pyx_f_6squish_4core_m_matmul_s(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_Matrix2x2 __pyx_v_m) { + __pyx_t_6squish_4core_Matrix2x2 *__pyx_r; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_1; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_2; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_3; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_4; + + /* "squish/core.pyx":328 + * cdef inline Matrix2x2* m_matmul_s(Matrix2x2* self, Matrix2x2 m) nogil: + * self.a, self.b, self.c, self.d = \ + * self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, \ # <<<<<<<<<<<<<< + * self.c*m.a + self.d*m.c, self.c*m.b + self.d*m.d + * return self + */ + __pyx_t_1 = ((__pyx_v_self->a * __pyx_v_m.a) + (__pyx_v_self->b * __pyx_v_m.c)); + __pyx_t_2 = ((__pyx_v_self->a * __pyx_v_m.b) + (__pyx_v_self->b * __pyx_v_m.d)); + + /* "squish/core.pyx":329 + * self.a, self.b, self.c, self.d = \ + * self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, \ + * self.c*m.a + self.d*m.c, self.c*m.b + self.d*m.d # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_t_3 = ((__pyx_v_self->c * __pyx_v_m.a) + (__pyx_v_self->d * __pyx_v_m.c)); + __pyx_t_4 = ((__pyx_v_self->c * __pyx_v_m.b) + (__pyx_v_self->d * __pyx_v_m.d)); + + /* "squish/core.pyx":327 + * + * cdef inline Matrix2x2* m_matmul_s(Matrix2x2* self, Matrix2x2 m) nogil: + * self.a, self.b, self.c, self.d = \ # <<<<<<<<<<<<<< + * self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, \ + * self.c*m.a + self.d*m.c, self.c*m.b + self.d*m.d + */ + __pyx_v_self->a = __pyx_t_1; + __pyx_v_self->b = __pyx_t_2; + __pyx_v_self->c = __pyx_t_3; + __pyx_v_self->d = __pyx_t_4; + + /* "squish/core.pyx":330 + * self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, \ + * self.c*m.a + self.d*m.c, self.c*m.b + self.d*m.d + * return self # <<<<<<<<<<<<<< + * + * cdef inline Matrix2x2 m_neg_c(Matrix2x2* self) nogil: + */ + __pyx_r = __pyx_v_self; + goto __pyx_L0; + + /* "squish/core.pyx":326 + * return self + * + * cdef inline Matrix2x2* m_matmul_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * self.a, self.b, self.c, self.d = \ + * self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, \ + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":332 + * return self + * + * cdef inline Matrix2x2 m_neg_c(Matrix2x2* self) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2(-self.a, -self.b, -self.c, -self.d) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_neg_c(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self) { + __pyx_t_6squish_4core_Matrix2x2 __pyx_r; + + /* "squish/core.pyx":333 + * + * cdef inline Matrix2x2 m_neg_c(Matrix2x2* self) nogil: + * return _Matrix2x2(-self.a, -self.b, -self.c, -self.d) # <<<<<<<<<<<<<< + * + * cdef inline Matrix2x2 m_madd_c(Matrix2x2* self, Matrix2x2 m) nogil: + */ + __pyx_r = __pyx_f_6squish_4core__Matrix2x2((-__pyx_v_self->a), (-__pyx_v_self->b), (-__pyx_v_self->c), (-__pyx_v_self->d)); + goto __pyx_L0; + + /* "squish/core.pyx":332 + * return self + * + * cdef inline Matrix2x2 m_neg_c(Matrix2x2* self) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2(-self.a, -self.b, -self.c, -self.d) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":335 + * return _Matrix2x2(-self.a, -self.b, -self.c, -self.d) + * + * cdef inline Matrix2x2 m_madd_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2(self.a+m.a, self.b+m.b, self.c+m.c, self.d+m.d) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_madd_c(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_Matrix2x2 __pyx_v_m) { + __pyx_t_6squish_4core_Matrix2x2 __pyx_r; + + /* "squish/core.pyx":336 + * + * cdef inline Matrix2x2 m_madd_c(Matrix2x2* self, Matrix2x2 m) nogil: + * return _Matrix2x2(self.a+m.a, self.b+m.b, self.c+m.c, self.d+m.d) # <<<<<<<<<<<<<< + * + * cdef inline Matrix2x2 m_msub_c(Matrix2x2* self, Matrix2x2 m) nogil: + */ + __pyx_r = __pyx_f_6squish_4core__Matrix2x2((__pyx_v_self->a + __pyx_v_m.a), (__pyx_v_self->b + __pyx_v_m.b), (__pyx_v_self->c + __pyx_v_m.c), (__pyx_v_self->d + __pyx_v_m.d)); + goto __pyx_L0; + + /* "squish/core.pyx":335 + * return _Matrix2x2(-self.a, -self.b, -self.c, -self.d) + * + * cdef inline Matrix2x2 m_madd_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2(self.a+m.a, self.b+m.b, self.c+m.c, self.d+m.d) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":338 + * return _Matrix2x2(self.a+m.a, self.b+m.b, self.c+m.c, self.d+m.d) + * + * cdef inline Matrix2x2 m_msub_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2(self.a-m.a, self.b-m.b, self.c-m.c, self.d-m.d) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_msub_c(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_Matrix2x2 __pyx_v_m) { + __pyx_t_6squish_4core_Matrix2x2 __pyx_r; + + /* "squish/core.pyx":339 + * + * cdef inline Matrix2x2 m_msub_c(Matrix2x2* self, Matrix2x2 m) nogil: + * return _Matrix2x2(self.a-m.a, self.b-m.b, self.c-m.c, self.d-m.d) # <<<<<<<<<<<<<< + * + * cdef inline Matrix2x2 m_mmul_c(Matrix2x2* self, Matrix2x2 m) nogil: + */ + __pyx_r = __pyx_f_6squish_4core__Matrix2x2((__pyx_v_self->a - __pyx_v_m.a), (__pyx_v_self->b - __pyx_v_m.b), (__pyx_v_self->c - __pyx_v_m.c), (__pyx_v_self->d - __pyx_v_m.d)); + goto __pyx_L0; + + /* "squish/core.pyx":338 + * return _Matrix2x2(self.a+m.a, self.b+m.b, self.c+m.c, self.d+m.d) + * + * cdef inline Matrix2x2 m_msub_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2(self.a-m.a, self.b-m.b, self.c-m.c, self.d-m.d) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":341 + * return _Matrix2x2(self.a-m.a, self.b-m.b, self.c-m.c, self.d-m.d) + * + * cdef inline Matrix2x2 m_mmul_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2(self.a*m.a, self.b*m.b, self.c*m.c, self.d*m.d) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_mmul_c(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_Matrix2x2 __pyx_v_m) { + __pyx_t_6squish_4core_Matrix2x2 __pyx_r; + + /* "squish/core.pyx":342 + * + * cdef inline Matrix2x2 m_mmul_c(Matrix2x2* self, Matrix2x2 m) nogil: + * return _Matrix2x2(self.a*m.a, self.b*m.b, self.c*m.c, self.d*m.d) # <<<<<<<<<<<<<< + * + * cdef inline Matrix2x2 m_mdiv_c(Matrix2x2* self, Matrix2x2 m) nogil: + */ + __pyx_r = __pyx_f_6squish_4core__Matrix2x2((__pyx_v_self->a * __pyx_v_m.a), (__pyx_v_self->b * __pyx_v_m.b), (__pyx_v_self->c * __pyx_v_m.c), (__pyx_v_self->d * __pyx_v_m.d)); + goto __pyx_L0; + + /* "squish/core.pyx":341 + * return _Matrix2x2(self.a-m.a, self.b-m.b, self.c-m.c, self.d-m.d) + * + * cdef inline Matrix2x2 m_mmul_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2(self.a*m.a, self.b*m.b, self.c*m.c, self.d*m.d) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":344 + * return _Matrix2x2(self.a*m.a, self.b*m.b, self.c*m.c, self.d*m.d) + * + * cdef inline Matrix2x2 m_mdiv_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2(self.a/m.a, self.b/m.b, self.c/m.c, self.d/m.d) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_mdiv_c(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_Matrix2x2 __pyx_v_m) { + __pyx_t_6squish_4core_Matrix2x2 __pyx_r; + + /* "squish/core.pyx":345 + * + * cdef inline Matrix2x2 m_mdiv_c(Matrix2x2* self, Matrix2x2 m) nogil: + * return _Matrix2x2(self.a/m.a, self.b/m.b, self.c/m.c, self.d/m.d) # <<<<<<<<<<<<<< + * + * cdef inline Matrix2x2 m_sadd_c(Matrix2x2* self, FLOAT_T s) nogil: + */ + __pyx_r = __pyx_f_6squish_4core__Matrix2x2((__pyx_v_self->a / __pyx_v_m.a), (__pyx_v_self->b / __pyx_v_m.b), (__pyx_v_self->c / __pyx_v_m.c), (__pyx_v_self->d / __pyx_v_m.d)); + goto __pyx_L0; + + /* "squish/core.pyx":344 + * return _Matrix2x2(self.a*m.a, self.b*m.b, self.c*m.c, self.d*m.d) + * + * cdef inline Matrix2x2 m_mdiv_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2(self.a/m.a, self.b/m.b, self.c/m.c, self.d/m.d) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":347 + * return _Matrix2x2(self.a/m.a, self.b/m.b, self.c/m.c, self.d/m.d) + * + * cdef inline Matrix2x2 m_sadd_c(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2(self.a+s, self.b+s, self.c+s, self.d+s) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_sadd_c(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_s) { + __pyx_t_6squish_4core_Matrix2x2 __pyx_r; + + /* "squish/core.pyx":348 + * + * cdef inline Matrix2x2 m_sadd_c(Matrix2x2* self, FLOAT_T s) nogil: + * return _Matrix2x2(self.a+s, self.b+s, self.c+s, self.d+s) # <<<<<<<<<<<<<< + * + * cdef inline Matrix2x2 m_ssub_c(Matrix2x2* self, FLOAT_T s) nogil: + */ + __pyx_r = __pyx_f_6squish_4core__Matrix2x2((__pyx_v_self->a + __pyx_v_s), (__pyx_v_self->b + __pyx_v_s), (__pyx_v_self->c + __pyx_v_s), (__pyx_v_self->d + __pyx_v_s)); + goto __pyx_L0; + + /* "squish/core.pyx":347 + * return _Matrix2x2(self.a/m.a, self.b/m.b, self.c/m.c, self.d/m.d) + * + * cdef inline Matrix2x2 m_sadd_c(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2(self.a+s, self.b+s, self.c+s, self.d+s) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":350 + * return _Matrix2x2(self.a+s, self.b+s, self.c+s, self.d+s) + * + * cdef inline Matrix2x2 m_ssub_c(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2(self.a-s, self.b-s, self.c-s, self.d-s) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_ssub_c(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_s) { + __pyx_t_6squish_4core_Matrix2x2 __pyx_r; + + /* "squish/core.pyx":351 + * + * cdef inline Matrix2x2 m_ssub_c(Matrix2x2* self, FLOAT_T s) nogil: + * return _Matrix2x2(self.a-s, self.b-s, self.c-s, self.d-s) # <<<<<<<<<<<<<< + * + * cdef inline Matrix2x2 m_smul_c(Matrix2x2* self, FLOAT_T s) nogil: + */ + __pyx_r = __pyx_f_6squish_4core__Matrix2x2((__pyx_v_self->a - __pyx_v_s), (__pyx_v_self->b - __pyx_v_s), (__pyx_v_self->c - __pyx_v_s), (__pyx_v_self->d - __pyx_v_s)); + goto __pyx_L0; + + /* "squish/core.pyx":350 + * return _Matrix2x2(self.a+s, self.b+s, self.c+s, self.d+s) + * + * cdef inline Matrix2x2 m_ssub_c(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2(self.a-s, self.b-s, self.c-s, self.d-s) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":353 + * return _Matrix2x2(self.a-s, self.b-s, self.c-s, self.d-s) + * + * cdef inline Matrix2x2 m_smul_c(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2(self.a*s, self.b*s, self.c*s, self.d*s) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_smul_c(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_s) { + __pyx_t_6squish_4core_Matrix2x2 __pyx_r; + + /* "squish/core.pyx":354 + * + * cdef inline Matrix2x2 m_smul_c(Matrix2x2* self, FLOAT_T s) nogil: + * return _Matrix2x2(self.a*s, self.b*s, self.c*s, self.d*s) # <<<<<<<<<<<<<< + * + * cdef inline Matrix2x2 m_sdiv_c(Matrix2x2* self, FLOAT_T s) nogil: + */ + __pyx_r = __pyx_f_6squish_4core__Matrix2x2((__pyx_v_self->a * __pyx_v_s), (__pyx_v_self->b * __pyx_v_s), (__pyx_v_self->c * __pyx_v_s), (__pyx_v_self->d * __pyx_v_s)); + goto __pyx_L0; + + /* "squish/core.pyx":353 + * return _Matrix2x2(self.a-s, self.b-s, self.c-s, self.d-s) + * + * cdef inline Matrix2x2 m_smul_c(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2(self.a*s, self.b*s, self.c*s, self.d*s) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":356 + * return _Matrix2x2(self.a*s, self.b*s, self.c*s, self.d*s) + * + * cdef inline Matrix2x2 m_sdiv_c(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2(self.a/s, self.b/s, self.c/s, self.d/s) + * + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_sdiv_c(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_s) { + __pyx_t_6squish_4core_Matrix2x2 __pyx_r; + + /* "squish/core.pyx":357 + * + * cdef inline Matrix2x2 m_sdiv_c(Matrix2x2* self, FLOAT_T s) nogil: + * return _Matrix2x2(self.a/s, self.b/s, self.c/s, self.d/s) # <<<<<<<<<<<<<< + * + * cdef inline Matrix2x2 m_matmul_c(Matrix2x2* self, Matrix2x2 m) nogil: + */ + __pyx_r = __pyx_f_6squish_4core__Matrix2x2((__pyx_v_self->a / __pyx_v_s), (__pyx_v_self->b / __pyx_v_s), (__pyx_v_self->c / __pyx_v_s), (__pyx_v_self->d / __pyx_v_s)); + goto __pyx_L0; + + /* "squish/core.pyx":356 + * return _Matrix2x2(self.a*s, self.b*s, self.c*s, self.d*s) + * + * cdef inline Matrix2x2 m_sdiv_c(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2(self.a/s, self.b/s, self.c/s, self.d/s) + * + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/core.pyx":359 + * return _Matrix2x2(self.a/s, self.b/s, self.c/s, self.d/s) + * + * cdef inline Matrix2x2 m_matmul_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2( + * self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_4core_m_matmul_c(__pyx_t_6squish_4core_Matrix2x2 *__pyx_v_self, __pyx_t_6squish_4core_Matrix2x2 __pyx_v_m) { + __pyx_t_6squish_4core_Matrix2x2 __pyx_r; + + /* "squish/core.pyx":360 + * + * cdef inline Matrix2x2 m_matmul_c(Matrix2x2* self, Matrix2x2 m) nogil: + * return _Matrix2x2( # <<<<<<<<<<<<<< + * self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, + * self.c*m.a + self.d*m.c, self.c*m.b + self.d*m.d + */ + __pyx_r = __pyx_f_6squish_4core__Matrix2x2(((__pyx_v_self->a * __pyx_v_m.a) + (__pyx_v_self->b * __pyx_v_m.c)), ((__pyx_v_self->a * __pyx_v_m.b) + (__pyx_v_self->b * __pyx_v_m.d)), ((__pyx_v_self->c * __pyx_v_m.a) + (__pyx_v_self->d * __pyx_v_m.c)), ((__pyx_v_self->c * __pyx_v_m.b) + (__pyx_v_self->d * __pyx_v_m.d))); + goto __pyx_L0; + + /* "squish/core.pyx":359 + * return _Matrix2x2(self.a/s, self.b/s, self.c/s, self.d/s) + * + * cdef inline Matrix2x2 m_matmul_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< + * return _Matrix2x2( + * self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":735 + * ctypedef npy_cdouble complex_t + * + * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(1, a) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":736 + * + * cdef inline object PyArray_MultiIterNew1(a): + * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew2(a, b): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 736, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":735 + * ctypedef npy_cdouble complex_t + * + * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(1, a) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":738 + * return PyArray_MultiIterNew(1, a) + * + * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(2, a, b) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":739 + * + * cdef inline object PyArray_MultiIterNew2(a, b): + * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew3(a, b, c): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 739, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":738 + * return PyArray_MultiIterNew(1, a) + * + * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(2, a, b) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":741 + * return PyArray_MultiIterNew(2, a, b) + * + * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(3, a, b, c) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":742 + * + * cdef inline object PyArray_MultiIterNew3(a, b, c): + * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew4(a, b, c, d): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 742, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":741 + * return PyArray_MultiIterNew(2, a, b) + * + * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(3, a, b, c) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":744 + * return PyArray_MultiIterNew(3, a, b, c) + * + * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(4, a, b, c, d) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":745 + * + * cdef inline object PyArray_MultiIterNew4(a, b, c, d): + * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 745, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":744 + * return PyArray_MultiIterNew(3, a, b, c) + * + * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(4, a, b, c, d) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":747 + * return PyArray_MultiIterNew(4, a, b, c, d) + * + * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(5, a, b, c, d, e) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d, PyObject *__pyx_v_e) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":748 + * + * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): + * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< + * + * cdef inline tuple PyDataType_SHAPE(dtype d): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 748, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":747 + * return PyArray_MultiIterNew(4, a, b, c, d) + * + * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(5, a, b, c, d, e) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":750 + * return PyArray_MultiIterNew(5, a, b, c, d, e) + * + * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< + * if PyDataType_HASSUBARRAY(d): + * return d.subarray.shape + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__pyx_v_d) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":751 + * + * cdef inline tuple PyDataType_SHAPE(dtype d): + * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< + * return d.subarray.shape + * else: + */ + __pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0); + if (__pyx_t_1) { + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":752 + * cdef inline tuple PyDataType_SHAPE(dtype d): + * if PyDataType_HASSUBARRAY(d): + * return d.subarray.shape # <<<<<<<<<<<<<< + * else: + * return () + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(((PyObject*)__pyx_v_d->subarray->shape)); + __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape); + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":751 + * + * cdef inline tuple PyDataType_SHAPE(dtype d): + * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< + * return d.subarray.shape + * else: + */ + } + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":754 + * return d.subarray.shape + * else: + * return () # <<<<<<<<<<<<<< + * + * + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_empty_tuple); + __pyx_r = __pyx_empty_tuple; + goto __pyx_L0; + } + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":750 + * return PyArray_MultiIterNew(5, a, b, c, d, e) + * + * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< + * if PyDataType_HASSUBARRAY(d): + * return d.subarray.shape + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":929 + * int _import_umath() except -1 + * + * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< + * Py_INCREF(base) # important to do this before stealing the reference below! + * PyArray_SetBaseObject(arr, base) + */ + +static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("set_array_base", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":930 + * + * cdef inline void set_array_base(ndarray arr, object base): + * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<< + * PyArray_SetBaseObject(arr, base) + * + */ + Py_INCREF(__pyx_v_base); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":931 + * cdef inline void set_array_base(ndarray arr, object base): + * Py_INCREF(base) # important to do this before stealing the reference below! + * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<< + * + * cdef inline object get_array_base(ndarray arr): + */ + (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base)); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":929 + * int _import_umath() except -1 + * + * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< + * Py_INCREF(base) # important to do this before stealing the reference below! + * PyArray_SetBaseObject(arr, base) + */ + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":933 + * PyArray_SetBaseObject(arr, base) + * + * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< + * base = PyArray_BASE(arr) + * if base is NULL: + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) { + PyObject *__pyx_v_base; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + __Pyx_RefNannySetupContext("get_array_base", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":934 + * + * cdef inline object get_array_base(ndarray arr): + * base = PyArray_BASE(arr) # <<<<<<<<<<<<<< + * if base is NULL: + * return None + */ + __pyx_v_base = PyArray_BASE(__pyx_v_arr); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":935 + * cdef inline object get_array_base(ndarray arr): + * base = PyArray_BASE(arr) + * if base is NULL: # <<<<<<<<<<<<<< + * return None + * return base + */ + __pyx_t_1 = ((__pyx_v_base == NULL) != 0); + if (__pyx_t_1) { + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":936 + * base = PyArray_BASE(arr) + * if base is NULL: + * return None # <<<<<<<<<<<<<< + * return base + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":935 + * cdef inline object get_array_base(ndarray arr): + * base = PyArray_BASE(arr) + * if base is NULL: # <<<<<<<<<<<<<< + * return None + * return base + */ + } + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":937 + * if base is NULL: + * return None + * return base # <<<<<<<<<<<<<< + * + * # Versions of the import_* functions which are more suitable for + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(((PyObject *)__pyx_v_base)); + __pyx_r = ((PyObject *)__pyx_v_base); + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":933 + * PyArray_SetBaseObject(arr, base) + * + * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< + * base = PyArray_BASE(arr) + * if base is NULL: + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":941 + * # Versions of the import_* functions which are more suitable for + * # Cython code. + * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< + * try: + * __pyx_import_array() + */ + +static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("import_array", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":942 + * # Cython code. + * cdef inline int import_array() except -1: + * try: # <<<<<<<<<<<<<< + * __pyx_import_array() + * except Exception: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":943 + * cdef inline int import_array() except -1: + * try: + * __pyx_import_array() # <<<<<<<<<<<<<< + * except Exception: + * raise ImportError("numpy.core.multiarray failed to import") + */ + __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 943, __pyx_L3_error) + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":942 + * # Cython code. + * cdef inline int import_array() except -1: + * try: # <<<<<<<<<<<<<< + * __pyx_import_array() + * except Exception: + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":944 + * try: + * __pyx_import_array() + * except Exception: # <<<<<<<<<<<<<< + * raise ImportError("numpy.core.multiarray failed to import") + * + */ + __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_4) { + __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 944, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GOTREF(__pyx_t_7); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":945 + * __pyx_import_array() + * except Exception: + * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< + * + * cdef inline int import_umath() except -1: + */ + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 945, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_Raise(__pyx_t_8, 0, 0, 0); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __PYX_ERR(1, 945, __pyx_L5_except_error) + } + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":942 + * # Cython code. + * cdef inline int import_array() except -1: + * try: # <<<<<<<<<<<<<< + * __pyx_import_array() + * except Exception: + */ + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L8_try_end:; + } + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":941 + * # Versions of the import_* functions which are more suitable for + * # Cython code. + * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< + * try: + * __pyx_import_array() + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":947 + * raise ImportError("numpy.core.multiarray failed to import") + * + * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< + * try: + * _import_umath() + */ + +static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("import_umath", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":948 + * + * cdef inline int import_umath() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":949 + * cdef inline int import_umath() except -1: + * try: + * _import_umath() # <<<<<<<<<<<<<< + * except Exception: + * raise ImportError("numpy.core.umath failed to import") + */ + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 949, __pyx_L3_error) + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":948 + * + * cdef inline int import_umath() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":950 + * try: + * _import_umath() + * except Exception: # <<<<<<<<<<<<<< + * raise ImportError("numpy.core.umath failed to import") + * + */ + __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_4) { + __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 950, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GOTREF(__pyx_t_7); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":951 + * _import_umath() + * except Exception: + * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< + * + * cdef inline int import_ufunc() except -1: + */ + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 951, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_Raise(__pyx_t_8, 0, 0, 0); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __PYX_ERR(1, 951, __pyx_L5_except_error) + } + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":948 + * + * cdef inline int import_umath() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L8_try_end:; + } + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":947 + * raise ImportError("numpy.core.multiarray failed to import") + * + * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< + * try: + * _import_umath() + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":953 + * raise ImportError("numpy.core.umath failed to import") + * + * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< + * try: + * _import_umath() + */ + +static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("import_ufunc", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":954 + * + * cdef inline int import_ufunc() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":955 + * cdef inline int import_ufunc() except -1: + * try: + * _import_umath() # <<<<<<<<<<<<<< + * except Exception: + * raise ImportError("numpy.core.umath failed to import") + */ + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 955, __pyx_L3_error) + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":954 + * + * cdef inline int import_ufunc() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":956 + * try: + * _import_umath() + * except Exception: # <<<<<<<<<<<<<< + * raise ImportError("numpy.core.umath failed to import") + * + */ + __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_4) { + __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 956, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GOTREF(__pyx_t_7); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":957 + * _import_umath() + * except Exception: + * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< + * + * cdef extern from *: + */ + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 957, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_Raise(__pyx_t_8, 0, 0, 0); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __PYX_ERR(1, 957, __pyx_L5_except_error) + } + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":954 + * + * cdef inline int import_ufunc() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L8_try_end:; + } + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":953 + * raise ImportError("numpy.core.umath failed to import") + * + * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< + * try: + * _import_umath() + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":967 + * + * + * cdef inline bint is_timedelta64_object(object obj): # <<<<<<<<<<<<<< + * """ + * Cython equivalent of `isinstance(obj, np.timedelta64)` + */ + +static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("is_timedelta64_object", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":979 + * bool + * """ + * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyTimedeltaArrType_Type)); + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":967 + * + * + * cdef inline bint is_timedelta64_object(object obj): # <<<<<<<<<<<<<< + * """ + * Cython equivalent of `isinstance(obj, np.timedelta64)` + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":982 + * + * + * cdef inline bint is_datetime64_object(object obj): # <<<<<<<<<<<<<< + * """ + * Cython equivalent of `isinstance(obj, np.datetime64)` + */ + +static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("is_datetime64_object", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":994 + * bool + * """ + * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyDatetimeArrType_Type)); + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":982 + * + * + * cdef inline bint is_datetime64_object(object obj): # <<<<<<<<<<<<<< + * """ + * Cython equivalent of `isinstance(obj, np.datetime64)` + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":997 + * + * + * cdef inline npy_datetime get_datetime64_value(object obj) nogil: # <<<<<<<<<<<<<< + * """ + * returns the int64 value underlying scalar numpy datetime64 object + */ + +static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) { + npy_datetime __pyx_r; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1004 + * also needed. That can be found using `get_datetime64_unit`. + * """ + * return (obj).obval # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = ((PyDatetimeScalarObject *)__pyx_v_obj)->obval; + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":997 + * + * + * cdef inline npy_datetime get_datetime64_value(object obj) nogil: # <<<<<<<<<<<<<< + * """ + * returns the int64 value underlying scalar numpy datetime64 object + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1007 + * + * + * cdef inline npy_timedelta get_timedelta64_value(object obj) nogil: # <<<<<<<<<<<<<< + * """ + * returns the int64 value underlying scalar numpy timedelta64 object + */ + +static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) { + npy_timedelta __pyx_r; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1011 + * returns the int64 value underlying scalar numpy timedelta64 object + * """ + * return (obj).obval # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = ((PyTimedeltaScalarObject *)__pyx_v_obj)->obval; + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1007 + * + * + * cdef inline npy_timedelta get_timedelta64_value(object obj) nogil: # <<<<<<<<<<<<<< + * """ + * returns the int64 value underlying scalar numpy timedelta64 object + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1014 + * + * + * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<< + * """ + * returns the unit part of the dtype for a numpy datetime64 object. + */ + +static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) { + NPY_DATETIMEUNIT __pyx_r; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1018 + * returns the unit part of the dtype for a numpy datetime64 object. + * """ + * return (obj).obmeta.base # <<<<<<<<<<<<<< + */ + __pyx_r = ((NPY_DATETIMEUNIT)((PyDatetimeScalarObject *)__pyx_v_obj)->obmeta.base); + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1014 + * + * + * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<< + * """ + * returns the unit part of the dtype for a numpy datetime64 object. + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; + +#if PY_MAJOR_VERSION >= 3 +#if CYTHON_PEP489_MULTI_PHASE_INIT +static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +static int __pyx_pymod_exec_core(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_core}, + {0, NULL} +}; +#endif + +static struct PyModuleDef __pyx_moduledef = { + PyModuleDef_HEAD_INIT, + "core", + 0, /* m_doc */ + #if CYTHON_PEP489_MULTI_PHASE_INIT + 0, /* m_size */ + #else + -1, /* m_size */ + #endif + __pyx_methods /* m_methods */, + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_moduledef_slots, /* m_slots */ + #else + NULL, /* m_reload */ + #endif + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ +}; +#endif +#ifndef CYTHON_SMALL_CODE +#if defined(__clang__) + #define CYTHON_SMALL_CODE +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + #define CYTHON_SMALL_CODE __attribute__((cold)) +#else + #define CYTHON_SMALL_CODE +#endif +#endif + +static __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1}, + {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1}, + {&__pyx_kp_u_Index_out_of_range_for_FArray_wi, __pyx_k_Index_out_of_range_for_FArray_wi, sizeof(__pyx_k_Index_out_of_range_for_FArray_wi), 0, 1, 0, 0}, + {&__pyx_kp_u_Index_out_of_range_for_IArray_wi, __pyx_k_Index_out_of_range_for_IArray_wi, sizeof(__pyx_k_Index_out_of_range_for_IArray_wi), 0, 1, 0, 0}, + {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, + {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, + {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, + {&__pyx_kp_u_numpy_core_multiarray_failed_to, __pyx_k_numpy_core_multiarray_failed_to, sizeof(__pyx_k_numpy_core_multiarray_failed_to), 0, 1, 0, 0}, + {&__pyx_kp_u_numpy_core_umath_failed_to_impor, __pyx_k_numpy_core_umath_failed_to_impor, sizeof(__pyx_k_numpy_core_umath_failed_to_impor), 0, 1, 0, 0}, + {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {0, 0, 0, 0, 0, 0, 0} +}; +static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { + __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(0, 51, __pyx_L1_error) + __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(1, 945, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} + +static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":945 + * __pyx_import_array() + * except Exception: + * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< + * + * cdef inline int import_umath() except -1: + */ + __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_u_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple_)) __PYX_ERR(1, 945, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple_); + __Pyx_GIVEREF(__pyx_tuple_); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":951 + * _import_umath() + * except Exception: + * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< + * + * cdef inline int import_ufunc() except -1: + */ + __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(1, 951, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__2); + __Pyx_GIVEREF(__pyx_tuple__2); + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { + if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); + return 0; + __pyx_L1_error:; + return -1; +} + +static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ + +static int __Pyx_modinit_global_init_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); + /*--- Global init code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); + /*--- Variable export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_export_code(void) { + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); + /*--- Function export code ---*/ + if (__Pyx_ExportFunction("_IArray", (void (*)(void))__pyx_f_6squish_4core__IArray, "struct __pyx_t_6squish_4core_IArray (__pyx_t_6squish_4core_INT_T *, __pyx_t_6squish_4core_Pair)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("_FArray", (void (*)(void))__pyx_f_6squish_4core__FArray, "__pyx_t_6squish_4core_FArray (__pyx_t_6squish_4core_FLOAT_T *, __pyx_t_6squish_4core_Pair)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("_BitSet", (void (*)(void))__pyx_f_6squish_4core__BitSet, "__pyx_t_6squish_4core_BitSet (__pyx_t_6squish_4core_INT_T)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("_Vector2D", (void (*)(void))__pyx_f_6squish_4core__Vector2D, "__pyx_t_6squish_4core_Vector2D (__pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("_Matrix2x2", (void (*)(void))__pyx_f_6squish_4core__Matrix2x2, "__pyx_t_6squish_4core_Matrix2x2 (__pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_init_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); + /*--- Type init code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_type_import_code(void) { + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); + /*--- Type import code ---*/ + __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", + #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 + sizeof(PyTypeObject), + #else + sizeof(PyHeapTypeObject), + #endif + __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(2, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 200, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_ptype_5numpy_dtype = __Pyx_ImportType(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __Pyx_ImportType_CheckSize_Ignore); + if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(1, 200, __pyx_L1_error) + __pyx_ptype_5numpy_flatiter = __Pyx_ImportType(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __Pyx_ImportType_CheckSize_Ignore); + if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(1, 223, __pyx_L1_error) + __pyx_ptype_5numpy_broadcast = __Pyx_ImportType(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __Pyx_ImportType_CheckSize_Ignore); + if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(1, 227, __pyx_L1_error) + __pyx_ptype_5numpy_ndarray = __Pyx_ImportType(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __Pyx_ImportType_CheckSize_Ignore); + if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(1, 239, __pyx_L1_error) + __pyx_ptype_5numpy_generic = __Pyx_ImportType(__pyx_t_1, "numpy", "generic", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_generic) __PYX_ERR(1, 771, __pyx_L1_error) + __pyx_ptype_5numpy_number = __Pyx_ImportType(__pyx_t_1, "numpy", "number", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_number) __PYX_ERR(1, 773, __pyx_L1_error) + __pyx_ptype_5numpy_integer = __Pyx_ImportType(__pyx_t_1, "numpy", "integer", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_integer) __PYX_ERR(1, 775, __pyx_L1_error) + __pyx_ptype_5numpy_signedinteger = __Pyx_ImportType(__pyx_t_1, "numpy", "signedinteger", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_signedinteger) __PYX_ERR(1, 777, __pyx_L1_error) + __pyx_ptype_5numpy_unsignedinteger = __Pyx_ImportType(__pyx_t_1, "numpy", "unsignedinteger", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_unsignedinteger) __PYX_ERR(1, 779, __pyx_L1_error) + __pyx_ptype_5numpy_inexact = __Pyx_ImportType(__pyx_t_1, "numpy", "inexact", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_inexact) __PYX_ERR(1, 781, __pyx_L1_error) + __pyx_ptype_5numpy_floating = __Pyx_ImportType(__pyx_t_1, "numpy", "floating", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_floating) __PYX_ERR(1, 783, __pyx_L1_error) + __pyx_ptype_5numpy_complexfloating = __Pyx_ImportType(__pyx_t_1, "numpy", "complexfloating", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_complexfloating) __PYX_ERR(1, 785, __pyx_L1_error) + __pyx_ptype_5numpy_flexible = __Pyx_ImportType(__pyx_t_1, "numpy", "flexible", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_flexible) __PYX_ERR(1, 787, __pyx_L1_error) + __pyx_ptype_5numpy_character = __Pyx_ImportType(__pyx_t_1, "numpy", "character", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_character) __PYX_ERR(1, 789, __pyx_L1_error) + __pyx_ptype_5numpy_ufunc = __Pyx_ImportType(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __Pyx_ImportType_CheckSize_Ignore); + if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(1, 827, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_variable_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); + /*--- Variable import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); + /*--- Function import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + + +#ifndef CYTHON_NO_PYINIT_EXPORT +#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#elif PY_MAJOR_VERSION < 3 +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" void +#else +#define __Pyx_PyMODINIT_FUNC void +#endif +#else +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * +#else +#define __Pyx_PyMODINIT_FUNC PyObject * +#endif +#endif + + +#if PY_MAJOR_VERSION < 3 +__Pyx_PyMODINIT_FUNC initcore(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC initcore(void) +#else +__Pyx_PyMODINIT_FUNC PyInit_core(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_core(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { + #if PY_VERSION_HEX >= 0x030700A1 + static PY_INT64_T main_interpreter_id = -1; + PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); + if (main_interpreter_id == -1) { + main_interpreter_id = current_id; + return (unlikely(current_id == -1)) ? -1 : 0; + } else if (unlikely(main_interpreter_id != current_id)) + #else + static PyInterpreterState *main_interpreter = NULL; + PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; + if (!main_interpreter) { + main_interpreter = current_interpreter; + } else if (unlikely(main_interpreter != current_interpreter)) + #endif + { + PyErr_SetString( + PyExc_ImportError, + "Interpreter change detected - this module can only be loaded into one interpreter per process."); + return -1; + } + return 0; +} +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) { + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + if (__Pyx_check_single_interpreter()) + return NULL; + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; + return module; +bad: + Py_XDECREF(module); + return NULL; +} + + +static CYTHON_SMALL_CODE int __pyx_pymod_exec_core(PyObject *__pyx_pyinit_module) +#endif +#endif +{ + __pyx_t_6squish_4core_Vector2D *(*__pyx_t_1)(__pyx_t_6squish_4core_Vector2D *); + __pyx_t_6squish_4core_Vector2D *(*__pyx_t_2)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D *(*__pyx_t_3)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D *(*__pyx_t_4)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D *(*__pyx_t_5)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D *(*__pyx_t_6)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_Vector2D *(*__pyx_t_7)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_Vector2D *(*__pyx_t_8)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_Vector2D *(*__pyx_t_9)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_Vector2D (*__pyx_t_10)(__pyx_t_6squish_4core_Vector2D *); + __pyx_t_6squish_4core_Vector2D (*__pyx_t_11)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*__pyx_t_12)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*__pyx_t_13)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*__pyx_t_14)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*__pyx_t_15)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_Vector2D (*__pyx_t_16)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_Vector2D (*__pyx_t_17)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_Vector2D (*__pyx_t_18)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_Matrix2x2 *(*__pyx_t_19)(__pyx_t_6squish_4core_Matrix2x2 *); + __pyx_t_6squish_4core_Matrix2x2 *(*__pyx_t_20)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_Matrix2x2 *(*__pyx_t_21)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_Matrix2x2 *(*__pyx_t_22)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_Matrix2x2 *(*__pyx_t_23)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_Matrix2x2 *(*__pyx_t_24)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_Matrix2x2 *(*__pyx_t_25)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_Matrix2x2 *(*__pyx_t_26)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_Matrix2x2 *(*__pyx_t_27)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_Matrix2x2 (*__pyx_t_28)(__pyx_t_6squish_4core_Matrix2x2 *); + __pyx_t_6squish_4core_Matrix2x2 (*__pyx_t_29)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_Matrix2x2 (*__pyx_t_30)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_Matrix2x2 (*__pyx_t_31)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_Matrix2x2 (*__pyx_t_32)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_Matrix2x2 (*__pyx_t_33)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_Matrix2x2 (*__pyx_t_34)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_Matrix2x2 (*__pyx_t_35)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_Matrix2x2 (*__pyx_t_36)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); + PyObject *__pyx_t_37 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m) { + if (__pyx_m == __pyx_pyinit_module) return 0; + PyErr_SetString(PyExc_RuntimeError, "Module 'core' has already been imported. Re-initialisation is not supported."); + return -1; + } + #elif PY_MAJOR_VERSION >= 3 + if (__pyx_m) return __Pyx_NewRef(__pyx_m); + #endif + #if CYTHON_REFNANNY +__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); +if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); +} +#endif + __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_core(void)", 0); + if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pxy_PyFrame_Initialize_Offsets + __Pxy_PyFrame_Initialize_Offsets(); + #endif + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pyx_CyFunction_USED + if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_FusedFunction_USED + if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Generator_USED + if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_StopAsyncIteration_USED + if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + /*--- Library function declarations ---*/ + /*--- Threads initialization code ---*/ + #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + PyEval_InitThreads(); + #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_m = __pyx_pyinit_module; + Py_INCREF(__pyx_m); + #else + #if PY_MAJOR_VERSION < 3 + __pyx_m = Py_InitModule4("core", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + #else + __pyx_m = PyModule_Create(&__pyx_moduledef); + #endif + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_d); + __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_b); + __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_cython_runtime); + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + if (__pyx_module_is_main_squish__core) { + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + } + #if PY_MAJOR_VERSION >= 3 + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "squish.core")) { + if (unlikely(PyDict_SetItemString(modules, "squish.core", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #endif + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Global type/function init code ---*/ + (void)__Pyx_modinit_global_init_code(); + (void)__Pyx_modinit_variable_export_code(); + if (unlikely(__Pyx_modinit_function_export_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) + (void)__Pyx_modinit_type_init_code(); + if (unlikely(__Pyx_modinit_type_import_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) + (void)__Pyx_modinit_variable_import_code(); + (void)__Pyx_modinit_function_import_code(); + /*--- Execution code ---*/ + #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + + /* "squish/core.pyx":12 + * # not exceed this number. However, we assign a growth rate of 8 edges, + * # when dynamically allocating. + * cdef INT_T EDGE_ARR_SIZE = 32 # <<<<<<<<<<<<<< + * + * cdef VectorSelfOps VSO + */ + __pyx_v_6squish_4core_EDGE_ARR_SIZE = 32; + + /* "squish/core.pyx":20 + * + * VSO.neg, VSO.vadd, VSO.vsub, VSO.vmul, VSO.vdiv, VSO.sadd, VSO.ssub, VSO.smul, VSO.sdiv = \ + * v_neg_s, v_vadd_s, v_vsub_s, v_vmul_s, v_vdiv_s, v_sadd_s, v_ssub_s, v_smul_s, v_sdiv_s # <<<<<<<<<<<<<< + * VSO.matmul = v_matmul_s + * + */ + __pyx_t_1 = __pyx_f_6squish_4core_v_neg_s; + __pyx_t_2 = __pyx_f_6squish_4core_v_vadd_s; + __pyx_t_3 = __pyx_f_6squish_4core_v_vsub_s; + __pyx_t_4 = __pyx_f_6squish_4core_v_vmul_s; + __pyx_t_5 = __pyx_f_6squish_4core_v_vdiv_s; + __pyx_t_6 = __pyx_f_6squish_4core_v_sadd_s; + __pyx_t_7 = __pyx_f_6squish_4core_v_ssub_s; + __pyx_t_8 = __pyx_f_6squish_4core_v_smul_s; + __pyx_t_9 = __pyx_f_6squish_4core_v_sdiv_s; + + /* "squish/core.pyx":19 + * cdef MatrixCopyOps MCO + * + * VSO.neg, VSO.vadd, VSO.vsub, VSO.vmul, VSO.vdiv, VSO.sadd, VSO.ssub, VSO.smul, VSO.sdiv = \ # <<<<<<<<<<<<<< + * v_neg_s, v_vadd_s, v_vsub_s, v_vmul_s, v_vdiv_s, v_sadd_s, v_ssub_s, v_smul_s, v_sdiv_s + * VSO.matmul = v_matmul_s + */ + __pyx_v_6squish_4core_VSO.neg = __pyx_t_1; + __pyx_v_6squish_4core_VSO.vadd = __pyx_t_2; + __pyx_v_6squish_4core_VSO.vsub = __pyx_t_3; + __pyx_v_6squish_4core_VSO.vmul = __pyx_t_4; + __pyx_v_6squish_4core_VSO.vdiv = __pyx_t_5; + __pyx_v_6squish_4core_VSO.sadd = __pyx_t_6; + __pyx_v_6squish_4core_VSO.ssub = __pyx_t_7; + __pyx_v_6squish_4core_VSO.smul = __pyx_t_8; + __pyx_v_6squish_4core_VSO.sdiv = __pyx_t_9; + + /* "squish/core.pyx":21 + * VSO.neg, VSO.vadd, VSO.vsub, VSO.vmul, VSO.vdiv, VSO.sadd, VSO.ssub, VSO.smul, VSO.sdiv = \ + * v_neg_s, v_vadd_s, v_vsub_s, v_vmul_s, v_vdiv_s, v_sadd_s, v_ssub_s, v_smul_s, v_sdiv_s + * VSO.matmul = v_matmul_s # <<<<<<<<<<<<<< + * + * VCO.neg, VCO.vadd, VCO.vsub, VCO.vmul, VCO.vdiv, VCO.sadd, VCO.ssub, VCO.smul, VCO.sdiv = \ + */ + __pyx_v_6squish_4core_VSO.matmul = __pyx_f_6squish_4core_v_matmul_s; + + /* "squish/core.pyx":24 + * + * VCO.neg, VCO.vadd, VCO.vsub, VCO.vmul, VCO.vdiv, VCO.sadd, VCO.ssub, VCO.smul, VCO.sdiv = \ + * v_neg_c, v_vadd_c, v_vsub_c, v_vmul_c, v_vdiv_c, v_sadd_c, v_ssub_c, v_smul_c, v_sdiv_c # <<<<<<<<<<<<<< + * VCO.matmul = v_matmul_c + * + */ + __pyx_t_10 = __pyx_f_6squish_4core_v_neg_c; + __pyx_t_11 = __pyx_f_6squish_4core_v_vadd_c; + __pyx_t_12 = __pyx_f_6squish_4core_v_vsub_c; + __pyx_t_13 = __pyx_f_6squish_4core_v_vmul_c; + __pyx_t_14 = __pyx_f_6squish_4core_v_vdiv_c; + __pyx_t_15 = __pyx_f_6squish_4core_v_sadd_c; + __pyx_t_16 = __pyx_f_6squish_4core_v_ssub_c; + __pyx_t_17 = __pyx_f_6squish_4core_v_smul_c; + __pyx_t_18 = __pyx_f_6squish_4core_v_sdiv_c; + + /* "squish/core.pyx":23 + * VSO.matmul = v_matmul_s + * + * VCO.neg, VCO.vadd, VCO.vsub, VCO.vmul, VCO.vdiv, VCO.sadd, VCO.ssub, VCO.smul, VCO.sdiv = \ # <<<<<<<<<<<<<< + * v_neg_c, v_vadd_c, v_vsub_c, v_vmul_c, v_vdiv_c, v_sadd_c, v_ssub_c, v_smul_c, v_sdiv_c + * VCO.matmul = v_matmul_c + */ + __pyx_v_6squish_4core_VCO.neg = __pyx_t_10; + __pyx_v_6squish_4core_VCO.vadd = __pyx_t_11; + __pyx_v_6squish_4core_VCO.vsub = __pyx_t_12; + __pyx_v_6squish_4core_VCO.vmul = __pyx_t_13; + __pyx_v_6squish_4core_VCO.vdiv = __pyx_t_14; + __pyx_v_6squish_4core_VCO.sadd = __pyx_t_15; + __pyx_v_6squish_4core_VCO.ssub = __pyx_t_16; + __pyx_v_6squish_4core_VCO.smul = __pyx_t_17; + __pyx_v_6squish_4core_VCO.sdiv = __pyx_t_18; + + /* "squish/core.pyx":25 + * VCO.neg, VCO.vadd, VCO.vsub, VCO.vmul, VCO.vdiv, VCO.sadd, VCO.ssub, VCO.smul, VCO.sdiv = \ + * v_neg_c, v_vadd_c, v_vsub_c, v_vmul_c, v_vdiv_c, v_sadd_c, v_ssub_c, v_smul_c, v_sdiv_c + * VCO.matmul = v_matmul_c # <<<<<<<<<<<<<< + * + * MSO.neg, MSO.madd, MSO.msub, MSO.mmul, MSO.mdiv, MSO.sadd, MSO.ssub, MSO.smul, MSO.sdiv = \ + */ + __pyx_v_6squish_4core_VCO.matmul = __pyx_f_6squish_4core_v_matmul_c; + + /* "squish/core.pyx":28 + * + * MSO.neg, MSO.madd, MSO.msub, MSO.mmul, MSO.mdiv, MSO.sadd, MSO.ssub, MSO.smul, MSO.sdiv = \ + * m_neg_s, m_madd_s, m_msub_s, m_mmul_s, m_mdiv_s, m_sadd_s, m_ssub_s, m_smul_s, m_sdiv_s # <<<<<<<<<<<<<< + * MSO.matmul = m_matmul_s + * + */ + __pyx_t_19 = __pyx_f_6squish_4core_m_neg_s; + __pyx_t_20 = __pyx_f_6squish_4core_m_madd_s; + __pyx_t_21 = __pyx_f_6squish_4core_m_msub_s; + __pyx_t_22 = __pyx_f_6squish_4core_m_mmul_s; + __pyx_t_23 = __pyx_f_6squish_4core_m_mdiv_s; + __pyx_t_24 = __pyx_f_6squish_4core_m_sadd_s; + __pyx_t_25 = __pyx_f_6squish_4core_m_ssub_s; + __pyx_t_26 = __pyx_f_6squish_4core_m_smul_s; + __pyx_t_27 = __pyx_f_6squish_4core_m_sdiv_s; + + /* "squish/core.pyx":27 + * VCO.matmul = v_matmul_c + * + * MSO.neg, MSO.madd, MSO.msub, MSO.mmul, MSO.mdiv, MSO.sadd, MSO.ssub, MSO.smul, MSO.sdiv = \ # <<<<<<<<<<<<<< + * m_neg_s, m_madd_s, m_msub_s, m_mmul_s, m_mdiv_s, m_sadd_s, m_ssub_s, m_smul_s, m_sdiv_s + * MSO.matmul = m_matmul_s + */ + __pyx_v_6squish_4core_MSO.neg = __pyx_t_19; + __pyx_v_6squish_4core_MSO.madd = __pyx_t_20; + __pyx_v_6squish_4core_MSO.msub = __pyx_t_21; + __pyx_v_6squish_4core_MSO.mmul = __pyx_t_22; + __pyx_v_6squish_4core_MSO.mdiv = __pyx_t_23; + __pyx_v_6squish_4core_MSO.sadd = __pyx_t_24; + __pyx_v_6squish_4core_MSO.ssub = __pyx_t_25; + __pyx_v_6squish_4core_MSO.smul = __pyx_t_26; + __pyx_v_6squish_4core_MSO.sdiv = __pyx_t_27; + + /* "squish/core.pyx":29 + * MSO.neg, MSO.madd, MSO.msub, MSO.mmul, MSO.mdiv, MSO.sadd, MSO.ssub, MSO.smul, MSO.sdiv = \ + * m_neg_s, m_madd_s, m_msub_s, m_mmul_s, m_mdiv_s, m_sadd_s, m_ssub_s, m_smul_s, m_sdiv_s + * MSO.matmul = m_matmul_s # <<<<<<<<<<<<<< + * + * MCO.neg, MCO.madd, MCO.msub, MCO.mmul, MCO.mdiv, MCO.sadd, MCO.ssub, MCO.smul, MCO.sdiv = \ + */ + __pyx_v_6squish_4core_MSO.matmul = __pyx_f_6squish_4core_m_matmul_s; + + /* "squish/core.pyx":32 + * + * MCO.neg, MCO.madd, MCO.msub, MCO.mmul, MCO.mdiv, MCO.sadd, MCO.ssub, MCO.smul, MCO.sdiv = \ + * m_neg_c, m_madd_c, m_msub_c, m_mmul_c, m_mdiv_c, m_sadd_c, m_ssub_c, m_smul_c, m_sdiv_c # <<<<<<<<<<<<<< + * MCO.matmul = m_matmul_c + * + */ + __pyx_t_28 = __pyx_f_6squish_4core_m_neg_c; + __pyx_t_29 = __pyx_f_6squish_4core_m_madd_c; + __pyx_t_30 = __pyx_f_6squish_4core_m_msub_c; + __pyx_t_31 = __pyx_f_6squish_4core_m_mmul_c; + __pyx_t_32 = __pyx_f_6squish_4core_m_mdiv_c; + __pyx_t_33 = __pyx_f_6squish_4core_m_sadd_c; + __pyx_t_34 = __pyx_f_6squish_4core_m_ssub_c; + __pyx_t_35 = __pyx_f_6squish_4core_m_smul_c; + __pyx_t_36 = __pyx_f_6squish_4core_m_sdiv_c; + + /* "squish/core.pyx":31 + * MSO.matmul = m_matmul_s + * + * MCO.neg, MCO.madd, MCO.msub, MCO.mmul, MCO.mdiv, MCO.sadd, MCO.ssub, MCO.smul, MCO.sdiv = \ # <<<<<<<<<<<<<< + * m_neg_c, m_madd_c, m_msub_c, m_mmul_c, m_mdiv_c, m_sadd_c, m_ssub_c, m_smul_c, m_sdiv_c + * MCO.matmul = m_matmul_c + */ + __pyx_v_6squish_4core_MCO.neg = __pyx_t_28; + __pyx_v_6squish_4core_MCO.madd = __pyx_t_29; + __pyx_v_6squish_4core_MCO.msub = __pyx_t_30; + __pyx_v_6squish_4core_MCO.mmul = __pyx_t_31; + __pyx_v_6squish_4core_MCO.mdiv = __pyx_t_32; + __pyx_v_6squish_4core_MCO.sadd = __pyx_t_33; + __pyx_v_6squish_4core_MCO.ssub = __pyx_t_34; + __pyx_v_6squish_4core_MCO.smul = __pyx_t_35; + __pyx_v_6squish_4core_MCO.sdiv = __pyx_t_36; + + /* "squish/core.pyx":33 + * MCO.neg, MCO.madd, MCO.msub, MCO.mmul, MCO.mdiv, MCO.sadd, MCO.ssub, MCO.smul, MCO.sdiv = \ + * m_neg_c, m_madd_c, m_msub_c, m_mmul_c, m_mdiv_c, m_sadd_c, m_ssub_c, m_smul_c, m_sdiv_c + * MCO.matmul = m_matmul_c # <<<<<<<<<<<<<< + * + * """ + */ + __pyx_v_6squish_4core_MCO.matmul = __pyx_f_6squish_4core_m_matmul_c; + + /* "squish/core.pyx":1 + * from libc.stdlib cimport calloc, free # <<<<<<<<<<<<<< + * from libc.math cimport sqrt + * from squish.core cimport INT_T, FLOAT_T, Pair, \ + */ + __pyx_t_37 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_37); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_37) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1014 + * + * + * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<< + * """ + * returns the unit part of the dtype for a numpy datetime64 object. + */ + + /*--- Wrapped vars code ---*/ + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_37); + if (__pyx_m) { + if (__pyx_d) { + __Pyx_AddTraceback("init squish.core", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + Py_CLEAR(__pyx_m); + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init squish.core"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if CYTHON_PEP489_MULTI_PHASE_INIT + return (__pyx_m != NULL) ? 0 : -1; + #elif PY_MAJOR_VERSION >= 3 + return __pyx_m; + #else + return; + #endif +} + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule(modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, "RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* PyObjectGetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#endif + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); + if (unlikely(!result)) { + PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 + "name '%U' is not defined", name); +#else + "name '%.200s' is not defined", PyString_AS_STRING(name)); +#endif + } + return result; +} + +/* PyCFunctionFastCall */ +#if CYTHON_FAST_PYCCALL +static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { + PyCFunctionObject *func = (PyCFunctionObject*)func_obj; + PyCFunction meth = PyCFunction_GET_FUNCTION(func); + PyObject *self = PyCFunction_GET_SELF(func); + int flags = PyCFunction_GET_FLAGS(func); + assert(PyCFunction_Check(func)); + assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))); + assert(nargs >= 0); + assert(nargs == 0 || args != NULL); + /* _PyCFunction_FastCallDict() must not be called with an exception set, + because it may clear it (directly or indirectly) and so the + caller loses its exception */ + assert(!PyErr_Occurred()); + if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { + return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL); + } else { + return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs); + } +} +#endif + +/* PyFunctionFastCall */ +#if CYTHON_FAST_PYCALL +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = __Pyx_PyFrame_GetLocalsplus(f); + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +#if 1 || PY_VERSION_HEX < 0x030600B1 +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { + return NULL; + } + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif +#endif + +/* PyObjectCall */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = Py_TYPE(func)->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallMethO */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = PyCFunction_GET_FUNCTION(func); + self = PyCFunction_GET_SELF(func); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallOneArg */ +#if CYTHON_COMPILING_IN_CPYTHON +static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_New(1); + if (unlikely(!args)) return NULL; + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 0, arg); + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { +#if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCall(func, &arg, 1); + } +#endif + if (likely(PyCFunction_Check(func))) { + if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { + return __Pyx_PyObject_CallMethO(func, arg); +#if CYTHON_FAST_PYCCALL + } else if (__Pyx_PyFastCFunction_Check(func)) { + return __Pyx_PyCFunction_FastCall(func, &arg, 1); +#endif + } + } + return __Pyx__PyObject_CallOneArg(func, arg); +} +#else +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_Pack(1, arg); + if (unlikely(!args)) return NULL; + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +#endif + +/* PyErrFetchRestore */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +} +#endif + +/* RaiseException */ +#if PY_MAJOR_VERSION < 3 +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, + CYTHON_UNUSED PyObject *cause) { + __Pyx_PyThreadState_declare + Py_XINCREF(type); + if (!value || value == Py_None) + value = NULL; + else + Py_INCREF(value); + if (!tb || tb == Py_None) + tb = NULL; + else { + Py_INCREF(tb); + if (!PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto raise_error; + } + } + if (PyType_Check(type)) { +#if CYTHON_COMPILING_IN_PYPY + if (!value) { + Py_INCREF(Py_None); + value = Py_None; + } +#endif + PyErr_NormalizeException(&type, &value, &tb); + } else { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto raise_error; + } + value = type; + type = (PyObject*) Py_TYPE(type); + Py_INCREF(type); + if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto raise_error; + } + } + __Pyx_PyThreadState_assign + __Pyx_ErrRestore(type, value, tb); + return; +raise_error: + Py_XDECREF(value); + Py_XDECREF(type); + Py_XDECREF(tb); + return; +} +#else +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + PyObject* owned_instance = NULL; + if (tb == Py_None) { + tb = 0; + } else if (tb && !PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto bad; + } + if (value == Py_None) + value = 0; + if (PyExceptionInstance_Check(type)) { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto bad; + } + value = type; + type = (PyObject*) Py_TYPE(value); + } else if (PyExceptionClass_Check(type)) { + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; + } + } + } + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } + } + } else { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto bad; + } + if (cause) { + PyObject *fixed_cause; + if (cause == Py_None) { + fixed_cause = NULL; + } else if (PyExceptionClass_Check(cause)) { + fixed_cause = PyObject_CallObject(cause, NULL); + if (fixed_cause == NULL) + goto bad; + } else if (PyExceptionInstance_Check(cause)) { + fixed_cause = cause; + Py_INCREF(fixed_cause); + } else { + PyErr_SetString(PyExc_TypeError, + "exception causes must derive from " + "BaseException"); + goto bad; + } + PyException_SetCause(value, fixed_cause); + } + PyErr_SetObject(type, value); + if (tb) { +#if CYTHON_COMPILING_IN_PYPY + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#else + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject* tmp_tb = tstate->curexc_traceback; + if (tb != tmp_tb) { + Py_INCREF(tb); + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_tb); + } +#endif + } +bad: + Py_XDECREF(owned_instance); + return; +} +#endif + +/* WriteUnraisableException */ +static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, + CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, + int full_traceback, CYTHON_UNUSED int nogil) { + PyObject *old_exc, *old_val, *old_tb; + PyObject *ctx; + __Pyx_PyThreadState_declare +#ifdef WITH_THREAD + PyGILState_STATE state; + if (nogil) + state = PyGILState_Ensure(); +#ifdef _MSC_VER + else state = (PyGILState_STATE)-1; +#endif +#endif + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); + if (full_traceback) { + Py_XINCREF(old_exc); + Py_XINCREF(old_val); + Py_XINCREF(old_tb); + __Pyx_ErrRestore(old_exc, old_val, old_tb); + PyErr_PrintEx(1); + } + #if PY_MAJOR_VERSION < 3 + ctx = PyString_FromString(name); + #else + ctx = PyUnicode_FromString(name); + #endif + __Pyx_ErrRestore(old_exc, old_val, old_tb); + if (!ctx) { + PyErr_WriteUnraisable(Py_None); + } else { + PyErr_WriteUnraisable(ctx); + Py_DECREF(ctx); + } +#ifdef WITH_THREAD + if (nogil) + PyGILState_Release(state); +#endif +} + +/* GetTopmostException */ +#if CYTHON_USE_EXC_INFO_STACK +static _PyErr_StackItem * +__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) +{ + _PyErr_StackItem *exc_info = tstate->exc_info; + while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) && + exc_info->previous_item != NULL) + { + exc_info = exc_info->previous_item; + } + return exc_info; +} +#endif + +/* SaveResetException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + *type = exc_info->exc_type; + *value = exc_info->exc_value; + *tb = exc_info->exc_traceback; + #else + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + #endif + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = type; + exc_info->exc_value = value; + exc_info->exc_traceback = tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +} +#endif + +/* PyErrExceptionMatches */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; icurexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; + if (unlikely(PyTuple_Check(err))) + return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); +} +#endif + +/* GetException */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) +#endif +{ + PyObject *local_type, *local_value, *local_tb; +#if CYTHON_FAST_THREAD_STATE + PyObject *tmp_type, *tmp_value, *tmp_tb; + local_type = tstate->curexc_type; + local_value = tstate->curexc_value; + local_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#else + PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif + PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_FAST_THREAD_STATE + if (unlikely(tstate->curexc_type)) +#else + if (unlikely(PyErr_Occurred())) +#endif + goto bad; + #if PY_MAJOR_VERSION >= 3 + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } + #endif + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); + *type = local_type; + *value = local_value; + *tb = local_tb; +#if CYTHON_FAST_THREAD_STATE + #if CYTHON_USE_EXC_INFO_STACK + { + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = local_type; + exc_info->exc_value = local_value; + exc_info->exc_traceback = local_tb; + } + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = local_type; + tstate->exc_value = local_value; + tstate->exc_traceback = local_tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif + return 0; +bad: + *type = 0; + *value = 0; + *tb = 0; + Py_XDECREF(local_type); + Py_XDECREF(local_value); + Py_XDECREF(local_tb); + return -1; +} + +/* TypeImport */ +#ifndef __PYX_HAVE_RT_ImportType +#define __PYX_HAVE_RT_ImportType +static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name, + size_t size, enum __Pyx_ImportType_CheckSize check_size) +{ + PyObject *result = 0; + char warning[200]; + Py_ssize_t basicsize; +#ifdef Py_LIMITED_API + PyObject *py_basicsize; +#endif + result = PyObject_GetAttrString(module, class_name); + if (!result) + goto bad; + if (!PyType_Check(result)) { + PyErr_Format(PyExc_TypeError, + "%.200s.%.200s is not a type object", + module_name, class_name); + goto bad; + } +#ifndef Py_LIMITED_API + basicsize = ((PyTypeObject *)result)->tp_basicsize; +#else + py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); + if (!py_basicsize) + goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) + goto bad; +#endif + if ((size_t)basicsize < size) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize); + goto bad; + } + if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize); + goto bad; + } + else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) { + PyOS_snprintf(warning, sizeof(warning), + "%s.%s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize); + if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; + } + return (PyTypeObject *)result; +bad: + Py_XDECREF(result); + return NULL; +} +#endif + +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { + PyObject **dictptr = NULL; + Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; + if (offset) { +#if CYTHON_COMPILING_IN_CPYTHON + dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); +#else + dictptr = _PyObject_GetDictPtr(obj); +#endif + } + return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; +} +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) + return 0; + return obj_dict_version == __Pyx_get_object_dict_version(obj); +} +#endif + +/* CLineInTraceback */ +#ifndef CYTHON_CLINE_IN_TRACEBACK +static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) { + PyObject *use_cline; + PyObject *ptype, *pvalue, *ptraceback; +#if CYTHON_COMPILING_IN_CPYTHON + PyObject **cython_runtime_dict; +#endif + if (unlikely(!__pyx_cython_runtime)) { + return c_line; + } + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); +#if CYTHON_COMPILING_IN_CPYTHON + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + __PYX_PY_DICT_LOOKUP_IF_MODIFIED( + use_cline, *cython_runtime_dict, + __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) + } else +#endif + { + PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_DECREF(use_cline_obj); + } else { + PyErr_Clear(); + use_cline = NULL; + } + } + if (!use_cline) { + c_line = 0; + PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + +/* CodeObjectCache */ +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static PyCodeObject *__pyx_find_code_object(int code_line) { + PyCodeObject* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { + return NULL; + } + code_object = __pyx_code_cache.entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = 64; + __pyx_code_cache.count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { + PyCodeObject* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_DECREF(tmp); + return; + } + if (__pyx_code_cache.count == __pyx_code_cache.max_count) { + int new_max = __pyx_code_cache.max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = new_max; + } + for (i=__pyx_code_cache.count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + __pyx_code_cache.count++; + Py_INCREF(code_object); +} + +/* AddTraceback */ +#include "compile.h" +#include "frameobject.h" +#include "traceback.h" +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyObject *py_srcfile = 0; + PyObject *py_funcname = 0; + #if PY_MAJOR_VERSION < 3 + py_srcfile = PyString_FromString(filename); + #else + py_srcfile = PyUnicode_FromString(filename); + #endif + if (!py_srcfile) goto bad; + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + #else + py_funcname = PyUnicode_FromString(funcname); + #endif + } + if (!py_funcname) goto bad; + py_code = __Pyx_PyCode_New( + 0, + 0, + 0, + 0, + 0, + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + Py_DECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_srcfile); + Py_XDECREF(py_funcname); + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) goto bad; + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} + +/* ToPyCTupleUtility */ +static PyObject* __pyx_convert__to_py___pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc(__pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc value) { + PyObject* item = NULL; + PyObject* result = PyTuple_New(2); + if (!result) goto bad; + item = __Pyx_PyInt_From_npy_int64(value.f0); + if (!item) goto bad; + PyTuple_SET_ITEM(result, 0, item); + item = __Pyx_PyInt_From_npy_int64(value.f1); + if (!item) goto bad; + PyTuple_SET_ITEM(result, 1, item); + return result; +bad: + Py_XDECREF(item); + Py_XDECREF(result); + return NULL; +} + +/* Declarations */ +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { + return ::std::complex< float >(x, y); + } + #else + static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { + return x + y*(__pyx_t_float_complex)_Complex_I; + } + #endif +#else + static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { + __pyx_t_float_complex z; + z.real = x; + z.imag = y; + return z; + } +#endif + +/* Arithmetic */ +#if CYTHON_CCOMPLEX +#else + static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + return (a.real == b.real) && (a.imag == b.imag); + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + z.real = a.real + b.real; + z.imag = a.imag + b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + z.real = a.real - b.real; + z.imag = a.imag - b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + z.real = a.real * b.real - a.imag * b.imag; + z.imag = a.real * b.imag + a.imag * b.real; + return z; + } + #if 1 + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + if (b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); + } else if (fabsf(b.real) >= fabsf(b.imag)) { + if (b.real == 0 && b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag); + } else { + float r = b.imag / b.real; + float s = (float)(1.0) / (b.real + b.imag * r); + return __pyx_t_float_complex_from_parts( + (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); + } + } else { + float r = b.real / b.imag; + float s = (float)(1.0) / (b.imag + b.real * r); + return __pyx_t_float_complex_from_parts( + (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); + } + } + #else + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + if (b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); + } else { + float denom = b.real * b.real + b.imag * b.imag; + return __pyx_t_float_complex_from_parts( + (a.real * b.real + a.imag * b.imag) / denom, + (a.imag * b.real - a.real * b.imag) / denom); + } + } + #endif + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) { + __pyx_t_float_complex z; + z.real = -a.real; + z.imag = -a.imag; + return z; + } + static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) { + return (a.real == 0) && (a.imag == 0); + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) { + __pyx_t_float_complex z; + z.real = a.real; + z.imag = -a.imag; + return z; + } + #if 1 + static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) { + #if !defined(HAVE_HYPOT) || defined(_MSC_VER) + return sqrtf(z.real*z.real + z.imag*z.imag); + #else + return hypotf(z.real, z.imag); + #endif + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + float r, lnr, theta, z_r, z_theta; + if (b.imag == 0 && b.real == (int)b.real) { + if (b.real < 0) { + float denom = a.real * a.real + a.imag * a.imag; + a.real = a.real / denom; + a.imag = -a.imag / denom; + b.real = -b.real; + } + switch ((int)b.real) { + case 0: + z.real = 1; + z.imag = 0; + return z; + case 1: + return a; + case 2: + return __Pyx_c_prod_float(a, a); + case 3: + z = __Pyx_c_prod_float(a, a); + return __Pyx_c_prod_float(z, a); + case 4: + z = __Pyx_c_prod_float(a, a); + return __Pyx_c_prod_float(z, z); + } + } + if (a.imag == 0) { + if (a.real == 0) { + return a; + } else if (b.imag == 0) { + z.real = powf(a.real, b.real); + z.imag = 0; + return z; + } else if (a.real > 0) { + r = a.real; + theta = 0; + } else { + r = -a.real; + theta = atan2f(0.0, -1.0); + } + } else { + r = __Pyx_c_abs_float(a); + theta = atan2f(a.imag, a.real); + } + lnr = logf(r); + z_r = expf(lnr * b.real - theta * b.imag); + z_theta = theta * b.real + lnr * b.imag; + z.real = z_r * cosf(z_theta); + z.imag = z_r * sinf(z_theta); + return z; + } + #endif +#endif + +/* Declarations */ +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { + return ::std::complex< double >(x, y); + } + #else + static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { + return x + y*(__pyx_t_double_complex)_Complex_I; + } + #endif +#else + static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { + __pyx_t_double_complex z; + z.real = x; + z.imag = y; + return z; + } +#endif + +/* Arithmetic */ +#if CYTHON_CCOMPLEX +#else + static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + return (a.real == b.real) && (a.imag == b.imag); + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + z.real = a.real + b.real; + z.imag = a.imag + b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + z.real = a.real - b.real; + z.imag = a.imag - b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + z.real = a.real * b.real - a.imag * b.imag; + z.imag = a.real * b.imag + a.imag * b.real; + return z; + } + #if 1 + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + if (b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); + } else if (fabs(b.real) >= fabs(b.imag)) { + if (b.real == 0 && b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag); + } else { + double r = b.imag / b.real; + double s = (double)(1.0) / (b.real + b.imag * r); + return __pyx_t_double_complex_from_parts( + (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); + } + } else { + double r = b.real / b.imag; + double s = (double)(1.0) / (b.imag + b.real * r); + return __pyx_t_double_complex_from_parts( + (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); + } + } + #else + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + if (b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); + } else { + double denom = b.real * b.real + b.imag * b.imag; + return __pyx_t_double_complex_from_parts( + (a.real * b.real + a.imag * b.imag) / denom, + (a.imag * b.real - a.real * b.imag) / denom); + } + } + #endif + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) { + __pyx_t_double_complex z; + z.real = -a.real; + z.imag = -a.imag; + return z; + } + static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) { + return (a.real == 0) && (a.imag == 0); + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) { + __pyx_t_double_complex z; + z.real = a.real; + z.imag = -a.imag; + return z; + } + #if 1 + static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) { + #if !defined(HAVE_HYPOT) || defined(_MSC_VER) + return sqrt(z.real*z.real + z.imag*z.imag); + #else + return hypot(z.real, z.imag); + #endif + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + double r, lnr, theta, z_r, z_theta; + if (b.imag == 0 && b.real == (int)b.real) { + if (b.real < 0) { + double denom = a.real * a.real + a.imag * a.imag; + a.real = a.real / denom; + a.imag = -a.imag / denom; + b.real = -b.real; + } + switch ((int)b.real) { + case 0: + z.real = 1; + z.imag = 0; + return z; + case 1: + return a; + case 2: + return __Pyx_c_prod_double(a, a); + case 3: + z = __Pyx_c_prod_double(a, a); + return __Pyx_c_prod_double(z, a); + case 4: + z = __Pyx_c_prod_double(a, a); + return __Pyx_c_prod_double(z, z); + } + } + if (a.imag == 0) { + if (a.real == 0) { + return a; + } else if (b.imag == 0) { + z.real = pow(a.real, b.real); + z.imag = 0; + return z; + } else if (a.real > 0) { + r = a.real; + theta = 0; + } else { + r = -a.real; + theta = atan2(0.0, -1.0); + } + } else { + r = __Pyx_c_abs_double(a); + theta = atan2(a.imag, a.real); + } + lnr = log(r); + z_r = exp(lnr * b.real - theta * b.imag); + z_theta = theta * b.real + lnr * b.imag; + z.real = z_r * cos(z_theta); + z.imag = z_r * sin(z_theta); + return z; + } + #endif +#endif + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int64(npy_int64 value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const npy_int64 neg_one = (npy_int64) -1, const_zero = (npy_int64) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(npy_int64) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(npy_int64) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(npy_int64) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(npy_int64) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(npy_int64) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(npy_int64), + little, !is_unsigned); + } +} + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); + } +} + +/* CIntFromPyVerify */ +#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntFromPy */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(long) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (long) 0; + case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) + case 2: + if (8 * sizeof(long) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(long) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(long) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(long) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (long) 0; + case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) + case -2: + if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(long) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(long) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(long) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } +#endif + if (sizeof(long) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + long val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (long) -1; + } + } else { + long val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (long) -1; + val = __Pyx_PyInt_As_long(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* CIntFromPy */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(int) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (int) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (int) 0; + case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) + case 2: + if (8 * sizeof(int) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(int) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(int) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(int) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (int) 0; + case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) + case -2: + if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(int) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(int) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(int) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } +#endif + if (sizeof(int) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + int val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (int) -1; + } + } else { + int val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (int) -1; + val = __Pyx_PyInt_As_int(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* FastTypeChecks */ +#if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = a->tp_base; + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +#if PY_MAJOR_VERSION == 2 +static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { + PyObject *exception, *value, *tb; + int res; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&exception, &value, &tb); + res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + if (!res) { + res = PyObject_IsSubclass(err, exc_type2); + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + } + __Pyx_ErrRestore(exception, value, tb); + return res; +} +#else +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; + if (!res) { + res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } + return res; +} +#endif +static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + assert(PyExceptionClass_Check(exc_type)); + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x02070000 + cobj = PyCapsule_New(tmp.p, sig, 0); +#else + cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0); +#endif + if (!cobj) + goto bad; + if (PyDict_SetItemString(d, name, cobj) < 0) + goto bad; + Py_DECREF(cobj); + Py_DECREF(d); + return 0; +bad: + Py_XDECREF(cobj); + Py_XDECREF(d); + return -1; +} + +/* InitStrings */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + while (t->p) { + #if PY_MAJOR_VERSION < 3 + if (t->is_unicode) { + *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); + } else if (t->intern) { + *t->p = PyString_InternFromString(t->s); + } else { + *t->p = PyString_FromStringAndSize(t->s, t->n - 1); + } + #else + if (t->is_unicode | t->is_str) { + if (t->intern) { + *t->p = PyUnicode_InternFromString(t->s); + } else if (t->encoding) { + *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); + } else { + *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); + } + } else { + *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); + } + #endif + if (!*t->p) + return -1; + if (PyObject_Hash(*t->p) == -1) + return -1; + ++t; + } + return 0; +} + +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#if !CYTHON_PEP393_ENABLED +static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; + } + } + } +#endif + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +} +#else +static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (likely(PyUnicode_IS_ASCII(o))) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +} +#endif +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { + return __Pyx_PyUnicode_AsStringAndSize(o, length); + } else +#endif +#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) + if (PyByteArray_Check(o)) { + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); + } else +#endif + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { + int retval; + if (unlikely(!x)) return -1; + retval = __Pyx_PyObject_IsTrue(x); + Py_DECREF(x); + return retval; +} +static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { +#if PY_MAJOR_VERSION >= 3 + if (PyLong_Check(result)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "__int__ returned non-int (type %.200s). " + "The ability to return an instance of a strict subclass of int " + "is deprecated, and may be removed in a future version of Python.", + Py_TYPE(result)->tp_name)) { + Py_DECREF(result); + return NULL; + } + return result; + } +#endif + PyErr_Format(PyExc_TypeError, + "__%.4s__ returned non-%.4s (type %.200s)", + type_name, type_name, Py_TYPE(result)->tp_name); + Py_DECREF(result); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + const char *name = NULL; + PyObject *res = NULL; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x) || PyLong_Check(x))) +#else + if (likely(PyLong_Check(x))) +#endif + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + #if PY_MAJOR_VERSION < 3 + if (m && m->nb_int) { + name = "int"; + res = m->nb_int(x); + } + else if (m && m->nb_long) { + name = "long"; + res = m->nb_long(x); + } + #else + if (likely(m && m->nb_int)) { + name = "int"; + res = m->nb_int(x); + } + #endif +#else + if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { + res = PyNumber_Int(x); + } +#endif + if (likely(res)) { +#if PY_MAJOR_VERSION < 3 + if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { +#else + if (unlikely(!PyLong_CheckExact(res))) { +#endif + return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(b))) { + if (sizeof(Py_ssize_t) >= sizeof(long)) + return PyInt_AS_LONG(b); + else + return PyInt_AsSsize_t(b); + } +#endif + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)b)->ob_digit; + const Py_ssize_t size = Py_SIZE(b); + if (likely(__Pyx_sst_abs(size) <= 1)) { + ival = likely(size) ? digits[0] : 0; + if (size == -1) ival = -ival; + return ival; + } else { + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyInt_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { + return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); +} +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { + return PyInt_FromSize_t(ival); +} + + +#endif /* Py_PYTHON_H */ diff --git a/squish/core.pxd b/squish/core.pxd new file mode 100644 index 0000000..2385ba1 --- /dev/null +++ b/squish/core.pxd @@ -0,0 +1,135 @@ +cimport numpy as np + +# Cython Types. +ctypedef np.int64_t INT_T +ctypedef np.float64_t FLOAT_T + +ctypedef (INT_T, INT_T) Pair + +# Integer Array psuedo-class for continguous arrays. +cdef struct IArray: + INT_T* arr + Pair shape + + INT_T (*get)(IArray*, Pair) nogil + void (*set)(IArray*, Pair, INT_T) nogil + +# Float Array psuedo-class for continguous arrays. +ctypedef struct FArray: + FLOAT_T* arr + Pair shape + + FLOAT_T (*get)(FArray*, Pair) nogil + void (*set)(FArray*, Pair, FLOAT_T) nogil + +# Simple append-only dynamic integer array. +# ctypedef struct IList: +# INT_T* data +# INT_T size, length + +# void (*append)(IList*, INT_T) nogil +# void (*free)(IList*) nogil + +# Uses an array of bits to determine if value in set. +ctypedef struct BitSet: + INT_T* bits + + bint (*add)(BitSet*, INT_T) nogil + void (*free)(BitSet*) nogil + +# Psuedo-operator definitions. +ctypedef Vector2D* (*VectorSelfVecOp)(Vector2D*, Vector2D) nogil +ctypedef Vector2D (*VectorCopyVecOp)(Vector2D*, Vector2D) nogil +ctypedef Vector2D* (*VectorSelfSclOp)(Vector2D*, FLOAT_T) nogil +ctypedef Vector2D (*VectorCopySclOp)(Vector2D*, FLOAT_T) nogil + +ctypedef Matrix2x2* (*MatrixSelfMatOp)(Matrix2x2*, Matrix2x2) nogil +ctypedef Matrix2x2 (*MatrixCopyMatOp)(Matrix2x2*, Matrix2x2) nogil +ctypedef Matrix2x2* (*MatrixSelfSclOp)(Matrix2x2*, FLOAT_T) nogil +ctypedef Matrix2x2 (*MatrixCopySclOp)(Matrix2x2*, FLOAT_T) nogil + + +ctypedef struct VectorSelfOps: + Vector2D* (*neg)(Vector2D*) nogil + + VectorSelfVecOp vadd + VectorSelfVecOp vsub + VectorSelfVecOp vmul + VectorSelfVecOp vdiv + Vector2D* (*matmul)(Vector2D*, Matrix2x2) nogil + + VectorSelfSclOp sadd + VectorSelfSclOp ssub + VectorSelfSclOp smul + VectorSelfSclOp sdiv + + +ctypedef struct VectorCopyOps: + Vector2D (*neg)(Vector2D*) nogil + + VectorCopyVecOp vadd + VectorCopyVecOp vsub + VectorCopyVecOp vmul + VectorCopyVecOp vdiv + Vector2D (*matmul)(Vector2D*, Matrix2x2) nogil + + VectorCopySclOp sadd + VectorCopySclOp ssub + VectorCopySclOp smul + VectorCopySclOp sdiv + + +ctypedef struct MatrixSelfOps: + Matrix2x2* (*neg)(Matrix2x2*) nogil + + MatrixSelfMatOp madd + MatrixSelfMatOp msub + MatrixSelfMatOp mmul + MatrixSelfMatOp mdiv + MatrixSelfMatOp matmul + + MatrixSelfSclOp sadd + MatrixSelfSclOp ssub + MatrixSelfSclOp smul + MatrixSelfSclOp sdiv + + +ctypedef struct MatrixCopyOps: + Matrix2x2 (*neg)(Matrix2x2*) nogil + + MatrixCopyMatOp madd + MatrixCopyMatOp msub + MatrixCopyMatOp mmul + MatrixCopyMatOp mdiv + MatrixCopyMatOp matmul + + MatrixCopySclOp sadd + MatrixCopySclOp ssub + MatrixCopySclOp smul + MatrixCopySclOp sdiv + +# Psuedo-class for a 2-dimensional vector. No orientation. +ctypedef struct Vector2D: + FLOAT_T x, y + VectorSelfOps self + VectorCopyOps copy + + bint (*equals)(Vector2D*, Vector2D) nogil + Vector2D (*rot)(Vector2D*) nogil + FLOAT_T (*dot)(Vector2D*, Vector2D) nogil + FLOAT_T (*mag)(Vector2D*) nogil + +# Psuedo-class for a 2x2 matrix. +ctypedef struct Matrix2x2: + FLOAT_T a, b, c, d + MatrixSelfOps self + MatrixCopyOps copy + + bint (*equals)(Matrix2x2*, Matrix2x2) nogil + Vector2D (*vecmul)(Matrix2x2*, Vector2D) nogil + +cdef IArray _IArray(INT_T*, Pair) nogil +cdef FArray _FArray(FLOAT_T*, Pair) nogil +cdef BitSet _BitSet(INT_T) nogil +cdef Vector2D _Vector2D(FLOAT_T, FLOAT_T) nogil +cdef Matrix2x2 _Matrix2x2(FLOAT_T, FLOAT_T, FLOAT_T, FLOAT_T) nogil diff --git a/squish/core.pyx b/squish/core.pyx new file mode 100644 index 0000000..c37ad91 --- /dev/null +++ b/squish/core.pyx @@ -0,0 +1,363 @@ +from libc.stdlib cimport calloc, free +from libc.math cimport sqrt +from squish.core cimport INT_T, FLOAT_T, Pair, \ + IArray, FArray, BitSet, Vector2D, Matrix2x2, \ + VectorSelfOps, VectorCopyOps, MatrixSelfOps, MatrixCopyOps + +#### Constants #### + +# In most cases, the amount of edges relevant to a gradient will +# not exceed this number. However, we assign a growth rate of 8 edges, +# when dynamically allocating. +cdef INT_T EDGE_ARR_SIZE = 32 + +cdef VectorSelfOps VSO +cdef VectorCopyOps VCO +cdef MatrixSelfOps MSO +cdef MatrixCopyOps MCO + +VSO.neg, VSO.vadd, VSO.vsub, VSO.vmul, VSO.vdiv, VSO.sadd, VSO.ssub, VSO.smul, VSO.sdiv = \ + v_neg_s, v_vadd_s, v_vsub_s, v_vmul_s, v_vdiv_s, v_sadd_s, v_ssub_s, v_smul_s, v_sdiv_s +VSO.matmul = v_matmul_s + +VCO.neg, VCO.vadd, VCO.vsub, VCO.vmul, VCO.vdiv, VCO.sadd, VCO.ssub, VCO.smul, VCO.sdiv = \ + v_neg_c, v_vadd_c, v_vsub_c, v_vmul_c, v_vdiv_c, v_sadd_c, v_ssub_c, v_smul_c, v_sdiv_c +VCO.matmul = v_matmul_c + +MSO.neg, MSO.madd, MSO.msub, MSO.mmul, MSO.mdiv, MSO.sadd, MSO.ssub, MSO.smul, MSO.sdiv = \ + m_neg_s, m_madd_s, m_msub_s, m_mmul_s, m_mdiv_s, m_sadd_s, m_ssub_s, m_smul_s, m_sdiv_s +MSO.matmul = m_matmul_s + +MCO.neg, MCO.madd, MCO.msub, MCO.mmul, MCO.mdiv, MCO.sadd, MCO.ssub, MCO.smul, MCO.sdiv = \ + m_neg_c, m_madd_c, m_msub_c, m_mmul_c, m_mdiv_c, m_sadd_c, m_ssub_c, m_smul_c, m_sdiv_c +MCO.matmul = m_matmul_c + +""" +If bound checking is desired, uncomment out ..._valid_indices functions. +""" + +#### IArray Methods #### + +cdef inline IArray _IArray(INT_T* arr, Pair shape) nogil: + cdef IArray iarray + iarray.arr, iarray.shape = arr, shape + + iarray.get, iarray.set = &iarray_get, &iarray_set + return iarray + +cdef inline bint iarray_valid_indices(IArray* self, Pair index) nogil: + if index[0] > self.shape[0] or index[1] > self.shape[1]: + with gil: + raise IndexError(f"Index out of range for IArray with shape {self.shape}") + +cdef inline INT_T iarray_get(IArray* self, Pair index) nogil: + #iarray_valid_indices(&self, index) + return self.arr[index[0]*self.shape[1] + index[1]] + +cdef inline void iarray_set(IArray* self, Pair index, INT_T val) nogil: + #iarray_valid_indices(&self, index) + self.arr[index[0]*self.shape[1] + index[1]] = val + + +#### FArray Methods #### + +cdef inline FArray _FArray(FLOAT_T* arr, Pair shape) nogil: + cdef FArray farray + farray.arr, farray.shape = arr, shape + + farray.get, farray.set = &farray_get, &farray_set + return farray + +cdef inline bint farray_valid_indices(FArray* self, Pair index) nogil: + if index[0] > self.shape[0] or index[1] > self.shape[1]: + with gil: + raise IndexError(f"Index out of range for FArray with shape {self.shape}") + +cdef inline FLOAT_T farray_get(FArray* self, Pair index) nogil: + #iarray_valid_indices(&self, index) + return self.arr[index[0]*self.shape[1] + index[1]] + +cdef inline void farray_set(FArray* self, Pair index, FLOAT_T val) nogil: + #iarray_valid_indices(&self, index) + self.arr[index[0]*self.shape[1] + index[1]] = val + + +#### IList Methods #### + +# cdef inline IList init_ilist() nogil: +# cdef IList ilist +# ilist.size = EDGE_ARR_SIZE +# ilist.length = 0 +# ilist.data = malloc(self.size * sizeof(INT_T)) + +# ilist.append, ilist.free = ilist_append, ilist_free + +# return ilist + +# cdef inline void ilist_append(IList* self, INT_T) nogil: +# if self.size == self.length: +# ilist.data = realloc((self.size+8) * sizeof(INT_T)) +# self.size += 8 + +# self.data[self.length] == INT_T +# self.length += 1 + +# cdef inline void ilist_free(IList* self) nogil: +# free(self.data) + +#### BitSet Methods #### + +cdef inline BitSet _BitSet(INT_T elements) nogil: + cdef BitSet bitset + bitset.bits = calloc(((elements/sizeof(INT_T))+1), sizeof(INT_T)) + + bitset.add, bitset.free = &bitset_add, &bitset_free + return bitset + +cdef inline bint bitset_add(BitSet* self, INT_T val) nogil: + cdef INT_T index, rel_index, old + index = val/sizeof(INT_T) + old = self.bits[index] + rel_index = val - index*sizeof(INT_T) + + self.bits[index] = (1 << rel_index) | old # New value. + + return old == self.bits[index] # Means 1 was already there. + +cdef inline void bitset_free(BitSet* self) nogil: + free(self.bits) + +#### Vector2D Methods #### +""" +Prefix 'v' stands for vector, element by element operation. +Prefix 's' stands for scalar, broadcasted operation. +Suffix 'w' stands for write, overwriting current value. +Suffix 'n' stands for new, copying to a new location. + +While it's possible to chain 'new' operations, when possible, +avoid this, so fewer objects are needed. +""" + +cdef inline Vector2D _Vector2D(FLOAT_T x, FLOAT_T y) nogil: + cdef Vector2D vec + vec.x, vec.y = x, y + vec.self, vec.copy = VSO, VCO + + vec.equals, vec.rot, vec.dot, vec.mag = &v_equals, &rot, &dot, &mag + + return vec + + +cdef inline bint v_equals(Vector2D* self, Vector2D w) nogil: + return ((self.x == w.x) and (self.y == w.y)) + +cdef inline Vector2D* v_neg_s(Vector2D* self) nogil: + self.x = -self.x + self.y = -self.y + return self + +cdef inline Vector2D* v_vadd_s(Vector2D* self, Vector2D w) nogil: + self.x += w.x + self.y += w.y + return self + +cdef inline Vector2D* v_vsub_s(Vector2D* self, Vector2D w) nogil: + self.x -= w.x + self.y -= w.y + return self + +cdef inline Vector2D* v_vmul_s(Vector2D* self, Vector2D w) nogil: + self.x *= w.x + self.y *= w.y + return self + +cdef inline Vector2D* v_vdiv_s(Vector2D* self, Vector2D w) nogil: + self.x /= w.x + self.y /= w.y + return self + +cdef inline Vector2D* v_sadd_s(Vector2D* self, FLOAT_T s) nogil: + self.x += s + self.y += s + return self + +cdef inline Vector2D* v_ssub_s(Vector2D* self, FLOAT_T s) nogil: + self.x -= s + self.y -= s + return self + +cdef inline Vector2D* v_smul_s(Vector2D* self, FLOAT_T s) nogil: + self.x *= s + self.y *= s + return self + +cdef inline Vector2D* v_sdiv_s(Vector2D* self, FLOAT_T s) nogil: + self.x /= s + self.y /= s + return self + +cdef inline Vector2D* v_matmul_s(Vector2D* self, Matrix2x2 m) nogil: + self.x, self.y = self.x*m.a + self.y*m.c, self.x*m.b + self.y*m.d + return self + +cdef inline Vector2D v_neg_c(Vector2D* self) nogil: + return _Vector2D(-self.x, -self.y) + +cdef inline Vector2D v_vadd_c(Vector2D* self, Vector2D w) nogil: + return _Vector2D(self.x + w.x, self.y + w.y) + +cdef inline Vector2D v_vsub_c(Vector2D* self, Vector2D w) nogil: + return _Vector2D(self.x - w.x, self.y - w.y) + +cdef inline Vector2D v_vmul_c(Vector2D* self, Vector2D w) nogil: + return _Vector2D(self.x * w.x, self.y * w.y) + +cdef inline Vector2D v_vdiv_c(Vector2D* self, Vector2D w) nogil: + return _Vector2D(self.x / w.x, self.y / w.y) + +cdef inline Vector2D v_sadd_c(Vector2D* self, FLOAT_T s) nogil: + return _Vector2D(self.x + s, self.y + s) + +cdef inline Vector2D v_ssub_c(Vector2D* self, FLOAT_T s) nogil: + return _Vector2D(self.x + s, self.y + s) + +cdef inline Vector2D v_smul_c(Vector2D* self, FLOAT_T s) nogil: + return _Vector2D(self.x * s, self.y * s) + +cdef inline Vector2D v_sdiv_c(Vector2D* self, FLOAT_T s) nogil: + return _Vector2D(self.x / s, self.y / s) + +cdef inline Vector2D v_matmul_c(Vector2D* self, Matrix2x2 m) nogil: + return _Vector2D( + self.x*m.a + self.y*m.c, self.x*m.b + self.y*m.d + ) + +cdef inline Vector2D rot(Vector2D* self) nogil: + return _Vector2D(-self.y, self.x) + +cdef inline FLOAT_T dot(Vector2D* self, Vector2D w) nogil: + return self.x*w.x + self.y*w.y + +cdef inline FLOAT_T mag(Vector2D* self) nogil: + return sqrt((self.x*self.x + self.y*self.y)) + + +#### Matrix2x2 Methods #### + +cdef inline Matrix2x2 _Matrix2x2(FLOAT_T a, FLOAT_T b, FLOAT_T c, FLOAT_T d) nogil: + cdef Matrix2x2 matrix + matrix.a, matrix.b, matrix.c, matrix.d = a, b, c, d + matrix.self, matrix.copy = MSO, MCO + + matrix.equals, matrix.vecmul = &m_equals, &m_vecmul + + return matrix + +cdef inline bint m_equals(Matrix2x2* self, Matrix2x2 m) nogil: + return ( + (self.a == m.a) and (self.b == m.b) and (self.c == m.c) and (self.d == m.d) + ) + +cdef inline Vector2D m_vecmul(Matrix2x2* self, Vector2D v) nogil: + return _Vector2D( + self.a*v.x + self.b*v.y, self.c*v.x + self.d*v.y + ) + +cdef inline Matrix2x2* m_neg_s(Matrix2x2* self) nogil: + self.a, self.b, self.c, self.d = -self.a, -self.b, -self.c, -self.d + return self + +cdef inline Matrix2x2* m_madd_s(Matrix2x2* self, Matrix2x2 m) nogil: + self.a += m.a + self.b += m.b + self.c += m.c + self.d += m.d + return self + +cdef inline Matrix2x2* m_msub_s(Matrix2x2* self, Matrix2x2 m) nogil: + self.a -= m.a + self.b -= m.b + self.c -= m.c + self.d -= m.d + return self + +cdef inline Matrix2x2* m_mmul_s(Matrix2x2* self, Matrix2x2 m) nogil: + self.a *= m.a + self.b *= m.b + self.c *= m.c + self.d *= m.d + return self + +cdef inline Matrix2x2* m_mdiv_s(Matrix2x2* self, Matrix2x2 m) nogil: + self.a /= m.a + self.b /= m.b + self.c /= m.c + self.d /= m.d + return self + +cdef inline Matrix2x2* m_sadd_s(Matrix2x2* self, FLOAT_T s) nogil: + self.a += s + self.b += s + self.c += s + self.d += s + return self + +cdef inline Matrix2x2* m_ssub_s(Matrix2x2* self, FLOAT_T s) nogil: + self.a -= s + self.b -= s + self.c -= s + self.d -= s + return self + +cdef inline Matrix2x2* m_smul_s(Matrix2x2* self, FLOAT_T s) nogil: + self.a *= s + self.b *= s + self.c *= s + self.d *= s + return self + +cdef inline Matrix2x2* m_sdiv_s(Matrix2x2* self, FLOAT_T s) nogil: + self.a /= s + self.b /= s + self.c /= s + self.d /= s + return self + +cdef inline Matrix2x2* m_matmul_s(Matrix2x2* self, Matrix2x2 m) nogil: + self.a, self.b, self.c, self.d = \ + self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, \ + self.c*m.a + self.d*m.c, self.c*m.b + self.d*m.d + return self + +cdef inline Matrix2x2 m_neg_c(Matrix2x2* self) nogil: + return _Matrix2x2(-self.a, -self.b, -self.c, -self.d) + +cdef inline Matrix2x2 m_madd_c(Matrix2x2* self, Matrix2x2 m) nogil: + return _Matrix2x2(self.a+m.a, self.b+m.b, self.c+m.c, self.d+m.d) + +cdef inline Matrix2x2 m_msub_c(Matrix2x2* self, Matrix2x2 m) nogil: + return _Matrix2x2(self.a-m.a, self.b-m.b, self.c-m.c, self.d-m.d) + +cdef inline Matrix2x2 m_mmul_c(Matrix2x2* self, Matrix2x2 m) nogil: + return _Matrix2x2(self.a*m.a, self.b*m.b, self.c*m.c, self.d*m.d) + +cdef inline Matrix2x2 m_mdiv_c(Matrix2x2* self, Matrix2x2 m) nogil: + return _Matrix2x2(self.a/m.a, self.b/m.b, self.c/m.c, self.d/m.d) + +cdef inline Matrix2x2 m_sadd_c(Matrix2x2* self, FLOAT_T s) nogil: + return _Matrix2x2(self.a+s, self.b+s, self.c+s, self.d+s) + +cdef inline Matrix2x2 m_ssub_c(Matrix2x2* self, FLOAT_T s) nogil: + return _Matrix2x2(self.a-s, self.b-s, self.c-s, self.d-s) + +cdef inline Matrix2x2 m_smul_c(Matrix2x2* self, FLOAT_T s) nogil: + return _Matrix2x2(self.a*s, self.b*s, self.c*s, self.d*s) + +cdef inline Matrix2x2 m_sdiv_c(Matrix2x2* self, FLOAT_T s) nogil: + return _Matrix2x2(self.a/s, self.b/s, self.c/s, self.d/s) + +cdef inline Matrix2x2 m_matmul_c(Matrix2x2* self, Matrix2x2 m) nogil: + return _Matrix2x2( + self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, + self.c*m.a + self.d*m.c, self.c*m.b + self.d*m.d + ) diff --git a/squish/diagram.py b/squish/diagram.py index 93515e2..db3f937 100644 --- a/squish/diagram.py +++ b/squish/diagram.py @@ -183,8 +183,8 @@ class Diagram: defects[7]["x"].append(vec[0]) defects[7]["y"].append(vec[1]) - ax.scatter(defects[5]["x"], defects[5]["y"], marker="p", color="red") - ax.scatter(defects[7]["x"], defects[7]["y"], marker="*", color="red") + ax.scatter(defects[5]["x"], defects[5]["y"], marker="p", color="C0") + ax.scatter(defects[7]["x"], defects[7]["y"], marker="*", color="C0") ax.text( 0.05, diff --git a/squish/energy.c b/squish/energy.c new file mode 100644 index 0000000..5a1ef1c --- /dev/null +++ b/squish/energy.c @@ -0,0 +1,27737 @@ +/* Generated by Cython 0.29.24 */ + +/* BEGIN: Cython Metadata +{ + "distutils": { + "define_macros": [ + [ + "NPY_NO_DEPRECATED_API", + "NPY_1_7_API_VERSION" + ] + ], + "depends": [], + "extra_compile_args": [ + "-fopenmp" + ], + "extra_link_args": [ + "-fopenmp" + ], + "name": "squish.energy", + "sources": [ + "squish/energy.pyx" + ] + }, + "module_name": "squish.energy" +} +END: Cython Metadata */ + +#ifndef PY_SSIZE_T_CLEAN +#define PY_SSIZE_T_CLEAN +#endif /* PY_SSIZE_T_CLEAN */ +#include "Python.h" +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) + #error Cython requires Python 2.6+ or Python 3.3+. +#else +#define CYTHON_ABI "0_29_24" +#define CYTHON_HEX_VERSION 0x001D18F0 +#define CYTHON_FUTURE_DIVISION 1 +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#define __PYX_COMMA , +#ifndef HAVE_LONG_LONG + #if PY_VERSION_HEX >= 0x02070000 + #define HAVE_LONG_LONG + #endif +#endif +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#ifdef PYPY_VERSION + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_PYSTON 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 +#elif defined(PYSTON_VERSION) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_PYSTON 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_PYSTON 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #if PY_VERSION_HEX < 0x02070000 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) + #define CYTHON_USE_PYTYPE_LOOKUP 1 + #endif + #if PY_MAJOR_VERSION < 3 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #if PY_VERSION_HEX < 0x02070000 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #elif !defined(CYTHON_USE_PYLONG_INTERNALS) + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #ifndef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if PY_VERSION_HEX < 0x030300F0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000) + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) + #endif + #ifndef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1) + #endif + #ifndef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3) + #endif +#endif +#if !defined(CYTHON_FAST_PYCCALL) +#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #include "longintrepr.h" + #undef SHIFT + #undef BASE + #undef MASK + #ifdef SIZEOF_VOID_P + enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; + #endif +#endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int32 uint32_t; + #endif + #endif +#else + #include +#endif +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) && __cplusplus >= 201103L + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #elif __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__ ) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif + +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) + #define Py_OptimizeFlag 0 +#endif +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#if PY_MAJOR_VERSION < 3 + #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) + #define __Pyx_DefaultClassType PyClass_Type +#else + #define __Pyx_BUILTIN_MODULE_NAME "builtins" +#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2 + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#endif + #define __Pyx_DefaultClassType PyType_Type +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#ifndef METH_STACKLESS + #define METH_STACKLESS 0 +#endif +#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #define __Pyx_PyCFunctionFast _PyCFunctionFast + #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords +#endif +#if CYTHON_FAST_PYCCALL +#define __Pyx_PyFastCFunction_Check(func)\ + ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))))) +#else +#define __Pyx_PyFastCFunction_Check(func) 0 +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1 + #define PyMem_RawMalloc(n) PyMem_Malloc(n) + #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n) + #define PyMem_RawFree(p) PyMem_Free(p) +#endif +#if CYTHON_COMPILING_IN_PYSTON + #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#elif PY_VERSION_HEX >= 0x03060000 + #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() +#elif PY_VERSION_HEX >= 0x03000000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#else + #define __Pyx_PyThreadState_Current _PyThreadState_Current +#endif +#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) +#include "pythread.h" +#define Py_tss_NEEDS_INIT 0 +typedef int Py_tss_t; +static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { + *key = PyThread_create_key(); + return 0; +} +static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { + Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); + *key = Py_tss_NEEDS_INIT; + return key; +} +static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { + PyObject_Free(key); +} +static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { + return *key != Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { + PyThread_delete_key(*key); + *key = Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { + return PyThread_set_key_value(*key, value); +} +static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + return PyThread_get_key_value(*key); +} +#endif +#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) +#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) +#else +#define __Pyx_PyDict_NewPresized(n) PyDict_New() +#endif +#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION + #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#else + #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS +#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) +#else +#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) +#endif +#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 + #if defined(PyUnicode_IS_READY) + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #else + #define __Pyx_PyUnicode_READY(op) (0) + #endif + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) + #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE) + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #endif + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #endif +#else + #define CYTHON_PEP393_ENABLED 0 + #define PyUnicode_1BYTE_KIND 1 + #define PyUnicode_2BYTE_KIND 2 + #define PyUnicode_4BYTE_KIND 4 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) + #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) + #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) +#endif +#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) +#else + #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) +#endif +#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) + #define PyObject_ASCII(o) PyObject_Repr(o) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBaseString_Type PyUnicode_Type + #define PyStringObject PyUnicodeObject + #define PyString_Type PyUnicode_Type + #define PyString_Check PyUnicode_Check + #define PyString_CheckExact PyUnicode_CheckExact +#ifndef PyObject_Unicode + #define PyObject_Unicode PyObject_Str +#endif +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) + #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else + #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) +#endif +#if PY_VERSION_HEX >= 0x030900A4 + #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) +#else + #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) +#endif +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) +#else + #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyIntObject PyLongObject + #define PyInt_Type PyLong_Type + #define PyInt_Check(op) PyLong_Check(op) + #define PyInt_CheckExact(op) PyLong_CheckExact(op) + #define PyInt_FromString PyLong_FromString + #define PyInt_FromUnicode PyLong_FromUnicode + #define PyInt_FromLong PyLong_FromLong + #define PyInt_FromSize_t PyLong_FromSize_t + #define PyInt_FromSsize_t PyLong_FromSsize_t + #define PyInt_AsLong PyLong_AsLong + #define PyInt_AS_LONG PyLong_AS_LONG + #define PyInt_AsSsize_t PyLong_AsSsize_t + #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask + #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask + #define PyNumber_Int PyNumber_Long +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBoolObject PyLongObject +#endif +#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY + #ifndef PyUnicode_InternFromString + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) + #endif +#endif +#if PY_VERSION_HEX < 0x030200A4 + typedef long Py_hash_t; + #define __Pyx_PyInt_FromHash_t PyInt_FromLong + #define __Pyx_PyInt_AsHash_t PyInt_AsLong +#else + #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t + #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func)) +#else + #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) +#endif +#if CYTHON_USE_ASYNC_SLOTS + #if PY_VERSION_HEX >= 0x030500B1 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods + #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) + #else + #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) + #endif +#else + #define __Pyx_PyType_AsAsync(obj) NULL +#endif +#ifndef __Pyx_PyAsyncMethodsStruct + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + } __Pyx_PyAsyncMethodsStruct; +#endif + +#if defined(WIN32) || defined(MS_WINDOWS) + #define _USE_MATH_DEFINES +#endif +#include +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + +#define __PYX_MARK_ERR_POS(f_index, lineno) \ + { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } +#define __PYX_ERR(f_index, lineno, Ln_error) \ + { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } + +#ifndef __PYX_EXTERN_C + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE__squish__energy +#define __PYX_HAVE_API__squish__energy +/* Early includes */ +#include +#include +#include "numpy/arrayobject.h" +#include "numpy/ndarrayobject.h" +#include "numpy/ndarraytypes.h" +#include "numpy/arrayscalars.h" +#include "numpy/ufuncobject.h" + + /* NumPy API declarations from "numpy/__init__.pxd" */ + +#include +#include "pythread.h" +#include +#include "pystate.h" +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { + return (size_t) i < (size_t) limit; +} +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) + #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else + #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { + const Py_UNICODE *u_end = u; + while (*u_end++) ; + return (size_t)(u_end - u - 1); +} +#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) +#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) +#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); +#define __Pyx_PySequence_Tuple(obj)\ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); +#if CYTHON_ASSUME_SAFE_MACROS +#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#else +#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#endif +#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#else +#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) +#endif +#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + PyObject* ascii_chars_u = NULL; + PyObject* ascii_chars_b = NULL; + const char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + if (strcmp(default_encoding_c, "ascii") == 0) { + __Pyx_sys_getdefaultencoding_not_ascii = 0; + } else { + char ascii_chars[128]; + int c; + for (c = 0; c < 128; c++) { + ascii_chars[c] = c; + } + __Pyx_sys_getdefaultencoding_not_ascii = 1; + ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); + if (!ascii_chars_u) goto bad; + ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); + if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + PyErr_Format( + PyExc_ValueError, + "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", + default_encoding_c); + goto bad; + } + Py_DECREF(ascii_chars_u); + Py_DECREF(ascii_chars_b); + } + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); + if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; + strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + return -1; +} +#endif +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } + +static PyObject *__pyx_m = NULL; +static PyObject *__pyx_d; +static PyObject *__pyx_b; +static PyObject *__pyx_cython_runtime = NULL; +static PyObject *__pyx_empty_tuple; +static PyObject *__pyx_empty_bytes; +static PyObject *__pyx_empty_unicode; +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * __pyx_cfilenm= __FILE__; +static const char *__pyx_filename; + +/* Header.proto */ +#if !defined(CYTHON_CCOMPLEX) + #if defined(__cplusplus) + #define CYTHON_CCOMPLEX 1 + #elif defined(_Complex_I) + #define CYTHON_CCOMPLEX 1 + #else + #define CYTHON_CCOMPLEX 0 + #endif +#endif +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + #include + #else + #include + #endif +#endif +#if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__) + #undef _Complex_I + #define _Complex_I 1.0fj +#endif + + +static const char *__pyx_f[] = { + "squish/energy.pyx", + "stringsource", + "__init__.pxd", + "type.pxd", +}; +/* BufferFormatStructs.proto */ +#define IS_UNSIGNED(type) (((type) -1) > 0) +struct __Pyx_StructField_; +#define __PYX_BUF_FLAGS_PACKED_STRUCT (1 << 0) +typedef struct { + const char* name; + struct __Pyx_StructField_* fields; + size_t size; + size_t arraysize[8]; + int ndim; + char typegroup; + char is_unsigned; + int flags; +} __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; +typedef struct { + __Pyx_StructField root; + __Pyx_BufFmt_StackElem* head; + size_t fmt_offset; + size_t new_count, enc_count; + size_t struct_alignment; + int is_complex; + char enc_type; + char new_packmode; + char enc_packmode; + char is_valid_array; +} __Pyx_BufFmt_Context; + +/* NoFastGil.proto */ +#define __Pyx_PyGILState_Ensure PyGILState_Ensure +#define __Pyx_PyGILState_Release PyGILState_Release +#define __Pyx_FastGIL_Remember() +#define __Pyx_FastGIL_Forget() +#define __Pyx_FastGilFuncInit() + +/* MemviewSliceStruct.proto */ +struct __pyx_memoryview_obj; +typedef struct { + struct __pyx_memoryview_obj *memview; + char *data; + Py_ssize_t shape[8]; + Py_ssize_t strides[8]; + Py_ssize_t suboffsets[8]; +} __Pyx_memviewslice; +#define __Pyx_MemoryView_Len(m) (m.shape[0]) + +/* Atomics.proto */ +#include +#ifndef CYTHON_ATOMICS + #define CYTHON_ATOMICS 1 +#endif +#define __pyx_atomic_int_type int +#if CYTHON_ATOMICS && __GNUC__ >= 4 && (__GNUC_MINOR__ > 1 ||\ + (__GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL >= 2)) &&\ + !defined(__i386__) + #define __pyx_atomic_incr_aligned(value, lock) __sync_fetch_and_add(value, 1) + #define __pyx_atomic_decr_aligned(value, lock) __sync_fetch_and_sub(value, 1) + #ifdef __PYX_DEBUG_ATOMICS + #warning "Using GNU atomics" + #endif +#elif CYTHON_ATOMICS && defined(_MSC_VER) && 0 + #include + #undef __pyx_atomic_int_type + #define __pyx_atomic_int_type LONG + #define __pyx_atomic_incr_aligned(value, lock) InterlockedIncrement(value) + #define __pyx_atomic_decr_aligned(value, lock) InterlockedDecrement(value) + #ifdef __PYX_DEBUG_ATOMICS + #pragma message ("Using MSVC atomics") + #endif +#elif CYTHON_ATOMICS && (defined(__ICC) || defined(__INTEL_COMPILER)) && 0 + #define __pyx_atomic_incr_aligned(value, lock) _InterlockedIncrement(value) + #define __pyx_atomic_decr_aligned(value, lock) _InterlockedDecrement(value) + #ifdef __PYX_DEBUG_ATOMICS + #warning "Using Intel atomics" + #endif +#else + #undef CYTHON_ATOMICS + #define CYTHON_ATOMICS 0 + #ifdef __PYX_DEBUG_ATOMICS + #warning "Not using atomics" + #endif +#endif +typedef volatile __pyx_atomic_int_type __pyx_atomic_int; +#if CYTHON_ATOMICS + #define __pyx_add_acquisition_count(memview)\ + __pyx_atomic_incr_aligned(__pyx_get_slice_count_pointer(memview), memview->lock) + #define __pyx_sub_acquisition_count(memview)\ + __pyx_atomic_decr_aligned(__pyx_get_slice_count_pointer(memview), memview->lock) +#else + #define __pyx_add_acquisition_count(memview)\ + __pyx_add_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock) + #define __pyx_sub_acquisition_count(memview)\ + __pyx_sub_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock) +#endif + +/* ForceInitThreads.proto */ +#ifndef __PYX_FORCE_INIT_THREADS + #define __PYX_FORCE_INIT_THREADS 0 +#endif + + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":690 + * # in Cython to enable them only on the right systems. + * + * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< + * ctypedef npy_int16 int16_t + * ctypedef npy_int32 int32_t + */ +typedef npy_int8 __pyx_t_5numpy_int8_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":691 + * + * ctypedef npy_int8 int8_t + * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< + * ctypedef npy_int32 int32_t + * ctypedef npy_int64 int64_t + */ +typedef npy_int16 __pyx_t_5numpy_int16_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":692 + * ctypedef npy_int8 int8_t + * ctypedef npy_int16 int16_t + * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< + * ctypedef npy_int64 int64_t + * #ctypedef npy_int96 int96_t + */ +typedef npy_int32 __pyx_t_5numpy_int32_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":693 + * ctypedef npy_int16 int16_t + * ctypedef npy_int32 int32_t + * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< + * #ctypedef npy_int96 int96_t + * #ctypedef npy_int128 int128_t + */ +typedef npy_int64 __pyx_t_5numpy_int64_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":697 + * #ctypedef npy_int128 int128_t + * + * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< + * ctypedef npy_uint16 uint16_t + * ctypedef npy_uint32 uint32_t + */ +typedef npy_uint8 __pyx_t_5numpy_uint8_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":698 + * + * ctypedef npy_uint8 uint8_t + * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< + * ctypedef npy_uint32 uint32_t + * ctypedef npy_uint64 uint64_t + */ +typedef npy_uint16 __pyx_t_5numpy_uint16_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":699 + * ctypedef npy_uint8 uint8_t + * ctypedef npy_uint16 uint16_t + * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< + * ctypedef npy_uint64 uint64_t + * #ctypedef npy_uint96 uint96_t + */ +typedef npy_uint32 __pyx_t_5numpy_uint32_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":700 + * ctypedef npy_uint16 uint16_t + * ctypedef npy_uint32 uint32_t + * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< + * #ctypedef npy_uint96 uint96_t + * #ctypedef npy_uint128 uint128_t + */ +typedef npy_uint64 __pyx_t_5numpy_uint64_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":704 + * #ctypedef npy_uint128 uint128_t + * + * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< + * ctypedef npy_float64 float64_t + * #ctypedef npy_float80 float80_t + */ +typedef npy_float32 __pyx_t_5numpy_float32_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":705 + * + * ctypedef npy_float32 float32_t + * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< + * #ctypedef npy_float80 float80_t + * #ctypedef npy_float128 float128_t + */ +typedef npy_float64 __pyx_t_5numpy_float64_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":714 + * # The int types are mapped a bit surprising -- + * # numpy.int corresponds to 'l' and numpy.long to 'q' + * ctypedef npy_long int_t # <<<<<<<<<<<<<< + * ctypedef npy_longlong long_t + * ctypedef npy_longlong longlong_t + */ +typedef npy_long __pyx_t_5numpy_int_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":715 + * # numpy.int corresponds to 'l' and numpy.long to 'q' + * ctypedef npy_long int_t + * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< + * ctypedef npy_longlong longlong_t + * + */ +typedef npy_longlong __pyx_t_5numpy_long_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":716 + * ctypedef npy_long int_t + * ctypedef npy_longlong long_t + * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< + * + * ctypedef npy_ulong uint_t + */ +typedef npy_longlong __pyx_t_5numpy_longlong_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":718 + * ctypedef npy_longlong longlong_t + * + * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< + * ctypedef npy_ulonglong ulong_t + * ctypedef npy_ulonglong ulonglong_t + */ +typedef npy_ulong __pyx_t_5numpy_uint_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":719 + * + * ctypedef npy_ulong uint_t + * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< + * ctypedef npy_ulonglong ulonglong_t + * + */ +typedef npy_ulonglong __pyx_t_5numpy_ulong_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":720 + * ctypedef npy_ulong uint_t + * ctypedef npy_ulonglong ulong_t + * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< + * + * ctypedef npy_intp intp_t + */ +typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":722 + * ctypedef npy_ulonglong ulonglong_t + * + * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< + * ctypedef npy_uintp uintp_t + * + */ +typedef npy_intp __pyx_t_5numpy_intp_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":723 + * + * ctypedef npy_intp intp_t + * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< + * + * ctypedef npy_double float_t + */ +typedef npy_uintp __pyx_t_5numpy_uintp_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":725 + * ctypedef npy_uintp uintp_t + * + * ctypedef npy_double float_t # <<<<<<<<<<<<<< + * ctypedef npy_double double_t + * ctypedef npy_longdouble longdouble_t + */ +typedef npy_double __pyx_t_5numpy_float_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":726 + * + * ctypedef npy_double float_t + * ctypedef npy_double double_t # <<<<<<<<<<<<<< + * ctypedef npy_longdouble longdouble_t + * + */ +typedef npy_double __pyx_t_5numpy_double_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":727 + * ctypedef npy_double float_t + * ctypedef npy_double double_t + * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< + * + * ctypedef npy_cfloat cfloat_t + */ +typedef npy_longdouble __pyx_t_5numpy_longdouble_t; + +/* "squish/core.pxd":4 + * + * # Cython Types. + * ctypedef np.int64_t INT_T # <<<<<<<<<<<<<< + * ctypedef np.float64_t FLOAT_T + * + */ +typedef __pyx_t_5numpy_int64_t __pyx_t_6squish_4core_INT_T; + +/* "squish/core.pxd":5 + * # Cython Types. + * ctypedef np.int64_t INT_T + * ctypedef np.float64_t FLOAT_T # <<<<<<<<<<<<<< + * + * ctypedef (INT_T, INT_T) Pair + */ +typedef __pyx_t_5numpy_float64_t __pyx_t_6squish_4core_FLOAT_T; +/* Declarations.proto */ +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + typedef ::std::complex< float > __pyx_t_float_complex; + #else + typedef float _Complex __pyx_t_float_complex; + #endif +#else + typedef struct { float real, imag; } __pyx_t_float_complex; +#endif +static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float); + +/* Declarations.proto */ +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + typedef ::std::complex< double > __pyx_t_double_complex; + #else + typedef double _Complex __pyx_t_double_complex; + #endif +#else + typedef struct { double real, imag; } __pyx_t_double_complex; +#endif +static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double); + + +/*--- Type declarations ---*/ +struct __pyx_obj_6squish_7voronoi_VoronoiContainer; +struct __pyx_obj_6squish_6energy_AreaEnergy; +struct __pyx_obj_6squish_6energy_RadialALEnergy; +struct __pyx_obj_6squish_6energy_RadialTEnergy; +struct __pyx_array_obj; +struct __pyx_MemviewEnum_obj; +struct __pyx_memoryview_obj; +struct __pyx_memoryviewslice_obj; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":729 + * ctypedef npy_longdouble longdouble_t + * + * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< + * ctypedef npy_cdouble cdouble_t + * ctypedef npy_clongdouble clongdouble_t + */ +typedef npy_cfloat __pyx_t_5numpy_cfloat_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":730 + * + * ctypedef npy_cfloat cfloat_t + * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< + * ctypedef npy_clongdouble clongdouble_t + * + */ +typedef npy_cdouble __pyx_t_5numpy_cdouble_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":731 + * ctypedef npy_cfloat cfloat_t + * ctypedef npy_cdouble cdouble_t + * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< + * + * ctypedef npy_cdouble complex_t + */ +typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":733 + * ctypedef npy_clongdouble clongdouble_t + * + * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew1(a): + */ +typedef npy_cdouble __pyx_t_5numpy_complex_t; +struct __pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc; +typedef struct __pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc __pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc; +struct __pyx_t_6squish_4core_IArray; +struct __pyx_t_6squish_4core_FArray; +typedef struct __pyx_t_6squish_4core_FArray __pyx_t_6squish_4core_FArray; +struct __pyx_t_6squish_4core_BitSet; +typedef struct __pyx_t_6squish_4core_BitSet __pyx_t_6squish_4core_BitSet; +struct __pyx_t_6squish_4core_VectorSelfOps; +typedef struct __pyx_t_6squish_4core_VectorSelfOps __pyx_t_6squish_4core_VectorSelfOps; +struct __pyx_t_6squish_4core_VectorCopyOps; +typedef struct __pyx_t_6squish_4core_VectorCopyOps __pyx_t_6squish_4core_VectorCopyOps; +struct __pyx_t_6squish_4core_MatrixSelfOps; +typedef struct __pyx_t_6squish_4core_MatrixSelfOps __pyx_t_6squish_4core_MatrixSelfOps; +struct __pyx_t_6squish_4core_MatrixCopyOps; +typedef struct __pyx_t_6squish_4core_MatrixCopyOps __pyx_t_6squish_4core_MatrixCopyOps; +struct __pyx_t_6squish_4core_Vector2D; +typedef struct __pyx_t_6squish_4core_Vector2D __pyx_t_6squish_4core_Vector2D; +struct __pyx_t_6squish_4core_Matrix2x2; +typedef struct __pyx_t_6squish_4core_Matrix2x2 __pyx_t_6squish_4core_Matrix2x2; + +/* "squish/core.pxd":7 + * ctypedef np.float64_t FLOAT_T + * + * ctypedef (INT_T, INT_T) Pair # <<<<<<<<<<<<<< + * + * # Integer Array psuedo-class for continguous arrays. + */ +struct __pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc { + __pyx_t_6squish_4core_INT_T f0; + __pyx_t_6squish_4core_INT_T f1; +}; +typedef __pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc __pyx_t_6squish_4core_Pair; + +/* "squish/core.pxd":10 + * + * # Integer Array psuedo-class for continguous arrays. + * cdef struct IArray: # <<<<<<<<<<<<<< + * INT_T* arr + * Pair shape + */ +struct __pyx_t_6squish_4core_IArray { + __pyx_t_6squish_4core_INT_T *arr; + __pyx_t_6squish_4core_Pair shape; + __pyx_t_6squish_4core_INT_T (*get)(struct __pyx_t_6squish_4core_IArray *, __pyx_t_6squish_4core_Pair); + void (*set)(struct __pyx_t_6squish_4core_IArray *, __pyx_t_6squish_4core_Pair, __pyx_t_6squish_4core_INT_T); +}; + +/* "squish/core.pxd":18 + * + * # Float Array psuedo-class for continguous arrays. + * ctypedef struct FArray: # <<<<<<<<<<<<<< + * FLOAT_T* arr + * Pair shape + */ +struct __pyx_t_6squish_4core_FArray { + __pyx_t_6squish_4core_FLOAT_T *arr; + __pyx_t_6squish_4core_Pair shape; + __pyx_t_6squish_4core_FLOAT_T (*get)(__pyx_t_6squish_4core_FArray *, __pyx_t_6squish_4core_Pair); + void (*set)(__pyx_t_6squish_4core_FArray *, __pyx_t_6squish_4core_Pair, __pyx_t_6squish_4core_FLOAT_T); +}; + +/* "squish/core.pxd":34 + * + * # Uses an array of bits to determine if value in set. + * ctypedef struct BitSet: # <<<<<<<<<<<<<< + * INT_T* bits + * + */ +struct __pyx_t_6squish_4core_BitSet { + __pyx_t_6squish_4core_INT_T *bits; + int (*add)(__pyx_t_6squish_4core_BitSet *, __pyx_t_6squish_4core_INT_T); + void (*free)(__pyx_t_6squish_4core_BitSet *); +}; + +/* "squish/core.pxd":41 + * + * # Psuedo-operator definitions. + * ctypedef Vector2D* (*VectorSelfVecOp)(Vector2D*, Vector2D) nogil # <<<<<<<<<<<<<< + * ctypedef Vector2D (*VectorCopyVecOp)(Vector2D*, Vector2D) nogil + * ctypedef Vector2D* (*VectorSelfSclOp)(Vector2D*, FLOAT_T) nogil + */ +typedef __pyx_t_6squish_4core_Vector2D *(*__pyx_t_6squish_4core_VectorSelfVecOp)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + +/* "squish/core.pxd":42 + * # Psuedo-operator definitions. + * ctypedef Vector2D* (*VectorSelfVecOp)(Vector2D*, Vector2D) nogil + * ctypedef Vector2D (*VectorCopyVecOp)(Vector2D*, Vector2D) nogil # <<<<<<<<<<<<<< + * ctypedef Vector2D* (*VectorSelfSclOp)(Vector2D*, FLOAT_T) nogil + * ctypedef Vector2D (*VectorCopySclOp)(Vector2D*, FLOAT_T) nogil + */ +typedef __pyx_t_6squish_4core_Vector2D (*__pyx_t_6squish_4core_VectorCopyVecOp)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + +/* "squish/core.pxd":43 + * ctypedef Vector2D* (*VectorSelfVecOp)(Vector2D*, Vector2D) nogil + * ctypedef Vector2D (*VectorCopyVecOp)(Vector2D*, Vector2D) nogil + * ctypedef Vector2D* (*VectorSelfSclOp)(Vector2D*, FLOAT_T) nogil # <<<<<<<<<<<<<< + * ctypedef Vector2D (*VectorCopySclOp)(Vector2D*, FLOAT_T) nogil + * + */ +typedef __pyx_t_6squish_4core_Vector2D *(*__pyx_t_6squish_4core_VectorSelfSclOp)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); + +/* "squish/core.pxd":44 + * ctypedef Vector2D (*VectorCopyVecOp)(Vector2D*, Vector2D) nogil + * ctypedef Vector2D* (*VectorSelfSclOp)(Vector2D*, FLOAT_T) nogil + * ctypedef Vector2D (*VectorCopySclOp)(Vector2D*, FLOAT_T) nogil # <<<<<<<<<<<<<< + * + * ctypedef Matrix2x2* (*MatrixSelfMatOp)(Matrix2x2*, Matrix2x2) nogil + */ +typedef __pyx_t_6squish_4core_Vector2D (*__pyx_t_6squish_4core_VectorCopySclOp)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); + +/* "squish/core.pxd":46 + * ctypedef Vector2D (*VectorCopySclOp)(Vector2D*, FLOAT_T) nogil + * + * ctypedef Matrix2x2* (*MatrixSelfMatOp)(Matrix2x2*, Matrix2x2) nogil # <<<<<<<<<<<<<< + * ctypedef Matrix2x2 (*MatrixCopyMatOp)(Matrix2x2*, Matrix2x2) nogil + * ctypedef Matrix2x2* (*MatrixSelfSclOp)(Matrix2x2*, FLOAT_T) nogil + */ +typedef __pyx_t_6squish_4core_Matrix2x2 *(*__pyx_t_6squish_4core_MatrixSelfMatOp)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); + +/* "squish/core.pxd":47 + * + * ctypedef Matrix2x2* (*MatrixSelfMatOp)(Matrix2x2*, Matrix2x2) nogil + * ctypedef Matrix2x2 (*MatrixCopyMatOp)(Matrix2x2*, Matrix2x2) nogil # <<<<<<<<<<<<<< + * ctypedef Matrix2x2* (*MatrixSelfSclOp)(Matrix2x2*, FLOAT_T) nogil + * ctypedef Matrix2x2 (*MatrixCopySclOp)(Matrix2x2*, FLOAT_T) nogil + */ +typedef __pyx_t_6squish_4core_Matrix2x2 (*__pyx_t_6squish_4core_MatrixCopyMatOp)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); + +/* "squish/core.pxd":48 + * ctypedef Matrix2x2* (*MatrixSelfMatOp)(Matrix2x2*, Matrix2x2) nogil + * ctypedef Matrix2x2 (*MatrixCopyMatOp)(Matrix2x2*, Matrix2x2) nogil + * ctypedef Matrix2x2* (*MatrixSelfSclOp)(Matrix2x2*, FLOAT_T) nogil # <<<<<<<<<<<<<< + * ctypedef Matrix2x2 (*MatrixCopySclOp)(Matrix2x2*, FLOAT_T) nogil + * + */ +typedef __pyx_t_6squish_4core_Matrix2x2 *(*__pyx_t_6squish_4core_MatrixSelfSclOp)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); + +/* "squish/core.pxd":49 + * ctypedef Matrix2x2 (*MatrixCopyMatOp)(Matrix2x2*, Matrix2x2) nogil + * ctypedef Matrix2x2* (*MatrixSelfSclOp)(Matrix2x2*, FLOAT_T) nogil + * ctypedef Matrix2x2 (*MatrixCopySclOp)(Matrix2x2*, FLOAT_T) nogil # <<<<<<<<<<<<<< + * + * + */ +typedef __pyx_t_6squish_4core_Matrix2x2 (*__pyx_t_6squish_4core_MatrixCopySclOp)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); + +/* "squish/core.pxd":52 + * + * + * ctypedef struct VectorSelfOps: # <<<<<<<<<<<<<< + * Vector2D* (*neg)(Vector2D*) nogil + * + */ +struct __pyx_t_6squish_4core_VectorSelfOps { + __pyx_t_6squish_4core_Vector2D *(*neg)(__pyx_t_6squish_4core_Vector2D *); + __pyx_t_6squish_4core_VectorSelfVecOp vadd; + __pyx_t_6squish_4core_VectorSelfVecOp vsub; + __pyx_t_6squish_4core_VectorSelfVecOp vmul; + __pyx_t_6squish_4core_VectorSelfVecOp vdiv; + __pyx_t_6squish_4core_Vector2D *(*matmul)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_VectorSelfSclOp sadd; + __pyx_t_6squish_4core_VectorSelfSclOp ssub; + __pyx_t_6squish_4core_VectorSelfSclOp smul; + __pyx_t_6squish_4core_VectorSelfSclOp sdiv; +}; + +/* "squish/core.pxd":67 + * + * + * ctypedef struct VectorCopyOps: # <<<<<<<<<<<<<< + * Vector2D (*neg)(Vector2D*) nogil + * + */ +struct __pyx_t_6squish_4core_VectorCopyOps { + __pyx_t_6squish_4core_Vector2D (*neg)(__pyx_t_6squish_4core_Vector2D *); + __pyx_t_6squish_4core_VectorCopyVecOp vadd; + __pyx_t_6squish_4core_VectorCopyVecOp vsub; + __pyx_t_6squish_4core_VectorCopyVecOp vmul; + __pyx_t_6squish_4core_VectorCopyVecOp vdiv; + __pyx_t_6squish_4core_Vector2D (*matmul)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_VectorCopySclOp sadd; + __pyx_t_6squish_4core_VectorCopySclOp ssub; + __pyx_t_6squish_4core_VectorCopySclOp smul; + __pyx_t_6squish_4core_VectorCopySclOp sdiv; +}; + +/* "squish/core.pxd":82 + * + * + * ctypedef struct MatrixSelfOps: # <<<<<<<<<<<<<< + * Matrix2x2* (*neg)(Matrix2x2*) nogil + * + */ +struct __pyx_t_6squish_4core_MatrixSelfOps { + __pyx_t_6squish_4core_Matrix2x2 *(*neg)(__pyx_t_6squish_4core_Matrix2x2 *); + __pyx_t_6squish_4core_MatrixSelfMatOp madd; + __pyx_t_6squish_4core_MatrixSelfMatOp msub; + __pyx_t_6squish_4core_MatrixSelfMatOp mmul; + __pyx_t_6squish_4core_MatrixSelfMatOp mdiv; + __pyx_t_6squish_4core_MatrixSelfMatOp matmul; + __pyx_t_6squish_4core_MatrixSelfSclOp sadd; + __pyx_t_6squish_4core_MatrixSelfSclOp ssub; + __pyx_t_6squish_4core_MatrixSelfSclOp smul; + __pyx_t_6squish_4core_MatrixSelfSclOp sdiv; +}; + +/* "squish/core.pxd":97 + * + * + * ctypedef struct MatrixCopyOps: # <<<<<<<<<<<<<< + * Matrix2x2 (*neg)(Matrix2x2*) nogil + * + */ +struct __pyx_t_6squish_4core_MatrixCopyOps { + __pyx_t_6squish_4core_Matrix2x2 (*neg)(__pyx_t_6squish_4core_Matrix2x2 *); + __pyx_t_6squish_4core_MatrixCopyMatOp madd; + __pyx_t_6squish_4core_MatrixCopyMatOp msub; + __pyx_t_6squish_4core_MatrixCopyMatOp mmul; + __pyx_t_6squish_4core_MatrixCopyMatOp mdiv; + __pyx_t_6squish_4core_MatrixCopyMatOp matmul; + __pyx_t_6squish_4core_MatrixCopySclOp sadd; + __pyx_t_6squish_4core_MatrixCopySclOp ssub; + __pyx_t_6squish_4core_MatrixCopySclOp smul; + __pyx_t_6squish_4core_MatrixCopySclOp sdiv; +}; + +/* "squish/core.pxd":112 + * + * # Psuedo-class for a 2-dimensional vector. No orientation. + * ctypedef struct Vector2D: # <<<<<<<<<<<<<< + * FLOAT_T x, y + * VectorSelfOps self + */ +struct __pyx_t_6squish_4core_Vector2D { + __pyx_t_6squish_4core_FLOAT_T x; + __pyx_t_6squish_4core_FLOAT_T y; + __pyx_t_6squish_4core_VectorSelfOps self; + __pyx_t_6squish_4core_VectorCopyOps copy; + int (*equals)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*rot)(__pyx_t_6squish_4core_Vector2D *); + __pyx_t_6squish_4core_FLOAT_T (*dot)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_FLOAT_T (*mag)(__pyx_t_6squish_4core_Vector2D *); +}; + +/* "squish/core.pxd":123 + * + * # Psuedo-class for a 2x2 matrix. + * ctypedef struct Matrix2x2: # <<<<<<<<<<<<<< + * FLOAT_T a, b, c, d + * MatrixSelfOps self + */ +struct __pyx_t_6squish_4core_Matrix2x2 { + __pyx_t_6squish_4core_FLOAT_T a; + __pyx_t_6squish_4core_FLOAT_T b; + __pyx_t_6squish_4core_FLOAT_T c; + __pyx_t_6squish_4core_FLOAT_T d; + __pyx_t_6squish_4core_MatrixSelfOps self; + __pyx_t_6squish_4core_MatrixCopyOps copy; + int (*equals)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_Vector2D (*vecmul)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Vector2D); +}; +struct __pyx_t_6squish_7voronoi_SiteCacheMap; +typedef struct __pyx_t_6squish_7voronoi_SiteCacheMap __pyx_t_6squish_7voronoi_SiteCacheMap; +struct __pyx_t_6squish_7voronoi_EdgeCacheMap; +typedef struct __pyx_t_6squish_7voronoi_EdgeCacheMap __pyx_t_6squish_7voronoi_EdgeCacheMap; +struct __pyx_t_6squish_7voronoi_VoronoiInfo; +typedef struct __pyx_t_6squish_7voronoi_VoronoiInfo __pyx_t_6squish_7voronoi_VoronoiInfo; +struct __pyx_t_6squish_7voronoi_Site; +typedef struct __pyx_t_6squish_7voronoi_Site __pyx_t_6squish_7voronoi_Site; +struct __pyx_t_6squish_7voronoi_HalfEdge; +typedef struct __pyx_t_6squish_7voronoi_HalfEdge __pyx_t_6squish_7voronoi_HalfEdge; + +/* "squish/voronoi.pxd":5 + * + * # Psuedo-class that handles caching for sites. + * ctypedef struct SiteCacheMap: # <<<<<<<<<<<<<< + * INT_T iarea, iperim, iisoparam, ienergy, iavg_radius, icentroid, imaxcenter + * + */ +struct __pyx_t_6squish_7voronoi_SiteCacheMap { + __pyx_t_6squish_4core_INT_T iarea; + __pyx_t_6squish_4core_INT_T iperim; + __pyx_t_6squish_4core_INT_T iisoparam; + __pyx_t_6squish_4core_INT_T ienergy; + __pyx_t_6squish_4core_INT_T iavg_radius; + __pyx_t_6squish_4core_INT_T icentroid; + __pyx_t_6squish_4core_INT_T imaxcenter; + __pyx_t_6squish_4core_FLOAT_T (*area)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*perim)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*isoparam)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*energy)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*avg_radius)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_Vector2D (*centroid)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*maxcenter)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_Vector2D); +}; + +/* "squish/voronoi.pxd":18 + * + * # Psuedo-class that handles caching for edges. + * ctypedef struct EdgeCacheMap: # <<<<<<<<<<<<<< + * INT_T iH, ila, ida, ixij, idVdv, ila_mag, ida_mag, iarea_p, icalI, size + * + */ +struct __pyx_t_6squish_7voronoi_EdgeCacheMap { + __pyx_t_6squish_4core_INT_T iH; + __pyx_t_6squish_4core_INT_T ila; + __pyx_t_6squish_4core_INT_T ida; + __pyx_t_6squish_4core_INT_T ixij; + __pyx_t_6squish_4core_INT_T idVdv; + __pyx_t_6squish_4core_INT_T ila_mag; + __pyx_t_6squish_4core_INT_T ida_mag; + __pyx_t_6squish_4core_INT_T iarea_p; + __pyx_t_6squish_4core_INT_T icalI; + __pyx_t_6squish_4core_INT_T size; + __pyx_t_6squish_4core_Matrix2x2 (*H)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_Vector2D (*la)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*da)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*xij)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*dVdv)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_FLOAT_T (*la_mag)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*da_mag)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*area_p)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*calI)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_FLOAT_T); +}; + +/* "squish/voronoi.pxd":34 + * + * # Psuedo-class to just contain all pertaining info for sites and edges. + * ctypedef struct VoronoiInfo: # <<<<<<<<<<<<<< + * IArray sites, edges + * FArray points, vertices, site_cache, edge_cache + */ +struct __pyx_t_6squish_7voronoi_VoronoiInfo { + struct __pyx_t_6squish_4core_IArray sites; + struct __pyx_t_6squish_4core_IArray edges; + __pyx_t_6squish_4core_FArray points; + __pyx_t_6squish_4core_FArray vertices; + __pyx_t_6squish_4core_FArray site_cache; + __pyx_t_6squish_4core_FArray edge_cache; + __pyx_t_6squish_7voronoi_EdgeCacheMap *edge_cache_map; +}; + +/* "squish/voronoi.pxd":40 + * + * # Psuedo-class for a Site. + * ctypedef struct Site: # <<<<<<<<<<<<<< + * INT_T arr_index + * VoronoiInfo* info + */ +struct __pyx_t_6squish_7voronoi_Site { + __pyx_t_6squish_4core_INT_T arr_index; + __pyx_t_6squish_7voronoi_VoronoiInfo *info; + __pyx_t_6squish_7voronoi_SiteCacheMap *cache; + __pyx_t_6squish_4core_INT_T (*index)(__pyx_t_6squish_7voronoi_Site *); + __pyx_t_6squish_4core_Vector2D (*vec)(__pyx_t_6squish_7voronoi_Site *); + __pyx_t_6squish_7voronoi_HalfEdge (*edge)(__pyx_t_6squish_7voronoi_Site *); + __pyx_t_6squish_4core_INT_T (*edge_num)(__pyx_t_6squish_7voronoi_Site *); +}; + +/* "squish/voronoi.pxd":51 + * + * # Psuedo-class for an HalfEdge. + * ctypedef struct HalfEdge: # <<<<<<<<<<<<<< + * INT_T orig_arr_index, arr_index + * VoronoiInfo* info + */ +struct __pyx_t_6squish_7voronoi_HalfEdge { + __pyx_t_6squish_4core_INT_T orig_arr_index; + __pyx_t_6squish_4core_INT_T arr_index; + __pyx_t_6squish_7voronoi_VoronoiInfo *info; + __pyx_t_6squish_7voronoi_EdgeCacheMap *cache; + __pyx_t_6squish_4core_INT_T (*origin_index)(__pyx_t_6squish_7voronoi_HalfEdge *); + __pyx_t_6squish_4core_Vector2D (*origin)(__pyx_t_6squish_7voronoi_HalfEdge *); + __pyx_t_6squish_7voronoi_Site (*face)(__pyx_t_6squish_7voronoi_HalfEdge *); + __pyx_t_6squish_7voronoi_HalfEdge (*next)(__pyx_t_6squish_7voronoi_HalfEdge *); + __pyx_t_6squish_7voronoi_HalfEdge (*prev)(__pyx_t_6squish_7voronoi_HalfEdge *); + __pyx_t_6squish_7voronoi_HalfEdge (*twin)(__pyx_t_6squish_7voronoi_HalfEdge *); + __pyx_t_6squish_4core_Matrix2x2 (*get_H)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_7voronoi_Site); +}; + +/* "squish/voronoi.pxd":65 + * + * + * cdef class VoronoiContainer: # <<<<<<<<<<<<<< + * cdef readonly INT_T n + * cdef readonly FLOAT_T w, h, r, energy + */ +struct __pyx_obj_6squish_7voronoi_VoronoiContainer { + PyObject_HEAD + struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer *__pyx_vtab; + __pyx_t_6squish_4core_INT_T n; + __pyx_t_6squish_4core_FLOAT_T w; + __pyx_t_6squish_4core_FLOAT_T h; + __pyx_t_6squish_4core_FLOAT_T r; + __pyx_t_6squish_4core_FLOAT_T energy; + __pyx_t_6squish_4core_FLOAT_T dim[2]; + __Pyx_memviewslice points; + __Pyx_memviewslice vertices; + __Pyx_memviewslice site_cache; + __Pyx_memviewslice edge_cache; + __Pyx_memviewslice grad; + __Pyx_memviewslice sites; + __Pyx_memviewslice edges; + __pyx_t_6squish_7voronoi_EdgeCacheMap *edge_cache_map; + PyObject *__dict__; +}; + + +/* "squish/energy.pyx":20 + * cdef EdgeCacheMap RADIALT_ECM = _EdgeCacheMap(0, 4, 6, 8, -1, 10, 11, 12, 13, 14) + * + * cdef class AreaEnergy(VoronoiContainer): # <<<<<<<<<<<<<< + * """ + * Class for formulas relevant to the Area energy. + */ +struct __pyx_obj_6squish_6energy_AreaEnergy { + struct __pyx_obj_6squish_7voronoi_VoronoiContainer __pyx_base; +}; + + +/* "squish/energy.pyx":116 + * + * + * cdef class RadialALEnergy(VoronoiContainer): # <<<<<<<<<<<<<< + * """ + * Class for formulas relevant to the Area energy. + */ +struct __pyx_obj_6squish_6energy_RadialALEnergy { + struct __pyx_obj_6squish_7voronoi_VoronoiContainer __pyx_base; +}; + + +/* "squish/energy.pyx":152 + * + * + * cdef class RadialTEnergy(VoronoiContainer): # <<<<<<<<<<<<<< + * """ + * Class for formulas relevant to the Area energy. + */ +struct __pyx_obj_6squish_6energy_RadialTEnergy { + struct __pyx_obj_6squish_7voronoi_VoronoiContainer __pyx_base; +}; + + +/* "View.MemoryView":105 + * + * @cname("__pyx_array") + * cdef class array: # <<<<<<<<<<<<<< + * + * cdef: + */ +struct __pyx_array_obj { + PyObject_HEAD + struct __pyx_vtabstruct_array *__pyx_vtab; + char *data; + Py_ssize_t len; + char *format; + int ndim; + Py_ssize_t *_shape; + Py_ssize_t *_strides; + Py_ssize_t itemsize; + PyObject *mode; + PyObject *_format; + void (*callback_free_data)(void *); + int free_data; + int dtype_is_object; +}; + + +/* "View.MemoryView":279 + * + * @cname('__pyx_MemviewEnum') + * cdef class Enum(object): # <<<<<<<<<<<<<< + * cdef object name + * def __init__(self, name): + */ +struct __pyx_MemviewEnum_obj { + PyObject_HEAD + PyObject *name; +}; + + +/* "View.MemoryView":330 + * + * @cname('__pyx_memoryview') + * cdef class memoryview(object): # <<<<<<<<<<<<<< + * + * cdef object obj + */ +struct __pyx_memoryview_obj { + PyObject_HEAD + struct __pyx_vtabstruct_memoryview *__pyx_vtab; + PyObject *obj; + PyObject *_size; + PyObject *_array_interface; + PyThread_type_lock lock; + __pyx_atomic_int acquisition_count[2]; + __pyx_atomic_int *acquisition_count_aligned_p; + Py_buffer view; + int flags; + int dtype_is_object; + __Pyx_TypeInfo *typeinfo; +}; + + +/* "View.MemoryView":965 + * + * @cname('__pyx_memoryviewslice') + * cdef class _memoryviewslice(memoryview): # <<<<<<<<<<<<<< + * "Internal class for passing memoryview slices to Python" + * + */ +struct __pyx_memoryviewslice_obj { + struct __pyx_memoryview_obj __pyx_base; + __Pyx_memviewslice from_slice; + PyObject *from_object; + PyObject *(*to_object_func)(char *); + int (*to_dtype_func)(char *, PyObject *); +}; + + + +/* "squish/voronoi.pxd":65 + * + * + * cdef class VoronoiContainer: # <<<<<<<<<<<<<< + * cdef readonly INT_T n + * cdef readonly FLOAT_T w, h, r, energy + */ + +struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer { + void (*calculate_voronoi)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *, PyArrayObject *); + void (*generate_dcel)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *); + void (*common_cache)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *); + void (*precompute)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *); + void (*calc_grad)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *); + void (*get_statistics)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *); + __pyx_t_6squish_4core_Matrix2x2 (*calc_H)(__pyx_t_6squish_7voronoi_HalfEdge, __pyx_t_6squish_7voronoi_HalfEdge); + int (*sign)(__Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice); +}; +static struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer *__pyx_vtabptr_6squish_7voronoi_VoronoiContainer; + + +/* "squish/energy.pyx":20 + * cdef EdgeCacheMap RADIALT_ECM = _EdgeCacheMap(0, 4, 6, 8, -1, 10, 11, 12, 13, 14) + * + * cdef class AreaEnergy(VoronoiContainer): # <<<<<<<<<<<<<< + * """ + * Class for formulas relevant to the Area energy. + */ + +struct __pyx_vtabstruct_6squish_6energy_AreaEnergy { + struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer __pyx_base; +}; +static struct __pyx_vtabstruct_6squish_6energy_AreaEnergy *__pyx_vtabptr_6squish_6energy_AreaEnergy; + + +/* "squish/energy.pyx":116 + * + * + * cdef class RadialALEnergy(VoronoiContainer): # <<<<<<<<<<<<<< + * """ + * Class for formulas relevant to the Area energy. + */ + +struct __pyx_vtabstruct_6squish_6energy_RadialALEnergy { + struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer __pyx_base; +}; +static struct __pyx_vtabstruct_6squish_6energy_RadialALEnergy *__pyx_vtabptr_6squish_6energy_RadialALEnergy; + + +/* "squish/energy.pyx":152 + * + * + * cdef class RadialTEnergy(VoronoiContainer): # <<<<<<<<<<<<<< + * """ + * Class for formulas relevant to the Area energy. + */ + +struct __pyx_vtabstruct_6squish_6energy_RadialTEnergy { + struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer __pyx_base; +}; +static struct __pyx_vtabstruct_6squish_6energy_RadialTEnergy *__pyx_vtabptr_6squish_6energy_RadialTEnergy; + + +/* "View.MemoryView":105 + * + * @cname("__pyx_array") + * cdef class array: # <<<<<<<<<<<<<< + * + * cdef: + */ + +struct __pyx_vtabstruct_array { + PyObject *(*get_memview)(struct __pyx_array_obj *); +}; +static struct __pyx_vtabstruct_array *__pyx_vtabptr_array; + + +/* "View.MemoryView":330 + * + * @cname('__pyx_memoryview') + * cdef class memoryview(object): # <<<<<<<<<<<<<< + * + * cdef object obj + */ + +struct __pyx_vtabstruct_memoryview { + char *(*get_item_pointer)(struct __pyx_memoryview_obj *, PyObject *); + PyObject *(*is_slice)(struct __pyx_memoryview_obj *, PyObject *); + PyObject *(*setitem_slice_assignment)(struct __pyx_memoryview_obj *, PyObject *, PyObject *); + PyObject *(*setitem_slice_assign_scalar)(struct __pyx_memoryview_obj *, struct __pyx_memoryview_obj *, PyObject *); + PyObject *(*setitem_indexed)(struct __pyx_memoryview_obj *, PyObject *, PyObject *); + PyObject *(*convert_item_to_object)(struct __pyx_memoryview_obj *, char *); + PyObject *(*assign_item_from_object)(struct __pyx_memoryview_obj *, char *, PyObject *); +}; +static struct __pyx_vtabstruct_memoryview *__pyx_vtabptr_memoryview; + + +/* "View.MemoryView":965 + * + * @cname('__pyx_memoryviewslice') + * cdef class _memoryviewslice(memoryview): # <<<<<<<<<<<<<< + * "Internal class for passing memoryview slices to Python" + * + */ + +struct __pyx_vtabstruct__memoryviewslice { + struct __pyx_vtabstruct_memoryview __pyx_base; +}; +static struct __pyx_vtabstruct__memoryviewslice *__pyx_vtabptr__memoryviewslice; + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, int); + void (*DECREF)(void*, PyObject*, int); + void (*GOTREF)(void*, PyObject*, int); + void (*GIVEREF)(void*, PyObject*, int); + void* (*SetupContext)(const char*, int, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; +#ifdef WITH_THREAD + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ + } +#else + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) +#endif + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* PyObjectGetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ + const char* function_name); + +/* ArgTypeTest.proto */ +#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ + ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\ + __Pyx__ArgTypeTest(obj, type, name, exact)) +static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); + +/* IsLittleEndian.proto */ +static CYTHON_INLINE int __Pyx_Is_Little_Endian(void); + +/* BufferFormatCheck.proto */ +static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts); +static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, + __Pyx_BufFmt_StackElem* stack, + __Pyx_TypeInfo* type); + +/* BufferGetAndValidate.proto */ +#define __Pyx_GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack)\ + ((obj == Py_None || obj == NULL) ?\ + (__Pyx_ZeroBuffer(buf), 0) :\ + __Pyx__GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack)) +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_ZeroBuffer(Py_buffer* buf); +static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info); +static Py_ssize_t __Pyx_minusones[] = { -1, -1, -1, -1, -1, -1, -1, -1 }; +static Py_ssize_t __Pyx_zeros[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + +/* PyObjectCall.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +#if 1 || PY_VERSION_HEX < 0x030600B1 +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); +#else +#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) +#endif +#define __Pyx_BUILD_ASSERT_EXPR(cond)\ + (sizeof(char [1 - 2*!(cond)]) - 1) +#ifndef Py_MEMBER_SIZE +#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) +#endif + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets()\ + ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ + (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) + #define __Pyx_PyFrame_GetLocalsplus(frame)\ + (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) +#endif + +/* PyCFunctionFastCall.proto */ +#if CYTHON_FAST_PYCCALL +static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); +#else +#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) +#endif + +/* PyObjectSetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL) +static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value); +#else +#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) +#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) +#endif + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* PyDictVersioning.proto */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) +#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ + (version_var) = __PYX_GET_DICT_VERSION(dict);\ + (cache_var) = (value); +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ + (VAR) = __pyx_dict_cached_value;\ + } else {\ + (VAR) = __pyx_dict_cached_value = (LOOKUP);\ + __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ + }\ +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); +#else +#define __PYX_GET_DICT_VERSION(dict) (0) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); +#endif + +/* GetModuleGlobalName.proto */ +#if CYTHON_USE_DICT_VERSIONS +#define __Pyx_GetModuleGlobalName(var, name) {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ + (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ + __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} +#define __Pyx_GetModuleGlobalNameUncached(var, name) {\ + PY_UINT64_T __pyx_dict_version;\ + PyObject *__pyx_dict_cached_value;\ + (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); +#else +#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) +#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); +#endif + +/* MemviewSliceInit.proto */ +#define __Pyx_BUF_MAX_NDIMS %(BUF_MAX_NDIMS)d +#define __Pyx_MEMVIEW_DIRECT 1 +#define __Pyx_MEMVIEW_PTR 2 +#define __Pyx_MEMVIEW_FULL 4 +#define __Pyx_MEMVIEW_CONTIG 8 +#define __Pyx_MEMVIEW_STRIDED 16 +#define __Pyx_MEMVIEW_FOLLOW 32 +#define __Pyx_IS_C_CONTIG 1 +#define __Pyx_IS_F_CONTIG 2 +static int __Pyx_init_memviewslice( + struct __pyx_memoryview_obj *memview, + int ndim, + __Pyx_memviewslice *memviewslice, + int memview_is_new_reference); +static CYTHON_INLINE int __pyx_add_acquisition_count_locked( + __pyx_atomic_int *acquisition_count, PyThread_type_lock lock); +static CYTHON_INLINE int __pyx_sub_acquisition_count_locked( + __pyx_atomic_int *acquisition_count, PyThread_type_lock lock); +#define __pyx_get_slice_count_pointer(memview) (memview->acquisition_count_aligned_p) +#define __pyx_get_slice_count(memview) (*__pyx_get_slice_count_pointer(memview)) +#define __PYX_INC_MEMVIEW(slice, have_gil) __Pyx_INC_MEMVIEW(slice, have_gil, __LINE__) +#define __PYX_XDEC_MEMVIEW(slice, have_gil) __Pyx_XDEC_MEMVIEW(slice, have_gil, __LINE__) +static CYTHON_INLINE void __Pyx_INC_MEMVIEW(__Pyx_memviewslice *, int, int); +static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *, int, int); + +/* PyObjectCall2Args.proto */ +static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); + +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* RaiseException.proto */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* GetTopmostException.proto */ +#if CYTHON_USE_EXC_INFO_STACK +static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); +#endif + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* GetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* IncludeStringH.proto */ +#include + +/* BytesEquals.proto */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); + +/* UnicodeEquals.proto */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); + +/* StrEquals.proto */ +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals +#else +#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals +#endif + +/* UnaryNegOverflows.proto */ +#define UNARY_NEG_WOULD_OVERFLOW(x)\ + (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x))) + +static CYTHON_UNUSED int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ +static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *); /*proto*/ +/* GetAttr.proto */ +static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); + +/* GetItemInt.proto */ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ + __Pyx_GetItemInt_Generic(o, to_py_func(i)))) +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck); + +/* ObjectGetItem.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key); +#else +#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) +#endif + +/* decode_c_string_utf16.proto */ +static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) { + int byteorder = 0; + return PyUnicode_DecodeUTF16(s, size, errors, &byteorder); +} +static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16LE(const char *s, Py_ssize_t size, const char *errors) { + int byteorder = -1; + return PyUnicode_DecodeUTF16(s, size, errors, &byteorder); +} +static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16BE(const char *s, Py_ssize_t size, const char *errors) { + int byteorder = 1; + return PyUnicode_DecodeUTF16(s, size, errors, &byteorder); +} + +/* decode_c_string.proto */ +static CYTHON_INLINE PyObject* __Pyx_decode_c_string( + const char* cstring, Py_ssize_t start, Py_ssize_t stop, + const char* encoding, const char* errors, + PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)); + +/* GetAttr3.proto */ +static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); + +/* RaiseTooManyValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); + +/* RaiseNeedMoreValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); + +/* RaiseNoneIterError.proto */ +static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); + +/* ExtTypeTest.proto */ +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); + +/* SwapException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* Import.proto */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) +#endif +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) + +static CYTHON_UNUSED int __pyx_memoryview_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ +/* ListCompAppend.proto */ +#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS +static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { + PyListObject* L = (PyListObject*) list; + Py_ssize_t len = Py_SIZE(list); + if (likely(L->allocated > len)) { + Py_INCREF(x); + PyList_SET_ITEM(list, len, x); + __Pyx_SET_SIZE(list, len + 1); + return 0; + } + return PyList_Append(list, x); +} +#else +#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x) +#endif + +/* PyIntBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); +#else +#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\ + (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) +#endif + +/* ListExtend.proto */ +static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) { +#if CYTHON_COMPILING_IN_CPYTHON + PyObject* none = _PyList_Extend((PyListObject*)L, v); + if (unlikely(!none)) + return -1; + Py_DECREF(none); + return 0; +#else + return PyList_SetSlice(L, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, v); +#endif +} + +/* ListAppend.proto */ +#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS +static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { + PyListObject* L = (PyListObject*) list; + Py_ssize_t len = Py_SIZE(list); + if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { + Py_INCREF(x); + PyList_SET_ITEM(list, len, x); + __Pyx_SET_SIZE(list, len + 1); + return 0; + } + return PyList_Append(list, x); +} +#else +#define __Pyx_PyList_Append(L,x) PyList_Append(L,x) +#endif + +/* None.proto */ +static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); + +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); + +/* HasAttr.proto */ +static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); + +/* CallNextTpDealloc.proto */ +static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc); + +/* CallNextTpTraverse.proto */ +static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse); + +/* CallNextTpClear.proto */ +static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_dealloc); + +/* PyObject_GenericGetAttrNoDict.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr +#endif + +/* PyObject_GenericGetAttr.proto */ +#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr +#endif + +/* TypeImport.proto */ +#ifndef __PYX_HAVE_RT_ImportType_proto +#define __PYX_HAVE_RT_ImportType_proto +enum __Pyx_ImportType_CheckSize { + __Pyx_ImportType_CheckSize_Error = 0, + __Pyx_ImportType_CheckSize_Warn = 1, + __Pyx_ImportType_CheckSize_Ignore = 2 +}; +static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size); +#endif + +/* GetVTable.proto */ +static void* __Pyx_GetVtable(PyObject *dict); + +/* SetVTable.proto */ +static int __Pyx_SetVtable(PyObject *dict, void *vtable); + +/* PyObjectGetAttrStrNoError.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); + +/* SetupReduce.proto */ +static int __Pyx_setup_reduce(PyObject* type_obj); + +/* CLineInTraceback.proto */ +#ifdef CYTHON_CLINE_IN_TRACEBACK +#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) +#else +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); +#endif + +/* CodeObjectCache.proto */ +typedef struct { + PyCodeObject* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; +}; +static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static PyCodeObject *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +#if PY_MAJOR_VERSION < 3 + static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags); + static void __Pyx_ReleaseBuffer(Py_buffer *view); +#else + #define __Pyx_GetBuffer PyObject_GetBuffer + #define __Pyx_ReleaseBuffer PyBuffer_Release +#endif + + +/* BufferStructDeclare.proto */ +typedef struct { + Py_ssize_t shape, strides, suboffsets; +} __Pyx_Buf_DimInfo; +typedef struct { + size_t refcount; + Py_buffer pybuffer; +} __Pyx_Buffer; +typedef struct { + __Pyx_Buffer *rcbuffer; + char *data; + __Pyx_Buf_DimInfo diminfo[8]; +} __Pyx_LocalBuf_ND; + +/* MemviewSliceIsContig.proto */ +static int __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim); + +/* OverlappingSlices.proto */ +static int __pyx_slices_overlap(__Pyx_memviewslice *slice1, + __Pyx_memviewslice *slice2, + int ndim, size_t itemsize); + +/* Capsule.proto */ +static CYTHON_INLINE PyObject *__pyx_capsule_create(void *p, const char *sig); + +/* GCCDiagnostics.proto */ +#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) +#define __Pyx_HAS_GCC_DIAGNOSTIC +#endif + +/* TypeInfoCompare.proto */ +static int __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b); + +/* MemviewSliceValidateAndInit.proto */ +static int __Pyx_ValidateAndInit_memviewslice( + int *axes_specs, + int c_or_f_flag, + int buf_flags, + int ndim, + __Pyx_TypeInfo *dtype, + __Pyx_BufFmt_StackElem stack[], + __Pyx_memviewslice *memviewslice, + PyObject *original_obj); + +/* ObjectToMemviewSlice.proto */ +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_6squish_4core_FLOAT_T(PyObject *, int writable_flag); + +/* MemviewDtypeToObject.proto */ +static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_6squish_4core_FLOAT_T(const char *itemp); +static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_6squish_4core_FLOAT_T(const char *itemp, PyObject *obj); + +/* ObjectToMemviewSlice.proto */ +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_6squish_4core_FLOAT_T(PyObject *, int writable_flag); + +/* RealImag.proto */ +#if CYTHON_CCOMPLEX + #ifdef __cplusplus + #define __Pyx_CREAL(z) ((z).real()) + #define __Pyx_CIMAG(z) ((z).imag()) + #else + #define __Pyx_CREAL(z) (__real__(z)) + #define __Pyx_CIMAG(z) (__imag__(z)) + #endif +#else + #define __Pyx_CREAL(z) ((z).real) + #define __Pyx_CIMAG(z) ((z).imag) +#endif +#if defined(__cplusplus) && CYTHON_CCOMPLEX\ + && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103) + #define __Pyx_SET_CREAL(z,x) ((z).real(x)) + #define __Pyx_SET_CIMAG(z,y) ((z).imag(y)) +#else + #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x) + #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y) +#endif + +/* Arithmetic.proto */ +#if CYTHON_CCOMPLEX + #define __Pyx_c_eq_float(a, b) ((a)==(b)) + #define __Pyx_c_sum_float(a, b) ((a)+(b)) + #define __Pyx_c_diff_float(a, b) ((a)-(b)) + #define __Pyx_c_prod_float(a, b) ((a)*(b)) + #define __Pyx_c_quot_float(a, b) ((a)/(b)) + #define __Pyx_c_neg_float(a) (-(a)) + #ifdef __cplusplus + #define __Pyx_c_is_zero_float(z) ((z)==(float)0) + #define __Pyx_c_conj_float(z) (::std::conj(z)) + #if 1 + #define __Pyx_c_abs_float(z) (::std::abs(z)) + #define __Pyx_c_pow_float(a, b) (::std::pow(a, b)) + #endif + #else + #define __Pyx_c_is_zero_float(z) ((z)==0) + #define __Pyx_c_conj_float(z) (conjf(z)) + #if 1 + #define __Pyx_c_abs_float(z) (cabsf(z)) + #define __Pyx_c_pow_float(a, b) (cpowf(a, b)) + #endif + #endif +#else + static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex, __pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex); + static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex); + #if 1 + static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex); + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex, __pyx_t_float_complex); + #endif +#endif + +/* Arithmetic.proto */ +#if CYTHON_CCOMPLEX + #define __Pyx_c_eq_double(a, b) ((a)==(b)) + #define __Pyx_c_sum_double(a, b) ((a)+(b)) + #define __Pyx_c_diff_double(a, b) ((a)-(b)) + #define __Pyx_c_prod_double(a, b) ((a)*(b)) + #define __Pyx_c_quot_double(a, b) ((a)/(b)) + #define __Pyx_c_neg_double(a) (-(a)) + #ifdef __cplusplus + #define __Pyx_c_is_zero_double(z) ((z)==(double)0) + #define __Pyx_c_conj_double(z) (::std::conj(z)) + #if 1 + #define __Pyx_c_abs_double(z) (::std::abs(z)) + #define __Pyx_c_pow_double(a, b) (::std::pow(a, b)) + #endif + #else + #define __Pyx_c_is_zero_double(z) ((z)==0) + #define __Pyx_c_conj_double(z) (conj(z)) + #if 1 + #define __Pyx_c_abs_double(z) (cabs(z)) + #define __Pyx_c_pow_double(a, b) (cpow(a, b)) + #endif + #endif +#else + static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex, __pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex); + static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex); + #if 1 + static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex); + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex, __pyx_t_double_complex); + #endif +#endif + +/* MemviewSliceCopyTemplate.proto */ +static __Pyx_memviewslice +__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs, + const char *mode, int ndim, + size_t sizeof_dtype, int contig_flag, + int dtype_is_object); + +/* CIntFromPy.proto */ +static CYTHON_INLINE npy_int64 __Pyx_PyInt_As_npy_int64(PyObject *); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int64(npy_int64 value); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); + +/* CIntFromPy.proto */ +static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *); + +/* CheckBinaryVersion.proto */ +static int __Pyx_check_binary_version(void); + +/* VoidPtrImport.proto */ +static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig); + +/* FunctionImport.proto */ +static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); + +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); + +static void __pyx_f_6squish_6energy_10AreaEnergy_precompute(struct __pyx_obj_6squish_6energy_AreaEnergy *__pyx_v_self); /* proto*/ +static void __pyx_f_6squish_6energy_10AreaEnergy_calc_grad(struct __pyx_obj_6squish_6energy_AreaEnergy *__pyx_v_self); /* proto*/ +static void __pyx_f_6squish_6energy_14RadialALEnergy_precompute(struct __pyx_obj_6squish_6energy_RadialALEnergy *__pyx_v_self); /* proto*/ +static void __pyx_f_6squish_6energy_14RadialALEnergy_calc_grad(struct __pyx_obj_6squish_6energy_RadialALEnergy *__pyx_v_self); /* proto*/ +static void __pyx_f_6squish_6energy_13RadialTEnergy_precompute(struct __pyx_obj_6squish_6energy_RadialTEnergy *__pyx_v_self); /* proto*/ +static void __pyx_f_6squish_6energy_13RadialTEnergy_calc_grad(struct __pyx_obj_6squish_6energy_RadialTEnergy *__pyx_v_self); /* proto*/ +static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self); /* proto*/ +static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index); /* proto*/ +static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj); /* proto*/ +static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_src); /* proto*/ +static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memoryview_obj *__pyx_v_self, struct __pyx_memoryview_obj *__pyx_v_dst, PyObject *__pyx_v_value); /* proto*/ +static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /* proto*/ +static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp); /* proto*/ +static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value); /* proto*/ +static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp); /* proto*/ +static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value); /* proto*/ + +/* Module declarations from 'cpython.buffer' */ + +/* Module declarations from 'libc.string' */ + +/* Module declarations from 'libc.stdio' */ + +/* Module declarations from '__builtin__' */ + +/* Module declarations from 'cpython.type' */ +static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0; + +/* Module declarations from 'cpython' */ + +/* Module declarations from 'cpython.object' */ + +/* Module declarations from 'cpython.ref' */ + +/* Module declarations from 'cpython.mem' */ + +/* 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 PyTypeObject *__pyx_ptype_5numpy_generic = 0; +static PyTypeObject *__pyx_ptype_5numpy_number = 0; +static PyTypeObject *__pyx_ptype_5numpy_integer = 0; +static PyTypeObject *__pyx_ptype_5numpy_signedinteger = 0; +static PyTypeObject *__pyx_ptype_5numpy_unsignedinteger = 0; +static PyTypeObject *__pyx_ptype_5numpy_inexact = 0; +static PyTypeObject *__pyx_ptype_5numpy_floating = 0; +static PyTypeObject *__pyx_ptype_5numpy_complexfloating = 0; +static PyTypeObject *__pyx_ptype_5numpy_flexible = 0; +static PyTypeObject *__pyx_ptype_5numpy_character = 0; +static PyTypeObject *__pyx_ptype_5numpy_ufunc = 0; + +/* Module declarations from 'libc.math' */ + +/* Module declarations from 'squish.core' */ +static __pyx_t_6squish_4core_BitSet (*__pyx_f_6squish_4core__BitSet)(__pyx_t_6squish_4core_INT_T); /*proto*/ +static __pyx_t_6squish_4core_Vector2D (*__pyx_f_6squish_4core__Vector2D)(__pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static __pyx_t_6squish_4core_Matrix2x2 (*__pyx_f_6squish_4core__Matrix2x2)(__pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ + +/* Module declarations from 'squish.voronoi' */ +static PyTypeObject *__pyx_ptype_6squish_7voronoi_VoronoiContainer = 0; +static __pyx_t_6squish_4core_Vector2D *__pyx_vp_6squish_7voronoi_NAN_VECTOR = 0; +#define __pyx_v_6squish_7voronoi_NAN_VECTOR (*__pyx_vp_6squish_7voronoi_NAN_VECTOR) +static __pyx_t_6squish_4core_Matrix2x2 *__pyx_vp_6squish_7voronoi_R = 0; +#define __pyx_v_6squish_7voronoi_R (*__pyx_vp_6squish_7voronoi_R) +static __pyx_t_6squish_4core_Matrix2x2 *__pyx_vp_6squish_7voronoi_NAN_MATRIX = 0; +#define __pyx_v_6squish_7voronoi_NAN_MATRIX (*__pyx_vp_6squish_7voronoi_NAN_MATRIX) +static __pyx_t_6squish_7voronoi_EdgeCacheMap (*__pyx_f_6squish_7voronoi__EdgeCacheMap)(__pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T); /*proto*/ +static __pyx_t_6squish_7voronoi_VoronoiInfo (*__pyx_f_6squish_7voronoi__VoronoiInfo)(__Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __pyx_t_6squish_7voronoi_EdgeCacheMap *); /*proto*/ +static __pyx_t_6squish_7voronoi_Site (*__pyx_f_6squish_7voronoi__Site)(__pyx_t_6squish_4core_INT_T, __pyx_t_6squish_7voronoi_VoronoiInfo *); /*proto*/ +static __pyx_t_6squish_7voronoi_HalfEdge (*__pyx_f_6squish_7voronoi__HalfEdge)(__pyx_t_6squish_4core_INT_T, __pyx_t_6squish_7voronoi_VoronoiInfo *); /*proto*/ + +/* Module declarations from 'squish.energy' */ +static PyTypeObject *__pyx_ptype_6squish_6energy_AreaEnergy = 0; +static PyTypeObject *__pyx_ptype_6squish_6energy_RadialALEnergy = 0; +static PyTypeObject *__pyx_ptype_6squish_6energy_RadialTEnergy = 0; +static PyTypeObject *__pyx_array_type = 0; +static PyTypeObject *__pyx_MemviewEnum_type = 0; +static PyTypeObject *__pyx_memoryview_type = 0; +static PyTypeObject *__pyx_memoryviewslice_type = 0; +static __pyx_t_6squish_7voronoi_EdgeCacheMap __pyx_v_6squish_6energy_AREA_ECM; +static __pyx_t_6squish_7voronoi_EdgeCacheMap __pyx_v_6squish_6energy_RADIALT_ECM; +static PyObject *generic = 0; +static PyObject *strided = 0; +static PyObject *indirect = 0; +static PyObject *contiguous = 0; +static PyObject *indirect_contiguous = 0; +static int __pyx_memoryview_thread_locks_used; +static PyThread_type_lock __pyx_memoryview_thread_locks[8]; +static struct __pyx_array_obj *__pyx_array_new(PyObject *, Py_ssize_t, char *, char *, char *); /*proto*/ +static void *__pyx_align_pointer(void *, size_t); /*proto*/ +static PyObject *__pyx_memoryview_new(PyObject *, int, int, __Pyx_TypeInfo *); /*proto*/ +static CYTHON_INLINE int __pyx_memoryview_check(PyObject *); /*proto*/ +static PyObject *_unellipsify(PyObject *, int); /*proto*/ +static PyObject *assert_direct_dimensions(Py_ssize_t *, int); /*proto*/ +static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_obj *, PyObject *); /*proto*/ +static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *, Py_ssize_t, Py_ssize_t, Py_ssize_t, int, int, int *, Py_ssize_t, Py_ssize_t, Py_ssize_t, int, int, int, int); /*proto*/ +static char *__pyx_pybuffer_index(Py_buffer *, char *, Py_ssize_t, Py_ssize_t); /*proto*/ +static int __pyx_memslice_transpose(__Pyx_memviewslice *); /*proto*/ +static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice, int, PyObject *(*)(char *), int (*)(char *, PyObject *), int); /*proto*/ +static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __pyx_memoryview_obj *, __Pyx_memviewslice *); /*proto*/ +static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *, __Pyx_memviewslice *); /*proto*/ +static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *); /*proto*/ +static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview_obj *, __Pyx_memviewslice *); /*proto*/ +static Py_ssize_t abs_py_ssize_t(Py_ssize_t); /*proto*/ +static char __pyx_get_best_slice_order(__Pyx_memviewslice *, int); /*proto*/ +static void _copy_strided_to_strided(char *, Py_ssize_t *, char *, Py_ssize_t *, Py_ssize_t *, Py_ssize_t *, int, size_t); /*proto*/ +static void copy_strided_to_strided(__Pyx_memviewslice *, __Pyx_memviewslice *, int, size_t); /*proto*/ +static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *, int); /*proto*/ +static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *, Py_ssize_t *, Py_ssize_t, int, char); /*proto*/ +static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *, __Pyx_memviewslice *, char, int); /*proto*/ +static int __pyx_memoryview_err_extents(int, Py_ssize_t, Py_ssize_t); /*proto*/ +static int __pyx_memoryview_err_dim(PyObject *, char *, int); /*proto*/ +static int __pyx_memoryview_err(PyObject *, char *); /*proto*/ +static int __pyx_memoryview_copy_contents(__Pyx_memviewslice, __Pyx_memviewslice, int, int, int); /*proto*/ +static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *, int, int); /*proto*/ +static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *, int, int, int); /*proto*/ +static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *, Py_ssize_t *, Py_ssize_t *, int, int); /*proto*/ +static void __pyx_memoryview_refcount_objects_in_slice(char *, Py_ssize_t *, Py_ssize_t *, int, int); /*proto*/ +static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *, int, size_t, void *, int); /*proto*/ +static void __pyx_memoryview__slice_assign_scalar(char *, Py_ssize_t *, Py_ssize_t *, int, size_t, void *); /*proto*/ +static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *, PyObject *); /*proto*/ +static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_6squish_4core_FLOAT_T = { "FLOAT_T", NULL, sizeof(__pyx_t_6squish_4core_FLOAT_T), { 0 }, 0, 'R', 0, 0 }; +#define __Pyx_MODULE_NAME "squish.energy" +extern int __pyx_module_is_main_squish__energy; +int __pyx_module_is_main_squish__energy = 0; + +/* Implementation of 'squish.energy' */ +static PyObject *__pyx_builtin_super; +static PyObject *__pyx_builtin_TypeError; +static PyObject *__pyx_builtin_ImportError; +static PyObject *__pyx_builtin_ValueError; +static PyObject *__pyx_builtin_MemoryError; +static PyObject *__pyx_builtin_enumerate; +static PyObject *__pyx_builtin_range; +static PyObject *__pyx_builtin_Ellipsis; +static PyObject *__pyx_builtin_id; +static PyObject *__pyx_builtin_IndexError; +static const char __pyx_k_O[] = "O"; +static const char __pyx_k_c[] = "c"; +static const char __pyx_k_h[] = "h"; +static const char __pyx_k_n[] = "n"; +static const char __pyx_k_r[] = "r"; +static const char __pyx_k_w[] = "w"; +static const char __pyx_k_id[] = "id"; +static const char __pyx_k_np[] = "np"; +static const char __pyx_k_INT[] = "INT"; +static const char __pyx_k_new[] = "__new__"; +static const char __pyx_k_obj[] = "obj"; +static const char __pyx_k_sum[] = "sum"; +static const char __pyx_k_Area[] = "Area"; +static const char __pyx_k_area[] = "area"; +static const char __pyx_k_base[] = "base"; +static const char __pyx_k_dict[] = "__dict__"; +static const char __pyx_k_full[] = "full"; +static const char __pyx_k_init[] = "__init__"; +static const char __pyx_k_main[] = "__main__"; +static const char __pyx_k_mode[] = "mode"; +static const char __pyx_k_name[] = "name"; +static const char __pyx_k_ndim[] = "ndim"; +static const char __pyx_k_pack[] = "pack"; +static const char __pyx_k_size[] = "size"; +static const char __pyx_k_step[] = "step"; +static const char __pyx_k_stop[] = "stop"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_ASCII[] = "ASCII"; +static const char __pyx_k_FLOAT[] = "FLOAT"; +static const char __pyx_k_class[] = "__class__"; +static const char __pyx_k_dtype[] = "dtype"; +static const char __pyx_k_error[] = "error"; +static const char __pyx_k_flags[] = "flags"; +static const char __pyx_k_int64[] = "int64"; +static const char __pyx_k_numpy[] = "numpy"; +static const char __pyx_k_range[] = "range"; +static const char __pyx_k_shape[] = "shape"; +static const char __pyx_k_start[] = "start"; +static const char __pyx_k_super[] = "super"; +static const char __pyx_k_zeros[] = "zeros"; +static const char __pyx_k_encode[] = "encode"; +static const char __pyx_k_format[] = "format"; +static const char __pyx_k_import[] = "__import__"; +static const char __pyx_k_name_2[] = "__name__"; +static const char __pyx_k_pickle[] = "pickle"; +static const char __pyx_k_reduce[] = "__reduce__"; +static const char __pyx_k_struct[] = "struct"; +static const char __pyx_k_unpack[] = "unpack"; +static const char __pyx_k_update[] = "update"; +static const char __pyx_k_float64[] = "float64"; +static const char __pyx_k_fortran[] = "fortran"; +static const char __pyx_k_memview[] = "memview"; +static const char __pyx_k_minimum[] = "minimum"; +static const char __pyx_k_Ellipsis[] = "Ellipsis"; +static const char __pyx_k_Radial_T[] = "Radial[T]"; +static const char __pyx_k_attr_str[] = "attr_str"; +static const char __pyx_k_getstate[] = "__getstate__"; +static const char __pyx_k_itemsize[] = "itemsize"; +static const char __pyx_k_pyx_type[] = "__pyx_type"; +static const char __pyx_k_radial_t[] = "radial-t"; +static const char __pyx_k_setstate[] = "__setstate__"; +static const char __pyx_k_site_arr[] = "site_arr"; +static const char __pyx_k_Radial_AL[] = "Radial[AL]"; +static const char __pyx_k_TypeError[] = "TypeError"; +static const char __pyx_k_enumerate[] = "enumerate"; +static const char __pyx_k_pyx_state[] = "__pyx_state"; +static const char __pyx_k_radial_al[] = "radial-al"; +static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; +static const char __pyx_k_title_str[] = "title_str"; +static const char __pyx_k_AreaEnergy[] = "AreaEnergy"; +static const char __pyx_k_IndexError[] = "IndexError"; +static const char __pyx_k_ValueError[] = "ValueError"; +static const char __pyx_k_pyx_result[] = "__pyx_result"; +static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; +static const char __pyx_k_ImportError[] = "ImportError"; +static const char __pyx_k_MemoryError[] = "MemoryError"; +static const char __pyx_k_PickleError[] = "PickleError"; +static const char __pyx_k_pyx_checksum[] = "__pyx_checksum"; +static const char __pyx_k_stringsource[] = "stringsource"; +static const char __pyx_k_RadialTEnergy[] = "RadialTEnergy"; +static const char __pyx_k_pyx_getbuffer[] = "__pyx_getbuffer"; +static const char __pyx_k_reduce_cython[] = "__reduce_cython__"; +static const char __pyx_k_RadialALEnergy[] = "RadialALEnergy"; +static const char __pyx_k_View_MemoryView[] = "View.MemoryView"; +static const char __pyx_k_allocate_buffer[] = "allocate_buffer"; +static const char __pyx_k_dtype_is_object[] = "dtype_is_object"; +static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError"; +static const char __pyx_k_setstate_cython[] = "__setstate_cython__"; +static const char __pyx_k_pyx_unpickle_Enum[] = "__pyx_unpickle_Enum"; +static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; +static const char __pyx_k_strided_and_direct[] = ""; +static const char __pyx_k_strided_and_indirect[] = ""; +static const char __pyx_k_contiguous_and_direct[] = ""; +static const char __pyx_k_MemoryView_of_r_object[] = ""; +static const char __pyx_k_MemoryView_of_r_at_0x_x[] = ""; +static const char __pyx_k_contiguous_and_indirect[] = ""; +static const char __pyx_k_Cannot_index_with_type_s[] = "Cannot index with type '%s'"; +static const char __pyx_k_Invalid_shape_in_axis_d_d[] = "Invalid shape in axis %d: %d."; +static const char __pyx_k_itemsize_0_for_cython_array[] = "itemsize <= 0 for cython.array"; +static const char __pyx_k_unable_to_allocate_array_data[] = "unable to allocate array data."; +static const char __pyx_k_strided_and_direct_or_indirect[] = ""; +static const char __pyx_k_numpy_core_multiarray_failed_to[] = "numpy.core.multiarray failed to import"; +static const char __pyx_k_Buffer_view_does_not_expose_stri[] = "Buffer view does not expose strides"; +static const char __pyx_k_Can_only_create_a_buffer_that_is[] = "Can only create a buffer that is contiguous in memory."; +static const char __pyx_k_Cannot_assign_to_read_only_memor[] = "Cannot assign to read-only memoryview"; +static const char __pyx_k_Cannot_create_writable_memory_vi[] = "Cannot create writable memory view from read-only memoryview"; +static const char __pyx_k_Empty_shape_tuple_for_cython_arr[] = "Empty shape tuple for cython.array"; +static const char __pyx_k_Incompatible_checksums_s_vs_0xb0[] = "Incompatible checksums (%s vs 0xb068931 = (name))"; +static const char __pyx_k_Indirect_dimensions_not_supporte[] = "Indirect dimensions not supported"; +static const char __pyx_k_Invalid_mode_expected_c_or_fortr[] = "Invalid mode, expected 'c' or 'fortran', got %s"; +static const char __pyx_k_Out_of_bounds_on_buffer_access_a[] = "Out of bounds on buffer access (axis %d)"; +static const char __pyx_k_Unable_to_convert_item_to_object[] = "Unable to convert item to object"; +static const char __pyx_k_got_differing_extents_in_dimensi[] = "got differing extents in dimension %d (got %d and %d)"; +static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__"; +static const char __pyx_k_numpy_core_umath_failed_to_impor[] = "numpy.core.umath failed to import"; +static const char __pyx_k_self_edge_cache_map_cannot_be_co[] = "self.edge_cache_map cannot be converted to a Python object for pickling"; +static const char __pyx_k_unable_to_allocate_shape_and_str[] = "unable to allocate shape and strides."; +static PyObject *__pyx_n_s_ASCII; +static PyObject *__pyx_n_u_Area; +static PyObject *__pyx_n_s_AreaEnergy; +static PyObject *__pyx_kp_s_Buffer_view_does_not_expose_stri; +static PyObject *__pyx_kp_s_Can_only_create_a_buffer_that_is; +static PyObject *__pyx_kp_s_Cannot_assign_to_read_only_memor; +static PyObject *__pyx_kp_s_Cannot_create_writable_memory_vi; +static PyObject *__pyx_kp_s_Cannot_index_with_type_s; +static PyObject *__pyx_n_s_Ellipsis; +static PyObject *__pyx_kp_s_Empty_shape_tuple_for_cython_arr; +static PyObject *__pyx_n_s_FLOAT; +static PyObject *__pyx_n_s_INT; +static PyObject *__pyx_n_s_ImportError; +static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xb0; +static PyObject *__pyx_n_s_IndexError; +static PyObject *__pyx_kp_s_Indirect_dimensions_not_supporte; +static PyObject *__pyx_kp_s_Invalid_mode_expected_c_or_fortr; +static PyObject *__pyx_kp_s_Invalid_shape_in_axis_d_d; +static PyObject *__pyx_n_s_MemoryError; +static PyObject *__pyx_kp_s_MemoryView_of_r_at_0x_x; +static PyObject *__pyx_kp_s_MemoryView_of_r_object; +static PyObject *__pyx_n_b_O; +static PyObject *__pyx_kp_s_Out_of_bounds_on_buffer_access_a; +static PyObject *__pyx_n_s_PickleError; +static PyObject *__pyx_n_s_RadialALEnergy; +static PyObject *__pyx_n_s_RadialTEnergy; +static PyObject *__pyx_kp_u_Radial_AL; +static PyObject *__pyx_kp_u_Radial_T; +static PyObject *__pyx_n_s_TypeError; +static PyObject *__pyx_kp_s_Unable_to_convert_item_to_object; +static PyObject *__pyx_n_s_ValueError; +static PyObject *__pyx_n_s_View_MemoryView; +static PyObject *__pyx_n_s_allocate_buffer; +static PyObject *__pyx_n_u_area; +static PyObject *__pyx_n_s_attr_str; +static PyObject *__pyx_n_s_base; +static PyObject *__pyx_n_s_c; +static PyObject *__pyx_n_u_c; +static PyObject *__pyx_n_s_class; +static PyObject *__pyx_n_s_cline_in_traceback; +static PyObject *__pyx_kp_s_contiguous_and_direct; +static PyObject *__pyx_kp_s_contiguous_and_indirect; +static PyObject *__pyx_n_s_dict; +static PyObject *__pyx_n_s_dtype; +static PyObject *__pyx_n_s_dtype_is_object; +static PyObject *__pyx_n_s_encode; +static PyObject *__pyx_n_s_enumerate; +static PyObject *__pyx_n_s_error; +static PyObject *__pyx_n_s_flags; +static PyObject *__pyx_n_s_float64; +static PyObject *__pyx_n_s_format; +static PyObject *__pyx_n_s_fortran; +static PyObject *__pyx_n_u_fortran; +static PyObject *__pyx_n_s_full; +static PyObject *__pyx_n_s_getstate; +static PyObject *__pyx_kp_s_got_differing_extents_in_dimensi; +static PyObject *__pyx_n_s_h; +static PyObject *__pyx_n_s_id; +static PyObject *__pyx_n_s_import; +static PyObject *__pyx_n_s_init; +static PyObject *__pyx_n_s_int64; +static PyObject *__pyx_n_s_itemsize; +static PyObject *__pyx_kp_s_itemsize_0_for_cython_array; +static PyObject *__pyx_n_s_main; +static PyObject *__pyx_n_s_memview; +static PyObject *__pyx_n_s_minimum; +static PyObject *__pyx_n_s_mode; +static PyObject *__pyx_n_s_n; +static PyObject *__pyx_n_s_name; +static PyObject *__pyx_n_s_name_2; +static PyObject *__pyx_n_s_ndim; +static PyObject *__pyx_n_s_new; +static PyObject *__pyx_kp_s_no_default___reduce___due_to_non; +static PyObject *__pyx_n_s_np; +static PyObject *__pyx_n_s_numpy; +static PyObject *__pyx_kp_u_numpy_core_multiarray_failed_to; +static PyObject *__pyx_kp_u_numpy_core_umath_failed_to_impor; +static PyObject *__pyx_n_s_obj; +static PyObject *__pyx_n_s_pack; +static PyObject *__pyx_n_s_pickle; +static PyObject *__pyx_n_s_pyx_PickleError; +static PyObject *__pyx_n_s_pyx_checksum; +static PyObject *__pyx_n_s_pyx_getbuffer; +static PyObject *__pyx_n_s_pyx_result; +static PyObject *__pyx_n_s_pyx_state; +static PyObject *__pyx_n_s_pyx_type; +static PyObject *__pyx_n_s_pyx_unpickle_Enum; +static PyObject *__pyx_n_s_pyx_vtable; +static PyObject *__pyx_n_s_r; +static PyObject *__pyx_kp_u_radial_al; +static PyObject *__pyx_kp_u_radial_t; +static PyObject *__pyx_n_s_range; +static PyObject *__pyx_n_s_reduce; +static PyObject *__pyx_n_s_reduce_cython; +static PyObject *__pyx_n_s_reduce_ex; +static PyObject *__pyx_kp_s_self_edge_cache_map_cannot_be_co; +static PyObject *__pyx_n_s_setstate; +static PyObject *__pyx_n_s_setstate_cython; +static PyObject *__pyx_n_s_shape; +static PyObject *__pyx_n_s_site_arr; +static PyObject *__pyx_n_s_size; +static PyObject *__pyx_n_s_start; +static PyObject *__pyx_n_s_step; +static PyObject *__pyx_n_s_stop; +static PyObject *__pyx_kp_s_strided_and_direct; +static PyObject *__pyx_kp_s_strided_and_direct_or_indirect; +static PyObject *__pyx_kp_s_strided_and_indirect; +static PyObject *__pyx_kp_s_stringsource; +static PyObject *__pyx_n_s_struct; +static PyObject *__pyx_n_s_sum; +static PyObject *__pyx_n_s_super; +static PyObject *__pyx_n_s_test; +static PyObject *__pyx_n_s_title_str; +static PyObject *__pyx_kp_s_unable_to_allocate_array_data; +static PyObject *__pyx_kp_s_unable_to_allocate_shape_and_str; +static PyObject *__pyx_n_s_unpack; +static PyObject *__pyx_n_s_update; +static PyObject *__pyx_n_s_w; +static PyObject *__pyx_n_s_zeros; +static int __pyx_pf_6squish_6energy_10AreaEnergy___init__(struct __pyx_obj_6squish_6energy_AreaEnergy *__pyx_v_self, __pyx_t_6squish_4core_INT_T __pyx_v_n, __pyx_t_6squish_4core_FLOAT_T __pyx_v_w, __pyx_t_6squish_4core_FLOAT_T __pyx_v_h, __pyx_t_6squish_4core_FLOAT_T __pyx_v_r, PyArrayObject *__pyx_v_site_arr); /* proto */ +static PyObject *__pyx_pf_6squish_6energy_10AreaEnergy_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6squish_6energy_AreaEnergy *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6squish_6energy_10AreaEnergy_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6squish_6energy_AreaEnergy *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static int __pyx_pf_6squish_6energy_14RadialALEnergy___init__(struct __pyx_obj_6squish_6energy_RadialALEnergy *__pyx_v_self, __pyx_t_6squish_4core_INT_T __pyx_v_n, __pyx_t_6squish_4core_FLOAT_T __pyx_v_w, __pyx_t_6squish_4core_FLOAT_T __pyx_v_h, __pyx_t_6squish_4core_FLOAT_T __pyx_v_r, PyArrayObject *__pyx_v_site_arr); /* proto */ +static PyObject *__pyx_pf_6squish_6energy_14RadialALEnergy_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6squish_6energy_RadialALEnergy *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6squish_6energy_14RadialALEnergy_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6squish_6energy_RadialALEnergy *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static int __pyx_pf_6squish_6energy_13RadialTEnergy___init__(struct __pyx_obj_6squish_6energy_RadialTEnergy *__pyx_v_self, __pyx_t_6squish_4core_INT_T __pyx_v_n, __pyx_t_6squish_4core_FLOAT_T __pyx_v_w, __pyx_t_6squish_4core_FLOAT_T __pyx_v_h, __pyx_t_6squish_4core_FLOAT_T __pyx_v_r, PyArrayObject *__pyx_v_site_arr); /* proto */ +static PyObject *__pyx_pf_6squish_6energy_13RadialTEnergy_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6squish_6energy_RadialTEnergy *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6squish_6energy_13RadialTEnergy_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6squish_6energy_RadialTEnergy *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, PyObject *__pyx_v_format, PyObject *__pyx_v_mode, int __pyx_v_allocate_buffer); /* proto */ +static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(struct __pyx_array_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */ +static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struct __pyx_array_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_15View_dot_MemoryView_5array_7memview___get__(struct __pyx_array_obj *__pyx_v_self); /* proto */ +static Py_ssize_t __pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__len__(struct __pyx_array_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_attr); /* proto */ +static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item); /* proto */ +static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static int __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v_name); /* proto */ +static PyObject *__pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(struct __pyx_MemviewEnum_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ +static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_flags, int __pyx_v_dtype_is_object); /* proto */ +static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index); /* proto */ +static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /* proto */ +static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(struct __pyx_memoryview_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */ +static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__(struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_tp_new_6squish_6energy_AreaEnergy(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_6squish_6energy_RadialALEnergy(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_6squish_6energy_RadialTEnergy(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_array(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_memoryview(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new__memoryviewslice(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_int_0; +static PyObject *__pyx_int_1; +static PyObject *__pyx_int_2; +static PyObject *__pyx_int_184977713; +static PyObject *__pyx_int_neg_1; +static PyObject *__pyx_tuple_; +static PyObject *__pyx_tuple__2; +static PyObject *__pyx_tuple__3; +static PyObject *__pyx_tuple__4; +static PyObject *__pyx_tuple__5; +static PyObject *__pyx_tuple__6; +static PyObject *__pyx_tuple__7; +static PyObject *__pyx_tuple__8; +static PyObject *__pyx_tuple__9; +static PyObject *__pyx_slice__23; +static PyObject *__pyx_tuple__10; +static PyObject *__pyx_tuple__11; +static PyObject *__pyx_tuple__12; +static PyObject *__pyx_tuple__13; +static PyObject *__pyx_tuple__14; +static PyObject *__pyx_tuple__15; +static PyObject *__pyx_tuple__16; +static PyObject *__pyx_tuple__17; +static PyObject *__pyx_tuple__18; +static PyObject *__pyx_tuple__19; +static PyObject *__pyx_tuple__20; +static PyObject *__pyx_tuple__21; +static PyObject *__pyx_tuple__22; +static PyObject *__pyx_tuple__24; +static PyObject *__pyx_tuple__25; +static PyObject *__pyx_tuple__26; +static PyObject *__pyx_tuple__27; +static PyObject *__pyx_tuple__28; +static PyObject *__pyx_tuple__29; +static PyObject *__pyx_tuple__30; +static PyObject *__pyx_tuple__31; +static PyObject *__pyx_tuple__32; +static PyObject *__pyx_codeobj__33; +/* Late includes */ + +/* "squish/energy.pyx":33 + * title_str = "Area" + * + * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, # <<<<<<<<<<<<<< + * np.ndarray[FLOAT_T, ndim=2] site_arr): + * self.edge_cache_map = &AREA_ECM + */ + +/* Python wrapper */ +static int __pyx_pw_6squish_6energy_10AreaEnergy_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_6squish_6energy_10AreaEnergy_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + __pyx_t_6squish_4core_INT_T __pyx_v_n; + __pyx_t_6squish_4core_FLOAT_T __pyx_v_w; + __pyx_t_6squish_4core_FLOAT_T __pyx_v_h; + __pyx_t_6squish_4core_FLOAT_T __pyx_v_r; + PyArrayObject *__pyx_v_site_arr = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_w,&__pyx_n_s_h,&__pyx_n_s_r,&__pyx_n_s_site_arr,0}; + PyObject* values[5] = {0,0,0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 1); __PYX_ERR(0, 33, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 2); __PYX_ERR(0, 33, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_r)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 3); __PYX_ERR(0, 33, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 4: + if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_site_arr)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 4); __PYX_ERR(0, 33, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 33, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + } + __pyx_v_n = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_n == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 33, __pyx_L3_error) + __pyx_v_w = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_w == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 33, __pyx_L3_error) + __pyx_v_h = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_h == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 33, __pyx_L3_error) + __pyx_v_r = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_r == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 33, __pyx_L3_error) + __pyx_v_site_arr = ((PyArrayObject *)values[4]); + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 33, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("squish.energy.AreaEnergy.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_site_arr), __pyx_ptype_5numpy_ndarray, 1, "site_arr", 0))) __PYX_ERR(0, 34, __pyx_L1_error) + __pyx_r = __pyx_pf_6squish_6energy_10AreaEnergy___init__(((struct __pyx_obj_6squish_6energy_AreaEnergy *)__pyx_v_self), __pyx_v_n, __pyx_v_w, __pyx_v_h, __pyx_v_r, __pyx_v_site_arr); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_6squish_6energy_10AreaEnergy___init__(struct __pyx_obj_6squish_6energy_AreaEnergy *__pyx_v_self, __pyx_t_6squish_4core_INT_T __pyx_v_n, __pyx_t_6squish_4core_FLOAT_T __pyx_v_w, __pyx_t_6squish_4core_FLOAT_T __pyx_v_h, __pyx_t_6squish_4core_FLOAT_T __pyx_v_r, PyArrayObject *__pyx_v_site_arr) { + __Pyx_LocalBuf_ND __pyx_pybuffernd_site_arr; + __Pyx_Buffer __pyx_pybuffer_site_arr; + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 0); + __pyx_pybuffer_site_arr.pybuffer.buf = NULL; + __pyx_pybuffer_site_arr.refcount = 0; + __pyx_pybuffernd_site_arr.data = NULL; + __pyx_pybuffernd_site_arr.rcbuffer = &__pyx_pybuffer_site_arr; + { + __Pyx_BufFmt_StackElem __pyx_stack[1]; + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_site_arr, &__Pyx_TypeInfo_nn___pyx_t_6squish_4core_FLOAT_T, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 33, __pyx_L1_error) + } + __pyx_pybuffernd_site_arr.diminfo[0].strides = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_site_arr.diminfo[0].shape = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_site_arr.diminfo[1].strides = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_site_arr.diminfo[1].shape = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.shape[1]; + + /* "squish/energy.pyx":35 + * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, + * np.ndarray[FLOAT_T, ndim=2] site_arr): + * self.edge_cache_map = &AREA_ECM # <<<<<<<<<<<<<< + * self.energy = 0.0 + * + */ + __pyx_v_self->__pyx_base.edge_cache_map = (&__pyx_v_6squish_6energy_AREA_ECM); + + /* "squish/energy.pyx":36 + * np.ndarray[FLOAT_T, ndim=2] site_arr): + * self.edge_cache_map = &AREA_ECM + * self.energy = 0.0 # <<<<<<<<<<<<<< + * + * super().__init__(n, w, h, r, site_arr) + */ + __pyx_v_self->__pyx_base.energy = 0.0; + + /* "squish/energy.pyx":38 + * self.energy = 0.0 + * + * super().__init__(n, w, h, r, site_arr) # <<<<<<<<<<<<<< + * self.minimum = (n)*(w*h/(n)-PI*r**2)**2 + * + */ + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(((PyObject *)__pyx_ptype_6squish_6energy_AreaEnergy)); + __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6squish_6energy_AreaEnergy)); + PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6squish_6energy_AreaEnergy)); + __Pyx_INCREF(((PyObject *)__pyx_v_self)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); + PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyInt_From_npy_int64(__pyx_v_n); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyFloat_FromDouble(__pyx_v_w); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = PyFloat_FromDouble(__pyx_v_h); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = PyFloat_FromDouble(__pyx_v_r); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_8 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, ((PyObject *)__pyx_v_site_arr)}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, ((PyObject *)__pyx_v_site_arr)}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + { + __pyx_t_9 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + if (__pyx_t_7) { + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; + } + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_8, __pyx_t_6); + __Pyx_INCREF(((PyObject *)__pyx_v_site_arr)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_site_arr)); + PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_8, ((PyObject *)__pyx_v_site_arr)); + __pyx_t_3 = 0; + __pyx_t_4 = 0; + __pyx_t_5 = 0; + __pyx_t_6 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "squish/energy.pyx":39 + * + * super().__init__(n, w, h, r, site_arr) + * self.minimum = (n)*(w*h/(n)-PI*r**2)**2 # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = PyFloat_FromDouble((((__pyx_t_6squish_4core_FLOAT_T)__pyx_v_n) * pow((((__pyx_v_w * __pyx_v_h) / ((__pyx_t_6squish_4core_FLOAT_T)__pyx_v_n)) - (M_PI * pow(__pyx_v_r, 2.0))), 2.0))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 39, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_minimum, __pyx_t_1) < 0) __PYX_ERR(0, 39, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "squish/energy.pyx":33 + * title_str = "Area" + * + * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, # <<<<<<<<<<<<<< + * np.ndarray[FLOAT_T, ndim=2] site_arr): + * self.edge_cache_map = &AREA_ECM + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer); + __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __Pyx_AddTraceback("squish.energy.AreaEnergy.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + goto __pyx_L2; + __pyx_L0:; + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer); + __pyx_L2:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "squish/energy.pyx":42 + * + * + * cdef void precompute(self) except *: # <<<<<<<<<<<<<< + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + */ + +static void __pyx_f_6squish_6energy_10AreaEnergy_precompute(struct __pyx_obj_6squish_6energy_AreaEnergy *__pyx_v_self) { + __pyx_t_6squish_7voronoi_VoronoiInfo __pyx_v_info; + __pyx_t_6squish_7voronoi_Site __pyx_v_xi; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_v_em; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_v_e; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_v_ep; + __pyx_t_6squish_4core_Vector2D __pyx_v_vdiff; + __Pyx_memviewslice __pyx_v_site_energy = { 0, 0, { 0 }, { 0 }, { 0 } }; + __pyx_t_6squish_4core_INT_T __pyx_v_i; + __pyx_t_6squish_4core_INT_T __pyx_v_j; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } }; + Py_ssize_t __pyx_t_9; + __pyx_t_6squish_4core_INT_T __pyx_t_10; + __pyx_t_6squish_4core_INT_T __pyx_t_11; + __pyx_t_6squish_4core_INT_T __pyx_t_12; + __pyx_t_6squish_4core_INT_T __pyx_t_13; + int __pyx_t_14; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_t_15; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_t_16; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_17; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("precompute", 0); + + /* "squish/energy.pyx":43 + * + * cdef void precompute(self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + * + */ + if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 43, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 43, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.points.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 43, __pyx_L1_error)} + + /* "squish/energy.pyx":44 + * cdef void precompute(self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) # <<<<<<<<<<<<<< + * + * cdef Site xi + */ + if (unlikely(!__pyx_v_self->__pyx_base.vertices.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 44, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.site_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 44, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.edge_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 44, __pyx_L1_error)} + + /* "squish/energy.pyx":43 + * + * cdef void precompute(self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + * + */ + __pyx_v_info = __pyx_f_6squish_7voronoi__VoronoiInfo(__pyx_v_self->__pyx_base.sites, __pyx_v_self->__pyx_base.edges, __pyx_v_self->__pyx_base.points, __pyx_v_self->__pyx_base.vertices, __pyx_v_self->__pyx_base.site_cache, __pyx_v_self->__pyx_base.edge_cache, __pyx_v_self->__pyx_base.edge_cache_map); + + /* "squish/energy.pyx":50 + * cdef Vector2D vdiff + * + * cdef FLOAT_T [:] site_energy = np.full(self.sites.shape[0], PI*self.r**2) # <<<<<<<<<<<<<< + * + * cdef INT_T i, j + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 50, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_full); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 50, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 50, __pyx_L1_error)} + __pyx_t_2 = PyInt_FromSsize_t((__pyx_v_self->__pyx_base.sites.shape[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 50, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = PyFloat_FromDouble((M_PI * pow(__pyx_v_self->__pyx_base.r, 2.0))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 50, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + __pyx_t_6 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_6 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 50, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 50, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + { + __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 50, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (__pyx_t_5) { + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; + } + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); + __pyx_t_2 = 0; + __pyx_t_4 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 50, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_6squish_4core_FLOAT_T(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 50, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_site_energy = __pyx_t_8; + __pyx_t_8.memview = NULL; + __pyx_t_8.data = NULL; + + /* "squish/energy.pyx":53 + * + * cdef INT_T i, j + * for i in prange(self.sites.shape[0], nogil=True): # <<<<<<<<<<<<<< + * xi = _Site(i, &info) + * e = xi.edge(&xi) + */ + { + #ifdef WITH_THREAD + PyThreadState *_save; + Py_UNBLOCK_THREADS + __Pyx_FastGIL_Remember(); + #endif + /*try:*/ { + if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 53, __pyx_L4_error)} + __pyx_t_9 = (__pyx_v_self->__pyx_base.sites.shape[0]); + if ((1 == 0)) abort(); + { + #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) + #undef likely + #undef unlikely + #define likely(x) (x) + #define unlikely(x) (x) + #endif + __pyx_t_11 = (__pyx_t_9 - 0 + 1 - 1/abs(1)) / 1; + if (__pyx_t_11 > 0) + { + #ifdef _OPENMP + #pragma omp parallel private(__pyx_t_12, __pyx_t_13, __pyx_t_14, __pyx_t_15, __pyx_t_16) + #endif /* _OPENMP */ + { + #ifdef _OPENMP + #pragma omp for lastprivate(__pyx_v_e) lastprivate(__pyx_v_em) lastprivate(__pyx_v_ep) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) lastprivate(__pyx_v_vdiff) lastprivate(__pyx_v_xi) + #endif /* _OPENMP */ + for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_11; __pyx_t_10++){ + { + __pyx_v_i = (__pyx_t_6squish_4core_INT_T)(0 + 1 * __pyx_t_10); + /* Initialize private variables to invalid values */ + __pyx_v_j = ((__pyx_t_6squish_4core_INT_T)0xbad0bad0); + + /* "squish/energy.pyx":54 + * cdef INT_T i, j + * for i in prange(self.sites.shape[0], nogil=True): + * xi = _Site(i, &info) # <<<<<<<<<<<<<< + * e = xi.edge(&xi) + * + */ + __pyx_v_xi = __pyx_f_6squish_7voronoi__Site(__pyx_v_i, (&__pyx_v_info)); + + /* "squish/energy.pyx":55 + * for i in prange(self.sites.shape[0], nogil=True): + * xi = _Site(i, &info) + * e = xi.edge(&xi) # <<<<<<<<<<<<<< + * + * site_energy[i] = (xi.cache.area(&xi, NAN) - site_energy[i])**2 + */ + __pyx_v_e = __pyx_v_xi.edge((&__pyx_v_xi)); + + /* "squish/energy.pyx":57 + * e = xi.edge(&xi) + * + * site_energy[i] = (xi.cache.area(&xi, NAN) - site_energy[i])**2 # <<<<<<<<<<<<<< + * xi.cache.energy(&xi, site_energy[i]) + * + */ + __pyx_t_12 = __pyx_v_i; + __pyx_t_13 = __pyx_v_i; + *((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_site_energy.data + __pyx_t_13 * __pyx_v_site_energy.strides[0]) )) = pow((__pyx_v_xi.cache->area((&__pyx_v_xi), NAN) - (*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_site_energy.data + __pyx_t_12 * __pyx_v_site_energy.strides[0]) )))), 2.0); + + /* "squish/energy.pyx":58 + * + * site_energy[i] = (xi.cache.area(&xi, NAN) - site_energy[i])**2 + * xi.cache.energy(&xi, site_energy[i]) # <<<<<<<<<<<<<< + * + * j = 0 + */ + __pyx_t_12 = __pyx_v_i; + (void)(__pyx_v_xi.cache->energy((&__pyx_v_xi), (*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_site_energy.data + __pyx_t_12 * __pyx_v_site_energy.strides[0]) ))))); + + /* "squish/energy.pyx":60 + * xi.cache.energy(&xi, site_energy[i]) + * + * j = 0 # <<<<<<<<<<<<<< + * while j < xi.edge_num(&xi): + * em, ep = e.prev(&e), e.next(&e) + */ + __pyx_v_j = 0; + + /* "squish/energy.pyx":61 + * + * j = 0 + * while j < xi.edge_num(&xi): # <<<<<<<<<<<<<< + * em, ep = e.prev(&e), e.next(&e) + * vdiff = em.origin(&em) + */ + while (1) { + __pyx_t_14 = ((__pyx_v_j < __pyx_v_xi.edge_num((&__pyx_v_xi))) != 0); + if (!__pyx_t_14) break; + + /* "squish/energy.pyx":62 + * j = 0 + * while j < xi.edge_num(&xi): + * em, ep = e.prev(&e), e.next(&e) # <<<<<<<<<<<<<< + * vdiff = em.origin(&em) + * vdiff.self.vsub(&vdiff, ep.origin(&ep)) + */ + __pyx_t_15 = __pyx_v_e.prev((&__pyx_v_e)); + __pyx_t_16 = __pyx_v_e.next((&__pyx_v_e)); + __pyx_v_em = __pyx_t_15; + __pyx_v_ep = __pyx_t_16; + + /* "squish/energy.pyx":63 + * while j < xi.edge_num(&xi): + * em, ep = e.prev(&e), e.next(&e) + * vdiff = em.origin(&em) # <<<<<<<<<<<<<< + * vdiff.self.vsub(&vdiff, ep.origin(&ep)) + * e.cache.dVdv(&e, R.vecmul(&R, vdiff)) + */ + __pyx_v_vdiff = __pyx_v_em.origin((&__pyx_v_em)); + + /* "squish/energy.pyx":64 + * em, ep = e.prev(&e), e.next(&e) + * vdiff = em.origin(&em) + * vdiff.self.vsub(&vdiff, ep.origin(&ep)) # <<<<<<<<<<<<<< + * e.cache.dVdv(&e, R.vecmul(&R, vdiff)) + * e.cache.H(&e, VoronoiContainer.calc_H(em, e)) + */ + (void)(__pyx_v_vdiff.self.vsub((&__pyx_v_vdiff), __pyx_v_ep.origin((&__pyx_v_ep)))); + + /* "squish/energy.pyx":65 + * vdiff = em.origin(&em) + * vdiff.self.vsub(&vdiff, ep.origin(&ep)) + * e.cache.dVdv(&e, R.vecmul(&R, vdiff)) # <<<<<<<<<<<<<< + * e.cache.H(&e, VoronoiContainer.calc_H(em, e)) + * + */ + (void)(__pyx_v_e.cache->dVdv((&__pyx_v_e), __pyx_v_6squish_7voronoi_R.vecmul((&__pyx_v_6squish_7voronoi_R), __pyx_v_vdiff))); + + /* "squish/energy.pyx":66 + * vdiff.self.vsub(&vdiff, ep.origin(&ep)) + * e.cache.dVdv(&e, R.vecmul(&R, vdiff)) + * e.cache.H(&e, VoronoiContainer.calc_H(em, e)) # <<<<<<<<<<<<<< + * + * e = e.next(&e) + */ + (void)(__pyx_v_e.cache->H((&__pyx_v_e), __pyx_vtabptr_6squish_7voronoi_VoronoiContainer->calc_H(__pyx_v_em, __pyx_v_e))); + + /* "squish/energy.pyx":68 + * e.cache.H(&e, VoronoiContainer.calc_H(em, e)) + * + * e = e.next(&e) # <<<<<<<<<<<<<< + * j = j + 1 + * + */ + __pyx_v_e = __pyx_v_e.next((&__pyx_v_e)); + + /* "squish/energy.pyx":69 + * + * e = e.next(&e) + * j = j + 1 # <<<<<<<<<<<<<< + * + * self.energy = np.sum(site_energy[:self.n]) + */ + __pyx_v_j = (__pyx_v_j + 1); + } + } + } + } + } + } + #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) + #undef likely + #undef unlikely + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) + #endif + } + + /* "squish/energy.pyx":53 + * + * cdef INT_T i, j + * for i in prange(self.sites.shape[0], nogil=True): # <<<<<<<<<<<<<< + * xi = _Site(i, &info) + * e = xi.edge(&xi) + */ + /*finally:*/ { + /*normal exit:*/{ + #ifdef WITH_THREAD + __Pyx_FastGIL_Forget(); + Py_BLOCK_THREADS + #endif + goto __pyx_L5; + } + __pyx_L4_error: { + #ifdef WITH_THREAD + __Pyx_FastGIL_Forget(); + Py_BLOCK_THREADS + #endif + goto __pyx_L1_error; + } + __pyx_L5:; + } + } + + /* "squish/energy.pyx":71 + * j = j + 1 + * + * self.energy = np.sum(site_energy[:self.n]) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sum); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_8.data = __pyx_v_site_energy.data; + __pyx_t_8.memview = __pyx_v_site_energy.memview; + __PYX_INC_MEMVIEW(&__pyx_t_8, 0); + __pyx_t_6 = -1; + if (unlikely(__pyx_memoryview_slice_memviewslice( + &__pyx_t_8, + __pyx_v_site_energy.shape[0], __pyx_v_site_energy.strides[0], __pyx_v_site_energy.suboffsets[0], + 0, + 0, + &__pyx_t_6, + 0, + __pyx_v_self->__pyx_base.n, + 0, + 0, + 1, + 0, + 1) < 0)) +{ + __PYX_ERR(0, 71, __pyx_L1_error) +} + +__pyx_t_3 = __pyx_memoryview_fromslice(__pyx_t_8, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_6squish_4core_FLOAT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_6squish_4core_FLOAT_T, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); + __pyx_t_8.memview = NULL; + __pyx_t_8.data = NULL; + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + } + } + __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_17 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_17 == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_self->__pyx_base.energy = __pyx_t_17; + + /* "squish/energy.pyx":42 + * + * + * cdef void precompute(self) except *: # <<<<<<<<<<<<<< + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + */ + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); + __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); + __Pyx_AddTraceback("squish.energy.AreaEnergy.precompute", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __PYX_XDEC_MEMVIEW(&__pyx_v_site_energy, 1); + __Pyx_RefNannyFinishContext(); +} + +/* "squish/energy.pyx":74 + * + * + * cdef void calc_grad(self) except *: # <<<<<<<<<<<<<< + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + */ + +static void __pyx_f_6squish_6energy_10AreaEnergy_calc_grad(struct __pyx_obj_6squish_6energy_AreaEnergy *__pyx_v_self) { + __pyx_t_6squish_7voronoi_VoronoiInfo __pyx_v_info; + __pyx_t_6squish_7voronoi_Site __pyx_v_xi; + __pyx_t_6squish_7voronoi_Site __pyx_v_xf; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_v_e; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_v_f; + __pyx_t_6squish_4core_Vector2D __pyx_v_dedxi_p; + __pyx_t_6squish_4core_BitSet __pyx_v_edge_set; + __pyx_t_6squish_4core_INT_T __pyx_v_num_edges; + __pyx_t_6squish_4core_FLOAT_T __pyx_v_A; + __Pyx_memviewslice __pyx_v_dedx = { 0, 0, { 0 }, { 0 }, { 0 } }; + __pyx_t_6squish_4core_INT_T __pyx_v_i; + __pyx_t_6squish_4core_INT_T __pyx_v_j; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } }; + __pyx_t_6squish_4core_INT_T __pyx_t_6; + __pyx_t_6squish_4core_INT_T __pyx_t_7; + __pyx_t_6squish_4core_INT_T __pyx_t_8; + int __pyx_t_9; + __pyx_t_6squish_4core_INT_T __pyx_t_10; + Py_ssize_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("calc_grad", 0); + + /* "squish/energy.pyx":75 + * + * cdef void calc_grad(self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + * + */ + if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 75, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 75, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.points.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 75, __pyx_L1_error)} + + /* "squish/energy.pyx":76 + * cdef void calc_grad(self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) # <<<<<<<<<<<<<< + * + * cdef Site xi, xf + */ + if (unlikely(!__pyx_v_self->__pyx_base.vertices.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 76, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.site_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 76, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.edge_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 76, __pyx_L1_error)} + + /* "squish/energy.pyx":75 + * + * cdef void calc_grad(self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + * + */ + __pyx_v_info = __pyx_f_6squish_7voronoi__VoronoiInfo(__pyx_v_self->__pyx_base.sites, __pyx_v_self->__pyx_base.edges, __pyx_v_self->__pyx_base.points, __pyx_v_self->__pyx_base.vertices, __pyx_v_self->__pyx_base.site_cache, __pyx_v_self->__pyx_base.edge_cache, __pyx_v_self->__pyx_base.edge_cache_map); + + /* "squish/energy.pyx":83 + * cdef BitSet edge_set + * + * cdef INT_T num_edges = self.edges.shape[0] # <<<<<<<<<<<<<< + * cdef FLOAT_T A = PI*self.r**2 + * + */ + if (unlikely(!__pyx_v_self->__pyx_base.edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 83, __pyx_L1_error)} + __pyx_v_num_edges = (__pyx_v_self->__pyx_base.edges.shape[0]); + + /* "squish/energy.pyx":84 + * + * cdef INT_T num_edges = self.edges.shape[0] + * cdef FLOAT_T A = PI*self.r**2 # <<<<<<<<<<<<<< + * + * cdef FLOAT_T [:, ::1] dedx = np.zeros((self.n, 2), dtype=FLOAT) + */ + __pyx_v_A = (M_PI * pow(__pyx_v_self->__pyx_base.r, 2.0)); + + /* "squish/energy.pyx":86 + * cdef FLOAT_T A = PI*self.r**2 + * + * cdef FLOAT_T [:, ::1] dedx = np.zeros((self.n, 2), dtype=FLOAT) # <<<<<<<<<<<<<< + * + * cdef INT_T i, j + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->__pyx_base.n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); + __Pyx_INCREF(__pyx_int_2); + __Pyx_GIVEREF(__pyx_int_2); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_2); + __pyx_t_1 = 0; + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_6squish_4core_FLOAT_T(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_dedx = __pyx_t_5; + __pyx_t_5.memview = NULL; + __pyx_t_5.data = NULL; + + /* "squish/energy.pyx":89 + * + * cdef INT_T i, j + * for i in prange(self.n, nogil=True): # <<<<<<<<<<<<<< + * xi = _Site(i, &info) + * e = xi.edge(&xi) + */ + { + #ifdef WITH_THREAD + PyThreadState *_save; + Py_UNBLOCK_THREADS + __Pyx_FastGIL_Remember(); + #endif + /*try:*/ { + __pyx_t_6 = __pyx_v_self->__pyx_base.n; + if ((1 == 0)) abort(); + { + #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) + #undef likely + #undef unlikely + #define likely(x) (x) + #define unlikely(x) (x) + #endif + __pyx_t_8 = (__pyx_t_6 - 0 + 1 - 1/abs(1)) / 1; + if (__pyx_t_8 > 0) + { + #ifdef _OPENMP + #pragma omp parallel private(__pyx_t_10, __pyx_t_11, __pyx_t_9) + #endif /* _OPENMP */ + { + #ifdef _OPENMP + #pragma omp for lastprivate(__pyx_v_dedxi_p) lastprivate(__pyx_v_e) lastprivate(__pyx_v_edge_set) lastprivate(__pyx_v_f) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) lastprivate(__pyx_v_xf) lastprivate(__pyx_v_xi) + #endif /* _OPENMP */ + for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_8; __pyx_t_7++){ + { + __pyx_v_i = (__pyx_t_6squish_4core_INT_T)(0 + 1 * __pyx_t_7); + /* Initialize private variables to invalid values */ + __pyx_v_j = ((__pyx_t_6squish_4core_INT_T)0xbad0bad0); + + /* "squish/energy.pyx":90 + * cdef INT_T i, j + * for i in prange(self.n, nogil=True): + * xi = _Site(i, &info) # <<<<<<<<<<<<<< + * e = xi.edge(&xi) + * edge_set = _BitSet(num_edges) + */ + __pyx_v_xi = __pyx_f_6squish_7voronoi__Site(__pyx_v_i, (&__pyx_v_info)); + + /* "squish/energy.pyx":91 + * for i in prange(self.n, nogil=True): + * xi = _Site(i, &info) + * e = xi.edge(&xi) # <<<<<<<<<<<<<< + * edge_set = _BitSet(num_edges) + * j = 0 + */ + __pyx_v_e = __pyx_v_xi.edge((&__pyx_v_xi)); + + /* "squish/energy.pyx":92 + * xi = _Site(i, &info) + * e = xi.edge(&xi) + * edge_set = _BitSet(num_edges) # <<<<<<<<<<<<<< + * j = 0 + * while j < xi.edge_num(&xi): # Looping through site edges. + */ + __pyx_v_edge_set = __pyx_f_6squish_4core__BitSet(__pyx_v_num_edges); + + /* "squish/energy.pyx":93 + * e = xi.edge(&xi) + * edge_set = _BitSet(num_edges) + * j = 0 # <<<<<<<<<<<<<< + * while j < xi.edge_num(&xi): # Looping through site edges. + * f = e + */ + __pyx_v_j = 0; + + /* "squish/energy.pyx":94 + * edge_set = _BitSet(num_edges) + * j = 0 + * while j < xi.edge_num(&xi): # Looping through site edges. # <<<<<<<<<<<<<< + * f = e + * while True: # Circling this vertex. + */ + while (1) { + __pyx_t_9 = ((__pyx_v_j < __pyx_v_xi.edge_num((&__pyx_v_xi))) != 0); + if (!__pyx_t_9) break; + + /* "squish/energy.pyx":95 + * j = 0 + * while j < xi.edge_num(&xi): # Looping through site edges. + * f = e # <<<<<<<<<<<<<< + * while True: # Circling this vertex. + * if not edge_set.add(&edge_set, f.arr_index): + */ + __pyx_v_f = __pyx_v_e; + + /* "squish/energy.pyx":96 + * while j < xi.edge_num(&xi): # Looping through site edges. + * f = e + * while True: # Circling this vertex. # <<<<<<<<<<<<<< + * if not edge_set.add(&edge_set, f.arr_index): + * xf = f.face(&f) + */ + while (1) { + + /* "squish/energy.pyx":97 + * f = e + * while True: # Circling this vertex. + * if not edge_set.add(&edge_set, f.arr_index): # <<<<<<<<<<<<<< + * xf = f.face(&f) + * dedxi_p = f.cache.dVdv(&f, NAN_VECTOR) #dVdv + */ + __pyx_t_9 = ((!(__pyx_v_edge_set.add((&__pyx_v_edge_set), __pyx_v_f.arr_index) != 0)) != 0); + if (__pyx_t_9) { + + /* "squish/energy.pyx":98 + * while True: # Circling this vertex. + * if not edge_set.add(&edge_set, f.arr_index): + * xf = f.face(&f) # <<<<<<<<<<<<<< + * dedxi_p = f.cache.dVdv(&f, NAN_VECTOR) #dVdv + * dedxi_p.self.smul(&dedxi_p, xf.cache.area(&xf, NAN) - A) + */ + __pyx_v_xf = __pyx_v_f.face((&__pyx_v_f)); + + /* "squish/energy.pyx":99 + * if not edge_set.add(&edge_set, f.arr_index): + * xf = f.face(&f) + * dedxi_p = f.cache.dVdv(&f, NAN_VECTOR) #dVdv # <<<<<<<<<<<<<< + * dedxi_p.self.smul(&dedxi_p, xf.cache.area(&xf, NAN) - A) + * dedxi_p.self.matmul(&dedxi_p, e.cache.H(&e, NAN_MATRIX)) + */ + __pyx_v_dedxi_p = __pyx_v_f.cache->dVdv((&__pyx_v_f), __pyx_v_6squish_7voronoi_NAN_VECTOR); + + /* "squish/energy.pyx":100 + * xf = f.face(&f) + * dedxi_p = f.cache.dVdv(&f, NAN_VECTOR) #dVdv + * dedxi_p.self.smul(&dedxi_p, xf.cache.area(&xf, NAN) - A) # <<<<<<<<<<<<<< + * dedxi_p.self.matmul(&dedxi_p, e.cache.H(&e, NAN_MATRIX)) + * dedx[i][0] -= dedxi_p.x + */ + (void)(__pyx_v_dedxi_p.self.smul((&__pyx_v_dedxi_p), (__pyx_v_xf.cache->area((&__pyx_v_xf), NAN) - __pyx_v_A))); + + /* "squish/energy.pyx":101 + * dedxi_p = f.cache.dVdv(&f, NAN_VECTOR) #dVdv + * dedxi_p.self.smul(&dedxi_p, xf.cache.area(&xf, NAN) - A) + * dedxi_p.self.matmul(&dedxi_p, e.cache.H(&e, NAN_MATRIX)) # <<<<<<<<<<<<<< + * dedx[i][0] -= dedxi_p.x + * dedx[i][1] -= dedxi_p.y + */ + (void)(__pyx_v_dedxi_p.self.matmul((&__pyx_v_dedxi_p), __pyx_v_e.cache->H((&__pyx_v_e), __pyx_v_6squish_7voronoi_NAN_MATRIX))); + + /* "squish/energy.pyx":102 + * dedxi_p.self.smul(&dedxi_p, xf.cache.area(&xf, NAN) - A) + * dedxi_p.self.matmul(&dedxi_p, e.cache.H(&e, NAN_MATRIX)) + * dedx[i][0] -= dedxi_p.x # <<<<<<<<<<<<<< + * dedx[i][1] -= dedxi_p.y + * + */ + __pyx_t_10 = __pyx_v_i; + __pyx_t_11 = 0; + *((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_dedx.data + __pyx_t_10 * __pyx_v_dedx.strides[0]) )) + __pyx_t_11)) )) -= __pyx_v_dedxi_p.x; + + /* "squish/energy.pyx":103 + * dedxi_p.self.matmul(&dedxi_p, e.cache.H(&e, NAN_MATRIX)) + * dedx[i][0] -= dedxi_p.x + * dedx[i][1] -= dedxi_p.y # <<<<<<<<<<<<<< + * + * f = f.twin(&f) + */ + __pyx_t_10 = __pyx_v_i; + __pyx_t_11 = 1; + *((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_dedx.data + __pyx_t_10 * __pyx_v_dedx.strides[0]) )) + __pyx_t_11)) )) -= __pyx_v_dedxi_p.y; + + /* "squish/energy.pyx":97 + * f = e + * while True: # Circling this vertex. + * if not edge_set.add(&edge_set, f.arr_index): # <<<<<<<<<<<<<< + * xf = f.face(&f) + * dedxi_p = f.cache.dVdv(&f, NAN_VECTOR) #dVdv + */ + } + + /* "squish/energy.pyx":105 + * dedx[i][1] -= dedxi_p.y + * + * f = f.twin(&f) # <<<<<<<<<<<<<< + * f = f.next(&f) + * if f.arr_index == e.arr_index: + */ + __pyx_v_f = __pyx_v_f.twin((&__pyx_v_f)); + + /* "squish/energy.pyx":106 + * + * f = f.twin(&f) + * f = f.next(&f) # <<<<<<<<<<<<<< + * if f.arr_index == e.arr_index: + * break + */ + __pyx_v_f = __pyx_v_f.next((&__pyx_v_f)); + + /* "squish/energy.pyx":107 + * f = f.twin(&f) + * f = f.next(&f) + * if f.arr_index == e.arr_index: # <<<<<<<<<<<<<< + * break + * + */ + __pyx_t_9 = ((__pyx_v_f.arr_index == __pyx_v_e.arr_index) != 0); + if (__pyx_t_9) { + + /* "squish/energy.pyx":108 + * f = f.next(&f) + * if f.arr_index == e.arr_index: + * break # <<<<<<<<<<<<<< + * + * e = e.next(&e) + */ + goto __pyx_L13_break; + + /* "squish/energy.pyx":107 + * f = f.twin(&f) + * f = f.next(&f) + * if f.arr_index == e.arr_index: # <<<<<<<<<<<<<< + * break + * + */ + } + } + __pyx_L13_break:; + + /* "squish/energy.pyx":110 + * break + * + * e = e.next(&e) # <<<<<<<<<<<<<< + * j = j + 1 + * edge_set.free(&edge_set) + */ + __pyx_v_e = __pyx_v_e.next((&__pyx_v_e)); + + /* "squish/energy.pyx":111 + * + * e = e.next(&e) + * j = j + 1 # <<<<<<<<<<<<<< + * edge_set.free(&edge_set) + * self.grad = dedx + */ + __pyx_v_j = (__pyx_v_j + 1); + } + + /* "squish/energy.pyx":112 + * e = e.next(&e) + * j = j + 1 + * edge_set.free(&edge_set) # <<<<<<<<<<<<<< + * self.grad = dedx + * + */ + __pyx_v_edge_set.free((&__pyx_v_edge_set)); + } + } + } + } + } + #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) + #undef likely + #undef unlikely + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) + #endif + } + + /* "squish/energy.pyx":89 + * + * cdef INT_T i, j + * for i in prange(self.n, nogil=True): # <<<<<<<<<<<<<< + * xi = _Site(i, &info) + * e = xi.edge(&xi) + */ + /*finally:*/ { + /*normal exit:*/{ + #ifdef WITH_THREAD + __Pyx_FastGIL_Forget(); + Py_BLOCK_THREADS + #endif + goto __pyx_L5; + } + __pyx_L5:; + } + } + + /* "squish/energy.pyx":113 + * j = j + 1 + * edge_set.free(&edge_set) + * self.grad = dedx # <<<<<<<<<<<<<< + * + * + */ + __PYX_XDEC_MEMVIEW(&__pyx_v_self->__pyx_base.grad, 0); + __PYX_INC_MEMVIEW(&__pyx_v_dedx, 0); + __pyx_v_self->__pyx_base.grad = __pyx_v_dedx; + + /* "squish/energy.pyx":74 + * + * + * cdef void calc_grad(self) except *: # <<<<<<<<<<<<<< + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + */ + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1); + __Pyx_AddTraceback("squish.energy.AreaEnergy.calc_grad", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __PYX_XDEC_MEMVIEW(&__pyx_v_dedx, 1); + __Pyx_RefNannyFinishContext(); +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6squish_6energy_10AreaEnergy_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_6squish_6energy_10AreaEnergy_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_6squish_6energy_10AreaEnergy_2__reduce_cython__(((struct __pyx_obj_6squish_6energy_AreaEnergy *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6squish_6energy_10AreaEnergy_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6squish_6energy_AreaEnergy *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("squish.energy.AreaEnergy.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6squish_6energy_10AreaEnergy_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +static PyObject *__pyx_pw_6squish_6energy_10AreaEnergy_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_6squish_6energy_10AreaEnergy_4__setstate_cython__(((struct __pyx_obj_6squish_6energy_AreaEnergy *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6squish_6energy_10AreaEnergy_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6squish_6energy_AreaEnergy *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("squish.energy.AreaEnergy.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "squish/energy.pyx":130 + * + * + * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, # <<<<<<<<<<<<<< + * np.ndarray[FLOAT_T, ndim=2] site_arr): + * #self.edge_cache_map = &AREA_EDGE_CACHE_MAP + */ + +/* Python wrapper */ +static int __pyx_pw_6squish_6energy_14RadialALEnergy_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_6squish_6energy_14RadialALEnergy_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + __pyx_t_6squish_4core_INT_T __pyx_v_n; + __pyx_t_6squish_4core_FLOAT_T __pyx_v_w; + __pyx_t_6squish_4core_FLOAT_T __pyx_v_h; + __pyx_t_6squish_4core_FLOAT_T __pyx_v_r; + PyArrayObject *__pyx_v_site_arr = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_w,&__pyx_n_s_h,&__pyx_n_s_r,&__pyx_n_s_site_arr,0}; + PyObject* values[5] = {0,0,0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 1); __PYX_ERR(0, 130, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 2); __PYX_ERR(0, 130, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_r)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 3); __PYX_ERR(0, 130, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 4: + if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_site_arr)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 4); __PYX_ERR(0, 130, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 130, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + } + __pyx_v_n = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_n == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 130, __pyx_L3_error) + __pyx_v_w = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_w == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 130, __pyx_L3_error) + __pyx_v_h = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_h == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 130, __pyx_L3_error) + __pyx_v_r = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_r == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 130, __pyx_L3_error) + __pyx_v_site_arr = ((PyArrayObject *)values[4]); + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 130, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("squish.energy.RadialALEnergy.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_site_arr), __pyx_ptype_5numpy_ndarray, 1, "site_arr", 0))) __PYX_ERR(0, 131, __pyx_L1_error) + __pyx_r = __pyx_pf_6squish_6energy_14RadialALEnergy___init__(((struct __pyx_obj_6squish_6energy_RadialALEnergy *)__pyx_v_self), __pyx_v_n, __pyx_v_w, __pyx_v_h, __pyx_v_r, __pyx_v_site_arr); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_6squish_6energy_14RadialALEnergy___init__(struct __pyx_obj_6squish_6energy_RadialALEnergy *__pyx_v_self, __pyx_t_6squish_4core_INT_T __pyx_v_n, __pyx_t_6squish_4core_FLOAT_T __pyx_v_w, __pyx_t_6squish_4core_FLOAT_T __pyx_v_h, __pyx_t_6squish_4core_FLOAT_T __pyx_v_r, PyArrayObject *__pyx_v_site_arr) { + __Pyx_LocalBuf_ND __pyx_pybuffernd_site_arr; + __Pyx_Buffer __pyx_pybuffer_site_arr; + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 0); + __pyx_pybuffer_site_arr.pybuffer.buf = NULL; + __pyx_pybuffer_site_arr.refcount = 0; + __pyx_pybuffernd_site_arr.data = NULL; + __pyx_pybuffernd_site_arr.rcbuffer = &__pyx_pybuffer_site_arr; + { + __Pyx_BufFmt_StackElem __pyx_stack[1]; + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_site_arr, &__Pyx_TypeInfo_nn___pyx_t_6squish_4core_FLOAT_T, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 130, __pyx_L1_error) + } + __pyx_pybuffernd_site_arr.diminfo[0].strides = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_site_arr.diminfo[0].shape = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_site_arr.diminfo[1].strides = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_site_arr.diminfo[1].shape = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.shape[1]; + + /* "squish/energy.pyx":133 + * np.ndarray[FLOAT_T, ndim=2] site_arr): + * #self.edge_cache_map = &AREA_EDGE_CACHE_MAP + * self.energy = 0.0 # <<<<<<<<<<<<<< + * + * super().__init__(n, w, h, r, site_arr) + */ + __pyx_v_self->__pyx_base.energy = 0.0; + + /* "squish/energy.pyx":135 + * self.energy = 0.0 + * + * super().__init__(n, w, h, r, site_arr) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 135, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(((PyObject *)__pyx_ptype_6squish_6energy_RadialALEnergy)); + __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6squish_6energy_RadialALEnergy)); + PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6squish_6energy_RadialALEnergy)); + __Pyx_INCREF(((PyObject *)__pyx_v_self)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); + PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 135, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 135, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyInt_From_npy_int64(__pyx_v_n); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 135, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyFloat_FromDouble(__pyx_v_w); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 135, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = PyFloat_FromDouble(__pyx_v_h); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 135, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = PyFloat_FromDouble(__pyx_v_r); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 135, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_8 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, ((PyObject *)__pyx_v_site_arr)}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 135, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, ((PyObject *)__pyx_v_site_arr)}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 135, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + { + __pyx_t_9 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 135, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + if (__pyx_t_7) { + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; + } + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_8, __pyx_t_6); + __Pyx_INCREF(((PyObject *)__pyx_v_site_arr)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_site_arr)); + PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_8, ((PyObject *)__pyx_v_site_arr)); + __pyx_t_3 = 0; + __pyx_t_4 = 0; + __pyx_t_5 = 0; + __pyx_t_6 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 135, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "squish/energy.pyx":130 + * + * + * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, # <<<<<<<<<<<<<< + * np.ndarray[FLOAT_T, ndim=2] site_arr): + * #self.edge_cache_map = &AREA_EDGE_CACHE_MAP + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer); + __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __Pyx_AddTraceback("squish.energy.RadialALEnergy.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + goto __pyx_L2; + __pyx_L0:; + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer); + __pyx_L2:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "squish/energy.pyx":138 + * + * + * cdef void precompute(self) except *: # <<<<<<<<<<<<<< + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + */ + +static void __pyx_f_6squish_6energy_14RadialALEnergy_precompute(struct __pyx_obj_6squish_6energy_RadialALEnergy *__pyx_v_self) { + CYTHON_UNUSED __pyx_t_6squish_7voronoi_VoronoiInfo __pyx_v_info; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("precompute", 0); + + /* "squish/energy.pyx":139 + * + * cdef void precompute(self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + * + */ + if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 139, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 139, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.points.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 139, __pyx_L1_error)} + + /* "squish/energy.pyx":140 + * cdef void precompute(self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) # <<<<<<<<<<<<<< + * + * pass + */ + if (unlikely(!__pyx_v_self->__pyx_base.vertices.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 140, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.site_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 140, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.edge_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 140, __pyx_L1_error)} + + /* "squish/energy.pyx":139 + * + * cdef void precompute(self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + * + */ + __pyx_v_info = __pyx_f_6squish_7voronoi__VoronoiInfo(__pyx_v_self->__pyx_base.sites, __pyx_v_self->__pyx_base.edges, __pyx_v_self->__pyx_base.points, __pyx_v_self->__pyx_base.vertices, __pyx_v_self->__pyx_base.site_cache, __pyx_v_self->__pyx_base.edge_cache, __pyx_v_self->__pyx_base.edge_cache_map); + + /* "squish/energy.pyx":138 + * + * + * cdef void precompute(self) except *: # <<<<<<<<<<<<<< + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + */ + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("squish.energy.RadialALEnergy.precompute", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_RefNannyFinishContext(); +} + +/* "squish/energy.pyx":145 + * + * + * cdef void calc_grad(self) except *: # <<<<<<<<<<<<<< + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + */ + +static void __pyx_f_6squish_6energy_14RadialALEnergy_calc_grad(struct __pyx_obj_6squish_6energy_RadialALEnergy *__pyx_v_self) { + CYTHON_UNUSED __pyx_t_6squish_7voronoi_VoronoiInfo __pyx_v_info; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("calc_grad", 0); + + /* "squish/energy.pyx":146 + * + * cdef void calc_grad(self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + * + */ + if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 146, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 146, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.points.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 146, __pyx_L1_error)} + + /* "squish/energy.pyx":147 + * cdef void calc_grad(self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) # <<<<<<<<<<<<<< + * + * pass + */ + if (unlikely(!__pyx_v_self->__pyx_base.vertices.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 147, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.site_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 147, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.edge_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 147, __pyx_L1_error)} + + /* "squish/energy.pyx":146 + * + * cdef void calc_grad(self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + * + */ + __pyx_v_info = __pyx_f_6squish_7voronoi__VoronoiInfo(__pyx_v_self->__pyx_base.sites, __pyx_v_self->__pyx_base.edges, __pyx_v_self->__pyx_base.points, __pyx_v_self->__pyx_base.vertices, __pyx_v_self->__pyx_base.site_cache, __pyx_v_self->__pyx_base.edge_cache, __pyx_v_self->__pyx_base.edge_cache_map); + + /* "squish/energy.pyx":145 + * + * + * cdef void calc_grad(self) except *: # <<<<<<<<<<<<<< + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + */ + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("squish.energy.RadialALEnergy.calc_grad", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __Pyx_RefNannyFinishContext(); +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6squish_6energy_14RadialALEnergy_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_6squish_6energy_14RadialALEnergy_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_6squish_6energy_14RadialALEnergy_2__reduce_cython__(((struct __pyx_obj_6squish_6energy_RadialALEnergy *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6squish_6energy_14RadialALEnergy_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6squish_6energy_RadialALEnergy *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("squish.energy.RadialALEnergy.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6squish_6energy_14RadialALEnergy_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +static PyObject *__pyx_pw_6squish_6energy_14RadialALEnergy_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_6squish_6energy_14RadialALEnergy_4__setstate_cython__(((struct __pyx_obj_6squish_6energy_RadialALEnergy *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6squish_6energy_14RadialALEnergy_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6squish_6energy_RadialALEnergy *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("squish.energy.RadialALEnergy.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "squish/energy.pyx":164 + * attr_str = "radial-t" + * title_str = "Radial[T]" + * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, # <<<<<<<<<<<<<< + * np.ndarray[FLOAT_T, ndim=2] site_arr): + * self.edge_cache_map = &RADIALT_ECM + */ + +/* Python wrapper */ +static int __pyx_pw_6squish_6energy_13RadialTEnergy_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_6squish_6energy_13RadialTEnergy_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + __pyx_t_6squish_4core_INT_T __pyx_v_n; + __pyx_t_6squish_4core_FLOAT_T __pyx_v_w; + __pyx_t_6squish_4core_FLOAT_T __pyx_v_h; + __pyx_t_6squish_4core_FLOAT_T __pyx_v_r; + PyArrayObject *__pyx_v_site_arr = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_w,&__pyx_n_s_h,&__pyx_n_s_r,&__pyx_n_s_site_arr,0}; + PyObject* values[5] = {0,0,0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 1); __PYX_ERR(0, 164, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 2); __PYX_ERR(0, 164, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_r)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 3); __PYX_ERR(0, 164, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 4: + if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_site_arr)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 4); __PYX_ERR(0, 164, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 164, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + } + __pyx_v_n = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_n == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 164, __pyx_L3_error) + __pyx_v_w = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_w == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 164, __pyx_L3_error) + __pyx_v_h = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_h == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 164, __pyx_L3_error) + __pyx_v_r = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_r == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 164, __pyx_L3_error) + __pyx_v_site_arr = ((PyArrayObject *)values[4]); + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 164, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("squish.energy.RadialTEnergy.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_site_arr), __pyx_ptype_5numpy_ndarray, 1, "site_arr", 0))) __PYX_ERR(0, 165, __pyx_L1_error) + __pyx_r = __pyx_pf_6squish_6energy_13RadialTEnergy___init__(((struct __pyx_obj_6squish_6energy_RadialTEnergy *)__pyx_v_self), __pyx_v_n, __pyx_v_w, __pyx_v_h, __pyx_v_r, __pyx_v_site_arr); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_6squish_6energy_13RadialTEnergy___init__(struct __pyx_obj_6squish_6energy_RadialTEnergy *__pyx_v_self, __pyx_t_6squish_4core_INT_T __pyx_v_n, __pyx_t_6squish_4core_FLOAT_T __pyx_v_w, __pyx_t_6squish_4core_FLOAT_T __pyx_v_h, __pyx_t_6squish_4core_FLOAT_T __pyx_v_r, PyArrayObject *__pyx_v_site_arr) { + __Pyx_LocalBuf_ND __pyx_pybuffernd_site_arr; + __Pyx_Buffer __pyx_pybuffer_site_arr; + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 0); + __pyx_pybuffer_site_arr.pybuffer.buf = NULL; + __pyx_pybuffer_site_arr.refcount = 0; + __pyx_pybuffernd_site_arr.data = NULL; + __pyx_pybuffernd_site_arr.rcbuffer = &__pyx_pybuffer_site_arr; + { + __Pyx_BufFmt_StackElem __pyx_stack[1]; + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_site_arr, &__Pyx_TypeInfo_nn___pyx_t_6squish_4core_FLOAT_T, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 164, __pyx_L1_error) + } + __pyx_pybuffernd_site_arr.diminfo[0].strides = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_site_arr.diminfo[0].shape = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_site_arr.diminfo[1].strides = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_site_arr.diminfo[1].shape = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.shape[1]; + + /* "squish/energy.pyx":166 + * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, + * np.ndarray[FLOAT_T, ndim=2] site_arr): + * self.edge_cache_map = &RADIALT_ECM # <<<<<<<<<<<<<< + * self.energy = 0.0 + * + */ + __pyx_v_self->__pyx_base.edge_cache_map = (&__pyx_v_6squish_6energy_RADIALT_ECM); + + /* "squish/energy.pyx":167 + * np.ndarray[FLOAT_T, ndim=2] site_arr): + * self.edge_cache_map = &RADIALT_ECM + * self.energy = 0.0 # <<<<<<<<<<<<<< + * + * super().__init__(n, w, h, r, site_arr) + */ + __pyx_v_self->__pyx_base.energy = 0.0; + + /* "squish/energy.pyx":169 + * self.energy = 0.0 + * + * super().__init__(n, w, h, r, site_arr) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(((PyObject *)__pyx_ptype_6squish_6energy_RadialTEnergy)); + __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6squish_6energy_RadialTEnergy)); + PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6squish_6energy_RadialTEnergy)); + __Pyx_INCREF(((PyObject *)__pyx_v_self)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); + PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyInt_From_npy_int64(__pyx_v_n); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyFloat_FromDouble(__pyx_v_w); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = PyFloat_FromDouble(__pyx_v_h); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = PyFloat_FromDouble(__pyx_v_r); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_8 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, ((PyObject *)__pyx_v_site_arr)}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, ((PyObject *)__pyx_v_site_arr)}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + { + __pyx_t_9 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + if (__pyx_t_7) { + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; + } + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_8, __pyx_t_6); + __Pyx_INCREF(((PyObject *)__pyx_v_site_arr)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_site_arr)); + PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_8, ((PyObject *)__pyx_v_site_arr)); + __pyx_t_3 = 0; + __pyx_t_4 = 0; + __pyx_t_5 = 0; + __pyx_t_6 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 169, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "squish/energy.pyx":164 + * attr_str = "radial-t" + * title_str = "Radial[T]" + * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, # <<<<<<<<<<<<<< + * np.ndarray[FLOAT_T, ndim=2] site_arr): + * self.edge_cache_map = &RADIALT_ECM + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer); + __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __Pyx_AddTraceback("squish.energy.RadialTEnergy.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + goto __pyx_L2; + __pyx_L0:; + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer); + __pyx_L2:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "squish/energy.pyx":172 + * + * + * cdef void precompute(self) except *: # <<<<<<<<<<<<<< + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + */ + +static void __pyx_f_6squish_6energy_13RadialTEnergy_precompute(struct __pyx_obj_6squish_6energy_RadialTEnergy *__pyx_v_self) { + __pyx_t_6squish_7voronoi_VoronoiInfo __pyx_v_info; + __pyx_t_6squish_7voronoi_Site __pyx_v_xi; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_v_e; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_v_em; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_v_ep; + __pyx_t_6squish_4core_Vector2D __pyx_v_la; + __Pyx_memviewslice __pyx_v_site_energy = { 0, 0, { 0 }, { 0 }, { 0 } }; + __Pyx_memviewslice __pyx_v_avg_radii = { 0, 0, { 0 }, { 0 }, { 0 } }; + __pyx_t_6squish_4core_FLOAT_T __pyx_v_sm; + __pyx_t_6squish_4core_FLOAT_T __pyx_v_sp; + __pyx_t_6squish_4core_INT_T __pyx_v_i; + __pyx_t_6squish_4core_INT_T __pyx_v_j; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } }; + Py_ssize_t __pyx_t_9; + __pyx_t_6squish_4core_INT_T __pyx_t_10; + __pyx_t_6squish_4core_INT_T __pyx_t_11; + int __pyx_t_12; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_t_13; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_t_14; + __pyx_t_6squish_4core_INT_T __pyx_t_15; + __pyx_t_6squish_4core_INT_T __pyx_t_16; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_17; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("precompute", 0); + + /* "squish/energy.pyx":173 + * + * cdef void precompute(self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + * + */ + if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 173, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 173, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.points.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 173, __pyx_L1_error)} + + /* "squish/energy.pyx":174 + * cdef void precompute(self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) # <<<<<<<<<<<<<< + * + * cdef Site xi + */ + if (unlikely(!__pyx_v_self->__pyx_base.vertices.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 174, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.site_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 174, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.edge_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 174, __pyx_L1_error)} + + /* "squish/energy.pyx":173 + * + * cdef void precompute(self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + * + */ + __pyx_v_info = __pyx_f_6squish_7voronoi__VoronoiInfo(__pyx_v_self->__pyx_base.sites, __pyx_v_self->__pyx_base.edges, __pyx_v_self->__pyx_base.points, __pyx_v_self->__pyx_base.vertices, __pyx_v_self->__pyx_base.site_cache, __pyx_v_self->__pyx_base.edge_cache, __pyx_v_self->__pyx_base.edge_cache_map); + + /* "squish/energy.pyx":181 + * + * # All energy has a 2pir_0 term. + * cdef FLOAT_T [:] site_energy = np.full(self.sites.shape[0], 2*PI*self.r**2) # <<<<<<<<<<<<<< + * cdef FLOAT_T [:] avg_radii = np.zeros(self.sites.shape[0]) + * cdef FLOAT_T sm, sp + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_full); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 181, __pyx_L1_error)} + __pyx_t_2 = PyInt_FromSsize_t((__pyx_v_self->__pyx_base.sites.shape[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = PyFloat_FromDouble(((2.0 * M_PI) * pow(__pyx_v_self->__pyx_base.r, 2.0))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + __pyx_t_6 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_6 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + { + __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (__pyx_t_5) { + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; + } + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); + __pyx_t_2 = 0; + __pyx_t_4 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_6squish_4core_FLOAT_T(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_site_energy = __pyx_t_8; + __pyx_t_8.memview = NULL; + __pyx_t_8.data = NULL; + + /* "squish/energy.pyx":182 + * # All energy has a 2pir_0 term. + * cdef FLOAT_T [:] site_energy = np.full(self.sites.shape[0], 2*PI*self.r**2) + * cdef FLOAT_T [:] avg_radii = np.zeros(self.sites.shape[0]) # <<<<<<<<<<<<<< + * cdef FLOAT_T sm, sp + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 182, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 182, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 182, __pyx_L1_error)} + __pyx_t_3 = PyInt_FromSsize_t((__pyx_v_self->__pyx_base.sites.shape[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 182, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + } + } + __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 182, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_6squish_4core_FLOAT_T(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 182, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_avg_radii = __pyx_t_8; + __pyx_t_8.memview = NULL; + __pyx_t_8.data = NULL; + + /* "squish/energy.pyx":186 + * + * cdef INT_T i, j + * for i in prange(self.sites.shape[0], nogil=True): # <<<<<<<<<<<<<< + * xi = _Site(i, &info) + * e = xi.edge(&xi) + */ + { + #ifdef WITH_THREAD + PyThreadState *_save; + Py_UNBLOCK_THREADS + __Pyx_FastGIL_Remember(); + #endif + /*try:*/ { + if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 186, __pyx_L4_error)} + __pyx_t_9 = (__pyx_v_self->__pyx_base.sites.shape[0]); + if ((1 == 0)) abort(); + { + #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) + #undef likely + #undef unlikely + #define likely(x) (x) + #define unlikely(x) (x) + #endif + __pyx_t_11 = (__pyx_t_9 - 0 + 1 - 1/abs(1)) / 1; + if (__pyx_t_11 > 0) + { + #ifdef _OPENMP + #pragma omp parallel private(__pyx_t_12, __pyx_t_13, __pyx_t_14, __pyx_t_15, __pyx_t_16) + #endif /* _OPENMP */ + { + #ifdef _OPENMP + #pragma omp for lastprivate(__pyx_v_e) lastprivate(__pyx_v_em) lastprivate(__pyx_v_ep) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) lastprivate(__pyx_v_la) lastprivate(__pyx_v_sm) lastprivate(__pyx_v_sp) lastprivate(__pyx_v_xi) + #endif /* _OPENMP */ + for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_11; __pyx_t_10++){ + { + __pyx_v_i = (__pyx_t_6squish_4core_INT_T)(0 + 1 * __pyx_t_10); + /* Initialize private variables to invalid values */ + __pyx_v_j = ((__pyx_t_6squish_4core_INT_T)0xbad0bad0); + __pyx_v_sm = ((__pyx_t_6squish_4core_FLOAT_T)__PYX_NAN()); + __pyx_v_sp = ((__pyx_t_6squish_4core_FLOAT_T)__PYX_NAN()); + + /* "squish/energy.pyx":187 + * cdef INT_T i, j + * for i in prange(self.sites.shape[0], nogil=True): + * xi = _Site(i, &info) # <<<<<<<<<<<<<< + * e = xi.edge(&xi) + * j = 0 + */ + __pyx_v_xi = __pyx_f_6squish_7voronoi__Site(__pyx_v_i, (&__pyx_v_info)); + + /* "squish/energy.pyx":188 + * for i in prange(self.sites.shape[0], nogil=True): + * xi = _Site(i, &info) + * e = xi.edge(&xi) # <<<<<<<<<<<<<< + * j = 0 + * while j < xi.edge_num(&xi): + */ + __pyx_v_e = __pyx_v_xi.edge((&__pyx_v_xi)); + + /* "squish/energy.pyx":189 + * xi = _Site(i, &info) + * e = xi.edge(&xi) + * j = 0 # <<<<<<<<<<<<<< + * while j < xi.edge_num(&xi): + * em, ep = e.prev(&e), e.next(&e) + */ + __pyx_v_j = 0; + + /* "squish/energy.pyx":190 + * e = xi.edge(&xi) + * j = 0 + * while j < xi.edge_num(&xi): # <<<<<<<<<<<<<< + * em, ep = e.prev(&e), e.next(&e) + * e.cache.H(&e, VoronoiContainer.calc_H(em, e)) + */ + while (1) { + __pyx_t_12 = ((__pyx_v_j < __pyx_v_xi.edge_num((&__pyx_v_xi))) != 0); + if (!__pyx_t_12) break; + + /* "squish/energy.pyx":191 + * j = 0 + * while j < xi.edge_num(&xi): + * em, ep = e.prev(&e), e.next(&e) # <<<<<<<<<<<<<< + * e.cache.H(&e, VoronoiContainer.calc_H(em, e)) + * + */ + __pyx_t_13 = __pyx_v_e.prev((&__pyx_v_e)); + __pyx_t_14 = __pyx_v_e.next((&__pyx_v_e)); + __pyx_v_em = __pyx_t_13; + __pyx_v_ep = __pyx_t_14; + + /* "squish/energy.pyx":192 + * while j < xi.edge_num(&xi): + * em, ep = e.prev(&e), e.next(&e) + * e.cache.H(&e, VoronoiContainer.calc_H(em, e)) # <<<<<<<<<<<<<< + * + * la = e.cache.la(&e, NAN_VECTOR) + */ + (void)(__pyx_v_e.cache->H((&__pyx_v_e), __pyx_vtabptr_6squish_7voronoi_VoronoiContainer->calc_H(__pyx_v_em, __pyx_v_e))); + + /* "squish/energy.pyx":194 + * e.cache.H(&e, VoronoiContainer.calc_H(em, e)) + * + * la = e.cache.la(&e, NAN_VECTOR) # <<<<<<<<<<<<<< + * sp = la.dot(&la, ep.cache.da(&ep, NAN_VECTOR)) # dap . la + * sm = la.dot(&la, e.cache.da(&e, NAN_VECTOR)) # da . la + */ + __pyx_v_la = __pyx_v_e.cache->la((&__pyx_v_e), __pyx_v_6squish_7voronoi_NAN_VECTOR); + + /* "squish/energy.pyx":195 + * + * la = e.cache.la(&e, NAN_VECTOR) + * sp = la.dot(&la, ep.cache.da(&ep, NAN_VECTOR)) # dap . la # <<<<<<<<<<<<<< + * sm = la.dot(&la, e.cache.da(&e, NAN_VECTOR)) # da . la + * + */ + __pyx_v_sp = __pyx_v_la.dot((&__pyx_v_la), __pyx_v_ep.cache->da((&__pyx_v_ep), __pyx_v_6squish_7voronoi_NAN_VECTOR)); + + /* "squish/energy.pyx":196 + * la = e.cache.la(&e, NAN_VECTOR) + * sp = la.dot(&la, ep.cache.da(&ep, NAN_VECTOR)) # dap . la + * sm = la.dot(&la, e.cache.da(&e, NAN_VECTOR)) # da . la # <<<<<<<<<<<<<< + * + * sp = sp / (ep.cache.da_mag(&ep, NAN) * e.cache.la_mag(&e, NAN)) + */ + __pyx_v_sm = __pyx_v_la.dot((&__pyx_v_la), __pyx_v_e.cache->da((&__pyx_v_e), __pyx_v_6squish_7voronoi_NAN_VECTOR)); + + /* "squish/energy.pyx":198 + * sm = la.dot(&la, e.cache.da(&e, NAN_VECTOR)) # da . la + * + * sp = sp / (ep.cache.da_mag(&ep, NAN) * e.cache.la_mag(&e, NAN)) # <<<<<<<<<<<<<< + * sm = sm / (e.cache.da_mag(&e, NAN) * e.cache.la_mag(&e, NAN)) + * + */ + __pyx_v_sp = (__pyx_v_sp / (__pyx_v_ep.cache->da_mag((&__pyx_v_ep), NAN) * __pyx_v_e.cache->la_mag((&__pyx_v_e), NAN))); + + /* "squish/energy.pyx":199 + * + * sp = sp / (ep.cache.da_mag(&ep, NAN) * e.cache.la_mag(&e, NAN)) + * sm = sm / (e.cache.da_mag(&e, NAN) * e.cache.la_mag(&e, NAN)) # <<<<<<<<<<<<<< + * + * e.cache.calI(&e, (atanh(sp) - atanh(sm))) + */ + __pyx_v_sm = (__pyx_v_sm / (__pyx_v_e.cache->da_mag((&__pyx_v_e), NAN) * __pyx_v_e.cache->la_mag((&__pyx_v_e), NAN))); + + /* "squish/energy.pyx":201 + * sm = sm / (e.cache.da_mag(&e, NAN) * e.cache.la_mag(&e, NAN)) + * + * e.cache.calI(&e, (atanh(sp) - atanh(sm))) # <<<<<<<<<<<<<< + * + * avg_radii[i] += ( + */ + (void)(__pyx_v_e.cache->calI((&__pyx_v_e), ((__pyx_t_6squish_4core_FLOAT_T)(atanh(((double)__pyx_v_sp)) - atanh(((double)__pyx_v_sm)))))); + + /* "squish/energy.pyx":203 + * e.cache.calI(&e, (atanh(sp) - atanh(sm))) + * + * avg_radii[i] += ( # <<<<<<<<<<<<<< + * e.cache.area_p(&e, NAN) * e.cache.calI(&e, NAN) + * / e.cache.la_mag(&e, NAN) + */ + __pyx_t_15 = __pyx_v_i; + *((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_avg_radii.data + __pyx_t_15 * __pyx_v_avg_radii.strides[0]) )) += ((__pyx_v_e.cache->area_p((&__pyx_v_e), NAN) * __pyx_v_e.cache->calI((&__pyx_v_e), NAN)) / __pyx_v_e.cache->la_mag((&__pyx_v_e), NAN)); + + /* "squish/energy.pyx":208 + * ) + * + * e = e.next(&e) # <<<<<<<<<<<<<< + * j = j + 1 + * + */ + __pyx_v_e = __pyx_v_e.next((&__pyx_v_e)); + + /* "squish/energy.pyx":209 + * + * e = e.next(&e) + * j = j + 1 # <<<<<<<<<<<<<< + * + * site_energy[i] += 2*(xi.cache.area(&xi, NAN) - self.r*avg_radii[i]) + */ + __pyx_v_j = (__pyx_v_j + 1); + } + + /* "squish/energy.pyx":211 + * j = j + 1 + * + * site_energy[i] += 2*(xi.cache.area(&xi, NAN) - self.r*avg_radii[i]) # <<<<<<<<<<<<<< + * + * xi.cache.avg_radius(&xi, avg_radii[i]/(2*PI)) + */ + __pyx_t_15 = __pyx_v_i; + __pyx_t_16 = __pyx_v_i; + *((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_site_energy.data + __pyx_t_16 * __pyx_v_site_energy.strides[0]) )) += (2.0 * (__pyx_v_xi.cache->area((&__pyx_v_xi), NAN) - (__pyx_v_self->__pyx_base.r * (*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_avg_radii.data + __pyx_t_15 * __pyx_v_avg_radii.strides[0]) )))))); + + /* "squish/energy.pyx":213 + * site_energy[i] += 2*(xi.cache.area(&xi, NAN) - self.r*avg_radii[i]) + * + * xi.cache.avg_radius(&xi, avg_radii[i]/(2*PI)) # <<<<<<<<<<<<<< + * xi.cache.energy(&xi, site_energy[i]) + * + */ + __pyx_t_15 = __pyx_v_i; + (void)(__pyx_v_xi.cache->avg_radius((&__pyx_v_xi), ((*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_avg_radii.data + __pyx_t_15 * __pyx_v_avg_radii.strides[0]) ))) / ((__pyx_t_6squish_4core_FLOAT_T)(2.0 * M_PI))))); + + /* "squish/energy.pyx":214 + * + * xi.cache.avg_radius(&xi, avg_radii[i]/(2*PI)) + * xi.cache.energy(&xi, site_energy[i]) # <<<<<<<<<<<<<< + * + * self.energy = np.sum(site_energy[:self.n]) + */ + __pyx_t_15 = __pyx_v_i; + (void)(__pyx_v_xi.cache->energy((&__pyx_v_xi), (*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_site_energy.data + __pyx_t_15 * __pyx_v_site_energy.strides[0]) ))))); + } + } + } + } + } + #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) + #undef likely + #undef unlikely + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) + #endif + } + + /* "squish/energy.pyx":186 + * + * cdef INT_T i, j + * for i in prange(self.sites.shape[0], nogil=True): # <<<<<<<<<<<<<< + * xi = _Site(i, &info) + * e = xi.edge(&xi) + */ + /*finally:*/ { + /*normal exit:*/{ + #ifdef WITH_THREAD + __Pyx_FastGIL_Forget(); + Py_BLOCK_THREADS + #endif + goto __pyx_L5; + } + __pyx_L4_error: { + #ifdef WITH_THREAD + __Pyx_FastGIL_Forget(); + Py_BLOCK_THREADS + #endif + goto __pyx_L1_error; + } + __pyx_L5:; + } + } + + /* "squish/energy.pyx":216 + * xi.cache.energy(&xi, site_energy[i]) + * + * self.energy = np.sum(site_energy[:self.n]) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 216, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_sum); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 216, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_8.data = __pyx_v_site_energy.data; + __pyx_t_8.memview = __pyx_v_site_energy.memview; + __PYX_INC_MEMVIEW(&__pyx_t_8, 0); + __pyx_t_6 = -1; + if (unlikely(__pyx_memoryview_slice_memviewslice( + &__pyx_t_8, + __pyx_v_site_energy.shape[0], __pyx_v_site_energy.strides[0], __pyx_v_site_energy.suboffsets[0], + 0, + 0, + &__pyx_t_6, + 0, + __pyx_v_self->__pyx_base.n, + 0, + 0, + 1, + 0, + 1) < 0)) +{ + __PYX_ERR(0, 216, __pyx_L1_error) +} + +__pyx_t_7 = __pyx_memoryview_fromslice(__pyx_t_8, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_6squish_4core_FLOAT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_6squish_4core_FLOAT_T, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 216, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); + __pyx_t_8.memview = NULL; + __pyx_t_8.data = NULL; + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 216, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_17 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_17 == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 216, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_self->__pyx_base.energy = __pyx_t_17; + + /* "squish/energy.pyx":172 + * + * + * cdef void precompute(self) except *: # <<<<<<<<<<<<<< + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + */ + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); + __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); + __Pyx_AddTraceback("squish.energy.RadialTEnergy.precompute", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __PYX_XDEC_MEMVIEW(&__pyx_v_site_energy, 1); + __PYX_XDEC_MEMVIEW(&__pyx_v_avg_radii, 1); + __Pyx_RefNannyFinishContext(); +} + +/* "squish/energy.pyx":219 + * + * + * cdef void calc_grad(self) except *: # <<<<<<<<<<<<<< + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + */ + +static void __pyx_f_6squish_6energy_13RadialTEnergy_calc_grad(struct __pyx_obj_6squish_6energy_RadialTEnergy *__pyx_v_self) { + __pyx_t_6squish_7voronoi_VoronoiInfo __pyx_v_info; + __pyx_t_6squish_7voronoi_Site __pyx_v_xi; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_v_e; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_v_fm; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_v_f; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_v_fp; + __pyx_t_6squish_4core_Vector2D __pyx_v_temp1; + __pyx_t_6squish_4core_Vector2D __pyx_v_temp2; + __pyx_t_6squish_4core_Vector2D __pyx_v_temp3; + __pyx_t_6squish_4core_Vector2D __pyx_v_dedxi_p; + __pyx_t_6squish_4core_BitSet __pyx_v_edge_set; + __pyx_t_6squish_4core_INT_T __pyx_v_num_edges; + __Pyx_memviewslice __pyx_v_dedx = { 0, 0, { 0 }, { 0 }, { 0 } }; + __pyx_t_6squish_4core_INT_T __pyx_v_i; + __pyx_t_6squish_4core_INT_T __pyx_v_j; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } }; + __pyx_t_6squish_4core_INT_T __pyx_t_6; + __pyx_t_6squish_4core_INT_T __pyx_t_7; + __pyx_t_6squish_4core_INT_T __pyx_t_8; + int __pyx_t_9; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_t_10; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_t_11; + __pyx_t_6squish_4core_INT_T __pyx_t_12; + Py_ssize_t __pyx_t_13; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("calc_grad", 0); + + /* "squish/energy.pyx":220 + * + * cdef void calc_grad(self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + * + */ + if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 220, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 220, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.points.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 220, __pyx_L1_error)} + + /* "squish/energy.pyx":221 + * cdef void calc_grad(self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) # <<<<<<<<<<<<<< + * + * cdef Site xi + */ + if (unlikely(!__pyx_v_self->__pyx_base.vertices.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 221, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.site_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 221, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->__pyx_base.edge_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 221, __pyx_L1_error)} + + /* "squish/energy.pyx":220 + * + * cdef void calc_grad(self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + * + */ + __pyx_v_info = __pyx_f_6squish_7voronoi__VoronoiInfo(__pyx_v_self->__pyx_base.sites, __pyx_v_self->__pyx_base.edges, __pyx_v_self->__pyx_base.points, __pyx_v_self->__pyx_base.vertices, __pyx_v_self->__pyx_base.site_cache, __pyx_v_self->__pyx_base.edge_cache, __pyx_v_self->__pyx_base.edge_cache_map); + + /* "squish/energy.pyx":228 + * cdef BitSet edge_set + * + * cdef INT_T num_edges = self.edges.shape[0] # <<<<<<<<<<<<<< + * + * cdef FLOAT_T [:, ::1] dedx = np.zeros((self.n, 2), dtype=FLOAT) + */ + if (unlikely(!__pyx_v_self->__pyx_base.edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 228, __pyx_L1_error)} + __pyx_v_num_edges = (__pyx_v_self->__pyx_base.edges.shape[0]); + + /* "squish/energy.pyx":230 + * cdef INT_T num_edges = self.edges.shape[0] + * + * cdef FLOAT_T [:, ::1] dedx = np.zeros((self.n, 2), dtype=FLOAT) # <<<<<<<<<<<<<< + * + * cdef INT_T i, j + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->__pyx_base.n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); + __Pyx_INCREF(__pyx_int_2); + __Pyx_GIVEREF(__pyx_int_2); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_2); + __pyx_t_1 = 0; + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_6squish_4core_FLOAT_T(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_dedx = __pyx_t_5; + __pyx_t_5.memview = NULL; + __pyx_t_5.data = NULL; + + /* "squish/energy.pyx":233 + * + * cdef INT_T i, j + * for i in prange(self.n, nogil=True): # <<<<<<<<<<<<<< + * xi = _Site(i, &info) + * e = xi.edge(&xi) + */ + { + #ifdef WITH_THREAD + PyThreadState *_save; + Py_UNBLOCK_THREADS + __Pyx_FastGIL_Remember(); + #endif + /*try:*/ { + __pyx_t_6 = __pyx_v_self->__pyx_base.n; + if ((1 == 0)) abort(); + { + #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) + #undef likely + #undef unlikely + #define likely(x) (x) + #define unlikely(x) (x) + #endif + __pyx_t_8 = (__pyx_t_6 - 0 + 1 - 1/abs(1)) / 1; + if (__pyx_t_8 > 0) + { + #ifdef _OPENMP + #pragma omp parallel private(__pyx_t_10, __pyx_t_11, __pyx_t_12, __pyx_t_13, __pyx_t_9) + #endif /* _OPENMP */ + { + #ifdef _OPENMP + #pragma omp for lastprivate(__pyx_v_dedxi_p) lastprivate(__pyx_v_e) lastprivate(__pyx_v_edge_set) lastprivate(__pyx_v_f) lastprivate(__pyx_v_fm) lastprivate(__pyx_v_fp) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) lastprivate(__pyx_v_temp1) lastprivate(__pyx_v_temp2) lastprivate(__pyx_v_temp3) lastprivate(__pyx_v_xi) + #endif /* _OPENMP */ + for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_8; __pyx_t_7++){ + { + __pyx_v_i = (__pyx_t_6squish_4core_INT_T)(0 + 1 * __pyx_t_7); + /* Initialize private variables to invalid values */ + __pyx_v_j = ((__pyx_t_6squish_4core_INT_T)0xbad0bad0); + + /* "squish/energy.pyx":234 + * cdef INT_T i, j + * for i in prange(self.n, nogil=True): + * xi = _Site(i, &info) # <<<<<<<<<<<<<< + * e = xi.edge(&xi) + * edge_set = _BitSet(num_edges) + */ + __pyx_v_xi = __pyx_f_6squish_7voronoi__Site(__pyx_v_i, (&__pyx_v_info)); + + /* "squish/energy.pyx":235 + * for i in prange(self.n, nogil=True): + * xi = _Site(i, &info) + * e = xi.edge(&xi) # <<<<<<<<<<<<<< + * edge_set = _BitSet(num_edges) + * + */ + __pyx_v_e = __pyx_v_xi.edge((&__pyx_v_xi)); + + /* "squish/energy.pyx":236 + * xi = _Site(i, &info) + * e = xi.edge(&xi) + * edge_set = _BitSet(num_edges) # <<<<<<<<<<<<<< + * + * j = 0 + */ + __pyx_v_edge_set = __pyx_f_6squish_4core__BitSet(__pyx_v_num_edges); + + /* "squish/energy.pyx":238 + * edge_set = _BitSet(num_edges) + * + * j = 0 # <<<<<<<<<<<<<< + * while j < xi.edge_num(&xi): # Looping through site edges. + * f = e + */ + __pyx_v_j = 0; + + /* "squish/energy.pyx":239 + * + * j = 0 + * while j < xi.edge_num(&xi): # Looping through site edges. # <<<<<<<<<<<<<< + * f = e + * dedxi_p = _Vector2D(0, 0) + */ + while (1) { + __pyx_t_9 = ((__pyx_v_j < __pyx_v_xi.edge_num((&__pyx_v_xi))) != 0); + if (!__pyx_t_9) break; + + /* "squish/energy.pyx":240 + * j = 0 + * while j < xi.edge_num(&xi): # Looping through site edges. + * f = e # <<<<<<<<<<<<<< + * dedxi_p = _Vector2D(0, 0) + * # dedx (only x) + */ + __pyx_v_f = __pyx_v_e; + + /* "squish/energy.pyx":241 + * while j < xi.edge_num(&xi): # Looping through site edges. + * f = e + * dedxi_p = _Vector2D(0, 0) # <<<<<<<<<<<<<< + * # dedx (only x) + * temp1 = f.cache.la(&f, NAN_VECTOR) + */ + __pyx_v_dedxi_p = __pyx_f_6squish_4core__Vector2D(0.0, 0.0); + + /* "squish/energy.pyx":243 + * dedxi_p = _Vector2D(0, 0) + * # dedx (only x) + * temp1 = f.cache.la(&f, NAN_VECTOR) # <<<<<<<<<<<<<< + * temp1 = temp1.rot(&temp1) + * dedxi_p = temp1.copy.smul( + */ + __pyx_v_temp1 = __pyx_v_f.cache->la((&__pyx_v_f), __pyx_v_6squish_7voronoi_NAN_VECTOR); + + /* "squish/energy.pyx":244 + * # dedx (only x) + * temp1 = f.cache.la(&f, NAN_VECTOR) + * temp1 = temp1.rot(&temp1) # <<<<<<<<<<<<<< + * dedxi_p = temp1.copy.smul( + * &temp1, + */ + __pyx_v_temp1 = __pyx_v_temp1.rot((&__pyx_v_temp1)); + + /* "squish/energy.pyx":245 + * temp1 = f.cache.la(&f, NAN_VECTOR) + * temp1 = temp1.rot(&temp1) + * dedxi_p = temp1.copy.smul( # <<<<<<<<<<<<<< + * &temp1, + * f.cache.calI(&f, NAN) / f.cache.la_mag(&f, NAN) + */ + __pyx_v_dedxi_p = __pyx_v_temp1.copy.smul((&__pyx_v_temp1), (__pyx_v_f.cache->calI((&__pyx_v_f), NAN) / __pyx_v_f.cache->la_mag((&__pyx_v_f), NAN))); + + /* "squish/energy.pyx":250 + * ) + * + * while True: # Circling this vertex. # <<<<<<<<<<<<<< + * fm, fp = f.prev(&f), f.next(&f) + * + */ + while (1) { + + /* "squish/energy.pyx":251 + * + * while True: # Circling this vertex. + * fm, fp = f.prev(&f), f.next(&f) # <<<<<<<<<<<<<< + * + * if not edge_set.add(&edge_set, f.arr_index): + */ + __pyx_t_10 = __pyx_v_f.prev((&__pyx_v_f)); + __pyx_t_11 = __pyx_v_f.next((&__pyx_v_f)); + __pyx_v_fm = __pyx_t_10; + __pyx_v_fp = __pyx_t_11; + + /* "squish/energy.pyx":253 + * fm, fp = f.prev(&f), f.next(&f) + * + * if not edge_set.add(&edge_set, f.arr_index): # <<<<<<<<<<<<<< + * # ( -rot(dap) ) / |la| + * temp1 = fp.cache.da(&fp, NAN_VECTOR) + */ + __pyx_t_9 = ((!(__pyx_v_edge_set.add((&__pyx_v_edge_set), __pyx_v_f.arr_index) != 0)) != 0); + if (__pyx_t_9) { + + /* "squish/energy.pyx":255 + * if not edge_set.add(&edge_set, f.arr_index): + * # ( -rot(dap) ) / |la| + * temp1 = fp.cache.da(&fp, NAN_VECTOR) # <<<<<<<<<<<<<< + * temp1 = temp1.rot(&temp1) + * temp1.self.sdiv(&temp1, -f.cache.la_mag(&f, NAN)) + */ + __pyx_v_temp1 = __pyx_v_fp.cache->da((&__pyx_v_fp), __pyx_v_6squish_7voronoi_NAN_VECTOR); + + /* "squish/energy.pyx":256 + * # ( -rot(dap) ) / |la| + * temp1 = fp.cache.da(&fp, NAN_VECTOR) + * temp1 = temp1.rot(&temp1) # <<<<<<<<<<<<<< + * temp1.self.sdiv(&temp1, -f.cache.la_mag(&f, NAN)) + * + */ + __pyx_v_temp1 = __pyx_v_temp1.rot((&__pyx_v_temp1)); + + /* "squish/energy.pyx":257 + * temp1 = fp.cache.da(&fp, NAN_VECTOR) + * temp1 = temp1.rot(&temp1) + * temp1.self.sdiv(&temp1, -f.cache.la_mag(&f, NAN)) # <<<<<<<<<<<<<< + * + * # la * area_p / |la|^2 + */ + (void)(__pyx_v_temp1.self.sdiv((&__pyx_v_temp1), (-__pyx_v_f.cache->la_mag((&__pyx_v_f), NAN)))); + + /* "squish/energy.pyx":260 + * + * # la * area_p / |la|^2 + * temp3 = f.cache.la(&f, NAN_VECTOR) # <<<<<<<<<<<<<< + * temp3.self.smul( + * &temp3, + */ + __pyx_v_temp3 = __pyx_v_f.cache->la((&__pyx_v_f), __pyx_v_6squish_7voronoi_NAN_VECTOR); + + /* "squish/energy.pyx":261 + * # la * area_p / |la|^2 + * temp3 = f.cache.la(&f, NAN_VECTOR) + * temp3.self.smul( # <<<<<<<<<<<<<< + * &temp3, + * f.cache.area_p(&f, NAN) / f.cache.la_mag(&f, NAN)**3 + */ + (void)(__pyx_v_temp3.self.smul((&__pyx_v_temp3), (__pyx_v_f.cache->area_p((&__pyx_v_f), NAN) / pow(__pyx_v_f.cache->la_mag((&__pyx_v_f), NAN), 3.0)))); + + /* "squish/energy.pyx":266 + * ) + * # Combine * calI + * temp1.self.vadd(&temp1, temp3) # <<<<<<<<<<<<<< + * temp1.self.smul(&temp1, f.cache.calI(&f, NAN)) + * + */ + (void)(__pyx_v_temp1.self.vadd((&__pyx_v_temp1), __pyx_v_temp3)); + + /* "squish/energy.pyx":267 + * # Combine * calI + * temp1.self.vadd(&temp1, temp3) + * temp1.self.smul(&temp1, f.cache.calI(&f, NAN)) # <<<<<<<<<<<<<< + * + * # rot(dam) / |lam| + */ + (void)(__pyx_v_temp1.self.smul((&__pyx_v_temp1), __pyx_v_f.cache->calI((&__pyx_v_f), NAN))); + + /* "squish/energy.pyx":270 + * + * # rot(dam) / |lam| + * temp2 = fm.cache.da(&fm, NAN_VECTOR) # <<<<<<<<<<<<<< + * temp2 = temp2.rot(&temp2) + * temp2.self.sdiv(&temp2, fm.cache.la_mag(&fm, NAN)) + */ + __pyx_v_temp2 = __pyx_v_fm.cache->da((&__pyx_v_fm), __pyx_v_6squish_7voronoi_NAN_VECTOR); + + /* "squish/energy.pyx":271 + * # rot(dam) / |lam| + * temp2 = fm.cache.da(&fm, NAN_VECTOR) + * temp2 = temp2.rot(&temp2) # <<<<<<<<<<<<<< + * temp2.self.sdiv(&temp2, fm.cache.la_mag(&fm, NAN)) + * + */ + __pyx_v_temp2 = __pyx_v_temp2.rot((&__pyx_v_temp2)); + + /* "squish/energy.pyx":272 + * temp2 = fm.cache.da(&fm, NAN_VECTOR) + * temp2 = temp2.rot(&temp2) + * temp2.self.sdiv(&temp2, fm.cache.la_mag(&fm, NAN)) # <<<<<<<<<<<<<< + * + * # lam * area_pm / |lam|^2 + */ + (void)(__pyx_v_temp2.self.sdiv((&__pyx_v_temp2), __pyx_v_fm.cache->la_mag((&__pyx_v_fm), NAN))); + + /* "squish/energy.pyx":275 + * + * # lam * area_pm / |lam|^2 + * temp3 = fm.cache.la(&fm, NAN_VECTOR) # <<<<<<<<<<<<<< + * temp3.self.smul( + * &temp3, + */ + __pyx_v_temp3 = __pyx_v_fm.cache->la((&__pyx_v_fm), __pyx_v_6squish_7voronoi_NAN_VECTOR); + + /* "squish/energy.pyx":276 + * # lam * area_pm / |lam|^2 + * temp3 = fm.cache.la(&fm, NAN_VECTOR) + * temp3.self.smul( # <<<<<<<<<<<<<< + * &temp3, + * fm.cache.area_p(&fm, NAN) / fm.cache.la_mag(&fm, NAN)**3 + */ + (void)(__pyx_v_temp3.self.smul((&__pyx_v_temp3), (__pyx_v_fm.cache->area_p((&__pyx_v_fm), NAN) / pow(__pyx_v_fm.cache->la_mag((&__pyx_v_fm), NAN), 3.0)))); + + /* "squish/energy.pyx":281 + * ) + * # Combine * calIm + * temp2.self.vsub(&temp2, temp3) # <<<<<<<<<<<<<< + * temp2.self.smul(&temp2, fm.cache.calI(&fm, NAN)) + * + */ + (void)(__pyx_v_temp2.self.vsub((&__pyx_v_temp2), __pyx_v_temp3)); + + /* "squish/energy.pyx":282 + * # Combine * calIm + * temp2.self.vsub(&temp2, temp3) + * temp2.self.smul(&temp2, fm.cache.calI(&fm, NAN)) # <<<<<<<<<<<<<< + * + * temp1.self.vadd(&temp1, temp2) + */ + (void)(__pyx_v_temp2.self.smul((&__pyx_v_temp2), __pyx_v_fm.cache->calI((&__pyx_v_fm), NAN))); + + /* "squish/energy.pyx":284 + * temp2.self.smul(&temp2, fm.cache.calI(&fm, NAN)) + * + * temp1.self.vadd(&temp1, temp2) # <<<<<<<<<<<<<< + * temp1.self.matmul(&temp1, e.get_H(&e, xi)) + * + */ + (void)(__pyx_v_temp1.self.vadd((&__pyx_v_temp1), __pyx_v_temp2)); + + /* "squish/energy.pyx":285 + * + * temp1.self.vadd(&temp1, temp2) + * temp1.self.matmul(&temp1, e.get_H(&e, xi)) # <<<<<<<<<<<<<< + * + * dedxi_p.self.vadd(&dedxi_p, temp1) + */ + (void)(__pyx_v_temp1.self.matmul((&__pyx_v_temp1), __pyx_v_e.get_H((&__pyx_v_e), __pyx_v_xi))); + + /* "squish/energy.pyx":287 + * temp1.self.matmul(&temp1, e.get_H(&e, xi)) + * + * dedxi_p.self.vadd(&dedxi_p, temp1) # <<<<<<<<<<<<<< + * + * f = f.twin(&f) + */ + (void)(__pyx_v_dedxi_p.self.vadd((&__pyx_v_dedxi_p), __pyx_v_temp1)); + + /* "squish/energy.pyx":253 + * fm, fp = f.prev(&f), f.next(&f) + * + * if not edge_set.add(&edge_set, f.arr_index): # <<<<<<<<<<<<<< + * # ( -rot(dap) ) / |la| + * temp1 = fp.cache.da(&fp, NAN_VECTOR) + */ + } + + /* "squish/energy.pyx":289 + * dedxi_p.self.vadd(&dedxi_p, temp1) + * + * f = f.twin(&f) # <<<<<<<<<<<<<< + * f = f.next(&f) + * + */ + __pyx_v_f = __pyx_v_f.twin((&__pyx_v_f)); + + /* "squish/energy.pyx":290 + * + * f = f.twin(&f) + * f = f.next(&f) # <<<<<<<<<<<<<< + * + * if f.arr_index == e.arr_index: + */ + __pyx_v_f = __pyx_v_f.next((&__pyx_v_f)); + + /* "squish/energy.pyx":292 + * f = f.next(&f) + * + * if f.arr_index == e.arr_index: # <<<<<<<<<<<<<< + * break + * + */ + __pyx_t_9 = ((__pyx_v_f.arr_index == __pyx_v_e.arr_index) != 0); + if (__pyx_t_9) { + + /* "squish/energy.pyx":293 + * + * if f.arr_index == e.arr_index: + * break # <<<<<<<<<<<<<< + * + * dedx[i][0] -= -2*self.r*dedxi_p.x + */ + goto __pyx_L13_break; + + /* "squish/energy.pyx":292 + * f = f.next(&f) + * + * if f.arr_index == e.arr_index: # <<<<<<<<<<<<<< + * break + * + */ + } + } + __pyx_L13_break:; + + /* "squish/energy.pyx":295 + * break + * + * dedx[i][0] -= -2*self.r*dedxi_p.x # <<<<<<<<<<<<<< + * dedx[i][1] -= -2*self.r*dedxi_p.y + * + */ + __pyx_t_12 = __pyx_v_i; + __pyx_t_13 = 0; + *((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_dedx.data + __pyx_t_12 * __pyx_v_dedx.strides[0]) )) + __pyx_t_13)) )) -= ((-2.0 * __pyx_v_self->__pyx_base.r) * __pyx_v_dedxi_p.x); + + /* "squish/energy.pyx":296 + * + * dedx[i][0] -= -2*self.r*dedxi_p.x + * dedx[i][1] -= -2*self.r*dedxi_p.y # <<<<<<<<<<<<<< + * + * e = e.next(&e) + */ + __pyx_t_12 = __pyx_v_i; + __pyx_t_13 = 1; + *((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_dedx.data + __pyx_t_12 * __pyx_v_dedx.strides[0]) )) + __pyx_t_13)) )) -= ((-2.0 * __pyx_v_self->__pyx_base.r) * __pyx_v_dedxi_p.y); + + /* "squish/energy.pyx":298 + * dedx[i][1] -= -2*self.r*dedxi_p.y + * + * e = e.next(&e) # <<<<<<<<<<<<<< + * j = j + 1 + * + */ + __pyx_v_e = __pyx_v_e.next((&__pyx_v_e)); + + /* "squish/energy.pyx":299 + * + * e = e.next(&e) + * j = j + 1 # <<<<<<<<<<<<<< + * + * edge_set.free(&edge_set) + */ + __pyx_v_j = (__pyx_v_j + 1); + } + + /* "squish/energy.pyx":301 + * j = j + 1 + * + * edge_set.free(&edge_set) # <<<<<<<<<<<<<< + * self.grad = dedx + */ + __pyx_v_edge_set.free((&__pyx_v_edge_set)); + } + } + } + } + } + #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) + #undef likely + #undef unlikely + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) + #endif + } + + /* "squish/energy.pyx":233 + * + * cdef INT_T i, j + * for i in prange(self.n, nogil=True): # <<<<<<<<<<<<<< + * xi = _Site(i, &info) + * e = xi.edge(&xi) + */ + /*finally:*/ { + /*normal exit:*/{ + #ifdef WITH_THREAD + __Pyx_FastGIL_Forget(); + Py_BLOCK_THREADS + #endif + goto __pyx_L5; + } + __pyx_L5:; + } + } + + /* "squish/energy.pyx":302 + * + * edge_set.free(&edge_set) + * self.grad = dedx # <<<<<<<<<<<<<< + */ + __PYX_XDEC_MEMVIEW(&__pyx_v_self->__pyx_base.grad, 0); + __PYX_INC_MEMVIEW(&__pyx_v_dedx, 0); + __pyx_v_self->__pyx_base.grad = __pyx_v_dedx; + + /* "squish/energy.pyx":219 + * + * + * cdef void calc_grad(self) except *: # <<<<<<<<<<<<<< + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + */ + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1); + __Pyx_AddTraceback("squish.energy.RadialTEnergy.calc_grad", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_L0:; + __PYX_XDEC_MEMVIEW(&__pyx_v_dedx, 1); + __Pyx_RefNannyFinishContext(); +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6squish_6energy_13RadialTEnergy_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_6squish_6energy_13RadialTEnergy_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_6squish_6energy_13RadialTEnergy_2__reduce_cython__(((struct __pyx_obj_6squish_6energy_RadialTEnergy *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6squish_6energy_13RadialTEnergy_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6squish_6energy_RadialTEnergy *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("squish.energy.RadialTEnergy.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6squish_6energy_13RadialTEnergy_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +static PyObject *__pyx_pw_6squish_6energy_13RadialTEnergy_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_6squish_6energy_13RadialTEnergy_4__setstate_cython__(((struct __pyx_obj_6squish_6energy_RadialTEnergy *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6squish_6energy_13RadialTEnergy_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6squish_6energy_RadialTEnergy *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("squish.energy.RadialTEnergy.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":735 + * ctypedef npy_cdouble complex_t + * + * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(1, a) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":736 + * + * cdef inline object PyArray_MultiIterNew1(a): + * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew2(a, b): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 736, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":735 + * ctypedef npy_cdouble complex_t + * + * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(1, a) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":738 + * return PyArray_MultiIterNew(1, a) + * + * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(2, a, b) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":739 + * + * cdef inline object PyArray_MultiIterNew2(a, b): + * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew3(a, b, c): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 739, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":738 + * return PyArray_MultiIterNew(1, a) + * + * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(2, a, b) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":741 + * return PyArray_MultiIterNew(2, a, b) + * + * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(3, a, b, c) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":742 + * + * cdef inline object PyArray_MultiIterNew3(a, b, c): + * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew4(a, b, c, d): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 742, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":741 + * return PyArray_MultiIterNew(2, a, b) + * + * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(3, a, b, c) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":744 + * return PyArray_MultiIterNew(3, a, b, c) + * + * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(4, a, b, c, d) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":745 + * + * cdef inline object PyArray_MultiIterNew4(a, b, c, d): + * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< + * + * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 745, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":744 + * return PyArray_MultiIterNew(3, a, b, c) + * + * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(4, a, b, c, d) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":747 + * return PyArray_MultiIterNew(4, a, b, c, d) + * + * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(5, a, b, c, d, e) + * + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d, PyObject *__pyx_v_e) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":748 + * + * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): + * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< + * + * cdef inline tuple PyDataType_SHAPE(dtype d): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 748, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":747 + * return PyArray_MultiIterNew(4, a, b, c, d) + * + * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< + * return PyArray_MultiIterNew(5, a, b, c, d, e) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":750 + * return PyArray_MultiIterNew(5, a, b, c, d, e) + * + * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< + * if PyDataType_HASSUBARRAY(d): + * return d.subarray.shape + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__pyx_v_d) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":751 + * + * cdef inline tuple PyDataType_SHAPE(dtype d): + * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< + * return d.subarray.shape + * else: + */ + __pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0); + if (__pyx_t_1) { + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":752 + * cdef inline tuple PyDataType_SHAPE(dtype d): + * if PyDataType_HASSUBARRAY(d): + * return d.subarray.shape # <<<<<<<<<<<<<< + * else: + * return () + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(((PyObject*)__pyx_v_d->subarray->shape)); + __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape); + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":751 + * + * cdef inline tuple PyDataType_SHAPE(dtype d): + * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< + * return d.subarray.shape + * else: + */ + } + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":754 + * return d.subarray.shape + * else: + * return () # <<<<<<<<<<<<<< + * + * + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_empty_tuple); + __pyx_r = __pyx_empty_tuple; + goto __pyx_L0; + } + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":750 + * return PyArray_MultiIterNew(5, a, b, c, d, e) + * + * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< + * if PyDataType_HASSUBARRAY(d): + * return d.subarray.shape + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":929 + * int _import_umath() except -1 + * + * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< + * Py_INCREF(base) # important to do this before stealing the reference below! + * PyArray_SetBaseObject(arr, base) + */ + +static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("set_array_base", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":930 + * + * cdef inline void set_array_base(ndarray arr, object base): + * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<< + * PyArray_SetBaseObject(arr, base) + * + */ + Py_INCREF(__pyx_v_base); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":931 + * cdef inline void set_array_base(ndarray arr, object base): + * Py_INCREF(base) # important to do this before stealing the reference below! + * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<< + * + * cdef inline object get_array_base(ndarray arr): + */ + (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base)); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":929 + * int _import_umath() except -1 + * + * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< + * Py_INCREF(base) # important to do this before stealing the reference below! + * PyArray_SetBaseObject(arr, base) + */ + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":933 + * PyArray_SetBaseObject(arr, base) + * + * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< + * base = PyArray_BASE(arr) + * if base is NULL: + */ + +static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) { + PyObject *__pyx_v_base; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + __Pyx_RefNannySetupContext("get_array_base", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":934 + * + * cdef inline object get_array_base(ndarray arr): + * base = PyArray_BASE(arr) # <<<<<<<<<<<<<< + * if base is NULL: + * return None + */ + __pyx_v_base = PyArray_BASE(__pyx_v_arr); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":935 + * cdef inline object get_array_base(ndarray arr): + * base = PyArray_BASE(arr) + * if base is NULL: # <<<<<<<<<<<<<< + * return None + * return base + */ + __pyx_t_1 = ((__pyx_v_base == NULL) != 0); + if (__pyx_t_1) { + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":936 + * base = PyArray_BASE(arr) + * if base is NULL: + * return None # <<<<<<<<<<<<<< + * return base + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":935 + * cdef inline object get_array_base(ndarray arr): + * base = PyArray_BASE(arr) + * if base is NULL: # <<<<<<<<<<<<<< + * return None + * return base + */ + } + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":937 + * if base is NULL: + * return None + * return base # <<<<<<<<<<<<<< + * + * # Versions of the import_* functions which are more suitable for + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(((PyObject *)__pyx_v_base)); + __pyx_r = ((PyObject *)__pyx_v_base); + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":933 + * PyArray_SetBaseObject(arr, base) + * + * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< + * base = PyArray_BASE(arr) + * if base is NULL: + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":941 + * # Versions of the import_* functions which are more suitable for + * # Cython code. + * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< + * try: + * __pyx_import_array() + */ + +static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("import_array", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":942 + * # Cython code. + * cdef inline int import_array() except -1: + * try: # <<<<<<<<<<<<<< + * __pyx_import_array() + * except Exception: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":943 + * cdef inline int import_array() except -1: + * try: + * __pyx_import_array() # <<<<<<<<<<<<<< + * except Exception: + * raise ImportError("numpy.core.multiarray failed to import") + */ + __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 943, __pyx_L3_error) + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":942 + * # Cython code. + * cdef inline int import_array() except -1: + * try: # <<<<<<<<<<<<<< + * __pyx_import_array() + * except Exception: + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":944 + * try: + * __pyx_import_array() + * except Exception: # <<<<<<<<<<<<<< + * raise ImportError("numpy.core.multiarray failed to import") + * + */ + __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_4) { + __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 944, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GOTREF(__pyx_t_7); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":945 + * __pyx_import_array() + * except Exception: + * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< + * + * cdef inline int import_umath() except -1: + */ + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 945, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_Raise(__pyx_t_8, 0, 0, 0); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __PYX_ERR(2, 945, __pyx_L5_except_error) + } + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":942 + * # Cython code. + * cdef inline int import_array() except -1: + * try: # <<<<<<<<<<<<<< + * __pyx_import_array() + * except Exception: + */ + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L8_try_end:; + } + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":941 + * # Versions of the import_* functions which are more suitable for + * # Cython code. + * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< + * try: + * __pyx_import_array() + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":947 + * raise ImportError("numpy.core.multiarray failed to import") + * + * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< + * try: + * _import_umath() + */ + +static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("import_umath", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":948 + * + * cdef inline int import_umath() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":949 + * cdef inline int import_umath() except -1: + * try: + * _import_umath() # <<<<<<<<<<<<<< + * except Exception: + * raise ImportError("numpy.core.umath failed to import") + */ + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 949, __pyx_L3_error) + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":948 + * + * cdef inline int import_umath() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":950 + * try: + * _import_umath() + * except Exception: # <<<<<<<<<<<<<< + * raise ImportError("numpy.core.umath failed to import") + * + */ + __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_4) { + __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 950, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GOTREF(__pyx_t_7); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":951 + * _import_umath() + * except Exception: + * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< + * + * cdef inline int import_ufunc() except -1: + */ + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 951, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_Raise(__pyx_t_8, 0, 0, 0); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __PYX_ERR(2, 951, __pyx_L5_except_error) + } + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":948 + * + * cdef inline int import_umath() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L8_try_end:; + } + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":947 + * raise ImportError("numpy.core.multiarray failed to import") + * + * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< + * try: + * _import_umath() + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":953 + * raise ImportError("numpy.core.umath failed to import") + * + * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< + * try: + * _import_umath() + */ + +static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("import_ufunc", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":954 + * + * cdef inline int import_ufunc() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":955 + * cdef inline int import_ufunc() except -1: + * try: + * _import_umath() # <<<<<<<<<<<<<< + * except Exception: + * raise ImportError("numpy.core.umath failed to import") + */ + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 955, __pyx_L3_error) + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":954 + * + * cdef inline int import_ufunc() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":956 + * try: + * _import_umath() + * except Exception: # <<<<<<<<<<<<<< + * raise ImportError("numpy.core.umath failed to import") + * + */ + __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_4) { + __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 956, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GOTREF(__pyx_t_7); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":957 + * _import_umath() + * except Exception: + * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< + * + * cdef extern from *: + */ + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 957, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_Raise(__pyx_t_8, 0, 0, 0); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __PYX_ERR(2, 957, __pyx_L5_except_error) + } + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":954 + * + * cdef inline int import_ufunc() except -1: + * try: # <<<<<<<<<<<<<< + * _import_umath() + * except Exception: + */ + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L8_try_end:; + } + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":953 + * raise ImportError("numpy.core.umath failed to import") + * + * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< + * try: + * _import_umath() + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":967 + * + * + * cdef inline bint is_timedelta64_object(object obj): # <<<<<<<<<<<<<< + * """ + * Cython equivalent of `isinstance(obj, np.timedelta64)` + */ + +static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("is_timedelta64_object", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":979 + * bool + * """ + * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyTimedeltaArrType_Type)); + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":967 + * + * + * cdef inline bint is_timedelta64_object(object obj): # <<<<<<<<<<<<<< + * """ + * Cython equivalent of `isinstance(obj, np.timedelta64)` + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":982 + * + * + * cdef inline bint is_datetime64_object(object obj): # <<<<<<<<<<<<<< + * """ + * Cython equivalent of `isinstance(obj, np.datetime64)` + */ + +static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("is_datetime64_object", 0); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":994 + * bool + * """ + * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyDatetimeArrType_Type)); + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":982 + * + * + * cdef inline bint is_datetime64_object(object obj): # <<<<<<<<<<<<<< + * """ + * Cython equivalent of `isinstance(obj, np.datetime64)` + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":997 + * + * + * cdef inline npy_datetime get_datetime64_value(object obj) nogil: # <<<<<<<<<<<<<< + * """ + * returns the int64 value underlying scalar numpy datetime64 object + */ + +static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) { + npy_datetime __pyx_r; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1004 + * also needed. That can be found using `get_datetime64_unit`. + * """ + * return (obj).obval # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = ((PyDatetimeScalarObject *)__pyx_v_obj)->obval; + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":997 + * + * + * cdef inline npy_datetime get_datetime64_value(object obj) nogil: # <<<<<<<<<<<<<< + * """ + * returns the int64 value underlying scalar numpy datetime64 object + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1007 + * + * + * cdef inline npy_timedelta get_timedelta64_value(object obj) nogil: # <<<<<<<<<<<<<< + * """ + * returns the int64 value underlying scalar numpy timedelta64 object + */ + +static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) { + npy_timedelta __pyx_r; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1011 + * returns the int64 value underlying scalar numpy timedelta64 object + * """ + * return (obj).obval # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = ((PyTimedeltaScalarObject *)__pyx_v_obj)->obval; + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1007 + * + * + * cdef inline npy_timedelta get_timedelta64_value(object obj) nogil: # <<<<<<<<<<<<<< + * """ + * returns the int64 value underlying scalar numpy timedelta64 object + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1014 + * + * + * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<< + * """ + * returns the unit part of the dtype for a numpy datetime64 object. + */ + +static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) { + NPY_DATETIMEUNIT __pyx_r; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1018 + * returns the unit part of the dtype for a numpy datetime64 object. + * """ + * return (obj).obmeta.base # <<<<<<<<<<<<<< + */ + __pyx_r = ((NPY_DATETIMEUNIT)((PyDatetimeScalarObject *)__pyx_v_obj)->obmeta.base); + goto __pyx_L0; + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1014 + * + * + * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<< + * """ + * returns the unit part of the dtype for a numpy datetime64 object. + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "View.MemoryView":122 + * cdef bint dtype_is_object + * + * def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None, # <<<<<<<<<<<<<< + * mode="c", bint allocate_buffer=True): + * + */ + +/* Python wrapper */ +static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_shape = 0; + Py_ssize_t __pyx_v_itemsize; + PyObject *__pyx_v_format = 0; + PyObject *__pyx_v_mode = 0; + int __pyx_v_allocate_buffer; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_shape,&__pyx_n_s_itemsize,&__pyx_n_s_format,&__pyx_n_s_mode,&__pyx_n_s_allocate_buffer,0}; + PyObject* values[5] = {0,0,0,0,0}; + values[3] = ((PyObject *)__pyx_n_s_c); + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_shape)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_itemsize)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 1); __PYX_ERR(1, 122, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_format)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 2); __PYX_ERR(1, 122, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mode); + if (value) { values[3] = value; kw_args--; } + } + CYTHON_FALLTHROUGH; + case 4: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_allocate_buffer); + if (value) { values[4] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(1, 122, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_shape = ((PyObject*)values[0]); + __pyx_v_itemsize = __Pyx_PyIndex_AsSsize_t(values[1]); if (unlikely((__pyx_v_itemsize == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 122, __pyx_L3_error) + __pyx_v_format = values[2]; + __pyx_v_mode = values[3]; + if (values[4]) { + __pyx_v_allocate_buffer = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_allocate_buffer == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 123, __pyx_L3_error) + } else { + + /* "View.MemoryView":123 + * + * def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None, + * mode="c", bint allocate_buffer=True): # <<<<<<<<<<<<<< + * + * cdef int idx + */ + __pyx_v_allocate_buffer = ((int)1); + } + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 122, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_shape), (&PyTuple_Type), 1, "shape", 1))) __PYX_ERR(1, 122, __pyx_L1_error) + if (unlikely(((PyObject *)__pyx_v_format) == Py_None)) { + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "format"); __PYX_ERR(1, 122, __pyx_L1_error) + } + __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(((struct __pyx_array_obj *)__pyx_v_self), __pyx_v_shape, __pyx_v_itemsize, __pyx_v_format, __pyx_v_mode, __pyx_v_allocate_buffer); + + /* "View.MemoryView":122 + * cdef bint dtype_is_object + * + * def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None, # <<<<<<<<<<<<<< + * mode="c", bint allocate_buffer=True): + * + */ + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, PyObject *__pyx_v_format, PyObject *__pyx_v_mode, int __pyx_v_allocate_buffer) { + int __pyx_v_idx; + Py_ssize_t __pyx_v_i; + Py_ssize_t __pyx_v_dim; + PyObject **__pyx_v_p; + char __pyx_v_order; + int __pyx_r; + __Pyx_RefNannyDeclarations + Py_ssize_t __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + char *__pyx_t_7; + int __pyx_t_8; + Py_ssize_t __pyx_t_9; + PyObject *__pyx_t_10 = NULL; + Py_ssize_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__cinit__", 0); + __Pyx_INCREF(__pyx_v_format); + + /* "View.MemoryView":129 + * cdef PyObject **p + * + * self.ndim = len(shape) # <<<<<<<<<<<<<< + * self.itemsize = itemsize + * + */ + if (unlikely(__pyx_v_shape == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(1, 129, __pyx_L1_error) + } + __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_shape); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(1, 129, __pyx_L1_error) + __pyx_v_self->ndim = ((int)__pyx_t_1); + + /* "View.MemoryView":130 + * + * self.ndim = len(shape) + * self.itemsize = itemsize # <<<<<<<<<<<<<< + * + * if not self.ndim: + */ + __pyx_v_self->itemsize = __pyx_v_itemsize; + + /* "View.MemoryView":132 + * self.itemsize = itemsize + * + * if not self.ndim: # <<<<<<<<<<<<<< + * raise ValueError("Empty shape tuple for cython.array") + * + */ + __pyx_t_2 = ((!(__pyx_v_self->ndim != 0)) != 0); + if (unlikely(__pyx_t_2)) { + + /* "View.MemoryView":133 + * + * if not self.ndim: + * raise ValueError("Empty shape tuple for cython.array") # <<<<<<<<<<<<<< + * + * if itemsize <= 0: + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 133, __pyx_L1_error) + + /* "View.MemoryView":132 + * self.itemsize = itemsize + * + * if not self.ndim: # <<<<<<<<<<<<<< + * raise ValueError("Empty shape tuple for cython.array") + * + */ + } + + /* "View.MemoryView":135 + * raise ValueError("Empty shape tuple for cython.array") + * + * if itemsize <= 0: # <<<<<<<<<<<<<< + * raise ValueError("itemsize <= 0 for cython.array") + * + */ + __pyx_t_2 = ((__pyx_v_itemsize <= 0) != 0); + if (unlikely(__pyx_t_2)) { + + /* "View.MemoryView":136 + * + * if itemsize <= 0: + * raise ValueError("itemsize <= 0 for cython.array") # <<<<<<<<<<<<<< + * + * if not isinstance(format, bytes): + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 136, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 136, __pyx_L1_error) + + /* "View.MemoryView":135 + * raise ValueError("Empty shape tuple for cython.array") + * + * if itemsize <= 0: # <<<<<<<<<<<<<< + * raise ValueError("itemsize <= 0 for cython.array") + * + */ + } + + /* "View.MemoryView":138 + * raise ValueError("itemsize <= 0 for cython.array") + * + * if not isinstance(format, bytes): # <<<<<<<<<<<<<< + * format = format.encode('ASCII') + * self._format = format # keep a reference to the byte string + */ + __pyx_t_2 = PyBytes_Check(__pyx_v_format); + __pyx_t_4 = ((!(__pyx_t_2 != 0)) != 0); + if (__pyx_t_4) { + + /* "View.MemoryView":139 + * + * if not isinstance(format, bytes): + * format = format.encode('ASCII') # <<<<<<<<<<<<<< + * self._format = format # keep a reference to the byte string + * self.format = self._format + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_n_s_ASCII) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_s_ASCII); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_3); + __pyx_t_3 = 0; + + /* "View.MemoryView":138 + * raise ValueError("itemsize <= 0 for cython.array") + * + * if not isinstance(format, bytes): # <<<<<<<<<<<<<< + * format = format.encode('ASCII') + * self._format = format # keep a reference to the byte string + */ + } + + /* "View.MemoryView":140 + * if not isinstance(format, bytes): + * format = format.encode('ASCII') + * self._format = format # keep a reference to the byte string # <<<<<<<<<<<<<< + * self.format = self._format + * + */ + if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) __PYX_ERR(1, 140, __pyx_L1_error) + __pyx_t_3 = __pyx_v_format; + __Pyx_INCREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_v_self->_format); + __Pyx_DECREF(__pyx_v_self->_format); + __pyx_v_self->_format = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "View.MemoryView":141 + * format = format.encode('ASCII') + * self._format = format # keep a reference to the byte string + * self.format = self._format # <<<<<<<<<<<<<< + * + * + */ + if (unlikely(__pyx_v_self->_format == Py_None)) { + PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); + __PYX_ERR(1, 141, __pyx_L1_error) + } + __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(1, 141, __pyx_L1_error) + __pyx_v_self->format = __pyx_t_7; + + /* "View.MemoryView":144 + * + * + * self._shape = PyObject_Malloc(sizeof(Py_ssize_t)*self.ndim*2) # <<<<<<<<<<<<<< + * self._strides = self._shape + self.ndim + * + */ + __pyx_v_self->_shape = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * __pyx_v_self->ndim) * 2))); + + /* "View.MemoryView":145 + * + * self._shape = PyObject_Malloc(sizeof(Py_ssize_t)*self.ndim*2) + * self._strides = self._shape + self.ndim # <<<<<<<<<<<<<< + * + * if not self._shape: + */ + __pyx_v_self->_strides = (__pyx_v_self->_shape + __pyx_v_self->ndim); + + /* "View.MemoryView":147 + * self._strides = self._shape + self.ndim + * + * if not self._shape: # <<<<<<<<<<<<<< + * raise MemoryError("unable to allocate shape and strides.") + * + */ + __pyx_t_4 = ((!(__pyx_v_self->_shape != 0)) != 0); + if (unlikely(__pyx_t_4)) { + + /* "View.MemoryView":148 + * + * if not self._shape: + * raise MemoryError("unable to allocate shape and strides.") # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 148, __pyx_L1_error) + + /* "View.MemoryView":147 + * self._strides = self._shape + self.ndim + * + * if not self._shape: # <<<<<<<<<<<<<< + * raise MemoryError("unable to allocate shape and strides.") + * + */ + } + + /* "View.MemoryView":151 + * + * + * for idx, dim in enumerate(shape): # <<<<<<<<<<<<<< + * if dim <= 0: + * raise ValueError("Invalid shape in axis %d: %d." % (idx, dim)) + */ + __pyx_t_8 = 0; + __pyx_t_3 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0; + for (;;) { + if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 151, __pyx_L1_error) + #else + __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 151, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_dim = __pyx_t_9; + __pyx_v_idx = __pyx_t_8; + __pyx_t_8 = (__pyx_t_8 + 1); + + /* "View.MemoryView":152 + * + * for idx, dim in enumerate(shape): + * if dim <= 0: # <<<<<<<<<<<<<< + * raise ValueError("Invalid shape in axis %d: %d." % (idx, dim)) + * self._shape[idx] = dim + */ + __pyx_t_4 = ((__pyx_v_dim <= 0) != 0); + if (unlikely(__pyx_t_4)) { + + /* "View.MemoryView":153 + * for idx, dim in enumerate(shape): + * if dim <= 0: + * raise ValueError("Invalid shape in axis %d: %d." % (idx, dim)) # <<<<<<<<<<<<<< + * self._shape[idx] = dim + * + */ + __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6); + __pyx_t_5 = 0; + __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_Raise(__pyx_t_10, 0, 0, 0); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __PYX_ERR(1, 153, __pyx_L1_error) + + /* "View.MemoryView":152 + * + * for idx, dim in enumerate(shape): + * if dim <= 0: # <<<<<<<<<<<<<< + * raise ValueError("Invalid shape in axis %d: %d." % (idx, dim)) + * self._shape[idx] = dim + */ + } + + /* "View.MemoryView":154 + * if dim <= 0: + * raise ValueError("Invalid shape in axis %d: %d." % (idx, dim)) + * self._shape[idx] = dim # <<<<<<<<<<<<<< + * + * cdef char order + */ + (__pyx_v_self->_shape[__pyx_v_idx]) = __pyx_v_dim; + + /* "View.MemoryView":151 + * + * + * for idx, dim in enumerate(shape): # <<<<<<<<<<<<<< + * if dim <= 0: + * raise ValueError("Invalid shape in axis %d: %d." % (idx, dim)) + */ + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "View.MemoryView":157 + * + * cdef char order + * if mode == 'fortran': # <<<<<<<<<<<<<< + * order = b'F' + * self.mode = u'fortran' + */ + __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_fortran, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 157, __pyx_L1_error) + if (__pyx_t_4) { + + /* "View.MemoryView":158 + * cdef char order + * if mode == 'fortran': + * order = b'F' # <<<<<<<<<<<<<< + * self.mode = u'fortran' + * elif mode == 'c': + */ + __pyx_v_order = 'F'; + + /* "View.MemoryView":159 + * if mode == 'fortran': + * order = b'F' + * self.mode = u'fortran' # <<<<<<<<<<<<<< + * elif mode == 'c': + * order = b'C' + */ + __Pyx_INCREF(__pyx_n_u_fortran); + __Pyx_GIVEREF(__pyx_n_u_fortran); + __Pyx_GOTREF(__pyx_v_self->mode); + __Pyx_DECREF(__pyx_v_self->mode); + __pyx_v_self->mode = __pyx_n_u_fortran; + + /* "View.MemoryView":157 + * + * cdef char order + * if mode == 'fortran': # <<<<<<<<<<<<<< + * order = b'F' + * self.mode = u'fortran' + */ + goto __pyx_L10; + } + + /* "View.MemoryView":160 + * order = b'F' + * self.mode = u'fortran' + * elif mode == 'c': # <<<<<<<<<<<<<< + * order = b'C' + * self.mode = u'c' + */ + __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_c, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 160, __pyx_L1_error) + if (likely(__pyx_t_4)) { + + /* "View.MemoryView":161 + * self.mode = u'fortran' + * elif mode == 'c': + * order = b'C' # <<<<<<<<<<<<<< + * self.mode = u'c' + * else: + */ + __pyx_v_order = 'C'; + + /* "View.MemoryView":162 + * elif mode == 'c': + * order = b'C' + * self.mode = u'c' # <<<<<<<<<<<<<< + * else: + * raise ValueError("Invalid mode, expected 'c' or 'fortran', got %s" % mode) + */ + __Pyx_INCREF(__pyx_n_u_c); + __Pyx_GIVEREF(__pyx_n_u_c); + __Pyx_GOTREF(__pyx_v_self->mode); + __Pyx_DECREF(__pyx_v_self->mode); + __pyx_v_self->mode = __pyx_n_u_c; + + /* "View.MemoryView":160 + * order = b'F' + * self.mode = u'fortran' + * elif mode == 'c': # <<<<<<<<<<<<<< + * order = b'C' + * self.mode = u'c' + */ + goto __pyx_L10; + } + + /* "View.MemoryView":164 + * self.mode = u'c' + * else: + * raise ValueError("Invalid mode, expected 'c' or 'fortran', got %s" % mode) # <<<<<<<<<<<<<< + * + * self.len = fill_contig_strides_array(self._shape, self._strides, + */ + /*else*/ { + __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 164, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 164, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_t_10, 0, 0, 0); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __PYX_ERR(1, 164, __pyx_L1_error) + } + __pyx_L10:; + + /* "View.MemoryView":166 + * raise ValueError("Invalid mode, expected 'c' or 'fortran', got %s" % mode) + * + * self.len = fill_contig_strides_array(self._shape, self._strides, # <<<<<<<<<<<<<< + * itemsize, self.ndim, order) + * + */ + __pyx_v_self->len = __pyx_fill_contig_strides_array(__pyx_v_self->_shape, __pyx_v_self->_strides, __pyx_v_itemsize, __pyx_v_self->ndim, __pyx_v_order); + + /* "View.MemoryView":169 + * itemsize, self.ndim, order) + * + * self.free_data = allocate_buffer # <<<<<<<<<<<<<< + * self.dtype_is_object = format == b'O' + * if allocate_buffer: + */ + __pyx_v_self->free_data = __pyx_v_allocate_buffer; + + /* "View.MemoryView":170 + * + * self.free_data = allocate_buffer + * self.dtype_is_object = format == b'O' # <<<<<<<<<<<<<< + * if allocate_buffer: + * + */ + __pyx_t_10 = PyObject_RichCompare(__pyx_v_format, __pyx_n_b_O, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 170, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 170, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_v_self->dtype_is_object = __pyx_t_4; + + /* "View.MemoryView":171 + * self.free_data = allocate_buffer + * self.dtype_is_object = format == b'O' + * if allocate_buffer: # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_4 = (__pyx_v_allocate_buffer != 0); + if (__pyx_t_4) { + + /* "View.MemoryView":174 + * + * + * self.data = malloc(self.len) # <<<<<<<<<<<<<< + * if not self.data: + * raise MemoryError("unable to allocate array data.") + */ + __pyx_v_self->data = ((char *)malloc(__pyx_v_self->len)); + + /* "View.MemoryView":175 + * + * self.data = malloc(self.len) + * if not self.data: # <<<<<<<<<<<<<< + * raise MemoryError("unable to allocate array data.") + * + */ + __pyx_t_4 = ((!(__pyx_v_self->data != 0)) != 0); + if (unlikely(__pyx_t_4)) { + + /* "View.MemoryView":176 + * self.data = malloc(self.len) + * if not self.data: + * raise MemoryError("unable to allocate array data.") # <<<<<<<<<<<<<< + * + * if self.dtype_is_object: + */ + __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_Raise(__pyx_t_10, 0, 0, 0); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __PYX_ERR(1, 176, __pyx_L1_error) + + /* "View.MemoryView":175 + * + * self.data = malloc(self.len) + * if not self.data: # <<<<<<<<<<<<<< + * raise MemoryError("unable to allocate array data.") + * + */ + } + + /* "View.MemoryView":178 + * raise MemoryError("unable to allocate array data.") + * + * if self.dtype_is_object: # <<<<<<<<<<<<<< + * p = self.data + * for i in range(self.len / itemsize): + */ + __pyx_t_4 = (__pyx_v_self->dtype_is_object != 0); + if (__pyx_t_4) { + + /* "View.MemoryView":179 + * + * if self.dtype_is_object: + * p = self.data # <<<<<<<<<<<<<< + * for i in range(self.len / itemsize): + * p[i] = Py_None + */ + __pyx_v_p = ((PyObject **)__pyx_v_self->data); + + /* "View.MemoryView":180 + * if self.dtype_is_object: + * p = self.data + * for i in range(self.len / itemsize): # <<<<<<<<<<<<<< + * p[i] = Py_None + * Py_INCREF(Py_None) + */ + if (unlikely(__pyx_v_itemsize == 0)) { + PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); + __PYX_ERR(1, 180, __pyx_L1_error) + } + else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_v_itemsize == (Py_ssize_t)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_self->len))) { + PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); + __PYX_ERR(1, 180, __pyx_L1_error) + } + __pyx_t_1 = (__pyx_v_self->len / __pyx_v_itemsize); + __pyx_t_9 = __pyx_t_1; + for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_9; __pyx_t_11+=1) { + __pyx_v_i = __pyx_t_11; + + /* "View.MemoryView":181 + * p = self.data + * for i in range(self.len / itemsize): + * p[i] = Py_None # <<<<<<<<<<<<<< + * Py_INCREF(Py_None) + * + */ + (__pyx_v_p[__pyx_v_i]) = Py_None; + + /* "View.MemoryView":182 + * for i in range(self.len / itemsize): + * p[i] = Py_None + * Py_INCREF(Py_None) # <<<<<<<<<<<<<< + * + * @cname('getbuffer') + */ + Py_INCREF(Py_None); + } + + /* "View.MemoryView":178 + * raise MemoryError("unable to allocate array data.") + * + * if self.dtype_is_object: # <<<<<<<<<<<<<< + * p = self.data + * for i in range(self.len / itemsize): + */ + } + + /* "View.MemoryView":171 + * self.free_data = allocate_buffer + * self.dtype_is_object = format == b'O' + * if allocate_buffer: # <<<<<<<<<<<<<< + * + * + */ + } + + /* "View.MemoryView":122 + * cdef bint dtype_is_object + * + * def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None, # <<<<<<<<<<<<<< + * mode="c", bint allocate_buffer=True): + * + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_format); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":185 + * + * @cname('getbuffer') + * def __getbuffer__(self, Py_buffer *info, int flags): # <<<<<<<<<<<<<< + * cdef int bufmode = -1 + * if self.mode == u"c": + */ + +/* Python wrapper */ +static CYTHON_UNUSED int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ +static CYTHON_UNUSED int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0); + __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(((struct __pyx_array_obj *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(struct __pyx_array_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { + int __pyx_v_bufmode; + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + char *__pyx_t_4; + Py_ssize_t __pyx_t_5; + int __pyx_t_6; + Py_ssize_t *__pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + if (__pyx_v_info == NULL) { + PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete"); + return -1; + } + __Pyx_RefNannySetupContext("__getbuffer__", 0); + __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(__pyx_v_info->obj); + + /* "View.MemoryView":186 + * @cname('getbuffer') + * def __getbuffer__(self, Py_buffer *info, int flags): + * cdef int bufmode = -1 # <<<<<<<<<<<<<< + * if self.mode == u"c": + * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS + */ + __pyx_v_bufmode = -1; + + /* "View.MemoryView":187 + * def __getbuffer__(self, Py_buffer *info, int flags): + * cdef int bufmode = -1 + * if self.mode == u"c": # <<<<<<<<<<<<<< + * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS + * elif self.mode == u"fortran": + */ + __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_c, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 187, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":188 + * cdef int bufmode = -1 + * if self.mode == u"c": + * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS # <<<<<<<<<<<<<< + * elif self.mode == u"fortran": + * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS + */ + __pyx_v_bufmode = (PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS); + + /* "View.MemoryView":187 + * def __getbuffer__(self, Py_buffer *info, int flags): + * cdef int bufmode = -1 + * if self.mode == u"c": # <<<<<<<<<<<<<< + * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS + * elif self.mode == u"fortran": + */ + goto __pyx_L3; + } + + /* "View.MemoryView":189 + * if self.mode == u"c": + * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS + * elif self.mode == u"fortran": # <<<<<<<<<<<<<< + * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS + * if not (flags & bufmode): + */ + __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_fortran, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 189, __pyx_L1_error) + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":190 + * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS + * elif self.mode == u"fortran": + * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS # <<<<<<<<<<<<<< + * if not (flags & bufmode): + * raise ValueError("Can only create a buffer that is contiguous in memory.") + */ + __pyx_v_bufmode = (PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS); + + /* "View.MemoryView":189 + * if self.mode == u"c": + * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS + * elif self.mode == u"fortran": # <<<<<<<<<<<<<< + * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS + * if not (flags & bufmode): + */ + } + __pyx_L3:; + + /* "View.MemoryView":191 + * elif self.mode == u"fortran": + * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS + * if not (flags & bufmode): # <<<<<<<<<<<<<< + * raise ValueError("Can only create a buffer that is contiguous in memory.") + * info.buf = self.data + */ + __pyx_t_1 = ((!((__pyx_v_flags & __pyx_v_bufmode) != 0)) != 0); + if (unlikely(__pyx_t_1)) { + + /* "View.MemoryView":192 + * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS + * if not (flags & bufmode): + * raise ValueError("Can only create a buffer that is contiguous in memory.") # <<<<<<<<<<<<<< + * info.buf = self.data + * info.len = self.len + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 192, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 192, __pyx_L1_error) + + /* "View.MemoryView":191 + * elif self.mode == u"fortran": + * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS + * if not (flags & bufmode): # <<<<<<<<<<<<<< + * raise ValueError("Can only create a buffer that is contiguous in memory.") + * info.buf = self.data + */ + } + + /* "View.MemoryView":193 + * if not (flags & bufmode): + * raise ValueError("Can only create a buffer that is contiguous in memory.") + * info.buf = self.data # <<<<<<<<<<<<<< + * info.len = self.len + * info.ndim = self.ndim + */ + __pyx_t_4 = __pyx_v_self->data; + __pyx_v_info->buf = __pyx_t_4; + + /* "View.MemoryView":194 + * raise ValueError("Can only create a buffer that is contiguous in memory.") + * info.buf = self.data + * info.len = self.len # <<<<<<<<<<<<<< + * info.ndim = self.ndim + * info.shape = self._shape + */ + __pyx_t_5 = __pyx_v_self->len; + __pyx_v_info->len = __pyx_t_5; + + /* "View.MemoryView":195 + * info.buf = self.data + * info.len = self.len + * info.ndim = self.ndim # <<<<<<<<<<<<<< + * info.shape = self._shape + * info.strides = self._strides + */ + __pyx_t_6 = __pyx_v_self->ndim; + __pyx_v_info->ndim = __pyx_t_6; + + /* "View.MemoryView":196 + * info.len = self.len + * info.ndim = self.ndim + * info.shape = self._shape # <<<<<<<<<<<<<< + * info.strides = self._strides + * info.suboffsets = NULL + */ + __pyx_t_7 = __pyx_v_self->_shape; + __pyx_v_info->shape = __pyx_t_7; + + /* "View.MemoryView":197 + * info.ndim = self.ndim + * info.shape = self._shape + * info.strides = self._strides # <<<<<<<<<<<<<< + * info.suboffsets = NULL + * info.itemsize = self.itemsize + */ + __pyx_t_7 = __pyx_v_self->_strides; + __pyx_v_info->strides = __pyx_t_7; + + /* "View.MemoryView":198 + * info.shape = self._shape + * info.strides = self._strides + * info.suboffsets = NULL # <<<<<<<<<<<<<< + * info.itemsize = self.itemsize + * info.readonly = 0 + */ + __pyx_v_info->suboffsets = NULL; + + /* "View.MemoryView":199 + * info.strides = self._strides + * info.suboffsets = NULL + * info.itemsize = self.itemsize # <<<<<<<<<<<<<< + * info.readonly = 0 + * + */ + __pyx_t_5 = __pyx_v_self->itemsize; + __pyx_v_info->itemsize = __pyx_t_5; + + /* "View.MemoryView":200 + * info.suboffsets = NULL + * info.itemsize = self.itemsize + * info.readonly = 0 # <<<<<<<<<<<<<< + * + * if flags & PyBUF_FORMAT: + */ + __pyx_v_info->readonly = 0; + + /* "View.MemoryView":202 + * info.readonly = 0 + * + * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< + * info.format = self.format + * else: + */ + __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":203 + * + * if flags & PyBUF_FORMAT: + * info.format = self.format # <<<<<<<<<<<<<< + * else: + * info.format = NULL + */ + __pyx_t_4 = __pyx_v_self->format; + __pyx_v_info->format = __pyx_t_4; + + /* "View.MemoryView":202 + * info.readonly = 0 + * + * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< + * info.format = self.format + * else: + */ + goto __pyx_L5; + } + + /* "View.MemoryView":205 + * info.format = self.format + * else: + * info.format = NULL # <<<<<<<<<<<<<< + * + * info.obj = self + */ + /*else*/ { + __pyx_v_info->format = NULL; + } + __pyx_L5:; + + /* "View.MemoryView":207 + * info.format = NULL + * + * info.obj = self # <<<<<<<<<<<<<< + * + * __pyx_getbuffer = capsule( &__pyx_array_getbuffer, "getbuffer(obj, view, flags)") + */ + __Pyx_INCREF(((PyObject *)__pyx_v_self)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); + __Pyx_GOTREF(__pyx_v_info->obj); + __Pyx_DECREF(__pyx_v_info->obj); + __pyx_v_info->obj = ((PyObject *)__pyx_v_self); + + /* "View.MemoryView":185 + * + * @cname('getbuffer') + * def __getbuffer__(self, Py_buffer *info, int flags): # <<<<<<<<<<<<<< + * cdef int bufmode = -1 + * if self.mode == u"c": + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("View.MemoryView.array.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + if (__pyx_v_info->obj != NULL) { + __Pyx_GOTREF(__pyx_v_info->obj); + __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; + } + goto __pyx_L2; + __pyx_L0:; + if (__pyx_v_info->obj == Py_None) { + __Pyx_GOTREF(__pyx_v_info->obj); + __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; + } + __pyx_L2:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":211 + * __pyx_getbuffer = capsule( &__pyx_array_getbuffer, "getbuffer(obj, view, flags)") + * + * def __dealloc__(array self): # <<<<<<<<<<<<<< + * if self.callback_free_data != NULL: + * self.callback_free_data(self.data) + */ + +/* Python wrapper */ +static void __pyx_array___dealloc__(PyObject *__pyx_v_self); /*proto*/ +static void __pyx_array___dealloc__(PyObject *__pyx_v_self) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); + __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(((struct __pyx_array_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struct __pyx_array_obj *__pyx_v_self) { + __Pyx_RefNannyDeclarations + int __pyx_t_1; + __Pyx_RefNannySetupContext("__dealloc__", 0); + + /* "View.MemoryView":212 + * + * def __dealloc__(array self): + * if self.callback_free_data != NULL: # <<<<<<<<<<<<<< + * self.callback_free_data(self.data) + * elif self.free_data: + */ + __pyx_t_1 = ((__pyx_v_self->callback_free_data != NULL) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":213 + * def __dealloc__(array self): + * if self.callback_free_data != NULL: + * self.callback_free_data(self.data) # <<<<<<<<<<<<<< + * elif self.free_data: + * if self.dtype_is_object: + */ + __pyx_v_self->callback_free_data(__pyx_v_self->data); + + /* "View.MemoryView":212 + * + * def __dealloc__(array self): + * if self.callback_free_data != NULL: # <<<<<<<<<<<<<< + * self.callback_free_data(self.data) + * elif self.free_data: + */ + goto __pyx_L3; + } + + /* "View.MemoryView":214 + * if self.callback_free_data != NULL: + * self.callback_free_data(self.data) + * elif self.free_data: # <<<<<<<<<<<<<< + * if self.dtype_is_object: + * refcount_objects_in_slice(self.data, self._shape, + */ + __pyx_t_1 = (__pyx_v_self->free_data != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":215 + * self.callback_free_data(self.data) + * elif self.free_data: + * if self.dtype_is_object: # <<<<<<<<<<<<<< + * refcount_objects_in_slice(self.data, self._shape, + * self._strides, self.ndim, False) + */ + __pyx_t_1 = (__pyx_v_self->dtype_is_object != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":216 + * elif self.free_data: + * if self.dtype_is_object: + * refcount_objects_in_slice(self.data, self._shape, # <<<<<<<<<<<<<< + * self._strides, self.ndim, False) + * free(self.data) + */ + __pyx_memoryview_refcount_objects_in_slice(__pyx_v_self->data, __pyx_v_self->_shape, __pyx_v_self->_strides, __pyx_v_self->ndim, 0); + + /* "View.MemoryView":215 + * self.callback_free_data(self.data) + * elif self.free_data: + * if self.dtype_is_object: # <<<<<<<<<<<<<< + * refcount_objects_in_slice(self.data, self._shape, + * self._strides, self.ndim, False) + */ + } + + /* "View.MemoryView":218 + * refcount_objects_in_slice(self.data, self._shape, + * self._strides, self.ndim, False) + * free(self.data) # <<<<<<<<<<<<<< + * PyObject_Free(self._shape) + * + */ + free(__pyx_v_self->data); + + /* "View.MemoryView":214 + * if self.callback_free_data != NULL: + * self.callback_free_data(self.data) + * elif self.free_data: # <<<<<<<<<<<<<< + * if self.dtype_is_object: + * refcount_objects_in_slice(self.data, self._shape, + */ + } + __pyx_L3:; + + /* "View.MemoryView":219 + * self._strides, self.ndim, False) + * free(self.data) + * PyObject_Free(self._shape) # <<<<<<<<<<<<<< + * + * @property + */ + PyObject_Free(__pyx_v_self->_shape); + + /* "View.MemoryView":211 + * __pyx_getbuffer = capsule( &__pyx_array_getbuffer, "getbuffer(obj, view, flags)") + * + * def __dealloc__(array self): # <<<<<<<<<<<<<< + * if self.callback_free_data != NULL: + * self.callback_free_data(self.data) + */ + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +/* "View.MemoryView":222 + * + * @property + * def memview(self): # <<<<<<<<<<<<<< + * return self.get_memview() + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_15View_dot_MemoryView_5array_7memview_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_15View_dot_MemoryView_5array_7memview_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_15View_dot_MemoryView_5array_7memview___get__(((struct __pyx_array_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_15View_dot_MemoryView_5array_7memview___get__(struct __pyx_array_obj *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "View.MemoryView":223 + * @property + * def memview(self): + * return self.get_memview() # <<<<<<<<<<<<<< + * + * @cname('get_memview') + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = ((struct __pyx_vtabstruct_array *)__pyx_v_self->__pyx_vtab)->get_memview(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 223, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "View.MemoryView":222 + * + * @property + * def memview(self): # <<<<<<<<<<<<<< + * return self.get_memview() + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("View.MemoryView.array.memview.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":226 + * + * @cname('get_memview') + * cdef get_memview(self): # <<<<<<<<<<<<<< + * flags = PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE + * return memoryview(self, flags, self.dtype_is_object) + */ + +static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self) { + int __pyx_v_flags; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_memview", 0); + + /* "View.MemoryView":227 + * @cname('get_memview') + * cdef get_memview(self): + * flags = PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE # <<<<<<<<<<<<<< + * return memoryview(self, flags, self.dtype_is_object) + * + */ + __pyx_v_flags = ((PyBUF_ANY_CONTIGUOUS | PyBUF_FORMAT) | PyBUF_WRITABLE); + + /* "View.MemoryView":228 + * cdef get_memview(self): + * flags = PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE + * return memoryview(self, flags, self.dtype_is_object) # <<<<<<<<<<<<<< + * + * def __len__(self): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 228, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 228, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 228, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(((PyObject *)__pyx_v_self)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); + PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self)); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 228, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "View.MemoryView":226 + * + * @cname('get_memview') + * cdef get_memview(self): # <<<<<<<<<<<<<< + * flags = PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE + * return memoryview(self, flags, self.dtype_is_object) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("View.MemoryView.array.get_memview", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":230 + * return memoryview(self, flags, self.dtype_is_object) + * + * def __len__(self): # <<<<<<<<<<<<<< + * return self._shape[0] + * + */ + +/* Python wrapper */ +static Py_ssize_t __pyx_array___len__(PyObject *__pyx_v_self); /*proto*/ +static Py_ssize_t __pyx_array___len__(PyObject *__pyx_v_self) { + Py_ssize_t __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); + __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__len__(((struct __pyx_array_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static Py_ssize_t __pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__len__(struct __pyx_array_obj *__pyx_v_self) { + Py_ssize_t __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__len__", 0); + + /* "View.MemoryView":231 + * + * def __len__(self): + * return self._shape[0] # <<<<<<<<<<<<<< + * + * def __getattr__(self, attr): + */ + __pyx_r = (__pyx_v_self->_shape[0]); + goto __pyx_L0; + + /* "View.MemoryView":230 + * return memoryview(self, flags, self.dtype_is_object) + * + * def __len__(self): # <<<<<<<<<<<<<< + * return self._shape[0] + * + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":233 + * return self._shape[0] + * + * def __getattr__(self, attr): # <<<<<<<<<<<<<< + * return getattr(self.memview, attr) + * + */ + +/* Python wrapper */ +static PyObject *__pyx_array___getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_attr); /*proto*/ +static PyObject *__pyx_array___getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_attr) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0); + __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_attr)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_attr) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__getattr__", 0); + + /* "View.MemoryView":234 + * + * def __getattr__(self, attr): + * return getattr(self.memview, attr) # <<<<<<<<<<<<<< + * + * def __getitem__(self, item): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_GetAttr(__pyx_t_1, __pyx_v_attr); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "View.MemoryView":233 + * return self._shape[0] + * + * def __getattr__(self, attr): # <<<<<<<<<<<<<< + * return getattr(self.memview, attr) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("View.MemoryView.array.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":236 + * return getattr(self.memview, attr) + * + * def __getitem__(self, item): # <<<<<<<<<<<<<< + * return self.memview[item] + * + */ + +/* Python wrapper */ +static PyObject *__pyx_array___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/ +static PyObject *__pyx_array___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0); + __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_item)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__getitem__", 0); + + /* "View.MemoryView":237 + * + * def __getitem__(self, item): + * return self.memview[item] # <<<<<<<<<<<<<< + * + * def __setitem__(self, item, value): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 237, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_item); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 237, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "View.MemoryView":236 + * return getattr(self.memview, attr) + * + * def __getitem__(self, item): # <<<<<<<<<<<<<< + * return self.memview[item] + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("View.MemoryView.array.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":239 + * return self.memview[item] + * + * def __setitem__(self, item, value): # <<<<<<<<<<<<<< + * self.memview[item] = value + * + */ + +/* Python wrapper */ +static int __pyx_array___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_array___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0); + __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_item), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setitem__", 0); + + /* "View.MemoryView":240 + * + * def __setitem__(self, item, value): + * self.memview[item] = value # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_item, __pyx_v_value) < 0)) __PYX_ERR(1, 240, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "View.MemoryView":239 + * return self.memview[item] + * + * def __setitem__(self, item, value): # <<<<<<<<<<<<<< + * self.memview[item] = value + * + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("View.MemoryView.array.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw___pyx_array_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw___pyx_array_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf___pyx_array___reduce_cython__(((struct __pyx_array_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("View.MemoryView.array.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + +/* Python wrapper */ +static PyObject *__pyx_pw___pyx_array_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +static PyObject *__pyx_pw___pyx_array_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf___pyx_array_2__setstate_cython__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("View.MemoryView.array.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":244 + * + * @cname("__pyx_array_new") + * cdef array array_cwrapper(tuple shape, Py_ssize_t itemsize, char *format, # <<<<<<<<<<<<<< + * char *mode, char *buf): + * cdef array result + */ + +static struct __pyx_array_obj *__pyx_array_new(PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, char *__pyx_v_format, char *__pyx_v_mode, char *__pyx_v_buf) { + struct __pyx_array_obj *__pyx_v_result = 0; + struct __pyx_array_obj *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("array_cwrapper", 0); + + /* "View.MemoryView":248 + * cdef array result + * + * if buf == NULL: # <<<<<<<<<<<<<< + * result = array(shape, itemsize, format, mode.decode('ASCII')) + * else: + */ + __pyx_t_1 = ((__pyx_v_buf == NULL) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":249 + * + * if buf == NULL: + * result = array(shape, itemsize, format, mode.decode('ASCII')) # <<<<<<<<<<<<<< + * else: + * result = array(shape, itemsize, format, mode.decode('ASCII'), + */ + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 249, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 249, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_decode_c_string(__pyx_v_mode, 0, strlen(__pyx_v_mode), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 249, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 249, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_INCREF(__pyx_v_shape); + __Pyx_GIVEREF(__pyx_v_shape); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_shape); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_4); + __pyx_t_2 = 0; + __pyx_t_3 = 0; + __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_array_type), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 249, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_result = ((struct __pyx_array_obj *)__pyx_t_4); + __pyx_t_4 = 0; + + /* "View.MemoryView":248 + * cdef array result + * + * if buf == NULL: # <<<<<<<<<<<<<< + * result = array(shape, itemsize, format, mode.decode('ASCII')) + * else: + */ + goto __pyx_L3; + } + + /* "View.MemoryView":251 + * result = array(shape, itemsize, format, mode.decode('ASCII')) + * else: + * result = array(shape, itemsize, format, mode.decode('ASCII'), # <<<<<<<<<<<<<< + * allocate_buffer=False) + * result.data = buf + */ + /*else*/ { + __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 251, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 251, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_mode, 0, strlen(__pyx_v_mode), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 251, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 251, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_v_shape); + __Pyx_GIVEREF(__pyx_v_shape); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_shape); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_3); + __pyx_t_4 = 0; + __pyx_t_5 = 0; + __pyx_t_3 = 0; + + /* "View.MemoryView":252 + * else: + * result = array(shape, itemsize, format, mode.decode('ASCII'), + * allocate_buffer=False) # <<<<<<<<<<<<<< + * result.data = buf + * + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 252, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_allocate_buffer, Py_False) < 0) __PYX_ERR(1, 252, __pyx_L1_error) + + /* "View.MemoryView":251 + * result = array(shape, itemsize, format, mode.decode('ASCII')) + * else: + * result = array(shape, itemsize, format, mode.decode('ASCII'), # <<<<<<<<<<<<<< + * allocate_buffer=False) + * result.data = buf + */ + __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_array_type), __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 251, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_result = ((struct __pyx_array_obj *)__pyx_t_5); + __pyx_t_5 = 0; + + /* "View.MemoryView":253 + * result = array(shape, itemsize, format, mode.decode('ASCII'), + * allocate_buffer=False) + * result.data = buf # <<<<<<<<<<<<<< + * + * return result + */ + __pyx_v_result->data = __pyx_v_buf; + } + __pyx_L3:; + + /* "View.MemoryView":255 + * result.data = buf + * + * return result # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(((PyObject *)__pyx_r)); + __Pyx_INCREF(((PyObject *)__pyx_v_result)); + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "View.MemoryView":244 + * + * @cname("__pyx_array_new") + * cdef array array_cwrapper(tuple shape, Py_ssize_t itemsize, char *format, # <<<<<<<<<<<<<< + * char *mode, char *buf): + * cdef array result + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("View.MemoryView.array_cwrapper", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_result); + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":281 + * cdef class Enum(object): + * cdef object name + * def __init__(self, name): # <<<<<<<<<<<<<< + * self.name = name + * def __repr__(self): + */ + +/* Python wrapper */ +static int __pyx_MemviewEnum___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_MemviewEnum___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_name = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,0}; + PyObject* values[1] = {0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 281, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + } + __pyx_v_name = values[0]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 281, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("View.MemoryView.Enum.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self), __pyx_v_name); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v_name) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__", 0); + + /* "View.MemoryView":282 + * cdef object name + * def __init__(self, name): + * self.name = name # <<<<<<<<<<<<<< + * def __repr__(self): + * return self.name + */ + __Pyx_INCREF(__pyx_v_name); + __Pyx_GIVEREF(__pyx_v_name); + __Pyx_GOTREF(__pyx_v_self->name); + __Pyx_DECREF(__pyx_v_self->name); + __pyx_v_self->name = __pyx_v_name; + + /* "View.MemoryView":281 + * cdef class Enum(object): + * cdef object name + * def __init__(self, name): # <<<<<<<<<<<<<< + * self.name = name + * def __repr__(self): + */ + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":283 + * def __init__(self, name): + * self.name = name + * def __repr__(self): # <<<<<<<<<<<<<< + * return self.name + * + */ + +/* Python wrapper */ +static PyObject *__pyx_MemviewEnum___repr__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_MemviewEnum___repr__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); + __pyx_r = __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(struct __pyx_MemviewEnum_obj *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__repr__", 0); + + /* "View.MemoryView":284 + * self.name = name + * def __repr__(self): + * return self.name # <<<<<<<<<<<<<< + * + * cdef generic = Enum("") + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->name); + __pyx_r = __pyx_v_self->name; + goto __pyx_L0; + + /* "View.MemoryView":283 + * def __init__(self, name): + * self.name = name + * def __repr__(self): # <<<<<<<<<<<<<< + * return self.name + * + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + +/* Python wrapper */ +static PyObject *__pyx_pw___pyx_MemviewEnum_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw___pyx_MemviewEnum_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf___pyx_MemviewEnum___reduce_cython__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self) { + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v__dict = 0; + int __pyx_v_use_setstate; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":5 + * cdef object _dict + * cdef bint use_setstate + * state = (self.name,) # <<<<<<<<<<<<<< + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + */ + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v_self->name); + __Pyx_GIVEREF(__pyx_v_self->name); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->name); + __pyx_v_state = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "(tree fragment)":6 + * cdef bint use_setstate + * state = (self.name,) + * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< + * if _dict is not None: + * state += (_dict,) + */ + __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v__dict = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":7 + * state = (self.name,) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + __pyx_t_2 = (__pyx_v__dict != Py_None); + __pyx_t_3 = (__pyx_t_2 != 0); + if (__pyx_t_3) { + + /* "(tree fragment)":8 + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + * state += (_dict,) # <<<<<<<<<<<<<< + * use_setstate = True + * else: + */ + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v__dict); + __Pyx_GIVEREF(__pyx_v__dict); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict); + __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4)); + __pyx_t_4 = 0; + + /* "(tree fragment)":9 + * if _dict is not None: + * state += (_dict,) + * use_setstate = True # <<<<<<<<<<<<<< + * else: + * use_setstate = self.name is not None + */ + __pyx_v_use_setstate = 1; + + /* "(tree fragment)":7 + * state = (self.name,) + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True + */ + goto __pyx_L3; + } + + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = self.name is not None # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state + */ + /*else*/ { + __pyx_t_3 = (__pyx_v_self->name != Py_None); + __pyx_v_use_setstate = __pyx_t_3; + } + __pyx_L3:; + + /* "(tree fragment)":12 + * else: + * use_setstate = self.name is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state + * else: + */ + __pyx_t_3 = (__pyx_v_use_setstate != 0); + if (__pyx_t_3) { + + /* "(tree fragment)":13 + * use_setstate = self.name is not None + * if use_setstate: + * return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state # <<<<<<<<<<<<<< + * else: + * return __pyx_unpickle_Enum, (type(self), 0xb068931, state) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_INCREF(__pyx_int_184977713); + __Pyx_GIVEREF(__pyx_int_184977713); + PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_184977713); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None); + __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state); + __pyx_t_4 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "(tree fragment)":12 + * else: + * use_setstate = self.name is not None + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state + * else: + */ + } + + /* "(tree fragment)":15 + * return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state + * else: + * return __pyx_unpickle_Enum, (type(self), 0xb068931, state) # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_Enum__set_state(self, __pyx_state) + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_INCREF(__pyx_int_184977713); + __Pyx_GIVEREF(__pyx_int_184977713); + PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_184977713); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); + __pyx_t_5 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + } + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("View.MemoryView.Enum.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_state); + __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":16 + * else: + * return __pyx_unpickle_Enum, (type(self), 0xb068931, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_Enum__set_state(self, __pyx_state) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw___pyx_MemviewEnum_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +static PyObject *__pyx_pw___pyx_MemviewEnum_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf___pyx_MemviewEnum_2__setstate_cython__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":17 + * return __pyx_unpickle_Enum, (type(self), 0xb068931, state) + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_Enum__set_state(self, __pyx_state) # <<<<<<<<<<<<<< + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error) + __pyx_t_1 = __pyx_unpickle_Enum__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_Enum, (type(self), 0xb068931, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_Enum__set_state(self, __pyx_state) + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("View.MemoryView.Enum.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":298 + * + * @cname('__pyx_align_pointer') + * cdef void *align_pointer(void *memory, size_t alignment) nogil: # <<<<<<<<<<<<<< + * "Align pointer memory on a given boundary" + * cdef Py_intptr_t aligned_p = memory + */ + +static void *__pyx_align_pointer(void *__pyx_v_memory, size_t __pyx_v_alignment) { + Py_intptr_t __pyx_v_aligned_p; + size_t __pyx_v_offset; + void *__pyx_r; + int __pyx_t_1; + + /* "View.MemoryView":300 + * cdef void *align_pointer(void *memory, size_t alignment) nogil: + * "Align pointer memory on a given boundary" + * cdef Py_intptr_t aligned_p = memory # <<<<<<<<<<<<<< + * cdef size_t offset + * + */ + __pyx_v_aligned_p = ((Py_intptr_t)__pyx_v_memory); + + /* "View.MemoryView":304 + * + * with cython.cdivision(True): + * offset = aligned_p % alignment # <<<<<<<<<<<<<< + * + * if offset > 0: + */ + __pyx_v_offset = (__pyx_v_aligned_p % __pyx_v_alignment); + + /* "View.MemoryView":306 + * offset = aligned_p % alignment + * + * if offset > 0: # <<<<<<<<<<<<<< + * aligned_p += alignment - offset + * + */ + __pyx_t_1 = ((__pyx_v_offset > 0) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":307 + * + * if offset > 0: + * aligned_p += alignment - offset # <<<<<<<<<<<<<< + * + * return aligned_p + */ + __pyx_v_aligned_p = (__pyx_v_aligned_p + (__pyx_v_alignment - __pyx_v_offset)); + + /* "View.MemoryView":306 + * offset = aligned_p % alignment + * + * if offset > 0: # <<<<<<<<<<<<<< + * aligned_p += alignment - offset + * + */ + } + + /* "View.MemoryView":309 + * aligned_p += alignment - offset + * + * return aligned_p # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = ((void *)__pyx_v_aligned_p); + goto __pyx_L0; + + /* "View.MemoryView":298 + * + * @cname('__pyx_align_pointer') + * cdef void *align_pointer(void *memory, size_t alignment) nogil: # <<<<<<<<<<<<<< + * "Align pointer memory on a given boundary" + * cdef Py_intptr_t aligned_p = memory + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "View.MemoryView":345 + * cdef __Pyx_TypeInfo *typeinfo + * + * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): # <<<<<<<<<<<<<< + * self.obj = obj + * self.flags = flags + */ + +/* Python wrapper */ +static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_obj = 0; + int __pyx_v_flags; + int __pyx_v_dtype_is_object; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_flags,&__pyx_n_s_dtype_is_object,0}; + PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obj)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, 1); __PYX_ERR(1, 345, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (kw_args > 0) { + PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dtype_is_object); + if (value) { values[2] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(1, 345, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_obj = values[0]; + __pyx_v_flags = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 345, __pyx_L3_error) + if (values[2]) { + __pyx_v_dtype_is_object = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_dtype_is_object == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 345, __pyx_L3_error) + } else { + __pyx_v_dtype_is_object = ((int)0); + } + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 345, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("View.MemoryView.memoryview.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_obj, __pyx_v_flags, __pyx_v_dtype_is_object); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_flags, int __pyx_v_dtype_is_object) { + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + int __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__cinit__", 0); + + /* "View.MemoryView":346 + * + * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): + * self.obj = obj # <<<<<<<<<<<<<< + * self.flags = flags + * if type(self) is memoryview or obj is not None: + */ + __Pyx_INCREF(__pyx_v_obj); + __Pyx_GIVEREF(__pyx_v_obj); + __Pyx_GOTREF(__pyx_v_self->obj); + __Pyx_DECREF(__pyx_v_self->obj); + __pyx_v_self->obj = __pyx_v_obj; + + /* "View.MemoryView":347 + * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): + * self.obj = obj + * self.flags = flags # <<<<<<<<<<<<<< + * if type(self) is memoryview or obj is not None: + * __Pyx_GetBuffer(obj, &self.view, flags) + */ + __pyx_v_self->flags = __pyx_v_flags; + + /* "View.MemoryView":348 + * self.obj = obj + * self.flags = flags + * if type(self) is memoryview or obj is not None: # <<<<<<<<<<<<<< + * __Pyx_GetBuffer(obj, &self.view, flags) + * if self.view.obj == NULL: + */ + __pyx_t_2 = (((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))) == ((PyObject *)__pyx_memoryview_type)); + __pyx_t_3 = (__pyx_t_2 != 0); + if (!__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_3 = (__pyx_v_obj != Py_None); + __pyx_t_2 = (__pyx_t_3 != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "View.MemoryView":349 + * self.flags = flags + * if type(self) is memoryview or obj is not None: + * __Pyx_GetBuffer(obj, &self.view, flags) # <<<<<<<<<<<<<< + * if self.view.obj == NULL: + * (<__pyx_buffer *> &self.view).obj = Py_None + */ + __pyx_t_4 = __Pyx_GetBuffer(__pyx_v_obj, (&__pyx_v_self->view), __pyx_v_flags); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 349, __pyx_L1_error) + + /* "View.MemoryView":350 + * if type(self) is memoryview or obj is not None: + * __Pyx_GetBuffer(obj, &self.view, flags) + * if self.view.obj == NULL: # <<<<<<<<<<<<<< + * (<__pyx_buffer *> &self.view).obj = Py_None + * Py_INCREF(Py_None) + */ + __pyx_t_1 = ((((PyObject *)__pyx_v_self->view.obj) == NULL) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":351 + * __Pyx_GetBuffer(obj, &self.view, flags) + * if self.view.obj == NULL: + * (<__pyx_buffer *> &self.view).obj = Py_None # <<<<<<<<<<<<<< + * Py_INCREF(Py_None) + * + */ + ((Py_buffer *)(&__pyx_v_self->view))->obj = Py_None; + + /* "View.MemoryView":352 + * if self.view.obj == NULL: + * (<__pyx_buffer *> &self.view).obj = Py_None + * Py_INCREF(Py_None) # <<<<<<<<<<<<<< + * + * global __pyx_memoryview_thread_locks_used + */ + Py_INCREF(Py_None); + + /* "View.MemoryView":350 + * if type(self) is memoryview or obj is not None: + * __Pyx_GetBuffer(obj, &self.view, flags) + * if self.view.obj == NULL: # <<<<<<<<<<<<<< + * (<__pyx_buffer *> &self.view).obj = Py_None + * Py_INCREF(Py_None) + */ + } + + /* "View.MemoryView":348 + * self.obj = obj + * self.flags = flags + * if type(self) is memoryview or obj is not None: # <<<<<<<<<<<<<< + * __Pyx_GetBuffer(obj, &self.view, flags) + * if self.view.obj == NULL: + */ + } + + /* "View.MemoryView":355 + * + * global __pyx_memoryview_thread_locks_used + * if __pyx_memoryview_thread_locks_used < THREAD_LOCKS_PREALLOCATED: # <<<<<<<<<<<<<< + * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] + * __pyx_memoryview_thread_locks_used += 1 + */ + __pyx_t_1 = ((__pyx_memoryview_thread_locks_used < 8) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":356 + * global __pyx_memoryview_thread_locks_used + * if __pyx_memoryview_thread_locks_used < THREAD_LOCKS_PREALLOCATED: + * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] # <<<<<<<<<<<<<< + * __pyx_memoryview_thread_locks_used += 1 + * if self.lock is NULL: + */ + __pyx_v_self->lock = (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]); + + /* "View.MemoryView":357 + * if __pyx_memoryview_thread_locks_used < THREAD_LOCKS_PREALLOCATED: + * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] + * __pyx_memoryview_thread_locks_used += 1 # <<<<<<<<<<<<<< + * if self.lock is NULL: + * self.lock = PyThread_allocate_lock() + */ + __pyx_memoryview_thread_locks_used = (__pyx_memoryview_thread_locks_used + 1); + + /* "View.MemoryView":355 + * + * global __pyx_memoryview_thread_locks_used + * if __pyx_memoryview_thread_locks_used < THREAD_LOCKS_PREALLOCATED: # <<<<<<<<<<<<<< + * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] + * __pyx_memoryview_thread_locks_used += 1 + */ + } + + /* "View.MemoryView":358 + * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] + * __pyx_memoryview_thread_locks_used += 1 + * if self.lock is NULL: # <<<<<<<<<<<<<< + * self.lock = PyThread_allocate_lock() + * if self.lock is NULL: + */ + __pyx_t_1 = ((__pyx_v_self->lock == NULL) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":359 + * __pyx_memoryview_thread_locks_used += 1 + * if self.lock is NULL: + * self.lock = PyThread_allocate_lock() # <<<<<<<<<<<<<< + * if self.lock is NULL: + * raise MemoryError + */ + __pyx_v_self->lock = PyThread_allocate_lock(); + + /* "View.MemoryView":360 + * if self.lock is NULL: + * self.lock = PyThread_allocate_lock() + * if self.lock is NULL: # <<<<<<<<<<<<<< + * raise MemoryError + * + */ + __pyx_t_1 = ((__pyx_v_self->lock == NULL) != 0); + if (unlikely(__pyx_t_1)) { + + /* "View.MemoryView":361 + * self.lock = PyThread_allocate_lock() + * if self.lock is NULL: + * raise MemoryError # <<<<<<<<<<<<<< + * + * if flags & PyBUF_FORMAT: + */ + PyErr_NoMemory(); __PYX_ERR(1, 361, __pyx_L1_error) + + /* "View.MemoryView":360 + * if self.lock is NULL: + * self.lock = PyThread_allocate_lock() + * if self.lock is NULL: # <<<<<<<<<<<<<< + * raise MemoryError + * + */ + } + + /* "View.MemoryView":358 + * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] + * __pyx_memoryview_thread_locks_used += 1 + * if self.lock is NULL: # <<<<<<<<<<<<<< + * self.lock = PyThread_allocate_lock() + * if self.lock is NULL: + */ + } + + /* "View.MemoryView":363 + * raise MemoryError + * + * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< + * self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0') + * else: + */ + __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":364 + * + * if flags & PyBUF_FORMAT: + * self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0') # <<<<<<<<<<<<<< + * else: + * self.dtype_is_object = dtype_is_object + */ + __pyx_t_2 = (((__pyx_v_self->view.format[0]) == 'O') != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L11_bool_binop_done; + } + __pyx_t_2 = (((__pyx_v_self->view.format[1]) == '\x00') != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L11_bool_binop_done:; + __pyx_v_self->dtype_is_object = __pyx_t_1; + + /* "View.MemoryView":363 + * raise MemoryError + * + * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< + * self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0') + * else: + */ + goto __pyx_L10; + } + + /* "View.MemoryView":366 + * self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0') + * else: + * self.dtype_is_object = dtype_is_object # <<<<<<<<<<<<<< + * + * self.acquisition_count_aligned_p = <__pyx_atomic_int *> align_pointer( + */ + /*else*/ { + __pyx_v_self->dtype_is_object = __pyx_v_dtype_is_object; + } + __pyx_L10:; + + /* "View.MemoryView":368 + * self.dtype_is_object = dtype_is_object + * + * self.acquisition_count_aligned_p = <__pyx_atomic_int *> align_pointer( # <<<<<<<<<<<<<< + * &self.acquisition_count[0], sizeof(__pyx_atomic_int)) + * self.typeinfo = NULL + */ + __pyx_v_self->acquisition_count_aligned_p = ((__pyx_atomic_int *)__pyx_align_pointer(((void *)(&(__pyx_v_self->acquisition_count[0]))), (sizeof(__pyx_atomic_int)))); + + /* "View.MemoryView":370 + * self.acquisition_count_aligned_p = <__pyx_atomic_int *> align_pointer( + * &self.acquisition_count[0], sizeof(__pyx_atomic_int)) + * self.typeinfo = NULL # <<<<<<<<<<<<<< + * + * def __dealloc__(memoryview self): + */ + __pyx_v_self->typeinfo = NULL; + + /* "View.MemoryView":345 + * cdef __Pyx_TypeInfo *typeinfo + * + * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): # <<<<<<<<<<<<<< + * self.obj = obj + * self.flags = flags + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("View.MemoryView.memoryview.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":372 + * self.typeinfo = NULL + * + * def __dealloc__(memoryview self): # <<<<<<<<<<<<<< + * if self.obj is not None: + * __Pyx_ReleaseBuffer(&self.view) + */ + +/* Python wrapper */ +static void __pyx_memoryview___dealloc__(PyObject *__pyx_v_self); /*proto*/ +static void __pyx_memoryview___dealloc__(PyObject *__pyx_v_self) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); + __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(struct __pyx_memoryview_obj *__pyx_v_self) { + int __pyx_v_i; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + int __pyx_t_4; + int __pyx_t_5; + PyThread_type_lock __pyx_t_6; + PyThread_type_lock __pyx_t_7; + __Pyx_RefNannySetupContext("__dealloc__", 0); + + /* "View.MemoryView":373 + * + * def __dealloc__(memoryview self): + * if self.obj is not None: # <<<<<<<<<<<<<< + * __Pyx_ReleaseBuffer(&self.view) + * elif (<__pyx_buffer *> &self.view).obj == Py_None: + */ + __pyx_t_1 = (__pyx_v_self->obj != Py_None); + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":374 + * def __dealloc__(memoryview self): + * if self.obj is not None: + * __Pyx_ReleaseBuffer(&self.view) # <<<<<<<<<<<<<< + * elif (<__pyx_buffer *> &self.view).obj == Py_None: + * + */ + __Pyx_ReleaseBuffer((&__pyx_v_self->view)); + + /* "View.MemoryView":373 + * + * def __dealloc__(memoryview self): + * if self.obj is not None: # <<<<<<<<<<<<<< + * __Pyx_ReleaseBuffer(&self.view) + * elif (<__pyx_buffer *> &self.view).obj == Py_None: + */ + goto __pyx_L3; + } + + /* "View.MemoryView":375 + * if self.obj is not None: + * __Pyx_ReleaseBuffer(&self.view) + * elif (<__pyx_buffer *> &self.view).obj == Py_None: # <<<<<<<<<<<<<< + * + * (<__pyx_buffer *> &self.view).obj = NULL + */ + __pyx_t_2 = ((((Py_buffer *)(&__pyx_v_self->view))->obj == Py_None) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":377 + * elif (<__pyx_buffer *> &self.view).obj == Py_None: + * + * (<__pyx_buffer *> &self.view).obj = NULL # <<<<<<<<<<<<<< + * Py_DECREF(Py_None) + * + */ + ((Py_buffer *)(&__pyx_v_self->view))->obj = NULL; + + /* "View.MemoryView":378 + * + * (<__pyx_buffer *> &self.view).obj = NULL + * Py_DECREF(Py_None) # <<<<<<<<<<<<<< + * + * cdef int i + */ + Py_DECREF(Py_None); + + /* "View.MemoryView":375 + * if self.obj is not None: + * __Pyx_ReleaseBuffer(&self.view) + * elif (<__pyx_buffer *> &self.view).obj == Py_None: # <<<<<<<<<<<<<< + * + * (<__pyx_buffer *> &self.view).obj = NULL + */ + } + __pyx_L3:; + + /* "View.MemoryView":382 + * cdef int i + * global __pyx_memoryview_thread_locks_used + * if self.lock != NULL: # <<<<<<<<<<<<<< + * for i in range(__pyx_memoryview_thread_locks_used): + * if __pyx_memoryview_thread_locks[i] is self.lock: + */ + __pyx_t_2 = ((__pyx_v_self->lock != NULL) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":383 + * global __pyx_memoryview_thread_locks_used + * if self.lock != NULL: + * for i in range(__pyx_memoryview_thread_locks_used): # <<<<<<<<<<<<<< + * if __pyx_memoryview_thread_locks[i] is self.lock: + * __pyx_memoryview_thread_locks_used -= 1 + */ + __pyx_t_3 = __pyx_memoryview_thread_locks_used; + __pyx_t_4 = __pyx_t_3; + for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { + __pyx_v_i = __pyx_t_5; + + /* "View.MemoryView":384 + * if self.lock != NULL: + * for i in range(__pyx_memoryview_thread_locks_used): + * if __pyx_memoryview_thread_locks[i] is self.lock: # <<<<<<<<<<<<<< + * __pyx_memoryview_thread_locks_used -= 1 + * if i != __pyx_memoryview_thread_locks_used: + */ + __pyx_t_2 = (((__pyx_memoryview_thread_locks[__pyx_v_i]) == __pyx_v_self->lock) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":385 + * for i in range(__pyx_memoryview_thread_locks_used): + * if __pyx_memoryview_thread_locks[i] is self.lock: + * __pyx_memoryview_thread_locks_used -= 1 # <<<<<<<<<<<<<< + * if i != __pyx_memoryview_thread_locks_used: + * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( + */ + __pyx_memoryview_thread_locks_used = (__pyx_memoryview_thread_locks_used - 1); + + /* "View.MemoryView":386 + * if __pyx_memoryview_thread_locks[i] is self.lock: + * __pyx_memoryview_thread_locks_used -= 1 + * if i != __pyx_memoryview_thread_locks_used: # <<<<<<<<<<<<<< + * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( + * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) + */ + __pyx_t_2 = ((__pyx_v_i != __pyx_memoryview_thread_locks_used) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":388 + * if i != __pyx_memoryview_thread_locks_used: + * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( + * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) # <<<<<<<<<<<<<< + * break + * else: + */ + __pyx_t_6 = (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]); + __pyx_t_7 = (__pyx_memoryview_thread_locks[__pyx_v_i]); + + /* "View.MemoryView":387 + * __pyx_memoryview_thread_locks_used -= 1 + * if i != __pyx_memoryview_thread_locks_used: + * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( # <<<<<<<<<<<<<< + * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) + * break + */ + (__pyx_memoryview_thread_locks[__pyx_v_i]) = __pyx_t_6; + (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]) = __pyx_t_7; + + /* "View.MemoryView":386 + * if __pyx_memoryview_thread_locks[i] is self.lock: + * __pyx_memoryview_thread_locks_used -= 1 + * if i != __pyx_memoryview_thread_locks_used: # <<<<<<<<<<<<<< + * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( + * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) + */ + } + + /* "View.MemoryView":389 + * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( + * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) + * break # <<<<<<<<<<<<<< + * else: + * PyThread_free_lock(self.lock) + */ + goto __pyx_L6_break; + + /* "View.MemoryView":384 + * if self.lock != NULL: + * for i in range(__pyx_memoryview_thread_locks_used): + * if __pyx_memoryview_thread_locks[i] is self.lock: # <<<<<<<<<<<<<< + * __pyx_memoryview_thread_locks_used -= 1 + * if i != __pyx_memoryview_thread_locks_used: + */ + } + } + /*else*/ { + + /* "View.MemoryView":391 + * break + * else: + * PyThread_free_lock(self.lock) # <<<<<<<<<<<<<< + * + * cdef char *get_item_pointer(memoryview self, object index) except NULL: + */ + PyThread_free_lock(__pyx_v_self->lock); + } + __pyx_L6_break:; + + /* "View.MemoryView":382 + * cdef int i + * global __pyx_memoryview_thread_locks_used + * if self.lock != NULL: # <<<<<<<<<<<<<< + * for i in range(__pyx_memoryview_thread_locks_used): + * if __pyx_memoryview_thread_locks[i] is self.lock: + */ + } + + /* "View.MemoryView":372 + * self.typeinfo = NULL + * + * def __dealloc__(memoryview self): # <<<<<<<<<<<<<< + * if self.obj is not None: + * __Pyx_ReleaseBuffer(&self.view) + */ + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +/* "View.MemoryView":393 + * PyThread_free_lock(self.lock) + * + * cdef char *get_item_pointer(memoryview self, object index) except NULL: # <<<<<<<<<<<<<< + * cdef Py_ssize_t dim + * cdef char *itemp = self.view.buf + */ + +static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index) { + Py_ssize_t __pyx_v_dim; + char *__pyx_v_itemp; + PyObject *__pyx_v_idx = NULL; + char *__pyx_r; + __Pyx_RefNannyDeclarations + Py_ssize_t __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + Py_ssize_t __pyx_t_3; + PyObject *(*__pyx_t_4)(PyObject *); + PyObject *__pyx_t_5 = NULL; + Py_ssize_t __pyx_t_6; + char *__pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_item_pointer", 0); + + /* "View.MemoryView":395 + * cdef char *get_item_pointer(memoryview self, object index) except NULL: + * cdef Py_ssize_t dim + * cdef char *itemp = self.view.buf # <<<<<<<<<<<<<< + * + * for dim, idx in enumerate(index): + */ + __pyx_v_itemp = ((char *)__pyx_v_self->view.buf); + + /* "View.MemoryView":397 + * cdef char *itemp = self.view.buf + * + * for dim, idx in enumerate(index): # <<<<<<<<<<<<<< + * itemp = pybuffer_index(&self.view, itemp, idx, dim) + * + */ + __pyx_t_1 = 0; + if (likely(PyList_CheckExact(__pyx_v_index)) || PyTuple_CheckExact(__pyx_v_index)) { + __pyx_t_2 = __pyx_v_index; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; + __pyx_t_4 = NULL; + } else { + __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 397, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 397, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_4)) { + if (likely(PyList_CheckExact(__pyx_t_2))) { + if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 397, __pyx_L1_error) + #else + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 397, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + } else { + if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 397, __pyx_L1_error) + #else + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 397, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + } + } else { + __pyx_t_5 = __pyx_t_4(__pyx_t_2); + if (unlikely(!__pyx_t_5)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(1, 397, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_5); + } + __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_v_dim = __pyx_t_1; + __pyx_t_1 = (__pyx_t_1 + 1); + + /* "View.MemoryView":398 + * + * for dim, idx in enumerate(index): + * itemp = pybuffer_index(&self.view, itemp, idx, dim) # <<<<<<<<<<<<<< + * + * return itemp + */ + __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 398, __pyx_L1_error) + __pyx_t_7 = __pyx_pybuffer_index((&__pyx_v_self->view), __pyx_v_itemp, __pyx_t_6, __pyx_v_dim); if (unlikely(__pyx_t_7 == ((char *)NULL))) __PYX_ERR(1, 398, __pyx_L1_error) + __pyx_v_itemp = __pyx_t_7; + + /* "View.MemoryView":397 + * cdef char *itemp = self.view.buf + * + * for dim, idx in enumerate(index): # <<<<<<<<<<<<<< + * itemp = pybuffer_index(&self.view, itemp, idx, dim) + * + */ + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "View.MemoryView":400 + * itemp = pybuffer_index(&self.view, itemp, idx, dim) + * + * return itemp # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = __pyx_v_itemp; + goto __pyx_L0; + + /* "View.MemoryView":393 + * PyThread_free_lock(self.lock) + * + * cdef char *get_item_pointer(memoryview self, object index) except NULL: # <<<<<<<<<<<<<< + * cdef Py_ssize_t dim + * cdef char *itemp = self.view.buf + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("View.MemoryView.memoryview.get_item_pointer", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_idx); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":403 + * + * + * def __getitem__(memoryview self, object index): # <<<<<<<<<<<<<< + * if index is Ellipsis: + * return self + */ + +/* Python wrapper */ +static PyObject *__pyx_memoryview___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index); /*proto*/ +static PyObject *__pyx_memoryview___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0); + __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v_index)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index) { + PyObject *__pyx_v_have_slices = NULL; + PyObject *__pyx_v_indices = NULL; + char *__pyx_v_itemp; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + char *__pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__getitem__", 0); + + /* "View.MemoryView":404 + * + * def __getitem__(memoryview self, object index): + * if index is Ellipsis: # <<<<<<<<<<<<<< + * return self + * + */ + __pyx_t_1 = (__pyx_v_index == __pyx_builtin_Ellipsis); + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":405 + * def __getitem__(memoryview self, object index): + * if index is Ellipsis: + * return self # <<<<<<<<<<<<<< + * + * have_slices, indices = _unellipsify(index, self.view.ndim) + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(((PyObject *)__pyx_v_self)); + __pyx_r = ((PyObject *)__pyx_v_self); + goto __pyx_L0; + + /* "View.MemoryView":404 + * + * def __getitem__(memoryview self, object index): + * if index is Ellipsis: # <<<<<<<<<<<<<< + * return self + * + */ + } + + /* "View.MemoryView":407 + * return self + * + * have_slices, indices = _unellipsify(index, self.view.ndim) # <<<<<<<<<<<<<< + * + * cdef char *itemp + */ + __pyx_t_3 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 407, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (likely(__pyx_t_3 != Py_None)) { + PyObject* sequence = __pyx_t_3; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(1, 407, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + #else + __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 407, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 407, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #endif + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 407, __pyx_L1_error) + } + __pyx_v_have_slices = __pyx_t_4; + __pyx_t_4 = 0; + __pyx_v_indices = __pyx_t_5; + __pyx_t_5 = 0; + + /* "View.MemoryView":410 + * + * cdef char *itemp + * if have_slices: # <<<<<<<<<<<<<< + * return memview_slice(self, indices) + * else: + */ + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 410, __pyx_L1_error) + if (__pyx_t_2) { + + /* "View.MemoryView":411 + * cdef char *itemp + * if have_slices: + * return memview_slice(self, indices) # <<<<<<<<<<<<<< + * else: + * itemp = self.get_item_pointer(indices) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = ((PyObject *)__pyx_memview_slice(__pyx_v_self, __pyx_v_indices)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 411, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "View.MemoryView":410 + * + * cdef char *itemp + * if have_slices: # <<<<<<<<<<<<<< + * return memview_slice(self, indices) + * else: + */ + } + + /* "View.MemoryView":413 + * return memview_slice(self, indices) + * else: + * itemp = self.get_item_pointer(indices) # <<<<<<<<<<<<<< + * return self.convert_item_to_object(itemp) + * + */ + /*else*/ { + __pyx_t_6 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_indices); if (unlikely(__pyx_t_6 == ((char *)NULL))) __PYX_ERR(1, 413, __pyx_L1_error) + __pyx_v_itemp = __pyx_t_6; + + /* "View.MemoryView":414 + * else: + * itemp = self.get_item_pointer(indices) + * return self.convert_item_to_object(itemp) # <<<<<<<<<<<<<< + * + * def __setitem__(memoryview self, object index, object value): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->convert_item_to_object(__pyx_v_self, __pyx_v_itemp); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 414, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + } + + /* "View.MemoryView":403 + * + * + * def __getitem__(memoryview self, object index): # <<<<<<<<<<<<<< + * if index is Ellipsis: + * return self + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("View.MemoryView.memoryview.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_have_slices); + __Pyx_XDECREF(__pyx_v_indices); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":416 + * return self.convert_item_to_object(itemp) + * + * def __setitem__(memoryview self, object index, object value): # <<<<<<<<<<<<<< + * if self.view.readonly: + * raise TypeError("Cannot assign to read-only memoryview") + */ + +/* Python wrapper */ +static int __pyx_memoryview___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_memoryview___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0); + __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v_index), ((PyObject *)__pyx_v_value)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) { + PyObject *__pyx_v_have_slices = NULL; + PyObject *__pyx_v_obj = NULL; + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setitem__", 0); + __Pyx_INCREF(__pyx_v_index); + + /* "View.MemoryView":417 + * + * def __setitem__(memoryview self, object index, object value): + * if self.view.readonly: # <<<<<<<<<<<<<< + * raise TypeError("Cannot assign to read-only memoryview") + * + */ + __pyx_t_1 = (__pyx_v_self->view.readonly != 0); + if (unlikely(__pyx_t_1)) { + + /* "View.MemoryView":418 + * def __setitem__(memoryview self, object index, object value): + * if self.view.readonly: + * raise TypeError("Cannot assign to read-only memoryview") # <<<<<<<<<<<<<< + * + * have_slices, index = _unellipsify(index, self.view.ndim) + */ + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 418, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __PYX_ERR(1, 418, __pyx_L1_error) + + /* "View.MemoryView":417 + * + * def __setitem__(memoryview self, object index, object value): + * if self.view.readonly: # <<<<<<<<<<<<<< + * raise TypeError("Cannot assign to read-only memoryview") + * + */ + } + + /* "View.MemoryView":420 + * raise TypeError("Cannot assign to read-only memoryview") + * + * have_slices, index = _unellipsify(index, self.view.ndim) # <<<<<<<<<<<<<< + * + * if have_slices: + */ + __pyx_t_2 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 420, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (likely(__pyx_t_2 != Py_None)) { + PyObject* sequence = __pyx_t_2; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(1, 420, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + #else + __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 420, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 420, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 420, __pyx_L1_error) + } + __pyx_v_have_slices = __pyx_t_3; + __pyx_t_3 = 0; + __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_4); + __pyx_t_4 = 0; + + /* "View.MemoryView":422 + * have_slices, index = _unellipsify(index, self.view.ndim) + * + * if have_slices: # <<<<<<<<<<<<<< + * obj = self.is_slice(value) + * if obj: + */ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 422, __pyx_L1_error) + if (__pyx_t_1) { + + /* "View.MemoryView":423 + * + * if have_slices: + * obj = self.is_slice(value) # <<<<<<<<<<<<<< + * if obj: + * self.setitem_slice_assignment(self[index], obj) + */ + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->is_slice(__pyx_v_self, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 423, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_v_obj = __pyx_t_2; + __pyx_t_2 = 0; + + /* "View.MemoryView":424 + * if have_slices: + * obj = self.is_slice(value) + * if obj: # <<<<<<<<<<<<<< + * self.setitem_slice_assignment(self[index], obj) + * else: + */ + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 424, __pyx_L1_error) + if (__pyx_t_1) { + + /* "View.MemoryView":425 + * obj = self.is_slice(value) + * if obj: + * self.setitem_slice_assignment(self[index], obj) # <<<<<<<<<<<<<< + * else: + * self.setitem_slice_assign_scalar(self[index], value) + */ + __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 425, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assignment(__pyx_v_self, __pyx_t_2, __pyx_v_obj); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 425, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "View.MemoryView":424 + * if have_slices: + * obj = self.is_slice(value) + * if obj: # <<<<<<<<<<<<<< + * self.setitem_slice_assignment(self[index], obj) + * else: + */ + goto __pyx_L5; + } + + /* "View.MemoryView":427 + * self.setitem_slice_assignment(self[index], obj) + * else: + * self.setitem_slice_assign_scalar(self[index], value) # <<<<<<<<<<<<<< + * else: + * self.setitem_indexed(index, value) + */ + /*else*/ { + __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 427, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_memoryview_type))))) __PYX_ERR(1, 427, __pyx_L1_error) + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assign_scalar(__pyx_v_self, ((struct __pyx_memoryview_obj *)__pyx_t_4), __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 427, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_L5:; + + /* "View.MemoryView":422 + * have_slices, index = _unellipsify(index, self.view.ndim) + * + * if have_slices: # <<<<<<<<<<<<<< + * obj = self.is_slice(value) + * if obj: + */ + goto __pyx_L4; + } + + /* "View.MemoryView":429 + * self.setitem_slice_assign_scalar(self[index], value) + * else: + * self.setitem_indexed(index, value) # <<<<<<<<<<<<<< + * + * cdef is_slice(self, obj): + */ + /*else*/ { + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_indexed(__pyx_v_self, __pyx_v_index, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 429, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_L4:; + + /* "View.MemoryView":416 + * return self.convert_item_to_object(itemp) + * + * def __setitem__(memoryview self, object index, object value): # <<<<<<<<<<<<<< + * if self.view.readonly: + * raise TypeError("Cannot assign to read-only memoryview") + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("View.MemoryView.memoryview.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_have_slices); + __Pyx_XDECREF(__pyx_v_obj); + __Pyx_XDECREF(__pyx_v_index); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":431 + * self.setitem_indexed(index, value) + * + * cdef is_slice(self, obj): # <<<<<<<<<<<<<< + * if not isinstance(obj, memoryview): + * try: + */ + +static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("is_slice", 0); + __Pyx_INCREF(__pyx_v_obj); + + /* "View.MemoryView":432 + * + * cdef is_slice(self, obj): + * if not isinstance(obj, memoryview): # <<<<<<<<<<<<<< + * try: + * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, + */ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_memoryview_type); + __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":433 + * cdef is_slice(self, obj): + * if not isinstance(obj, memoryview): + * try: # <<<<<<<<<<<<<< + * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, + * self.dtype_is_object) + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_5); + /*try:*/ { + + /* "View.MemoryView":434 + * if not isinstance(obj, memoryview): + * try: + * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, # <<<<<<<<<<<<<< + * self.dtype_is_object) + * except TypeError: + */ + __pyx_t_6 = __Pyx_PyInt_From_int(((__pyx_v_self->flags & (~PyBUF_WRITABLE)) | PyBUF_ANY_CONTIGUOUS)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 434, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_6); + + /* "View.MemoryView":435 + * try: + * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, + * self.dtype_is_object) # <<<<<<<<<<<<<< + * except TypeError: + * return None + */ + __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 435, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + + /* "View.MemoryView":434 + * if not isinstance(obj, memoryview): + * try: + * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, # <<<<<<<<<<<<<< + * self.dtype_is_object) + * except TypeError: + */ + __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 434, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_INCREF(__pyx_v_obj); + __Pyx_GIVEREF(__pyx_v_obj); + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_obj); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6); + __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_7); + __pyx_t_6 = 0; + __pyx_t_7 = 0; + __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 434, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_7); + __pyx_t_7 = 0; + + /* "View.MemoryView":433 + * cdef is_slice(self, obj): + * if not isinstance(obj, memoryview): + * try: # <<<<<<<<<<<<<< + * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, + * self.dtype_is_object) + */ + } + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L9_try_end; + __pyx_L4_error:; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "View.MemoryView":436 + * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, + * self.dtype_is_object) + * except TypeError: # <<<<<<<<<<<<<< + * return None + * + */ + __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError); + if (__pyx_t_9) { + __Pyx_AddTraceback("View.MemoryView.memoryview.is_slice", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_6) < 0) __PYX_ERR(1, 436, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GOTREF(__pyx_t_6); + + /* "View.MemoryView":437 + * self.dtype_is_object) + * except TypeError: + * return None # <<<<<<<<<<<<<< + * + * return obj + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L7_except_return; + } + goto __pyx_L6_except_error; + __pyx_L6_except_error:; + + /* "View.MemoryView":433 + * cdef is_slice(self, obj): + * if not isinstance(obj, memoryview): + * try: # <<<<<<<<<<<<<< + * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, + * self.dtype_is_object) + */ + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); + goto __pyx_L1_error; + __pyx_L7_except_return:; + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); + goto __pyx_L0; + __pyx_L9_try_end:; + } + + /* "View.MemoryView":432 + * + * cdef is_slice(self, obj): + * if not isinstance(obj, memoryview): # <<<<<<<<<<<<<< + * try: + * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, + */ + } + + /* "View.MemoryView":439 + * return None + * + * return obj # <<<<<<<<<<<<<< + * + * cdef setitem_slice_assignment(self, dst, src): + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_obj); + __pyx_r = __pyx_v_obj; + goto __pyx_L0; + + /* "View.MemoryView":431 + * self.setitem_indexed(index, value) + * + * cdef is_slice(self, obj): # <<<<<<<<<<<<<< + * if not isinstance(obj, memoryview): + * try: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("View.MemoryView.memoryview.is_slice", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_obj); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":441 + * return obj + * + * cdef setitem_slice_assignment(self, dst, src): # <<<<<<<<<<<<<< + * cdef __Pyx_memviewslice dst_slice + * cdef __Pyx_memviewslice src_slice + */ + +static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_src) { + __Pyx_memviewslice __pyx_v_dst_slice; + __Pyx_memviewslice __pyx_v_src_slice; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_memviewslice *__pyx_t_1; + __Pyx_memviewslice *__pyx_t_2; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + int __pyx_t_5; + int __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("setitem_slice_assignment", 0); + + /* "View.MemoryView":445 + * cdef __Pyx_memviewslice src_slice + * + * memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0], # <<<<<<<<<<<<<< + * get_slice_from_memview(dst, &dst_slice)[0], + * src.ndim, dst.ndim, self.dtype_is_object) + */ + if (!(likely(((__pyx_v_src) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_src, __pyx_memoryview_type))))) __PYX_ERR(1, 445, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_src), (&__pyx_v_src_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 445, __pyx_L1_error) + + /* "View.MemoryView":446 + * + * memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0], + * get_slice_from_memview(dst, &dst_slice)[0], # <<<<<<<<<<<<<< + * src.ndim, dst.ndim, self.dtype_is_object) + * + */ + if (!(likely(((__pyx_v_dst) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dst, __pyx_memoryview_type))))) __PYX_ERR(1, 446, __pyx_L1_error) + __pyx_t_2 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_dst), (&__pyx_v_dst_slice)); if (unlikely(__pyx_t_2 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 446, __pyx_L1_error) + + /* "View.MemoryView":447 + * memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0], + * get_slice_from_memview(dst, &dst_slice)[0], + * src.ndim, dst.ndim, self.dtype_is_object) # <<<<<<<<<<<<<< + * + * cdef setitem_slice_assign_scalar(self, memoryview dst, value): + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_src, __pyx_n_s_ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 447, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 447, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_dst, __pyx_n_s_ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 447, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 447, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "View.MemoryView":445 + * cdef __Pyx_memviewslice src_slice + * + * memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0], # <<<<<<<<<<<<<< + * get_slice_from_memview(dst, &dst_slice)[0], + * src.ndim, dst.ndim, self.dtype_is_object) + */ + __pyx_t_6 = __pyx_memoryview_copy_contents((__pyx_t_1[0]), (__pyx_t_2[0]), __pyx_t_4, __pyx_t_5, __pyx_v_self->dtype_is_object); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 445, __pyx_L1_error) + + /* "View.MemoryView":441 + * return obj + * + * cdef setitem_slice_assignment(self, dst, src): # <<<<<<<<<<<<<< + * cdef __Pyx_memviewslice dst_slice + * cdef __Pyx_memviewslice src_slice + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("View.MemoryView.memoryview.setitem_slice_assignment", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":449 + * src.ndim, dst.ndim, self.dtype_is_object) + * + * cdef setitem_slice_assign_scalar(self, memoryview dst, value): # <<<<<<<<<<<<<< + * cdef int array[128] + * cdef void *tmp = NULL + */ + +static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memoryview_obj *__pyx_v_self, struct __pyx_memoryview_obj *__pyx_v_dst, PyObject *__pyx_v_value) { + int __pyx_v_array[0x80]; + void *__pyx_v_tmp; + void *__pyx_v_item; + __Pyx_memviewslice *__pyx_v_dst_slice; + __Pyx_memviewslice __pyx_v_tmp_slice; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_memviewslice *__pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + int __pyx_t_5; + char const *__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; + PyObject *__pyx_t_12 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("setitem_slice_assign_scalar", 0); + + /* "View.MemoryView":451 + * cdef setitem_slice_assign_scalar(self, memoryview dst, value): + * cdef int array[128] + * cdef void *tmp = NULL # <<<<<<<<<<<<<< + * cdef void *item + * + */ + __pyx_v_tmp = NULL; + + /* "View.MemoryView":456 + * cdef __Pyx_memviewslice *dst_slice + * cdef __Pyx_memviewslice tmp_slice + * dst_slice = get_slice_from_memview(dst, &tmp_slice) # <<<<<<<<<<<<<< + * + * if self.view.itemsize > sizeof(array): + */ + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_dst, (&__pyx_v_tmp_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 456, __pyx_L1_error) + __pyx_v_dst_slice = __pyx_t_1; + + /* "View.MemoryView":458 + * dst_slice = get_slice_from_memview(dst, &tmp_slice) + * + * if self.view.itemsize > sizeof(array): # <<<<<<<<<<<<<< + * tmp = PyMem_Malloc(self.view.itemsize) + * if tmp == NULL: + */ + __pyx_t_2 = ((((size_t)__pyx_v_self->view.itemsize) > (sizeof(__pyx_v_array))) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":459 + * + * if self.view.itemsize > sizeof(array): + * tmp = PyMem_Malloc(self.view.itemsize) # <<<<<<<<<<<<<< + * if tmp == NULL: + * raise MemoryError + */ + __pyx_v_tmp = PyMem_Malloc(__pyx_v_self->view.itemsize); + + /* "View.MemoryView":460 + * if self.view.itemsize > sizeof(array): + * tmp = PyMem_Malloc(self.view.itemsize) + * if tmp == NULL: # <<<<<<<<<<<<<< + * raise MemoryError + * item = tmp + */ + __pyx_t_2 = ((__pyx_v_tmp == NULL) != 0); + if (unlikely(__pyx_t_2)) { + + /* "View.MemoryView":461 + * tmp = PyMem_Malloc(self.view.itemsize) + * if tmp == NULL: + * raise MemoryError # <<<<<<<<<<<<<< + * item = tmp + * else: + */ + PyErr_NoMemory(); __PYX_ERR(1, 461, __pyx_L1_error) + + /* "View.MemoryView":460 + * if self.view.itemsize > sizeof(array): + * tmp = PyMem_Malloc(self.view.itemsize) + * if tmp == NULL: # <<<<<<<<<<<<<< + * raise MemoryError + * item = tmp + */ + } + + /* "View.MemoryView":462 + * if tmp == NULL: + * raise MemoryError + * item = tmp # <<<<<<<<<<<<<< + * else: + * item = array + */ + __pyx_v_item = __pyx_v_tmp; + + /* "View.MemoryView":458 + * dst_slice = get_slice_from_memview(dst, &tmp_slice) + * + * if self.view.itemsize > sizeof(array): # <<<<<<<<<<<<<< + * tmp = PyMem_Malloc(self.view.itemsize) + * if tmp == NULL: + */ + goto __pyx_L3; + } + + /* "View.MemoryView":464 + * item = tmp + * else: + * item = array # <<<<<<<<<<<<<< + * + * try: + */ + /*else*/ { + __pyx_v_item = ((void *)__pyx_v_array); + } + __pyx_L3:; + + /* "View.MemoryView":466 + * item = array + * + * try: # <<<<<<<<<<<<<< + * if self.dtype_is_object: + * ( item)[0] = value + */ + /*try:*/ { + + /* "View.MemoryView":467 + * + * try: + * if self.dtype_is_object: # <<<<<<<<<<<<<< + * ( item)[0] = value + * else: + */ + __pyx_t_2 = (__pyx_v_self->dtype_is_object != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":468 + * try: + * if self.dtype_is_object: + * ( item)[0] = value # <<<<<<<<<<<<<< + * else: + * self.assign_item_from_object( item, value) + */ + (((PyObject **)__pyx_v_item)[0]) = ((PyObject *)__pyx_v_value); + + /* "View.MemoryView":467 + * + * try: + * if self.dtype_is_object: # <<<<<<<<<<<<<< + * ( item)[0] = value + * else: + */ + goto __pyx_L8; + } + + /* "View.MemoryView":470 + * ( item)[0] = value + * else: + * self.assign_item_from_object( item, value) # <<<<<<<<<<<<<< + * + * + */ + /*else*/ { + __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, ((char *)__pyx_v_item), __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 470, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_L8:; + + /* "View.MemoryView":474 + * + * + * if self.view.suboffsets != NULL: # <<<<<<<<<<<<<< + * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) + * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, + */ + __pyx_t_2 = ((__pyx_v_self->view.suboffsets != NULL) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":475 + * + * if self.view.suboffsets != NULL: + * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) # <<<<<<<<<<<<<< + * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, + * item, self.dtype_is_object) + */ + __pyx_t_3 = assert_direct_dimensions(__pyx_v_self->view.suboffsets, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 475, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "View.MemoryView":474 + * + * + * if self.view.suboffsets != NULL: # <<<<<<<<<<<<<< + * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) + * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, + */ + } + + /* "View.MemoryView":476 + * if self.view.suboffsets != NULL: + * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) + * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, # <<<<<<<<<<<<<< + * item, self.dtype_is_object) + * finally: + */ + __pyx_memoryview_slice_assign_scalar(__pyx_v_dst_slice, __pyx_v_dst->view.ndim, __pyx_v_self->view.itemsize, __pyx_v_item, __pyx_v_self->dtype_is_object); + } + + /* "View.MemoryView":479 + * item, self.dtype_is_object) + * finally: + * PyMem_Free(tmp) # <<<<<<<<<<<<<< + * + * cdef setitem_indexed(self, index, value): + */ + /*finally:*/ { + /*normal exit:*/{ + PyMem_Free(__pyx_v_tmp); + goto __pyx_L7; + } + __pyx_L6_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_12); + __pyx_t_4 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename; + { + PyMem_Free(__pyx_v_tmp); + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); + } + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_XGIVEREF(__pyx_t_9); + __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9); + __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; + __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6; + goto __pyx_L1_error; + } + __pyx_L7:; + } + + /* "View.MemoryView":449 + * src.ndim, dst.ndim, self.dtype_is_object) + * + * cdef setitem_slice_assign_scalar(self, memoryview dst, value): # <<<<<<<<<<<<<< + * cdef int array[128] + * cdef void *tmp = NULL + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("View.MemoryView.memoryview.setitem_slice_assign_scalar", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":481 + * PyMem_Free(tmp) + * + * cdef setitem_indexed(self, index, value): # <<<<<<<<<<<<<< + * cdef char *itemp = self.get_item_pointer(index) + * self.assign_item_from_object(itemp, value) + */ + +static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) { + char *__pyx_v_itemp; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("setitem_indexed", 0); + + /* "View.MemoryView":482 + * + * cdef setitem_indexed(self, index, value): + * cdef char *itemp = self.get_item_pointer(index) # <<<<<<<<<<<<<< + * self.assign_item_from_object(itemp, value) + * + */ + __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_index); if (unlikely(__pyx_t_1 == ((char *)NULL))) __PYX_ERR(1, 482, __pyx_L1_error) + __pyx_v_itemp = __pyx_t_1; + + /* "View.MemoryView":483 + * cdef setitem_indexed(self, index, value): + * cdef char *itemp = self.get_item_pointer(index) + * self.assign_item_from_object(itemp, value) # <<<<<<<<<<<<<< + * + * cdef convert_item_to_object(self, char *itemp): + */ + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 483, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "View.MemoryView":481 + * PyMem_Free(tmp) + * + * cdef setitem_indexed(self, index, value): # <<<<<<<<<<<<<< + * cdef char *itemp = self.get_item_pointer(index) + * self.assign_item_from_object(itemp, value) + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("View.MemoryView.memoryview.setitem_indexed", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":485 + * self.assign_item_from_object(itemp, value) + * + * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< + * """Only used if instantiated manually by the user, or if Cython doesn't + * know how to convert the type""" + */ + +static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp) { + PyObject *__pyx_v_struct = NULL; + PyObject *__pyx_v_bytesitem = 0; + PyObject *__pyx_v_result = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + size_t __pyx_t_10; + int __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("convert_item_to_object", 0); + + /* "View.MemoryView":488 + * """Only used if instantiated manually by the user, or if Cython doesn't + * know how to convert the type""" + * import struct # <<<<<<<<<<<<<< + * cdef bytes bytesitem + * + */ + __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 488, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_struct = __pyx_t_1; + __pyx_t_1 = 0; + + /* "View.MemoryView":491 + * cdef bytes bytesitem + * + * bytesitem = itemp[:self.view.itemsize] # <<<<<<<<<<<<<< + * try: + * result = struct.unpack(self.view.format, bytesitem) + */ + __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_itemp + 0, __pyx_v_self->view.itemsize - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 491, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_bytesitem = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "View.MemoryView":492 + * + * bytesitem = itemp[:self.view.itemsize] + * try: # <<<<<<<<<<<<<< + * result = struct.unpack(self.view.format, bytesitem) + * except struct.error: + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_4); + /*try:*/ { + + /* "View.MemoryView":493 + * bytesitem = itemp[:self.view.itemsize] + * try: + * result = struct.unpack(self.view.format, bytesitem) # <<<<<<<<<<<<<< + * except struct.error: + * raise ValueError("Unable to convert item to object") + */ + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_unpack); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 493, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 493, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_8 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_6, __pyx_v_bytesitem}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 493, __pyx_L3_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_6, __pyx_v_bytesitem}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 493, __pyx_L3_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + { + __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 493, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_9); + if (__pyx_t_7) { + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; + } + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_6); + __Pyx_INCREF(__pyx_v_bytesitem); + __Pyx_GIVEREF(__pyx_v_bytesitem); + PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_v_bytesitem); + __pyx_t_6 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 493, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_result = __pyx_t_1; + __pyx_t_1 = 0; + + /* "View.MemoryView":492 + * + * bytesitem = itemp[:self.view.itemsize] + * try: # <<<<<<<<<<<<<< + * result = struct.unpack(self.view.format, bytesitem) + * except struct.error: + */ + } + + /* "View.MemoryView":497 + * raise ValueError("Unable to convert item to object") + * else: + * if len(self.view.format) == 1: # <<<<<<<<<<<<<< + * return result[0] + * return result + */ + /*else:*/ { + __pyx_t_10 = strlen(__pyx_v_self->view.format); + __pyx_t_11 = ((__pyx_t_10 == 1) != 0); + if (__pyx_t_11) { + + /* "View.MemoryView":498 + * else: + * if len(self.view.format) == 1: + * return result[0] # <<<<<<<<<<<<<< + * return result + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 498, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L6_except_return; + + /* "View.MemoryView":497 + * raise ValueError("Unable to convert item to object") + * else: + * if len(self.view.format) == 1: # <<<<<<<<<<<<<< + * return result[0] + * return result + */ + } + + /* "View.MemoryView":499 + * if len(self.view.format) == 1: + * return result[0] + * return result # <<<<<<<<<<<<<< + * + * cdef assign_item_from_object(self, char *itemp, object value): + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_result); + __pyx_r = __pyx_v_result; + goto __pyx_L6_except_return; + } + __pyx_L3_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "View.MemoryView":494 + * try: + * result = struct.unpack(self.view.format, bytesitem) + * except struct.error: # <<<<<<<<<<<<<< + * raise ValueError("Unable to convert item to object") + * else: + */ + __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_5, &__pyx_t_9); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_error); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 494, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_ErrRestore(__pyx_t_1, __pyx_t_5, __pyx_t_9); + __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_9 = 0; + if (__pyx_t_8) { + __Pyx_AddTraceback("View.MemoryView.memoryview.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_5, &__pyx_t_1) < 0) __PYX_ERR(1, 494, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_1); + + /* "View.MemoryView":495 + * result = struct.unpack(self.view.format, bytesitem) + * except struct.error: + * raise ValueError("Unable to convert item to object") # <<<<<<<<<<<<<< + * else: + * if len(self.view.format) == 1: + */ + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 495, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_Raise(__pyx_t_6, 0, 0, 0); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __PYX_ERR(1, 495, __pyx_L5_except_error) + } + goto __pyx_L5_except_error; + __pyx_L5_except_error:; + + /* "View.MemoryView":492 + * + * bytesitem = itemp[:self.view.itemsize] + * try: # <<<<<<<<<<<<<< + * result = struct.unpack(self.view.format, bytesitem) + * except struct.error: + */ + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); + goto __pyx_L1_error; + __pyx_L6_except_return:; + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_XGIVEREF(__pyx_t_4); + __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); + goto __pyx_L0; + } + + /* "View.MemoryView":485 + * self.assign_item_from_object(itemp, value) + * + * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< + * """Only used if instantiated manually by the user, or if Cython doesn't + * know how to convert the type""" + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_AddTraceback("View.MemoryView.memoryview.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_struct); + __Pyx_XDECREF(__pyx_v_bytesitem); + __Pyx_XDECREF(__pyx_v_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":501 + * return result + * + * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< + * """Only used if instantiated manually by the user, or if Cython doesn't + * know how to convert the type""" + */ + +static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value) { + PyObject *__pyx_v_struct = NULL; + char __pyx_v_c; + PyObject *__pyx_v_bytesvalue = 0; + Py_ssize_t __pyx_v_i; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + Py_ssize_t __pyx_t_9; + PyObject *__pyx_t_10 = NULL; + char *__pyx_t_11; + char *__pyx_t_12; + char *__pyx_t_13; + char *__pyx_t_14; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("assign_item_from_object", 0); + + /* "View.MemoryView":504 + * """Only used if instantiated manually by the user, or if Cython doesn't + * know how to convert the type""" + * import struct # <<<<<<<<<<<<<< + * cdef char c + * cdef bytes bytesvalue + */ + __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 504, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_struct = __pyx_t_1; + __pyx_t_1 = 0; + + /* "View.MemoryView":509 + * cdef Py_ssize_t i + * + * if isinstance(value, tuple): # <<<<<<<<<<<<<< + * bytesvalue = struct.pack(self.view.format, *value) + * else: + */ + __pyx_t_2 = PyTuple_Check(__pyx_v_value); + __pyx_t_3 = (__pyx_t_2 != 0); + if (__pyx_t_3) { + + /* "View.MemoryView":510 + * + * if isinstance(value, tuple): + * bytesvalue = struct.pack(self.view.format, *value) # <<<<<<<<<<<<<< + * else: + * bytesvalue = struct.pack(self.view.format, value) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 510, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 510, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 510, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 510, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 510, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 510, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(1, 510, __pyx_L1_error) + __pyx_v_bytesvalue = ((PyObject*)__pyx_t_4); + __pyx_t_4 = 0; + + /* "View.MemoryView":509 + * cdef Py_ssize_t i + * + * if isinstance(value, tuple): # <<<<<<<<<<<<<< + * bytesvalue = struct.pack(self.view.format, *value) + * else: + */ + goto __pyx_L3; + } + + /* "View.MemoryView":512 + * bytesvalue = struct.pack(self.view.format, *value) + * else: + * bytesvalue = struct.pack(self.view.format, value) # <<<<<<<<<<<<<< + * + * for i, c in enumerate(bytesvalue): + */ + /*else*/ { + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 512, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 512, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = NULL; + __pyx_t_7 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + __pyx_t_7 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_6)) { + PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_1, __pyx_v_value}; + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 512, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { + PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_1, __pyx_v_value}; + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 512, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } else + #endif + { + __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 512, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + if (__pyx_t_5) { + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL; + } + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_1); + __Pyx_INCREF(__pyx_v_value); + __Pyx_GIVEREF(__pyx_v_value); + PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_value); + __pyx_t_1 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 512, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(1, 512, __pyx_L1_error) + __pyx_v_bytesvalue = ((PyObject*)__pyx_t_4); + __pyx_t_4 = 0; + } + __pyx_L3:; + + /* "View.MemoryView":514 + * bytesvalue = struct.pack(self.view.format, value) + * + * for i, c in enumerate(bytesvalue): # <<<<<<<<<<<<<< + * itemp[i] = c + * + */ + __pyx_t_9 = 0; + if (unlikely(__pyx_v_bytesvalue == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' is not iterable"); + __PYX_ERR(1, 514, __pyx_L1_error) + } + __Pyx_INCREF(__pyx_v_bytesvalue); + __pyx_t_10 = __pyx_v_bytesvalue; + __pyx_t_12 = PyBytes_AS_STRING(__pyx_t_10); + __pyx_t_13 = (__pyx_t_12 + PyBytes_GET_SIZE(__pyx_t_10)); + for (__pyx_t_14 = __pyx_t_12; __pyx_t_14 < __pyx_t_13; __pyx_t_14++) { + __pyx_t_11 = __pyx_t_14; + __pyx_v_c = (__pyx_t_11[0]); + + /* "View.MemoryView":515 + * + * for i, c in enumerate(bytesvalue): + * itemp[i] = c # <<<<<<<<<<<<<< + * + * @cname('getbuffer') + */ + __pyx_v_i = __pyx_t_9; + + /* "View.MemoryView":514 + * bytesvalue = struct.pack(self.view.format, value) + * + * for i, c in enumerate(bytesvalue): # <<<<<<<<<<<<<< + * itemp[i] = c + * + */ + __pyx_t_9 = (__pyx_t_9 + 1); + + /* "View.MemoryView":515 + * + * for i, c in enumerate(bytesvalue): + * itemp[i] = c # <<<<<<<<<<<<<< + * + * @cname('getbuffer') + */ + (__pyx_v_itemp[__pyx_v_i]) = __pyx_v_c; + } + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "View.MemoryView":501 + * return result + * + * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< + * """Only used if instantiated manually by the user, or if Cython doesn't + * know how to convert the type""" + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("View.MemoryView.memoryview.assign_item_from_object", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_struct); + __Pyx_XDECREF(__pyx_v_bytesvalue); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":518 + * + * @cname('getbuffer') + * def __getbuffer__(self, Py_buffer *info, int flags): # <<<<<<<<<<<<<< + * if flags & PyBUF_WRITABLE and self.view.readonly: + * raise ValueError("Cannot create writable memory view from read-only memoryview") + */ + +/* Python wrapper */ +static CYTHON_UNUSED int __pyx_memoryview_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ +static CYTHON_UNUSED int __pyx_memoryview_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0); + __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(struct __pyx_memoryview_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + Py_ssize_t *__pyx_t_4; + char *__pyx_t_5; + void *__pyx_t_6; + int __pyx_t_7; + Py_ssize_t __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + if (__pyx_v_info == NULL) { + PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete"); + return -1; + } + __Pyx_RefNannySetupContext("__getbuffer__", 0); + __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(__pyx_v_info->obj); + + /* "View.MemoryView":519 + * @cname('getbuffer') + * def __getbuffer__(self, Py_buffer *info, int flags): + * if flags & PyBUF_WRITABLE and self.view.readonly: # <<<<<<<<<<<<<< + * raise ValueError("Cannot create writable memory view from read-only memoryview") + * + */ + __pyx_t_2 = ((__pyx_v_flags & PyBUF_WRITABLE) != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = (__pyx_v_self->view.readonly != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (unlikely(__pyx_t_1)) { + + /* "View.MemoryView":520 + * def __getbuffer__(self, Py_buffer *info, int flags): + * if flags & PyBUF_WRITABLE and self.view.readonly: + * raise ValueError("Cannot create writable memory view from read-only memoryview") # <<<<<<<<<<<<<< + * + * if flags & PyBUF_ND: + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 520, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 520, __pyx_L1_error) + + /* "View.MemoryView":519 + * @cname('getbuffer') + * def __getbuffer__(self, Py_buffer *info, int flags): + * if flags & PyBUF_WRITABLE and self.view.readonly: # <<<<<<<<<<<<<< + * raise ValueError("Cannot create writable memory view from read-only memoryview") + * + */ + } + + /* "View.MemoryView":522 + * raise ValueError("Cannot create writable memory view from read-only memoryview") + * + * if flags & PyBUF_ND: # <<<<<<<<<<<<<< + * info.shape = self.view.shape + * else: + */ + __pyx_t_1 = ((__pyx_v_flags & PyBUF_ND) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":523 + * + * if flags & PyBUF_ND: + * info.shape = self.view.shape # <<<<<<<<<<<<<< + * else: + * info.shape = NULL + */ + __pyx_t_4 = __pyx_v_self->view.shape; + __pyx_v_info->shape = __pyx_t_4; + + /* "View.MemoryView":522 + * raise ValueError("Cannot create writable memory view from read-only memoryview") + * + * if flags & PyBUF_ND: # <<<<<<<<<<<<<< + * info.shape = self.view.shape + * else: + */ + goto __pyx_L6; + } + + /* "View.MemoryView":525 + * info.shape = self.view.shape + * else: + * info.shape = NULL # <<<<<<<<<<<<<< + * + * if flags & PyBUF_STRIDES: + */ + /*else*/ { + __pyx_v_info->shape = NULL; + } + __pyx_L6:; + + /* "View.MemoryView":527 + * info.shape = NULL + * + * if flags & PyBUF_STRIDES: # <<<<<<<<<<<<<< + * info.strides = self.view.strides + * else: + */ + __pyx_t_1 = ((__pyx_v_flags & PyBUF_STRIDES) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":528 + * + * if flags & PyBUF_STRIDES: + * info.strides = self.view.strides # <<<<<<<<<<<<<< + * else: + * info.strides = NULL + */ + __pyx_t_4 = __pyx_v_self->view.strides; + __pyx_v_info->strides = __pyx_t_4; + + /* "View.MemoryView":527 + * info.shape = NULL + * + * if flags & PyBUF_STRIDES: # <<<<<<<<<<<<<< + * info.strides = self.view.strides + * else: + */ + goto __pyx_L7; + } + + /* "View.MemoryView":530 + * info.strides = self.view.strides + * else: + * info.strides = NULL # <<<<<<<<<<<<<< + * + * if flags & PyBUF_INDIRECT: + */ + /*else*/ { + __pyx_v_info->strides = NULL; + } + __pyx_L7:; + + /* "View.MemoryView":532 + * info.strides = NULL + * + * if flags & PyBUF_INDIRECT: # <<<<<<<<<<<<<< + * info.suboffsets = self.view.suboffsets + * else: + */ + __pyx_t_1 = ((__pyx_v_flags & PyBUF_INDIRECT) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":533 + * + * if flags & PyBUF_INDIRECT: + * info.suboffsets = self.view.suboffsets # <<<<<<<<<<<<<< + * else: + * info.suboffsets = NULL + */ + __pyx_t_4 = __pyx_v_self->view.suboffsets; + __pyx_v_info->suboffsets = __pyx_t_4; + + /* "View.MemoryView":532 + * info.strides = NULL + * + * if flags & PyBUF_INDIRECT: # <<<<<<<<<<<<<< + * info.suboffsets = self.view.suboffsets + * else: + */ + goto __pyx_L8; + } + + /* "View.MemoryView":535 + * info.suboffsets = self.view.suboffsets + * else: + * info.suboffsets = NULL # <<<<<<<<<<<<<< + * + * if flags & PyBUF_FORMAT: + */ + /*else*/ { + __pyx_v_info->suboffsets = NULL; + } + __pyx_L8:; + + /* "View.MemoryView":537 + * info.suboffsets = NULL + * + * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< + * info.format = self.view.format + * else: + */ + __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":538 + * + * if flags & PyBUF_FORMAT: + * info.format = self.view.format # <<<<<<<<<<<<<< + * else: + * info.format = NULL + */ + __pyx_t_5 = __pyx_v_self->view.format; + __pyx_v_info->format = __pyx_t_5; + + /* "View.MemoryView":537 + * info.suboffsets = NULL + * + * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< + * info.format = self.view.format + * else: + */ + goto __pyx_L9; + } + + /* "View.MemoryView":540 + * info.format = self.view.format + * else: + * info.format = NULL # <<<<<<<<<<<<<< + * + * info.buf = self.view.buf + */ + /*else*/ { + __pyx_v_info->format = NULL; + } + __pyx_L9:; + + /* "View.MemoryView":542 + * info.format = NULL + * + * info.buf = self.view.buf # <<<<<<<<<<<<<< + * info.ndim = self.view.ndim + * info.itemsize = self.view.itemsize + */ + __pyx_t_6 = __pyx_v_self->view.buf; + __pyx_v_info->buf = __pyx_t_6; + + /* "View.MemoryView":543 + * + * info.buf = self.view.buf + * info.ndim = self.view.ndim # <<<<<<<<<<<<<< + * info.itemsize = self.view.itemsize + * info.len = self.view.len + */ + __pyx_t_7 = __pyx_v_self->view.ndim; + __pyx_v_info->ndim = __pyx_t_7; + + /* "View.MemoryView":544 + * info.buf = self.view.buf + * info.ndim = self.view.ndim + * info.itemsize = self.view.itemsize # <<<<<<<<<<<<<< + * info.len = self.view.len + * info.readonly = self.view.readonly + */ + __pyx_t_8 = __pyx_v_self->view.itemsize; + __pyx_v_info->itemsize = __pyx_t_8; + + /* "View.MemoryView":545 + * info.ndim = self.view.ndim + * info.itemsize = self.view.itemsize + * info.len = self.view.len # <<<<<<<<<<<<<< + * info.readonly = self.view.readonly + * info.obj = self + */ + __pyx_t_8 = __pyx_v_self->view.len; + __pyx_v_info->len = __pyx_t_8; + + /* "View.MemoryView":546 + * info.itemsize = self.view.itemsize + * info.len = self.view.len + * info.readonly = self.view.readonly # <<<<<<<<<<<<<< + * info.obj = self + * + */ + __pyx_t_1 = __pyx_v_self->view.readonly; + __pyx_v_info->readonly = __pyx_t_1; + + /* "View.MemoryView":547 + * info.len = self.view.len + * info.readonly = self.view.readonly + * info.obj = self # <<<<<<<<<<<<<< + * + * __pyx_getbuffer = capsule( &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)") + */ + __Pyx_INCREF(((PyObject *)__pyx_v_self)); + __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); + __Pyx_GOTREF(__pyx_v_info->obj); + __Pyx_DECREF(__pyx_v_info->obj); + __pyx_v_info->obj = ((PyObject *)__pyx_v_self); + + /* "View.MemoryView":518 + * + * @cname('getbuffer') + * def __getbuffer__(self, Py_buffer *info, int flags): # <<<<<<<<<<<<<< + * if flags & PyBUF_WRITABLE and self.view.readonly: + * raise ValueError("Cannot create writable memory view from read-only memoryview") + */ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("View.MemoryView.memoryview.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + if (__pyx_v_info->obj != NULL) { + __Pyx_GOTREF(__pyx_v_info->obj); + __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; + } + goto __pyx_L2; + __pyx_L0:; + if (__pyx_v_info->obj == Py_None) { + __Pyx_GOTREF(__pyx_v_info->obj); + __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; + } + __pyx_L2:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":553 + * + * @property + * def T(self): # <<<<<<<<<<<<<< + * cdef _memoryviewslice result = memoryview_copy(self) + * transpose_memslice(&result.from_slice) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_1T_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_1T_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct __pyx_memoryview_obj *__pyx_v_self) { + struct __pyx_memoryviewslice_obj *__pyx_v_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "View.MemoryView":554 + * @property + * def T(self): + * cdef _memoryviewslice result = memoryview_copy(self) # <<<<<<<<<<<<<< + * transpose_memslice(&result.from_slice) + * return result + */ + __pyx_t_1 = __pyx_memoryview_copy_object(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 554, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_memoryviewslice_type))))) __PYX_ERR(1, 554, __pyx_L1_error) + __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "View.MemoryView":555 + * def T(self): + * cdef _memoryviewslice result = memoryview_copy(self) + * transpose_memslice(&result.from_slice) # <<<<<<<<<<<<<< + * return result + * + */ + __pyx_t_2 = __pyx_memslice_transpose((&__pyx_v_result->from_slice)); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(1, 555, __pyx_L1_error) + + /* "View.MemoryView":556 + * cdef _memoryviewslice result = memoryview_copy(self) + * transpose_memslice(&result.from_slice) + * return result # <<<<<<<<<<<<<< + * + * @property + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(((PyObject *)__pyx_v_result)); + __pyx_r = ((PyObject *)__pyx_v_result); + goto __pyx_L0; + + /* "View.MemoryView":553 + * + * @property + * def T(self): # <<<<<<<<<<<<<< + * cdef _memoryviewslice result = memoryview_copy(self) + * transpose_memslice(&result.from_slice) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("View.MemoryView.memoryview.T.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":559 + * + * @property + * def base(self): # <<<<<<<<<<<<<< + * return self.obj + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4base_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4base_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struct __pyx_memoryview_obj *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 0); + + /* "View.MemoryView":560 + * @property + * def base(self): + * return self.obj # <<<<<<<<<<<<<< + * + * @property + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->obj); + __pyx_r = __pyx_v_self->obj; + goto __pyx_L0; + + /* "View.MemoryView":559 + * + * @property + * def base(self): # <<<<<<<<<<<<<< + * return self.obj + * + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":563 + * + * @property + * def shape(self): # <<<<<<<<<<<<<< + * return tuple([length for length in self.view.shape[:self.view.ndim]]) + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_5shape_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_5shape_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(struct __pyx_memoryview_obj *__pyx_v_self) { + Py_ssize_t __pyx_v_length; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t *__pyx_t_2; + Py_ssize_t *__pyx_t_3; + Py_ssize_t *__pyx_t_4; + PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "View.MemoryView":564 + * @property + * def shape(self): + * return tuple([length for length in self.view.shape[:self.view.ndim]]) # <<<<<<<<<<<<<< + * + * @property + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 564, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim); + for (__pyx_t_4 = __pyx_v_self->view.shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) { + __pyx_t_2 = __pyx_t_4; + __pyx_v_length = (__pyx_t_2[0]); + __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 564, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 564, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 564, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "View.MemoryView":563 + * + * @property + * def shape(self): # <<<<<<<<<<<<<< + * return tuple([length for length in self.view.shape[:self.view.ndim]]) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("View.MemoryView.memoryview.shape.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":567 + * + * @property + * def strides(self): # <<<<<<<<<<<<<< + * if self.view.strides == NULL: + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_7strides_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_7strides_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(struct __pyx_memoryview_obj *__pyx_v_self) { + Py_ssize_t __pyx_v_stride; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + Py_ssize_t *__pyx_t_3; + Py_ssize_t *__pyx_t_4; + Py_ssize_t *__pyx_t_5; + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "View.MemoryView":568 + * @property + * def strides(self): + * if self.view.strides == NULL: # <<<<<<<<<<<<<< + * + * raise ValueError("Buffer view does not expose strides") + */ + __pyx_t_1 = ((__pyx_v_self->view.strides == NULL) != 0); + if (unlikely(__pyx_t_1)) { + + /* "View.MemoryView":570 + * if self.view.strides == NULL: + * + * raise ValueError("Buffer view does not expose strides") # <<<<<<<<<<<<<< + * + * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) + */ + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 570, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __PYX_ERR(1, 570, __pyx_L1_error) + + /* "View.MemoryView":568 + * @property + * def strides(self): + * if self.view.strides == NULL: # <<<<<<<<<<<<<< + * + * raise ValueError("Buffer view does not expose strides") + */ + } + + /* "View.MemoryView":572 + * raise ValueError("Buffer view does not expose strides") + * + * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) # <<<<<<<<<<<<<< + * + * @property + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 572, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = (__pyx_v_self->view.strides + __pyx_v_self->view.ndim); + for (__pyx_t_5 = __pyx_v_self->view.strides; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) { + __pyx_t_3 = __pyx_t_5; + __pyx_v_stride = (__pyx_t_3[0]); + __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_stride); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 572, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(1, 572, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 572, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_6; + __pyx_t_6 = 0; + goto __pyx_L0; + + /* "View.MemoryView":567 + * + * @property + * def strides(self): # <<<<<<<<<<<<<< + * if self.view.strides == NULL: + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("View.MemoryView.memoryview.strides.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":575 + * + * @property + * def suboffsets(self): # <<<<<<<<<<<<<< + * if self.view.suboffsets == NULL: + * return (-1,) * self.view.ndim + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_10suboffsets_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_10suboffsets_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(struct __pyx_memoryview_obj *__pyx_v_self) { + Py_ssize_t __pyx_v_suboffset; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + Py_ssize_t *__pyx_t_4; + Py_ssize_t *__pyx_t_5; + Py_ssize_t *__pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "View.MemoryView":576 + * @property + * def suboffsets(self): + * if self.view.suboffsets == NULL: # <<<<<<<<<<<<<< + * return (-1,) * self.view.ndim + * + */ + __pyx_t_1 = ((__pyx_v_self->view.suboffsets == NULL) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":577 + * def suboffsets(self): + * if self.view.suboffsets == NULL: + * return (-1,) * self.view.ndim # <<<<<<<<<<<<<< + * + * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 577, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__20, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 577, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "View.MemoryView":576 + * @property + * def suboffsets(self): + * if self.view.suboffsets == NULL: # <<<<<<<<<<<<<< + * return (-1,) * self.view.ndim + * + */ + } + + /* "View.MemoryView":579 + * return (-1,) * self.view.ndim + * + * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) # <<<<<<<<<<<<<< + * + * @property + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 579, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = (__pyx_v_self->view.suboffsets + __pyx_v_self->view.ndim); + for (__pyx_t_6 = __pyx_v_self->view.suboffsets; __pyx_t_6 < __pyx_t_5; __pyx_t_6++) { + __pyx_t_4 = __pyx_t_6; + __pyx_v_suboffset = (__pyx_t_4[0]); + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_suboffset); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 579, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_2))) __PYX_ERR(1, 579, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_t_2 = PyList_AsTuple(((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 579, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "View.MemoryView":575 + * + * @property + * def suboffsets(self): # <<<<<<<<<<<<<< + * if self.view.suboffsets == NULL: + * return (-1,) * self.view.ndim + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("View.MemoryView.memoryview.suboffsets.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":582 + * + * @property + * def ndim(self): # <<<<<<<<<<<<<< + * return self.view.ndim + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4ndim_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4ndim_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struct __pyx_memoryview_obj *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "View.MemoryView":583 + * @property + * def ndim(self): + * return self.view.ndim # <<<<<<<<<<<<<< + * + * @property + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 583, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "View.MemoryView":582 + * + * @property + * def ndim(self): # <<<<<<<<<<<<<< + * return self.view.ndim + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("View.MemoryView.memoryview.ndim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":586 + * + * @property + * def itemsize(self): # <<<<<<<<<<<<<< + * return self.view.itemsize + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_8itemsize_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_8itemsize_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(struct __pyx_memoryview_obj *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "View.MemoryView":587 + * @property + * def itemsize(self): + * return self.view.itemsize # <<<<<<<<<<<<<< + * + * @property + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 587, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "View.MemoryView":586 + * + * @property + * def itemsize(self): # <<<<<<<<<<<<<< + * return self.view.itemsize + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("View.MemoryView.memoryview.itemsize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":590 + * + * @property + * def nbytes(self): # <<<<<<<<<<<<<< + * return self.size * self.view.itemsize + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_6nbytes_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_6nbytes_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(struct __pyx_memoryview_obj *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "View.MemoryView":591 + * @property + * def nbytes(self): + * return self.size * self.view.itemsize # <<<<<<<<<<<<<< + * + * @property + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 591, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 591, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 591, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "View.MemoryView":590 + * + * @property + * def nbytes(self): # <<<<<<<<<<<<<< + * return self.size * self.view.itemsize + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("View.MemoryView.memoryview.nbytes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":594 + * + * @property + * def size(self): # <<<<<<<<<<<<<< + * if self._size is None: + * result = 1 + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4size_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4size_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struct __pyx_memoryview_obj *__pyx_v_self) { + PyObject *__pyx_v_result = NULL; + PyObject *__pyx_v_length = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + Py_ssize_t *__pyx_t_3; + Py_ssize_t *__pyx_t_4; + Py_ssize_t *__pyx_t_5; + PyObject *__pyx_t_6 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "View.MemoryView":595 + * @property + * def size(self): + * if self._size is None: # <<<<<<<<<<<<<< + * result = 1 + * + */ + __pyx_t_1 = (__pyx_v_self->_size == Py_None); + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":596 + * def size(self): + * if self._size is None: + * result = 1 # <<<<<<<<<<<<<< + * + * for length in self.view.shape[:self.view.ndim]: + */ + __Pyx_INCREF(__pyx_int_1); + __pyx_v_result = __pyx_int_1; + + /* "View.MemoryView":598 + * result = 1 + * + * for length in self.view.shape[:self.view.ndim]: # <<<<<<<<<<<<<< + * result *= length + * + */ + __pyx_t_4 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim); + for (__pyx_t_5 = __pyx_v_self->view.shape; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) { + __pyx_t_3 = __pyx_t_5; + __pyx_t_6 = PyInt_FromSsize_t((__pyx_t_3[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 598, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_6); + __pyx_t_6 = 0; + + /* "View.MemoryView":599 + * + * for length in self.view.shape[:self.view.ndim]: + * result *= length # <<<<<<<<<<<<<< + * + * self._size = result + */ + __pyx_t_6 = PyNumber_InPlaceMultiply(__pyx_v_result, __pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 599, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_6); + __pyx_t_6 = 0; + } + + /* "View.MemoryView":601 + * result *= length + * + * self._size = result # <<<<<<<<<<<<<< + * + * return self._size + */ + __Pyx_INCREF(__pyx_v_result); + __Pyx_GIVEREF(__pyx_v_result); + __Pyx_GOTREF(__pyx_v_self->_size); + __Pyx_DECREF(__pyx_v_self->_size); + __pyx_v_self->_size = __pyx_v_result; + + /* "View.MemoryView":595 + * @property + * def size(self): + * if self._size is None: # <<<<<<<<<<<<<< + * result = 1 + * + */ + } + + /* "View.MemoryView":603 + * self._size = result + * + * return self._size # <<<<<<<<<<<<<< + * + * def __len__(self): + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->_size); + __pyx_r = __pyx_v_self->_size; + goto __pyx_L0; + + /* "View.MemoryView":594 + * + * @property + * def size(self): # <<<<<<<<<<<<<< + * if self._size is None: + * result = 1 + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("View.MemoryView.memoryview.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_result); + __Pyx_XDECREF(__pyx_v_length); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":605 + * return self._size + * + * def __len__(self): # <<<<<<<<<<<<<< + * if self.view.ndim >= 1: + * return self.view.shape[0] + */ + +/* Python wrapper */ +static Py_ssize_t __pyx_memoryview___len__(PyObject *__pyx_v_self); /*proto*/ +static Py_ssize_t __pyx_memoryview___len__(PyObject *__pyx_v_self) { + Py_ssize_t __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); + __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(struct __pyx_memoryview_obj *__pyx_v_self) { + Py_ssize_t __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + __Pyx_RefNannySetupContext("__len__", 0); + + /* "View.MemoryView":606 + * + * def __len__(self): + * if self.view.ndim >= 1: # <<<<<<<<<<<<<< + * return self.view.shape[0] + * + */ + __pyx_t_1 = ((__pyx_v_self->view.ndim >= 1) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":607 + * def __len__(self): + * if self.view.ndim >= 1: + * return self.view.shape[0] # <<<<<<<<<<<<<< + * + * return 0 + */ + __pyx_r = (__pyx_v_self->view.shape[0]); + goto __pyx_L0; + + /* "View.MemoryView":606 + * + * def __len__(self): + * if self.view.ndim >= 1: # <<<<<<<<<<<<<< + * return self.view.shape[0] + * + */ + } + + /* "View.MemoryView":609 + * return self.view.shape[0] + * + * return 0 # <<<<<<<<<<<<<< + * + * def __repr__(self): + */ + __pyx_r = 0; + goto __pyx_L0; + + /* "View.MemoryView":605 + * return self._size + * + * def __len__(self): # <<<<<<<<<<<<<< + * if self.view.ndim >= 1: + * return self.view.shape[0] + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":611 + * return 0 + * + * def __repr__(self): # <<<<<<<<<<<<<< + * return "" % (self.base.__class__.__name__, + * id(self)) + */ + +/* Python wrapper */ +static PyObject *__pyx_memoryview___repr__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_memoryview___repr__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); + __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(struct __pyx_memoryview_obj *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__repr__", 0); + + /* "View.MemoryView":612 + * + * def __repr__(self): + * return "" % (self.base.__class__.__name__, # <<<<<<<<<<<<<< + * id(self)) + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 612, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 612, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 612, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "View.MemoryView":613 + * def __repr__(self): + * return "" % (self.base.__class__.__name__, + * id(self)) # <<<<<<<<<<<<<< + * + * def __str__(self): + */ + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 613, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + + /* "View.MemoryView":612 + * + * def __repr__(self): + * return "" % (self.base.__class__.__name__, # <<<<<<<<<<<<<< + * id(self)) + * + */ + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 612, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 612, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "View.MemoryView":611 + * return 0 + * + * def __repr__(self): # <<<<<<<<<<<<<< + * return "" % (self.base.__class__.__name__, + * id(self)) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("View.MemoryView.memoryview.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":615 + * id(self)) + * + * def __str__(self): # <<<<<<<<<<<<<< + * return "" % (self.base.__class__.__name__,) + * + */ + +/* Python wrapper */ +static PyObject *__pyx_memoryview___str__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_memoryview___str__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); + __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(struct __pyx_memoryview_obj *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__str__", 0); + + /* "View.MemoryView":616 + * + * def __str__(self): + * return "" % (self.base.__class__.__name__,) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 616, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 616, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 616, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 616, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_object, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 616, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "View.MemoryView":615 + * id(self)) + * + * def __str__(self): # <<<<<<<<<<<<<< + * return "" % (self.base.__class__.__name__,) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("View.MemoryView.memoryview.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":619 + * + * + * def is_c_contig(self): # <<<<<<<<<<<<<< + * cdef __Pyx_memviewslice *mslice + * cdef __Pyx_memviewslice tmp + */ + +/* Python wrapper */ +static PyObject *__pyx_memoryview_is_c_contig(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_memoryview_is_c_contig(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("is_c_contig (wrapper)", 0); + __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(((struct __pyx_memoryview_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(struct __pyx_memoryview_obj *__pyx_v_self) { + __Pyx_memviewslice *__pyx_v_mslice; + __Pyx_memviewslice __pyx_v_tmp; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_memviewslice *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("is_c_contig", 0); + + /* "View.MemoryView":622 + * cdef __Pyx_memviewslice *mslice + * cdef __Pyx_memviewslice tmp + * mslice = get_slice_from_memview(self, &tmp) # <<<<<<<<<<<<<< + * return slice_is_contig(mslice[0], 'C', self.view.ndim) + * + */ + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 622, __pyx_L1_error) + __pyx_v_mslice = __pyx_t_1; + + /* "View.MemoryView":623 + * cdef __Pyx_memviewslice tmp + * mslice = get_slice_from_memview(self, &tmp) + * return slice_is_contig(mslice[0], 'C', self.view.ndim) # <<<<<<<<<<<<<< + * + * def is_f_contig(self): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'C', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 623, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "View.MemoryView":619 + * + * + * def is_c_contig(self): # <<<<<<<<<<<<<< + * cdef __Pyx_memviewslice *mslice + * cdef __Pyx_memviewslice tmp + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("View.MemoryView.memoryview.is_c_contig", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":625 + * return slice_is_contig(mslice[0], 'C', self.view.ndim) + * + * def is_f_contig(self): # <<<<<<<<<<<<<< + * cdef __Pyx_memviewslice *mslice + * cdef __Pyx_memviewslice tmp + */ + +/* Python wrapper */ +static PyObject *__pyx_memoryview_is_f_contig(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_memoryview_is_f_contig(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("is_f_contig (wrapper)", 0); + __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(((struct __pyx_memoryview_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(struct __pyx_memoryview_obj *__pyx_v_self) { + __Pyx_memviewslice *__pyx_v_mslice; + __Pyx_memviewslice __pyx_v_tmp; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_memviewslice *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("is_f_contig", 0); + + /* "View.MemoryView":628 + * cdef __Pyx_memviewslice *mslice + * cdef __Pyx_memviewslice tmp + * mslice = get_slice_from_memview(self, &tmp) # <<<<<<<<<<<<<< + * return slice_is_contig(mslice[0], 'F', self.view.ndim) + * + */ + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 628, __pyx_L1_error) + __pyx_v_mslice = __pyx_t_1; + + /* "View.MemoryView":629 + * cdef __Pyx_memviewslice tmp + * mslice = get_slice_from_memview(self, &tmp) + * return slice_is_contig(mslice[0], 'F', self.view.ndim) # <<<<<<<<<<<<<< + * + * def copy(self): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'F', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 629, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "View.MemoryView":625 + * return slice_is_contig(mslice[0], 'C', self.view.ndim) + * + * def is_f_contig(self): # <<<<<<<<<<<<<< + * cdef __Pyx_memviewslice *mslice + * cdef __Pyx_memviewslice tmp + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("View.MemoryView.memoryview.is_f_contig", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":631 + * return slice_is_contig(mslice[0], 'F', self.view.ndim) + * + * def copy(self): # <<<<<<<<<<<<<< + * cdef __Pyx_memviewslice mslice + * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS + */ + +/* Python wrapper */ +static PyObject *__pyx_memoryview_copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_memoryview_copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("copy (wrapper)", 0); + __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(((struct __pyx_memoryview_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(struct __pyx_memoryview_obj *__pyx_v_self) { + __Pyx_memviewslice __pyx_v_mslice; + int __pyx_v_flags; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_memviewslice __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("copy", 0); + + /* "View.MemoryView":633 + * def copy(self): + * cdef __Pyx_memviewslice mslice + * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS # <<<<<<<<<<<<<< + * + * slice_copy(self, &mslice) + */ + __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_F_CONTIGUOUS)); + + /* "View.MemoryView":635 + * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS + * + * slice_copy(self, &mslice) # <<<<<<<<<<<<<< + * mslice = slice_copy_contig(&mslice, "c", self.view.ndim, + * self.view.itemsize, + */ + __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_mslice)); + + /* "View.MemoryView":636 + * + * slice_copy(self, &mslice) + * mslice = slice_copy_contig(&mslice, "c", self.view.ndim, # <<<<<<<<<<<<<< + * self.view.itemsize, + * flags|PyBUF_C_CONTIGUOUS, + */ + __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_mslice), ((char *)"c"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_C_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 636, __pyx_L1_error) + __pyx_v_mslice = __pyx_t_1; + + /* "View.MemoryView":641 + * self.dtype_is_object) + * + * return memoryview_copy_from_slice(self, &mslice) # <<<<<<<<<<<<<< + * + * def copy_fortran(self): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_mslice)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 641, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "View.MemoryView":631 + * return slice_is_contig(mslice[0], 'F', self.view.ndim) + * + * def copy(self): # <<<<<<<<<<<<<< + * cdef __Pyx_memviewslice mslice + * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("View.MemoryView.memoryview.copy", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":643 + * return memoryview_copy_from_slice(self, &mslice) + * + * def copy_fortran(self): # <<<<<<<<<<<<<< + * cdef __Pyx_memviewslice src, dst + * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS + */ + +/* Python wrapper */ +static PyObject *__pyx_memoryview_copy_fortran(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_memoryview_copy_fortran(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("copy_fortran (wrapper)", 0); + __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(((struct __pyx_memoryview_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(struct __pyx_memoryview_obj *__pyx_v_self) { + __Pyx_memviewslice __pyx_v_src; + __Pyx_memviewslice __pyx_v_dst; + int __pyx_v_flags; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_memviewslice __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("copy_fortran", 0); + + /* "View.MemoryView":645 + * def copy_fortran(self): + * cdef __Pyx_memviewslice src, dst + * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS # <<<<<<<<<<<<<< + * + * slice_copy(self, &src) + */ + __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_C_CONTIGUOUS)); + + /* "View.MemoryView":647 + * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS + * + * slice_copy(self, &src) # <<<<<<<<<<<<<< + * dst = slice_copy_contig(&src, "fortran", self.view.ndim, + * self.view.itemsize, + */ + __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_src)); + + /* "View.MemoryView":648 + * + * slice_copy(self, &src) + * dst = slice_copy_contig(&src, "fortran", self.view.ndim, # <<<<<<<<<<<<<< + * self.view.itemsize, + * flags|PyBUF_F_CONTIGUOUS, + */ + __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_src), ((char *)"fortran"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_F_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 648, __pyx_L1_error) + __pyx_v_dst = __pyx_t_1; + + /* "View.MemoryView":653 + * self.dtype_is_object) + * + * return memoryview_copy_from_slice(self, &dst) # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_dst)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 653, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "View.MemoryView":643 + * return memoryview_copy_from_slice(self, &mslice) + * + * def copy_fortran(self): # <<<<<<<<<<<<<< + * cdef __Pyx_memviewslice src, dst + * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("View.MemoryView.memoryview.copy_fortran", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw___pyx_memoryview_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw___pyx_memoryview_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf___pyx_memoryview___reduce_cython__(((struct __pyx_memoryview_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("View.MemoryView.memoryview.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + +/* Python wrapper */ +static PyObject *__pyx_pw___pyx_memoryview_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +static PyObject *__pyx_pw___pyx_memoryview_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf___pyx_memoryview_2__setstate_cython__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("View.MemoryView.memoryview.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":657 + * + * @cname('__pyx_memoryview_new') + * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): # <<<<<<<<<<<<<< + * cdef memoryview result = memoryview(o, flags, dtype_is_object) + * result.typeinfo = typeinfo + */ + +static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, int __pyx_v_dtype_is_object, __Pyx_TypeInfo *__pyx_v_typeinfo) { + struct __pyx_memoryview_obj *__pyx_v_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("memoryview_cwrapper", 0); + + /* "View.MemoryView":658 + * @cname('__pyx_memoryview_new') + * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): + * cdef memoryview result = memoryview(o, flags, dtype_is_object) # <<<<<<<<<<<<<< + * result.typeinfo = typeinfo + * return result + */ + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 658, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 658, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 658, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_v_o); + __Pyx_GIVEREF(__pyx_v_o); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_o); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 658, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_result = ((struct __pyx_memoryview_obj *)__pyx_t_2); + __pyx_t_2 = 0; + + /* "View.MemoryView":659 + * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): + * cdef memoryview result = memoryview(o, flags, dtype_is_object) + * result.typeinfo = typeinfo # <<<<<<<<<<<<<< + * return result + * + */ + __pyx_v_result->typeinfo = __pyx_v_typeinfo; + + /* "View.MemoryView":660 + * cdef memoryview result = memoryview(o, flags, dtype_is_object) + * result.typeinfo = typeinfo + * return result # <<<<<<<<<<<<<< + * + * @cname('__pyx_memoryview_check') + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(((PyObject *)__pyx_v_result)); + __pyx_r = ((PyObject *)__pyx_v_result); + goto __pyx_L0; + + /* "View.MemoryView":657 + * + * @cname('__pyx_memoryview_new') + * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): # <<<<<<<<<<<<<< + * cdef memoryview result = memoryview(o, flags, dtype_is_object) + * result.typeinfo = typeinfo + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("View.MemoryView.memoryview_cwrapper", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":663 + * + * @cname('__pyx_memoryview_check') + * cdef inline bint memoryview_check(object o): # <<<<<<<<<<<<<< + * return isinstance(o, memoryview) + * + */ + +static CYTHON_INLINE int __pyx_memoryview_check(PyObject *__pyx_v_o) { + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + __Pyx_RefNannySetupContext("memoryview_check", 0); + + /* "View.MemoryView":664 + * @cname('__pyx_memoryview_check') + * cdef inline bint memoryview_check(object o): + * return isinstance(o, memoryview) # <<<<<<<<<<<<<< + * + * cdef tuple _unellipsify(object index, int ndim): + */ + __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_o, __pyx_memoryview_type); + __pyx_r = __pyx_t_1; + goto __pyx_L0; + + /* "View.MemoryView":663 + * + * @cname('__pyx_memoryview_check') + * cdef inline bint memoryview_check(object o): # <<<<<<<<<<<<<< + * return isinstance(o, memoryview) + * + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":666 + * return isinstance(o, memoryview) + * + * cdef tuple _unellipsify(object index, int ndim): # <<<<<<<<<<<<<< + * """ + * Replace all ellipses with full slices and fill incomplete indices with + */ + +static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { + PyObject *__pyx_v_tup = NULL; + PyObject *__pyx_v_result = NULL; + int __pyx_v_have_slices; + int __pyx_v_seen_ellipsis; + CYTHON_UNUSED PyObject *__pyx_v_idx = NULL; + PyObject *__pyx_v_item = NULL; + Py_ssize_t __pyx_v_nslices; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + Py_ssize_t __pyx_t_5; + PyObject *(*__pyx_t_6)(PyObject *); + PyObject *__pyx_t_7 = NULL; + Py_ssize_t __pyx_t_8; + int __pyx_t_9; + int __pyx_t_10; + PyObject *__pyx_t_11 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_unellipsify", 0); + + /* "View.MemoryView":671 + * full slices. + * """ + * if not isinstance(index, tuple): # <<<<<<<<<<<<<< + * tup = (index,) + * else: + */ + __pyx_t_1 = PyTuple_Check(__pyx_v_index); + __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":672 + * """ + * if not isinstance(index, tuple): + * tup = (index,) # <<<<<<<<<<<<<< + * else: + * tup = index + */ + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 672, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_v_index); + __Pyx_GIVEREF(__pyx_v_index); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_index); + __pyx_v_tup = __pyx_t_3; + __pyx_t_3 = 0; + + /* "View.MemoryView":671 + * full slices. + * """ + * if not isinstance(index, tuple): # <<<<<<<<<<<<<< + * tup = (index,) + * else: + */ + goto __pyx_L3; + } + + /* "View.MemoryView":674 + * tup = (index,) + * else: + * tup = index # <<<<<<<<<<<<<< + * + * result = [] + */ + /*else*/ { + __Pyx_INCREF(__pyx_v_index); + __pyx_v_tup = __pyx_v_index; + } + __pyx_L3:; + + /* "View.MemoryView":676 + * tup = index + * + * result = [] # <<<<<<<<<<<<<< + * have_slices = False + * seen_ellipsis = False + */ + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 676, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_result = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "View.MemoryView":677 + * + * result = [] + * have_slices = False # <<<<<<<<<<<<<< + * seen_ellipsis = False + * for idx, item in enumerate(tup): + */ + __pyx_v_have_slices = 0; + + /* "View.MemoryView":678 + * result = [] + * have_slices = False + * seen_ellipsis = False # <<<<<<<<<<<<<< + * for idx, item in enumerate(tup): + * if item is Ellipsis: + */ + __pyx_v_seen_ellipsis = 0; + + /* "View.MemoryView":679 + * have_slices = False + * seen_ellipsis = False + * for idx, item in enumerate(tup): # <<<<<<<<<<<<<< + * if item is Ellipsis: + * if not seen_ellipsis: + */ + __Pyx_INCREF(__pyx_int_0); + __pyx_t_3 = __pyx_int_0; + if (likely(PyList_CheckExact(__pyx_v_tup)) || PyTuple_CheckExact(__pyx_v_tup)) { + __pyx_t_4 = __pyx_v_tup; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; + __pyx_t_6 = NULL; + } else { + __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_tup); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 679, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 679, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_6)) { + if (likely(PyList_CheckExact(__pyx_t_4))) { + if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 679, __pyx_L1_error) + #else + __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 679, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + #endif + } else { + if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 679, __pyx_L1_error) + #else + __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 679, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + #endif + } + } else { + __pyx_t_7 = __pyx_t_6(__pyx_t_4); + if (unlikely(!__pyx_t_7)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(1, 679, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_7); + } + __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_7); + __pyx_t_7 = 0; + __Pyx_INCREF(__pyx_t_3); + __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_3); + __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 679, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_3); + __pyx_t_3 = __pyx_t_7; + __pyx_t_7 = 0; + + /* "View.MemoryView":680 + * seen_ellipsis = False + * for idx, item in enumerate(tup): + * if item is Ellipsis: # <<<<<<<<<<<<<< + * if not seen_ellipsis: + * result.extend([slice(None)] * (ndim - len(tup) + 1)) + */ + __pyx_t_2 = (__pyx_v_item == __pyx_builtin_Ellipsis); + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":681 + * for idx, item in enumerate(tup): + * if item is Ellipsis: + * if not seen_ellipsis: # <<<<<<<<<<<<<< + * result.extend([slice(None)] * (ndim - len(tup) + 1)) + * seen_ellipsis = True + */ + __pyx_t_1 = ((!(__pyx_v_seen_ellipsis != 0)) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":682 + * if item is Ellipsis: + * if not seen_ellipsis: + * result.extend([slice(None)] * (ndim - len(tup) + 1)) # <<<<<<<<<<<<<< + * seen_ellipsis = True + * else: + */ + __pyx_t_8 = PyObject_Length(__pyx_v_tup); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(1, 682, __pyx_L1_error) + __pyx_t_7 = PyList_New(1 * ((((__pyx_v_ndim - __pyx_t_8) + 1)<0) ? 0:((__pyx_v_ndim - __pyx_t_8) + 1))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 682, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + { Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) { + __Pyx_INCREF(__pyx_slice__23); + __Pyx_GIVEREF(__pyx_slice__23); + PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__23); + } + } + __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 682, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "View.MemoryView":683 + * if not seen_ellipsis: + * result.extend([slice(None)] * (ndim - len(tup) + 1)) + * seen_ellipsis = True # <<<<<<<<<<<<<< + * else: + * result.append(slice(None)) + */ + __pyx_v_seen_ellipsis = 1; + + /* "View.MemoryView":681 + * for idx, item in enumerate(tup): + * if item is Ellipsis: + * if not seen_ellipsis: # <<<<<<<<<<<<<< + * result.extend([slice(None)] * (ndim - len(tup) + 1)) + * seen_ellipsis = True + */ + goto __pyx_L7; + } + + /* "View.MemoryView":685 + * seen_ellipsis = True + * else: + * result.append(slice(None)) # <<<<<<<<<<<<<< + * have_slices = True + * else: + */ + /*else*/ { + __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__23); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 685, __pyx_L1_error) + } + __pyx_L7:; + + /* "View.MemoryView":686 + * else: + * result.append(slice(None)) + * have_slices = True # <<<<<<<<<<<<<< + * else: + * if not isinstance(item, slice) and not PyIndex_Check(item): + */ + __pyx_v_have_slices = 1; + + /* "View.MemoryView":680 + * seen_ellipsis = False + * for idx, item in enumerate(tup): + * if item is Ellipsis: # <<<<<<<<<<<<<< + * if not seen_ellipsis: + * result.extend([slice(None)] * (ndim - len(tup) + 1)) + */ + goto __pyx_L6; + } + + /* "View.MemoryView":688 + * have_slices = True + * else: + * if not isinstance(item, slice) and not PyIndex_Check(item): # <<<<<<<<<<<<<< + * raise TypeError("Cannot index with type '%s'" % type(item)) + * + */ + /*else*/ { + __pyx_t_2 = PySlice_Check(__pyx_v_item); + __pyx_t_10 = ((!(__pyx_t_2 != 0)) != 0); + if (__pyx_t_10) { + } else { + __pyx_t_1 = __pyx_t_10; + goto __pyx_L9_bool_binop_done; + } + __pyx_t_10 = ((!(PyIndex_Check(__pyx_v_item) != 0)) != 0); + __pyx_t_1 = __pyx_t_10; + __pyx_L9_bool_binop_done:; + if (unlikely(__pyx_t_1)) { + + /* "View.MemoryView":689 + * else: + * if not isinstance(item, slice) and not PyIndex_Check(item): + * raise TypeError("Cannot index with type '%s'" % type(item)) # <<<<<<<<<<<<<< + * + * have_slices = have_slices or isinstance(item, slice) + */ + __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 689, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 689, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_Raise(__pyx_t_11, 0, 0, 0); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __PYX_ERR(1, 689, __pyx_L1_error) + + /* "View.MemoryView":688 + * have_slices = True + * else: + * if not isinstance(item, slice) and not PyIndex_Check(item): # <<<<<<<<<<<<<< + * raise TypeError("Cannot index with type '%s'" % type(item)) + * + */ + } + + /* "View.MemoryView":691 + * raise TypeError("Cannot index with type '%s'" % type(item)) + * + * have_slices = have_slices or isinstance(item, slice) # <<<<<<<<<<<<<< + * result.append(item) + * + */ + __pyx_t_10 = (__pyx_v_have_slices != 0); + if (!__pyx_t_10) { + } else { + __pyx_t_1 = __pyx_t_10; + goto __pyx_L11_bool_binop_done; + } + __pyx_t_10 = PySlice_Check(__pyx_v_item); + __pyx_t_2 = (__pyx_t_10 != 0); + __pyx_t_1 = __pyx_t_2; + __pyx_L11_bool_binop_done:; + __pyx_v_have_slices = __pyx_t_1; + + /* "View.MemoryView":692 + * + * have_slices = have_slices or isinstance(item, slice) + * result.append(item) # <<<<<<<<<<<<<< + * + * nslices = ndim - len(result) + */ + __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_item); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 692, __pyx_L1_error) + } + __pyx_L6:; + + /* "View.MemoryView":679 + * have_slices = False + * seen_ellipsis = False + * for idx, item in enumerate(tup): # <<<<<<<<<<<<<< + * if item is Ellipsis: + * if not seen_ellipsis: + */ + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "View.MemoryView":694 + * result.append(item) + * + * nslices = ndim - len(result) # <<<<<<<<<<<<<< + * if nslices: + * result.extend([slice(None)] * nslices) + */ + __pyx_t_5 = PyList_GET_SIZE(__pyx_v_result); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 694, __pyx_L1_error) + __pyx_v_nslices = (__pyx_v_ndim - __pyx_t_5); + + /* "View.MemoryView":695 + * + * nslices = ndim - len(result) + * if nslices: # <<<<<<<<<<<<<< + * result.extend([slice(None)] * nslices) + * + */ + __pyx_t_1 = (__pyx_v_nslices != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":696 + * nslices = ndim - len(result) + * if nslices: + * result.extend([slice(None)] * nslices) # <<<<<<<<<<<<<< + * + * return have_slices or nslices, tuple(result) + */ + __pyx_t_3 = PyList_New(1 * ((__pyx_v_nslices<0) ? 0:__pyx_v_nslices)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 696, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + { Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) { + __Pyx_INCREF(__pyx_slice__23); + __Pyx_GIVEREF(__pyx_slice__23); + PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__23); + } + } + __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 696, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "View.MemoryView":695 + * + * nslices = ndim - len(result) + * if nslices: # <<<<<<<<<<<<<< + * result.extend([slice(None)] * nslices) + * + */ + } + + /* "View.MemoryView":698 + * result.extend([slice(None)] * nslices) + * + * return have_slices or nslices, tuple(result) # <<<<<<<<<<<<<< + * + * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): + */ + __Pyx_XDECREF(__pyx_r); + if (!__pyx_v_have_slices) { + } else { + __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_have_slices); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 698, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L14_bool_binop_done; + } + __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_nslices); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 698, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __pyx_t_4; + __pyx_t_4 = 0; + __pyx_L14_bool_binop_done:; + __pyx_t_4 = PyList_AsTuple(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 698, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 698, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4); + __pyx_t_3 = 0; + __pyx_t_4 = 0; + __pyx_r = ((PyObject*)__pyx_t_11); + __pyx_t_11 = 0; + goto __pyx_L0; + + /* "View.MemoryView":666 + * return isinstance(o, memoryview) + * + * cdef tuple _unellipsify(object index, int ndim): # <<<<<<<<<<<<<< + * """ + * Replace all ellipses with full slices and fill incomplete indices with + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_AddTraceback("View.MemoryView._unellipsify", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_tup); + __Pyx_XDECREF(__pyx_v_result); + __Pyx_XDECREF(__pyx_v_idx); + __Pyx_XDECREF(__pyx_v_item); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":700 + * return have_slices or nslices, tuple(result) + * + * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): # <<<<<<<<<<<<<< + * for suboffset in suboffsets[:ndim]: + * if suboffset >= 0: + */ + +static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __pyx_v_ndim) { + Py_ssize_t __pyx_v_suboffset; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + Py_ssize_t *__pyx_t_1; + Py_ssize_t *__pyx_t_2; + Py_ssize_t *__pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("assert_direct_dimensions", 0); + + /* "View.MemoryView":701 + * + * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): + * for suboffset in suboffsets[:ndim]: # <<<<<<<<<<<<<< + * if suboffset >= 0: + * raise ValueError("Indirect dimensions not supported") + */ + __pyx_t_2 = (__pyx_v_suboffsets + __pyx_v_ndim); + for (__pyx_t_3 = __pyx_v_suboffsets; __pyx_t_3 < __pyx_t_2; __pyx_t_3++) { + __pyx_t_1 = __pyx_t_3; + __pyx_v_suboffset = (__pyx_t_1[0]); + + /* "View.MemoryView":702 + * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): + * for suboffset in suboffsets[:ndim]: + * if suboffset >= 0: # <<<<<<<<<<<<<< + * raise ValueError("Indirect dimensions not supported") + * + */ + __pyx_t_4 = ((__pyx_v_suboffset >= 0) != 0); + if (unlikely(__pyx_t_4)) { + + /* "View.MemoryView":703 + * for suboffset in suboffsets[:ndim]: + * if suboffset >= 0: + * raise ValueError("Indirect dimensions not supported") # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 703, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_Raise(__pyx_t_5, 0, 0, 0); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __PYX_ERR(1, 703, __pyx_L1_error) + + /* "View.MemoryView":702 + * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): + * for suboffset in suboffsets[:ndim]: + * if suboffset >= 0: # <<<<<<<<<<<<<< + * raise ValueError("Indirect dimensions not supported") + * + */ + } + } + + /* "View.MemoryView":700 + * return have_slices or nslices, tuple(result) + * + * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): # <<<<<<<<<<<<<< + * for suboffset in suboffsets[:ndim]: + * if suboffset >= 0: + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("View.MemoryView.assert_direct_dimensions", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":710 + * + * @cname('__pyx_memview_slice') + * cdef memoryview memview_slice(memoryview memview, object indices): # <<<<<<<<<<<<<< + * cdef int new_ndim = 0, suboffset_dim = -1, dim + * cdef bint negative_step + */ + +static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_obj *__pyx_v_memview, PyObject *__pyx_v_indices) { + int __pyx_v_new_ndim; + int __pyx_v_suboffset_dim; + int __pyx_v_dim; + __Pyx_memviewslice __pyx_v_src; + __Pyx_memviewslice __pyx_v_dst; + __Pyx_memviewslice *__pyx_v_p_src; + struct __pyx_memoryviewslice_obj *__pyx_v_memviewsliceobj = 0; + __Pyx_memviewslice *__pyx_v_p_dst; + int *__pyx_v_p_suboffset_dim; + Py_ssize_t __pyx_v_start; + Py_ssize_t __pyx_v_stop; + Py_ssize_t __pyx_v_step; + int __pyx_v_have_start; + int __pyx_v_have_stop; + int __pyx_v_have_step; + PyObject *__pyx_v_index = NULL; + struct __pyx_memoryview_obj *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + struct __pyx_memoryview_obj *__pyx_t_4; + char *__pyx_t_5; + int __pyx_t_6; + Py_ssize_t __pyx_t_7; + PyObject *(*__pyx_t_8)(PyObject *); + PyObject *__pyx_t_9 = NULL; + Py_ssize_t __pyx_t_10; + int __pyx_t_11; + Py_ssize_t __pyx_t_12; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("memview_slice", 0); + + /* "View.MemoryView":711 + * @cname('__pyx_memview_slice') + * cdef memoryview memview_slice(memoryview memview, object indices): + * cdef int new_ndim = 0, suboffset_dim = -1, dim # <<<<<<<<<<<<<< + * cdef bint negative_step + * cdef __Pyx_memviewslice src, dst + */ + __pyx_v_new_ndim = 0; + __pyx_v_suboffset_dim = -1; + + /* "View.MemoryView":718 + * + * + * memset(&dst, 0, sizeof(dst)) # <<<<<<<<<<<<<< + * + * cdef _memoryviewslice memviewsliceobj + */ + (void)(memset((&__pyx_v_dst), 0, (sizeof(__pyx_v_dst)))); + + /* "View.MemoryView":722 + * cdef _memoryviewslice memviewsliceobj + * + * assert memview.view.ndim > 0 # <<<<<<<<<<<<<< + * + * if isinstance(memview, _memoryviewslice): + */ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(!Py_OptimizeFlag)) { + if (unlikely(!((__pyx_v_memview->view.ndim > 0) != 0))) { + PyErr_SetNone(PyExc_AssertionError); + __PYX_ERR(1, 722, __pyx_L1_error) + } + } + #endif + + /* "View.MemoryView":724 + * assert memview.view.ndim > 0 + * + * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< + * memviewsliceobj = memview + * p_src = &memviewsliceobj.from_slice + */ + __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":725 + * + * if isinstance(memview, _memoryviewslice): + * memviewsliceobj = memview # <<<<<<<<<<<<<< + * p_src = &memviewsliceobj.from_slice + * else: + */ + if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(1, 725, __pyx_L1_error) + __pyx_t_3 = ((PyObject *)__pyx_v_memview); + __Pyx_INCREF(__pyx_t_3); + __pyx_v_memviewsliceobj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "View.MemoryView":726 + * if isinstance(memview, _memoryviewslice): + * memviewsliceobj = memview + * p_src = &memviewsliceobj.from_slice # <<<<<<<<<<<<<< + * else: + * slice_copy(memview, &src) + */ + __pyx_v_p_src = (&__pyx_v_memviewsliceobj->from_slice); + + /* "View.MemoryView":724 + * assert memview.view.ndim > 0 + * + * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< + * memviewsliceobj = memview + * p_src = &memviewsliceobj.from_slice + */ + goto __pyx_L3; + } + + /* "View.MemoryView":728 + * p_src = &memviewsliceobj.from_slice + * else: + * slice_copy(memview, &src) # <<<<<<<<<<<<<< + * p_src = &src + * + */ + /*else*/ { + __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_src)); + + /* "View.MemoryView":729 + * else: + * slice_copy(memview, &src) + * p_src = &src # <<<<<<<<<<<<<< + * + * + */ + __pyx_v_p_src = (&__pyx_v_src); + } + __pyx_L3:; + + /* "View.MemoryView":735 + * + * + * dst.memview = p_src.memview # <<<<<<<<<<<<<< + * dst.data = p_src.data + * + */ + __pyx_t_4 = __pyx_v_p_src->memview; + __pyx_v_dst.memview = __pyx_t_4; + + /* "View.MemoryView":736 + * + * dst.memview = p_src.memview + * dst.data = p_src.data # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_5 = __pyx_v_p_src->data; + __pyx_v_dst.data = __pyx_t_5; + + /* "View.MemoryView":741 + * + * + * cdef __Pyx_memviewslice *p_dst = &dst # <<<<<<<<<<<<<< + * cdef int *p_suboffset_dim = &suboffset_dim + * cdef Py_ssize_t start, stop, step + */ + __pyx_v_p_dst = (&__pyx_v_dst); + + /* "View.MemoryView":742 + * + * cdef __Pyx_memviewslice *p_dst = &dst + * cdef int *p_suboffset_dim = &suboffset_dim # <<<<<<<<<<<<<< + * cdef Py_ssize_t start, stop, step + * cdef bint have_start, have_stop, have_step + */ + __pyx_v_p_suboffset_dim = (&__pyx_v_suboffset_dim); + + /* "View.MemoryView":746 + * cdef bint have_start, have_stop, have_step + * + * for dim, index in enumerate(indices): # <<<<<<<<<<<<<< + * if PyIndex_Check(index): + * slice_memviewslice( + */ + __pyx_t_6 = 0; + if (likely(PyList_CheckExact(__pyx_v_indices)) || PyTuple_CheckExact(__pyx_v_indices)) { + __pyx_t_3 = __pyx_v_indices; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0; + __pyx_t_8 = NULL; + } else { + __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_indices); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 746, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 746, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_8)) { + if (likely(PyList_CheckExact(__pyx_t_3))) { + if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_9 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(1, 746, __pyx_L1_error) + #else + __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 746, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + #endif + } else { + if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(1, 746, __pyx_L1_error) + #else + __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 746, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + #endif + } + } else { + __pyx_t_9 = __pyx_t_8(__pyx_t_3); + if (unlikely(!__pyx_t_9)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(1, 746, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_9); + } + __Pyx_XDECREF_SET(__pyx_v_index, __pyx_t_9); + __pyx_t_9 = 0; + __pyx_v_dim = __pyx_t_6; + __pyx_t_6 = (__pyx_t_6 + 1); + + /* "View.MemoryView":747 + * + * for dim, index in enumerate(indices): + * if PyIndex_Check(index): # <<<<<<<<<<<<<< + * slice_memviewslice( + * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], + */ + __pyx_t_2 = (PyIndex_Check(__pyx_v_index) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":751 + * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], + * dim, new_ndim, p_suboffset_dim, + * index, 0, 0, # start, stop, step # <<<<<<<<<<<<<< + * 0, 0, 0, # have_{start,stop,step} + * False) + */ + __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 751, __pyx_L1_error) + + /* "View.MemoryView":748 + * for dim, index in enumerate(indices): + * if PyIndex_Check(index): + * slice_memviewslice( # <<<<<<<<<<<<<< + * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], + * dim, new_ndim, p_suboffset_dim, + */ + __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_t_10, 0, 0, 0, 0, 0, 0); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 748, __pyx_L1_error) + + /* "View.MemoryView":747 + * + * for dim, index in enumerate(indices): + * if PyIndex_Check(index): # <<<<<<<<<<<<<< + * slice_memviewslice( + * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], + */ + goto __pyx_L6; + } + + /* "View.MemoryView":754 + * 0, 0, 0, # have_{start,stop,step} + * False) + * elif index is None: # <<<<<<<<<<<<<< + * p_dst.shape[new_ndim] = 1 + * p_dst.strides[new_ndim] = 0 + */ + __pyx_t_2 = (__pyx_v_index == Py_None); + __pyx_t_1 = (__pyx_t_2 != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":755 + * False) + * elif index is None: + * p_dst.shape[new_ndim] = 1 # <<<<<<<<<<<<<< + * p_dst.strides[new_ndim] = 0 + * p_dst.suboffsets[new_ndim] = -1 + */ + (__pyx_v_p_dst->shape[__pyx_v_new_ndim]) = 1; + + /* "View.MemoryView":756 + * elif index is None: + * p_dst.shape[new_ndim] = 1 + * p_dst.strides[new_ndim] = 0 # <<<<<<<<<<<<<< + * p_dst.suboffsets[new_ndim] = -1 + * new_ndim += 1 + */ + (__pyx_v_p_dst->strides[__pyx_v_new_ndim]) = 0; + + /* "View.MemoryView":757 + * p_dst.shape[new_ndim] = 1 + * p_dst.strides[new_ndim] = 0 + * p_dst.suboffsets[new_ndim] = -1 # <<<<<<<<<<<<<< + * new_ndim += 1 + * else: + */ + (__pyx_v_p_dst->suboffsets[__pyx_v_new_ndim]) = -1L; + + /* "View.MemoryView":758 + * p_dst.strides[new_ndim] = 0 + * p_dst.suboffsets[new_ndim] = -1 + * new_ndim += 1 # <<<<<<<<<<<<<< + * else: + * start = index.start or 0 + */ + __pyx_v_new_ndim = (__pyx_v_new_ndim + 1); + + /* "View.MemoryView":754 + * 0, 0, 0, # have_{start,stop,step} + * False) + * elif index is None: # <<<<<<<<<<<<<< + * p_dst.shape[new_ndim] = 1 + * p_dst.strides[new_ndim] = 0 + */ + goto __pyx_L6; + } + + /* "View.MemoryView":760 + * new_ndim += 1 + * else: + * start = index.start or 0 # <<<<<<<<<<<<<< + * stop = index.stop or 0 + * step = index.step or 0 + */ + /*else*/ { + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 760, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 760, __pyx_L1_error) + if (!__pyx_t_1) { + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } else { + __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 760, __pyx_L1_error) + __pyx_t_10 = __pyx_t_12; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + goto __pyx_L7_bool_binop_done; + } + __pyx_t_10 = 0; + __pyx_L7_bool_binop_done:; + __pyx_v_start = __pyx_t_10; + + /* "View.MemoryView":761 + * else: + * start = index.start or 0 + * stop = index.stop or 0 # <<<<<<<<<<<<<< + * step = index.step or 0 + * + */ + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 761, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 761, __pyx_L1_error) + if (!__pyx_t_1) { + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } else { + __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 761, __pyx_L1_error) + __pyx_t_10 = __pyx_t_12; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + goto __pyx_L9_bool_binop_done; + } + __pyx_t_10 = 0; + __pyx_L9_bool_binop_done:; + __pyx_v_stop = __pyx_t_10; + + /* "View.MemoryView":762 + * start = index.start or 0 + * stop = index.stop or 0 + * step = index.step or 0 # <<<<<<<<<<<<<< + * + * have_start = index.start is not None + */ + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 762, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 762, __pyx_L1_error) + if (!__pyx_t_1) { + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } else { + __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 762, __pyx_L1_error) + __pyx_t_10 = __pyx_t_12; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + goto __pyx_L11_bool_binop_done; + } + __pyx_t_10 = 0; + __pyx_L11_bool_binop_done:; + __pyx_v_step = __pyx_t_10; + + /* "View.MemoryView":764 + * step = index.step or 0 + * + * have_start = index.start is not None # <<<<<<<<<<<<<< + * have_stop = index.stop is not None + * have_step = index.step is not None + */ + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 764, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_1 = (__pyx_t_9 != Py_None); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_v_have_start = __pyx_t_1; + + /* "View.MemoryView":765 + * + * have_start = index.start is not None + * have_stop = index.stop is not None # <<<<<<<<<<<<<< + * have_step = index.step is not None + * + */ + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 765, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_1 = (__pyx_t_9 != Py_None); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_v_have_stop = __pyx_t_1; + + /* "View.MemoryView":766 + * have_start = index.start is not None + * have_stop = index.stop is not None + * have_step = index.step is not None # <<<<<<<<<<<<<< + * + * slice_memviewslice( + */ + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 766, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_1 = (__pyx_t_9 != Py_None); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_v_have_step = __pyx_t_1; + + /* "View.MemoryView":768 + * have_step = index.step is not None + * + * slice_memviewslice( # <<<<<<<<<<<<<< + * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], + * dim, new_ndim, p_suboffset_dim, + */ + __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_start, __pyx_v_stop, __pyx_v_step, __pyx_v_have_start, __pyx_v_have_stop, __pyx_v_have_step, 1); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 768, __pyx_L1_error) + + /* "View.MemoryView":774 + * have_start, have_stop, have_step, + * True) + * new_ndim += 1 # <<<<<<<<<<<<<< + * + * if isinstance(memview, _memoryviewslice): + */ + __pyx_v_new_ndim = (__pyx_v_new_ndim + 1); + } + __pyx_L6:; + + /* "View.MemoryView":746 + * cdef bint have_start, have_stop, have_step + * + * for dim, index in enumerate(indices): # <<<<<<<<<<<<<< + * if PyIndex_Check(index): + * slice_memviewslice( + */ + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "View.MemoryView":776 + * new_ndim += 1 + * + * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< + * return memoryview_fromslice(dst, new_ndim, + * memviewsliceobj.to_object_func, + */ + __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":777 + * + * if isinstance(memview, _memoryviewslice): + * return memoryview_fromslice(dst, new_ndim, # <<<<<<<<<<<<<< + * memviewsliceobj.to_object_func, + * memviewsliceobj.to_dtype_func, + */ + __Pyx_XDECREF(((PyObject *)__pyx_r)); + + /* "View.MemoryView":778 + * if isinstance(memview, _memoryviewslice): + * return memoryview_fromslice(dst, new_ndim, + * memviewsliceobj.to_object_func, # <<<<<<<<<<<<<< + * memviewsliceobj.to_dtype_func, + * memview.dtype_is_object) + */ + if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 778, __pyx_L1_error) } + + /* "View.MemoryView":779 + * return memoryview_fromslice(dst, new_ndim, + * memviewsliceobj.to_object_func, + * memviewsliceobj.to_dtype_func, # <<<<<<<<<<<<<< + * memview.dtype_is_object) + * else: + */ + if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 779, __pyx_L1_error) } + + /* "View.MemoryView":777 + * + * if isinstance(memview, _memoryviewslice): + * return memoryview_fromslice(dst, new_ndim, # <<<<<<<<<<<<<< + * memviewsliceobj.to_object_func, + * memviewsliceobj.to_dtype_func, + */ + __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, __pyx_v_memviewsliceobj->to_object_func, __pyx_v_memviewsliceobj->to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 777, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) __PYX_ERR(1, 777, __pyx_L1_error) + __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_3); + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "View.MemoryView":776 + * new_ndim += 1 + * + * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< + * return memoryview_fromslice(dst, new_ndim, + * memviewsliceobj.to_object_func, + */ + } + + /* "View.MemoryView":782 + * memview.dtype_is_object) + * else: + * return memoryview_fromslice(dst, new_ndim, NULL, NULL, # <<<<<<<<<<<<<< + * memview.dtype_is_object) + * + */ + /*else*/ { + __Pyx_XDECREF(((PyObject *)__pyx_r)); + + /* "View.MemoryView":783 + * else: + * return memoryview_fromslice(dst, new_ndim, NULL, NULL, + * memview.dtype_is_object) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, NULL, NULL, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 782, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "View.MemoryView":782 + * memview.dtype_is_object) + * else: + * return memoryview_fromslice(dst, new_ndim, NULL, NULL, # <<<<<<<<<<<<<< + * memview.dtype_is_object) + * + */ + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) __PYX_ERR(1, 782, __pyx_L1_error) + __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_3); + __pyx_t_3 = 0; + goto __pyx_L0; + } + + /* "View.MemoryView":710 + * + * @cname('__pyx_memview_slice') + * cdef memoryview memview_slice(memoryview memview, object indices): # <<<<<<<<<<<<<< + * cdef int new_ndim = 0, suboffset_dim = -1, dim + * cdef bint negative_step + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_AddTraceback("View.MemoryView.memview_slice", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_memviewsliceobj); + __Pyx_XDECREF(__pyx_v_index); + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":807 + * + * @cname('__pyx_memoryview_slice_memviewslice') + * cdef int slice_memviewslice( # <<<<<<<<<<<<<< + * __Pyx_memviewslice *dst, + * Py_ssize_t shape, Py_ssize_t stride, Py_ssize_t suboffset, + */ + +static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, Py_ssize_t __pyx_v_shape, Py_ssize_t __pyx_v_stride, Py_ssize_t __pyx_v_suboffset, int __pyx_v_dim, int __pyx_v_new_ndim, int *__pyx_v_suboffset_dim, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_stop, Py_ssize_t __pyx_v_step, int __pyx_v_have_start, int __pyx_v_have_stop, int __pyx_v_have_step, int __pyx_v_is_slice) { + Py_ssize_t __pyx_v_new_shape; + int __pyx_v_negative_step; + int __pyx_r; + int __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + + /* "View.MemoryView":827 + * cdef bint negative_step + * + * if not is_slice: # <<<<<<<<<<<<<< + * + * if start < 0: + */ + __pyx_t_1 = ((!(__pyx_v_is_slice != 0)) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":829 + * if not is_slice: + * + * if start < 0: # <<<<<<<<<<<<<< + * start += shape + * if not 0 <= start < shape: + */ + __pyx_t_1 = ((__pyx_v_start < 0) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":830 + * + * if start < 0: + * start += shape # <<<<<<<<<<<<<< + * if not 0 <= start < shape: + * _err_dim(IndexError, "Index out of bounds (axis %d)", dim) + */ + __pyx_v_start = (__pyx_v_start + __pyx_v_shape); + + /* "View.MemoryView":829 + * if not is_slice: + * + * if start < 0: # <<<<<<<<<<<<<< + * start += shape + * if not 0 <= start < shape: + */ + } + + /* "View.MemoryView":831 + * if start < 0: + * start += shape + * if not 0 <= start < shape: # <<<<<<<<<<<<<< + * _err_dim(IndexError, "Index out of bounds (axis %d)", dim) + * else: + */ + __pyx_t_1 = (0 <= __pyx_v_start); + if (__pyx_t_1) { + __pyx_t_1 = (__pyx_v_start < __pyx_v_shape); + } + __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":832 + * start += shape + * if not 0 <= start < shape: + * _err_dim(IndexError, "Index out of bounds (axis %d)", dim) # <<<<<<<<<<<<<< + * else: + * + */ + __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, ((char *)"Index out of bounds (axis %d)"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 832, __pyx_L1_error) + + /* "View.MemoryView":831 + * if start < 0: + * start += shape + * if not 0 <= start < shape: # <<<<<<<<<<<<<< + * _err_dim(IndexError, "Index out of bounds (axis %d)", dim) + * else: + */ + } + + /* "View.MemoryView":827 + * cdef bint negative_step + * + * if not is_slice: # <<<<<<<<<<<<<< + * + * if start < 0: + */ + goto __pyx_L3; + } + + /* "View.MemoryView":835 + * else: + * + * negative_step = have_step != 0 and step < 0 # <<<<<<<<<<<<<< + * + * if have_step and step == 0: + */ + /*else*/ { + __pyx_t_1 = ((__pyx_v_have_step != 0) != 0); + if (__pyx_t_1) { + } else { + __pyx_t_2 = __pyx_t_1; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_1 = ((__pyx_v_step < 0) != 0); + __pyx_t_2 = __pyx_t_1; + __pyx_L6_bool_binop_done:; + __pyx_v_negative_step = __pyx_t_2; + + /* "View.MemoryView":837 + * negative_step = have_step != 0 and step < 0 + * + * if have_step and step == 0: # <<<<<<<<<<<<<< + * _err_dim(ValueError, "Step may not be zero (axis %d)", dim) + * + */ + __pyx_t_1 = (__pyx_v_have_step != 0); + if (__pyx_t_1) { + } else { + __pyx_t_2 = __pyx_t_1; + goto __pyx_L9_bool_binop_done; + } + __pyx_t_1 = ((__pyx_v_step == 0) != 0); + __pyx_t_2 = __pyx_t_1; + __pyx_L9_bool_binop_done:; + if (__pyx_t_2) { + + /* "View.MemoryView":838 + * + * if have_step and step == 0: + * _err_dim(ValueError, "Step may not be zero (axis %d)", dim) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, ((char *)"Step may not be zero (axis %d)"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 838, __pyx_L1_error) + + /* "View.MemoryView":837 + * negative_step = have_step != 0 and step < 0 + * + * if have_step and step == 0: # <<<<<<<<<<<<<< + * _err_dim(ValueError, "Step may not be zero (axis %d)", dim) + * + */ + } + + /* "View.MemoryView":841 + * + * + * if have_start: # <<<<<<<<<<<<<< + * if start < 0: + * start += shape + */ + __pyx_t_2 = (__pyx_v_have_start != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":842 + * + * if have_start: + * if start < 0: # <<<<<<<<<<<<<< + * start += shape + * if start < 0: + */ + __pyx_t_2 = ((__pyx_v_start < 0) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":843 + * if have_start: + * if start < 0: + * start += shape # <<<<<<<<<<<<<< + * if start < 0: + * start = 0 + */ + __pyx_v_start = (__pyx_v_start + __pyx_v_shape); + + /* "View.MemoryView":844 + * if start < 0: + * start += shape + * if start < 0: # <<<<<<<<<<<<<< + * start = 0 + * elif start >= shape: + */ + __pyx_t_2 = ((__pyx_v_start < 0) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":845 + * start += shape + * if start < 0: + * start = 0 # <<<<<<<<<<<<<< + * elif start >= shape: + * if negative_step: + */ + __pyx_v_start = 0; + + /* "View.MemoryView":844 + * if start < 0: + * start += shape + * if start < 0: # <<<<<<<<<<<<<< + * start = 0 + * elif start >= shape: + */ + } + + /* "View.MemoryView":842 + * + * if have_start: + * if start < 0: # <<<<<<<<<<<<<< + * start += shape + * if start < 0: + */ + goto __pyx_L12; + } + + /* "View.MemoryView":846 + * if start < 0: + * start = 0 + * elif start >= shape: # <<<<<<<<<<<<<< + * if negative_step: + * start = shape - 1 + */ + __pyx_t_2 = ((__pyx_v_start >= __pyx_v_shape) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":847 + * start = 0 + * elif start >= shape: + * if negative_step: # <<<<<<<<<<<<<< + * start = shape - 1 + * else: + */ + __pyx_t_2 = (__pyx_v_negative_step != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":848 + * elif start >= shape: + * if negative_step: + * start = shape - 1 # <<<<<<<<<<<<<< + * else: + * start = shape + */ + __pyx_v_start = (__pyx_v_shape - 1); + + /* "View.MemoryView":847 + * start = 0 + * elif start >= shape: + * if negative_step: # <<<<<<<<<<<<<< + * start = shape - 1 + * else: + */ + goto __pyx_L14; + } + + /* "View.MemoryView":850 + * start = shape - 1 + * else: + * start = shape # <<<<<<<<<<<<<< + * else: + * if negative_step: + */ + /*else*/ { + __pyx_v_start = __pyx_v_shape; + } + __pyx_L14:; + + /* "View.MemoryView":846 + * if start < 0: + * start = 0 + * elif start >= shape: # <<<<<<<<<<<<<< + * if negative_step: + * start = shape - 1 + */ + } + __pyx_L12:; + + /* "View.MemoryView":841 + * + * + * if have_start: # <<<<<<<<<<<<<< + * if start < 0: + * start += shape + */ + goto __pyx_L11; + } + + /* "View.MemoryView":852 + * start = shape + * else: + * if negative_step: # <<<<<<<<<<<<<< + * start = shape - 1 + * else: + */ + /*else*/ { + __pyx_t_2 = (__pyx_v_negative_step != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":853 + * else: + * if negative_step: + * start = shape - 1 # <<<<<<<<<<<<<< + * else: + * start = 0 + */ + __pyx_v_start = (__pyx_v_shape - 1); + + /* "View.MemoryView":852 + * start = shape + * else: + * if negative_step: # <<<<<<<<<<<<<< + * start = shape - 1 + * else: + */ + goto __pyx_L15; + } + + /* "View.MemoryView":855 + * start = shape - 1 + * else: + * start = 0 # <<<<<<<<<<<<<< + * + * if have_stop: + */ + /*else*/ { + __pyx_v_start = 0; + } + __pyx_L15:; + } + __pyx_L11:; + + /* "View.MemoryView":857 + * start = 0 + * + * if have_stop: # <<<<<<<<<<<<<< + * if stop < 0: + * stop += shape + */ + __pyx_t_2 = (__pyx_v_have_stop != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":858 + * + * if have_stop: + * if stop < 0: # <<<<<<<<<<<<<< + * stop += shape + * if stop < 0: + */ + __pyx_t_2 = ((__pyx_v_stop < 0) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":859 + * if have_stop: + * if stop < 0: + * stop += shape # <<<<<<<<<<<<<< + * if stop < 0: + * stop = 0 + */ + __pyx_v_stop = (__pyx_v_stop + __pyx_v_shape); + + /* "View.MemoryView":860 + * if stop < 0: + * stop += shape + * if stop < 0: # <<<<<<<<<<<<<< + * stop = 0 + * elif stop > shape: + */ + __pyx_t_2 = ((__pyx_v_stop < 0) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":861 + * stop += shape + * if stop < 0: + * stop = 0 # <<<<<<<<<<<<<< + * elif stop > shape: + * stop = shape + */ + __pyx_v_stop = 0; + + /* "View.MemoryView":860 + * if stop < 0: + * stop += shape + * if stop < 0: # <<<<<<<<<<<<<< + * stop = 0 + * elif stop > shape: + */ + } + + /* "View.MemoryView":858 + * + * if have_stop: + * if stop < 0: # <<<<<<<<<<<<<< + * stop += shape + * if stop < 0: + */ + goto __pyx_L17; + } + + /* "View.MemoryView":862 + * if stop < 0: + * stop = 0 + * elif stop > shape: # <<<<<<<<<<<<<< + * stop = shape + * else: + */ + __pyx_t_2 = ((__pyx_v_stop > __pyx_v_shape) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":863 + * stop = 0 + * elif stop > shape: + * stop = shape # <<<<<<<<<<<<<< + * else: + * if negative_step: + */ + __pyx_v_stop = __pyx_v_shape; + + /* "View.MemoryView":862 + * if stop < 0: + * stop = 0 + * elif stop > shape: # <<<<<<<<<<<<<< + * stop = shape + * else: + */ + } + __pyx_L17:; + + /* "View.MemoryView":857 + * start = 0 + * + * if have_stop: # <<<<<<<<<<<<<< + * if stop < 0: + * stop += shape + */ + goto __pyx_L16; + } + + /* "View.MemoryView":865 + * stop = shape + * else: + * if negative_step: # <<<<<<<<<<<<<< + * stop = -1 + * else: + */ + /*else*/ { + __pyx_t_2 = (__pyx_v_negative_step != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":866 + * else: + * if negative_step: + * stop = -1 # <<<<<<<<<<<<<< + * else: + * stop = shape + */ + __pyx_v_stop = -1L; + + /* "View.MemoryView":865 + * stop = shape + * else: + * if negative_step: # <<<<<<<<<<<<<< + * stop = -1 + * else: + */ + goto __pyx_L19; + } + + /* "View.MemoryView":868 + * stop = -1 + * else: + * stop = shape # <<<<<<<<<<<<<< + * + * if not have_step: + */ + /*else*/ { + __pyx_v_stop = __pyx_v_shape; + } + __pyx_L19:; + } + __pyx_L16:; + + /* "View.MemoryView":870 + * stop = shape + * + * if not have_step: # <<<<<<<<<<<<<< + * step = 1 + * + */ + __pyx_t_2 = ((!(__pyx_v_have_step != 0)) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":871 + * + * if not have_step: + * step = 1 # <<<<<<<<<<<<<< + * + * + */ + __pyx_v_step = 1; + + /* "View.MemoryView":870 + * stop = shape + * + * if not have_step: # <<<<<<<<<<<<<< + * step = 1 + * + */ + } + + /* "View.MemoryView":875 + * + * with cython.cdivision(True): + * new_shape = (stop - start) // step # <<<<<<<<<<<<<< + * + * if (stop - start) - step * new_shape: + */ + __pyx_v_new_shape = ((__pyx_v_stop - __pyx_v_start) / __pyx_v_step); + + /* "View.MemoryView":877 + * new_shape = (stop - start) // step + * + * if (stop - start) - step * new_shape: # <<<<<<<<<<<<<< + * new_shape += 1 + * + */ + __pyx_t_2 = (((__pyx_v_stop - __pyx_v_start) - (__pyx_v_step * __pyx_v_new_shape)) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":878 + * + * if (stop - start) - step * new_shape: + * new_shape += 1 # <<<<<<<<<<<<<< + * + * if new_shape < 0: + */ + __pyx_v_new_shape = (__pyx_v_new_shape + 1); + + /* "View.MemoryView":877 + * new_shape = (stop - start) // step + * + * if (stop - start) - step * new_shape: # <<<<<<<<<<<<<< + * new_shape += 1 + * + */ + } + + /* "View.MemoryView":880 + * new_shape += 1 + * + * if new_shape < 0: # <<<<<<<<<<<<<< + * new_shape = 0 + * + */ + __pyx_t_2 = ((__pyx_v_new_shape < 0) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":881 + * + * if new_shape < 0: + * new_shape = 0 # <<<<<<<<<<<<<< + * + * + */ + __pyx_v_new_shape = 0; + + /* "View.MemoryView":880 + * new_shape += 1 + * + * if new_shape < 0: # <<<<<<<<<<<<<< + * new_shape = 0 + * + */ + } + + /* "View.MemoryView":884 + * + * + * dst.strides[new_ndim] = stride * step # <<<<<<<<<<<<<< + * dst.shape[new_ndim] = new_shape + * dst.suboffsets[new_ndim] = suboffset + */ + (__pyx_v_dst->strides[__pyx_v_new_ndim]) = (__pyx_v_stride * __pyx_v_step); + + /* "View.MemoryView":885 + * + * dst.strides[new_ndim] = stride * step + * dst.shape[new_ndim] = new_shape # <<<<<<<<<<<<<< + * dst.suboffsets[new_ndim] = suboffset + * + */ + (__pyx_v_dst->shape[__pyx_v_new_ndim]) = __pyx_v_new_shape; + + /* "View.MemoryView":886 + * dst.strides[new_ndim] = stride * step + * dst.shape[new_ndim] = new_shape + * dst.suboffsets[new_ndim] = suboffset # <<<<<<<<<<<<<< + * + * + */ + (__pyx_v_dst->suboffsets[__pyx_v_new_ndim]) = __pyx_v_suboffset; + } + __pyx_L3:; + + /* "View.MemoryView":889 + * + * + * if suboffset_dim[0] < 0: # <<<<<<<<<<<<<< + * dst.data += start * stride + * else: + */ + __pyx_t_2 = (((__pyx_v_suboffset_dim[0]) < 0) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":890 + * + * if suboffset_dim[0] < 0: + * dst.data += start * stride # <<<<<<<<<<<<<< + * else: + * dst.suboffsets[suboffset_dim[0]] += start * stride + */ + __pyx_v_dst->data = (__pyx_v_dst->data + (__pyx_v_start * __pyx_v_stride)); + + /* "View.MemoryView":889 + * + * + * if suboffset_dim[0] < 0: # <<<<<<<<<<<<<< + * dst.data += start * stride + * else: + */ + goto __pyx_L23; + } + + /* "View.MemoryView":892 + * dst.data += start * stride + * else: + * dst.suboffsets[suboffset_dim[0]] += start * stride # <<<<<<<<<<<<<< + * + * if suboffset >= 0: + */ + /*else*/ { + __pyx_t_3 = (__pyx_v_suboffset_dim[0]); + (__pyx_v_dst->suboffsets[__pyx_t_3]) = ((__pyx_v_dst->suboffsets[__pyx_t_3]) + (__pyx_v_start * __pyx_v_stride)); + } + __pyx_L23:; + + /* "View.MemoryView":894 + * dst.suboffsets[suboffset_dim[0]] += start * stride + * + * if suboffset >= 0: # <<<<<<<<<<<<<< + * if not is_slice: + * if new_ndim == 0: + */ + __pyx_t_2 = ((__pyx_v_suboffset >= 0) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":895 + * + * if suboffset >= 0: + * if not is_slice: # <<<<<<<<<<<<<< + * if new_ndim == 0: + * dst.data = ( dst.data)[0] + suboffset + */ + __pyx_t_2 = ((!(__pyx_v_is_slice != 0)) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":896 + * if suboffset >= 0: + * if not is_slice: + * if new_ndim == 0: # <<<<<<<<<<<<<< + * dst.data = ( dst.data)[0] + suboffset + * else: + */ + __pyx_t_2 = ((__pyx_v_new_ndim == 0) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":897 + * if not is_slice: + * if new_ndim == 0: + * dst.data = ( dst.data)[0] + suboffset # <<<<<<<<<<<<<< + * else: + * _err_dim(IndexError, "All dimensions preceding dimension %d " + */ + __pyx_v_dst->data = ((((char **)__pyx_v_dst->data)[0]) + __pyx_v_suboffset); + + /* "View.MemoryView":896 + * if suboffset >= 0: + * if not is_slice: + * if new_ndim == 0: # <<<<<<<<<<<<<< + * dst.data = ( dst.data)[0] + suboffset + * else: + */ + goto __pyx_L26; + } + + /* "View.MemoryView":899 + * dst.data = ( dst.data)[0] + suboffset + * else: + * _err_dim(IndexError, "All dimensions preceding dimension %d " # <<<<<<<<<<<<<< + * "must be indexed and not sliced", dim) + * else: + */ + /*else*/ { + + /* "View.MemoryView":900 + * else: + * _err_dim(IndexError, "All dimensions preceding dimension %d " + * "must be indexed and not sliced", dim) # <<<<<<<<<<<<<< + * else: + * suboffset_dim[0] = new_ndim + */ + __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, ((char *)"All dimensions preceding dimension %d must be indexed and not sliced"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 899, __pyx_L1_error) + } + __pyx_L26:; + + /* "View.MemoryView":895 + * + * if suboffset >= 0: + * if not is_slice: # <<<<<<<<<<<<<< + * if new_ndim == 0: + * dst.data = ( dst.data)[0] + suboffset + */ + goto __pyx_L25; + } + + /* "View.MemoryView":902 + * "must be indexed and not sliced", dim) + * else: + * suboffset_dim[0] = new_ndim # <<<<<<<<<<<<<< + * + * return 0 + */ + /*else*/ { + (__pyx_v_suboffset_dim[0]) = __pyx_v_new_ndim; + } + __pyx_L25:; + + /* "View.MemoryView":894 + * dst.suboffsets[suboffset_dim[0]] += start * stride + * + * if suboffset >= 0: # <<<<<<<<<<<<<< + * if not is_slice: + * if new_ndim == 0: + */ + } + + /* "View.MemoryView":904 + * suboffset_dim[0] = new_ndim + * + * return 0 # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = 0; + goto __pyx_L0; + + /* "View.MemoryView":807 + * + * @cname('__pyx_memoryview_slice_memviewslice') + * cdef int slice_memviewslice( # <<<<<<<<<<<<<< + * __Pyx_memviewslice *dst, + * Py_ssize_t shape, Py_ssize_t stride, Py_ssize_t suboffset, + */ + + /* function exit code */ + __pyx_L1_error:; + { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); + #endif + __Pyx_AddTraceback("View.MemoryView.slice_memviewslice", __pyx_clineno, __pyx_lineno, __pyx_filename); + #ifdef WITH_THREAD + __Pyx_PyGILState_Release(__pyx_gilstate_save); + #endif + } + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "View.MemoryView":910 + * + * @cname('__pyx_pybuffer_index') + * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index, # <<<<<<<<<<<<<< + * Py_ssize_t dim) except NULL: + * cdef Py_ssize_t shape, stride, suboffset = -1 + */ + +static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, Py_ssize_t __pyx_v_index, Py_ssize_t __pyx_v_dim) { + Py_ssize_t __pyx_v_shape; + Py_ssize_t __pyx_v_stride; + Py_ssize_t __pyx_v_suboffset; + Py_ssize_t __pyx_v_itemsize; + char *__pyx_v_resultp; + char *__pyx_r; + __Pyx_RefNannyDeclarations + Py_ssize_t __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("pybuffer_index", 0); + + /* "View.MemoryView":912 + * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index, + * Py_ssize_t dim) except NULL: + * cdef Py_ssize_t shape, stride, suboffset = -1 # <<<<<<<<<<<<<< + * cdef Py_ssize_t itemsize = view.itemsize + * cdef char *resultp + */ + __pyx_v_suboffset = -1L; + + /* "View.MemoryView":913 + * Py_ssize_t dim) except NULL: + * cdef Py_ssize_t shape, stride, suboffset = -1 + * cdef Py_ssize_t itemsize = view.itemsize # <<<<<<<<<<<<<< + * cdef char *resultp + * + */ + __pyx_t_1 = __pyx_v_view->itemsize; + __pyx_v_itemsize = __pyx_t_1; + + /* "View.MemoryView":916 + * cdef char *resultp + * + * if view.ndim == 0: # <<<<<<<<<<<<<< + * shape = view.len / itemsize + * stride = itemsize + */ + __pyx_t_2 = ((__pyx_v_view->ndim == 0) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":917 + * + * if view.ndim == 0: + * shape = view.len / itemsize # <<<<<<<<<<<<<< + * stride = itemsize + * else: + */ + if (unlikely(__pyx_v_itemsize == 0)) { + PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); + __PYX_ERR(1, 917, __pyx_L1_error) + } + else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_v_itemsize == (Py_ssize_t)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_view->len))) { + PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); + __PYX_ERR(1, 917, __pyx_L1_error) + } + __pyx_v_shape = (__pyx_v_view->len / __pyx_v_itemsize); + + /* "View.MemoryView":918 + * if view.ndim == 0: + * shape = view.len / itemsize + * stride = itemsize # <<<<<<<<<<<<<< + * else: + * shape = view.shape[dim] + */ + __pyx_v_stride = __pyx_v_itemsize; + + /* "View.MemoryView":916 + * cdef char *resultp + * + * if view.ndim == 0: # <<<<<<<<<<<<<< + * shape = view.len / itemsize + * stride = itemsize + */ + goto __pyx_L3; + } + + /* "View.MemoryView":920 + * stride = itemsize + * else: + * shape = view.shape[dim] # <<<<<<<<<<<<<< + * stride = view.strides[dim] + * if view.suboffsets != NULL: + */ + /*else*/ { + __pyx_v_shape = (__pyx_v_view->shape[__pyx_v_dim]); + + /* "View.MemoryView":921 + * else: + * shape = view.shape[dim] + * stride = view.strides[dim] # <<<<<<<<<<<<<< + * if view.suboffsets != NULL: + * suboffset = view.suboffsets[dim] + */ + __pyx_v_stride = (__pyx_v_view->strides[__pyx_v_dim]); + + /* "View.MemoryView":922 + * shape = view.shape[dim] + * stride = view.strides[dim] + * if view.suboffsets != NULL: # <<<<<<<<<<<<<< + * suboffset = view.suboffsets[dim] + * + */ + __pyx_t_2 = ((__pyx_v_view->suboffsets != NULL) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":923 + * stride = view.strides[dim] + * if view.suboffsets != NULL: + * suboffset = view.suboffsets[dim] # <<<<<<<<<<<<<< + * + * if index < 0: + */ + __pyx_v_suboffset = (__pyx_v_view->suboffsets[__pyx_v_dim]); + + /* "View.MemoryView":922 + * shape = view.shape[dim] + * stride = view.strides[dim] + * if view.suboffsets != NULL: # <<<<<<<<<<<<<< + * suboffset = view.suboffsets[dim] + * + */ + } + } + __pyx_L3:; + + /* "View.MemoryView":925 + * suboffset = view.suboffsets[dim] + * + * if index < 0: # <<<<<<<<<<<<<< + * index += view.shape[dim] + * if index < 0: + */ + __pyx_t_2 = ((__pyx_v_index < 0) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":926 + * + * if index < 0: + * index += view.shape[dim] # <<<<<<<<<<<<<< + * if index < 0: + * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) + */ + __pyx_v_index = (__pyx_v_index + (__pyx_v_view->shape[__pyx_v_dim])); + + /* "View.MemoryView":927 + * if index < 0: + * index += view.shape[dim] + * if index < 0: # <<<<<<<<<<<<<< + * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) + * + */ + __pyx_t_2 = ((__pyx_v_index < 0) != 0); + if (unlikely(__pyx_t_2)) { + + /* "View.MemoryView":928 + * index += view.shape[dim] + * if index < 0: + * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) # <<<<<<<<<<<<<< + * + * if index >= shape: + */ + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 928, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 928, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IndexError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 928, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 928, __pyx_L1_error) + + /* "View.MemoryView":927 + * if index < 0: + * index += view.shape[dim] + * if index < 0: # <<<<<<<<<<<<<< + * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) + * + */ + } + + /* "View.MemoryView":925 + * suboffset = view.suboffsets[dim] + * + * if index < 0: # <<<<<<<<<<<<<< + * index += view.shape[dim] + * if index < 0: + */ + } + + /* "View.MemoryView":930 + * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) + * + * if index >= shape: # <<<<<<<<<<<<<< + * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) + * + */ + __pyx_t_2 = ((__pyx_v_index >= __pyx_v_shape) != 0); + if (unlikely(__pyx_t_2)) { + + /* "View.MemoryView":931 + * + * if index >= shape: + * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) # <<<<<<<<<<<<<< + * + * resultp = bufp + index * stride + */ + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 931, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 931, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IndexError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 931, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 931, __pyx_L1_error) + + /* "View.MemoryView":930 + * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) + * + * if index >= shape: # <<<<<<<<<<<<<< + * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) + * + */ + } + + /* "View.MemoryView":933 + * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) + * + * resultp = bufp + index * stride # <<<<<<<<<<<<<< + * if suboffset >= 0: + * resultp = ( resultp)[0] + suboffset + */ + __pyx_v_resultp = (__pyx_v_bufp + (__pyx_v_index * __pyx_v_stride)); + + /* "View.MemoryView":934 + * + * resultp = bufp + index * stride + * if suboffset >= 0: # <<<<<<<<<<<<<< + * resultp = ( resultp)[0] + suboffset + * + */ + __pyx_t_2 = ((__pyx_v_suboffset >= 0) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":935 + * resultp = bufp + index * stride + * if suboffset >= 0: + * resultp = ( resultp)[0] + suboffset # <<<<<<<<<<<<<< + * + * return resultp + */ + __pyx_v_resultp = ((((char **)__pyx_v_resultp)[0]) + __pyx_v_suboffset); + + /* "View.MemoryView":934 + * + * resultp = bufp + index * stride + * if suboffset >= 0: # <<<<<<<<<<<<<< + * resultp = ( resultp)[0] + suboffset + * + */ + } + + /* "View.MemoryView":937 + * resultp = ( resultp)[0] + suboffset + * + * return resultp # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = __pyx_v_resultp; + goto __pyx_L0; + + /* "View.MemoryView":910 + * + * @cname('__pyx_pybuffer_index') + * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index, # <<<<<<<<<<<<<< + * Py_ssize_t dim) except NULL: + * cdef Py_ssize_t shape, stride, suboffset = -1 + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("View.MemoryView.pybuffer_index", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":943 + * + * @cname('__pyx_memslice_transpose') + * cdef int transpose_memslice(__Pyx_memviewslice *memslice) nogil except 0: # <<<<<<<<<<<<<< + * cdef int ndim = memslice.memview.view.ndim + * + */ + +static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { + int __pyx_v_ndim; + Py_ssize_t *__pyx_v_shape; + Py_ssize_t *__pyx_v_strides; + int __pyx_v_i; + int __pyx_v_j; + int __pyx_r; + int __pyx_t_1; + Py_ssize_t *__pyx_t_2; + long __pyx_t_3; + long __pyx_t_4; + Py_ssize_t __pyx_t_5; + Py_ssize_t __pyx_t_6; + int __pyx_t_7; + int __pyx_t_8; + int __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + + /* "View.MemoryView":944 + * @cname('__pyx_memslice_transpose') + * cdef int transpose_memslice(__Pyx_memviewslice *memslice) nogil except 0: + * cdef int ndim = memslice.memview.view.ndim # <<<<<<<<<<<<<< + * + * cdef Py_ssize_t *shape = memslice.shape + */ + __pyx_t_1 = __pyx_v_memslice->memview->view.ndim; + __pyx_v_ndim = __pyx_t_1; + + /* "View.MemoryView":946 + * cdef int ndim = memslice.memview.view.ndim + * + * cdef Py_ssize_t *shape = memslice.shape # <<<<<<<<<<<<<< + * cdef Py_ssize_t *strides = memslice.strides + * + */ + __pyx_t_2 = __pyx_v_memslice->shape; + __pyx_v_shape = __pyx_t_2; + + /* "View.MemoryView":947 + * + * cdef Py_ssize_t *shape = memslice.shape + * cdef Py_ssize_t *strides = memslice.strides # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_2 = __pyx_v_memslice->strides; + __pyx_v_strides = __pyx_t_2; + + /* "View.MemoryView":951 + * + * cdef int i, j + * for i in range(ndim / 2): # <<<<<<<<<<<<<< + * j = ndim - 1 - i + * strides[i], strides[j] = strides[j], strides[i] + */ + __pyx_t_3 = (__pyx_v_ndim / 2); + __pyx_t_4 = __pyx_t_3; + for (__pyx_t_1 = 0; __pyx_t_1 < __pyx_t_4; __pyx_t_1+=1) { + __pyx_v_i = __pyx_t_1; + + /* "View.MemoryView":952 + * cdef int i, j + * for i in range(ndim / 2): + * j = ndim - 1 - i # <<<<<<<<<<<<<< + * strides[i], strides[j] = strides[j], strides[i] + * shape[i], shape[j] = shape[j], shape[i] + */ + __pyx_v_j = ((__pyx_v_ndim - 1) - __pyx_v_i); + + /* "View.MemoryView":953 + * for i in range(ndim / 2): + * j = ndim - 1 - i + * strides[i], strides[j] = strides[j], strides[i] # <<<<<<<<<<<<<< + * shape[i], shape[j] = shape[j], shape[i] + * + */ + __pyx_t_5 = (__pyx_v_strides[__pyx_v_j]); + __pyx_t_6 = (__pyx_v_strides[__pyx_v_i]); + (__pyx_v_strides[__pyx_v_i]) = __pyx_t_5; + (__pyx_v_strides[__pyx_v_j]) = __pyx_t_6; + + /* "View.MemoryView":954 + * j = ndim - 1 - i + * strides[i], strides[j] = strides[j], strides[i] + * shape[i], shape[j] = shape[j], shape[i] # <<<<<<<<<<<<<< + * + * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: + */ + __pyx_t_6 = (__pyx_v_shape[__pyx_v_j]); + __pyx_t_5 = (__pyx_v_shape[__pyx_v_i]); + (__pyx_v_shape[__pyx_v_i]) = __pyx_t_6; + (__pyx_v_shape[__pyx_v_j]) = __pyx_t_5; + + /* "View.MemoryView":956 + * shape[i], shape[j] = shape[j], shape[i] + * + * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: # <<<<<<<<<<<<<< + * _err(ValueError, "Cannot transpose memoryview with indirect dimensions") + * + */ + __pyx_t_8 = (((__pyx_v_memslice->suboffsets[__pyx_v_i]) >= 0) != 0); + if (!__pyx_t_8) { + } else { + __pyx_t_7 = __pyx_t_8; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_8 = (((__pyx_v_memslice->suboffsets[__pyx_v_j]) >= 0) != 0); + __pyx_t_7 = __pyx_t_8; + __pyx_L6_bool_binop_done:; + if (__pyx_t_7) { + + /* "View.MemoryView":957 + * + * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: + * _err(ValueError, "Cannot transpose memoryview with indirect dimensions") # <<<<<<<<<<<<<< + * + * return 1 + */ + __pyx_t_9 = __pyx_memoryview_err(__pyx_builtin_ValueError, ((char *)"Cannot transpose memoryview with indirect dimensions")); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 957, __pyx_L1_error) + + /* "View.MemoryView":956 + * shape[i], shape[j] = shape[j], shape[i] + * + * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: # <<<<<<<<<<<<<< + * _err(ValueError, "Cannot transpose memoryview with indirect dimensions") + * + */ + } + } + + /* "View.MemoryView":959 + * _err(ValueError, "Cannot transpose memoryview with indirect dimensions") + * + * return 1 # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = 1; + goto __pyx_L0; + + /* "View.MemoryView":943 + * + * @cname('__pyx_memslice_transpose') + * cdef int transpose_memslice(__Pyx_memviewslice *memslice) nogil except 0: # <<<<<<<<<<<<<< + * cdef int ndim = memslice.memview.view.ndim + * + */ + + /* function exit code */ + __pyx_L1_error:; + { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); + #endif + __Pyx_AddTraceback("View.MemoryView.transpose_memslice", __pyx_clineno, __pyx_lineno, __pyx_filename); + #ifdef WITH_THREAD + __Pyx_PyGILState_Release(__pyx_gilstate_save); + #endif + } + __pyx_r = 0; + __pyx_L0:; + return __pyx_r; +} + +/* "View.MemoryView":976 + * cdef int (*to_dtype_func)(char *, object) except 0 + * + * def __dealloc__(self): # <<<<<<<<<<<<<< + * __PYX_XDEC_MEMVIEW(&self.from_slice, 1) + * + */ + +/* Python wrapper */ +static void __pyx_memoryviewslice___dealloc__(PyObject *__pyx_v_self); /*proto*/ +static void __pyx_memoryviewslice___dealloc__(PyObject *__pyx_v_self) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); + __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(struct __pyx_memoryviewslice_obj *__pyx_v_self) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__dealloc__", 0); + + /* "View.MemoryView":977 + * + * def __dealloc__(self): + * __PYX_XDEC_MEMVIEW(&self.from_slice, 1) # <<<<<<<<<<<<<< + * + * cdef convert_item_to_object(self, char *itemp): + */ + __PYX_XDEC_MEMVIEW((&__pyx_v_self->from_slice), 1); + + /* "View.MemoryView":976 + * cdef int (*to_dtype_func)(char *, object) except 0 + * + * def __dealloc__(self): # <<<<<<<<<<<<<< + * __PYX_XDEC_MEMVIEW(&self.from_slice, 1) + * + */ + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +/* "View.MemoryView":979 + * __PYX_XDEC_MEMVIEW(&self.from_slice, 1) + * + * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< + * if self.to_object_func != NULL: + * return self.to_object_func(itemp) + */ + +static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("convert_item_to_object", 0); + + /* "View.MemoryView":980 + * + * cdef convert_item_to_object(self, char *itemp): + * if self.to_object_func != NULL: # <<<<<<<<<<<<<< + * return self.to_object_func(itemp) + * else: + */ + __pyx_t_1 = ((__pyx_v_self->to_object_func != NULL) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":981 + * cdef convert_item_to_object(self, char *itemp): + * if self.to_object_func != NULL: + * return self.to_object_func(itemp) # <<<<<<<<<<<<<< + * else: + * return memoryview.convert_item_to_object(self, itemp) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __pyx_v_self->to_object_func(__pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 981, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "View.MemoryView":980 + * + * cdef convert_item_to_object(self, char *itemp): + * if self.to_object_func != NULL: # <<<<<<<<<<<<<< + * return self.to_object_func(itemp) + * else: + */ + } + + /* "View.MemoryView":983 + * return self.to_object_func(itemp) + * else: + * return memoryview.convert_item_to_object(self, itemp) # <<<<<<<<<<<<<< + * + * cdef assign_item_from_object(self, char *itemp, object value): + */ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __pyx_memoryview_convert_item_to_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 983, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + } + + /* "View.MemoryView":979 + * __PYX_XDEC_MEMVIEW(&self.from_slice, 1) + * + * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< + * if self.to_object_func != NULL: + * return self.to_object_func(itemp) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("View.MemoryView._memoryviewslice.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":985 + * return memoryview.convert_item_to_object(self, itemp) + * + * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< + * if self.to_dtype_func != NULL: + * self.to_dtype_func(itemp, value) + */ + +static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("assign_item_from_object", 0); + + /* "View.MemoryView":986 + * + * cdef assign_item_from_object(self, char *itemp, object value): + * if self.to_dtype_func != NULL: # <<<<<<<<<<<<<< + * self.to_dtype_func(itemp, value) + * else: + */ + __pyx_t_1 = ((__pyx_v_self->to_dtype_func != NULL) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":987 + * cdef assign_item_from_object(self, char *itemp, object value): + * if self.to_dtype_func != NULL: + * self.to_dtype_func(itemp, value) # <<<<<<<<<<<<<< + * else: + * memoryview.assign_item_from_object(self, itemp, value) + */ + __pyx_t_2 = __pyx_v_self->to_dtype_func(__pyx_v_itemp, __pyx_v_value); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(1, 987, __pyx_L1_error) + + /* "View.MemoryView":986 + * + * cdef assign_item_from_object(self, char *itemp, object value): + * if self.to_dtype_func != NULL: # <<<<<<<<<<<<<< + * self.to_dtype_func(itemp, value) + * else: + */ + goto __pyx_L3; + } + + /* "View.MemoryView":989 + * self.to_dtype_func(itemp, value) + * else: + * memoryview.assign_item_from_object(self, itemp, value) # <<<<<<<<<<<<<< + * + * @property + */ + /*else*/ { + __pyx_t_3 = __pyx_memoryview_assign_item_from_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 989, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_L3:; + + /* "View.MemoryView":985 + * return memoryview.convert_item_to_object(self, itemp) + * + * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< + * if self.to_dtype_func != NULL: + * self.to_dtype_func(itemp, value) + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("View.MemoryView._memoryviewslice.assign_item_from_object", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":992 + * + * @property + * def base(self): # <<<<<<<<<<<<<< + * return self.from_object + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_15View_dot_MemoryView_16_memoryviewslice_4base_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_15View_dot_MemoryView_16_memoryviewslice_4base_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__(struct __pyx_memoryviewslice_obj *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__", 0); + + /* "View.MemoryView":993 + * @property + * def base(self): + * return self.from_object # <<<<<<<<<<<<<< + * + * __pyx_getbuffer = capsule( &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)") + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->from_object); + __pyx_r = __pyx_v_self->from_object; + goto __pyx_L0; + + /* "View.MemoryView":992 + * + * @property + * def base(self): # <<<<<<<<<<<<<< + * return self.from_object + * + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw___pyx_memoryviewslice_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw___pyx_memoryviewslice_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf___pyx_memoryviewslice___reduce_cython__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("View.MemoryView._memoryviewslice.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + +/* Python wrapper */ +static PyObject *__pyx_pw___pyx_memoryviewslice_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +static PyObject *__pyx_pw___pyx_memoryviewslice_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf___pyx_memoryviewslice_2__setstate_cython__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("View.MemoryView._memoryviewslice.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":999 + * + * @cname('__pyx_memoryview_fromslice') + * cdef memoryview_fromslice(__Pyx_memviewslice memviewslice, # <<<<<<<<<<<<<< + * int ndim, + * object (*to_object_func)(char *), + */ + +static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewslice, int __pyx_v_ndim, PyObject *(*__pyx_v_to_object_func)(char *), int (*__pyx_v_to_dtype_func)(char *, PyObject *), int __pyx_v_dtype_is_object) { + struct __pyx_memoryviewslice_obj *__pyx_v_result = 0; + Py_ssize_t __pyx_v_suboffset; + PyObject *__pyx_v_length = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + __Pyx_TypeInfo *__pyx_t_4; + Py_buffer __pyx_t_5; + Py_ssize_t *__pyx_t_6; + Py_ssize_t *__pyx_t_7; + Py_ssize_t *__pyx_t_8; + Py_ssize_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("memoryview_fromslice", 0); + + /* "View.MemoryView":1007 + * cdef _memoryviewslice result + * + * if memviewslice.memview == Py_None: # <<<<<<<<<<<<<< + * return None + * + */ + __pyx_t_1 = ((((PyObject *)__pyx_v_memviewslice.memview) == Py_None) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":1008 + * + * if memviewslice.memview == Py_None: + * return None # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "View.MemoryView":1007 + * cdef _memoryviewslice result + * + * if memviewslice.memview == Py_None: # <<<<<<<<<<<<<< + * return None + * + */ + } + + /* "View.MemoryView":1013 + * + * + * result = _memoryviewslice(None, 0, dtype_is_object) # <<<<<<<<<<<<<< + * + * result.from_slice = memviewslice + */ + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1013, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1013, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + PyTuple_SET_ITEM(__pyx_t_3, 0, Py_None); + __Pyx_INCREF(__pyx_int_0); + __Pyx_GIVEREF(__pyx_int_0); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_0); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryviewslice_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1013, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_2); + __pyx_t_2 = 0; + + /* "View.MemoryView":1015 + * result = _memoryviewslice(None, 0, dtype_is_object) + * + * result.from_slice = memviewslice # <<<<<<<<<<<<<< + * __PYX_INC_MEMVIEW(&memviewslice, 1) + * + */ + __pyx_v_result->from_slice = __pyx_v_memviewslice; + + /* "View.MemoryView":1016 + * + * result.from_slice = memviewslice + * __PYX_INC_MEMVIEW(&memviewslice, 1) # <<<<<<<<<<<<<< + * + * result.from_object = ( memviewslice.memview).base + */ + __PYX_INC_MEMVIEW((&__pyx_v_memviewslice), 1); + + /* "View.MemoryView":1018 + * __PYX_INC_MEMVIEW(&memviewslice, 1) + * + * result.from_object = ( memviewslice.memview).base # <<<<<<<<<<<<<< + * result.typeinfo = memviewslice.memview.typeinfo + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_memviewslice.memview), __pyx_n_s_base); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1018, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GOTREF(__pyx_v_result->from_object); + __Pyx_DECREF(__pyx_v_result->from_object); + __pyx_v_result->from_object = __pyx_t_2; + __pyx_t_2 = 0; + + /* "View.MemoryView":1019 + * + * result.from_object = ( memviewslice.memview).base + * result.typeinfo = memviewslice.memview.typeinfo # <<<<<<<<<<<<<< + * + * result.view = memviewslice.memview.view + */ + __pyx_t_4 = __pyx_v_memviewslice.memview->typeinfo; + __pyx_v_result->__pyx_base.typeinfo = __pyx_t_4; + + /* "View.MemoryView":1021 + * result.typeinfo = memviewslice.memview.typeinfo + * + * result.view = memviewslice.memview.view # <<<<<<<<<<<<<< + * result.view.buf = memviewslice.data + * result.view.ndim = ndim + */ + __pyx_t_5 = __pyx_v_memviewslice.memview->view; + __pyx_v_result->__pyx_base.view = __pyx_t_5; + + /* "View.MemoryView":1022 + * + * result.view = memviewslice.memview.view + * result.view.buf = memviewslice.data # <<<<<<<<<<<<<< + * result.view.ndim = ndim + * (<__pyx_buffer *> &result.view).obj = Py_None + */ + __pyx_v_result->__pyx_base.view.buf = ((void *)__pyx_v_memviewslice.data); + + /* "View.MemoryView":1023 + * result.view = memviewslice.memview.view + * result.view.buf = memviewslice.data + * result.view.ndim = ndim # <<<<<<<<<<<<<< + * (<__pyx_buffer *> &result.view).obj = Py_None + * Py_INCREF(Py_None) + */ + __pyx_v_result->__pyx_base.view.ndim = __pyx_v_ndim; + + /* "View.MemoryView":1024 + * result.view.buf = memviewslice.data + * result.view.ndim = ndim + * (<__pyx_buffer *> &result.view).obj = Py_None # <<<<<<<<<<<<<< + * Py_INCREF(Py_None) + * + */ + ((Py_buffer *)(&__pyx_v_result->__pyx_base.view))->obj = Py_None; + + /* "View.MemoryView":1025 + * result.view.ndim = ndim + * (<__pyx_buffer *> &result.view).obj = Py_None + * Py_INCREF(Py_None) # <<<<<<<<<<<<<< + * + * if (memviewslice.memview).flags & PyBUF_WRITABLE: + */ + Py_INCREF(Py_None); + + /* "View.MemoryView":1027 + * Py_INCREF(Py_None) + * + * if (memviewslice.memview).flags & PyBUF_WRITABLE: # <<<<<<<<<<<<<< + * result.flags = PyBUF_RECORDS + * else: + */ + __pyx_t_1 = ((((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)->flags & PyBUF_WRITABLE) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":1028 + * + * if (memviewslice.memview).flags & PyBUF_WRITABLE: + * result.flags = PyBUF_RECORDS # <<<<<<<<<<<<<< + * else: + * result.flags = PyBUF_RECORDS_RO + */ + __pyx_v_result->__pyx_base.flags = PyBUF_RECORDS; + + /* "View.MemoryView":1027 + * Py_INCREF(Py_None) + * + * if (memviewslice.memview).flags & PyBUF_WRITABLE: # <<<<<<<<<<<<<< + * result.flags = PyBUF_RECORDS + * else: + */ + goto __pyx_L4; + } + + /* "View.MemoryView":1030 + * result.flags = PyBUF_RECORDS + * else: + * result.flags = PyBUF_RECORDS_RO # <<<<<<<<<<<<<< + * + * result.view.shape = result.from_slice.shape + */ + /*else*/ { + __pyx_v_result->__pyx_base.flags = PyBUF_RECORDS_RO; + } + __pyx_L4:; + + /* "View.MemoryView":1032 + * result.flags = PyBUF_RECORDS_RO + * + * result.view.shape = result.from_slice.shape # <<<<<<<<<<<<<< + * result.view.strides = result.from_slice.strides + * + */ + __pyx_v_result->__pyx_base.view.shape = ((Py_ssize_t *)__pyx_v_result->from_slice.shape); + + /* "View.MemoryView":1033 + * + * result.view.shape = result.from_slice.shape + * result.view.strides = result.from_slice.strides # <<<<<<<<<<<<<< + * + * + */ + __pyx_v_result->__pyx_base.view.strides = ((Py_ssize_t *)__pyx_v_result->from_slice.strides); + + /* "View.MemoryView":1036 + * + * + * result.view.suboffsets = NULL # <<<<<<<<<<<<<< + * for suboffset in result.from_slice.suboffsets[:ndim]: + * if suboffset >= 0: + */ + __pyx_v_result->__pyx_base.view.suboffsets = NULL; + + /* "View.MemoryView":1037 + * + * result.view.suboffsets = NULL + * for suboffset in result.from_slice.suboffsets[:ndim]: # <<<<<<<<<<<<<< + * if suboffset >= 0: + * result.view.suboffsets = result.from_slice.suboffsets + */ + __pyx_t_7 = (__pyx_v_result->from_slice.suboffsets + __pyx_v_ndim); + for (__pyx_t_8 = __pyx_v_result->from_slice.suboffsets; __pyx_t_8 < __pyx_t_7; __pyx_t_8++) { + __pyx_t_6 = __pyx_t_8; + __pyx_v_suboffset = (__pyx_t_6[0]); + + /* "View.MemoryView":1038 + * result.view.suboffsets = NULL + * for suboffset in result.from_slice.suboffsets[:ndim]: + * if suboffset >= 0: # <<<<<<<<<<<<<< + * result.view.suboffsets = result.from_slice.suboffsets + * break + */ + __pyx_t_1 = ((__pyx_v_suboffset >= 0) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":1039 + * for suboffset in result.from_slice.suboffsets[:ndim]: + * if suboffset >= 0: + * result.view.suboffsets = result.from_slice.suboffsets # <<<<<<<<<<<<<< + * break + * + */ + __pyx_v_result->__pyx_base.view.suboffsets = ((Py_ssize_t *)__pyx_v_result->from_slice.suboffsets); + + /* "View.MemoryView":1040 + * if suboffset >= 0: + * result.view.suboffsets = result.from_slice.suboffsets + * break # <<<<<<<<<<<<<< + * + * result.view.len = result.view.itemsize + */ + goto __pyx_L6_break; + + /* "View.MemoryView":1038 + * result.view.suboffsets = NULL + * for suboffset in result.from_slice.suboffsets[:ndim]: + * if suboffset >= 0: # <<<<<<<<<<<<<< + * result.view.suboffsets = result.from_slice.suboffsets + * break + */ + } + } + __pyx_L6_break:; + + /* "View.MemoryView":1042 + * break + * + * result.view.len = result.view.itemsize # <<<<<<<<<<<<<< + * for length in result.view.shape[:ndim]: + * result.view.len *= length + */ + __pyx_t_9 = __pyx_v_result->__pyx_base.view.itemsize; + __pyx_v_result->__pyx_base.view.len = __pyx_t_9; + + /* "View.MemoryView":1043 + * + * result.view.len = result.view.itemsize + * for length in result.view.shape[:ndim]: # <<<<<<<<<<<<<< + * result.view.len *= length + * + */ + __pyx_t_7 = (__pyx_v_result->__pyx_base.view.shape + __pyx_v_ndim); + for (__pyx_t_8 = __pyx_v_result->__pyx_base.view.shape; __pyx_t_8 < __pyx_t_7; __pyx_t_8++) { + __pyx_t_6 = __pyx_t_8; + __pyx_t_2 = PyInt_FromSsize_t((__pyx_t_6[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1043, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_2); + __pyx_t_2 = 0; + + /* "View.MemoryView":1044 + * result.view.len = result.view.itemsize + * for length in result.view.shape[:ndim]: + * result.view.len *= length # <<<<<<<<<<<<<< + * + * result.to_object_func = to_object_func + */ + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_result->__pyx_base.view.len); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1044, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_2, __pyx_v_length); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1044, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 1044, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_result->__pyx_base.view.len = __pyx_t_9; + } + + /* "View.MemoryView":1046 + * result.view.len *= length + * + * result.to_object_func = to_object_func # <<<<<<<<<<<<<< + * result.to_dtype_func = to_dtype_func + * + */ + __pyx_v_result->to_object_func = __pyx_v_to_object_func; + + /* "View.MemoryView":1047 + * + * result.to_object_func = to_object_func + * result.to_dtype_func = to_dtype_func # <<<<<<<<<<<<<< + * + * return result + */ + __pyx_v_result->to_dtype_func = __pyx_v_to_dtype_func; + + /* "View.MemoryView":1049 + * result.to_dtype_func = to_dtype_func + * + * return result # <<<<<<<<<<<<<< + * + * @cname('__pyx_memoryview_get_slice_from_memoryview') + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(((PyObject *)__pyx_v_result)); + __pyx_r = ((PyObject *)__pyx_v_result); + goto __pyx_L0; + + /* "View.MemoryView":999 + * + * @cname('__pyx_memoryview_fromslice') + * cdef memoryview_fromslice(__Pyx_memviewslice memviewslice, # <<<<<<<<<<<<<< + * int ndim, + * object (*to_object_func)(char *), + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("View.MemoryView.memoryview_fromslice", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_result); + __Pyx_XDECREF(__pyx_v_length); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":1052 + * + * @cname('__pyx_memoryview_get_slice_from_memoryview') + * cdef __Pyx_memviewslice *get_slice_from_memview(memoryview memview, # <<<<<<<<<<<<<< + * __Pyx_memviewslice *mslice) except NULL: + * cdef _memoryviewslice obj + */ + +static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __pyx_memoryview_obj *__pyx_v_memview, __Pyx_memviewslice *__pyx_v_mslice) { + struct __pyx_memoryviewslice_obj *__pyx_v_obj = 0; + __Pyx_memviewslice *__pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_slice_from_memview", 0); + + /* "View.MemoryView":1055 + * __Pyx_memviewslice *mslice) except NULL: + * cdef _memoryviewslice obj + * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< + * obj = memview + * return &obj.from_slice + */ + __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":1056 + * cdef _memoryviewslice obj + * if isinstance(memview, _memoryviewslice): + * obj = memview # <<<<<<<<<<<<<< + * return &obj.from_slice + * else: + */ + if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(1, 1056, __pyx_L1_error) + __pyx_t_3 = ((PyObject *)__pyx_v_memview); + __Pyx_INCREF(__pyx_t_3); + __pyx_v_obj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_3); + __pyx_t_3 = 0; + + /* "View.MemoryView":1057 + * if isinstance(memview, _memoryviewslice): + * obj = memview + * return &obj.from_slice # <<<<<<<<<<<<<< + * else: + * slice_copy(memview, mslice) + */ + __pyx_r = (&__pyx_v_obj->from_slice); + goto __pyx_L0; + + /* "View.MemoryView":1055 + * __Pyx_memviewslice *mslice) except NULL: + * cdef _memoryviewslice obj + * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< + * obj = memview + * return &obj.from_slice + */ + } + + /* "View.MemoryView":1059 + * return &obj.from_slice + * else: + * slice_copy(memview, mslice) # <<<<<<<<<<<<<< + * return mslice + * + */ + /*else*/ { + __pyx_memoryview_slice_copy(__pyx_v_memview, __pyx_v_mslice); + + /* "View.MemoryView":1060 + * else: + * slice_copy(memview, mslice) + * return mslice # <<<<<<<<<<<<<< + * + * @cname('__pyx_memoryview_slice_copy') + */ + __pyx_r = __pyx_v_mslice; + goto __pyx_L0; + } + + /* "View.MemoryView":1052 + * + * @cname('__pyx_memoryview_get_slice_from_memoryview') + * cdef __Pyx_memviewslice *get_slice_from_memview(memoryview memview, # <<<<<<<<<<<<<< + * __Pyx_memviewslice *mslice) except NULL: + * cdef _memoryviewslice obj + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("View.MemoryView.get_slice_from_memview", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_obj); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":1063 + * + * @cname('__pyx_memoryview_slice_copy') + * cdef void slice_copy(memoryview memview, __Pyx_memviewslice *dst): # <<<<<<<<<<<<<< + * cdef int dim + * cdef (Py_ssize_t*) shape, strides, suboffsets + */ + +static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_memview, __Pyx_memviewslice *__pyx_v_dst) { + int __pyx_v_dim; + Py_ssize_t *__pyx_v_shape; + Py_ssize_t *__pyx_v_strides; + Py_ssize_t *__pyx_v_suboffsets; + __Pyx_RefNannyDeclarations + Py_ssize_t *__pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + int __pyx_t_4; + Py_ssize_t __pyx_t_5; + __Pyx_RefNannySetupContext("slice_copy", 0); + + /* "View.MemoryView":1067 + * cdef (Py_ssize_t*) shape, strides, suboffsets + * + * shape = memview.view.shape # <<<<<<<<<<<<<< + * strides = memview.view.strides + * suboffsets = memview.view.suboffsets + */ + __pyx_t_1 = __pyx_v_memview->view.shape; + __pyx_v_shape = __pyx_t_1; + + /* "View.MemoryView":1068 + * + * shape = memview.view.shape + * strides = memview.view.strides # <<<<<<<<<<<<<< + * suboffsets = memview.view.suboffsets + * + */ + __pyx_t_1 = __pyx_v_memview->view.strides; + __pyx_v_strides = __pyx_t_1; + + /* "View.MemoryView":1069 + * shape = memview.view.shape + * strides = memview.view.strides + * suboffsets = memview.view.suboffsets # <<<<<<<<<<<<<< + * + * dst.memview = <__pyx_memoryview *> memview + */ + __pyx_t_1 = __pyx_v_memview->view.suboffsets; + __pyx_v_suboffsets = __pyx_t_1; + + /* "View.MemoryView":1071 + * suboffsets = memview.view.suboffsets + * + * dst.memview = <__pyx_memoryview *> memview # <<<<<<<<<<<<<< + * dst.data = memview.view.buf + * + */ + __pyx_v_dst->memview = ((struct __pyx_memoryview_obj *)__pyx_v_memview); + + /* "View.MemoryView":1072 + * + * dst.memview = <__pyx_memoryview *> memview + * dst.data = memview.view.buf # <<<<<<<<<<<<<< + * + * for dim in range(memview.view.ndim): + */ + __pyx_v_dst->data = ((char *)__pyx_v_memview->view.buf); + + /* "View.MemoryView":1074 + * dst.data = memview.view.buf + * + * for dim in range(memview.view.ndim): # <<<<<<<<<<<<<< + * dst.shape[dim] = shape[dim] + * dst.strides[dim] = strides[dim] + */ + __pyx_t_2 = __pyx_v_memview->view.ndim; + __pyx_t_3 = __pyx_t_2; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_dim = __pyx_t_4; + + /* "View.MemoryView":1075 + * + * for dim in range(memview.view.ndim): + * dst.shape[dim] = shape[dim] # <<<<<<<<<<<<<< + * dst.strides[dim] = strides[dim] + * dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1 + */ + (__pyx_v_dst->shape[__pyx_v_dim]) = (__pyx_v_shape[__pyx_v_dim]); + + /* "View.MemoryView":1076 + * for dim in range(memview.view.ndim): + * dst.shape[dim] = shape[dim] + * dst.strides[dim] = strides[dim] # <<<<<<<<<<<<<< + * dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1 + * + */ + (__pyx_v_dst->strides[__pyx_v_dim]) = (__pyx_v_strides[__pyx_v_dim]); + + /* "View.MemoryView":1077 + * dst.shape[dim] = shape[dim] + * dst.strides[dim] = strides[dim] + * dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1 # <<<<<<<<<<<<<< + * + * @cname('__pyx_memoryview_copy_object') + */ + if ((__pyx_v_suboffsets != 0)) { + __pyx_t_5 = (__pyx_v_suboffsets[__pyx_v_dim]); + } else { + __pyx_t_5 = -1L; + } + (__pyx_v_dst->suboffsets[__pyx_v_dim]) = __pyx_t_5; + } + + /* "View.MemoryView":1063 + * + * @cname('__pyx_memoryview_slice_copy') + * cdef void slice_copy(memoryview memview, __Pyx_memviewslice *dst): # <<<<<<<<<<<<<< + * cdef int dim + * cdef (Py_ssize_t*) shape, strides, suboffsets + */ + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +/* "View.MemoryView":1080 + * + * @cname('__pyx_memoryview_copy_object') + * cdef memoryview_copy(memoryview memview): # <<<<<<<<<<<<<< + * "Create a new memoryview object" + * cdef __Pyx_memviewslice memviewslice + */ + +static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx_v_memview) { + __Pyx_memviewslice __pyx_v_memviewslice; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("memoryview_copy", 0); + + /* "View.MemoryView":1083 + * "Create a new memoryview object" + * cdef __Pyx_memviewslice memviewslice + * slice_copy(memview, &memviewslice) # <<<<<<<<<<<<<< + * return memoryview_copy_from_slice(memview, &memviewslice) + * + */ + __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_memviewslice)); + + /* "View.MemoryView":1084 + * cdef __Pyx_memviewslice memviewslice + * slice_copy(memview, &memviewslice) + * return memoryview_copy_from_slice(memview, &memviewslice) # <<<<<<<<<<<<<< + * + * @cname('__pyx_memoryview_copy_object_from_slice') + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_memoryview_copy_object_from_slice(__pyx_v_memview, (&__pyx_v_memviewslice)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1084, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "View.MemoryView":1080 + * + * @cname('__pyx_memoryview_copy_object') + * cdef memoryview_copy(memoryview memview): # <<<<<<<<<<<<<< + * "Create a new memoryview object" + * cdef __Pyx_memviewslice memviewslice + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("View.MemoryView.memoryview_copy", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":1087 + * + * @cname('__pyx_memoryview_copy_object_from_slice') + * cdef memoryview_copy_from_slice(memoryview memview, __Pyx_memviewslice *memviewslice): # <<<<<<<<<<<<<< + * """ + * Create a new memoryview object from a given memoryview object and slice. + */ + +static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview_obj *__pyx_v_memview, __Pyx_memviewslice *__pyx_v_memviewslice) { + PyObject *(*__pyx_v_to_object_func)(char *); + int (*__pyx_v_to_dtype_func)(char *, PyObject *); + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *(*__pyx_t_3)(char *); + int (*__pyx_t_4)(char *, PyObject *); + PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("memoryview_copy_from_slice", 0); + + /* "View.MemoryView":1094 + * cdef int (*to_dtype_func)(char *, object) except 0 + * + * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< + * to_object_func = (<_memoryviewslice> memview).to_object_func + * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func + */ + __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); + __pyx_t_2 = (__pyx_t_1 != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":1095 + * + * if isinstance(memview, _memoryviewslice): + * to_object_func = (<_memoryviewslice> memview).to_object_func # <<<<<<<<<<<<<< + * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func + * else: + */ + __pyx_t_3 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_object_func; + __pyx_v_to_object_func = __pyx_t_3; + + /* "View.MemoryView":1096 + * if isinstance(memview, _memoryviewslice): + * to_object_func = (<_memoryviewslice> memview).to_object_func + * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func # <<<<<<<<<<<<<< + * else: + * to_object_func = NULL + */ + __pyx_t_4 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_dtype_func; + __pyx_v_to_dtype_func = __pyx_t_4; + + /* "View.MemoryView":1094 + * cdef int (*to_dtype_func)(char *, object) except 0 + * + * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< + * to_object_func = (<_memoryviewslice> memview).to_object_func + * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func + */ + goto __pyx_L3; + } + + /* "View.MemoryView":1098 + * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func + * else: + * to_object_func = NULL # <<<<<<<<<<<<<< + * to_dtype_func = NULL + * + */ + /*else*/ { + __pyx_v_to_object_func = NULL; + + /* "View.MemoryView":1099 + * else: + * to_object_func = NULL + * to_dtype_func = NULL # <<<<<<<<<<<<<< + * + * return memoryview_fromslice(memviewslice[0], memview.view.ndim, + */ + __pyx_v_to_dtype_func = NULL; + } + __pyx_L3:; + + /* "View.MemoryView":1101 + * to_dtype_func = NULL + * + * return memoryview_fromslice(memviewslice[0], memview.view.ndim, # <<<<<<<<<<<<<< + * to_object_func, to_dtype_func, + * memview.dtype_is_object) + */ + __Pyx_XDECREF(__pyx_r); + + /* "View.MemoryView":1103 + * return memoryview_fromslice(memviewslice[0], memview.view.ndim, + * to_object_func, to_dtype_func, + * memview.dtype_is_object) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_5 = __pyx_memoryview_fromslice((__pyx_v_memviewslice[0]), __pyx_v_memview->view.ndim, __pyx_v_to_object_func, __pyx_v_to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "View.MemoryView":1087 + * + * @cname('__pyx_memoryview_copy_object_from_slice') + * cdef memoryview_copy_from_slice(memoryview memview, __Pyx_memviewslice *memviewslice): # <<<<<<<<<<<<<< + * """ + * Create a new memoryview object from a given memoryview object and slice. + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("View.MemoryView.memoryview_copy_from_slice", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "View.MemoryView":1109 + * + * + * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: # <<<<<<<<<<<<<< + * if arg < 0: + * return -arg + */ + +static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) { + Py_ssize_t __pyx_r; + int __pyx_t_1; + + /* "View.MemoryView":1110 + * + * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: + * if arg < 0: # <<<<<<<<<<<<<< + * return -arg + * else: + */ + __pyx_t_1 = ((__pyx_v_arg < 0) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":1111 + * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: + * if arg < 0: + * return -arg # <<<<<<<<<<<<<< + * else: + * return arg + */ + __pyx_r = (-__pyx_v_arg); + goto __pyx_L0; + + /* "View.MemoryView":1110 + * + * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: + * if arg < 0: # <<<<<<<<<<<<<< + * return -arg + * else: + */ + } + + /* "View.MemoryView":1113 + * return -arg + * else: + * return arg # <<<<<<<<<<<<<< + * + * @cname('__pyx_get_best_slice_order') + */ + /*else*/ { + __pyx_r = __pyx_v_arg; + goto __pyx_L0; + } + + /* "View.MemoryView":1109 + * + * + * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil: # <<<<<<<<<<<<<< + * if arg < 0: + * return -arg + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "View.MemoryView":1116 + * + * @cname('__pyx_get_best_slice_order') + * cdef char get_best_order(__Pyx_memviewslice *mslice, int ndim) nogil: # <<<<<<<<<<<<<< + * """ + * Figure out the best memory access order for a given slice. + */ + +static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int __pyx_v_ndim) { + int __pyx_v_i; + Py_ssize_t __pyx_v_c_stride; + Py_ssize_t __pyx_v_f_stride; + char __pyx_r; + int __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + int __pyx_t_4; + + /* "View.MemoryView":1121 + * """ + * cdef int i + * cdef Py_ssize_t c_stride = 0 # <<<<<<<<<<<<<< + * cdef Py_ssize_t f_stride = 0 + * + */ + __pyx_v_c_stride = 0; + + /* "View.MemoryView":1122 + * cdef int i + * cdef Py_ssize_t c_stride = 0 + * cdef Py_ssize_t f_stride = 0 # <<<<<<<<<<<<<< + * + * for i in range(ndim - 1, -1, -1): + */ + __pyx_v_f_stride = 0; + + /* "View.MemoryView":1124 + * cdef Py_ssize_t f_stride = 0 + * + * for i in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< + * if mslice.shape[i] > 1: + * c_stride = mslice.strides[i] + */ + for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1; __pyx_t_1-=1) { + __pyx_v_i = __pyx_t_1; + + /* "View.MemoryView":1125 + * + * for i in range(ndim - 1, -1, -1): + * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< + * c_stride = mslice.strides[i] + * break + */ + __pyx_t_2 = (((__pyx_v_mslice->shape[__pyx_v_i]) > 1) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":1126 + * for i in range(ndim - 1, -1, -1): + * if mslice.shape[i] > 1: + * c_stride = mslice.strides[i] # <<<<<<<<<<<<<< + * break + * + */ + __pyx_v_c_stride = (__pyx_v_mslice->strides[__pyx_v_i]); + + /* "View.MemoryView":1127 + * if mslice.shape[i] > 1: + * c_stride = mslice.strides[i] + * break # <<<<<<<<<<<<<< + * + * for i in range(ndim): + */ + goto __pyx_L4_break; + + /* "View.MemoryView":1125 + * + * for i in range(ndim - 1, -1, -1): + * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< + * c_stride = mslice.strides[i] + * break + */ + } + } + __pyx_L4_break:; + + /* "View.MemoryView":1129 + * break + * + * for i in range(ndim): # <<<<<<<<<<<<<< + * if mslice.shape[i] > 1: + * f_stride = mslice.strides[i] + */ + __pyx_t_1 = __pyx_v_ndim; + __pyx_t_3 = __pyx_t_1; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + + /* "View.MemoryView":1130 + * + * for i in range(ndim): + * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< + * f_stride = mslice.strides[i] + * break + */ + __pyx_t_2 = (((__pyx_v_mslice->shape[__pyx_v_i]) > 1) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":1131 + * for i in range(ndim): + * if mslice.shape[i] > 1: + * f_stride = mslice.strides[i] # <<<<<<<<<<<<<< + * break + * + */ + __pyx_v_f_stride = (__pyx_v_mslice->strides[__pyx_v_i]); + + /* "View.MemoryView":1132 + * if mslice.shape[i] > 1: + * f_stride = mslice.strides[i] + * break # <<<<<<<<<<<<<< + * + * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): + */ + goto __pyx_L7_break; + + /* "View.MemoryView":1130 + * + * for i in range(ndim): + * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< + * f_stride = mslice.strides[i] + * break + */ + } + } + __pyx_L7_break:; + + /* "View.MemoryView":1134 + * break + * + * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): # <<<<<<<<<<<<<< + * return 'C' + * else: + */ + __pyx_t_2 = ((abs_py_ssize_t(__pyx_v_c_stride) <= abs_py_ssize_t(__pyx_v_f_stride)) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":1135 + * + * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): + * return 'C' # <<<<<<<<<<<<<< + * else: + * return 'F' + */ + __pyx_r = 'C'; + goto __pyx_L0; + + /* "View.MemoryView":1134 + * break + * + * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): # <<<<<<<<<<<<<< + * return 'C' + * else: + */ + } + + /* "View.MemoryView":1137 + * return 'C' + * else: + * return 'F' # <<<<<<<<<<<<<< + * + * @cython.cdivision(True) + */ + /*else*/ { + __pyx_r = 'F'; + goto __pyx_L0; + } + + /* "View.MemoryView":1116 + * + * @cname('__pyx_get_best_slice_order') + * cdef char get_best_order(__Pyx_memviewslice *mslice, int ndim) nogil: # <<<<<<<<<<<<<< + * """ + * Figure out the best memory access order for a given slice. + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "View.MemoryView":1140 + * + * @cython.cdivision(True) + * cdef void _copy_strided_to_strided(char *src_data, Py_ssize_t *src_strides, # <<<<<<<<<<<<<< + * char *dst_data, Py_ssize_t *dst_strides, + * Py_ssize_t *src_shape, Py_ssize_t *dst_shape, + */ + +static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v_src_strides, char *__pyx_v_dst_data, Py_ssize_t *__pyx_v_dst_strides, Py_ssize_t *__pyx_v_src_shape, Py_ssize_t *__pyx_v_dst_shape, int __pyx_v_ndim, size_t __pyx_v_itemsize) { + CYTHON_UNUSED Py_ssize_t __pyx_v_i; + CYTHON_UNUSED Py_ssize_t __pyx_v_src_extent; + Py_ssize_t __pyx_v_dst_extent; + Py_ssize_t __pyx_v_src_stride; + Py_ssize_t __pyx_v_dst_stride; + int __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + Py_ssize_t __pyx_t_4; + Py_ssize_t __pyx_t_5; + Py_ssize_t __pyx_t_6; + + /* "View.MemoryView":1147 + * + * cdef Py_ssize_t i + * cdef Py_ssize_t src_extent = src_shape[0] # <<<<<<<<<<<<<< + * cdef Py_ssize_t dst_extent = dst_shape[0] + * cdef Py_ssize_t src_stride = src_strides[0] + */ + __pyx_v_src_extent = (__pyx_v_src_shape[0]); + + /* "View.MemoryView":1148 + * cdef Py_ssize_t i + * cdef Py_ssize_t src_extent = src_shape[0] + * cdef Py_ssize_t dst_extent = dst_shape[0] # <<<<<<<<<<<<<< + * cdef Py_ssize_t src_stride = src_strides[0] + * cdef Py_ssize_t dst_stride = dst_strides[0] + */ + __pyx_v_dst_extent = (__pyx_v_dst_shape[0]); + + /* "View.MemoryView":1149 + * cdef Py_ssize_t src_extent = src_shape[0] + * cdef Py_ssize_t dst_extent = dst_shape[0] + * cdef Py_ssize_t src_stride = src_strides[0] # <<<<<<<<<<<<<< + * cdef Py_ssize_t dst_stride = dst_strides[0] + * + */ + __pyx_v_src_stride = (__pyx_v_src_strides[0]); + + /* "View.MemoryView":1150 + * cdef Py_ssize_t dst_extent = dst_shape[0] + * cdef Py_ssize_t src_stride = src_strides[0] + * cdef Py_ssize_t dst_stride = dst_strides[0] # <<<<<<<<<<<<<< + * + * if ndim == 1: + */ + __pyx_v_dst_stride = (__pyx_v_dst_strides[0]); + + /* "View.MemoryView":1152 + * cdef Py_ssize_t dst_stride = dst_strides[0] + * + * if ndim == 1: # <<<<<<<<<<<<<< + * if (src_stride > 0 and dst_stride > 0 and + * src_stride == itemsize == dst_stride): + */ + __pyx_t_1 = ((__pyx_v_ndim == 1) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":1153 + * + * if ndim == 1: + * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< + * src_stride == itemsize == dst_stride): + * memcpy(dst_data, src_data, itemsize * dst_extent) + */ + __pyx_t_2 = ((__pyx_v_src_stride > 0) != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L5_bool_binop_done; + } + __pyx_t_2 = ((__pyx_v_dst_stride > 0) != 0); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L5_bool_binop_done; + } + + /* "View.MemoryView":1154 + * if ndim == 1: + * if (src_stride > 0 and dst_stride > 0 and + * src_stride == itemsize == dst_stride): # <<<<<<<<<<<<<< + * memcpy(dst_data, src_data, itemsize * dst_extent) + * else: + */ + __pyx_t_2 = (((size_t)__pyx_v_src_stride) == __pyx_v_itemsize); + if (__pyx_t_2) { + __pyx_t_2 = (__pyx_v_itemsize == ((size_t)__pyx_v_dst_stride)); + } + __pyx_t_3 = (__pyx_t_2 != 0); + __pyx_t_1 = __pyx_t_3; + __pyx_L5_bool_binop_done:; + + /* "View.MemoryView":1153 + * + * if ndim == 1: + * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< + * src_stride == itemsize == dst_stride): + * memcpy(dst_data, src_data, itemsize * dst_extent) + */ + if (__pyx_t_1) { + + /* "View.MemoryView":1155 + * if (src_stride > 0 and dst_stride > 0 and + * src_stride == itemsize == dst_stride): + * memcpy(dst_data, src_data, itemsize * dst_extent) # <<<<<<<<<<<<<< + * else: + * for i in range(dst_extent): + */ + (void)(memcpy(__pyx_v_dst_data, __pyx_v_src_data, (__pyx_v_itemsize * __pyx_v_dst_extent))); + + /* "View.MemoryView":1153 + * + * if ndim == 1: + * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< + * src_stride == itemsize == dst_stride): + * memcpy(dst_data, src_data, itemsize * dst_extent) + */ + goto __pyx_L4; + } + + /* "View.MemoryView":1157 + * memcpy(dst_data, src_data, itemsize * dst_extent) + * else: + * for i in range(dst_extent): # <<<<<<<<<<<<<< + * memcpy(dst_data, src_data, itemsize) + * src_data += src_stride + */ + /*else*/ { + __pyx_t_4 = __pyx_v_dst_extent; + __pyx_t_5 = __pyx_t_4; + for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { + __pyx_v_i = __pyx_t_6; + + /* "View.MemoryView":1158 + * else: + * for i in range(dst_extent): + * memcpy(dst_data, src_data, itemsize) # <<<<<<<<<<<<<< + * src_data += src_stride + * dst_data += dst_stride + */ + (void)(memcpy(__pyx_v_dst_data, __pyx_v_src_data, __pyx_v_itemsize)); + + /* "View.MemoryView":1159 + * for i in range(dst_extent): + * memcpy(dst_data, src_data, itemsize) + * src_data += src_stride # <<<<<<<<<<<<<< + * dst_data += dst_stride + * else: + */ + __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride); + + /* "View.MemoryView":1160 + * memcpy(dst_data, src_data, itemsize) + * src_data += src_stride + * dst_data += dst_stride # <<<<<<<<<<<<<< + * else: + * for i in range(dst_extent): + */ + __pyx_v_dst_data = (__pyx_v_dst_data + __pyx_v_dst_stride); + } + } + __pyx_L4:; + + /* "View.MemoryView":1152 + * cdef Py_ssize_t dst_stride = dst_strides[0] + * + * if ndim == 1: # <<<<<<<<<<<<<< + * if (src_stride > 0 and dst_stride > 0 and + * src_stride == itemsize == dst_stride): + */ + goto __pyx_L3; + } + + /* "View.MemoryView":1162 + * dst_data += dst_stride + * else: + * for i in range(dst_extent): # <<<<<<<<<<<<<< + * _copy_strided_to_strided(src_data, src_strides + 1, + * dst_data, dst_strides + 1, + */ + /*else*/ { + __pyx_t_4 = __pyx_v_dst_extent; + __pyx_t_5 = __pyx_t_4; + for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { + __pyx_v_i = __pyx_t_6; + + /* "View.MemoryView":1163 + * else: + * for i in range(dst_extent): + * _copy_strided_to_strided(src_data, src_strides + 1, # <<<<<<<<<<<<<< + * dst_data, dst_strides + 1, + * src_shape + 1, dst_shape + 1, + */ + _copy_strided_to_strided(__pyx_v_src_data, (__pyx_v_src_strides + 1), __pyx_v_dst_data, (__pyx_v_dst_strides + 1), (__pyx_v_src_shape + 1), (__pyx_v_dst_shape + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize); + + /* "View.MemoryView":1167 + * src_shape + 1, dst_shape + 1, + * ndim - 1, itemsize) + * src_data += src_stride # <<<<<<<<<<<<<< + * dst_data += dst_stride + * + */ + __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride); + + /* "View.MemoryView":1168 + * ndim - 1, itemsize) + * src_data += src_stride + * dst_data += dst_stride # <<<<<<<<<<<<<< + * + * cdef void copy_strided_to_strided(__Pyx_memviewslice *src, + */ + __pyx_v_dst_data = (__pyx_v_dst_data + __pyx_v_dst_stride); + } + } + __pyx_L3:; + + /* "View.MemoryView":1140 + * + * @cython.cdivision(True) + * cdef void _copy_strided_to_strided(char *src_data, Py_ssize_t *src_strides, # <<<<<<<<<<<<<< + * char *dst_data, Py_ssize_t *dst_strides, + * Py_ssize_t *src_shape, Py_ssize_t *dst_shape, + */ + + /* function exit code */ +} + +/* "View.MemoryView":1170 + * dst_data += dst_stride + * + * cdef void copy_strided_to_strided(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< + * __Pyx_memviewslice *dst, + * int ndim, size_t itemsize) nogil: + */ + +static void copy_strided_to_strided(__Pyx_memviewslice *__pyx_v_src, __Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize) { + + /* "View.MemoryView":1173 + * __Pyx_memviewslice *dst, + * int ndim, size_t itemsize) nogil: + * _copy_strided_to_strided(src.data, src.strides, dst.data, dst.strides, # <<<<<<<<<<<<<< + * src.shape, dst.shape, ndim, itemsize) + * + */ + _copy_strided_to_strided(__pyx_v_src->data, __pyx_v_src->strides, __pyx_v_dst->data, __pyx_v_dst->strides, __pyx_v_src->shape, __pyx_v_dst->shape, __pyx_v_ndim, __pyx_v_itemsize); + + /* "View.MemoryView":1170 + * dst_data += dst_stride + * + * cdef void copy_strided_to_strided(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< + * __Pyx_memviewslice *dst, + * int ndim, size_t itemsize) nogil: + */ + + /* function exit code */ +} + +/* "View.MemoryView":1177 + * + * @cname('__pyx_memoryview_slice_get_size') + * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) nogil: # <<<<<<<<<<<<<< + * "Return the size of the memory occupied by the slice in number of bytes" + * cdef Py_ssize_t shape, size = src.memview.view.itemsize + */ + +static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_src, int __pyx_v_ndim) { + Py_ssize_t __pyx_v_shape; + Py_ssize_t __pyx_v_size; + Py_ssize_t __pyx_r; + Py_ssize_t __pyx_t_1; + Py_ssize_t *__pyx_t_2; + Py_ssize_t *__pyx_t_3; + Py_ssize_t *__pyx_t_4; + + /* "View.MemoryView":1179 + * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) nogil: + * "Return the size of the memory occupied by the slice in number of bytes" + * cdef Py_ssize_t shape, size = src.memview.view.itemsize # <<<<<<<<<<<<<< + * + * for shape in src.shape[:ndim]: + */ + __pyx_t_1 = __pyx_v_src->memview->view.itemsize; + __pyx_v_size = __pyx_t_1; + + /* "View.MemoryView":1181 + * cdef Py_ssize_t shape, size = src.memview.view.itemsize + * + * for shape in src.shape[:ndim]: # <<<<<<<<<<<<<< + * size *= shape + * + */ + __pyx_t_3 = (__pyx_v_src->shape + __pyx_v_ndim); + for (__pyx_t_4 = __pyx_v_src->shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) { + __pyx_t_2 = __pyx_t_4; + __pyx_v_shape = (__pyx_t_2[0]); + + /* "View.MemoryView":1182 + * + * for shape in src.shape[:ndim]: + * size *= shape # <<<<<<<<<<<<<< + * + * return size + */ + __pyx_v_size = (__pyx_v_size * __pyx_v_shape); + } + + /* "View.MemoryView":1184 + * size *= shape + * + * return size # <<<<<<<<<<<<<< + * + * @cname('__pyx_fill_contig_strides_array') + */ + __pyx_r = __pyx_v_size; + goto __pyx_L0; + + /* "View.MemoryView":1177 + * + * @cname('__pyx_memoryview_slice_get_size') + * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) nogil: # <<<<<<<<<<<<<< + * "Return the size of the memory occupied by the slice in number of bytes" + * cdef Py_ssize_t shape, size = src.memview.view.itemsize + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "View.MemoryView":1187 + * + * @cname('__pyx_fill_contig_strides_array') + * cdef Py_ssize_t fill_contig_strides_array( # <<<<<<<<<<<<<< + * Py_ssize_t *shape, Py_ssize_t *strides, Py_ssize_t stride, + * int ndim, char order) nogil: + */ + +static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, Py_ssize_t __pyx_v_stride, int __pyx_v_ndim, char __pyx_v_order) { + int __pyx_v_idx; + Py_ssize_t __pyx_r; + int __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + int __pyx_t_4; + + /* "View.MemoryView":1196 + * cdef int idx + * + * if order == 'F': # <<<<<<<<<<<<<< + * for idx in range(ndim): + * strides[idx] = stride + */ + __pyx_t_1 = ((__pyx_v_order == 'F') != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":1197 + * + * if order == 'F': + * for idx in range(ndim): # <<<<<<<<<<<<<< + * strides[idx] = stride + * stride *= shape[idx] + */ + __pyx_t_2 = __pyx_v_ndim; + __pyx_t_3 = __pyx_t_2; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_idx = __pyx_t_4; + + /* "View.MemoryView":1198 + * if order == 'F': + * for idx in range(ndim): + * strides[idx] = stride # <<<<<<<<<<<<<< + * stride *= shape[idx] + * else: + */ + (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride; + + /* "View.MemoryView":1199 + * for idx in range(ndim): + * strides[idx] = stride + * stride *= shape[idx] # <<<<<<<<<<<<<< + * else: + * for idx in range(ndim - 1, -1, -1): + */ + __pyx_v_stride = (__pyx_v_stride * (__pyx_v_shape[__pyx_v_idx])); + } + + /* "View.MemoryView":1196 + * cdef int idx + * + * if order == 'F': # <<<<<<<<<<<<<< + * for idx in range(ndim): + * strides[idx] = stride + */ + goto __pyx_L3; + } + + /* "View.MemoryView":1201 + * stride *= shape[idx] + * else: + * for idx in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< + * strides[idx] = stride + * stride *= shape[idx] + */ + /*else*/ { + for (__pyx_t_2 = (__pyx_v_ndim - 1); __pyx_t_2 > -1; __pyx_t_2-=1) { + __pyx_v_idx = __pyx_t_2; + + /* "View.MemoryView":1202 + * else: + * for idx in range(ndim - 1, -1, -1): + * strides[idx] = stride # <<<<<<<<<<<<<< + * stride *= shape[idx] + * + */ + (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride; + + /* "View.MemoryView":1203 + * for idx in range(ndim - 1, -1, -1): + * strides[idx] = stride + * stride *= shape[idx] # <<<<<<<<<<<<<< + * + * return stride + */ + __pyx_v_stride = (__pyx_v_stride * (__pyx_v_shape[__pyx_v_idx])); + } + } + __pyx_L3:; + + /* "View.MemoryView":1205 + * stride *= shape[idx] + * + * return stride # <<<<<<<<<<<<<< + * + * @cname('__pyx_memoryview_copy_data_to_temp') + */ + __pyx_r = __pyx_v_stride; + goto __pyx_L0; + + /* "View.MemoryView":1187 + * + * @cname('__pyx_fill_contig_strides_array') + * cdef Py_ssize_t fill_contig_strides_array( # <<<<<<<<<<<<<< + * Py_ssize_t *shape, Py_ssize_t *strides, Py_ssize_t stride, + * int ndim, char order) nogil: + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "View.MemoryView":1208 + * + * @cname('__pyx_memoryview_copy_data_to_temp') + * cdef void *copy_data_to_temp(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< + * __Pyx_memviewslice *tmpslice, + * char order, + */ + +static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __Pyx_memviewslice *__pyx_v_tmpslice, char __pyx_v_order, int __pyx_v_ndim) { + int __pyx_v_i; + void *__pyx_v_result; + size_t __pyx_v_itemsize; + size_t __pyx_v_size; + void *__pyx_r; + Py_ssize_t __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + struct __pyx_memoryview_obj *__pyx_t_4; + int __pyx_t_5; + int __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + + /* "View.MemoryView":1219 + * cdef void *result + * + * cdef size_t itemsize = src.memview.view.itemsize # <<<<<<<<<<<<<< + * cdef size_t size = slice_get_size(src, ndim) + * + */ + __pyx_t_1 = __pyx_v_src->memview->view.itemsize; + __pyx_v_itemsize = __pyx_t_1; + + /* "View.MemoryView":1220 + * + * cdef size_t itemsize = src.memview.view.itemsize + * cdef size_t size = slice_get_size(src, ndim) # <<<<<<<<<<<<<< + * + * result = malloc(size) + */ + __pyx_v_size = __pyx_memoryview_slice_get_size(__pyx_v_src, __pyx_v_ndim); + + /* "View.MemoryView":1222 + * cdef size_t size = slice_get_size(src, ndim) + * + * result = malloc(size) # <<<<<<<<<<<<<< + * if not result: + * _err(MemoryError, NULL) + */ + __pyx_v_result = malloc(__pyx_v_size); + + /* "View.MemoryView":1223 + * + * result = malloc(size) + * if not result: # <<<<<<<<<<<<<< + * _err(MemoryError, NULL) + * + */ + __pyx_t_2 = ((!(__pyx_v_result != 0)) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":1224 + * result = malloc(size) + * if not result: + * _err(MemoryError, NULL) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_3 = __pyx_memoryview_err(__pyx_builtin_MemoryError, NULL); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 1224, __pyx_L1_error) + + /* "View.MemoryView":1223 + * + * result = malloc(size) + * if not result: # <<<<<<<<<<<<<< + * _err(MemoryError, NULL) + * + */ + } + + /* "View.MemoryView":1227 + * + * + * tmpslice.data = result # <<<<<<<<<<<<<< + * tmpslice.memview = src.memview + * for i in range(ndim): + */ + __pyx_v_tmpslice->data = ((char *)__pyx_v_result); + + /* "View.MemoryView":1228 + * + * tmpslice.data = result + * tmpslice.memview = src.memview # <<<<<<<<<<<<<< + * for i in range(ndim): + * tmpslice.shape[i] = src.shape[i] + */ + __pyx_t_4 = __pyx_v_src->memview; + __pyx_v_tmpslice->memview = __pyx_t_4; + + /* "View.MemoryView":1229 + * tmpslice.data = result + * tmpslice.memview = src.memview + * for i in range(ndim): # <<<<<<<<<<<<<< + * tmpslice.shape[i] = src.shape[i] + * tmpslice.suboffsets[i] = -1 + */ + __pyx_t_3 = __pyx_v_ndim; + __pyx_t_5 = __pyx_t_3; + for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { + __pyx_v_i = __pyx_t_6; + + /* "View.MemoryView":1230 + * tmpslice.memview = src.memview + * for i in range(ndim): + * tmpslice.shape[i] = src.shape[i] # <<<<<<<<<<<<<< + * tmpslice.suboffsets[i] = -1 + * + */ + (__pyx_v_tmpslice->shape[__pyx_v_i]) = (__pyx_v_src->shape[__pyx_v_i]); + + /* "View.MemoryView":1231 + * for i in range(ndim): + * tmpslice.shape[i] = src.shape[i] + * tmpslice.suboffsets[i] = -1 # <<<<<<<<<<<<<< + * + * fill_contig_strides_array(&tmpslice.shape[0], &tmpslice.strides[0], itemsize, + */ + (__pyx_v_tmpslice->suboffsets[__pyx_v_i]) = -1L; + } + + /* "View.MemoryView":1233 + * tmpslice.suboffsets[i] = -1 + * + * fill_contig_strides_array(&tmpslice.shape[0], &tmpslice.strides[0], itemsize, # <<<<<<<<<<<<<< + * ndim, order) + * + */ + (void)(__pyx_fill_contig_strides_array((&(__pyx_v_tmpslice->shape[0])), (&(__pyx_v_tmpslice->strides[0])), __pyx_v_itemsize, __pyx_v_ndim, __pyx_v_order)); + + /* "View.MemoryView":1237 + * + * + * for i in range(ndim): # <<<<<<<<<<<<<< + * if tmpslice.shape[i] == 1: + * tmpslice.strides[i] = 0 + */ + __pyx_t_3 = __pyx_v_ndim; + __pyx_t_5 = __pyx_t_3; + for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { + __pyx_v_i = __pyx_t_6; + + /* "View.MemoryView":1238 + * + * for i in range(ndim): + * if tmpslice.shape[i] == 1: # <<<<<<<<<<<<<< + * tmpslice.strides[i] = 0 + * + */ + __pyx_t_2 = (((__pyx_v_tmpslice->shape[__pyx_v_i]) == 1) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":1239 + * for i in range(ndim): + * if tmpslice.shape[i] == 1: + * tmpslice.strides[i] = 0 # <<<<<<<<<<<<<< + * + * if slice_is_contig(src[0], order, ndim): + */ + (__pyx_v_tmpslice->strides[__pyx_v_i]) = 0; + + /* "View.MemoryView":1238 + * + * for i in range(ndim): + * if tmpslice.shape[i] == 1: # <<<<<<<<<<<<<< + * tmpslice.strides[i] = 0 + * + */ + } + } + + /* "View.MemoryView":1241 + * tmpslice.strides[i] = 0 + * + * if slice_is_contig(src[0], order, ndim): # <<<<<<<<<<<<<< + * memcpy(result, src.data, size) + * else: + */ + __pyx_t_2 = (__pyx_memviewslice_is_contig((__pyx_v_src[0]), __pyx_v_order, __pyx_v_ndim) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":1242 + * + * if slice_is_contig(src[0], order, ndim): + * memcpy(result, src.data, size) # <<<<<<<<<<<<<< + * else: + * copy_strided_to_strided(src, tmpslice, ndim, itemsize) + */ + (void)(memcpy(__pyx_v_result, __pyx_v_src->data, __pyx_v_size)); + + /* "View.MemoryView":1241 + * tmpslice.strides[i] = 0 + * + * if slice_is_contig(src[0], order, ndim): # <<<<<<<<<<<<<< + * memcpy(result, src.data, size) + * else: + */ + goto __pyx_L9; + } + + /* "View.MemoryView":1244 + * memcpy(result, src.data, size) + * else: + * copy_strided_to_strided(src, tmpslice, ndim, itemsize) # <<<<<<<<<<<<<< + * + * return result + */ + /*else*/ { + copy_strided_to_strided(__pyx_v_src, __pyx_v_tmpslice, __pyx_v_ndim, __pyx_v_itemsize); + } + __pyx_L9:; + + /* "View.MemoryView":1246 + * copy_strided_to_strided(src, tmpslice, ndim, itemsize) + * + * return result # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "View.MemoryView":1208 + * + * @cname('__pyx_memoryview_copy_data_to_temp') + * cdef void *copy_data_to_temp(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< + * __Pyx_memviewslice *tmpslice, + * char order, + */ + + /* function exit code */ + __pyx_L1_error:; + { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); + #endif + __Pyx_AddTraceback("View.MemoryView.copy_data_to_temp", __pyx_clineno, __pyx_lineno, __pyx_filename); + #ifdef WITH_THREAD + __Pyx_PyGILState_Release(__pyx_gilstate_save); + #endif + } + __pyx_r = NULL; + __pyx_L0:; + return __pyx_r; +} + +/* "View.MemoryView":1251 + * + * @cname('__pyx_memoryview_err_extents') + * cdef int _err_extents(int i, Py_ssize_t extent1, # <<<<<<<<<<<<<< + * Py_ssize_t extent2) except -1 with gil: + * raise ValueError("got differing extents in dimension %d (got %d and %d)" % + */ + +static int __pyx_memoryview_err_extents(int __pyx_v_i, Py_ssize_t __pyx_v_extent1, Py_ssize_t __pyx_v_extent2) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); + #endif + __Pyx_RefNannySetupContext("_err_extents", 0); + + /* "View.MemoryView":1254 + * Py_ssize_t extent2) except -1 with gil: + * raise ValueError("got differing extents in dimension %d (got %d and %d)" % + * (i, extent1, extent2)) # <<<<<<<<<<<<<< + * + * @cname('__pyx_memoryview_err_dim') + */ + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_extent1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1254, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_extent2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1254, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1254, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_t_3 = 0; + + /* "View.MemoryView":1253 + * cdef int _err_extents(int i, Py_ssize_t extent1, + * Py_ssize_t extent2) except -1 with gil: + * raise ValueError("got differing extents in dimension %d (got %d and %d)" % # <<<<<<<<<<<<<< + * (i, extent1, extent2)) + * + */ + __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_got_differing_extents_in_dimensi, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1253, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1253, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __PYX_ERR(1, 1253, __pyx_L1_error) + + /* "View.MemoryView":1251 + * + * @cname('__pyx_memoryview_err_extents') + * cdef int _err_extents(int i, Py_ssize_t extent1, # <<<<<<<<<<<<<< + * Py_ssize_t extent2) except -1 with gil: + * raise ValueError("got differing extents in dimension %d (got %d and %d)" % + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("View.MemoryView._err_extents", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __Pyx_RefNannyFinishContext(); + #ifdef WITH_THREAD + __Pyx_PyGILState_Release(__pyx_gilstate_save); + #endif + return __pyx_r; +} + +/* "View.MemoryView":1257 + * + * @cname('__pyx_memoryview_err_dim') + * cdef int _err_dim(object error, char *msg, int dim) except -1 with gil: # <<<<<<<<<<<<<< + * raise error(msg.decode('ascii') % dim) + * + */ + +static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg, int __pyx_v_dim) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); + #endif + __Pyx_RefNannySetupContext("_err_dim", 0); + __Pyx_INCREF(__pyx_v_error); + + /* "View.MemoryView":1258 + * @cname('__pyx_memoryview_err_dim') + * cdef int _err_dim(object error, char *msg, int dim) except -1 with gil: + * raise error(msg.decode('ascii') % dim) # <<<<<<<<<<<<<< + * + * @cname('__pyx_memoryview_err') + */ + __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1258, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1258, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyUnicode_Format(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1258, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_INCREF(__pyx_v_error); + __pyx_t_3 = __pyx_v_error; __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1258, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 1258, __pyx_L1_error) + + /* "View.MemoryView":1257 + * + * @cname('__pyx_memoryview_err_dim') + * cdef int _err_dim(object error, char *msg, int dim) except -1 with gil: # <<<<<<<<<<<<<< + * raise error(msg.decode('ascii') % dim) + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("View.MemoryView._err_dim", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __Pyx_XDECREF(__pyx_v_error); + __Pyx_RefNannyFinishContext(); + #ifdef WITH_THREAD + __Pyx_PyGILState_Release(__pyx_gilstate_save); + #endif + return __pyx_r; +} + +/* "View.MemoryView":1261 + * + * @cname('__pyx_memoryview_err') + * cdef int _err(object error, char *msg) except -1 with gil: # <<<<<<<<<<<<<< + * if msg != NULL: + * raise error(msg.decode('ascii')) + */ + +static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) { + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); + #endif + __Pyx_RefNannySetupContext("_err", 0); + __Pyx_INCREF(__pyx_v_error); + + /* "View.MemoryView":1262 + * @cname('__pyx_memoryview_err') + * cdef int _err(object error, char *msg) except -1 with gil: + * if msg != NULL: # <<<<<<<<<<<<<< + * raise error(msg.decode('ascii')) + * else: + */ + __pyx_t_1 = ((__pyx_v_msg != NULL) != 0); + if (unlikely(__pyx_t_1)) { + + /* "View.MemoryView":1263 + * cdef int _err(object error, char *msg) except -1 with gil: + * if msg != NULL: + * raise error(msg.decode('ascii')) # <<<<<<<<<<<<<< + * else: + * raise error + */ + __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1263, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_v_error); + __pyx_t_4 = __pyx_v_error; __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1263, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_Raise(__pyx_t_2, 0, 0, 0); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __PYX_ERR(1, 1263, __pyx_L1_error) + + /* "View.MemoryView":1262 + * @cname('__pyx_memoryview_err') + * cdef int _err(object error, char *msg) except -1 with gil: + * if msg != NULL: # <<<<<<<<<<<<<< + * raise error(msg.decode('ascii')) + * else: + */ + } + + /* "View.MemoryView":1265 + * raise error(msg.decode('ascii')) + * else: + * raise error # <<<<<<<<<<<<<< + * + * @cname('__pyx_memoryview_copy_contents') + */ + /*else*/ { + __Pyx_Raise(__pyx_v_error, 0, 0, 0); + __PYX_ERR(1, 1265, __pyx_L1_error) + } + + /* "View.MemoryView":1261 + * + * @cname('__pyx_memoryview_err') + * cdef int _err(object error, char *msg) except -1 with gil: # <<<<<<<<<<<<<< + * if msg != NULL: + * raise error(msg.decode('ascii')) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("View.MemoryView._err", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __Pyx_XDECREF(__pyx_v_error); + __Pyx_RefNannyFinishContext(); + #ifdef WITH_THREAD + __Pyx_PyGILState_Release(__pyx_gilstate_save); + #endif + return __pyx_r; +} + +/* "View.MemoryView":1268 + * + * @cname('__pyx_memoryview_copy_contents') + * cdef int memoryview_copy_contents(__Pyx_memviewslice src, # <<<<<<<<<<<<<< + * __Pyx_memviewslice dst, + * int src_ndim, int dst_ndim, + */ + +static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_memviewslice __pyx_v_dst, int __pyx_v_src_ndim, int __pyx_v_dst_ndim, int __pyx_v_dtype_is_object) { + void *__pyx_v_tmpdata; + size_t __pyx_v_itemsize; + int __pyx_v_i; + char __pyx_v_order; + int __pyx_v_broadcasting; + int __pyx_v_direct_copy; + __Pyx_memviewslice __pyx_v_tmp; + int __pyx_v_ndim; + int __pyx_r; + Py_ssize_t __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + int __pyx_t_4; + int __pyx_t_5; + int __pyx_t_6; + void *__pyx_t_7; + int __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + + /* "View.MemoryView":1276 + * Check for overlapping memory and verify the shapes. + * """ + * cdef void *tmpdata = NULL # <<<<<<<<<<<<<< + * cdef size_t itemsize = src.memview.view.itemsize + * cdef int i + */ + __pyx_v_tmpdata = NULL; + + /* "View.MemoryView":1277 + * """ + * cdef void *tmpdata = NULL + * cdef size_t itemsize = src.memview.view.itemsize # <<<<<<<<<<<<<< + * cdef int i + * cdef char order = get_best_order(&src, src_ndim) + */ + __pyx_t_1 = __pyx_v_src.memview->view.itemsize; + __pyx_v_itemsize = __pyx_t_1; + + /* "View.MemoryView":1279 + * cdef size_t itemsize = src.memview.view.itemsize + * cdef int i + * cdef char order = get_best_order(&src, src_ndim) # <<<<<<<<<<<<<< + * cdef bint broadcasting = False + * cdef bint direct_copy = False + */ + __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_src), __pyx_v_src_ndim); + + /* "View.MemoryView":1280 + * cdef int i + * cdef char order = get_best_order(&src, src_ndim) + * cdef bint broadcasting = False # <<<<<<<<<<<<<< + * cdef bint direct_copy = False + * cdef __Pyx_memviewslice tmp + */ + __pyx_v_broadcasting = 0; + + /* "View.MemoryView":1281 + * cdef char order = get_best_order(&src, src_ndim) + * cdef bint broadcasting = False + * cdef bint direct_copy = False # <<<<<<<<<<<<<< + * cdef __Pyx_memviewslice tmp + * + */ + __pyx_v_direct_copy = 0; + + /* "View.MemoryView":1284 + * cdef __Pyx_memviewslice tmp + * + * if src_ndim < dst_ndim: # <<<<<<<<<<<<<< + * broadcast_leading(&src, src_ndim, dst_ndim) + * elif dst_ndim < src_ndim: + */ + __pyx_t_2 = ((__pyx_v_src_ndim < __pyx_v_dst_ndim) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":1285 + * + * if src_ndim < dst_ndim: + * broadcast_leading(&src, src_ndim, dst_ndim) # <<<<<<<<<<<<<< + * elif dst_ndim < src_ndim: + * broadcast_leading(&dst, dst_ndim, src_ndim) + */ + __pyx_memoryview_broadcast_leading((&__pyx_v_src), __pyx_v_src_ndim, __pyx_v_dst_ndim); + + /* "View.MemoryView":1284 + * cdef __Pyx_memviewslice tmp + * + * if src_ndim < dst_ndim: # <<<<<<<<<<<<<< + * broadcast_leading(&src, src_ndim, dst_ndim) + * elif dst_ndim < src_ndim: + */ + goto __pyx_L3; + } + + /* "View.MemoryView":1286 + * if src_ndim < dst_ndim: + * broadcast_leading(&src, src_ndim, dst_ndim) + * elif dst_ndim < src_ndim: # <<<<<<<<<<<<<< + * broadcast_leading(&dst, dst_ndim, src_ndim) + * + */ + __pyx_t_2 = ((__pyx_v_dst_ndim < __pyx_v_src_ndim) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":1287 + * broadcast_leading(&src, src_ndim, dst_ndim) + * elif dst_ndim < src_ndim: + * broadcast_leading(&dst, dst_ndim, src_ndim) # <<<<<<<<<<<<<< + * + * cdef int ndim = max(src_ndim, dst_ndim) + */ + __pyx_memoryview_broadcast_leading((&__pyx_v_dst), __pyx_v_dst_ndim, __pyx_v_src_ndim); + + /* "View.MemoryView":1286 + * if src_ndim < dst_ndim: + * broadcast_leading(&src, src_ndim, dst_ndim) + * elif dst_ndim < src_ndim: # <<<<<<<<<<<<<< + * broadcast_leading(&dst, dst_ndim, src_ndim) + * + */ + } + __pyx_L3:; + + /* "View.MemoryView":1289 + * broadcast_leading(&dst, dst_ndim, src_ndim) + * + * cdef int ndim = max(src_ndim, dst_ndim) # <<<<<<<<<<<<<< + * + * for i in range(ndim): + */ + __pyx_t_3 = __pyx_v_dst_ndim; + __pyx_t_4 = __pyx_v_src_ndim; + if (((__pyx_t_3 > __pyx_t_4) != 0)) { + __pyx_t_5 = __pyx_t_3; + } else { + __pyx_t_5 = __pyx_t_4; + } + __pyx_v_ndim = __pyx_t_5; + + /* "View.MemoryView":1291 + * cdef int ndim = max(src_ndim, dst_ndim) + * + * for i in range(ndim): # <<<<<<<<<<<<<< + * if src.shape[i] != dst.shape[i]: + * if src.shape[i] == 1: + */ + __pyx_t_5 = __pyx_v_ndim; + __pyx_t_3 = __pyx_t_5; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + + /* "View.MemoryView":1292 + * + * for i in range(ndim): + * if src.shape[i] != dst.shape[i]: # <<<<<<<<<<<<<< + * if src.shape[i] == 1: + * broadcasting = True + */ + __pyx_t_2 = (((__pyx_v_src.shape[__pyx_v_i]) != (__pyx_v_dst.shape[__pyx_v_i])) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":1293 + * for i in range(ndim): + * if src.shape[i] != dst.shape[i]: + * if src.shape[i] == 1: # <<<<<<<<<<<<<< + * broadcasting = True + * src.strides[i] = 0 + */ + __pyx_t_2 = (((__pyx_v_src.shape[__pyx_v_i]) == 1) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":1294 + * if src.shape[i] != dst.shape[i]: + * if src.shape[i] == 1: + * broadcasting = True # <<<<<<<<<<<<<< + * src.strides[i] = 0 + * else: + */ + __pyx_v_broadcasting = 1; + + /* "View.MemoryView":1295 + * if src.shape[i] == 1: + * broadcasting = True + * src.strides[i] = 0 # <<<<<<<<<<<<<< + * else: + * _err_extents(i, dst.shape[i], src.shape[i]) + */ + (__pyx_v_src.strides[__pyx_v_i]) = 0; + + /* "View.MemoryView":1293 + * for i in range(ndim): + * if src.shape[i] != dst.shape[i]: + * if src.shape[i] == 1: # <<<<<<<<<<<<<< + * broadcasting = True + * src.strides[i] = 0 + */ + goto __pyx_L7; + } + + /* "View.MemoryView":1297 + * src.strides[i] = 0 + * else: + * _err_extents(i, dst.shape[i], src.shape[i]) # <<<<<<<<<<<<<< + * + * if src.suboffsets[i] >= 0: + */ + /*else*/ { + __pyx_t_6 = __pyx_memoryview_err_extents(__pyx_v_i, (__pyx_v_dst.shape[__pyx_v_i]), (__pyx_v_src.shape[__pyx_v_i])); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1297, __pyx_L1_error) + } + __pyx_L7:; + + /* "View.MemoryView":1292 + * + * for i in range(ndim): + * if src.shape[i] != dst.shape[i]: # <<<<<<<<<<<<<< + * if src.shape[i] == 1: + * broadcasting = True + */ + } + + /* "View.MemoryView":1299 + * _err_extents(i, dst.shape[i], src.shape[i]) + * + * if src.suboffsets[i] >= 0: # <<<<<<<<<<<<<< + * _err_dim(ValueError, "Dimension %d is not direct", i) + * + */ + __pyx_t_2 = (((__pyx_v_src.suboffsets[__pyx_v_i]) >= 0) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":1300 + * + * if src.suboffsets[i] >= 0: + * _err_dim(ValueError, "Dimension %d is not direct", i) # <<<<<<<<<<<<<< + * + * if slices_overlap(&src, &dst, ndim, itemsize): + */ + __pyx_t_6 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, ((char *)"Dimension %d is not direct"), __pyx_v_i); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1300, __pyx_L1_error) + + /* "View.MemoryView":1299 + * _err_extents(i, dst.shape[i], src.shape[i]) + * + * if src.suboffsets[i] >= 0: # <<<<<<<<<<<<<< + * _err_dim(ValueError, "Dimension %d is not direct", i) + * + */ + } + } + + /* "View.MemoryView":1302 + * _err_dim(ValueError, "Dimension %d is not direct", i) + * + * if slices_overlap(&src, &dst, ndim, itemsize): # <<<<<<<<<<<<<< + * + * if not slice_is_contig(src, order, ndim): + */ + __pyx_t_2 = (__pyx_slices_overlap((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":1304 + * if slices_overlap(&src, &dst, ndim, itemsize): + * + * if not slice_is_contig(src, order, ndim): # <<<<<<<<<<<<<< + * order = get_best_order(&dst, ndim) + * + */ + __pyx_t_2 = ((!(__pyx_memviewslice_is_contig(__pyx_v_src, __pyx_v_order, __pyx_v_ndim) != 0)) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":1305 + * + * if not slice_is_contig(src, order, ndim): + * order = get_best_order(&dst, ndim) # <<<<<<<<<<<<<< + * + * tmpdata = copy_data_to_temp(&src, &tmp, order, ndim) + */ + __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_dst), __pyx_v_ndim); + + /* "View.MemoryView":1304 + * if slices_overlap(&src, &dst, ndim, itemsize): + * + * if not slice_is_contig(src, order, ndim): # <<<<<<<<<<<<<< + * order = get_best_order(&dst, ndim) + * + */ + } + + /* "View.MemoryView":1307 + * order = get_best_order(&dst, ndim) + * + * tmpdata = copy_data_to_temp(&src, &tmp, order, ndim) # <<<<<<<<<<<<<< + * src = tmp + * + */ + __pyx_t_7 = __pyx_memoryview_copy_data_to_temp((&__pyx_v_src), (&__pyx_v_tmp), __pyx_v_order, __pyx_v_ndim); if (unlikely(__pyx_t_7 == ((void *)NULL))) __PYX_ERR(1, 1307, __pyx_L1_error) + __pyx_v_tmpdata = __pyx_t_7; + + /* "View.MemoryView":1308 + * + * tmpdata = copy_data_to_temp(&src, &tmp, order, ndim) + * src = tmp # <<<<<<<<<<<<<< + * + * if not broadcasting: + */ + __pyx_v_src = __pyx_v_tmp; + + /* "View.MemoryView":1302 + * _err_dim(ValueError, "Dimension %d is not direct", i) + * + * if slices_overlap(&src, &dst, ndim, itemsize): # <<<<<<<<<<<<<< + * + * if not slice_is_contig(src, order, ndim): + */ + } + + /* "View.MemoryView":1310 + * src = tmp + * + * if not broadcasting: # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_2 = ((!(__pyx_v_broadcasting != 0)) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":1313 + * + * + * if slice_is_contig(src, 'C', ndim): # <<<<<<<<<<<<<< + * direct_copy = slice_is_contig(dst, 'C', ndim) + * elif slice_is_contig(src, 'F', ndim): + */ + __pyx_t_2 = (__pyx_memviewslice_is_contig(__pyx_v_src, 'C', __pyx_v_ndim) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":1314 + * + * if slice_is_contig(src, 'C', ndim): + * direct_copy = slice_is_contig(dst, 'C', ndim) # <<<<<<<<<<<<<< + * elif slice_is_contig(src, 'F', ndim): + * direct_copy = slice_is_contig(dst, 'F', ndim) + */ + __pyx_v_direct_copy = __pyx_memviewslice_is_contig(__pyx_v_dst, 'C', __pyx_v_ndim); + + /* "View.MemoryView":1313 + * + * + * if slice_is_contig(src, 'C', ndim): # <<<<<<<<<<<<<< + * direct_copy = slice_is_contig(dst, 'C', ndim) + * elif slice_is_contig(src, 'F', ndim): + */ + goto __pyx_L12; + } + + /* "View.MemoryView":1315 + * if slice_is_contig(src, 'C', ndim): + * direct_copy = slice_is_contig(dst, 'C', ndim) + * elif slice_is_contig(src, 'F', ndim): # <<<<<<<<<<<<<< + * direct_copy = slice_is_contig(dst, 'F', ndim) + * + */ + __pyx_t_2 = (__pyx_memviewslice_is_contig(__pyx_v_src, 'F', __pyx_v_ndim) != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":1316 + * direct_copy = slice_is_contig(dst, 'C', ndim) + * elif slice_is_contig(src, 'F', ndim): + * direct_copy = slice_is_contig(dst, 'F', ndim) # <<<<<<<<<<<<<< + * + * if direct_copy: + */ + __pyx_v_direct_copy = __pyx_memviewslice_is_contig(__pyx_v_dst, 'F', __pyx_v_ndim); + + /* "View.MemoryView":1315 + * if slice_is_contig(src, 'C', ndim): + * direct_copy = slice_is_contig(dst, 'C', ndim) + * elif slice_is_contig(src, 'F', ndim): # <<<<<<<<<<<<<< + * direct_copy = slice_is_contig(dst, 'F', ndim) + * + */ + } + __pyx_L12:; + + /* "View.MemoryView":1318 + * direct_copy = slice_is_contig(dst, 'F', ndim) + * + * if direct_copy: # <<<<<<<<<<<<<< + * + * refcount_copying(&dst, dtype_is_object, ndim, False) + */ + __pyx_t_2 = (__pyx_v_direct_copy != 0); + if (__pyx_t_2) { + + /* "View.MemoryView":1320 + * if direct_copy: + * + * refcount_copying(&dst, dtype_is_object, ndim, False) # <<<<<<<<<<<<<< + * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) + * refcount_copying(&dst, dtype_is_object, ndim, True) + */ + __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0); + + /* "View.MemoryView":1321 + * + * refcount_copying(&dst, dtype_is_object, ndim, False) + * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) # <<<<<<<<<<<<<< + * refcount_copying(&dst, dtype_is_object, ndim, True) + * free(tmpdata) + */ + (void)(memcpy(__pyx_v_dst.data, __pyx_v_src.data, __pyx_memoryview_slice_get_size((&__pyx_v_src), __pyx_v_ndim))); + + /* "View.MemoryView":1322 + * refcount_copying(&dst, dtype_is_object, ndim, False) + * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) + * refcount_copying(&dst, dtype_is_object, ndim, True) # <<<<<<<<<<<<<< + * free(tmpdata) + * return 0 + */ + __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1); + + /* "View.MemoryView":1323 + * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) + * refcount_copying(&dst, dtype_is_object, ndim, True) + * free(tmpdata) # <<<<<<<<<<<<<< + * return 0 + * + */ + free(__pyx_v_tmpdata); + + /* "View.MemoryView":1324 + * refcount_copying(&dst, dtype_is_object, ndim, True) + * free(tmpdata) + * return 0 # <<<<<<<<<<<<<< + * + * if order == 'F' == get_best_order(&dst, ndim): + */ + __pyx_r = 0; + goto __pyx_L0; + + /* "View.MemoryView":1318 + * direct_copy = slice_is_contig(dst, 'F', ndim) + * + * if direct_copy: # <<<<<<<<<<<<<< + * + * refcount_copying(&dst, dtype_is_object, ndim, False) + */ + } + + /* "View.MemoryView":1310 + * src = tmp + * + * if not broadcasting: # <<<<<<<<<<<<<< + * + * + */ + } + + /* "View.MemoryView":1326 + * return 0 + * + * if order == 'F' == get_best_order(&dst, ndim): # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_2 = (__pyx_v_order == 'F'); + if (__pyx_t_2) { + __pyx_t_2 = ('F' == __pyx_get_best_slice_order((&__pyx_v_dst), __pyx_v_ndim)); + } + __pyx_t_8 = (__pyx_t_2 != 0); + if (__pyx_t_8) { + + /* "View.MemoryView":1329 + * + * + * transpose_memslice(&src) # <<<<<<<<<<<<<< + * transpose_memslice(&dst) + * + */ + __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_src)); if (unlikely(__pyx_t_5 == ((int)0))) __PYX_ERR(1, 1329, __pyx_L1_error) + + /* "View.MemoryView":1330 + * + * transpose_memslice(&src) + * transpose_memslice(&dst) # <<<<<<<<<<<<<< + * + * refcount_copying(&dst, dtype_is_object, ndim, False) + */ + __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_dst)); if (unlikely(__pyx_t_5 == ((int)0))) __PYX_ERR(1, 1330, __pyx_L1_error) + + /* "View.MemoryView":1326 + * return 0 + * + * if order == 'F' == get_best_order(&dst, ndim): # <<<<<<<<<<<<<< + * + * + */ + } + + /* "View.MemoryView":1332 + * transpose_memslice(&dst) + * + * refcount_copying(&dst, dtype_is_object, ndim, False) # <<<<<<<<<<<<<< + * copy_strided_to_strided(&src, &dst, ndim, itemsize) + * refcount_copying(&dst, dtype_is_object, ndim, True) + */ + __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0); + + /* "View.MemoryView":1333 + * + * refcount_copying(&dst, dtype_is_object, ndim, False) + * copy_strided_to_strided(&src, &dst, ndim, itemsize) # <<<<<<<<<<<<<< + * refcount_copying(&dst, dtype_is_object, ndim, True) + * + */ + copy_strided_to_strided((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize); + + /* "View.MemoryView":1334 + * refcount_copying(&dst, dtype_is_object, ndim, False) + * copy_strided_to_strided(&src, &dst, ndim, itemsize) + * refcount_copying(&dst, dtype_is_object, ndim, True) # <<<<<<<<<<<<<< + * + * free(tmpdata) + */ + __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1); + + /* "View.MemoryView":1336 + * refcount_copying(&dst, dtype_is_object, ndim, True) + * + * free(tmpdata) # <<<<<<<<<<<<<< + * return 0 + * + */ + free(__pyx_v_tmpdata); + + /* "View.MemoryView":1337 + * + * free(tmpdata) + * return 0 # <<<<<<<<<<<<<< + * + * @cname('__pyx_memoryview_broadcast_leading') + */ + __pyx_r = 0; + goto __pyx_L0; + + /* "View.MemoryView":1268 + * + * @cname('__pyx_memoryview_copy_contents') + * cdef int memoryview_copy_contents(__Pyx_memviewslice src, # <<<<<<<<<<<<<< + * __Pyx_memviewslice dst, + * int src_ndim, int dst_ndim, + */ + + /* function exit code */ + __pyx_L1_error:; + { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); + #endif + __Pyx_AddTraceback("View.MemoryView.memoryview_copy_contents", __pyx_clineno, __pyx_lineno, __pyx_filename); + #ifdef WITH_THREAD + __Pyx_PyGILState_Release(__pyx_gilstate_save); + #endif + } + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "View.MemoryView":1340 + * + * @cname('__pyx_memoryview_broadcast_leading') + * cdef void broadcast_leading(__Pyx_memviewslice *mslice, # <<<<<<<<<<<<<< + * int ndim, + * int ndim_other) nogil: + */ + +static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslice, int __pyx_v_ndim, int __pyx_v_ndim_other) { + int __pyx_v_i; + int __pyx_v_offset; + int __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + + /* "View.MemoryView":1344 + * int ndim_other) nogil: + * cdef int i + * cdef int offset = ndim_other - ndim # <<<<<<<<<<<<<< + * + * for i in range(ndim - 1, -1, -1): + */ + __pyx_v_offset = (__pyx_v_ndim_other - __pyx_v_ndim); + + /* "View.MemoryView":1346 + * cdef int offset = ndim_other - ndim + * + * for i in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< + * mslice.shape[i + offset] = mslice.shape[i] + * mslice.strides[i + offset] = mslice.strides[i] + */ + for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1; __pyx_t_1-=1) { + __pyx_v_i = __pyx_t_1; + + /* "View.MemoryView":1347 + * + * for i in range(ndim - 1, -1, -1): + * mslice.shape[i + offset] = mslice.shape[i] # <<<<<<<<<<<<<< + * mslice.strides[i + offset] = mslice.strides[i] + * mslice.suboffsets[i + offset] = mslice.suboffsets[i] + */ + (__pyx_v_mslice->shape[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->shape[__pyx_v_i]); + + /* "View.MemoryView":1348 + * for i in range(ndim - 1, -1, -1): + * mslice.shape[i + offset] = mslice.shape[i] + * mslice.strides[i + offset] = mslice.strides[i] # <<<<<<<<<<<<<< + * mslice.suboffsets[i + offset] = mslice.suboffsets[i] + * + */ + (__pyx_v_mslice->strides[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->strides[__pyx_v_i]); + + /* "View.MemoryView":1349 + * mslice.shape[i + offset] = mslice.shape[i] + * mslice.strides[i + offset] = mslice.strides[i] + * mslice.suboffsets[i + offset] = mslice.suboffsets[i] # <<<<<<<<<<<<<< + * + * for i in range(offset): + */ + (__pyx_v_mslice->suboffsets[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->suboffsets[__pyx_v_i]); + } + + /* "View.MemoryView":1351 + * mslice.suboffsets[i + offset] = mslice.suboffsets[i] + * + * for i in range(offset): # <<<<<<<<<<<<<< + * mslice.shape[i] = 1 + * mslice.strides[i] = mslice.strides[0] + */ + __pyx_t_1 = __pyx_v_offset; + __pyx_t_2 = __pyx_t_1; + for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { + __pyx_v_i = __pyx_t_3; + + /* "View.MemoryView":1352 + * + * for i in range(offset): + * mslice.shape[i] = 1 # <<<<<<<<<<<<<< + * mslice.strides[i] = mslice.strides[0] + * mslice.suboffsets[i] = -1 + */ + (__pyx_v_mslice->shape[__pyx_v_i]) = 1; + + /* "View.MemoryView":1353 + * for i in range(offset): + * mslice.shape[i] = 1 + * mslice.strides[i] = mslice.strides[0] # <<<<<<<<<<<<<< + * mslice.suboffsets[i] = -1 + * + */ + (__pyx_v_mslice->strides[__pyx_v_i]) = (__pyx_v_mslice->strides[0]); + + /* "View.MemoryView":1354 + * mslice.shape[i] = 1 + * mslice.strides[i] = mslice.strides[0] + * mslice.suboffsets[i] = -1 # <<<<<<<<<<<<<< + * + * + */ + (__pyx_v_mslice->suboffsets[__pyx_v_i]) = -1L; + } + + /* "View.MemoryView":1340 + * + * @cname('__pyx_memoryview_broadcast_leading') + * cdef void broadcast_leading(__Pyx_memviewslice *mslice, # <<<<<<<<<<<<<< + * int ndim, + * int ndim_other) nogil: + */ + + /* function exit code */ +} + +/* "View.MemoryView":1362 + * + * @cname('__pyx_memoryview_refcount_copying') + * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, # <<<<<<<<<<<<<< + * int ndim, bint inc) nogil: + * + */ + +static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_dtype_is_object, int __pyx_v_ndim, int __pyx_v_inc) { + int __pyx_t_1; + + /* "View.MemoryView":1366 + * + * + * if dtype_is_object: # <<<<<<<<<<<<<< + * refcount_objects_in_slice_with_gil(dst.data, dst.shape, + * dst.strides, ndim, inc) + */ + __pyx_t_1 = (__pyx_v_dtype_is_object != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":1367 + * + * if dtype_is_object: + * refcount_objects_in_slice_with_gil(dst.data, dst.shape, # <<<<<<<<<<<<<< + * dst.strides, ndim, inc) + * + */ + __pyx_memoryview_refcount_objects_in_slice_with_gil(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_inc); + + /* "View.MemoryView":1366 + * + * + * if dtype_is_object: # <<<<<<<<<<<<<< + * refcount_objects_in_slice_with_gil(dst.data, dst.shape, + * dst.strides, ndim, inc) + */ + } + + /* "View.MemoryView":1362 + * + * @cname('__pyx_memoryview_refcount_copying') + * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, # <<<<<<<<<<<<<< + * int ndim, bint inc) nogil: + * + */ + + /* function exit code */ +} + +/* "View.MemoryView":1371 + * + * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil') + * cdef void refcount_objects_in_slice_with_gil(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< + * Py_ssize_t *strides, int ndim, + * bint inc) with gil: + */ + +static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, int __pyx_v_inc) { + __Pyx_RefNannyDeclarations + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); + #endif + __Pyx_RefNannySetupContext("refcount_objects_in_slice_with_gil", 0); + + /* "View.MemoryView":1374 + * Py_ssize_t *strides, int ndim, + * bint inc) with gil: + * refcount_objects_in_slice(data, shape, strides, ndim, inc) # <<<<<<<<<<<<<< + * + * @cname('__pyx_memoryview_refcount_objects_in_slice') + */ + __pyx_memoryview_refcount_objects_in_slice(__pyx_v_data, __pyx_v_shape, __pyx_v_strides, __pyx_v_ndim, __pyx_v_inc); + + /* "View.MemoryView":1371 + * + * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil') + * cdef void refcount_objects_in_slice_with_gil(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< + * Py_ssize_t *strides, int ndim, + * bint inc) with gil: + */ + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + #ifdef WITH_THREAD + __Pyx_PyGILState_Release(__pyx_gilstate_save); + #endif +} + +/* "View.MemoryView":1377 + * + * @cname('__pyx_memoryview_refcount_objects_in_slice') + * cdef void refcount_objects_in_slice(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< + * Py_ssize_t *strides, int ndim, bint inc): + * cdef Py_ssize_t i + */ + +static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, int __pyx_v_inc) { + CYTHON_UNUSED Py_ssize_t __pyx_v_i; + __Pyx_RefNannyDeclarations + Py_ssize_t __pyx_t_1; + Py_ssize_t __pyx_t_2; + Py_ssize_t __pyx_t_3; + int __pyx_t_4; + __Pyx_RefNannySetupContext("refcount_objects_in_slice", 0); + + /* "View.MemoryView":1381 + * cdef Py_ssize_t i + * + * for i in range(shape[0]): # <<<<<<<<<<<<<< + * if ndim == 1: + * if inc: + */ + __pyx_t_1 = (__pyx_v_shape[0]); + __pyx_t_2 = __pyx_t_1; + for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { + __pyx_v_i = __pyx_t_3; + + /* "View.MemoryView":1382 + * + * for i in range(shape[0]): + * if ndim == 1: # <<<<<<<<<<<<<< + * if inc: + * Py_INCREF(( data)[0]) + */ + __pyx_t_4 = ((__pyx_v_ndim == 1) != 0); + if (__pyx_t_4) { + + /* "View.MemoryView":1383 + * for i in range(shape[0]): + * if ndim == 1: + * if inc: # <<<<<<<<<<<<<< + * Py_INCREF(( data)[0]) + * else: + */ + __pyx_t_4 = (__pyx_v_inc != 0); + if (__pyx_t_4) { + + /* "View.MemoryView":1384 + * if ndim == 1: + * if inc: + * Py_INCREF(( data)[0]) # <<<<<<<<<<<<<< + * else: + * Py_DECREF(( data)[0]) + */ + Py_INCREF((((PyObject **)__pyx_v_data)[0])); + + /* "View.MemoryView":1383 + * for i in range(shape[0]): + * if ndim == 1: + * if inc: # <<<<<<<<<<<<<< + * Py_INCREF(( data)[0]) + * else: + */ + goto __pyx_L6; + } + + /* "View.MemoryView":1386 + * Py_INCREF(( data)[0]) + * else: + * Py_DECREF(( data)[0]) # <<<<<<<<<<<<<< + * else: + * refcount_objects_in_slice(data, shape + 1, strides + 1, + */ + /*else*/ { + Py_DECREF((((PyObject **)__pyx_v_data)[0])); + } + __pyx_L6:; + + /* "View.MemoryView":1382 + * + * for i in range(shape[0]): + * if ndim == 1: # <<<<<<<<<<<<<< + * if inc: + * Py_INCREF(( data)[0]) + */ + goto __pyx_L5; + } + + /* "View.MemoryView":1388 + * Py_DECREF(( data)[0]) + * else: + * refcount_objects_in_slice(data, shape + 1, strides + 1, # <<<<<<<<<<<<<< + * ndim - 1, inc) + * + */ + /*else*/ { + + /* "View.MemoryView":1389 + * else: + * refcount_objects_in_slice(data, shape + 1, strides + 1, + * ndim - 1, inc) # <<<<<<<<<<<<<< + * + * data += strides[0] + */ + __pyx_memoryview_refcount_objects_in_slice(__pyx_v_data, (__pyx_v_shape + 1), (__pyx_v_strides + 1), (__pyx_v_ndim - 1), __pyx_v_inc); + } + __pyx_L5:; + + /* "View.MemoryView":1391 + * ndim - 1, inc) + * + * data += strides[0] # <<<<<<<<<<<<<< + * + * + */ + __pyx_v_data = (__pyx_v_data + (__pyx_v_strides[0])); + } + + /* "View.MemoryView":1377 + * + * @cname('__pyx_memoryview_refcount_objects_in_slice') + * cdef void refcount_objects_in_slice(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< + * Py_ssize_t *strides, int ndim, bint inc): + * cdef Py_ssize_t i + */ + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +/* "View.MemoryView":1397 + * + * @cname('__pyx_memoryview_slice_assign_scalar') + * cdef void slice_assign_scalar(__Pyx_memviewslice *dst, int ndim, # <<<<<<<<<<<<<< + * size_t itemsize, void *item, + * bint dtype_is_object) nogil: + */ + +static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize, void *__pyx_v_item, int __pyx_v_dtype_is_object) { + + /* "View.MemoryView":1400 + * size_t itemsize, void *item, + * bint dtype_is_object) nogil: + * refcount_copying(dst, dtype_is_object, ndim, False) # <<<<<<<<<<<<<< + * _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, + * itemsize, item) + */ + __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 0); + + /* "View.MemoryView":1401 + * bint dtype_is_object) nogil: + * refcount_copying(dst, dtype_is_object, ndim, False) + * _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, # <<<<<<<<<<<<<< + * itemsize, item) + * refcount_copying(dst, dtype_is_object, ndim, True) + */ + __pyx_memoryview__slice_assign_scalar(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_itemsize, __pyx_v_item); + + /* "View.MemoryView":1403 + * _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, + * itemsize, item) + * refcount_copying(dst, dtype_is_object, ndim, True) # <<<<<<<<<<<<<< + * + * + */ + __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 1); + + /* "View.MemoryView":1397 + * + * @cname('__pyx_memoryview_slice_assign_scalar') + * cdef void slice_assign_scalar(__Pyx_memviewslice *dst, int ndim, # <<<<<<<<<<<<<< + * size_t itemsize, void *item, + * bint dtype_is_object) nogil: + */ + + /* function exit code */ +} + +/* "View.MemoryView":1407 + * + * @cname('__pyx_memoryview__slice_assign_scalar') + * cdef void _slice_assign_scalar(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< + * Py_ssize_t *strides, int ndim, + * size_t itemsize, void *item) nogil: + */ + +static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, size_t __pyx_v_itemsize, void *__pyx_v_item) { + CYTHON_UNUSED Py_ssize_t __pyx_v_i; + Py_ssize_t __pyx_v_stride; + Py_ssize_t __pyx_v_extent; + int __pyx_t_1; + Py_ssize_t __pyx_t_2; + Py_ssize_t __pyx_t_3; + Py_ssize_t __pyx_t_4; + + /* "View.MemoryView":1411 + * size_t itemsize, void *item) nogil: + * cdef Py_ssize_t i + * cdef Py_ssize_t stride = strides[0] # <<<<<<<<<<<<<< + * cdef Py_ssize_t extent = shape[0] + * + */ + __pyx_v_stride = (__pyx_v_strides[0]); + + /* "View.MemoryView":1412 + * cdef Py_ssize_t i + * cdef Py_ssize_t stride = strides[0] + * cdef Py_ssize_t extent = shape[0] # <<<<<<<<<<<<<< + * + * if ndim == 1: + */ + __pyx_v_extent = (__pyx_v_shape[0]); + + /* "View.MemoryView":1414 + * cdef Py_ssize_t extent = shape[0] + * + * if ndim == 1: # <<<<<<<<<<<<<< + * for i in range(extent): + * memcpy(data, item, itemsize) + */ + __pyx_t_1 = ((__pyx_v_ndim == 1) != 0); + if (__pyx_t_1) { + + /* "View.MemoryView":1415 + * + * if ndim == 1: + * for i in range(extent): # <<<<<<<<<<<<<< + * memcpy(data, item, itemsize) + * data += stride + */ + __pyx_t_2 = __pyx_v_extent; + __pyx_t_3 = __pyx_t_2; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + + /* "View.MemoryView":1416 + * if ndim == 1: + * for i in range(extent): + * memcpy(data, item, itemsize) # <<<<<<<<<<<<<< + * data += stride + * else: + */ + (void)(memcpy(__pyx_v_data, __pyx_v_item, __pyx_v_itemsize)); + + /* "View.MemoryView":1417 + * for i in range(extent): + * memcpy(data, item, itemsize) + * data += stride # <<<<<<<<<<<<<< + * else: + * for i in range(extent): + */ + __pyx_v_data = (__pyx_v_data + __pyx_v_stride); + } + + /* "View.MemoryView":1414 + * cdef Py_ssize_t extent = shape[0] + * + * if ndim == 1: # <<<<<<<<<<<<<< + * for i in range(extent): + * memcpy(data, item, itemsize) + */ + goto __pyx_L3; + } + + /* "View.MemoryView":1419 + * data += stride + * else: + * for i in range(extent): # <<<<<<<<<<<<<< + * _slice_assign_scalar(data, shape + 1, strides + 1, + * ndim - 1, itemsize, item) + */ + /*else*/ { + __pyx_t_2 = __pyx_v_extent; + __pyx_t_3 = __pyx_t_2; + for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { + __pyx_v_i = __pyx_t_4; + + /* "View.MemoryView":1420 + * else: + * for i in range(extent): + * _slice_assign_scalar(data, shape + 1, strides + 1, # <<<<<<<<<<<<<< + * ndim - 1, itemsize, item) + * data += stride + */ + __pyx_memoryview__slice_assign_scalar(__pyx_v_data, (__pyx_v_shape + 1), (__pyx_v_strides + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize, __pyx_v_item); + + /* "View.MemoryView":1422 + * _slice_assign_scalar(data, shape + 1, strides + 1, + * ndim - 1, itemsize, item) + * data += stride # <<<<<<<<<<<<<< + * + * + */ + __pyx_v_data = (__pyx_v_data + __pyx_v_stride); + } + } + __pyx_L3:; + + /* "View.MemoryView":1407 + * + * @cname('__pyx_memoryview__slice_assign_scalar') + * cdef void _slice_assign_scalar(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< + * Py_ssize_t *strides, int ndim, + * size_t itemsize, void *item) nogil: + */ + + /* function exit code */ +} + +/* "(tree fragment)":1 + * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v___pyx_type = 0; + long __pyx_v___pyx_checksum; + PyObject *__pyx_v___pyx_state = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_unpickle_Enum (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; + PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Enum") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } + __pyx_v___pyx_type = values[0]; + __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) + __pyx_v___pyx_state = values[2]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_v___pyx_PickleError = 0; + PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 0); + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum != 0xb068931: # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum) + */ + __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xb068931) != 0); + if (__pyx_t_1) { + + /* "(tree fragment)":5 + * cdef object __pyx_result + * if __pyx_checksum != 0xb068931: + * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< + * raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum) + * __pyx_result = Enum.__new__(__pyx_type) + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_PickleError); + __Pyx_GIVEREF(__pyx_n_s_PickleError); + PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_t_2); + __pyx_v___pyx_PickleError = __pyx_t_2; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":6 + * if __pyx_checksum != 0xb068931: + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum) # <<<<<<<<<<<<<< + * __pyx_result = Enum.__new__(__pyx_type) + * if __pyx_state is not None: + */ + __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xb0, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_INCREF(__pyx_v___pyx_PickleError); + __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 6, __pyx_L1_error) + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum != 0xb068931: # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum) + */ + } + + /* "(tree fragment)":7 + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum) + * __pyx_result = Enum.__new__(__pyx_type) # <<<<<<<<<<<<<< + * if __pyx_state is not None: + * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v___pyx_result = __pyx_t_3; + __pyx_t_3 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum) + * __pyx_result = Enum.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) + * return __pyx_result + */ + __pyx_t_1 = (__pyx_v___pyx_state != Py_None); + __pyx_t_6 = (__pyx_t_1 != 0); + if (__pyx_t_6) { + + /* "(tree fragment)":9 + * __pyx_result = Enum.__new__(__pyx_type) + * if __pyx_state is not None: + * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< + * return __pyx_result + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): + */ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) + __pyx_t_3 = __pyx_unpickle_Enum__set_state(((struct __pyx_MemviewEnum_obj *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum) + * __pyx_result = Enum.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) + * return __pyx_result + */ + } + + /* "(tree fragment)":10 + * if __pyx_state is not None: + * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) + * return __pyx_result # <<<<<<<<<<<<<< + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): + * __pyx_result.name = __pyx_state[0] + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v___pyx_result); + __pyx_r = __pyx_v___pyx_result; + goto __pyx_L0; + + /* "(tree fragment)":1 + * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v___pyx_PickleError); + __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":11 + * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result.name = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + */ + +static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + Py_ssize_t __pyx_t_3; + int __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_Enum__set_state", 0); + + /* "(tree fragment)":12 + * return __pyx_result + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): + * __pyx_result.name = __pyx_state[0] # <<<<<<<<<<<<<< + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[1]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v___pyx_result->name); + __Pyx_DECREF(__pyx_v___pyx_result->name); + __pyx_v___pyx_result->name = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): + * __pyx_result.name = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[1]) + */ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(1, 13, __pyx_L1_error) + } + __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) + __pyx_t_4 = ((__pyx_t_3 > 1) != 0); + if (__pyx_t_4) { + } else { + __pyx_t_2 = __pyx_t_4; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) + __pyx_t_5 = (__pyx_t_4 != 0); + __pyx_t_2 = __pyx_t_5; + __pyx_L4_bool_binop_done:; + if (__pyx_t_2) { + + /* "(tree fragment)":14 + * __pyx_result.name = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[1]) # <<<<<<<<<<<<<< + */ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 14, __pyx_L1_error) + } + __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + } + } + __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): + * __pyx_result.name = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[1]) + */ + } + + /* "(tree fragment)":11 + * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result.name = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +static struct __pyx_vtabstruct_6squish_6energy_AreaEnergy __pyx_vtable_6squish_6energy_AreaEnergy; + +static PyObject *__pyx_tp_new_6squish_6energy_AreaEnergy(PyTypeObject *t, PyObject *a, PyObject *k) { + struct __pyx_obj_6squish_6energy_AreaEnergy *p; + PyObject *o = __pyx_ptype_6squish_7voronoi_VoronoiContainer->tp_new(t, a, k); + if (unlikely(!o)) return 0; + p = ((struct __pyx_obj_6squish_6energy_AreaEnergy *)o); + p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer*)__pyx_vtabptr_6squish_6energy_AreaEnergy; + return o; +} + +static void __pyx_tp_dealloc_6squish_6energy_AreaEnergy(PyObject *o) { + #if CYTHON_USE_TP_FINALIZE + if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + #endif + PyObject_GC_UnTrack(o); + PyObject_GC_Track(o); + if (likely(__pyx_ptype_6squish_7voronoi_VoronoiContainer)) __pyx_ptype_6squish_7voronoi_VoronoiContainer->tp_dealloc(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_6squish_6energy_AreaEnergy); +} + +static int __pyx_tp_traverse_6squish_6energy_AreaEnergy(PyObject *o, visitproc v, void *a) { + int e; + e = ((likely(__pyx_ptype_6squish_7voronoi_VoronoiContainer)) ? ((__pyx_ptype_6squish_7voronoi_VoronoiContainer->tp_traverse) ? __pyx_ptype_6squish_7voronoi_VoronoiContainer->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_6squish_6energy_AreaEnergy)); if (e) return e; + return 0; +} + +static int __pyx_tp_clear_6squish_6energy_AreaEnergy(PyObject *o) { + if (likely(__pyx_ptype_6squish_7voronoi_VoronoiContainer)) { if (__pyx_ptype_6squish_7voronoi_VoronoiContainer->tp_clear) __pyx_ptype_6squish_7voronoi_VoronoiContainer->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_6squish_6energy_AreaEnergy); + return 0; +} + +static PyObject *__pyx___dict__getter_6squish_6energy_AreaEnergy(PyObject *o, CYTHON_UNUSED void *x) { + struct __pyx_obj_6squish_6energy_AreaEnergy *p = (struct __pyx_obj_6squish_6energy_AreaEnergy *)o; + if (unlikely(!p->__pyx_base.__dict__)){ + p->__pyx_base.__dict__ = PyDict_New(); + } + Py_XINCREF(p->__pyx_base.__dict__); + return p->__pyx_base.__dict__; +} + +static PyMethodDef __pyx_methods_6squish_6energy_AreaEnergy[] = { + {"__reduce_cython__", (PyCFunction)__pyx_pw_6squish_6energy_10AreaEnergy_3__reduce_cython__, METH_NOARGS, 0}, + {"__setstate_cython__", (PyCFunction)__pyx_pw_6squish_6energy_10AreaEnergy_5__setstate_cython__, METH_O, 0}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_6squish_6energy_AreaEnergy[] = { + {(char *)"__dict__", __pyx___dict__getter_6squish_6energy_AreaEnergy, 0, (char *)0, 0}, + {0, 0, 0, 0, 0} +}; + +static PyTypeObject __pyx_type_6squish_6energy_AreaEnergy = { + PyVarObject_HEAD_INIT(0, 0) + "squish.energy.AreaEnergy", /*tp_name*/ + sizeof(struct __pyx_obj_6squish_6energy_AreaEnergy), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_6squish_6energy_AreaEnergy, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + "\n\tClass for formulas relevant to the Area energy.\n\t:param n: [int] how many sites to generate.\n\t:param w: [float] width of the bounding domain.\n\t:param h: [float] height of the bounding domain.\n\t:param r: [float] radius of zero energy circle.\n\t:param sites: [np.ndarray] collection of sites.\n\t", /*tp_doc*/ + __pyx_tp_traverse_6squish_6energy_AreaEnergy, /*tp_traverse*/ + __pyx_tp_clear_6squish_6energy_AreaEnergy, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_6squish_6energy_AreaEnergy, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_6squish_6energy_AreaEnergy, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + offsetof(struct __pyx_obj_6squish_6energy_AreaEnergy, __pyx_base.__dict__), /*tp_dictoffset*/ + __pyx_pw_6squish_6energy_10AreaEnergy_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_6squish_6energy_AreaEnergy, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif + #if PY_VERSION_HEX >= 0x030800b1 + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif +}; +static struct __pyx_vtabstruct_6squish_6energy_RadialALEnergy __pyx_vtable_6squish_6energy_RadialALEnergy; + +static PyObject *__pyx_tp_new_6squish_6energy_RadialALEnergy(PyTypeObject *t, PyObject *a, PyObject *k) { + struct __pyx_obj_6squish_6energy_RadialALEnergy *p; + PyObject *o = __pyx_ptype_6squish_7voronoi_VoronoiContainer->tp_new(t, a, k); + if (unlikely(!o)) return 0; + p = ((struct __pyx_obj_6squish_6energy_RadialALEnergy *)o); + p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer*)__pyx_vtabptr_6squish_6energy_RadialALEnergy; + return o; +} + +static void __pyx_tp_dealloc_6squish_6energy_RadialALEnergy(PyObject *o) { + #if CYTHON_USE_TP_FINALIZE + if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + #endif + PyObject_GC_UnTrack(o); + PyObject_GC_Track(o); + if (likely(__pyx_ptype_6squish_7voronoi_VoronoiContainer)) __pyx_ptype_6squish_7voronoi_VoronoiContainer->tp_dealloc(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_6squish_6energy_RadialALEnergy); +} + +static int __pyx_tp_traverse_6squish_6energy_RadialALEnergy(PyObject *o, visitproc v, void *a) { + int e; + e = ((likely(__pyx_ptype_6squish_7voronoi_VoronoiContainer)) ? ((__pyx_ptype_6squish_7voronoi_VoronoiContainer->tp_traverse) ? __pyx_ptype_6squish_7voronoi_VoronoiContainer->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_6squish_6energy_RadialALEnergy)); if (e) return e; + return 0; +} + +static int __pyx_tp_clear_6squish_6energy_RadialALEnergy(PyObject *o) { + if (likely(__pyx_ptype_6squish_7voronoi_VoronoiContainer)) { if (__pyx_ptype_6squish_7voronoi_VoronoiContainer->tp_clear) __pyx_ptype_6squish_7voronoi_VoronoiContainer->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_6squish_6energy_RadialALEnergy); + return 0; +} + +static PyObject *__pyx___dict__getter_6squish_6energy_RadialALEnergy(PyObject *o, CYTHON_UNUSED void *x) { + struct __pyx_obj_6squish_6energy_RadialALEnergy *p = (struct __pyx_obj_6squish_6energy_RadialALEnergy *)o; + if (unlikely(!p->__pyx_base.__dict__)){ + p->__pyx_base.__dict__ = PyDict_New(); + } + Py_XINCREF(p->__pyx_base.__dict__); + return p->__pyx_base.__dict__; +} + +static PyMethodDef __pyx_methods_6squish_6energy_RadialALEnergy[] = { + {"__reduce_cython__", (PyCFunction)__pyx_pw_6squish_6energy_14RadialALEnergy_3__reduce_cython__, METH_NOARGS, 0}, + {"__setstate_cython__", (PyCFunction)__pyx_pw_6squish_6energy_14RadialALEnergy_5__setstate_cython__, METH_O, 0}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_6squish_6energy_RadialALEnergy[] = { + {(char *)"__dict__", __pyx___dict__getter_6squish_6energy_RadialALEnergy, 0, (char *)0, 0}, + {0, 0, 0, 0, 0} +}; + +static PyTypeObject __pyx_type_6squish_6energy_RadialALEnergy = { + PyVarObject_HEAD_INIT(0, 0) + "squish.energy.RadialALEnergy", /*tp_name*/ + sizeof(struct __pyx_obj_6squish_6energy_RadialALEnergy), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_6squish_6energy_RadialALEnergy, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + "\n\tClass for formulas relevant to the Area energy.\n\t:param n: [int] how many sites to generate.\n\t:param w: [float] width of the bounding domain.\n\t:param h: [float] height of the bounding domain.\n\t:param r: [float] radius of zero energy circle.\n\t:param sites: [np.ndarray] collection of sites.\n\t", /*tp_doc*/ + __pyx_tp_traverse_6squish_6energy_RadialALEnergy, /*tp_traverse*/ + __pyx_tp_clear_6squish_6energy_RadialALEnergy, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_6squish_6energy_RadialALEnergy, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_6squish_6energy_RadialALEnergy, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + offsetof(struct __pyx_obj_6squish_6energy_RadialALEnergy, __pyx_base.__dict__), /*tp_dictoffset*/ + __pyx_pw_6squish_6energy_14RadialALEnergy_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_6squish_6energy_RadialALEnergy, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif + #if PY_VERSION_HEX >= 0x030800b1 + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif +}; +static struct __pyx_vtabstruct_6squish_6energy_RadialTEnergy __pyx_vtable_6squish_6energy_RadialTEnergy; + +static PyObject *__pyx_tp_new_6squish_6energy_RadialTEnergy(PyTypeObject *t, PyObject *a, PyObject *k) { + struct __pyx_obj_6squish_6energy_RadialTEnergy *p; + PyObject *o = __pyx_ptype_6squish_7voronoi_VoronoiContainer->tp_new(t, a, k); + if (unlikely(!o)) return 0; + p = ((struct __pyx_obj_6squish_6energy_RadialTEnergy *)o); + p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer*)__pyx_vtabptr_6squish_6energy_RadialTEnergy; + return o; +} + +static void __pyx_tp_dealloc_6squish_6energy_RadialTEnergy(PyObject *o) { + #if CYTHON_USE_TP_FINALIZE + if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + #endif + PyObject_GC_UnTrack(o); + PyObject_GC_Track(o); + if (likely(__pyx_ptype_6squish_7voronoi_VoronoiContainer)) __pyx_ptype_6squish_7voronoi_VoronoiContainer->tp_dealloc(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_6squish_6energy_RadialTEnergy); +} + +static int __pyx_tp_traverse_6squish_6energy_RadialTEnergy(PyObject *o, visitproc v, void *a) { + int e; + e = ((likely(__pyx_ptype_6squish_7voronoi_VoronoiContainer)) ? ((__pyx_ptype_6squish_7voronoi_VoronoiContainer->tp_traverse) ? __pyx_ptype_6squish_7voronoi_VoronoiContainer->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_6squish_6energy_RadialTEnergy)); if (e) return e; + return 0; +} + +static int __pyx_tp_clear_6squish_6energy_RadialTEnergy(PyObject *o) { + if (likely(__pyx_ptype_6squish_7voronoi_VoronoiContainer)) { if (__pyx_ptype_6squish_7voronoi_VoronoiContainer->tp_clear) __pyx_ptype_6squish_7voronoi_VoronoiContainer->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_6squish_6energy_RadialTEnergy); + return 0; +} + +static PyObject *__pyx___dict__getter_6squish_6energy_RadialTEnergy(PyObject *o, CYTHON_UNUSED void *x) { + struct __pyx_obj_6squish_6energy_RadialTEnergy *p = (struct __pyx_obj_6squish_6energy_RadialTEnergy *)o; + if (unlikely(!p->__pyx_base.__dict__)){ + p->__pyx_base.__dict__ = PyDict_New(); + } + Py_XINCREF(p->__pyx_base.__dict__); + return p->__pyx_base.__dict__; +} + +static PyMethodDef __pyx_methods_6squish_6energy_RadialTEnergy[] = { + {"__reduce_cython__", (PyCFunction)__pyx_pw_6squish_6energy_13RadialTEnergy_3__reduce_cython__, METH_NOARGS, 0}, + {"__setstate_cython__", (PyCFunction)__pyx_pw_6squish_6energy_13RadialTEnergy_5__setstate_cython__, METH_O, 0}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_6squish_6energy_RadialTEnergy[] = { + {(char *)"__dict__", __pyx___dict__getter_6squish_6energy_RadialTEnergy, 0, (char *)0, 0}, + {0, 0, 0, 0, 0} +}; + +static PyTypeObject __pyx_type_6squish_6energy_RadialTEnergy = { + PyVarObject_HEAD_INIT(0, 0) + "squish.energy.RadialTEnergy", /*tp_name*/ + sizeof(struct __pyx_obj_6squish_6energy_RadialTEnergy), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_6squish_6energy_RadialTEnergy, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + "\n\tClass for formulas relevant to the Area energy.\n\t:param n: [int] how many sites to generate.\n\t:param w: [float] width of the bounding domain.\n\t:param h: [float] height of the bounding domain.\n\t:param r: [float] radius of zero energy circle.\n\t:param sites: [np.ndarray] collection of sites.\n\t", /*tp_doc*/ + __pyx_tp_traverse_6squish_6energy_RadialTEnergy, /*tp_traverse*/ + __pyx_tp_clear_6squish_6energy_RadialTEnergy, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_6squish_6energy_RadialTEnergy, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_6squish_6energy_RadialTEnergy, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + offsetof(struct __pyx_obj_6squish_6energy_RadialTEnergy, __pyx_base.__dict__), /*tp_dictoffset*/ + __pyx_pw_6squish_6energy_13RadialTEnergy_1__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_6squish_6energy_RadialTEnergy, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif + #if PY_VERSION_HEX >= 0x030800b1 + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif +}; +static struct __pyx_vtabstruct_array __pyx_vtable_array; + +static PyObject *__pyx_tp_new_array(PyTypeObject *t, PyObject *a, PyObject *k) { + struct __pyx_array_obj *p; + PyObject *o; + if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + p = ((struct __pyx_array_obj *)o); + p->__pyx_vtab = __pyx_vtabptr_array; + p->mode = ((PyObject*)Py_None); Py_INCREF(Py_None); + p->_format = ((PyObject*)Py_None); Py_INCREF(Py_None); + if (unlikely(__pyx_array___cinit__(o, a, k) < 0)) goto bad; + return o; + bad: + Py_DECREF(o); o = 0; + return NULL; +} + +static void __pyx_tp_dealloc_array(PyObject *o) { + struct __pyx_array_obj *p = (struct __pyx_array_obj *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + #endif + { + PyObject *etype, *eval, *etb; + PyErr_Fetch(&etype, &eval, &etb); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); + __pyx_array___dealloc__(o); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); + PyErr_Restore(etype, eval, etb); + } + Py_CLEAR(p->mode); + Py_CLEAR(p->_format); + (*Py_TYPE(o)->tp_free)(o); +} +static PyObject *__pyx_sq_item_array(PyObject *o, Py_ssize_t i) { + PyObject *r; + PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0; + r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x); + Py_DECREF(x); + return r; +} + +static int __pyx_mp_ass_subscript_array(PyObject *o, PyObject *i, PyObject *v) { + if (v) { + return __pyx_array___setitem__(o, i, v); + } + else { + PyErr_Format(PyExc_NotImplementedError, + "Subscript deletion not supported by %.200s", Py_TYPE(o)->tp_name); + return -1; + } +} + +static PyObject *__pyx_tp_getattro_array(PyObject *o, PyObject *n) { + PyObject *v = __Pyx_PyObject_GenericGetAttr(o, n); + if (!v && PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + v = __pyx_array___getattr__(o, n); + } + return v; +} + +static PyObject *__pyx_getprop___pyx_array_memview(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_15View_dot_MemoryView_5array_7memview_1__get__(o); +} + +static PyMethodDef __pyx_methods_array[] = { + {"__getattr__", (PyCFunction)__pyx_array___getattr__, METH_O|METH_COEXIST, 0}, + {"__reduce_cython__", (PyCFunction)__pyx_pw___pyx_array_1__reduce_cython__, METH_NOARGS, 0}, + {"__setstate_cython__", (PyCFunction)__pyx_pw___pyx_array_3__setstate_cython__, METH_O, 0}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_array[] = { + {(char *)"memview", __pyx_getprop___pyx_array_memview, 0, (char *)0, 0}, + {0, 0, 0, 0, 0} +}; + +static PySequenceMethods __pyx_tp_as_sequence_array = { + __pyx_array___len__, /*sq_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + __pyx_sq_item_array, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + 0, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0, /*sq_inplace_repeat*/ +}; + +static PyMappingMethods __pyx_tp_as_mapping_array = { + __pyx_array___len__, /*mp_length*/ + __pyx_array___getitem__, /*mp_subscript*/ + __pyx_mp_ass_subscript_array, /*mp_ass_subscript*/ +}; + +static PyBufferProcs __pyx_tp_as_buffer_array = { + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getreadbuffer*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getwritebuffer*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getsegcount*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getcharbuffer*/ + #endif + __pyx_array_getbuffer, /*bf_getbuffer*/ + 0, /*bf_releasebuffer*/ +}; + +static PyTypeObject __pyx_type___pyx_array = { + PyVarObject_HEAD_INIT(0, 0) + "squish.energy.array", /*tp_name*/ + sizeof(struct __pyx_array_obj), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_array, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + &__pyx_tp_as_sequence_array, /*tp_as_sequence*/ + &__pyx_tp_as_mapping_array, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + __pyx_tp_getattro_array, /*tp_getattro*/ + 0, /*tp_setattro*/ + &__pyx_tp_as_buffer_array, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_array, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_array, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_array, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif + #if PY_VERSION_HEX >= 0x030800b1 + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif +}; + +static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_MemviewEnum_obj *p; + PyObject *o; + if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + p = ((struct __pyx_MemviewEnum_obj *)o); + p->name = Py_None; Py_INCREF(Py_None); + return o; +} + +static void __pyx_tp_dealloc_Enum(PyObject *o) { + struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + #endif + PyObject_GC_UnTrack(o); + Py_CLEAR(p->name); + (*Py_TYPE(o)->tp_free)(o); +} + +static int __pyx_tp_traverse_Enum(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o; + if (p->name) { + e = (*v)(p->name, a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_Enum(PyObject *o) { + PyObject* tmp; + struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o; + tmp = ((PyObject*)p->name); + p->name = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + return 0; +} + +static PyMethodDef __pyx_methods_Enum[] = { + {"__reduce_cython__", (PyCFunction)__pyx_pw___pyx_MemviewEnum_1__reduce_cython__, METH_NOARGS, 0}, + {"__setstate_cython__", (PyCFunction)__pyx_pw___pyx_MemviewEnum_3__setstate_cython__, METH_O, 0}, + {0, 0, 0, 0} +}; + +static PyTypeObject __pyx_type___pyx_MemviewEnum = { + PyVarObject_HEAD_INIT(0, 0) + "squish.energy.Enum", /*tp_name*/ + sizeof(struct __pyx_MemviewEnum_obj), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_Enum, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + __pyx_MemviewEnum___repr__, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_Enum, /*tp_traverse*/ + __pyx_tp_clear_Enum, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_Enum, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + __pyx_MemviewEnum___init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_Enum, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif + #if PY_VERSION_HEX >= 0x030800b1 + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif +}; +static struct __pyx_vtabstruct_memoryview __pyx_vtable_memoryview; + +static PyObject *__pyx_tp_new_memoryview(PyTypeObject *t, PyObject *a, PyObject *k) { + struct __pyx_memoryview_obj *p; + PyObject *o; + if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + p = ((struct __pyx_memoryview_obj *)o); + p->__pyx_vtab = __pyx_vtabptr_memoryview; + p->obj = Py_None; Py_INCREF(Py_None); + p->_size = Py_None; Py_INCREF(Py_None); + p->_array_interface = Py_None; Py_INCREF(Py_None); + p->view.obj = NULL; + if (unlikely(__pyx_memoryview___cinit__(o, a, k) < 0)) goto bad; + return o; + bad: + Py_DECREF(o); o = 0; + return NULL; +} + +static void __pyx_tp_dealloc_memoryview(PyObject *o) { + struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + #endif + PyObject_GC_UnTrack(o); + { + PyObject *etype, *eval, *etb; + PyErr_Fetch(&etype, &eval, &etb); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); + __pyx_memoryview___dealloc__(o); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); + PyErr_Restore(etype, eval, etb); + } + Py_CLEAR(p->obj); + Py_CLEAR(p->_size); + Py_CLEAR(p->_array_interface); + (*Py_TYPE(o)->tp_free)(o); +} + +static int __pyx_tp_traverse_memoryview(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o; + if (p->obj) { + e = (*v)(p->obj, a); if (e) return e; + } + if (p->_size) { + e = (*v)(p->_size, a); if (e) return e; + } + if (p->_array_interface) { + e = (*v)(p->_array_interface, a); if (e) return e; + } + if (p->view.obj) { + e = (*v)(p->view.obj, a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_memoryview(PyObject *o) { + PyObject* tmp; + struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o; + tmp = ((PyObject*)p->obj); + p->obj = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->_size); + p->_size = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + tmp = ((PyObject*)p->_array_interface); + p->_array_interface = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + Py_CLEAR(p->view.obj); + return 0; +} +static PyObject *__pyx_sq_item_memoryview(PyObject *o, Py_ssize_t i) { + PyObject *r; + PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0; + r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x); + Py_DECREF(x); + return r; +} + +static int __pyx_mp_ass_subscript_memoryview(PyObject *o, PyObject *i, PyObject *v) { + if (v) { + return __pyx_memoryview___setitem__(o, i, v); + } + else { + PyErr_Format(PyExc_NotImplementedError, + "Subscript deletion not supported by %.200s", Py_TYPE(o)->tp_name); + return -1; + } +} + +static PyObject *__pyx_getprop___pyx_memoryview_T(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_15View_dot_MemoryView_10memoryview_1T_1__get__(o); +} + +static PyObject *__pyx_getprop___pyx_memoryview_base(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_15View_dot_MemoryView_10memoryview_4base_1__get__(o); +} + +static PyObject *__pyx_getprop___pyx_memoryview_shape(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_15View_dot_MemoryView_10memoryview_5shape_1__get__(o); +} + +static PyObject *__pyx_getprop___pyx_memoryview_strides(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_15View_dot_MemoryView_10memoryview_7strides_1__get__(o); +} + +static PyObject *__pyx_getprop___pyx_memoryview_suboffsets(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_15View_dot_MemoryView_10memoryview_10suboffsets_1__get__(o); +} + +static PyObject *__pyx_getprop___pyx_memoryview_ndim(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_15View_dot_MemoryView_10memoryview_4ndim_1__get__(o); +} + +static PyObject *__pyx_getprop___pyx_memoryview_itemsize(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_15View_dot_MemoryView_10memoryview_8itemsize_1__get__(o); +} + +static PyObject *__pyx_getprop___pyx_memoryview_nbytes(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_15View_dot_MemoryView_10memoryview_6nbytes_1__get__(o); +} + +static PyObject *__pyx_getprop___pyx_memoryview_size(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_15View_dot_MemoryView_10memoryview_4size_1__get__(o); +} + +static PyMethodDef __pyx_methods_memoryview[] = { + {"is_c_contig", (PyCFunction)__pyx_memoryview_is_c_contig, METH_NOARGS, 0}, + {"is_f_contig", (PyCFunction)__pyx_memoryview_is_f_contig, METH_NOARGS, 0}, + {"copy", (PyCFunction)__pyx_memoryview_copy, METH_NOARGS, 0}, + {"copy_fortran", (PyCFunction)__pyx_memoryview_copy_fortran, METH_NOARGS, 0}, + {"__reduce_cython__", (PyCFunction)__pyx_pw___pyx_memoryview_1__reduce_cython__, METH_NOARGS, 0}, + {"__setstate_cython__", (PyCFunction)__pyx_pw___pyx_memoryview_3__setstate_cython__, METH_O, 0}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_memoryview[] = { + {(char *)"T", __pyx_getprop___pyx_memoryview_T, 0, (char *)0, 0}, + {(char *)"base", __pyx_getprop___pyx_memoryview_base, 0, (char *)0, 0}, + {(char *)"shape", __pyx_getprop___pyx_memoryview_shape, 0, (char *)0, 0}, + {(char *)"strides", __pyx_getprop___pyx_memoryview_strides, 0, (char *)0, 0}, + {(char *)"suboffsets", __pyx_getprop___pyx_memoryview_suboffsets, 0, (char *)0, 0}, + {(char *)"ndim", __pyx_getprop___pyx_memoryview_ndim, 0, (char *)0, 0}, + {(char *)"itemsize", __pyx_getprop___pyx_memoryview_itemsize, 0, (char *)0, 0}, + {(char *)"nbytes", __pyx_getprop___pyx_memoryview_nbytes, 0, (char *)0, 0}, + {(char *)"size", __pyx_getprop___pyx_memoryview_size, 0, (char *)0, 0}, + {0, 0, 0, 0, 0} +}; + +static PySequenceMethods __pyx_tp_as_sequence_memoryview = { + __pyx_memoryview___len__, /*sq_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + __pyx_sq_item_memoryview, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + 0, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0, /*sq_inplace_repeat*/ +}; + +static PyMappingMethods __pyx_tp_as_mapping_memoryview = { + __pyx_memoryview___len__, /*mp_length*/ + __pyx_memoryview___getitem__, /*mp_subscript*/ + __pyx_mp_ass_subscript_memoryview, /*mp_ass_subscript*/ +}; + +static PyBufferProcs __pyx_tp_as_buffer_memoryview = { + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getreadbuffer*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getwritebuffer*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getsegcount*/ + #endif + #if PY_MAJOR_VERSION < 3 + 0, /*bf_getcharbuffer*/ + #endif + __pyx_memoryview_getbuffer, /*bf_getbuffer*/ + 0, /*bf_releasebuffer*/ +}; + +static PyTypeObject __pyx_type___pyx_memoryview = { + PyVarObject_HEAD_INIT(0, 0) + "squish.energy.memoryview", /*tp_name*/ + sizeof(struct __pyx_memoryview_obj), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_memoryview, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + __pyx_memoryview___repr__, /*tp_repr*/ + 0, /*tp_as_number*/ + &__pyx_tp_as_sequence_memoryview, /*tp_as_sequence*/ + &__pyx_tp_as_mapping_memoryview, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + __pyx_memoryview___str__, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + &__pyx_tp_as_buffer_memoryview, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_memoryview, /*tp_traverse*/ + __pyx_tp_clear_memoryview, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_memoryview, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_memoryview, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_memoryview, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif + #if PY_VERSION_HEX >= 0x030800b1 + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif +}; +static struct __pyx_vtabstruct__memoryviewslice __pyx_vtable__memoryviewslice; + +static PyObject *__pyx_tp_new__memoryviewslice(PyTypeObject *t, PyObject *a, PyObject *k) { + struct __pyx_memoryviewslice_obj *p; + PyObject *o = __pyx_tp_new_memoryview(t, a, k); + if (unlikely(!o)) return 0; + p = ((struct __pyx_memoryviewslice_obj *)o); + p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_memoryview*)__pyx_vtabptr__memoryviewslice; + p->from_object = Py_None; Py_INCREF(Py_None); + p->from_slice.memview = NULL; + return o; +} + +static void __pyx_tp_dealloc__memoryviewslice(PyObject *o) { + struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o; + #if CYTHON_USE_TP_FINALIZE + if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + #endif + PyObject_GC_UnTrack(o); + { + PyObject *etype, *eval, *etb; + PyErr_Fetch(&etype, &eval, &etb); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); + __pyx_memoryviewslice___dealloc__(o); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); + PyErr_Restore(etype, eval, etb); + } + Py_CLEAR(p->from_object); + PyObject_GC_Track(o); + __pyx_tp_dealloc_memoryview(o); +} + +static int __pyx_tp_traverse__memoryviewslice(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o; + e = __pyx_tp_traverse_memoryview(o, v, a); if (e) return e; + if (p->from_object) { + e = (*v)(p->from_object, a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear__memoryviewslice(PyObject *o) { + PyObject* tmp; + struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o; + __pyx_tp_clear_memoryview(o); + tmp = ((PyObject*)p->from_object); + p->from_object = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); + __PYX_XDEC_MEMVIEW(&p->from_slice, 1); + return 0; +} + +static PyObject *__pyx_getprop___pyx_memoryviewslice_base(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_15View_dot_MemoryView_16_memoryviewslice_4base_1__get__(o); +} + +static PyMethodDef __pyx_methods__memoryviewslice[] = { + {"__reduce_cython__", (PyCFunction)__pyx_pw___pyx_memoryviewslice_1__reduce_cython__, METH_NOARGS, 0}, + {"__setstate_cython__", (PyCFunction)__pyx_pw___pyx_memoryviewslice_3__setstate_cython__, METH_O, 0}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets__memoryviewslice[] = { + {(char *)"base", __pyx_getprop___pyx_memoryviewslice_base, 0, (char *)0, 0}, + {0, 0, 0, 0, 0} +}; + +static PyTypeObject __pyx_type___pyx_memoryviewslice = { + PyVarObject_HEAD_INIT(0, 0) + "squish.energy._memoryviewslice", /*tp_name*/ + sizeof(struct __pyx_memoryviewslice_obj), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc__memoryviewslice, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + #if PY_MAJOR_VERSION < 3 + 0, /*tp_compare*/ + #endif + #if PY_MAJOR_VERSION >= 3 + 0, /*tp_as_async*/ + #endif + #if CYTHON_COMPILING_IN_PYPY + __pyx_memoryview___repr__, /*tp_repr*/ + #else + 0, /*tp_repr*/ + #endif + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + #if CYTHON_COMPILING_IN_PYPY + __pyx_memoryview___str__, /*tp_str*/ + #else + 0, /*tp_str*/ + #endif + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + "Internal class for passing memoryview slices to Python", /*tp_doc*/ + __pyx_tp_traverse__memoryviewslice, /*tp_traverse*/ + __pyx_tp_clear__memoryviewslice, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods__memoryviewslice, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets__memoryviewslice, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new__memoryviewslice, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif + #if PY_VERSION_HEX >= 0x030800b1 + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif +}; + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; + +#if PY_MAJOR_VERSION >= 3 +#if CYTHON_PEP489_MULTI_PHASE_INIT +static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +static int __pyx_pymod_exec_energy(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_energy}, + {0, NULL} +}; +#endif + +static struct PyModuleDef __pyx_moduledef = { + PyModuleDef_HEAD_INIT, + "energy", + 0, /* m_doc */ + #if CYTHON_PEP489_MULTI_PHASE_INIT + 0, /* m_size */ + #else + -1, /* m_size */ + #endif + __pyx_methods /* m_methods */, + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_moduledef_slots, /* m_slots */ + #else + NULL, /* m_reload */ + #endif + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ +}; +#endif +#ifndef CYTHON_SMALL_CODE +#if defined(__clang__) + #define CYTHON_SMALL_CODE +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + #define CYTHON_SMALL_CODE __attribute__((cold)) +#else + #define CYTHON_SMALL_CODE +#endif +#endif + +static __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_n_s_ASCII, __pyx_k_ASCII, sizeof(__pyx_k_ASCII), 0, 0, 1, 1}, + {&__pyx_n_u_Area, __pyx_k_Area, sizeof(__pyx_k_Area), 0, 1, 0, 1}, + {&__pyx_n_s_AreaEnergy, __pyx_k_AreaEnergy, sizeof(__pyx_k_AreaEnergy), 0, 0, 1, 1}, + {&__pyx_kp_s_Buffer_view_does_not_expose_stri, __pyx_k_Buffer_view_does_not_expose_stri, sizeof(__pyx_k_Buffer_view_does_not_expose_stri), 0, 0, 1, 0}, + {&__pyx_kp_s_Can_only_create_a_buffer_that_is, __pyx_k_Can_only_create_a_buffer_that_is, sizeof(__pyx_k_Can_only_create_a_buffer_that_is), 0, 0, 1, 0}, + {&__pyx_kp_s_Cannot_assign_to_read_only_memor, __pyx_k_Cannot_assign_to_read_only_memor, sizeof(__pyx_k_Cannot_assign_to_read_only_memor), 0, 0, 1, 0}, + {&__pyx_kp_s_Cannot_create_writable_memory_vi, __pyx_k_Cannot_create_writable_memory_vi, sizeof(__pyx_k_Cannot_create_writable_memory_vi), 0, 0, 1, 0}, + {&__pyx_kp_s_Cannot_index_with_type_s, __pyx_k_Cannot_index_with_type_s, sizeof(__pyx_k_Cannot_index_with_type_s), 0, 0, 1, 0}, + {&__pyx_n_s_Ellipsis, __pyx_k_Ellipsis, sizeof(__pyx_k_Ellipsis), 0, 0, 1, 1}, + {&__pyx_kp_s_Empty_shape_tuple_for_cython_arr, __pyx_k_Empty_shape_tuple_for_cython_arr, sizeof(__pyx_k_Empty_shape_tuple_for_cython_arr), 0, 0, 1, 0}, + {&__pyx_n_s_FLOAT, __pyx_k_FLOAT, sizeof(__pyx_k_FLOAT), 0, 0, 1, 1}, + {&__pyx_n_s_INT, __pyx_k_INT, sizeof(__pyx_k_INT), 0, 0, 1, 1}, + {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1}, + {&__pyx_kp_s_Incompatible_checksums_s_vs_0xb0, __pyx_k_Incompatible_checksums_s_vs_0xb0, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xb0), 0, 0, 1, 0}, + {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1}, + {&__pyx_kp_s_Indirect_dimensions_not_supporte, __pyx_k_Indirect_dimensions_not_supporte, sizeof(__pyx_k_Indirect_dimensions_not_supporte), 0, 0, 1, 0}, + {&__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_k_Invalid_mode_expected_c_or_fortr, sizeof(__pyx_k_Invalid_mode_expected_c_or_fortr), 0, 0, 1, 0}, + {&__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_k_Invalid_shape_in_axis_d_d, sizeof(__pyx_k_Invalid_shape_in_axis_d_d), 0, 0, 1, 0}, + {&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1}, + {&__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_k_MemoryView_of_r_at_0x_x, sizeof(__pyx_k_MemoryView_of_r_at_0x_x), 0, 0, 1, 0}, + {&__pyx_kp_s_MemoryView_of_r_object, __pyx_k_MemoryView_of_r_object, sizeof(__pyx_k_MemoryView_of_r_object), 0, 0, 1, 0}, + {&__pyx_n_b_O, __pyx_k_O, sizeof(__pyx_k_O), 0, 0, 0, 1}, + {&__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_k_Out_of_bounds_on_buffer_access_a, sizeof(__pyx_k_Out_of_bounds_on_buffer_access_a), 0, 0, 1, 0}, + {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1}, + {&__pyx_n_s_RadialALEnergy, __pyx_k_RadialALEnergy, sizeof(__pyx_k_RadialALEnergy), 0, 0, 1, 1}, + {&__pyx_n_s_RadialTEnergy, __pyx_k_RadialTEnergy, sizeof(__pyx_k_RadialTEnergy), 0, 0, 1, 1}, + {&__pyx_kp_u_Radial_AL, __pyx_k_Radial_AL, sizeof(__pyx_k_Radial_AL), 0, 1, 0, 0}, + {&__pyx_kp_u_Radial_T, __pyx_k_Radial_T, sizeof(__pyx_k_Radial_T), 0, 1, 0, 0}, + {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, + {&__pyx_kp_s_Unable_to_convert_item_to_object, __pyx_k_Unable_to_convert_item_to_object, sizeof(__pyx_k_Unable_to_convert_item_to_object), 0, 0, 1, 0}, + {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, + {&__pyx_n_s_View_MemoryView, __pyx_k_View_MemoryView, sizeof(__pyx_k_View_MemoryView), 0, 0, 1, 1}, + {&__pyx_n_s_allocate_buffer, __pyx_k_allocate_buffer, sizeof(__pyx_k_allocate_buffer), 0, 0, 1, 1}, + {&__pyx_n_u_area, __pyx_k_area, sizeof(__pyx_k_area), 0, 1, 0, 1}, + {&__pyx_n_s_attr_str, __pyx_k_attr_str, sizeof(__pyx_k_attr_str), 0, 0, 1, 1}, + {&__pyx_n_s_base, __pyx_k_base, sizeof(__pyx_k_base), 0, 0, 1, 1}, + {&__pyx_n_s_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 0, 1, 1}, + {&__pyx_n_u_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 1, 0, 1}, + {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1}, + {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, + {&__pyx_kp_s_contiguous_and_direct, __pyx_k_contiguous_and_direct, sizeof(__pyx_k_contiguous_and_direct), 0, 0, 1, 0}, + {&__pyx_kp_s_contiguous_and_indirect, __pyx_k_contiguous_and_indirect, sizeof(__pyx_k_contiguous_and_indirect), 0, 0, 1, 0}, + {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, + {&__pyx_n_s_dtype, __pyx_k_dtype, sizeof(__pyx_k_dtype), 0, 0, 1, 1}, + {&__pyx_n_s_dtype_is_object, __pyx_k_dtype_is_object, sizeof(__pyx_k_dtype_is_object), 0, 0, 1, 1}, + {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, + {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1}, + {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1}, + {&__pyx_n_s_flags, __pyx_k_flags, sizeof(__pyx_k_flags), 0, 0, 1, 1}, + {&__pyx_n_s_float64, __pyx_k_float64, sizeof(__pyx_k_float64), 0, 0, 1, 1}, + {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1}, + {&__pyx_n_s_fortran, __pyx_k_fortran, sizeof(__pyx_k_fortran), 0, 0, 1, 1}, + {&__pyx_n_u_fortran, __pyx_k_fortran, sizeof(__pyx_k_fortran), 0, 1, 0, 1}, + {&__pyx_n_s_full, __pyx_k_full, sizeof(__pyx_k_full), 0, 0, 1, 1}, + {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1}, + {&__pyx_kp_s_got_differing_extents_in_dimensi, __pyx_k_got_differing_extents_in_dimensi, sizeof(__pyx_k_got_differing_extents_in_dimensi), 0, 0, 1, 0}, + {&__pyx_n_s_h, __pyx_k_h, sizeof(__pyx_k_h), 0, 0, 1, 1}, + {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, + {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, + {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, + {&__pyx_n_s_int64, __pyx_k_int64, sizeof(__pyx_k_int64), 0, 0, 1, 1}, + {&__pyx_n_s_itemsize, __pyx_k_itemsize, sizeof(__pyx_k_itemsize), 0, 0, 1, 1}, + {&__pyx_kp_s_itemsize_0_for_cython_array, __pyx_k_itemsize_0_for_cython_array, sizeof(__pyx_k_itemsize_0_for_cython_array), 0, 0, 1, 0}, + {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, + {&__pyx_n_s_memview, __pyx_k_memview, sizeof(__pyx_k_memview), 0, 0, 1, 1}, + {&__pyx_n_s_minimum, __pyx_k_minimum, sizeof(__pyx_k_minimum), 0, 0, 1, 1}, + {&__pyx_n_s_mode, __pyx_k_mode, sizeof(__pyx_k_mode), 0, 0, 1, 1}, + {&__pyx_n_s_n, __pyx_k_n, sizeof(__pyx_k_n), 0, 0, 1, 1}, + {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, + {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1}, + {&__pyx_n_s_ndim, __pyx_k_ndim, sizeof(__pyx_k_ndim), 0, 0, 1, 1}, + {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1}, + {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0}, + {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1}, + {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1}, + {&__pyx_kp_u_numpy_core_multiarray_failed_to, __pyx_k_numpy_core_multiarray_failed_to, sizeof(__pyx_k_numpy_core_multiarray_failed_to), 0, 1, 0, 0}, + {&__pyx_kp_u_numpy_core_umath_failed_to_impor, __pyx_k_numpy_core_umath_failed_to_impor, sizeof(__pyx_k_numpy_core_umath_failed_to_impor), 0, 1, 0, 0}, + {&__pyx_n_s_obj, __pyx_k_obj, sizeof(__pyx_k_obj), 0, 0, 1, 1}, + {&__pyx_n_s_pack, __pyx_k_pack, sizeof(__pyx_k_pack), 0, 0, 1, 1}, + {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_getbuffer, __pyx_k_pyx_getbuffer, sizeof(__pyx_k_pyx_getbuffer), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_unpickle_Enum, __pyx_k_pyx_unpickle_Enum, sizeof(__pyx_k_pyx_unpickle_Enum), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, + {&__pyx_n_s_r, __pyx_k_r, sizeof(__pyx_k_r), 0, 0, 1, 1}, + {&__pyx_kp_u_radial_al, __pyx_k_radial_al, sizeof(__pyx_k_radial_al), 0, 1, 0, 0}, + {&__pyx_kp_u_radial_t, __pyx_k_radial_t, sizeof(__pyx_k_radial_t), 0, 1, 0, 0}, + {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, + {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1}, + {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1}, + {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1}, + {&__pyx_kp_s_self_edge_cache_map_cannot_be_co, __pyx_k_self_edge_cache_map_cannot_be_co, sizeof(__pyx_k_self_edge_cache_map_cannot_be_co), 0, 0, 1, 0}, + {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, + {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1}, + {&__pyx_n_s_shape, __pyx_k_shape, sizeof(__pyx_k_shape), 0, 0, 1, 1}, + {&__pyx_n_s_site_arr, __pyx_k_site_arr, sizeof(__pyx_k_site_arr), 0, 0, 1, 1}, + {&__pyx_n_s_size, __pyx_k_size, sizeof(__pyx_k_size), 0, 0, 1, 1}, + {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1}, + {&__pyx_n_s_step, __pyx_k_step, sizeof(__pyx_k_step), 0, 0, 1, 1}, + {&__pyx_n_s_stop, __pyx_k_stop, sizeof(__pyx_k_stop), 0, 0, 1, 1}, + {&__pyx_kp_s_strided_and_direct, __pyx_k_strided_and_direct, sizeof(__pyx_k_strided_and_direct), 0, 0, 1, 0}, + {&__pyx_kp_s_strided_and_direct_or_indirect, __pyx_k_strided_and_direct_or_indirect, sizeof(__pyx_k_strided_and_direct_or_indirect), 0, 0, 1, 0}, + {&__pyx_kp_s_strided_and_indirect, __pyx_k_strided_and_indirect, sizeof(__pyx_k_strided_and_indirect), 0, 0, 1, 0}, + {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0}, + {&__pyx_n_s_struct, __pyx_k_struct, sizeof(__pyx_k_struct), 0, 0, 1, 1}, + {&__pyx_n_s_sum, __pyx_k_sum, sizeof(__pyx_k_sum), 0, 0, 1, 1}, + {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1}, + {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {&__pyx_n_s_title_str, __pyx_k_title_str, sizeof(__pyx_k_title_str), 0, 0, 1, 1}, + {&__pyx_kp_s_unable_to_allocate_array_data, __pyx_k_unable_to_allocate_array_data, sizeof(__pyx_k_unable_to_allocate_array_data), 0, 0, 1, 0}, + {&__pyx_kp_s_unable_to_allocate_shape_and_str, __pyx_k_unable_to_allocate_shape_and_str, sizeof(__pyx_k_unable_to_allocate_shape_and_str), 0, 0, 1, 0}, + {&__pyx_n_s_unpack, __pyx_k_unpack, sizeof(__pyx_k_unpack), 0, 0, 1, 1}, + {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1}, + {&__pyx_n_s_w, __pyx_k_w, sizeof(__pyx_k_w), 0, 0, 1, 1}, + {&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1}, + {0, 0, 0, 0, 0, 0, 0} +}; +static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { + __pyx_builtin_super = __Pyx_GetBuiltinName(__pyx_n_s_super); if (!__pyx_builtin_super) __PYX_ERR(0, 38, __pyx_L1_error) + __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error) + __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(2, 945, __pyx_L1_error) + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(1, 133, __pyx_L1_error) + __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(1, 148, __pyx_L1_error) + __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(1, 151, __pyx_L1_error) + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(1, 180, __pyx_L1_error) + __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(1, 404, __pyx_L1_error) + __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(1, 613, __pyx_L1_error) + __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(1, 832, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} + +static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + */ + __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_self_edge_cache_map_cannot_be_co); if (unlikely(!__pyx_tuple_)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple_); + __Pyx_GIVEREF(__pyx_tuple_); + + /* "(tree fragment)":4 + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + */ + __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_self_edge_cache_map_cannot_be_co); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__2); + __Pyx_GIVEREF(__pyx_tuple__2); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + */ + __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_self_edge_cache_map_cannot_be_co); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__3); + __Pyx_GIVEREF(__pyx_tuple__3); + + /* "(tree fragment)":4 + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + */ + __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_self_edge_cache_map_cannot_be_co); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__4); + __Pyx_GIVEREF(__pyx_tuple__4); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + */ + __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_self_edge_cache_map_cannot_be_co); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__5); + __Pyx_GIVEREF(__pyx_tuple__5); + + /* "(tree fragment)":4 + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + */ + __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_self_edge_cache_map_cannot_be_co); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__6); + __Pyx_GIVEREF(__pyx_tuple__6); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":945 + * __pyx_import_array() + * except Exception: + * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< + * + * cdef inline int import_umath() except -1: + */ + __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(2, 945, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__7); + __Pyx_GIVEREF(__pyx_tuple__7); + + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":951 + * _import_umath() + * except Exception: + * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< + * + * cdef inline int import_ufunc() except -1: + */ + __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(2, 951, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__8); + __Pyx_GIVEREF(__pyx_tuple__8); + + /* "View.MemoryView":133 + * + * if not self.ndim: + * raise ValueError("Empty shape tuple for cython.array") # <<<<<<<<<<<<<< + * + * if itemsize <= 0: + */ + __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__9); + __Pyx_GIVEREF(__pyx_tuple__9); + + /* "View.MemoryView":136 + * + * if itemsize <= 0: + * raise ValueError("itemsize <= 0 for cython.array") # <<<<<<<<<<<<<< + * + * if not isinstance(format, bytes): + */ + __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(1, 136, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__10); + __Pyx_GIVEREF(__pyx_tuple__10); + + /* "View.MemoryView":148 + * + * if not self._shape: + * raise MemoryError("unable to allocate shape and strides.") # <<<<<<<<<<<<<< + * + * + */ + __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__11); + __Pyx_GIVEREF(__pyx_tuple__11); + + /* "View.MemoryView":176 + * self.data = malloc(self.len) + * if not self.data: + * raise MemoryError("unable to allocate array data.") # <<<<<<<<<<<<<< + * + * if self.dtype_is_object: + */ + __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__12); + __Pyx_GIVEREF(__pyx_tuple__12); + + /* "View.MemoryView":192 + * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS + * if not (flags & bufmode): + * raise ValueError("Can only create a buffer that is contiguous in memory.") # <<<<<<<<<<<<<< + * info.buf = self.data + * info.len = self.len + */ + __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 192, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__13); + __Pyx_GIVEREF(__pyx_tuple__13); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__14); + __Pyx_GIVEREF(__pyx_tuple__14); + + /* "(tree fragment)":4 + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ + __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__15); + __Pyx_GIVEREF(__pyx_tuple__15); + + /* "View.MemoryView":418 + * def __setitem__(memoryview self, object index, object value): + * if self.view.readonly: + * raise TypeError("Cannot assign to read-only memoryview") # <<<<<<<<<<<<<< + * + * have_slices, index = _unellipsify(index, self.view.ndim) + */ + __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 418, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__16); + __Pyx_GIVEREF(__pyx_tuple__16); + + /* "View.MemoryView":495 + * result = struct.unpack(self.view.format, bytesitem) + * except struct.error: + * raise ValueError("Unable to convert item to object") # <<<<<<<<<<<<<< + * else: + * if len(self.view.format) == 1: + */ + __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 495, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__17); + __Pyx_GIVEREF(__pyx_tuple__17); + + /* "View.MemoryView":520 + * def __getbuffer__(self, Py_buffer *info, int flags): + * if flags & PyBUF_WRITABLE and self.view.readonly: + * raise ValueError("Cannot create writable memory view from read-only memoryview") # <<<<<<<<<<<<<< + * + * if flags & PyBUF_ND: + */ + __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 520, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__18); + __Pyx_GIVEREF(__pyx_tuple__18); + + /* "View.MemoryView":570 + * if self.view.strides == NULL: + * + * raise ValueError("Buffer view does not expose strides") # <<<<<<<<<<<<<< + * + * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) + */ + __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 570, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__19); + __Pyx_GIVEREF(__pyx_tuple__19); + + /* "View.MemoryView":577 + * def suboffsets(self): + * if self.view.suboffsets == NULL: + * return (-1,) * self.view.ndim # <<<<<<<<<<<<<< + * + * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) + */ + __pyx_tuple__20 = PyTuple_New(1); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 577, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__20); + __Pyx_INCREF(__pyx_int_neg_1); + __Pyx_GIVEREF(__pyx_int_neg_1); + PyTuple_SET_ITEM(__pyx_tuple__20, 0, __pyx_int_neg_1); + __Pyx_GIVEREF(__pyx_tuple__20); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__21); + __Pyx_GIVEREF(__pyx_tuple__21); + + /* "(tree fragment)":4 + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ + __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__22); + __Pyx_GIVEREF(__pyx_tuple__22); + + /* "View.MemoryView":682 + * if item is Ellipsis: + * if not seen_ellipsis: + * result.extend([slice(None)] * (ndim - len(tup) + 1)) # <<<<<<<<<<<<<< + * seen_ellipsis = True + * else: + */ + __pyx_slice__23 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__23)) __PYX_ERR(1, 682, __pyx_L1_error) + __Pyx_GOTREF(__pyx_slice__23); + __Pyx_GIVEREF(__pyx_slice__23); + + /* "View.MemoryView":703 + * for suboffset in suboffsets[:ndim]: + * if suboffset >= 0: + * raise ValueError("Indirect dimensions not supported") # <<<<<<<<<<<<<< + * + * + */ + __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(1, 703, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__24); + __Pyx_GIVEREF(__pyx_tuple__24); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + */ + __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__25); + __Pyx_GIVEREF(__pyx_tuple__25); + + /* "(tree fragment)":4 + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< + */ + __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__26); + __Pyx_GIVEREF(__pyx_tuple__26); + + /* "View.MemoryView":286 + * return self.name + * + * cdef generic = Enum("") # <<<<<<<<<<<<<< + * cdef strided = Enum("") # default + * cdef indirect = Enum("") + */ + __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(1, 286, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__27); + __Pyx_GIVEREF(__pyx_tuple__27); + + /* "View.MemoryView":287 + * + * cdef generic = Enum("") + * cdef strided = Enum("") # default # <<<<<<<<<<<<<< + * cdef indirect = Enum("") + * + */ + __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 287, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__28); + __Pyx_GIVEREF(__pyx_tuple__28); + + /* "View.MemoryView":288 + * cdef generic = Enum("") + * cdef strided = Enum("") # default + * cdef indirect = Enum("") # <<<<<<<<<<<<<< + * + * + */ + __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(1, 288, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__29); + __Pyx_GIVEREF(__pyx_tuple__29); + + /* "View.MemoryView":291 + * + * + * cdef contiguous = Enum("") # <<<<<<<<<<<<<< + * cdef indirect_contiguous = Enum("") + * + */ + __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 291, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__30); + __Pyx_GIVEREF(__pyx_tuple__30); + + /* "View.MemoryView":292 + * + * cdef contiguous = Enum("") + * cdef indirect_contiguous = Enum("") # <<<<<<<<<<<<<< + * + * + */ + __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(1, 292, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__31); + __Pyx_GIVEREF(__pyx_tuple__31); + + /* "(tree fragment)":1 + * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + __pyx_tuple__32 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__32); + __Pyx_GIVEREF(__pyx_tuple__32); + __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { + /* InitThreads.init */ + #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 +PyEval_InitThreads(); +#endif + +if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) + + if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_184977713 = PyInt_FromLong(184977713L); if (unlikely(!__pyx_int_184977713)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} + +static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ + +static int __Pyx_modinit_global_init_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); + /*--- Global init code ---*/ + generic = Py_None; Py_INCREF(Py_None); + strided = Py_None; Py_INCREF(Py_None); + indirect = Py_None; Py_INCREF(Py_None); + contiguous = Py_None; Py_INCREF(Py_None); + indirect_contiguous = Py_None; Py_INCREF(Py_None); + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); + /*--- Variable export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); + /*--- Function export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_type_init_code(void) { + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); + /*--- Type init code ---*/ + __pyx_t_1 = PyImport_ImportModule("squish.voronoi"); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_ptype_6squish_7voronoi_VoronoiContainer = __Pyx_ImportType(__pyx_t_1, "squish.voronoi", "VoronoiContainer", sizeof(struct __pyx_obj_6squish_7voronoi_VoronoiContainer), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_6squish_7voronoi_VoronoiContainer) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_vtabptr_6squish_7voronoi_VoronoiContainer = (struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer*)__Pyx_GetVtable(__pyx_ptype_6squish_7voronoi_VoronoiContainer->tp_dict); if (unlikely(!__pyx_vtabptr_6squish_7voronoi_VoronoiContainer)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_vtabptr_6squish_6energy_AreaEnergy = &__pyx_vtable_6squish_6energy_AreaEnergy; + __pyx_vtable_6squish_6energy_AreaEnergy.__pyx_base = *__pyx_vtabptr_6squish_7voronoi_VoronoiContainer; + __pyx_vtable_6squish_6energy_AreaEnergy.__pyx_base.precompute = (void (*)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *))__pyx_f_6squish_6energy_10AreaEnergy_precompute; + __pyx_vtable_6squish_6energy_AreaEnergy.__pyx_base.calc_grad = (void (*)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *))__pyx_f_6squish_6energy_10AreaEnergy_calc_grad; + __pyx_type_6squish_6energy_AreaEnergy.tp_base = __pyx_ptype_6squish_7voronoi_VoronoiContainer; + if (PyType_Ready(&__pyx_type_6squish_6energy_AreaEnergy) < 0) __PYX_ERR(0, 20, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type_6squish_6energy_AreaEnergy.tp_print = 0; + #endif + if (__Pyx_SetVtable(__pyx_type_6squish_6energy_AreaEnergy.tp_dict, __pyx_vtabptr_6squish_6energy_AreaEnergy) < 0) __PYX_ERR(0, 20, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AreaEnergy, (PyObject *)&__pyx_type_6squish_6energy_AreaEnergy) < 0) __PYX_ERR(0, 20, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6squish_6energy_AreaEnergy) < 0) __PYX_ERR(0, 20, __pyx_L1_error) + __pyx_ptype_6squish_6energy_AreaEnergy = &__pyx_type_6squish_6energy_AreaEnergy; + __pyx_vtabptr_6squish_6energy_RadialALEnergy = &__pyx_vtable_6squish_6energy_RadialALEnergy; + __pyx_vtable_6squish_6energy_RadialALEnergy.__pyx_base = *__pyx_vtabptr_6squish_7voronoi_VoronoiContainer; + __pyx_vtable_6squish_6energy_RadialALEnergy.__pyx_base.precompute = (void (*)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *))__pyx_f_6squish_6energy_14RadialALEnergy_precompute; + __pyx_vtable_6squish_6energy_RadialALEnergy.__pyx_base.calc_grad = (void (*)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *))__pyx_f_6squish_6energy_14RadialALEnergy_calc_grad; + __pyx_type_6squish_6energy_RadialALEnergy.tp_base = __pyx_ptype_6squish_7voronoi_VoronoiContainer; + if (PyType_Ready(&__pyx_type_6squish_6energy_RadialALEnergy) < 0) __PYX_ERR(0, 116, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type_6squish_6energy_RadialALEnergy.tp_print = 0; + #endif + if (__Pyx_SetVtable(__pyx_type_6squish_6energy_RadialALEnergy.tp_dict, __pyx_vtabptr_6squish_6energy_RadialALEnergy) < 0) __PYX_ERR(0, 116, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RadialALEnergy, (PyObject *)&__pyx_type_6squish_6energy_RadialALEnergy) < 0) __PYX_ERR(0, 116, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6squish_6energy_RadialALEnergy) < 0) __PYX_ERR(0, 116, __pyx_L1_error) + __pyx_ptype_6squish_6energy_RadialALEnergy = &__pyx_type_6squish_6energy_RadialALEnergy; + __pyx_vtabptr_6squish_6energy_RadialTEnergy = &__pyx_vtable_6squish_6energy_RadialTEnergy; + __pyx_vtable_6squish_6energy_RadialTEnergy.__pyx_base = *__pyx_vtabptr_6squish_7voronoi_VoronoiContainer; + __pyx_vtable_6squish_6energy_RadialTEnergy.__pyx_base.precompute = (void (*)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *))__pyx_f_6squish_6energy_13RadialTEnergy_precompute; + __pyx_vtable_6squish_6energy_RadialTEnergy.__pyx_base.calc_grad = (void (*)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *))__pyx_f_6squish_6energy_13RadialTEnergy_calc_grad; + __pyx_type_6squish_6energy_RadialTEnergy.tp_base = __pyx_ptype_6squish_7voronoi_VoronoiContainer; + if (PyType_Ready(&__pyx_type_6squish_6energy_RadialTEnergy) < 0) __PYX_ERR(0, 152, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type_6squish_6energy_RadialTEnergy.tp_print = 0; + #endif + if (__Pyx_SetVtable(__pyx_type_6squish_6energy_RadialTEnergy.tp_dict, __pyx_vtabptr_6squish_6energy_RadialTEnergy) < 0) __PYX_ERR(0, 152, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RadialTEnergy, (PyObject *)&__pyx_type_6squish_6energy_RadialTEnergy) < 0) __PYX_ERR(0, 152, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6squish_6energy_RadialTEnergy) < 0) __PYX_ERR(0, 152, __pyx_L1_error) + __pyx_ptype_6squish_6energy_RadialTEnergy = &__pyx_type_6squish_6energy_RadialTEnergy; + __pyx_vtabptr_array = &__pyx_vtable_array; + __pyx_vtable_array.get_memview = (PyObject *(*)(struct __pyx_array_obj *))__pyx_array_get_memview; + if (PyType_Ready(&__pyx_type___pyx_array) < 0) __PYX_ERR(1, 105, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type___pyx_array.tp_print = 0; + #endif + if (__Pyx_SetVtable(__pyx_type___pyx_array.tp_dict, __pyx_vtabptr_array) < 0) __PYX_ERR(1, 105, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_array) < 0) __PYX_ERR(1, 105, __pyx_L1_error) + __pyx_array_type = &__pyx_type___pyx_array; + if (PyType_Ready(&__pyx_type___pyx_MemviewEnum) < 0) __PYX_ERR(1, 279, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type___pyx_MemviewEnum.tp_print = 0; + #endif + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type___pyx_MemviewEnum.tp_dictoffset && __pyx_type___pyx_MemviewEnum.tp_getattro == PyObject_GenericGetAttr)) { + __pyx_type___pyx_MemviewEnum.tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_MemviewEnum) < 0) __PYX_ERR(1, 279, __pyx_L1_error) + __pyx_MemviewEnum_type = &__pyx_type___pyx_MemviewEnum; + __pyx_vtabptr_memoryview = &__pyx_vtable_memoryview; + __pyx_vtable_memoryview.get_item_pointer = (char *(*)(struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_get_item_pointer; + __pyx_vtable_memoryview.is_slice = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_is_slice; + __pyx_vtable_memoryview.setitem_slice_assignment = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *, PyObject *))__pyx_memoryview_setitem_slice_assignment; + __pyx_vtable_memoryview.setitem_slice_assign_scalar = (PyObject *(*)(struct __pyx_memoryview_obj *, struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_setitem_slice_assign_scalar; + __pyx_vtable_memoryview.setitem_indexed = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *, PyObject *))__pyx_memoryview_setitem_indexed; + __pyx_vtable_memoryview.convert_item_to_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *))__pyx_memoryview_convert_item_to_object; + __pyx_vtable_memoryview.assign_item_from_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *, PyObject *))__pyx_memoryview_assign_item_from_object; + if (PyType_Ready(&__pyx_type___pyx_memoryview) < 0) __PYX_ERR(1, 330, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type___pyx_memoryview.tp_print = 0; + #endif + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type___pyx_memoryview.tp_dictoffset && __pyx_type___pyx_memoryview.tp_getattro == PyObject_GenericGetAttr)) { + __pyx_type___pyx_memoryview.tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + if (__Pyx_SetVtable(__pyx_type___pyx_memoryview.tp_dict, __pyx_vtabptr_memoryview) < 0) __PYX_ERR(1, 330, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_memoryview) < 0) __PYX_ERR(1, 330, __pyx_L1_error) + __pyx_memoryview_type = &__pyx_type___pyx_memoryview; + __pyx_vtabptr__memoryviewslice = &__pyx_vtable__memoryviewslice; + __pyx_vtable__memoryviewslice.__pyx_base = *__pyx_vtabptr_memoryview; + __pyx_vtable__memoryviewslice.__pyx_base.convert_item_to_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *))__pyx_memoryviewslice_convert_item_to_object; + __pyx_vtable__memoryviewslice.__pyx_base.assign_item_from_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *, PyObject *))__pyx_memoryviewslice_assign_item_from_object; + __pyx_type___pyx_memoryviewslice.tp_base = __pyx_memoryview_type; + if (PyType_Ready(&__pyx_type___pyx_memoryviewslice) < 0) __PYX_ERR(1, 965, __pyx_L1_error) + #if PY_VERSION_HEX < 0x030800B1 + __pyx_type___pyx_memoryviewslice.tp_print = 0; + #endif + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type___pyx_memoryviewslice.tp_dictoffset && __pyx_type___pyx_memoryviewslice.tp_getattro == PyObject_GenericGetAttr)) { + __pyx_type___pyx_memoryviewslice.tp_getattro = __Pyx_PyObject_GenericGetAttr; + } + if (__Pyx_SetVtable(__pyx_type___pyx_memoryviewslice.tp_dict, __pyx_vtabptr__memoryviewslice) < 0) __PYX_ERR(1, 965, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_memoryviewslice) < 0) __PYX_ERR(1, 965, __pyx_L1_error) + __pyx_memoryviewslice_type = &__pyx_type___pyx_memoryviewslice; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_import_code(void) { + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); + /*--- Type import code ---*/ + __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", + #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 + sizeof(PyTypeObject), + #else + sizeof(PyHeapTypeObject), + #endif + __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(3, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 200, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_ptype_5numpy_dtype = __Pyx_ImportType(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __Pyx_ImportType_CheckSize_Ignore); + if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(2, 200, __pyx_L1_error) + __pyx_ptype_5numpy_flatiter = __Pyx_ImportType(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __Pyx_ImportType_CheckSize_Ignore); + if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(2, 223, __pyx_L1_error) + __pyx_ptype_5numpy_broadcast = __Pyx_ImportType(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __Pyx_ImportType_CheckSize_Ignore); + if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(2, 227, __pyx_L1_error) + __pyx_ptype_5numpy_ndarray = __Pyx_ImportType(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __Pyx_ImportType_CheckSize_Ignore); + if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(2, 239, __pyx_L1_error) + __pyx_ptype_5numpy_generic = __Pyx_ImportType(__pyx_t_1, "numpy", "generic", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_generic) __PYX_ERR(2, 771, __pyx_L1_error) + __pyx_ptype_5numpy_number = __Pyx_ImportType(__pyx_t_1, "numpy", "number", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_number) __PYX_ERR(2, 773, __pyx_L1_error) + __pyx_ptype_5numpy_integer = __Pyx_ImportType(__pyx_t_1, "numpy", "integer", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_integer) __PYX_ERR(2, 775, __pyx_L1_error) + __pyx_ptype_5numpy_signedinteger = __Pyx_ImportType(__pyx_t_1, "numpy", "signedinteger", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_signedinteger) __PYX_ERR(2, 777, __pyx_L1_error) + __pyx_ptype_5numpy_unsignedinteger = __Pyx_ImportType(__pyx_t_1, "numpy", "unsignedinteger", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_unsignedinteger) __PYX_ERR(2, 779, __pyx_L1_error) + __pyx_ptype_5numpy_inexact = __Pyx_ImportType(__pyx_t_1, "numpy", "inexact", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_inexact) __PYX_ERR(2, 781, __pyx_L1_error) + __pyx_ptype_5numpy_floating = __Pyx_ImportType(__pyx_t_1, "numpy", "floating", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_floating) __PYX_ERR(2, 783, __pyx_L1_error) + __pyx_ptype_5numpy_complexfloating = __Pyx_ImportType(__pyx_t_1, "numpy", "complexfloating", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_complexfloating) __PYX_ERR(2, 785, __pyx_L1_error) + __pyx_ptype_5numpy_flexible = __Pyx_ImportType(__pyx_t_1, "numpy", "flexible", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_flexible) __PYX_ERR(2, 787, __pyx_L1_error) + __pyx_ptype_5numpy_character = __Pyx_ImportType(__pyx_t_1, "numpy", "character", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); + if (!__pyx_ptype_5numpy_character) __PYX_ERR(2, 789, __pyx_L1_error) + __pyx_ptype_5numpy_ufunc = __Pyx_ImportType(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __Pyx_ImportType_CheckSize_Ignore); + if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(2, 827, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_variable_import_code(void) { + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); + /*--- Variable import code ---*/ + __pyx_t_1 = PyImport_ImportModule("squish.voronoi"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_ImportVoidPtr(__pyx_t_1, "NAN_VECTOR", (void **)&__pyx_vp_6squish_7voronoi_NAN_VECTOR, "__pyx_t_6squish_4core_Vector2D") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ImportVoidPtr(__pyx_t_1, "R", (void **)&__pyx_vp_6squish_7voronoi_R, "__pyx_t_6squish_4core_Matrix2x2") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ImportVoidPtr(__pyx_t_1, "NAN_MATRIX", (void **)&__pyx_vp_6squish_7voronoi_NAN_MATRIX, "__pyx_t_6squish_4core_Matrix2x2") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_function_import_code(void) { + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); + /*--- Function import code ---*/ + __pyx_t_1 = PyImport_ImportModule("squish.core"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_ImportFunction(__pyx_t_1, "_BitSet", (void (**)(void))&__pyx_f_6squish_4core__BitSet, "__pyx_t_6squish_4core_BitSet (__pyx_t_6squish_4core_INT_T)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ImportFunction(__pyx_t_1, "_Vector2D", (void (**)(void))&__pyx_f_6squish_4core__Vector2D, "__pyx_t_6squish_4core_Vector2D (__pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ImportFunction(__pyx_t_1, "_Matrix2x2", (void (**)(void))&__pyx_f_6squish_4core__Matrix2x2, "__pyx_t_6squish_4core_Matrix2x2 (__pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyImport_ImportModule("squish.voronoi"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_ImportFunction(__pyx_t_1, "_EdgeCacheMap", (void (**)(void))&__pyx_f_6squish_7voronoi__EdgeCacheMap, "__pyx_t_6squish_7voronoi_EdgeCacheMap (__pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ImportFunction(__pyx_t_1, "_VoronoiInfo", (void (**)(void))&__pyx_f_6squish_7voronoi__VoronoiInfo, "__pyx_t_6squish_7voronoi_VoronoiInfo (__Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __pyx_t_6squish_7voronoi_EdgeCacheMap *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ImportFunction(__pyx_t_1, "_Site", (void (**)(void))&__pyx_f_6squish_7voronoi__Site, "__pyx_t_6squish_7voronoi_Site (__pyx_t_6squish_4core_INT_T, __pyx_t_6squish_7voronoi_VoronoiInfo *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ImportFunction(__pyx_t_1, "_HalfEdge", (void (**)(void))&__pyx_f_6squish_7voronoi__HalfEdge, "__pyx_t_6squish_7voronoi_HalfEdge (__pyx_t_6squish_4core_INT_T, __pyx_t_6squish_7voronoi_VoronoiInfo *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_RefNannyFinishContext(); + return -1; +} + + +#ifndef CYTHON_NO_PYINIT_EXPORT +#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#elif PY_MAJOR_VERSION < 3 +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" void +#else +#define __Pyx_PyMODINIT_FUNC void +#endif +#else +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * +#else +#define __Pyx_PyMODINIT_FUNC PyObject * +#endif +#endif + + +#if PY_MAJOR_VERSION < 3 +__Pyx_PyMODINIT_FUNC initenergy(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC initenergy(void) +#else +__Pyx_PyMODINIT_FUNC PyInit_energy(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_energy(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { + #if PY_VERSION_HEX >= 0x030700A1 + static PY_INT64_T main_interpreter_id = -1; + PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); + if (main_interpreter_id == -1) { + main_interpreter_id = current_id; + return (unlikely(current_id == -1)) ? -1 : 0; + } else if (unlikely(main_interpreter_id != current_id)) + #else + static PyInterpreterState *main_interpreter = NULL; + PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; + if (!main_interpreter) { + main_interpreter = current_interpreter; + } else if (unlikely(main_interpreter != current_interpreter)) + #endif + { + PyErr_SetString( + PyExc_ImportError, + "Interpreter change detected - this module can only be loaded into one interpreter per process."); + return -1; + } + return 0; +} +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) { + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + if (__Pyx_check_single_interpreter()) + return NULL; + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; + return module; +bad: + Py_XDECREF(module); + return NULL; +} + + +static CYTHON_SMALL_CODE int __pyx_pymod_exec_energy(PyObject *__pyx_pyinit_module) +#endif +#endif +{ + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + static PyThread_type_lock __pyx_t_3[8]; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m) { + if (__pyx_m == __pyx_pyinit_module) return 0; + PyErr_SetString(PyExc_RuntimeError, "Module 'energy' has already been imported. Re-initialisation is not supported."); + return -1; + } + #elif PY_MAJOR_VERSION >= 3 + if (__pyx_m) return __Pyx_NewRef(__pyx_m); + #endif + #if CYTHON_REFNANNY +__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); +if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); +} +#endif + __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_energy(void)", 0); + if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pxy_PyFrame_Initialize_Offsets + __Pxy_PyFrame_Initialize_Offsets(); + #endif + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pyx_CyFunction_USED + if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_FusedFunction_USED + if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Generator_USED + if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_StopAsyncIteration_USED + if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + /*--- Library function declarations ---*/ + /*--- Threads initialization code ---*/ + #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + PyEval_InitThreads(); + #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_m = __pyx_pyinit_module; + Py_INCREF(__pyx_m); + #else + #if PY_MAJOR_VERSION < 3 + __pyx_m = Py_InitModule4("energy", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + #else + __pyx_m = PyModule_Create(&__pyx_moduledef); + #endif + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_d); + __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_b); + __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_cython_runtime); + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + if (__pyx_module_is_main_squish__energy) { + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + } + #if PY_MAJOR_VERSION >= 3 + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "squish.energy")) { + if (unlikely(PyDict_SetItemString(modules, "squish.energy", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #endif + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Global type/function init code ---*/ + (void)__Pyx_modinit_global_init_code(); + (void)__Pyx_modinit_variable_export_code(); + (void)__Pyx_modinit_function_export_code(); + if (unlikely(__Pyx_modinit_type_init_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (unlikely(__Pyx_modinit_type_import_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (unlikely(__Pyx_modinit_variable_import_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (unlikely(__Pyx_modinit_function_import_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Execution code ---*/ + #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + + /* "squish/energy.pyx":1 + * import numpy as np # <<<<<<<<<<<<<< + * from cython.parallel import parallel, prange + * + */ + __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "squish/energy.pyx":14 + * #### Constants #### + * + * INT = np.int64 # <<<<<<<<<<<<<< + * FLOAT = np.float64 + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_INT, __pyx_t_2) < 0) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "squish/energy.pyx":15 + * + * INT = np.int64 + * FLOAT = np.float64 # <<<<<<<<<<<<<< + * + * cdef EdgeCacheMap AREA_ECM = _EdgeCacheMap(0, 4, 6, 8, 10, 12, 13, -1, -1, 14) + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_FLOAT, __pyx_t_1) < 0) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "squish/energy.pyx":17 + * FLOAT = np.float64 + * + * cdef EdgeCacheMap AREA_ECM = _EdgeCacheMap(0, 4, 6, 8, 10, 12, 13, -1, -1, 14) # <<<<<<<<<<<<<< + * cdef EdgeCacheMap RADIALT_ECM = _EdgeCacheMap(0, 4, 6, 8, -1, 10, 11, 12, 13, 14) + * + */ + __pyx_v_6squish_6energy_AREA_ECM = __pyx_f_6squish_7voronoi__EdgeCacheMap(0, 4, 6, 8, 10, 12, 13, -1LL, -1LL, 14); + + /* "squish/energy.pyx":18 + * + * cdef EdgeCacheMap AREA_ECM = _EdgeCacheMap(0, 4, 6, 8, 10, 12, 13, -1, -1, 14) + * cdef EdgeCacheMap RADIALT_ECM = _EdgeCacheMap(0, 4, 6, 8, -1, 10, 11, 12, 13, 14) # <<<<<<<<<<<<<< + * + * cdef class AreaEnergy(VoronoiContainer): + */ + __pyx_v_6squish_6energy_RADIALT_ECM = __pyx_f_6squish_7voronoi__EdgeCacheMap(0, 4, 6, 8, -1LL, 10, 11, 12, 13, 14); + + /* "squish/energy.pyx":30 + * """ + * + * attr_str = "area" # <<<<<<<<<<<<<< + * title_str = "Area" + * + */ + if (PyDict_SetItem((PyObject *)__pyx_ptype_6squish_6energy_AreaEnergy->tp_dict, __pyx_n_s_attr_str, __pyx_n_u_area) < 0) __PYX_ERR(0, 30, __pyx_L1_error) + PyType_Modified(__pyx_ptype_6squish_6energy_AreaEnergy); + + /* "squish/energy.pyx":31 + * + * attr_str = "area" + * title_str = "Area" # <<<<<<<<<<<<<< + * + * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, + */ + if (PyDict_SetItem((PyObject *)__pyx_ptype_6squish_6energy_AreaEnergy->tp_dict, __pyx_n_s_title_str, __pyx_n_u_Area) < 0) __PYX_ERR(0, 31, __pyx_L1_error) + PyType_Modified(__pyx_ptype_6squish_6energy_AreaEnergy); + + /* "squish/energy.pyx":126 + * """ + * + * attr_str = "radial-al" # <<<<<<<<<<<<<< + * title_str = "Radial[AL]" + * + */ + if (PyDict_SetItem((PyObject *)__pyx_ptype_6squish_6energy_RadialALEnergy->tp_dict, __pyx_n_s_attr_str, __pyx_kp_u_radial_al) < 0) __PYX_ERR(0, 126, __pyx_L1_error) + PyType_Modified(__pyx_ptype_6squish_6energy_RadialALEnergy); + + /* "squish/energy.pyx":127 + * + * attr_str = "radial-al" + * title_str = "Radial[AL]" # <<<<<<<<<<<<<< + * + * + */ + if (PyDict_SetItem((PyObject *)__pyx_ptype_6squish_6energy_RadialALEnergy->tp_dict, __pyx_n_s_title_str, __pyx_kp_u_Radial_AL) < 0) __PYX_ERR(0, 127, __pyx_L1_error) + PyType_Modified(__pyx_ptype_6squish_6energy_RadialALEnergy); + + /* "squish/energy.pyx":162 + * """ + * + * attr_str = "radial-t" # <<<<<<<<<<<<<< + * title_str = "Radial[T]" + * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, + */ + if (PyDict_SetItem((PyObject *)__pyx_ptype_6squish_6energy_RadialTEnergy->tp_dict, __pyx_n_s_attr_str, __pyx_kp_u_radial_t) < 0) __PYX_ERR(0, 162, __pyx_L1_error) + PyType_Modified(__pyx_ptype_6squish_6energy_RadialTEnergy); + + /* "squish/energy.pyx":163 + * + * attr_str = "radial-t" + * title_str = "Radial[T]" # <<<<<<<<<<<<<< + * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, + * np.ndarray[FLOAT_T, ndim=2] site_arr): + */ + if (PyDict_SetItem((PyObject *)__pyx_ptype_6squish_6energy_RadialTEnergy->tp_dict, __pyx_n_s_title_str, __pyx_kp_u_Radial_T) < 0) __PYX_ERR(0, 163, __pyx_L1_error) + PyType_Modified(__pyx_ptype_6squish_6energy_RadialTEnergy); + + /* "squish/energy.pyx":1 + * import numpy as np # <<<<<<<<<<<<<< + * from cython.parallel import parallel, prange + * + */ + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "View.MemoryView":209 + * info.obj = self + * + * __pyx_getbuffer = capsule( &__pyx_array_getbuffer, "getbuffer(obj, view, flags)") # <<<<<<<<<<<<<< + * + * def __dealloc__(array self): + */ + __pyx_t_1 = __pyx_capsule_create(((void *)(&__pyx_array_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem((PyObject *)__pyx_array_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_1) < 0) __PYX_ERR(1, 209, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + PyType_Modified(__pyx_array_type); + + /* "View.MemoryView":286 + * return self.name + * + * cdef generic = Enum("") # <<<<<<<<<<<<<< + * cdef strided = Enum("") # default + * cdef indirect = Enum("") + */ + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 286, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_XGOTREF(generic); + __Pyx_DECREF_SET(generic, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; + + /* "View.MemoryView":287 + * + * cdef generic = Enum("") + * cdef strided = Enum("") # default # <<<<<<<<<<<<<< + * cdef indirect = Enum("") + * + */ + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 287, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_XGOTREF(strided); + __Pyx_DECREF_SET(strided, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; + + /* "View.MemoryView":288 + * cdef generic = Enum("") + * cdef strided = Enum("") # default + * cdef indirect = Enum("") # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 288, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_XGOTREF(indirect); + __Pyx_DECREF_SET(indirect, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; + + /* "View.MemoryView":291 + * + * + * cdef contiguous = Enum("") # <<<<<<<<<<<<<< + * cdef indirect_contiguous = Enum("") + * + */ + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 291, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_XGOTREF(contiguous); + __Pyx_DECREF_SET(contiguous, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; + + /* "View.MemoryView":292 + * + * cdef contiguous = Enum("") + * cdef indirect_contiguous = Enum("") # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 292, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_XGOTREF(indirect_contiguous); + __Pyx_DECREF_SET(indirect_contiguous, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; + + /* "View.MemoryView":316 + * + * DEF THREAD_LOCKS_PREALLOCATED = 8 + * cdef int __pyx_memoryview_thread_locks_used = 0 # <<<<<<<<<<<<<< + * cdef PyThread_type_lock[THREAD_LOCKS_PREALLOCATED] __pyx_memoryview_thread_locks = [ + * PyThread_allocate_lock(), + */ + __pyx_memoryview_thread_locks_used = 0; + + /* "View.MemoryView":317 + * DEF THREAD_LOCKS_PREALLOCATED = 8 + * cdef int __pyx_memoryview_thread_locks_used = 0 + * cdef PyThread_type_lock[THREAD_LOCKS_PREALLOCATED] __pyx_memoryview_thread_locks = [ # <<<<<<<<<<<<<< + * PyThread_allocate_lock(), + * PyThread_allocate_lock(), + */ + __pyx_t_3[0] = PyThread_allocate_lock(); + __pyx_t_3[1] = PyThread_allocate_lock(); + __pyx_t_3[2] = PyThread_allocate_lock(); + __pyx_t_3[3] = PyThread_allocate_lock(); + __pyx_t_3[4] = PyThread_allocate_lock(); + __pyx_t_3[5] = PyThread_allocate_lock(); + __pyx_t_3[6] = PyThread_allocate_lock(); + __pyx_t_3[7] = PyThread_allocate_lock(); + memcpy(&(__pyx_memoryview_thread_locks[0]), __pyx_t_3, sizeof(__pyx_memoryview_thread_locks[0]) * (8)); + + /* "View.MemoryView":549 + * info.obj = self + * + * __pyx_getbuffer = capsule( &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)") # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 549, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem((PyObject *)__pyx_memoryview_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_1) < 0) __PYX_ERR(1, 549, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + PyType_Modified(__pyx_memoryview_type); + + /* "View.MemoryView":995 + * return self.from_object + * + * __pyx_getbuffer = capsule( &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)") # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_1 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 995, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem((PyObject *)__pyx_memoryviewslice_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_1) < 0) __PYX_ERR(1, 995, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + PyType_Modified(__pyx_memoryviewslice_type); + + /* "(tree fragment)":1 + * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result + */ + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum, NULL, __pyx_n_s_View_MemoryView); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Enum, __pyx_t_1) < 0) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":11 + * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * __pyx_result.name = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + */ + + /*--- Wrapped vars code ---*/ + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + if (__pyx_m) { + if (__pyx_d) { + __Pyx_AddTraceback("init squish.energy", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + Py_CLEAR(__pyx_m); + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init squish.energy"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if CYTHON_PEP489_MULTI_PHASE_INIT + return (__pyx_m != NULL) ? 0 : -1; + #elif PY_MAJOR_VERSION >= 3 + return __pyx_m; + #else + return; + #endif +} + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule(modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, "RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* PyObjectGetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#endif + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); + if (unlikely(!result)) { + PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 + "name '%U' is not defined", name); +#else + "name '%.200s' is not defined", PyString_AS_STRING(name)); +#endif + } + return result; +} + +/* RaiseArgTupleInvalid */ +static void __Pyx_RaiseArgtupleInvalid( + const char* func_name, + int exact, + Py_ssize_t num_min, + Py_ssize_t num_max, + Py_ssize_t num_found) +{ + Py_ssize_t num_expected; + const char *more_or_less; + if (num_found < num_min) { + num_expected = num_min; + more_or_less = "at least"; + } else { + num_expected = num_max; + more_or_less = "at most"; + } + if (exact) { + more_or_less = "exactly"; + } + PyErr_Format(PyExc_TypeError, + "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", + func_name, more_or_less, num_expected, + (num_expected == 1) ? "" : "s", num_found); +} + +/* RaiseDoubleKeywords */ +static void __Pyx_RaiseDoubleKeywordsError( + const char* func_name, + PyObject* kw_name) +{ + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION >= 3 + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); + #else + "%s() got multiple values for keyword argument '%s'", func_name, + PyString_AsString(kw_name)); + #endif +} + +/* ParseKeywords */ +static int __Pyx_ParseOptionalKeywords( + PyObject *kwds, + PyObject **argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject *key = 0, *value = 0; + Py_ssize_t pos = 0; + PyObject*** name; + PyObject*** first_kw_arg = argnames + num_pos_args; + while (PyDict_Next(kwds, &pos, &key, &value)) { + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + values[name-argnames] = value; + continue; + } + name = first_kw_arg; + #if PY_MAJOR_VERSION < 3 + if (likely(PyString_Check(key))) { + while (*name) { + if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) + && _PyString_Eq(**name, key)) { + values[name-argnames] = value; + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + if ((**argname == key) || ( + (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) + && _PyString_Eq(**argname, key))) { + goto arg_passed_twice; + } + argname++; + } + } + } else + #endif + if (likely(PyUnicode_Check(key))) { + while (*name) { + int cmp = (**name == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**name, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + values[name-argnames] = value; + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + int cmp = (**argname == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**argname, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + argname++; + } + } + } else + goto invalid_keyword_type; + if (kwds2) { + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { + goto invalid_keyword; + } + } + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +invalid_keyword: + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION < 3 + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif +bad: + return -1; +} + +/* ArgTypeTest */ +static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) +{ + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + else if (exact) { + #if PY_MAJOR_VERSION == 2 + if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; + #endif + } + else { + if (likely(__Pyx_TypeCheck(obj, type))) return 1; + } + PyErr_Format(PyExc_TypeError, + "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", + name, type->tp_name, Py_TYPE(obj)->tp_name); + return 0; +} + +/* IsLittleEndian */ +static CYTHON_INLINE int __Pyx_Is_Little_Endian(void) +{ + union { + uint32_t u32; + uint8_t u8[4]; + } S; + S.u32 = 0x01020304; + return S.u8[0] == 4; +} + +/* BufferFormatCheck */ +static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, + __Pyx_BufFmt_StackElem* stack, + __Pyx_TypeInfo* type) { + stack[0].field = &ctx->root; + stack[0].parent_offset = 0; + ctx->root.type = type; + ctx->root.name = "buffer dtype"; + ctx->root.offset = 0; + ctx->head = stack; + ctx->head->field = &ctx->root; + ctx->fmt_offset = 0; + ctx->head->parent_offset = 0; + ctx->new_packmode = '@'; + ctx->enc_packmode = '@'; + ctx->new_count = 1; + ctx->enc_count = 0; + ctx->enc_type = 0; + ctx->is_complex = 0; + ctx->is_valid_array = 0; + ctx->struct_alignment = 0; + while (type->typegroup == 'S') { + ++ctx->head; + ctx->head->field = type->fields; + ctx->head->parent_offset = 0; + type = type->fields->type; + } +} +static int __Pyx_BufFmt_ParseNumber(const char** ts) { + int count; + const char* t = *ts; + if (*t < '0' || *t > '9') { + return -1; + } else { + count = *t++ - '0'; + while (*t >= '0' && *t <= '9') { + count *= 10; + count += *t++ - '0'; + } + } + *ts = t; + return count; +} +static int __Pyx_BufFmt_ExpectNumber(const char **ts) { + int number = __Pyx_BufFmt_ParseNumber(ts); + if (number == -1) + PyErr_Format(PyExc_ValueError,\ + "Does not understand character buffer dtype format string ('%c')", **ts); + return number; +} +static void __Pyx_BufFmt_RaiseUnexpectedChar(char ch) { + PyErr_Format(PyExc_ValueError, + "Unexpected format string character: '%c'", ch); +} +static const char* __Pyx_BufFmt_DescribeTypeChar(char ch, int is_complex) { + switch (ch) { + case '?': return "'bool'"; + case 'c': return "'char'"; + case 'b': return "'signed char'"; + case 'B': return "'unsigned char'"; + case 'h': return "'short'"; + case 'H': return "'unsigned short'"; + case 'i': return "'int'"; + case 'I': return "'unsigned int'"; + case 'l': return "'long'"; + case 'L': return "'unsigned long'"; + case 'q': return "'long long'"; + case 'Q': return "'unsigned long long'"; + case 'f': return (is_complex ? "'complex float'" : "'float'"); + case 'd': return (is_complex ? "'complex double'" : "'double'"); + case 'g': return (is_complex ? "'complex long double'" : "'long double'"); + case 'T': return "a struct"; + case 'O': return "Python object"; + case 'P': return "a pointer"; + case 's': case 'p': return "a string"; + case 0: return "end"; + default: return "unparseable format string"; + } +} +static size_t __Pyx_BufFmt_TypeCharToStandardSize(char ch, int is_complex) { + switch (ch) { + case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; + case 'h': case 'H': return 2; + case 'i': case 'I': case 'l': case 'L': return 4; + case 'q': case 'Q': return 8; + case 'f': return (is_complex ? 8 : 4); + case 'd': return (is_complex ? 16 : 8); + case 'g': { + PyErr_SetString(PyExc_ValueError, "Python does not define a standard format string size for long double ('g').."); + return 0; + } + case 'O': case 'P': return sizeof(void*); + default: + __Pyx_BufFmt_RaiseUnexpectedChar(ch); + return 0; + } +} +static size_t __Pyx_BufFmt_TypeCharToNativeSize(char ch, int is_complex) { + switch (ch) { + case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; + case 'h': case 'H': return sizeof(short); + case 'i': case 'I': return sizeof(int); + case 'l': case 'L': return sizeof(long); + #ifdef HAVE_LONG_LONG + case 'q': case 'Q': return sizeof(PY_LONG_LONG); + #endif + case 'f': return sizeof(float) * (is_complex ? 2 : 1); + case 'd': return sizeof(double) * (is_complex ? 2 : 1); + case 'g': return sizeof(long double) * (is_complex ? 2 : 1); + case 'O': case 'P': return sizeof(void*); + default: { + __Pyx_BufFmt_RaiseUnexpectedChar(ch); + return 0; + } + } +} +typedef struct { char c; short x; } __Pyx_st_short; +typedef struct { char c; int x; } __Pyx_st_int; +typedef struct { char c; long x; } __Pyx_st_long; +typedef struct { char c; float x; } __Pyx_st_float; +typedef struct { char c; double x; } __Pyx_st_double; +typedef struct { char c; long double x; } __Pyx_st_longdouble; +typedef struct { char c; void *x; } __Pyx_st_void_p; +#ifdef HAVE_LONG_LONG +typedef struct { char c; PY_LONG_LONG x; } __Pyx_st_longlong; +#endif +static size_t __Pyx_BufFmt_TypeCharToAlignment(char ch, CYTHON_UNUSED int is_complex) { + switch (ch) { + case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; + case 'h': case 'H': return sizeof(__Pyx_st_short) - sizeof(short); + case 'i': case 'I': return sizeof(__Pyx_st_int) - sizeof(int); + case 'l': case 'L': return sizeof(__Pyx_st_long) - sizeof(long); +#ifdef HAVE_LONG_LONG + case 'q': case 'Q': return sizeof(__Pyx_st_longlong) - sizeof(PY_LONG_LONG); +#endif + case 'f': return sizeof(__Pyx_st_float) - sizeof(float); + case 'd': return sizeof(__Pyx_st_double) - sizeof(double); + case 'g': return sizeof(__Pyx_st_longdouble) - sizeof(long double); + case 'P': case 'O': return sizeof(__Pyx_st_void_p) - sizeof(void*); + default: + __Pyx_BufFmt_RaiseUnexpectedChar(ch); + return 0; + } +} +/* These are for computing the padding at the end of the struct to align + on the first member of the struct. This will probably the same as above, + but we don't have any guarantees. + */ +typedef struct { short x; char c; } __Pyx_pad_short; +typedef struct { int x; char c; } __Pyx_pad_int; +typedef struct { long x; char c; } __Pyx_pad_long; +typedef struct { float x; char c; } __Pyx_pad_float; +typedef struct { double x; char c; } __Pyx_pad_double; +typedef struct { long double x; char c; } __Pyx_pad_longdouble; +typedef struct { void *x; char c; } __Pyx_pad_void_p; +#ifdef HAVE_LONG_LONG +typedef struct { PY_LONG_LONG x; char c; } __Pyx_pad_longlong; +#endif +static size_t __Pyx_BufFmt_TypeCharToPadding(char ch, CYTHON_UNUSED int is_complex) { + switch (ch) { + case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; + case 'h': case 'H': return sizeof(__Pyx_pad_short) - sizeof(short); + case 'i': case 'I': return sizeof(__Pyx_pad_int) - sizeof(int); + case 'l': case 'L': return sizeof(__Pyx_pad_long) - sizeof(long); +#ifdef HAVE_LONG_LONG + case 'q': case 'Q': return sizeof(__Pyx_pad_longlong) - sizeof(PY_LONG_LONG); +#endif + case 'f': return sizeof(__Pyx_pad_float) - sizeof(float); + case 'd': return sizeof(__Pyx_pad_double) - sizeof(double); + case 'g': return sizeof(__Pyx_pad_longdouble) - sizeof(long double); + case 'P': case 'O': return sizeof(__Pyx_pad_void_p) - sizeof(void*); + default: + __Pyx_BufFmt_RaiseUnexpectedChar(ch); + return 0; + } +} +static char __Pyx_BufFmt_TypeCharToGroup(char ch, int is_complex) { + switch (ch) { + case 'c': + return 'H'; + case 'b': case 'h': case 'i': + case 'l': case 'q': case 's': case 'p': + return 'I'; + case '?': case 'B': case 'H': case 'I': case 'L': case 'Q': + return 'U'; + case 'f': case 'd': case 'g': + return (is_complex ? 'C' : 'R'); + case 'O': + return 'O'; + case 'P': + return 'P'; + default: { + __Pyx_BufFmt_RaiseUnexpectedChar(ch); + return 0; + } + } +} +static void __Pyx_BufFmt_RaiseExpected(__Pyx_BufFmt_Context* ctx) { + if (ctx->head == NULL || ctx->head->field == &ctx->root) { + const char* expected; + const char* quote; + if (ctx->head == NULL) { + expected = "end"; + quote = ""; + } else { + expected = ctx->head->field->type->name; + quote = "'"; + } + PyErr_Format(PyExc_ValueError, + "Buffer dtype mismatch, expected %s%s%s but got %s", + quote, expected, quote, + __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex)); + } else { + __Pyx_StructField* field = ctx->head->field; + __Pyx_StructField* parent = (ctx->head - 1)->field; + PyErr_Format(PyExc_ValueError, + "Buffer dtype mismatch, expected '%s' but got %s in '%s.%s'", + field->type->name, __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex), + parent->type->name, field->name); + } +} +static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) { + char group; + size_t size, offset, arraysize = 1; + if (ctx->enc_type == 0) return 0; + if (ctx->head->field->type->arraysize[0]) { + int i, ndim = 0; + if (ctx->enc_type == 's' || ctx->enc_type == 'p') { + ctx->is_valid_array = ctx->head->field->type->ndim == 1; + ndim = 1; + if (ctx->enc_count != ctx->head->field->type->arraysize[0]) { + PyErr_Format(PyExc_ValueError, + "Expected a dimension of size %zu, got %zu", + ctx->head->field->type->arraysize[0], ctx->enc_count); + return -1; + } + } + if (!ctx->is_valid_array) { + PyErr_Format(PyExc_ValueError, "Expected %d dimensions, got %d", + ctx->head->field->type->ndim, ndim); + return -1; + } + for (i = 0; i < ctx->head->field->type->ndim; i++) { + arraysize *= ctx->head->field->type->arraysize[i]; + } + ctx->is_valid_array = 0; + ctx->enc_count = 1; + } + group = __Pyx_BufFmt_TypeCharToGroup(ctx->enc_type, ctx->is_complex); + do { + __Pyx_StructField* field = ctx->head->field; + __Pyx_TypeInfo* type = field->type; + if (ctx->enc_packmode == '@' || ctx->enc_packmode == '^') { + size = __Pyx_BufFmt_TypeCharToNativeSize(ctx->enc_type, ctx->is_complex); + } else { + size = __Pyx_BufFmt_TypeCharToStandardSize(ctx->enc_type, ctx->is_complex); + } + if (ctx->enc_packmode == '@') { + size_t align_at = __Pyx_BufFmt_TypeCharToAlignment(ctx->enc_type, ctx->is_complex); + size_t align_mod_offset; + if (align_at == 0) return -1; + align_mod_offset = ctx->fmt_offset % align_at; + if (align_mod_offset > 0) ctx->fmt_offset += align_at - align_mod_offset; + if (ctx->struct_alignment == 0) + ctx->struct_alignment = __Pyx_BufFmt_TypeCharToPadding(ctx->enc_type, + ctx->is_complex); + } + if (type->size != size || type->typegroup != group) { + if (type->typegroup == 'C' && type->fields != NULL) { + size_t parent_offset = ctx->head->parent_offset + field->offset; + ++ctx->head; + ctx->head->field = type->fields; + ctx->head->parent_offset = parent_offset; + continue; + } + if ((type->typegroup == 'H' || group == 'H') && type->size == size) { + } else { + __Pyx_BufFmt_RaiseExpected(ctx); + return -1; + } + } + offset = ctx->head->parent_offset + field->offset; + if (ctx->fmt_offset != offset) { + PyErr_Format(PyExc_ValueError, + "Buffer dtype mismatch; next field is at offset %" CYTHON_FORMAT_SSIZE_T "d but %" CYTHON_FORMAT_SSIZE_T "d expected", + (Py_ssize_t)ctx->fmt_offset, (Py_ssize_t)offset); + return -1; + } + ctx->fmt_offset += size; + if (arraysize) + ctx->fmt_offset += (arraysize - 1) * size; + --ctx->enc_count; + while (1) { + if (field == &ctx->root) { + ctx->head = NULL; + if (ctx->enc_count != 0) { + __Pyx_BufFmt_RaiseExpected(ctx); + return -1; + } + break; + } + ctx->head->field = ++field; + if (field->type == NULL) { + --ctx->head; + field = ctx->head->field; + continue; + } else if (field->type->typegroup == 'S') { + size_t parent_offset = ctx->head->parent_offset + field->offset; + if (field->type->fields->type == NULL) continue; + field = field->type->fields; + ++ctx->head; + ctx->head->field = field; + ctx->head->parent_offset = parent_offset; + break; + } else { + break; + } + } + } while (ctx->enc_count); + ctx->enc_type = 0; + ctx->is_complex = 0; + return 0; +} +static PyObject * +__pyx_buffmt_parse_array(__Pyx_BufFmt_Context* ctx, const char** tsp) +{ + const char *ts = *tsp; + int i = 0, number, ndim; + ++ts; + if (ctx->new_count != 1) { + PyErr_SetString(PyExc_ValueError, + "Cannot handle repeated arrays in format string"); + return NULL; + } + if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; + ndim = ctx->head->field->type->ndim; + while (*ts && *ts != ')') { + switch (*ts) { + case ' ': case '\f': case '\r': case '\n': case '\t': case '\v': continue; + default: break; + } + number = __Pyx_BufFmt_ExpectNumber(&ts); + if (number == -1) return NULL; + if (i < ndim && (size_t) number != ctx->head->field->type->arraysize[i]) + return PyErr_Format(PyExc_ValueError, + "Expected a dimension of size %zu, got %d", + ctx->head->field->type->arraysize[i], number); + if (*ts != ',' && *ts != ')') + return PyErr_Format(PyExc_ValueError, + "Expected a comma in format string, got '%c'", *ts); + if (*ts == ',') ts++; + i++; + } + if (i != ndim) + return PyErr_Format(PyExc_ValueError, "Expected %d dimension(s), got %d", + ctx->head->field->type->ndim, i); + if (!*ts) { + PyErr_SetString(PyExc_ValueError, + "Unexpected end of format string, expected ')'"); + return NULL; + } + ctx->is_valid_array = 1; + ctx->new_count = 1; + *tsp = ++ts; + return Py_None; +} +static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts) { + int got_Z = 0; + while (1) { + switch(*ts) { + case 0: + if (ctx->enc_type != 0 && ctx->head == NULL) { + __Pyx_BufFmt_RaiseExpected(ctx); + return NULL; + } + if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; + if (ctx->head != NULL) { + __Pyx_BufFmt_RaiseExpected(ctx); + return NULL; + } + return ts; + case ' ': + case '\r': + case '\n': + ++ts; + break; + case '<': + if (!__Pyx_Is_Little_Endian()) { + PyErr_SetString(PyExc_ValueError, "Little-endian buffer not supported on big-endian compiler"); + return NULL; + } + ctx->new_packmode = '='; + ++ts; + break; + case '>': + case '!': + if (__Pyx_Is_Little_Endian()) { + PyErr_SetString(PyExc_ValueError, "Big-endian buffer not supported on little-endian compiler"); + return NULL; + } + ctx->new_packmode = '='; + ++ts; + break; + case '=': + case '@': + case '^': + ctx->new_packmode = *ts++; + break; + case 'T': + { + const char* ts_after_sub; + size_t i, struct_count = ctx->new_count; + size_t struct_alignment = ctx->struct_alignment; + ctx->new_count = 1; + ++ts; + if (*ts != '{') { + PyErr_SetString(PyExc_ValueError, "Buffer acquisition: Expected '{' after 'T'"); + return NULL; + } + if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; + ctx->enc_type = 0; + ctx->enc_count = 0; + ctx->struct_alignment = 0; + ++ts; + ts_after_sub = ts; + for (i = 0; i != struct_count; ++i) { + ts_after_sub = __Pyx_BufFmt_CheckString(ctx, ts); + if (!ts_after_sub) return NULL; + } + ts = ts_after_sub; + if (struct_alignment) ctx->struct_alignment = struct_alignment; + } + break; + case '}': + { + size_t alignment = ctx->struct_alignment; + ++ts; + if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; + ctx->enc_type = 0; + if (alignment && ctx->fmt_offset % alignment) { + ctx->fmt_offset += alignment - (ctx->fmt_offset % alignment); + } + } + return ts; + case 'x': + if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; + ctx->fmt_offset += ctx->new_count; + ctx->new_count = 1; + ctx->enc_count = 0; + ctx->enc_type = 0; + ctx->enc_packmode = ctx->new_packmode; + ++ts; + break; + case 'Z': + got_Z = 1; + ++ts; + if (*ts != 'f' && *ts != 'd' && *ts != 'g') { + __Pyx_BufFmt_RaiseUnexpectedChar('Z'); + return NULL; + } + CYTHON_FALLTHROUGH; + case '?': case 'c': case 'b': case 'B': case 'h': case 'H': case 'i': case 'I': + case 'l': case 'L': case 'q': case 'Q': + case 'f': case 'd': case 'g': + case 'O': case 'p': + if ((ctx->enc_type == *ts) && (got_Z == ctx->is_complex) && + (ctx->enc_packmode == ctx->new_packmode) && (!ctx->is_valid_array)) { + ctx->enc_count += ctx->new_count; + ctx->new_count = 1; + got_Z = 0; + ++ts; + break; + } + CYTHON_FALLTHROUGH; + case 's': + if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; + ctx->enc_count = ctx->new_count; + ctx->enc_packmode = ctx->new_packmode; + ctx->enc_type = *ts; + ctx->is_complex = got_Z; + ++ts; + ctx->new_count = 1; + got_Z = 0; + break; + case ':': + ++ts; + while(*ts != ':') ++ts; + ++ts; + break; + case '(': + if (!__pyx_buffmt_parse_array(ctx, &ts)) return NULL; + break; + default: + { + int number = __Pyx_BufFmt_ExpectNumber(&ts); + if (number == -1) return NULL; + ctx->new_count = (size_t)number; + } + } + } +} + +/* BufferGetAndValidate */ + static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { + if (unlikely(info->buf == NULL)) return; + if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL; + __Pyx_ReleaseBuffer(info); +} +static void __Pyx_ZeroBuffer(Py_buffer* buf) { + buf->buf = NULL; + buf->obj = NULL; + buf->strides = __Pyx_zeros; + buf->shape = __Pyx_zeros; + buf->suboffsets = __Pyx_minusones; +} +static int __Pyx__GetBufferAndValidate( + Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, + int nd, int cast, __Pyx_BufFmt_StackElem* stack) +{ + buf->buf = NULL; + if (unlikely(__Pyx_GetBuffer(obj, buf, flags) == -1)) { + __Pyx_ZeroBuffer(buf); + return -1; + } + if (unlikely(buf->ndim != nd)) { + PyErr_Format(PyExc_ValueError, + "Buffer has wrong number of dimensions (expected %d, got %d)", + nd, buf->ndim); + goto fail; + } + if (!cast) { + __Pyx_BufFmt_Context ctx; + __Pyx_BufFmt_Init(&ctx, stack, dtype); + if (!__Pyx_BufFmt_CheckString(&ctx, buf->format)) goto fail; + } + if (unlikely((size_t)buf->itemsize != dtype->size)) { + PyErr_Format(PyExc_ValueError, + "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "d byte%s) does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "d byte%s)", + buf->itemsize, (buf->itemsize > 1) ? "s" : "", + dtype->name, (Py_ssize_t)dtype->size, (dtype->size > 1) ? "s" : ""); + goto fail; + } + if (buf->suboffsets == NULL) buf->suboffsets = __Pyx_minusones; + return 0; +fail:; + __Pyx_SafeReleaseBuffer(buf); + return -1; +} + +/* PyObjectCall */ + #if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = Py_TYPE(func)->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyFunctionFastCall */ + #if CYTHON_FAST_PYCALL +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = __Pyx_PyFrame_GetLocalsplus(f); + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +#if 1 || PY_VERSION_HEX < 0x030600B1 +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { + return NULL; + } + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif +#endif + +/* PyCFunctionFastCall */ + #if CYTHON_FAST_PYCCALL +static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { + PyCFunctionObject *func = (PyCFunctionObject*)func_obj; + PyCFunction meth = PyCFunction_GET_FUNCTION(func); + PyObject *self = PyCFunction_GET_SELF(func); + int flags = PyCFunction_GET_FLAGS(func); + assert(PyCFunction_Check(func)); + assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))); + assert(nargs >= 0); + assert(nargs == 0 || args != NULL); + /* _PyCFunction_FastCallDict() must not be called with an exception set, + because it may clear it (directly or indirectly) and so the + caller loses its exception */ + assert(!PyErr_Occurred()); + if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { + return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL); + } else { + return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs); + } +} +#endif + +/* PyObjectSetAttrStr */ + #if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_setattro)) + return tp->tp_setattro(obj, attr_name, value); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_setattr)) + return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); +#endif + return PyObject_SetAttr(obj, attr_name, value); +} +#endif + +/* PyErrFetchRestore */ + #if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +} +#endif + +/* PyDictVersioning */ + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { + PyObject **dictptr = NULL; + Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; + if (offset) { +#if CYTHON_COMPILING_IN_CPYTHON + dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); +#else + dictptr = _PyObject_GetDictPtr(obj); +#endif + } + return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; +} +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) + return 0; + return obj_dict_version == __Pyx_get_object_dict_version(obj); +} +#endif + +/* GetModuleGlobalName */ + #if CYTHON_USE_DICT_VERSIONS +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) +#else +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) +#endif +{ + PyObject *result; +#if !CYTHON_AVOID_BORROWED_REFS +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 + result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } else if (unlikely(PyErr_Occurred())) { + return NULL; + } +#else + result = PyDict_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } +#endif +#else + result = PyObject_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } + PyErr_Clear(); +#endif + return __Pyx_GetBuiltinName(name); +} + +/* MemviewSliceInit */ + static int +__Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview, + int ndim, + __Pyx_memviewslice *memviewslice, + int memview_is_new_reference) +{ + __Pyx_RefNannyDeclarations + int i, retval=-1; + Py_buffer *buf = &memview->view; + __Pyx_RefNannySetupContext("init_memviewslice", 0); + if (unlikely(memviewslice->memview || memviewslice->data)) { + PyErr_SetString(PyExc_ValueError, + "memviewslice is already initialized!"); + goto fail; + } + if (buf->strides) { + for (i = 0; i < ndim; i++) { + memviewslice->strides[i] = buf->strides[i]; + } + } else { + Py_ssize_t stride = buf->itemsize; + for (i = ndim - 1; i >= 0; i--) { + memviewslice->strides[i] = stride; + stride *= buf->shape[i]; + } + } + for (i = 0; i < ndim; i++) { + memviewslice->shape[i] = buf->shape[i]; + if (buf->suboffsets) { + memviewslice->suboffsets[i] = buf->suboffsets[i]; + } else { + memviewslice->suboffsets[i] = -1; + } + } + memviewslice->memview = memview; + memviewslice->data = (char *)buf->buf; + if (__pyx_add_acquisition_count(memview) == 0 && !memview_is_new_reference) { + Py_INCREF(memview); + } + retval = 0; + goto no_fail; +fail: + memviewslice->memview = 0; + memviewslice->data = 0; + retval = -1; +no_fail: + __Pyx_RefNannyFinishContext(); + return retval; +} +#ifndef Py_NO_RETURN +#define Py_NO_RETURN +#endif +static void __pyx_fatalerror(const char *fmt, ...) Py_NO_RETURN { + va_list vargs; + char msg[200]; +#ifdef HAVE_STDARG_PROTOTYPES + va_start(vargs, fmt); +#else + va_start(vargs); +#endif + vsnprintf(msg, 200, fmt, vargs); + va_end(vargs); + Py_FatalError(msg); +} +static CYTHON_INLINE int +__pyx_add_acquisition_count_locked(__pyx_atomic_int *acquisition_count, + PyThread_type_lock lock) +{ + int result; + PyThread_acquire_lock(lock, 1); + result = (*acquisition_count)++; + PyThread_release_lock(lock); + return result; +} +static CYTHON_INLINE int +__pyx_sub_acquisition_count_locked(__pyx_atomic_int *acquisition_count, + PyThread_type_lock lock) +{ + int result; + PyThread_acquire_lock(lock, 1); + result = (*acquisition_count)--; + PyThread_release_lock(lock); + return result; +} +static CYTHON_INLINE void +__Pyx_INC_MEMVIEW(__Pyx_memviewslice *memslice, int have_gil, int lineno) +{ + int first_time; + struct __pyx_memoryview_obj *memview = memslice->memview; + if (unlikely(!memview || (PyObject *) memview == Py_None)) + return; + if (unlikely(__pyx_get_slice_count(memview) < 0)) + __pyx_fatalerror("Acquisition count is %d (line %d)", + __pyx_get_slice_count(memview), lineno); + first_time = __pyx_add_acquisition_count(memview) == 0; + if (unlikely(first_time)) { + if (have_gil) { + Py_INCREF((PyObject *) memview); + } else { + PyGILState_STATE _gilstate = PyGILState_Ensure(); + Py_INCREF((PyObject *) memview); + PyGILState_Release(_gilstate); + } + } +} +static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice, + int have_gil, int lineno) { + int last_time; + struct __pyx_memoryview_obj *memview = memslice->memview; + if (unlikely(!memview || (PyObject *) memview == Py_None)) { + memslice->memview = NULL; + return; + } + if (unlikely(__pyx_get_slice_count(memview) <= 0)) + __pyx_fatalerror("Acquisition count is %d (line %d)", + __pyx_get_slice_count(memview), lineno); + last_time = __pyx_sub_acquisition_count(memview) == 1; + memslice->data = NULL; + if (unlikely(last_time)) { + if (have_gil) { + Py_CLEAR(memslice->memview); + } else { + PyGILState_STATE _gilstate = PyGILState_Ensure(); + Py_CLEAR(memslice->memview); + PyGILState_Release(_gilstate); + } + } else { + memslice->memview = NULL; + } +} + +/* PyObjectCall2Args */ + static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { + PyObject *args, *result = NULL; + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(function)) { + PyObject *args[2] = {arg1, arg2}; + return __Pyx_PyFunction_FastCall(function, args, 2); + } + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(function)) { + PyObject *args[2] = {arg1, arg2}; + return __Pyx_PyCFunction_FastCall(function, args, 2); + } + #endif + args = PyTuple_New(2); + if (unlikely(!args)) goto done; + Py_INCREF(arg1); + PyTuple_SET_ITEM(args, 0, arg1); + Py_INCREF(arg2); + PyTuple_SET_ITEM(args, 1, arg2); + Py_INCREF(function); + result = __Pyx_PyObject_Call(function, args, NULL); + Py_DECREF(args); + Py_DECREF(function); +done: + return result; +} + +/* PyObjectCallMethO */ + #if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = PyCFunction_GET_FUNCTION(func); + self = PyCFunction_GET_SELF(func); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallOneArg */ + #if CYTHON_COMPILING_IN_CPYTHON +static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_New(1); + if (unlikely(!args)) return NULL; + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 0, arg); + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { +#if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCall(func, &arg, 1); + } +#endif + if (likely(PyCFunction_Check(func))) { + if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { + return __Pyx_PyObject_CallMethO(func, arg); +#if CYTHON_FAST_PYCCALL + } else if (__Pyx_PyFastCFunction_Check(func)) { + return __Pyx_PyCFunction_FastCall(func, &arg, 1); +#endif + } + } + return __Pyx__PyObject_CallOneArg(func, arg); +} +#else +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_Pack(1, arg); + if (unlikely(!args)) return NULL; + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +#endif + +/* RaiseException */ + #if PY_MAJOR_VERSION < 3 +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, + CYTHON_UNUSED PyObject *cause) { + __Pyx_PyThreadState_declare + Py_XINCREF(type); + if (!value || value == Py_None) + value = NULL; + else + Py_INCREF(value); + if (!tb || tb == Py_None) + tb = NULL; + else { + Py_INCREF(tb); + if (!PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto raise_error; + } + } + if (PyType_Check(type)) { +#if CYTHON_COMPILING_IN_PYPY + if (!value) { + Py_INCREF(Py_None); + value = Py_None; + } +#endif + PyErr_NormalizeException(&type, &value, &tb); + } else { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto raise_error; + } + value = type; + type = (PyObject*) Py_TYPE(type); + Py_INCREF(type); + if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto raise_error; + } + } + __Pyx_PyThreadState_assign + __Pyx_ErrRestore(type, value, tb); + return; +raise_error: + Py_XDECREF(value); + Py_XDECREF(type); + Py_XDECREF(tb); + return; +} +#else +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + PyObject* owned_instance = NULL; + if (tb == Py_None) { + tb = 0; + } else if (tb && !PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto bad; + } + if (value == Py_None) + value = 0; + if (PyExceptionInstance_Check(type)) { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto bad; + } + value = type; + type = (PyObject*) Py_TYPE(value); + } else if (PyExceptionClass_Check(type)) { + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; + } + } + } + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } + } + } else { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto bad; + } + if (cause) { + PyObject *fixed_cause; + if (cause == Py_None) { + fixed_cause = NULL; + } else if (PyExceptionClass_Check(cause)) { + fixed_cause = PyObject_CallObject(cause, NULL); + if (fixed_cause == NULL) + goto bad; + } else if (PyExceptionInstance_Check(cause)) { + fixed_cause = cause; + Py_INCREF(fixed_cause); + } else { + PyErr_SetString(PyExc_TypeError, + "exception causes must derive from " + "BaseException"); + goto bad; + } + PyException_SetCause(value, fixed_cause); + } + PyErr_SetObject(type, value); + if (tb) { +#if CYTHON_COMPILING_IN_PYPY + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#else + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject* tmp_tb = tstate->curexc_traceback; + if (tb != tmp_tb) { + Py_INCREF(tb); + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_tb); + } +#endif + } +bad: + Py_XDECREF(owned_instance); + return; +} +#endif + +/* GetTopmostException */ + #if CYTHON_USE_EXC_INFO_STACK +static _PyErr_StackItem * +__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) +{ + _PyErr_StackItem *exc_info = tstate->exc_info; + while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) && + exc_info->previous_item != NULL) + { + exc_info = exc_info->previous_item; + } + return exc_info; +} +#endif + +/* SaveResetException */ + #if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + *type = exc_info->exc_type; + *value = exc_info->exc_value; + *tb = exc_info->exc_traceback; + #else + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + #endif + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = type; + exc_info->exc_value = value; + exc_info->exc_traceback = tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +} +#endif + +/* PyErrExceptionMatches */ + #if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; icurexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; + if (unlikely(PyTuple_Check(err))) + return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); +} +#endif + +/* GetException */ + #if CYTHON_FAST_THREAD_STATE +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) +#endif +{ + PyObject *local_type, *local_value, *local_tb; +#if CYTHON_FAST_THREAD_STATE + PyObject *tmp_type, *tmp_value, *tmp_tb; + local_type = tstate->curexc_type; + local_value = tstate->curexc_value; + local_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#else + PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif + PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_FAST_THREAD_STATE + if (unlikely(tstate->curexc_type)) +#else + if (unlikely(PyErr_Occurred())) +#endif + goto bad; + #if PY_MAJOR_VERSION >= 3 + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } + #endif + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); + *type = local_type; + *value = local_value; + *tb = local_tb; +#if CYTHON_FAST_THREAD_STATE + #if CYTHON_USE_EXC_INFO_STACK + { + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = local_type; + exc_info->exc_value = local_value; + exc_info->exc_traceback = local_tb; + } + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = local_type; + tstate->exc_value = local_value; + tstate->exc_traceback = local_tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif + return 0; +bad: + *type = 0; + *value = 0; + *tb = 0; + Py_XDECREF(local_type); + Py_XDECREF(local_value); + Py_XDECREF(local_tb); + return -1; +} + +/* BytesEquals */ + static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY + return PyObject_RichCompareBool(s1, s2, equals); +#else + if (s1 == s2) { + return (equals == Py_EQ); + } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { + const char *ps1, *ps2; + Py_ssize_t length = PyBytes_GET_SIZE(s1); + if (length != PyBytes_GET_SIZE(s2)) + return (equals == Py_NE); + ps1 = PyBytes_AS_STRING(s1); + ps2 = PyBytes_AS_STRING(s2); + if (ps1[0] != ps2[0]) { + return (equals == Py_NE); + } else if (length == 1) { + return (equals == Py_EQ); + } else { + int result; +#if CYTHON_USE_UNICODE_INTERNALS + Py_hash_t hash1, hash2; + hash1 = ((PyBytesObject*)s1)->ob_shash; + hash2 = ((PyBytesObject*)s2)->ob_shash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + return (equals == Py_NE); + } +#endif + result = memcmp(ps1, ps2, (size_t)length); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { + return (equals == Py_NE); + } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { + return (equals == Py_NE); + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +#endif +} + +/* UnicodeEquals */ + static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY + return PyObject_RichCompareBool(s1, s2, equals); +#else +#if PY_MAJOR_VERSION < 3 + PyObject* owned_ref = NULL; +#endif + int s1_is_unicode, s2_is_unicode; + if (s1 == s2) { + goto return_eq; + } + s1_is_unicode = PyUnicode_CheckExact(s1); + s2_is_unicode = PyUnicode_CheckExact(s2); +#if PY_MAJOR_VERSION < 3 + if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { + owned_ref = PyUnicode_FromObject(s2); + if (unlikely(!owned_ref)) + return -1; + s2 = owned_ref; + s2_is_unicode = 1; + } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { + owned_ref = PyUnicode_FromObject(s1); + if (unlikely(!owned_ref)) + return -1; + s1 = owned_ref; + s1_is_unicode = 1; + } else if (((!s2_is_unicode) & (!s1_is_unicode))) { + return __Pyx_PyBytes_Equals(s1, s2, equals); + } +#endif + if (s1_is_unicode & s2_is_unicode) { + Py_ssize_t length; + int kind; + void *data1, *data2; + if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) + return -1; + length = __Pyx_PyUnicode_GET_LENGTH(s1); + if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { + goto return_ne; + } +#if CYTHON_USE_UNICODE_INTERNALS + { + Py_hash_t hash1, hash2; + #if CYTHON_PEP393_ENABLED + hash1 = ((PyASCIIObject*)s1)->hash; + hash2 = ((PyASCIIObject*)s2)->hash; + #else + hash1 = ((PyUnicodeObject*)s1)->hash; + hash2 = ((PyUnicodeObject*)s2)->hash; + #endif + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + goto return_ne; + } + } +#endif + kind = __Pyx_PyUnicode_KIND(s1); + if (kind != __Pyx_PyUnicode_KIND(s2)) { + goto return_ne; + } + data1 = __Pyx_PyUnicode_DATA(s1); + data2 = __Pyx_PyUnicode_DATA(s2); + if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { + goto return_ne; + } else if (length == 1) { + goto return_eq; + } else { + int result = memcmp(data1, data2, (size_t)(length * kind)); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & s2_is_unicode) { + goto return_ne; + } else if ((s2 == Py_None) & s1_is_unicode) { + goto return_ne; + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +return_eq: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ); +return_ne: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_NE); +#endif +} + +/* GetAttr */ + static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { +#if CYTHON_USE_TYPE_SLOTS +#if PY_MAJOR_VERSION >= 3 + if (likely(PyUnicode_Check(n))) +#else + if (likely(PyString_Check(n))) +#endif + return __Pyx_PyObject_GetAttrStr(o, n); +#endif + return PyObject_GetAttr(o, n); +} + +/* GetItemInt */ + static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + PyObject *r; + if (!j) return NULL; + r = PyObject_GetItem(o, j); + Py_DECREF(j); + return r; +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyList_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { + PyObject *r = PyList_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyTuple_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS + if (is_list || PyList_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); + if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { + PyObject *r = PyList_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } + else if (PyTuple_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } else { + PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; + if (likely(m && m->sq_item)) { + if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { + Py_ssize_t l = m->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + return NULL; + PyErr_Clear(); + } + } + return m->sq_item(o, i); + } + } +#else + if (is_list || PySequence_Check(o)) { + return PySequence_GetItem(o, i); + } +#endif + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +} + +/* ObjectGetItem */ + #if CYTHON_USE_TYPE_SLOTS +static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) { + PyObject *runerr; + Py_ssize_t key_value; + PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence; + if (unlikely(!(m && m->sq_item))) { + PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name); + return NULL; + } + key_value = __Pyx_PyIndex_AsSsize_t(index); + if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { + return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); + } + if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { + PyErr_Clear(); + PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name); + } + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) { + PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping; + if (likely(m && m->mp_subscript)) { + return m->mp_subscript(obj, key); + } + return __Pyx_PyObject_GetIndex(obj, key); +} +#endif + +/* decode_c_string */ + static CYTHON_INLINE PyObject* __Pyx_decode_c_string( + const char* cstring, Py_ssize_t start, Py_ssize_t stop, + const char* encoding, const char* errors, + PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) { + Py_ssize_t length; + if (unlikely((start < 0) | (stop < 0))) { + size_t slen = strlen(cstring); + if (unlikely(slen > (size_t) PY_SSIZE_T_MAX)) { + PyErr_SetString(PyExc_OverflowError, + "c-string too long to convert to Python"); + return NULL; + } + length = (Py_ssize_t) slen; + if (start < 0) { + start += length; + if (start < 0) + start = 0; + } + if (stop < 0) + stop += length; + } + if (unlikely(stop <= start)) + return __Pyx_NewRef(__pyx_empty_unicode); + length = stop - start; + cstring += start; + if (decode_func) { + return decode_func(cstring, length, errors); + } else { + return PyUnicode_Decode(cstring, length, encoding, errors); + } +} + +/* GetAttr3 */ + static PyObject *__Pyx_GetAttr3Default(PyObject *d) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + return NULL; + __Pyx_PyErr_Clear(); + Py_INCREF(d); + return d; +} +static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { + PyObject *r = __Pyx_GetAttr(o, n); + return (likely(r)) ? r : __Pyx_GetAttr3Default(d); +} + +/* RaiseTooManyValuesToUnpack */ + static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { + PyErr_Format(PyExc_ValueError, + "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); +} + +/* RaiseNeedMoreValuesToUnpack */ + static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { + PyErr_Format(PyExc_ValueError, + "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", + index, (index == 1) ? "" : "s"); +} + +/* RaiseNoneIterError */ + static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); +} + +/* ExtTypeTest */ + static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + if (likely(__Pyx_TypeCheck(obj, type))) + return 1; + PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", + Py_TYPE(obj)->tp_name, type->tp_name); + return 0; +} + +/* SwapException */ + #if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = *type; + exc_info->exc_value = *value; + exc_info->exc_traceback = *tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = *type; + tstate->exc_value = *value; + tstate->exc_traceback = *tb; + #endif + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); + PyErr_SetExcInfo(*type, *value, *tb); + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#endif + +/* Import */ + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *empty_list = 0; + PyObject *module = 0; + PyObject *global_dict = 0; + PyObject *empty_dict = 0; + PyObject *list; + #if PY_MAJOR_VERSION < 3 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); + if (!py_import) + goto bad; + #endif + if (from_list) + list = from_list; + else { + empty_list = PyList_New(0); + if (!empty_list) + goto bad; + list = empty_list; + } + global_dict = PyModule_GetDict(__pyx_m); + if (!global_dict) + goto bad; + empty_dict = PyDict_New(); + if (!empty_dict) + goto bad; + { + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { + if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) { + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, 1); + if (!module) { + if (!PyErr_ExceptionMatches(PyExc_ImportError)) + goto bad; + PyErr_Clear(); + } + } + level = 0; + } + #endif + if (!module) { + #if PY_MAJOR_VERSION < 3 + PyObject *py_level = PyInt_FromLong(level); + if (!py_level) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, global_dict, empty_dict, list, py_level, (PyObject *)NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, level); + #endif + } + } +bad: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_import); + #endif + Py_XDECREF(empty_list); + Py_XDECREF(empty_dict); + return module; +} + +/* FastTypeChecks */ + #if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = a->tp_base; + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +#if PY_MAJOR_VERSION == 2 +static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { + PyObject *exception, *value, *tb; + int res; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&exception, &value, &tb); + res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + if (!res) { + res = PyObject_IsSubclass(err, exc_type2); + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + } + __Pyx_ErrRestore(exception, value, tb); + return res; +} +#else +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; + if (!res) { + res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } + return res; +} +#endif +static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + assert(PyExceptionClass_Check(exc_type)); + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0 || (x^b) >= 0)) + return PyInt_FromLong(x); + return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + #endif + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + const long b = intval; + long a, x; +#ifdef HAVE_LONG_LONG + const PY_LONG_LONG llb = intval; + PY_LONG_LONG lla, llx; +#endif + const digit* digits = ((PyLongObject*)op1)->ob_digit; + const Py_ssize_t size = Py_SIZE(op1); + if (likely(__Pyx_sst_abs(size) <= 1)) { + a = likely(size) ? digits[0] : 0; + if (size == -1) a = -a; + } else { + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; +#ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; +#endif + } + CYTHON_FALLTHROUGH; + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; +#ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; +#endif + } + CYTHON_FALLTHROUGH; + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; +#ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; +#endif + } + CYTHON_FALLTHROUGH; + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; +#ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; +#endif + } + CYTHON_FALLTHROUGH; + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; +#ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; +#endif + } + CYTHON_FALLTHROUGH; + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; +#ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; +#endif + } + CYTHON_FALLTHROUGH; + default: return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + } + x = a + b; + return PyLong_FromLong(x); +#ifdef HAVE_LONG_LONG + long_long: + llx = lla + llb; + return PyLong_FromLongLong(llx); +#endif + + + } + #endif + if (PyFloat_CheckExact(op1)) { + const long b = intval; + double a = PyFloat_AS_DOUBLE(op1); + double result; + PyFPE_START_PROTECT("add", return NULL) + result = ((double)a) + (double)b; + PyFPE_END_PROTECT(result) + return PyFloat_FromDouble(result); + } + return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); +} +#endif + +/* None */ + static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { + PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); +} + +/* ImportFrom */ + static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Format(PyExc_ImportError, + #if PY_MAJOR_VERSION < 3 + "cannot import name %.230s", PyString_AS_STRING(name)); + #else + "cannot import name %S", name); + #endif + } + return value; +} + +/* HasAttr */ + static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { + PyObject *r; + if (unlikely(!__Pyx_PyBaseString_Check(n))) { + PyErr_SetString(PyExc_TypeError, + "hasattr(): attribute name must be string"); + return -1; + } + r = __Pyx_GetAttr(o, n); + if (unlikely(!r)) { + PyErr_Clear(); + return 0; + } else { + Py_DECREF(r); + return 1; + } +} + +/* CallNextTpDealloc */ + static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc) { + PyTypeObject* type = Py_TYPE(obj); + while (type && type->tp_dealloc != current_tp_dealloc) + type = type->tp_base; + while (type && type->tp_dealloc == current_tp_dealloc) + type = type->tp_base; + if (type) + type->tp_dealloc(obj); +} + +/* CallNextTpTraverse */ + static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) { + PyTypeObject* type = Py_TYPE(obj); + while (type && type->tp_traverse != current_tp_traverse) + type = type->tp_base; + while (type && type->tp_traverse == current_tp_traverse) + type = type->tp_base; + if (type && type->tp_traverse) + return type->tp_traverse(obj, v, a); + return 0; +} + +/* CallNextTpClear */ + static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) { + PyTypeObject* type = Py_TYPE(obj); + while (type && type->tp_clear != current_tp_clear) + type = type->tp_base; + while (type && type->tp_clear == current_tp_clear) + type = type->tp_base; + if (type && type->tp_clear) + type->tp_clear(obj); +} + +/* PyObject_GenericGetAttrNoDict */ + #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { + PyErr_Format(PyExc_AttributeError, +#if PY_MAJOR_VERSION >= 3 + "'%.50s' object has no attribute '%U'", + tp->tp_name, attr_name); +#else + "'%.50s' object has no attribute '%.400s'", + tp->tp_name, PyString_AS_STRING(attr_name)); +#endif + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { + PyObject *descr; + PyTypeObject *tp = Py_TYPE(obj); + if (unlikely(!PyString_Check(attr_name))) { + return PyObject_GenericGetAttr(obj, attr_name); + } + assert(!tp->tp_dictoffset); + descr = _PyType_Lookup(tp, attr_name); + if (unlikely(!descr)) { + return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); + } + Py_INCREF(descr); + #if PY_MAJOR_VERSION < 3 + if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) + #endif + { + descrgetfunc f = Py_TYPE(descr)->tp_descr_get; + if (unlikely(f)) { + PyObject *res = f(descr, obj, (PyObject *)tp); + Py_DECREF(descr); + return res; + } + } + return descr; +} +#endif + +/* PyObject_GenericGetAttr */ + #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 +static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { + if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { + return PyObject_GenericGetAttr(obj, attr_name); + } + return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); +} +#endif + +/* TypeImport */ + #ifndef __PYX_HAVE_RT_ImportType +#define __PYX_HAVE_RT_ImportType +static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name, + size_t size, enum __Pyx_ImportType_CheckSize check_size) +{ + PyObject *result = 0; + char warning[200]; + Py_ssize_t basicsize; +#ifdef Py_LIMITED_API + PyObject *py_basicsize; +#endif + result = PyObject_GetAttrString(module, class_name); + if (!result) + goto bad; + if (!PyType_Check(result)) { + PyErr_Format(PyExc_TypeError, + "%.200s.%.200s is not a type object", + module_name, class_name); + goto bad; + } +#ifndef Py_LIMITED_API + basicsize = ((PyTypeObject *)result)->tp_basicsize; +#else + py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); + if (!py_basicsize) + goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) + goto bad; +#endif + if ((size_t)basicsize < size) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize); + goto bad; + } + if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize); + goto bad; + } + else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) { + PyOS_snprintf(warning, sizeof(warning), + "%s.%s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize); + if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; + } + return (PyTypeObject *)result; +bad: + Py_XDECREF(result); + return NULL; +} +#endif + +/* GetVTable */ + static void* __Pyx_GetVtable(PyObject *dict) { + void* ptr; + PyObject *ob = PyObject_GetItem(dict, __pyx_n_s_pyx_vtable); + if (!ob) + goto bad; +#if PY_VERSION_HEX >= 0x02070000 + ptr = PyCapsule_GetPointer(ob, 0); +#else + ptr = PyCObject_AsVoidPtr(ob); +#endif + if (!ptr && !PyErr_Occurred()) + PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); + Py_DECREF(ob); + return ptr; +bad: + Py_XDECREF(ob); + return NULL; +} + +/* SetVTable */ + static int __Pyx_SetVtable(PyObject *dict, void *vtable) { +#if PY_VERSION_HEX >= 0x02070000 + PyObject *ob = PyCapsule_New(vtable, 0, 0); +#else + PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); +#endif + if (!ob) + goto bad; + if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) + goto bad; + Py_DECREF(ob); + return 0; +bad: + Py_XDECREF(ob); + return -1; +} + +/* PyObjectGetAttrStrNoError */ + static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + __Pyx_PyErr_Clear(); +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { + PyObject *result; +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { + return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); + } +#endif + result = __Pyx_PyObject_GetAttrStr(obj, attr_name); + if (unlikely(!result)) { + __Pyx_PyObject_GetAttrStr_ClearAttributeError(); + } + return result; +} + +/* SetupReduce */ + static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { + int ret; + PyObject *name_attr; + name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2); + if (likely(name_attr)) { + ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); + } else { + ret = -1; + } + if (unlikely(ret < 0)) { + PyErr_Clear(); + ret = 0; + } + Py_XDECREF(name_attr); + return ret; +} +static int __Pyx_setup_reduce(PyObject* type_obj) { + int ret = 0; + PyObject *object_reduce = NULL; + PyObject *object_reduce_ex = NULL; + PyObject *reduce = NULL; + PyObject *reduce_ex = NULL; + PyObject *reduce_cython = NULL; + PyObject *setstate = NULL; + PyObject *setstate_cython = NULL; +#if CYTHON_USE_PYTYPE_LOOKUP + if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD; +#else + if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD; +#endif +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +#else + object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +#endif + reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; + if (reduce_ex == object_reduce_ex) { +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; +#else + object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; +#endif + reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD; + if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) { + reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython); + if (likely(reduce_cython)) { + ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (reduce == object_reduce || PyErr_Occurred()) { + goto __PYX_BAD; + } + setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate); + if (!setstate) PyErr_Clear(); + if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) { + setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython); + if (likely(setstate_cython)) { + ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (!setstate || PyErr_Occurred()) { + goto __PYX_BAD; + } + } + PyType_Modified((PyTypeObject*)type_obj); + } + } + goto __PYX_GOOD; +__PYX_BAD: + if (!PyErr_Occurred()) + PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name); + ret = -1; +__PYX_GOOD: +#if !CYTHON_USE_PYTYPE_LOOKUP + Py_XDECREF(object_reduce); + Py_XDECREF(object_reduce_ex); +#endif + Py_XDECREF(reduce); + Py_XDECREF(reduce_ex); + Py_XDECREF(reduce_cython); + Py_XDECREF(setstate); + Py_XDECREF(setstate_cython); + return ret; +} + +/* CLineInTraceback */ + #ifndef CYTHON_CLINE_IN_TRACEBACK +static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) { + PyObject *use_cline; + PyObject *ptype, *pvalue, *ptraceback; +#if CYTHON_COMPILING_IN_CPYTHON + PyObject **cython_runtime_dict; +#endif + if (unlikely(!__pyx_cython_runtime)) { + return c_line; + } + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); +#if CYTHON_COMPILING_IN_CPYTHON + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + __PYX_PY_DICT_LOOKUP_IF_MODIFIED( + use_cline, *cython_runtime_dict, + __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) + } else +#endif + { + PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_DECREF(use_cline_obj); + } else { + PyErr_Clear(); + use_cline = NULL; + } + } + if (!use_cline) { + c_line = 0; + PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + +/* CodeObjectCache */ + static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static PyCodeObject *__pyx_find_code_object(int code_line) { + PyCodeObject* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { + return NULL; + } + code_object = __pyx_code_cache.entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = 64; + __pyx_code_cache.count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { + PyCodeObject* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_DECREF(tmp); + return; + } + if (__pyx_code_cache.count == __pyx_code_cache.max_count) { + int new_max = __pyx_code_cache.max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = new_max; + } + for (i=__pyx_code_cache.count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + __pyx_code_cache.count++; + Py_INCREF(code_object); +} + +/* AddTraceback */ + #include "compile.h" +#include "frameobject.h" +#include "traceback.h" +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyObject *py_srcfile = 0; + PyObject *py_funcname = 0; + #if PY_MAJOR_VERSION < 3 + py_srcfile = PyString_FromString(filename); + #else + py_srcfile = PyUnicode_FromString(filename); + #endif + if (!py_srcfile) goto bad; + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + #else + py_funcname = PyUnicode_FromString(funcname); + #endif + } + if (!py_funcname) goto bad; + py_code = __Pyx_PyCode_New( + 0, + 0, + 0, + 0, + 0, + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + Py_DECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_srcfile); + Py_XDECREF(py_funcname); + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) goto bad; + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} + +#if PY_MAJOR_VERSION < 3 +static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) { + if (PyObject_CheckBuffer(obj)) return PyObject_GetBuffer(obj, view, flags); + if (__Pyx_TypeCheck(obj, __pyx_array_type)) return __pyx_array_getbuffer(obj, view, flags); + if (__Pyx_TypeCheck(obj, __pyx_memoryview_type)) return __pyx_memoryview_getbuffer(obj, view, flags); + PyErr_Format(PyExc_TypeError, "'%.200s' does not have the buffer interface", Py_TYPE(obj)->tp_name); + return -1; +} +static void __Pyx_ReleaseBuffer(Py_buffer *view) { + PyObject *obj = view->obj; + if (!obj) return; + if (PyObject_CheckBuffer(obj)) { + PyBuffer_Release(view); + return; + } + if ((0)) {} + view->obj = NULL; + Py_DECREF(obj); +} +#endif + + + /* MemviewSliceIsContig */ + static int +__pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim) +{ + int i, index, step, start; + Py_ssize_t itemsize = mvs.memview->view.itemsize; + if (order == 'F') { + step = 1; + start = 0; + } else { + step = -1; + start = ndim - 1; + } + for (i = 0; i < ndim; i++) { + index = start + step * i; + if (mvs.suboffsets[index] >= 0 || mvs.strides[index] != itemsize) + return 0; + itemsize *= mvs.shape[index]; + } + return 1; +} + +/* OverlappingSlices */ + static void +__pyx_get_array_memory_extents(__Pyx_memviewslice *slice, + void **out_start, void **out_end, + int ndim, size_t itemsize) +{ + char *start, *end; + int i; + start = end = slice->data; + for (i = 0; i < ndim; i++) { + Py_ssize_t stride = slice->strides[i]; + Py_ssize_t extent = slice->shape[i]; + if (extent == 0) { + *out_start = *out_end = start; + return; + } else { + if (stride > 0) + end += stride * (extent - 1); + else + start += stride * (extent - 1); + } + } + *out_start = start; + *out_end = end + itemsize; +} +static int +__pyx_slices_overlap(__Pyx_memviewslice *slice1, + __Pyx_memviewslice *slice2, + int ndim, size_t itemsize) +{ + void *start1, *end1, *start2, *end2; + __pyx_get_array_memory_extents(slice1, &start1, &end1, ndim, itemsize); + __pyx_get_array_memory_extents(slice2, &start2, &end2, ndim, itemsize); + return (start1 < end2) && (start2 < end1); +} + +/* Capsule */ + static CYTHON_INLINE PyObject * +__pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig) +{ + PyObject *cobj; +#if PY_VERSION_HEX >= 0x02070000 + cobj = PyCapsule_New(p, sig, NULL); +#else + cobj = PyCObject_FromVoidPtr(p, NULL); +#endif + return cobj; +} + +/* CIntFromPyVerify */ + #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* TypeInfoCompare */ + static int +__pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b) +{ + int i; + if (!a || !b) + return 0; + if (a == b) + return 1; + if (a->size != b->size || a->typegroup != b->typegroup || + a->is_unsigned != b->is_unsigned || a->ndim != b->ndim) { + if (a->typegroup == 'H' || b->typegroup == 'H') { + return a->size == b->size; + } else { + return 0; + } + } + if (a->ndim) { + for (i = 0; i < a->ndim; i++) + if (a->arraysize[i] != b->arraysize[i]) + return 0; + } + if (a->typegroup == 'S') { + if (a->flags != b->flags) + return 0; + if (a->fields || b->fields) { + if (!(a->fields && b->fields)) + return 0; + for (i = 0; a->fields[i].type && b->fields[i].type; i++) { + __Pyx_StructField *field_a = a->fields + i; + __Pyx_StructField *field_b = b->fields + i; + if (field_a->offset != field_b->offset || + !__pyx_typeinfo_cmp(field_a->type, field_b->type)) + return 0; + } + return !a->fields[i].type && !b->fields[i].type; + } + } + return 1; +} + +/* MemviewSliceValidateAndInit */ + static int +__pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec) +{ + if (buf->shape[dim] <= 1) + return 1; + if (buf->strides) { + if (spec & __Pyx_MEMVIEW_CONTIG) { + if (spec & (__Pyx_MEMVIEW_PTR|__Pyx_MEMVIEW_FULL)) { + if (unlikely(buf->strides[dim] != sizeof(void *))) { + PyErr_Format(PyExc_ValueError, + "Buffer is not indirectly contiguous " + "in dimension %d.", dim); + goto fail; + } + } else if (unlikely(buf->strides[dim] != buf->itemsize)) { + PyErr_SetString(PyExc_ValueError, + "Buffer and memoryview are not contiguous " + "in the same dimension."); + goto fail; + } + } + if (spec & __Pyx_MEMVIEW_FOLLOW) { + Py_ssize_t stride = buf->strides[dim]; + if (stride < 0) + stride = -stride; + if (unlikely(stride < buf->itemsize)) { + PyErr_SetString(PyExc_ValueError, + "Buffer and memoryview are not contiguous " + "in the same dimension."); + goto fail; + } + } + } else { + if (unlikely(spec & __Pyx_MEMVIEW_CONTIG && dim != ndim - 1)) { + PyErr_Format(PyExc_ValueError, + "C-contiguous buffer is not contiguous in " + "dimension %d", dim); + goto fail; + } else if (unlikely(spec & (__Pyx_MEMVIEW_PTR))) { + PyErr_Format(PyExc_ValueError, + "C-contiguous buffer is not indirect in " + "dimension %d", dim); + goto fail; + } else if (unlikely(buf->suboffsets)) { + PyErr_SetString(PyExc_ValueError, + "Buffer exposes suboffsets but no strides"); + goto fail; + } + } + return 1; +fail: + return 0; +} +static int +__pyx_check_suboffsets(Py_buffer *buf, int dim, CYTHON_UNUSED int ndim, int spec) +{ + if (spec & __Pyx_MEMVIEW_DIRECT) { + if (unlikely(buf->suboffsets && buf->suboffsets[dim] >= 0)) { + PyErr_Format(PyExc_ValueError, + "Buffer not compatible with direct access " + "in dimension %d.", dim); + goto fail; + } + } + if (spec & __Pyx_MEMVIEW_PTR) { + if (unlikely(!buf->suboffsets || (buf->suboffsets[dim] < 0))) { + PyErr_Format(PyExc_ValueError, + "Buffer is not indirectly accessible " + "in dimension %d.", dim); + goto fail; + } + } + return 1; +fail: + return 0; +} +static int +__pyx_verify_contig(Py_buffer *buf, int ndim, int c_or_f_flag) +{ + int i; + if (c_or_f_flag & __Pyx_IS_F_CONTIG) { + Py_ssize_t stride = 1; + for (i = 0; i < ndim; i++) { + if (unlikely(stride * buf->itemsize != buf->strides[i] && buf->shape[i] > 1)) { + PyErr_SetString(PyExc_ValueError, + "Buffer not fortran contiguous."); + goto fail; + } + stride = stride * buf->shape[i]; + } + } else if (c_or_f_flag & __Pyx_IS_C_CONTIG) { + Py_ssize_t stride = 1; + for (i = ndim - 1; i >- 1; i--) { + if (unlikely(stride * buf->itemsize != buf->strides[i] && buf->shape[i] > 1)) { + PyErr_SetString(PyExc_ValueError, + "Buffer not C contiguous."); + goto fail; + } + stride = stride * buf->shape[i]; + } + } + return 1; +fail: + return 0; +} +static int __Pyx_ValidateAndInit_memviewslice( + int *axes_specs, + int c_or_f_flag, + int buf_flags, + int ndim, + __Pyx_TypeInfo *dtype, + __Pyx_BufFmt_StackElem stack[], + __Pyx_memviewslice *memviewslice, + PyObject *original_obj) +{ + struct __pyx_memoryview_obj *memview, *new_memview; + __Pyx_RefNannyDeclarations + Py_buffer *buf; + int i, spec = 0, retval = -1; + __Pyx_BufFmt_Context ctx; + int from_memoryview = __pyx_memoryview_check(original_obj); + __Pyx_RefNannySetupContext("ValidateAndInit_memviewslice", 0); + if (from_memoryview && __pyx_typeinfo_cmp(dtype, ((struct __pyx_memoryview_obj *) + original_obj)->typeinfo)) { + memview = (struct __pyx_memoryview_obj *) original_obj; + new_memview = NULL; + } else { + memview = (struct __pyx_memoryview_obj *) __pyx_memoryview_new( + original_obj, buf_flags, 0, dtype); + new_memview = memview; + if (unlikely(!memview)) + goto fail; + } + buf = &memview->view; + if (unlikely(buf->ndim != ndim)) { + PyErr_Format(PyExc_ValueError, + "Buffer has wrong number of dimensions (expected %d, got %d)", + ndim, buf->ndim); + goto fail; + } + if (new_memview) { + __Pyx_BufFmt_Init(&ctx, stack, dtype); + if (unlikely(!__Pyx_BufFmt_CheckString(&ctx, buf->format))) goto fail; + } + if (unlikely((unsigned) buf->itemsize != dtype->size)) { + PyErr_Format(PyExc_ValueError, + "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "u byte%s) " + "does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "u byte%s)", + buf->itemsize, + (buf->itemsize > 1) ? "s" : "", + dtype->name, + dtype->size, + (dtype->size > 1) ? "s" : ""); + goto fail; + } + if (buf->len > 0) { + for (i = 0; i < ndim; i++) { + spec = axes_specs[i]; + if (unlikely(!__pyx_check_strides(buf, i, ndim, spec))) + goto fail; + if (unlikely(!__pyx_check_suboffsets(buf, i, ndim, spec))) + goto fail; + } + if (unlikely(buf->strides && !__pyx_verify_contig(buf, ndim, c_or_f_flag))) + goto fail; + } + if (unlikely(__Pyx_init_memviewslice(memview, ndim, memviewslice, + new_memview != NULL) == -1)) { + goto fail; + } + retval = 0; + goto no_fail; +fail: + Py_XDECREF(new_memview); + retval = -1; +no_fail: + __Pyx_RefNannyFinishContext(); + return retval; +} + +/* ObjectToMemviewSlice */ + static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_6squish_4core_FLOAT_T(PyObject *obj, int writable_flag) { + __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; + __Pyx_BufFmt_StackElem stack[1]; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) }; + int retcode; + if (obj == Py_None) { + result.memview = (struct __pyx_memoryview_obj *) Py_None; + return result; + } + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0, + PyBUF_RECORDS_RO | writable_flag, 1, + &__Pyx_TypeInfo_nn___pyx_t_6squish_4core_FLOAT_T, stack, + &result, obj); + if (unlikely(retcode == -1)) + goto __pyx_fail; + return result; +__pyx_fail: + result.memview = NULL; + result.data = NULL; + return result; +} + +/* MemviewDtypeToObject */ + static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_6squish_4core_FLOAT_T(const char *itemp) { + return (PyObject *) PyFloat_FromDouble(*(__pyx_t_6squish_4core_FLOAT_T *) itemp); +} +static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_6squish_4core_FLOAT_T(const char *itemp, PyObject *obj) { + __pyx_t_6squish_4core_FLOAT_T value = __pyx_PyFloat_AsDouble(obj); + if ((value == ((npy_float64)-1)) && PyErr_Occurred()) + return 0; + *(__pyx_t_6squish_4core_FLOAT_T *) itemp = value; + return 1; +} + +/* ObjectToMemviewSlice */ + static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_6squish_4core_FLOAT_T(PyObject *obj, int writable_flag) { + __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; + __Pyx_BufFmt_StackElem stack[1]; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; + int retcode; + if (obj == Py_None) { + result.memview = (struct __pyx_memoryview_obj *) Py_None; + return result; + } + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, + (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 2, + &__Pyx_TypeInfo_nn___pyx_t_6squish_4core_FLOAT_T, stack, + &result, obj); + if (unlikely(retcode == -1)) + goto __pyx_fail; + return result; +__pyx_fail: + result.memview = NULL; + result.data = NULL; + return result; +} + +/* Declarations */ + #if CYTHON_CCOMPLEX + #ifdef __cplusplus + static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { + return ::std::complex< float >(x, y); + } + #else + static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { + return x + y*(__pyx_t_float_complex)_Complex_I; + } + #endif +#else + static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { + __pyx_t_float_complex z; + z.real = x; + z.imag = y; + return z; + } +#endif + +/* Arithmetic */ + #if CYTHON_CCOMPLEX +#else + static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + return (a.real == b.real) && (a.imag == b.imag); + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + z.real = a.real + b.real; + z.imag = a.imag + b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + z.real = a.real - b.real; + z.imag = a.imag - b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + z.real = a.real * b.real - a.imag * b.imag; + z.imag = a.real * b.imag + a.imag * b.real; + return z; + } + #if 1 + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + if (b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); + } else if (fabsf(b.real) >= fabsf(b.imag)) { + if (b.real == 0 && b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag); + } else { + float r = b.imag / b.real; + float s = (float)(1.0) / (b.real + b.imag * r); + return __pyx_t_float_complex_from_parts( + (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); + } + } else { + float r = b.real / b.imag; + float s = (float)(1.0) / (b.imag + b.real * r); + return __pyx_t_float_complex_from_parts( + (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); + } + } + #else + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + if (b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); + } else { + float denom = b.real * b.real + b.imag * b.imag; + return __pyx_t_float_complex_from_parts( + (a.real * b.real + a.imag * b.imag) / denom, + (a.imag * b.real - a.real * b.imag) / denom); + } + } + #endif + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) { + __pyx_t_float_complex z; + z.real = -a.real; + z.imag = -a.imag; + return z; + } + static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) { + return (a.real == 0) && (a.imag == 0); + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) { + __pyx_t_float_complex z; + z.real = a.real; + z.imag = -a.imag; + return z; + } + #if 1 + static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) { + #if !defined(HAVE_HYPOT) || defined(_MSC_VER) + return sqrtf(z.real*z.real + z.imag*z.imag); + #else + return hypotf(z.real, z.imag); + #endif + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + float r, lnr, theta, z_r, z_theta; + if (b.imag == 0 && b.real == (int)b.real) { + if (b.real < 0) { + float denom = a.real * a.real + a.imag * a.imag; + a.real = a.real / denom; + a.imag = -a.imag / denom; + b.real = -b.real; + } + switch ((int)b.real) { + case 0: + z.real = 1; + z.imag = 0; + return z; + case 1: + return a; + case 2: + return __Pyx_c_prod_float(a, a); + case 3: + z = __Pyx_c_prod_float(a, a); + return __Pyx_c_prod_float(z, a); + case 4: + z = __Pyx_c_prod_float(a, a); + return __Pyx_c_prod_float(z, z); + } + } + if (a.imag == 0) { + if (a.real == 0) { + return a; + } else if (b.imag == 0) { + z.real = powf(a.real, b.real); + z.imag = 0; + return z; + } else if (a.real > 0) { + r = a.real; + theta = 0; + } else { + r = -a.real; + theta = atan2f(0.0, -1.0); + } + } else { + r = __Pyx_c_abs_float(a); + theta = atan2f(a.imag, a.real); + } + lnr = logf(r); + z_r = expf(lnr * b.real - theta * b.imag); + z_theta = theta * b.real + lnr * b.imag; + z.real = z_r * cosf(z_theta); + z.imag = z_r * sinf(z_theta); + return z; + } + #endif +#endif + +/* Declarations */ + #if CYTHON_CCOMPLEX + #ifdef __cplusplus + static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { + return ::std::complex< double >(x, y); + } + #else + static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { + return x + y*(__pyx_t_double_complex)_Complex_I; + } + #endif +#else + static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { + __pyx_t_double_complex z; + z.real = x; + z.imag = y; + return z; + } +#endif + +/* Arithmetic */ + #if CYTHON_CCOMPLEX +#else + static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + return (a.real == b.real) && (a.imag == b.imag); + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + z.real = a.real + b.real; + z.imag = a.imag + b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + z.real = a.real - b.real; + z.imag = a.imag - b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + z.real = a.real * b.real - a.imag * b.imag; + z.imag = a.real * b.imag + a.imag * b.real; + return z; + } + #if 1 + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + if (b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); + } else if (fabs(b.real) >= fabs(b.imag)) { + if (b.real == 0 && b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag); + } else { + double r = b.imag / b.real; + double s = (double)(1.0) / (b.real + b.imag * r); + return __pyx_t_double_complex_from_parts( + (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); + } + } else { + double r = b.real / b.imag; + double s = (double)(1.0) / (b.imag + b.real * r); + return __pyx_t_double_complex_from_parts( + (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); + } + } + #else + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + if (b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); + } else { + double denom = b.real * b.real + b.imag * b.imag; + return __pyx_t_double_complex_from_parts( + (a.real * b.real + a.imag * b.imag) / denom, + (a.imag * b.real - a.real * b.imag) / denom); + } + } + #endif + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) { + __pyx_t_double_complex z; + z.real = -a.real; + z.imag = -a.imag; + return z; + } + static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) { + return (a.real == 0) && (a.imag == 0); + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) { + __pyx_t_double_complex z; + z.real = a.real; + z.imag = -a.imag; + return z; + } + #if 1 + static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) { + #if !defined(HAVE_HYPOT) || defined(_MSC_VER) + return sqrt(z.real*z.real + z.imag*z.imag); + #else + return hypot(z.real, z.imag); + #endif + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + double r, lnr, theta, z_r, z_theta; + if (b.imag == 0 && b.real == (int)b.real) { + if (b.real < 0) { + double denom = a.real * a.real + a.imag * a.imag; + a.real = a.real / denom; + a.imag = -a.imag / denom; + b.real = -b.real; + } + switch ((int)b.real) { + case 0: + z.real = 1; + z.imag = 0; + return z; + case 1: + return a; + case 2: + return __Pyx_c_prod_double(a, a); + case 3: + z = __Pyx_c_prod_double(a, a); + return __Pyx_c_prod_double(z, a); + case 4: + z = __Pyx_c_prod_double(a, a); + return __Pyx_c_prod_double(z, z); + } + } + if (a.imag == 0) { + if (a.real == 0) { + return a; + } else if (b.imag == 0) { + z.real = pow(a.real, b.real); + z.imag = 0; + return z; + } else if (a.real > 0) { + r = a.real; + theta = 0; + } else { + r = -a.real; + theta = atan2(0.0, -1.0); + } + } else { + r = __Pyx_c_abs_double(a); + theta = atan2(a.imag, a.real); + } + lnr = log(r); + z_r = exp(lnr * b.real - theta * b.imag); + z_theta = theta * b.real + lnr * b.imag; + z.real = z_r * cos(z_theta); + z.imag = z_r * sin(z_theta); + return z; + } + #endif +#endif + +/* MemviewSliceCopyTemplate */ + static __Pyx_memviewslice +__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs, + const char *mode, int ndim, + size_t sizeof_dtype, int contig_flag, + int dtype_is_object) +{ + __Pyx_RefNannyDeclarations + int i; + __Pyx_memviewslice new_mvs = { 0, 0, { 0 }, { 0 }, { 0 } }; + struct __pyx_memoryview_obj *from_memview = from_mvs->memview; + Py_buffer *buf = &from_memview->view; + PyObject *shape_tuple = NULL; + PyObject *temp_int = NULL; + struct __pyx_array_obj *array_obj = NULL; + struct __pyx_memoryview_obj *memview_obj = NULL; + __Pyx_RefNannySetupContext("__pyx_memoryview_copy_new_contig", 0); + for (i = 0; i < ndim; i++) { + if (unlikely(from_mvs->suboffsets[i] >= 0)) { + PyErr_Format(PyExc_ValueError, "Cannot copy memoryview slice with " + "indirect dimensions (axis %d)", i); + goto fail; + } + } + shape_tuple = PyTuple_New(ndim); + if (unlikely(!shape_tuple)) { + goto fail; + } + __Pyx_GOTREF(shape_tuple); + for(i = 0; i < ndim; i++) { + temp_int = PyInt_FromSsize_t(from_mvs->shape[i]); + if(unlikely(!temp_int)) { + goto fail; + } else { + PyTuple_SET_ITEM(shape_tuple, i, temp_int); + temp_int = NULL; + } + } + array_obj = __pyx_array_new(shape_tuple, sizeof_dtype, buf->format, (char *) mode, NULL); + if (unlikely(!array_obj)) { + goto fail; + } + __Pyx_GOTREF(array_obj); + memview_obj = (struct __pyx_memoryview_obj *) __pyx_memoryview_new( + (PyObject *) array_obj, contig_flag, + dtype_is_object, + from_mvs->memview->typeinfo); + if (unlikely(!memview_obj)) + goto fail; + if (unlikely(__Pyx_init_memviewslice(memview_obj, ndim, &new_mvs, 1) < 0)) + goto fail; + if (unlikely(__pyx_memoryview_copy_contents(*from_mvs, new_mvs, ndim, ndim, + dtype_is_object) < 0)) + goto fail; + goto no_fail; +fail: + __Pyx_XDECREF(new_mvs.memview); + new_mvs.memview = NULL; + new_mvs.data = NULL; +no_fail: + __Pyx_XDECREF(shape_tuple); + __Pyx_XDECREF(temp_int); + __Pyx_XDECREF(array_obj); + __Pyx_RefNannyFinishContext(); + return new_mvs; +} + +/* CIntFromPy */ + static CYTHON_INLINE npy_int64 __Pyx_PyInt_As_npy_int64(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const npy_int64 neg_one = (npy_int64) -1, const_zero = (npy_int64) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(npy_int64) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(npy_int64, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (npy_int64) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (npy_int64) 0; + case 1: __PYX_VERIFY_RETURN_INT(npy_int64, digit, digits[0]) + case 2: + if (8 * sizeof(npy_int64) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(npy_int64, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(npy_int64) >= 2 * PyLong_SHIFT) { + return (npy_int64) (((((npy_int64)digits[1]) << PyLong_SHIFT) | (npy_int64)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(npy_int64) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(npy_int64, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(npy_int64) >= 3 * PyLong_SHIFT) { + return (npy_int64) (((((((npy_int64)digits[2]) << PyLong_SHIFT) | (npy_int64)digits[1]) << PyLong_SHIFT) | (npy_int64)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(npy_int64) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(npy_int64, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(npy_int64) >= 4 * PyLong_SHIFT) { + return (npy_int64) (((((((((npy_int64)digits[3]) << PyLong_SHIFT) | (npy_int64)digits[2]) << PyLong_SHIFT) | (npy_int64)digits[1]) << PyLong_SHIFT) | (npy_int64)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (npy_int64) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(npy_int64) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(npy_int64, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(npy_int64) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(npy_int64, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (npy_int64) 0; + case -1: __PYX_VERIFY_RETURN_INT(npy_int64, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(npy_int64, digit, +digits[0]) + case -2: + if (8 * sizeof(npy_int64) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(npy_int64, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(npy_int64) - 1 > 2 * PyLong_SHIFT) { + return (npy_int64) (((npy_int64)-1)*(((((npy_int64)digits[1]) << PyLong_SHIFT) | (npy_int64)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(npy_int64) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(npy_int64, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(npy_int64) - 1 > 2 * PyLong_SHIFT) { + return (npy_int64) ((((((npy_int64)digits[1]) << PyLong_SHIFT) | (npy_int64)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(npy_int64) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(npy_int64, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(npy_int64) - 1 > 3 * PyLong_SHIFT) { + return (npy_int64) (((npy_int64)-1)*(((((((npy_int64)digits[2]) << PyLong_SHIFT) | (npy_int64)digits[1]) << PyLong_SHIFT) | (npy_int64)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(npy_int64) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(npy_int64, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(npy_int64) - 1 > 3 * PyLong_SHIFT) { + return (npy_int64) ((((((((npy_int64)digits[2]) << PyLong_SHIFT) | (npy_int64)digits[1]) << PyLong_SHIFT) | (npy_int64)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(npy_int64) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(npy_int64, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(npy_int64) - 1 > 4 * PyLong_SHIFT) { + return (npy_int64) (((npy_int64)-1)*(((((((((npy_int64)digits[3]) << PyLong_SHIFT) | (npy_int64)digits[2]) << PyLong_SHIFT) | (npy_int64)digits[1]) << PyLong_SHIFT) | (npy_int64)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(npy_int64) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(npy_int64, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(npy_int64) - 1 > 4 * PyLong_SHIFT) { + return (npy_int64) ((((((((((npy_int64)digits[3]) << PyLong_SHIFT) | (npy_int64)digits[2]) << PyLong_SHIFT) | (npy_int64)digits[1]) << PyLong_SHIFT) | (npy_int64)digits[0]))); + } + } + break; + } +#endif + if (sizeof(npy_int64) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(npy_int64, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(npy_int64) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(npy_int64, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + npy_int64 val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (npy_int64) -1; + } + } else { + npy_int64 val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (npy_int64) -1; + val = __Pyx_PyInt_As_npy_int64(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to npy_int64"); + return (npy_int64) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to npy_int64"); + return (npy_int64) -1; +} + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int64(npy_int64 value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const npy_int64 neg_one = (npy_int64) -1, const_zero = (npy_int64) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(npy_int64) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(npy_int64) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(npy_int64) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(npy_int64) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(npy_int64) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(npy_int64), + little, !is_unsigned); + } +} + +/* CIntFromPy */ + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(int) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (int) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (int) 0; + case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) + case 2: + if (8 * sizeof(int) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(int) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(int) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(int) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (int) 0; + case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) + case -2: + if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(int) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(int) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(int) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } +#endif + if (sizeof(int) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + int val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (int) -1; + } + } else { + int val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (int) -1; + val = __Pyx_PyInt_As_int(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* CIntFromPy */ + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(long) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (long) 0; + case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) + case 2: + if (8 * sizeof(long) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(long) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(long) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(long) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (long) 0; + case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) + case -2: + if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(long) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(long) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(long) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } +#endif + if (sizeof(long) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + long val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (long) -1; + } + } else { + long val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (long) -1; + val = __Pyx_PyInt_As_long(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(int) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(int) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(int) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(int), + little, !is_unsigned); + } +} + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); + } +} + +/* CIntFromPy */ + static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const char neg_one = (char) -1, const_zero = (char) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(char) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(char, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (char) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (char) 0; + case 1: __PYX_VERIFY_RETURN_INT(char, digit, digits[0]) + case 2: + if (8 * sizeof(char) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(char) >= 2 * PyLong_SHIFT) { + return (char) (((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(char) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(char) >= 3 * PyLong_SHIFT) { + return (char) (((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(char) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(char) >= 4 * PyLong_SHIFT) { + return (char) (((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (char) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(char) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(char, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(char) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(char, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (char) 0; + case -1: __PYX_VERIFY_RETURN_INT(char, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(char, digit, +digits[0]) + case -2: + if (8 * sizeof(char) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(char) - 1 > 2 * PyLong_SHIFT) { + return (char) (((char)-1)*(((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(char) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(char) - 1 > 2 * PyLong_SHIFT) { + return (char) ((((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(char) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(char) - 1 > 3 * PyLong_SHIFT) { + return (char) (((char)-1)*(((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(char) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(char) - 1 > 3 * PyLong_SHIFT) { + return (char) ((((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(char) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(char) - 1 > 4 * PyLong_SHIFT) { + return (char) (((char)-1)*(((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(char) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(char) - 1 > 4 * PyLong_SHIFT) { + return (char) ((((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + } +#endif + if (sizeof(char) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(char, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(char) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(char, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + char val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (char) -1; + } + } else { + char val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (char) -1; + val = __Pyx_PyInt_As_char(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to char"); + return (char) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to char"); + return (char) -1; +} + +/* CheckBinaryVersion */ + static int __Pyx_check_binary_version(void) { + char ctversion[4], rtversion[4]; + PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); + PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); + if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { + char message[200]; + PyOS_snprintf(message, sizeof(message), + "compiletime version %s of module '%.100s' " + "does not match runtime version %s", + ctversion, __Pyx_MODULE_NAME, rtversion); + return PyErr_WarnEx(NULL, message, 1); + } + return 0; +} + +/* VoidPtrImport */ + #ifndef __PYX_HAVE_RT_ImportVoidPtr +#define __PYX_HAVE_RT_ImportVoidPtr +static int __Pyx_ImportVoidPtr(PyObject *module, const char *name, void **p, const char *sig) { + PyObject *d = 0; + PyObject *cobj = 0; + d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); + if (!d) + goto bad; + cobj = PyDict_GetItemString(d, name); + if (!cobj) { + PyErr_Format(PyExc_ImportError, + "%.200s does not export expected C variable %.200s", + PyModule_GetName(module), name); + goto bad; + } +#if PY_VERSION_HEX >= 0x02070000 + if (!PyCapsule_IsValid(cobj, sig)) { + PyErr_Format(PyExc_TypeError, + "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", + PyModule_GetName(module), name, sig, PyCapsule_GetName(cobj)); + goto bad; + } + *p = PyCapsule_GetPointer(cobj, sig); +#else + {const char *desc, *s1, *s2; + desc = (const char *)PyCObject_GetDesc(cobj); + if (!desc) + goto bad; + s1 = desc; s2 = sig; + while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } + if (*s1 != *s2) { + PyErr_Format(PyExc_TypeError, + "C variable %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", + PyModule_GetName(module), name, sig, desc); + goto bad; + } + *p = PyCObject_AsVoidPtr(cobj);} +#endif + if (!(*p)) + goto bad; + Py_DECREF(d); + return 0; +bad: + Py_XDECREF(d); + return -1; +} +#endif + +/* FunctionImport */ + #ifndef __PYX_HAVE_RT_ImportFunction +#define __PYX_HAVE_RT_ImportFunction +static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) { + PyObject *d = 0; + PyObject *cobj = 0; + union { + void (*fp)(void); + void *p; + } tmp; + d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); + if (!d) + goto bad; + cobj = PyDict_GetItemString(d, funcname); + if (!cobj) { + PyErr_Format(PyExc_ImportError, + "%.200s does not export expected C function %.200s", + PyModule_GetName(module), funcname); + goto bad; + } +#if PY_VERSION_HEX >= 0x02070000 + if (!PyCapsule_IsValid(cobj, sig)) { + PyErr_Format(PyExc_TypeError, + "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", + PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj)); + goto bad; + } + tmp.p = PyCapsule_GetPointer(cobj, sig); +#else + {const char *desc, *s1, *s2; + desc = (const char *)PyCObject_GetDesc(cobj); + if (!desc) + goto bad; + s1 = desc; s2 = sig; + while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } + if (*s1 != *s2) { + PyErr_Format(PyExc_TypeError, + "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", + PyModule_GetName(module), funcname, sig, desc); + goto bad; + } + tmp.p = PyCObject_AsVoidPtr(cobj);} +#endif + *f = tmp.fp; + if (!(*f)) + goto bad; + Py_DECREF(d); + return 0; +bad: + Py_XDECREF(d); + return -1; +} +#endif + +/* InitStrings */ + static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + while (t->p) { + #if PY_MAJOR_VERSION < 3 + if (t->is_unicode) { + *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); + } else if (t->intern) { + *t->p = PyString_InternFromString(t->s); + } else { + *t->p = PyString_FromStringAndSize(t->s, t->n - 1); + } + #else + if (t->is_unicode | t->is_str) { + if (t->intern) { + *t->p = PyUnicode_InternFromString(t->s); + } else if (t->encoding) { + *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); + } else { + *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); + } + } else { + *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); + } + #endif + if (!*t->p) + return -1; + if (PyObject_Hash(*t->p) == -1) + return -1; + ++t; + } + return 0; +} + +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#if !CYTHON_PEP393_ENABLED +static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; + } + } + } +#endif + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +} +#else +static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (likely(PyUnicode_IS_ASCII(o))) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +} +#endif +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { + return __Pyx_PyUnicode_AsStringAndSize(o, length); + } else +#endif +#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) + if (PyByteArray_Check(o)) { + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); + } else +#endif + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { + int retval; + if (unlikely(!x)) return -1; + retval = __Pyx_PyObject_IsTrue(x); + Py_DECREF(x); + return retval; +} +static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { +#if PY_MAJOR_VERSION >= 3 + if (PyLong_Check(result)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "__int__ returned non-int (type %.200s). " + "The ability to return an instance of a strict subclass of int " + "is deprecated, and may be removed in a future version of Python.", + Py_TYPE(result)->tp_name)) { + Py_DECREF(result); + return NULL; + } + return result; + } +#endif + PyErr_Format(PyExc_TypeError, + "__%.4s__ returned non-%.4s (type %.200s)", + type_name, type_name, Py_TYPE(result)->tp_name); + Py_DECREF(result); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + const char *name = NULL; + PyObject *res = NULL; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x) || PyLong_Check(x))) +#else + if (likely(PyLong_Check(x))) +#endif + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + #if PY_MAJOR_VERSION < 3 + if (m && m->nb_int) { + name = "int"; + res = m->nb_int(x); + } + else if (m && m->nb_long) { + name = "long"; + res = m->nb_long(x); + } + #else + if (likely(m && m->nb_int)) { + name = "int"; + res = m->nb_int(x); + } + #endif +#else + if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { + res = PyNumber_Int(x); + } +#endif + if (likely(res)) { +#if PY_MAJOR_VERSION < 3 + if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { +#else + if (unlikely(!PyLong_CheckExact(res))) { +#endif + return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(b))) { + if (sizeof(Py_ssize_t) >= sizeof(long)) + return PyInt_AS_LONG(b); + else + return PyInt_AsSsize_t(b); + } +#endif + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)b)->ob_digit; + const Py_ssize_t size = Py_SIZE(b); + if (likely(__Pyx_sst_abs(size) <= 1)) { + ival = likely(size) ? digits[0] : 0; + if (size == -1) ival = -ival; + return ival; + } else { + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyInt_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { + return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); +} +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { + return PyInt_FromSize_t(ival); +} + + +#endif /* Py_PYTHON_H */ diff --git a/squish/energy.pyx b/squish/energy.pyx new file mode 100644 index 0000000..ed1583e --- /dev/null +++ b/squish/energy.pyx @@ -0,0 +1,302 @@ +import numpy as np +from cython.parallel import parallel, prange + +cimport numpy as np +from libc.math cimport NAN, pi as PI, atanh +from squish.core cimport INT_T, FLOAT_T, Vector2D, Matrix2x2, BitSet, \ + _Vector2D, _Matrix2x2, _BitSet +from squish.voronoi cimport Site, HalfEdge, EdgeCacheMap, VoronoiInfo, \ + _Site, _HalfEdge, _EdgeCacheMap, _VoronoiInfo, VoronoiContainer, \ + R, NAN_MATRIX, NAN_VECTOR + +#### Constants #### + +INT = np.int64 +FLOAT = np.float64 + +cdef EdgeCacheMap AREA_ECM = _EdgeCacheMap(0, 4, 6, 8, 10, 12, 13, -1, -1, 14) +cdef EdgeCacheMap RADIALT_ECM = _EdgeCacheMap(0, 4, 6, 8, -1, 10, 11, 12, 13, 14) + +cdef class AreaEnergy(VoronoiContainer): + """ + Class for formulas relevant to the Area energy. + :param n: [int] how many sites to generate. + :param w: [float] width of the bounding domain. + :param h: [float] height of the bounding domain. + :param r: [float] radius of zero energy circle. + :param sites: [np.ndarray] collection of sites. + """ + + attr_str = "area" + title_str = "Area" + + def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, + np.ndarray[FLOAT_T, ndim=2] site_arr): + self.edge_cache_map = &AREA_ECM + self.energy = 0.0 + + super().__init__(n, w, h, r, site_arr) + self.minimum = (n)*(w*h/(n)-PI*r**2)**2 + + + cdef void precompute(self) except *: + cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + + cdef Site xi + cdef HalfEdge em, e, ep + cdef Vector2D vdiff + + cdef FLOAT_T [:] site_energy = np.full(self.sites.shape[0], PI*self.r**2) + + cdef INT_T i, j + for i in prange(self.sites.shape[0], nogil=True): + xi = _Site(i, &info) + e = xi.edge(&xi) + + site_energy[i] = (xi.cache.area(&xi, NAN) - site_energy[i])**2 + xi.cache.energy(&xi, site_energy[i]) + + j = 0 + while j < xi.edge_num(&xi): + em, ep = e.prev(&e), e.next(&e) + vdiff = em.origin(&em) + vdiff.self.vsub(&vdiff, ep.origin(&ep)) + e.cache.dVdv(&e, R.vecmul(&R, vdiff)) + e.cache.H(&e, VoronoiContainer.calc_H(em, e)) + + e = e.next(&e) + j = j + 1 + + self.energy = np.sum(site_energy[:self.n]) + + + cdef void calc_grad(self) except *: + cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + + cdef Site xi, xf + cdef HalfEdge e, f + cdef Vector2D dedxi_p + cdef BitSet edge_set + + cdef INT_T num_edges = self.edges.shape[0] + cdef FLOAT_T A = PI*self.r**2 + + cdef FLOAT_T [:, ::1] dedx = np.zeros((self.n, 2), dtype=FLOAT) + + cdef INT_T i, j + for i in prange(self.n, nogil=True): + xi = _Site(i, &info) + e = xi.edge(&xi) + edge_set = _BitSet(num_edges) + j = 0 + while j < xi.edge_num(&xi): # Looping through site edges. + f = e + while True: # Circling this vertex. + if not edge_set.add(&edge_set, f.arr_index): + xf = f.face(&f) + dedxi_p = f.cache.dVdv(&f, NAN_VECTOR) #dVdv + dedxi_p.self.smul(&dedxi_p, xf.cache.area(&xf, NAN) - A) + dedxi_p.self.matmul(&dedxi_p, e.cache.H(&e, NAN_MATRIX)) + dedx[i][0] -= dedxi_p.x + dedx[i][1] -= dedxi_p.y + + f = f.twin(&f) + f = f.next(&f) + if f.arr_index == e.arr_index: + break + + e = e.next(&e) + j = j + 1 + edge_set.free(&edge_set) + self.grad = dedx + + +cdef class RadialALEnergy(VoronoiContainer): + """ + Class for formulas relevant to the Area energy. + :param n: [int] how many sites to generate. + :param w: [float] width of the bounding domain. + :param h: [float] height of the bounding domain. + :param r: [float] radius of zero energy circle. + :param sites: [np.ndarray] collection of sites. + """ + + attr_str = "radial-al" + title_str = "Radial[AL]" + + + def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, + np.ndarray[FLOAT_T, ndim=2] site_arr): + #self.edge_cache_map = &AREA_EDGE_CACHE_MAP + self.energy = 0.0 + + super().__init__(n, w, h, r, site_arr) + + + cdef void precompute(self) except *: + cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + + pass + + + cdef void calc_grad(self) except *: + cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + + pass + + +cdef class RadialTEnergy(VoronoiContainer): + """ + Class for formulas relevant to the Area energy. + :param n: [int] how many sites to generate. + :param w: [float] width of the bounding domain. + :param h: [float] height of the bounding domain. + :param r: [float] radius of zero energy circle. + :param sites: [np.ndarray] collection of sites. + """ + + attr_str = "radial-t" + title_str = "Radial[T]" + def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, + np.ndarray[FLOAT_T, ndim=2] site_arr): + self.edge_cache_map = &RADIALT_ECM + self.energy = 0.0 + + super().__init__(n, w, h, r, site_arr) + + + cdef void precompute(self) except *: + cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + + cdef Site xi + cdef HalfEdge e, em, ep + cdef Vector2D la + + # All energy has a 2pir_0 term. + cdef FLOAT_T [:] site_energy = np.full(self.sites.shape[0], 2*PI*self.r**2) + cdef FLOAT_T [:] avg_radii = np.zeros(self.sites.shape[0]) + cdef FLOAT_T sm, sp + + cdef INT_T i, j + for i in prange(self.sites.shape[0], nogil=True): + xi = _Site(i, &info) + e = xi.edge(&xi) + j = 0 + while j < xi.edge_num(&xi): + em, ep = e.prev(&e), e.next(&e) + e.cache.H(&e, VoronoiContainer.calc_H(em, e)) + + la = e.cache.la(&e, NAN_VECTOR) + sp = la.dot(&la, ep.cache.da(&ep, NAN_VECTOR)) # dap . la + sm = la.dot(&la, e.cache.da(&e, NAN_VECTOR)) # da . la + + sp = sp / (ep.cache.da_mag(&ep, NAN) * e.cache.la_mag(&e, NAN)) + sm = sm / (e.cache.da_mag(&e, NAN) * e.cache.la_mag(&e, NAN)) + + e.cache.calI(&e, (atanh(sp) - atanh(sm))) + + avg_radii[i] += ( + e.cache.area_p(&e, NAN) * e.cache.calI(&e, NAN) + / e.cache.la_mag(&e, NAN) + ) + + e = e.next(&e) + j = j + 1 + + site_energy[i] += 2*(xi.cache.area(&xi, NAN) - self.r*avg_radii[i]) + + xi.cache.avg_radius(&xi, avg_radii[i]/(2*PI)) + xi.cache.energy(&xi, site_energy[i]) + + self.energy = np.sum(site_energy[:self.n]) + + + cdef void calc_grad(self) except *: + cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + + cdef Site xi + cdef HalfEdge e, fm, f, fp + cdef Vector2D temp1, temp2, temp3, dedxi_p + cdef BitSet edge_set + + cdef INT_T num_edges = self.edges.shape[0] + + cdef FLOAT_T [:, ::1] dedx = np.zeros((self.n, 2), dtype=FLOAT) + + cdef INT_T i, j + for i in prange(self.n, nogil=True): + xi = _Site(i, &info) + e = xi.edge(&xi) + edge_set = _BitSet(num_edges) + + j = 0 + while j < xi.edge_num(&xi): # Looping through site edges. + f = e + dedxi_p = _Vector2D(0, 0) + # dedx (only x) + temp1 = f.cache.la(&f, NAN_VECTOR) + temp1 = temp1.rot(&temp1) + dedxi_p = temp1.copy.smul( + &temp1, + f.cache.calI(&f, NAN) / f.cache.la_mag(&f, NAN) + ) + + while True: # Circling this vertex. + fm, fp = f.prev(&f), f.next(&f) + + if not edge_set.add(&edge_set, f.arr_index): + # ( -rot(dap) ) / |la| + temp1 = fp.cache.da(&fp, NAN_VECTOR) + temp1 = temp1.rot(&temp1) + temp1.self.sdiv(&temp1, -f.cache.la_mag(&f, NAN)) + + # la * area_p / |la|^2 + temp3 = f.cache.la(&f, NAN_VECTOR) + temp3.self.smul( + &temp3, + f.cache.area_p(&f, NAN) / f.cache.la_mag(&f, NAN)**3 + ) + # Combine * calI + temp1.self.vadd(&temp1, temp3) + temp1.self.smul(&temp1, f.cache.calI(&f, NAN)) + + # rot(dam) / |lam| + temp2 = fm.cache.da(&fm, NAN_VECTOR) + temp2 = temp2.rot(&temp2) + temp2.self.sdiv(&temp2, fm.cache.la_mag(&fm, NAN)) + + # lam * area_pm / |lam|^2 + temp3 = fm.cache.la(&fm, NAN_VECTOR) + temp3.self.smul( + &temp3, + fm.cache.area_p(&fm, NAN) / fm.cache.la_mag(&fm, NAN)**3 + ) + # Combine * calIm + temp2.self.vsub(&temp2, temp3) + temp2.self.smul(&temp2, fm.cache.calI(&fm, NAN)) + + temp1.self.vadd(&temp1, temp2) + temp1.self.matmul(&temp1, e.get_H(&e, xi)) + + dedxi_p.self.vadd(&dedxi_p, temp1) + + f = f.twin(&f) + f = f.next(&f) + + if f.arr_index == e.arr_index: + break + + dedx[i][0] -= -2*self.r*dedxi_p.x + dedx[i][1] -= -2*self.r*dedxi_p.y + + e = e.next(&e) + j = j + 1 + + edge_set.free(&edge_set) + self.grad = dedx diff --git a/squish/ordered.py b/squish/ordered.py index d74bfed..d8a8aa6 100644 --- a/squish/ordered.py +++ b/squish/ordered.py @@ -8,28 +8,22 @@ Config = Tuple[int, int] def configurations(domain: DomainParams) -> List[Config]: - n, w, h = domain.n, domain.w, domain.h - valid = [] - mults = np.arange(n) - configs = np.dstack((np.repeat(mults, n).T, np.tile(mults, n).T))[0][1:] - for i in range(len(configs)): - eq_x = n if configs[i][0] == 0 else configs[i][0] - eq_y = n if configs[i][1] == 0 else configs[i][1] + n = domain.n + coprimes, valid = [], [] + for i in range(n): + for j in range(i): + if gcd(i, j) == 1: + coprimes.append((j, i)) - if gcd(eq_x, eq_y) != 1: - continue - - vecs = ( - configs[i] - * np.dstack((w * mults, h * mults)).swapaxes(0, 1) - / n - % domain.dim - ) - vmod2 = np.squeeze(np.matmul(vecs, vecs.transpose(0, 2, 1))) - vmodv = np.squeeze(vecs).dot(vecs[1].T).T.flatten() - - if np.all(vmod2 >= vmodv): - valid.append(tuple(configs[i])) + coprimes = set(coprimes) + while len(coprimes) > 0: + first = coprimes.pop() + valid.append(first) + for i in range(2, n): + try: + coprimes.remove(((first[0] * i) % n, (first[1] * i) % n)) + except KeyError: + pass return valid @@ -38,11 +32,15 @@ def get_config_generators( domain: DomainParams, config: Config ) -> Tuple[Config, Config]: n, w, h = domain.n, domain.w, domain.h - q1 = sites(domain, config) - v = q1[1] - # Sites to check can ignore 0*v and v itself. - all_sites = np.concatenate((q1, q1 - [w, 0], q1 - [w, h], q1 - [0, h]))[2:] + q1 = sites(domain, config)[1:] + all_sites = np.concatenate( + (q1, q1 - np.array([w, 0]), q1 - np.array([0, h]), q1 - domain.dim) + ) + # Sort sites by magnitude and smallest. + all_sites = sorted(list(all_sites), key=lambda x: np.linalg.norm(x)) + v = all_sites[0] # Smallest vector set to v. + all_sites = np.array(all_sites[1:]) # Remove v from search set. # Checking 0 < ax + by < v*v to make the sites are within the region. tol = 1e-3 vdot = np.matmul(all_sites, v) @@ -51,11 +49,13 @@ def get_config_generators( 0, 1 ) # Used for the next step, getting site*site - w = in_box[ + v2 = in_box[ np.argmin(np.squeeze(np.matmul(in_box, in_box.transpose(0, 2, 1)))) ].flatten() - return tuple(v), tuple(w) + if np.all(v == v2): + print(v, v2, n, w, h, config) + return tuple(v), tuple(v2) def sites(domain: DomainParams, config: Config) -> numpy.ndarray: @@ -92,8 +92,10 @@ def avg_rp(d: float, l: float) -> float: return (d / (4 * pi)) * log(tan(0.5 * (atan(l / d) + pi / 2)) ** 2) -def circumcenter(v: numpy.ndarray, w: numpy.ndarray) -> Config: +def circumcenter(v: numpy.ndarray, w: numpy.ndarray) -> numpy.ndarray: det = 1 / (2 * rot(v).dot(w)) + if rot(v).dot(w) == 0: + print(v, w) v2, w2 = v.dot(v), w.dot(w) c = np.empty((2,)) c[0], c[1] = w[1] * v2 - v[1] * w2, -w[0] * v2 + v[0] * w2 diff --git a/squish/simulation.py b/squish/simulation.py index fb93f4d..dde2ef1 100644 --- a/squish/simulation.py +++ b/squish/simulation.py @@ -2,7 +2,7 @@ from __future__ import annotations from typing import Optional import pickle, numpy as np -from math import log10 +from math import log10, sqrt from scipy.linalg import null_space from timeit import default_timer as timer from pathlib import Path @@ -57,6 +57,22 @@ class Simulation: self.frames.append(self.energy.mode(*self.domain, points % self.domain.dim)) + def normalize(self) -> None: + new_frames = [] + for frame in self.frames: + aspect = frame.w / frame.h + new_domain = DomainParams( + frame.n, sqrt(frame.n * aspect), sqrt(frame.n / aspect), frame.r + ) + + new_points = frame.site_arr * np.array( + [new_domain.w / frame.w, new_domain.h / frame.h] + ) + + new_frames.append(self.energy.mode(*new_domain, new_points)) + + self.frames = new_frames + def get_distinct(self) -> List[int]: """Gets the distinct configurations based on the average radii of the sites. and returns the number of configurations for each distinct configuration. diff --git a/squish/_squish/_squish.c b/squish/voronoi.c similarity index 64% rename from squish/_squish/_squish.c rename to squish/voronoi.c index ddeb5d5..fbfcd88 100644 --- a/squish/_squish/_squish.c +++ b/squish/voronoi.c @@ -3,6 +3,12 @@ /* BEGIN: Cython Metadata { "distutils": { + "define_macros": [ + [ + "NPY_NO_DEPRECATED_API", + "NPY_1_7_API_VERSION" + ] + ], "depends": [], "extra_compile_args": [ "-fopenmp" @@ -10,12 +16,12 @@ "extra_link_args": [ "-fopenmp" ], - "name": "_squish", + "name": "squish.voronoi", "sources": [ - "squish/_squish/_squish.pyx" + "squish/voronoi.pyx" ] }, - "module_name": "_squish" + "module_name": "squish.voronoi" } END: Cython Metadata */ @@ -631,8 +637,8 @@ static CYTHON_INLINE float __PYX_NAN() { #endif #endif -#define __PYX_HAVE___squish -#define __PYX_HAVE_API___squish +#define __PYX_HAVE__squish__voronoi +#define __PYX_HAVE_API__squish__voronoi /* Early includes */ #include #include @@ -645,8 +651,8 @@ static CYTHON_INLINE float __PYX_NAN() { /* NumPy API declarations from "numpy/__init__.pxd" */ #include "pythread.h" -#include #include +#include #include "pystate.h" #ifdef _OPENMP #include @@ -878,30 +884,15 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { - "squish/_squish/core.pyx", - "squish/_squish/voronoi_dcel.pyx", + "squish/voronoi.pyx", "stringsource", - "squish/_squish/energy.pyx", - "squish/_squish/_squish.pxd", - ".venv/lib/python3.8/site-packages/numpy/__init__.pxd", - ".venv/lib/python3.8/site-packages/Cython/Includes/cpython/array.pxd", - "squish/_squish/_squish.pyx", - ".venv/lib/python3.8/site-packages/Cython/Includes/cpython/type.pxd", - ".venv/lib/python3.8/site-packages/Cython/Includes/cpython/bool.pxd", - ".venv/lib/python3.8/site-packages/Cython/Includes/cpython/complex.pxd", + "squish/voronoi.pxd", + "__init__.pxd", + "array.pxd", + "type.pxd", + "bool.pxd", + "complex.pxd", }; -/* ForceInitThreads.proto */ -#ifndef __PYX_FORCE_INIT_THREADS - #define __PYX_FORCE_INIT_THREADS 0 -#endif - -/* NoFastGil.proto */ -#define __Pyx_PyGILState_Ensure PyGILState_Ensure -#define __Pyx_PyGILState_Release PyGILState_Release -#define __Pyx_FastGIL_Remember() -#define __Pyx_FastGIL_Forget() -#define __Pyx_FastGilFuncInit() - /* BufferFormatStructs.proto */ #define IS_UNSIGNED(type) (((type) -1) > 0) struct __Pyx_StructField_; @@ -998,8 +989,20 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; __pyx_sub_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock) #endif +/* NoFastGil.proto */ +#define __Pyx_PyGILState_Ensure PyGILState_Ensure +#define __Pyx_PyGILState_Release PyGILState_Release +#define __Pyx_FastGIL_Remember() +#define __Pyx_FastGIL_Forget() +#define __Pyx_FastGilFuncInit() -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":690 +/* ForceInitThreads.proto */ +#ifndef __PYX_FORCE_INIT_THREADS + #define __PYX_FORCE_INIT_THREADS 0 +#endif + + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":690 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -1008,7 +1011,7 @@ typedef volatile __pyx_atomic_int_type __pyx_atomic_int; */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":691 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":691 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -1017,7 +1020,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":692 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":692 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -1026,7 +1029,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":693 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":693 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -1035,7 +1038,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":697 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":697 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -1044,7 +1047,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":698 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":698 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -1053,7 +1056,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":699 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":699 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -1062,7 +1065,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":700 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":700 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -1071,7 +1074,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":704 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":704 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -1080,7 +1083,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":705 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":705 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -1089,7 +1092,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":714 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":714 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -1098,7 +1101,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":715 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":715 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -1107,7 +1110,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":716 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":716 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -1116,7 +1119,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":718 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":718 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -1125,7 +1128,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":719 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":719 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -1134,7 +1137,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":720 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":720 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -1143,7 +1146,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":722 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":722 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -1152,7 +1155,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":723 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":723 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -1161,7 +1164,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":725 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":725 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -1170,7 +1173,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":726 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":726 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -1179,7 +1182,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":727 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":727 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -1188,23 +1191,23 @@ typedef npy_double __pyx_t_5numpy_double_t; */ typedef npy_longdouble __pyx_t_5numpy_longdouble_t; -/* "_squish.pxd":4 +/* "squish/core.pxd":4 * * # Cython Types. * ctypedef np.int64_t INT_T # <<<<<<<<<<<<<< * ctypedef np.float64_t FLOAT_T * */ -typedef __pyx_t_5numpy_int64_t __pyx_t_7_squish_INT_T; +typedef __pyx_t_5numpy_int64_t __pyx_t_6squish_4core_INT_T; -/* "_squish.pxd":5 +/* "squish/core.pxd":5 * # Cython Types. * ctypedef np.int64_t INT_T * ctypedef np.float64_t FLOAT_T # <<<<<<<<<<<<<< * - * # Stores initialization functions. + * ctypedef (INT_T, INT_T) Pair */ -typedef __pyx_t_5numpy_float64_t __pyx_t_7_squish_FLOAT_T; +typedef __pyx_t_5numpy_float64_t __pyx_t_6squish_4core_FLOAT_T; /* Declarations.proto */ #if CYTHON_CCOMPLEX #ifdef __cplusplus @@ -1235,17 +1238,13 @@ static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(do struct arrayobject; typedef struct arrayobject arrayobject; #endif -struct __pyx_obj_7_squish_VoronoiContainer; -struct __pyx_obj_7_squish_AreaEnergy; -struct __pyx_obj_7_squish_RadialALEnergy; -struct __pyx_obj_7_squish_RadialTEnergy; -struct __pyx_obj_7_squish_Calc; +struct __pyx_obj_6squish_7voronoi_VoronoiContainer; struct __pyx_array_obj; struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":729 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":729 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -1254,7 +1253,7 @@ struct __pyx_memoryviewslice_obj; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":730 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":730 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -1263,7 +1262,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":731 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":731 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -1272,7 +1271,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":733 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":733 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -1280,426 +1279,402 @@ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; * cdef inline object PyArray_MultiIterNew1(a): */ typedef npy_cdouble __pyx_t_5numpy_complex_t; -struct __pyx_t_7_squish_Init; -struct __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T; -typedef struct __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T; -struct __pyx_t_7_squish_IArray; -struct __pyx_t_7_squish_FArray; -typedef struct __pyx_t_7_squish_FArray __pyx_t_7_squish_FArray; -struct __pyx_t_7_squish_BitSet; -typedef struct __pyx_t_7_squish_BitSet __pyx_t_7_squish_BitSet; -struct __pyx_t_7_squish_VectorSelfOps; -typedef struct __pyx_t_7_squish_VectorSelfOps __pyx_t_7_squish_VectorSelfOps; -struct __pyx_t_7_squish_VectorCopyOps; -typedef struct __pyx_t_7_squish_VectorCopyOps __pyx_t_7_squish_VectorCopyOps; -struct __pyx_t_7_squish_MatrixSelfOps; -typedef struct __pyx_t_7_squish_MatrixSelfOps __pyx_t_7_squish_MatrixSelfOps; -struct __pyx_t_7_squish_MatrixCopyOps; -typedef struct __pyx_t_7_squish_MatrixCopyOps __pyx_t_7_squish_MatrixCopyOps; -struct __pyx_t_7_squish_Vector2D; -typedef struct __pyx_t_7_squish_Vector2D __pyx_t_7_squish_Vector2D; -struct __pyx_t_7_squish_Matrix2x2; -typedef struct __pyx_t_7_squish_Matrix2x2 __pyx_t_7_squish_Matrix2x2; -struct __pyx_t_7_squish_SiteCacheMap; -typedef struct __pyx_t_7_squish_SiteCacheMap __pyx_t_7_squish_SiteCacheMap; -struct __pyx_t_7_squish_EdgeCacheMap; -typedef struct __pyx_t_7_squish_EdgeCacheMap __pyx_t_7_squish_EdgeCacheMap; -struct __pyx_t_7_squish_VoronoiInfo; -typedef struct __pyx_t_7_squish_VoronoiInfo __pyx_t_7_squish_VoronoiInfo; -struct __pyx_t_7_squish_Site; -typedef struct __pyx_t_7_squish_Site __pyx_t_7_squish_Site; -struct __pyx_t_7_squish_HalfEdge; -typedef struct __pyx_t_7_squish_HalfEdge __pyx_t_7_squish_HalfEdge; +struct __pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc; +typedef struct __pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc __pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc; +struct __pyx_t_6squish_4core_IArray; +struct __pyx_t_6squish_4core_FArray; +typedef struct __pyx_t_6squish_4core_FArray __pyx_t_6squish_4core_FArray; +struct __pyx_t_6squish_4core_BitSet; +typedef struct __pyx_t_6squish_4core_BitSet __pyx_t_6squish_4core_BitSet; +struct __pyx_t_6squish_4core_VectorSelfOps; +typedef struct __pyx_t_6squish_4core_VectorSelfOps __pyx_t_6squish_4core_VectorSelfOps; +struct __pyx_t_6squish_4core_VectorCopyOps; +typedef struct __pyx_t_6squish_4core_VectorCopyOps __pyx_t_6squish_4core_VectorCopyOps; +struct __pyx_t_6squish_4core_MatrixSelfOps; +typedef struct __pyx_t_6squish_4core_MatrixSelfOps __pyx_t_6squish_4core_MatrixSelfOps; +struct __pyx_t_6squish_4core_MatrixCopyOps; +typedef struct __pyx_t_6squish_4core_MatrixCopyOps __pyx_t_6squish_4core_MatrixCopyOps; +struct __pyx_t_6squish_4core_Vector2D; +typedef struct __pyx_t_6squish_4core_Vector2D __pyx_t_6squish_4core_Vector2D; +struct __pyx_t_6squish_4core_Matrix2x2; +typedef struct __pyx_t_6squish_4core_Matrix2x2 __pyx_t_6squish_4core_Matrix2x2; -/* "_squish.pxd":8 +/* "squish/core.pxd":7 + * ctypedef np.float64_t FLOAT_T * - * # Stores initialization functions. - * cdef struct Init: # <<<<<<<<<<<<<< - * IArray (*IArray)(INT_T*, (INT_T, INT_T)) nogil - * FArray (*FArray)(FLOAT_T*, (INT_T, INT_T)) nogil + * ctypedef (INT_T, INT_T) Pair # <<<<<<<<<<<<<< + * + * # Integer Array psuedo-class for continguous arrays. */ -struct __pyx_t_7_squish_Init { - struct __pyx_t_7_squish_IArray (*IArray)(__pyx_t_7_squish_INT_T *, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T); - __pyx_t_7_squish_FArray (*FArray)(__pyx_t_7_squish_FLOAT_T *, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T); - __pyx_t_7_squish_BitSet (*BitSet)(__pyx_t_7_squish_INT_T); - __pyx_t_7_squish_Vector2D (*Vector2D)(__pyx_t_7_squish_FLOAT_T, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_Matrix2x2 (*Matrix2x2)(__pyx_t_7_squish_FLOAT_T, __pyx_t_7_squish_FLOAT_T, __pyx_t_7_squish_FLOAT_T, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_SiteCacheMap (*SiteCacheMap)(__pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T); - __pyx_t_7_squish_EdgeCacheMap (*EdgeCacheMap)(__pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T); - __pyx_t_7_squish_VoronoiInfo (*VoronoiInfo)(__Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __pyx_t_7_squish_EdgeCacheMap *); - __pyx_t_7_squish_Site (*Site)(__pyx_t_7_squish_INT_T, __pyx_t_7_squish_VoronoiInfo *); - __pyx_t_7_squish_HalfEdge (*HalfEdge)(__pyx_t_7_squish_INT_T, __pyx_t_7_squish_VoronoiInfo *); +struct __pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc { + __pyx_t_6squish_4core_INT_T f0; + __pyx_t_6squish_4core_INT_T f1; }; +typedef __pyx_ctuple_ae3510____dunderpyx_t_6squish_4core_INT_T__and___dunderpyx_t_6squish_4core_INT_T__etc __pyx_t_6squish_4core_Pair; -/* "_squish.pxd":9 - * # Stores initialization functions. - * cdef struct Init: - * IArray (*IArray)(INT_T*, (INT_T, INT_T)) nogil # <<<<<<<<<<<<<< - * FArray (*FArray)(FLOAT_T*, (INT_T, INT_T)) nogil - * #IList (*IList)() nogil - */ -struct __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T { - __pyx_t_7_squish_INT_T f0; - __pyx_t_7_squish_INT_T f1; -}; - -/* "_squish.pxd":25 +/* "squish/core.pxd":10 * * # Integer Array psuedo-class for continguous arrays. * cdef struct IArray: # <<<<<<<<<<<<<< - * INT_T* arr - * (INT_T, INT_T) shape + * INT_T* arr + * Pair shape */ -struct __pyx_t_7_squish_IArray { - __pyx_t_7_squish_INT_T *arr; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T shape; - __pyx_t_7_squish_INT_T (*get)(struct __pyx_t_7_squish_IArray *, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T); - void (*set)(struct __pyx_t_7_squish_IArray *, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T); +struct __pyx_t_6squish_4core_IArray { + __pyx_t_6squish_4core_INT_T *arr; + __pyx_t_6squish_4core_Pair shape; + __pyx_t_6squish_4core_INT_T (*get)(struct __pyx_t_6squish_4core_IArray *, __pyx_t_6squish_4core_Pair); + void (*set)(struct __pyx_t_6squish_4core_IArray *, __pyx_t_6squish_4core_Pair, __pyx_t_6squish_4core_INT_T); }; -/* "_squish.pxd":33 +/* "squish/core.pxd":18 * * # Float Array psuedo-class for continguous arrays. * ctypedef struct FArray: # <<<<<<<<<<<<<< - * FLOAT_T* arr - * (INT_T, INT_T) shape + * FLOAT_T* arr + * Pair shape */ -struct __pyx_t_7_squish_FArray { - __pyx_t_7_squish_FLOAT_T *arr; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T shape; - __pyx_t_7_squish_FLOAT_T (*get)(__pyx_t_7_squish_FArray *, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T); - void (*set)(__pyx_t_7_squish_FArray *, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T, __pyx_t_7_squish_FLOAT_T); +struct __pyx_t_6squish_4core_FArray { + __pyx_t_6squish_4core_FLOAT_T *arr; + __pyx_t_6squish_4core_Pair shape; + __pyx_t_6squish_4core_FLOAT_T (*get)(__pyx_t_6squish_4core_FArray *, __pyx_t_6squish_4core_Pair); + void (*set)(__pyx_t_6squish_4core_FArray *, __pyx_t_6squish_4core_Pair, __pyx_t_6squish_4core_FLOAT_T); }; -/* "_squish.pxd":49 +/* "squish/core.pxd":34 * * # Uses an array of bits to determine if value in set. * ctypedef struct BitSet: # <<<<<<<<<<<<<< - * INT_T* bits + * INT_T* bits * */ -struct __pyx_t_7_squish_BitSet { - __pyx_t_7_squish_INT_T *bits; - int (*add)(__pyx_t_7_squish_BitSet *, __pyx_t_7_squish_INT_T); - void (*free)(__pyx_t_7_squish_BitSet *); +struct __pyx_t_6squish_4core_BitSet { + __pyx_t_6squish_4core_INT_T *bits; + int (*add)(__pyx_t_6squish_4core_BitSet *, __pyx_t_6squish_4core_INT_T); + void (*free)(__pyx_t_6squish_4core_BitSet *); }; -/* "_squish.pxd":56 +/* "squish/core.pxd":41 * * # Psuedo-operator definitions. * ctypedef Vector2D* (*VectorSelfVecOp)(Vector2D*, Vector2D) nogil # <<<<<<<<<<<<<< * ctypedef Vector2D (*VectorCopyVecOp)(Vector2D*, Vector2D) nogil * ctypedef Vector2D* (*VectorSelfSclOp)(Vector2D*, FLOAT_T) nogil */ -typedef __pyx_t_7_squish_Vector2D *(*__pyx_t_7_squish_VectorSelfVecOp)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); +typedef __pyx_t_6squish_4core_Vector2D *(*__pyx_t_6squish_4core_VectorSelfVecOp)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); -/* "_squish.pxd":57 +/* "squish/core.pxd":42 * # Psuedo-operator definitions. * ctypedef Vector2D* (*VectorSelfVecOp)(Vector2D*, Vector2D) nogil * ctypedef Vector2D (*VectorCopyVecOp)(Vector2D*, Vector2D) nogil # <<<<<<<<<<<<<< * ctypedef Vector2D* (*VectorSelfSclOp)(Vector2D*, FLOAT_T) nogil * ctypedef Vector2D (*VectorCopySclOp)(Vector2D*, FLOAT_T) nogil */ -typedef __pyx_t_7_squish_Vector2D (*__pyx_t_7_squish_VectorCopyVecOp)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); +typedef __pyx_t_6squish_4core_Vector2D (*__pyx_t_6squish_4core_VectorCopyVecOp)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); -/* "_squish.pxd":58 +/* "squish/core.pxd":43 * ctypedef Vector2D* (*VectorSelfVecOp)(Vector2D*, Vector2D) nogil * ctypedef Vector2D (*VectorCopyVecOp)(Vector2D*, Vector2D) nogil * ctypedef Vector2D* (*VectorSelfSclOp)(Vector2D*, FLOAT_T) nogil # <<<<<<<<<<<<<< * ctypedef Vector2D (*VectorCopySclOp)(Vector2D*, FLOAT_T) nogil * */ -typedef __pyx_t_7_squish_Vector2D *(*__pyx_t_7_squish_VectorSelfSclOp)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_FLOAT_T); +typedef __pyx_t_6squish_4core_Vector2D *(*__pyx_t_6squish_4core_VectorSelfSclOp)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); -/* "_squish.pxd":59 +/* "squish/core.pxd":44 * ctypedef Vector2D (*VectorCopyVecOp)(Vector2D*, Vector2D) nogil * ctypedef Vector2D* (*VectorSelfSclOp)(Vector2D*, FLOAT_T) nogil * ctypedef Vector2D (*VectorCopySclOp)(Vector2D*, FLOAT_T) nogil # <<<<<<<<<<<<<< * * ctypedef Matrix2x2* (*MatrixSelfMatOp)(Matrix2x2*, Matrix2x2) nogil */ -typedef __pyx_t_7_squish_Vector2D (*__pyx_t_7_squish_VectorCopySclOp)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_FLOAT_T); +typedef __pyx_t_6squish_4core_Vector2D (*__pyx_t_6squish_4core_VectorCopySclOp)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_FLOAT_T); -/* "_squish.pxd":61 +/* "squish/core.pxd":46 * ctypedef Vector2D (*VectorCopySclOp)(Vector2D*, FLOAT_T) nogil * * ctypedef Matrix2x2* (*MatrixSelfMatOp)(Matrix2x2*, Matrix2x2) nogil # <<<<<<<<<<<<<< * ctypedef Matrix2x2 (*MatrixCopyMatOp)(Matrix2x2*, Matrix2x2) nogil * ctypedef Matrix2x2* (*MatrixSelfSclOp)(Matrix2x2*, FLOAT_T) nogil */ -typedef __pyx_t_7_squish_Matrix2x2 *(*__pyx_t_7_squish_MatrixSelfMatOp)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); +typedef __pyx_t_6squish_4core_Matrix2x2 *(*__pyx_t_6squish_4core_MatrixSelfMatOp)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); -/* "_squish.pxd":62 +/* "squish/core.pxd":47 * * ctypedef Matrix2x2* (*MatrixSelfMatOp)(Matrix2x2*, Matrix2x2) nogil * ctypedef Matrix2x2 (*MatrixCopyMatOp)(Matrix2x2*, Matrix2x2) nogil # <<<<<<<<<<<<<< * ctypedef Matrix2x2* (*MatrixSelfSclOp)(Matrix2x2*, FLOAT_T) nogil * ctypedef Matrix2x2 (*MatrixCopySclOp)(Matrix2x2*, FLOAT_T) nogil */ -typedef __pyx_t_7_squish_Matrix2x2 (*__pyx_t_7_squish_MatrixCopyMatOp)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); +typedef __pyx_t_6squish_4core_Matrix2x2 (*__pyx_t_6squish_4core_MatrixCopyMatOp)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); -/* "_squish.pxd":63 +/* "squish/core.pxd":48 * ctypedef Matrix2x2* (*MatrixSelfMatOp)(Matrix2x2*, Matrix2x2) nogil * ctypedef Matrix2x2 (*MatrixCopyMatOp)(Matrix2x2*, Matrix2x2) nogil * ctypedef Matrix2x2* (*MatrixSelfSclOp)(Matrix2x2*, FLOAT_T) nogil # <<<<<<<<<<<<<< * ctypedef Matrix2x2 (*MatrixCopySclOp)(Matrix2x2*, FLOAT_T) nogil * */ -typedef __pyx_t_7_squish_Matrix2x2 *(*__pyx_t_7_squish_MatrixSelfSclOp)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_FLOAT_T); +typedef __pyx_t_6squish_4core_Matrix2x2 *(*__pyx_t_6squish_4core_MatrixSelfSclOp)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); -/* "_squish.pxd":64 +/* "squish/core.pxd":49 * ctypedef Matrix2x2 (*MatrixCopyMatOp)(Matrix2x2*, Matrix2x2) nogil * ctypedef Matrix2x2* (*MatrixSelfSclOp)(Matrix2x2*, FLOAT_T) nogil * ctypedef Matrix2x2 (*MatrixCopySclOp)(Matrix2x2*, FLOAT_T) nogil # <<<<<<<<<<<<<< * * */ -typedef __pyx_t_7_squish_Matrix2x2 (*__pyx_t_7_squish_MatrixCopySclOp)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_FLOAT_T); +typedef __pyx_t_6squish_4core_Matrix2x2 (*__pyx_t_6squish_4core_MatrixCopySclOp)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_FLOAT_T); -/* "_squish.pxd":67 +/* "squish/core.pxd":52 * * * ctypedef struct VectorSelfOps: # <<<<<<<<<<<<<< - * Vector2D* (*neg)(Vector2D*) nogil + * Vector2D* (*neg)(Vector2D*) nogil * */ -struct __pyx_t_7_squish_VectorSelfOps { - __pyx_t_7_squish_Vector2D *(*neg)(__pyx_t_7_squish_Vector2D *); - __pyx_t_7_squish_VectorSelfVecOp vadd; - __pyx_t_7_squish_VectorSelfVecOp vsub; - __pyx_t_7_squish_VectorSelfVecOp vmul; - __pyx_t_7_squish_VectorSelfVecOp vdiv; - __pyx_t_7_squish_Vector2D *(*matmul)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Matrix2x2); - __pyx_t_7_squish_VectorSelfSclOp sadd; - __pyx_t_7_squish_VectorSelfSclOp ssub; - __pyx_t_7_squish_VectorSelfSclOp smul; - __pyx_t_7_squish_VectorSelfSclOp sdiv; +struct __pyx_t_6squish_4core_VectorSelfOps { + __pyx_t_6squish_4core_Vector2D *(*neg)(__pyx_t_6squish_4core_Vector2D *); + __pyx_t_6squish_4core_VectorSelfVecOp vadd; + __pyx_t_6squish_4core_VectorSelfVecOp vsub; + __pyx_t_6squish_4core_VectorSelfVecOp vmul; + __pyx_t_6squish_4core_VectorSelfVecOp vdiv; + __pyx_t_6squish_4core_Vector2D *(*matmul)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_VectorSelfSclOp sadd; + __pyx_t_6squish_4core_VectorSelfSclOp ssub; + __pyx_t_6squish_4core_VectorSelfSclOp smul; + __pyx_t_6squish_4core_VectorSelfSclOp sdiv; }; -/* "_squish.pxd":82 +/* "squish/core.pxd":67 * * * ctypedef struct VectorCopyOps: # <<<<<<<<<<<<<< - * Vector2D (*neg)(Vector2D*) nogil + * Vector2D (*neg)(Vector2D*) nogil * */ -struct __pyx_t_7_squish_VectorCopyOps { - __pyx_t_7_squish_Vector2D (*neg)(__pyx_t_7_squish_Vector2D *); - __pyx_t_7_squish_VectorCopyVecOp vadd; - __pyx_t_7_squish_VectorCopyVecOp vsub; - __pyx_t_7_squish_VectorCopyVecOp vmul; - __pyx_t_7_squish_VectorCopyVecOp vdiv; - __pyx_t_7_squish_Vector2D (*matmul)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Matrix2x2); - __pyx_t_7_squish_VectorCopySclOp sadd; - __pyx_t_7_squish_VectorCopySclOp ssub; - __pyx_t_7_squish_VectorCopySclOp smul; - __pyx_t_7_squish_VectorCopySclOp sdiv; +struct __pyx_t_6squish_4core_VectorCopyOps { + __pyx_t_6squish_4core_Vector2D (*neg)(__pyx_t_6squish_4core_Vector2D *); + __pyx_t_6squish_4core_VectorCopyVecOp vadd; + __pyx_t_6squish_4core_VectorCopyVecOp vsub; + __pyx_t_6squish_4core_VectorCopyVecOp vmul; + __pyx_t_6squish_4core_VectorCopyVecOp vdiv; + __pyx_t_6squish_4core_Vector2D (*matmul)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_VectorCopySclOp sadd; + __pyx_t_6squish_4core_VectorCopySclOp ssub; + __pyx_t_6squish_4core_VectorCopySclOp smul; + __pyx_t_6squish_4core_VectorCopySclOp sdiv; }; -/* "_squish.pxd":97 +/* "squish/core.pxd":82 * * * ctypedef struct MatrixSelfOps: # <<<<<<<<<<<<<< - * Matrix2x2* (*neg)(Matrix2x2*) nogil + * Matrix2x2* (*neg)(Matrix2x2*) nogil * */ -struct __pyx_t_7_squish_MatrixSelfOps { - __pyx_t_7_squish_Matrix2x2 *(*neg)(__pyx_t_7_squish_Matrix2x2 *); - __pyx_t_7_squish_MatrixSelfMatOp madd; - __pyx_t_7_squish_MatrixSelfMatOp msub; - __pyx_t_7_squish_MatrixSelfMatOp mmul; - __pyx_t_7_squish_MatrixSelfMatOp mdiv; - __pyx_t_7_squish_MatrixSelfMatOp matmul; - __pyx_t_7_squish_MatrixSelfSclOp sadd; - __pyx_t_7_squish_MatrixSelfSclOp ssub; - __pyx_t_7_squish_MatrixSelfSclOp smul; - __pyx_t_7_squish_MatrixSelfSclOp sdiv; +struct __pyx_t_6squish_4core_MatrixSelfOps { + __pyx_t_6squish_4core_Matrix2x2 *(*neg)(__pyx_t_6squish_4core_Matrix2x2 *); + __pyx_t_6squish_4core_MatrixSelfMatOp madd; + __pyx_t_6squish_4core_MatrixSelfMatOp msub; + __pyx_t_6squish_4core_MatrixSelfMatOp mmul; + __pyx_t_6squish_4core_MatrixSelfMatOp mdiv; + __pyx_t_6squish_4core_MatrixSelfMatOp matmul; + __pyx_t_6squish_4core_MatrixSelfSclOp sadd; + __pyx_t_6squish_4core_MatrixSelfSclOp ssub; + __pyx_t_6squish_4core_MatrixSelfSclOp smul; + __pyx_t_6squish_4core_MatrixSelfSclOp sdiv; }; -/* "_squish.pxd":112 +/* "squish/core.pxd":97 * * * ctypedef struct MatrixCopyOps: # <<<<<<<<<<<<<< - * Matrix2x2 (*neg)(Matrix2x2*) nogil + * Matrix2x2 (*neg)(Matrix2x2*) nogil * */ -struct __pyx_t_7_squish_MatrixCopyOps { - __pyx_t_7_squish_Matrix2x2 (*neg)(__pyx_t_7_squish_Matrix2x2 *); - __pyx_t_7_squish_MatrixCopyMatOp madd; - __pyx_t_7_squish_MatrixCopyMatOp msub; - __pyx_t_7_squish_MatrixCopyMatOp mmul; - __pyx_t_7_squish_MatrixCopyMatOp mdiv; - __pyx_t_7_squish_MatrixCopyMatOp matmul; - __pyx_t_7_squish_MatrixCopySclOp sadd; - __pyx_t_7_squish_MatrixCopySclOp ssub; - __pyx_t_7_squish_MatrixCopySclOp smul; - __pyx_t_7_squish_MatrixCopySclOp sdiv; +struct __pyx_t_6squish_4core_MatrixCopyOps { + __pyx_t_6squish_4core_Matrix2x2 (*neg)(__pyx_t_6squish_4core_Matrix2x2 *); + __pyx_t_6squish_4core_MatrixCopyMatOp madd; + __pyx_t_6squish_4core_MatrixCopyMatOp msub; + __pyx_t_6squish_4core_MatrixCopyMatOp mmul; + __pyx_t_6squish_4core_MatrixCopyMatOp mdiv; + __pyx_t_6squish_4core_MatrixCopyMatOp matmul; + __pyx_t_6squish_4core_MatrixCopySclOp sadd; + __pyx_t_6squish_4core_MatrixCopySclOp ssub; + __pyx_t_6squish_4core_MatrixCopySclOp smul; + __pyx_t_6squish_4core_MatrixCopySclOp sdiv; }; -/* "_squish.pxd":127 +/* "squish/core.pxd":112 * * # Psuedo-class for a 2-dimensional vector. No orientation. * ctypedef struct Vector2D: # <<<<<<<<<<<<<< - * FLOAT_T x, y - * VectorSelfOps self + * FLOAT_T x, y + * VectorSelfOps self */ -struct __pyx_t_7_squish_Vector2D { - __pyx_t_7_squish_FLOAT_T x; - __pyx_t_7_squish_FLOAT_T y; - __pyx_t_7_squish_VectorSelfOps self; - __pyx_t_7_squish_VectorCopyOps copy; - int (*equals)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_Vector2D (*rot)(__pyx_t_7_squish_Vector2D *); - __pyx_t_7_squish_FLOAT_T (*dot)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_FLOAT_T (*mag)(__pyx_t_7_squish_Vector2D *); +struct __pyx_t_6squish_4core_Vector2D { + __pyx_t_6squish_4core_FLOAT_T x; + __pyx_t_6squish_4core_FLOAT_T y; + __pyx_t_6squish_4core_VectorSelfOps self; + __pyx_t_6squish_4core_VectorCopyOps copy; + int (*equals)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*rot)(__pyx_t_6squish_4core_Vector2D *); + __pyx_t_6squish_4core_FLOAT_T (*dot)(__pyx_t_6squish_4core_Vector2D *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_FLOAT_T (*mag)(__pyx_t_6squish_4core_Vector2D *); }; -/* "_squish.pxd":138 +/* "squish/core.pxd":123 * * # Psuedo-class for a 2x2 matrix. * ctypedef struct Matrix2x2: # <<<<<<<<<<<<<< - * FLOAT_T a, b, c, d - * MatrixSelfOps self + * FLOAT_T a, b, c, d + * MatrixSelfOps self */ -struct __pyx_t_7_squish_Matrix2x2 { - __pyx_t_7_squish_FLOAT_T a; - __pyx_t_7_squish_FLOAT_T b; - __pyx_t_7_squish_FLOAT_T c; - __pyx_t_7_squish_FLOAT_T d; - __pyx_t_7_squish_MatrixSelfOps self; - __pyx_t_7_squish_MatrixCopyOps copy; - int (*equals)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); - __pyx_t_7_squish_Vector2D (*vecmul)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Vector2D); +struct __pyx_t_6squish_4core_Matrix2x2 { + __pyx_t_6squish_4core_FLOAT_T a; + __pyx_t_6squish_4core_FLOAT_T b; + __pyx_t_6squish_4core_FLOAT_T c; + __pyx_t_6squish_4core_FLOAT_T d; + __pyx_t_6squish_4core_MatrixSelfOps self; + __pyx_t_6squish_4core_MatrixCopyOps copy; + int (*equals)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_Vector2D (*vecmul)(__pyx_t_6squish_4core_Matrix2x2 *, __pyx_t_6squish_4core_Vector2D); }; +struct __pyx_t_6squish_7voronoi_SiteCacheMap; +typedef struct __pyx_t_6squish_7voronoi_SiteCacheMap __pyx_t_6squish_7voronoi_SiteCacheMap; +struct __pyx_t_6squish_7voronoi_EdgeCacheMap; +typedef struct __pyx_t_6squish_7voronoi_EdgeCacheMap __pyx_t_6squish_7voronoi_EdgeCacheMap; +struct __pyx_t_6squish_7voronoi_VoronoiInfo; +typedef struct __pyx_t_6squish_7voronoi_VoronoiInfo __pyx_t_6squish_7voronoi_VoronoiInfo; +struct __pyx_t_6squish_7voronoi_Site; +typedef struct __pyx_t_6squish_7voronoi_Site __pyx_t_6squish_7voronoi_Site; +struct __pyx_t_6squish_7voronoi_HalfEdge; +typedef struct __pyx_t_6squish_7voronoi_HalfEdge __pyx_t_6squish_7voronoi_HalfEdge; -/* "_squish.pxd":147 +/* "squish/voronoi.pxd":5 * * # Psuedo-class that handles caching for sites. * ctypedef struct SiteCacheMap: # <<<<<<<<<<<<<< - * INT_T iarea, iperim, iisoparam, ienergy, iavg_radius + * INT_T iarea, iperim, iisoparam, ienergy, iavg_radius, icentroid, imaxcenter * */ -struct __pyx_t_7_squish_SiteCacheMap { - __pyx_t_7_squish_INT_T iarea; - __pyx_t_7_squish_INT_T iperim; - __pyx_t_7_squish_INT_T iisoparam; - __pyx_t_7_squish_INT_T ienergy; - __pyx_t_7_squish_INT_T iavg_radius; - __pyx_t_7_squish_FLOAT_T (*area)(__pyx_t_7_squish_Site *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*perim)(__pyx_t_7_squish_Site *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*isoparam)(__pyx_t_7_squish_Site *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*energy)(__pyx_t_7_squish_Site *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*avg_radius)(__pyx_t_7_squish_Site *, __pyx_t_7_squish_FLOAT_T); +struct __pyx_t_6squish_7voronoi_SiteCacheMap { + __pyx_t_6squish_4core_INT_T iarea; + __pyx_t_6squish_4core_INT_T iperim; + __pyx_t_6squish_4core_INT_T iisoparam; + __pyx_t_6squish_4core_INT_T ienergy; + __pyx_t_6squish_4core_INT_T iavg_radius; + __pyx_t_6squish_4core_INT_T icentroid; + __pyx_t_6squish_4core_INT_T imaxcenter; + __pyx_t_6squish_4core_FLOAT_T (*area)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*perim)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*isoparam)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*energy)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*avg_radius)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_Vector2D (*centroid)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*maxcenter)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_Vector2D); }; -/* "_squish.pxd":157 +/* "squish/voronoi.pxd":18 * * # Psuedo-class that handles caching for edges. * ctypedef struct EdgeCacheMap: # <<<<<<<<<<<<<< - * INT_T iH, ila, ila_mag, ida, ida_mag, ixij, idVdv, iphi, iB, iF, ii2p,\ - * ilntan, icsc, size + * INT_T iH, ila, ida, ixij, idVdv, ila_mag, ida_mag, iarea_p, icalI, size + * */ -struct __pyx_t_7_squish_EdgeCacheMap { - __pyx_t_7_squish_INT_T iH; - __pyx_t_7_squish_INT_T ila; - __pyx_t_7_squish_INT_T ila_mag; - __pyx_t_7_squish_INT_T ida; - __pyx_t_7_squish_INT_T ida_mag; - __pyx_t_7_squish_INT_T ixij; - __pyx_t_7_squish_INT_T idVdv; - __pyx_t_7_squish_INT_T iphi; - __pyx_t_7_squish_INT_T iB; - __pyx_t_7_squish_INT_T iF; - __pyx_t_7_squish_INT_T ii2p; - __pyx_t_7_squish_INT_T ilntan; - __pyx_t_7_squish_INT_T icsc; - __pyx_t_7_squish_INT_T size; - __pyx_t_7_squish_Matrix2x2 (*H)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Matrix2x2); - __pyx_t_7_squish_Vector2D (*la)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_Vector2D (*da)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_Vector2D (*xij)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_Vector2D (*dVdv)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_Vector2D (*i2p)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_FLOAT_T (*la_mag)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*da_mag)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*phi)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*B)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*F)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*lntan)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*csc)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); +struct __pyx_t_6squish_7voronoi_EdgeCacheMap { + __pyx_t_6squish_4core_INT_T iH; + __pyx_t_6squish_4core_INT_T ila; + __pyx_t_6squish_4core_INT_T ida; + __pyx_t_6squish_4core_INT_T ixij; + __pyx_t_6squish_4core_INT_T idVdv; + __pyx_t_6squish_4core_INT_T ila_mag; + __pyx_t_6squish_4core_INT_T ida_mag; + __pyx_t_6squish_4core_INT_T iarea_p; + __pyx_t_6squish_4core_INT_T icalI; + __pyx_t_6squish_4core_INT_T size; + __pyx_t_6squish_4core_Matrix2x2 (*H)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_Vector2D (*la)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*da)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*xij)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*dVdv)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_FLOAT_T (*la_mag)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*da_mag)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*area_p)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*calI)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_FLOAT_T); }; -/* "_squish.pxd":178 +/* "squish/voronoi.pxd":34 * * # Psuedo-class to just contain all pertaining info for sites and edges. * ctypedef struct VoronoiInfo: # <<<<<<<<<<<<<< - * IArray sites, edges - * FArray points, vertices, site_cache, edge_cache + * IArray sites, edges + * FArray points, vertices, site_cache, edge_cache */ -struct __pyx_t_7_squish_VoronoiInfo { - struct __pyx_t_7_squish_IArray sites; - struct __pyx_t_7_squish_IArray edges; - __pyx_t_7_squish_FArray points; - __pyx_t_7_squish_FArray vertices; - __pyx_t_7_squish_FArray site_cache; - __pyx_t_7_squish_FArray edge_cache; - __pyx_t_7_squish_EdgeCacheMap *edge_cache_map; +struct __pyx_t_6squish_7voronoi_VoronoiInfo { + struct __pyx_t_6squish_4core_IArray sites; + struct __pyx_t_6squish_4core_IArray edges; + __pyx_t_6squish_4core_FArray points; + __pyx_t_6squish_4core_FArray vertices; + __pyx_t_6squish_4core_FArray site_cache; + __pyx_t_6squish_4core_FArray edge_cache; + __pyx_t_6squish_7voronoi_EdgeCacheMap *edge_cache_map; }; -/* "_squish.pxd":184 +/* "squish/voronoi.pxd":40 * * # Psuedo-class for a Site. * ctypedef struct Site: # <<<<<<<<<<<<<< - * INT_T arr_index - * VoronoiInfo* info + * INT_T arr_index + * VoronoiInfo* info */ -struct __pyx_t_7_squish_Site { - __pyx_t_7_squish_INT_T arr_index; - __pyx_t_7_squish_VoronoiInfo *info; - __pyx_t_7_squish_SiteCacheMap *cache; - __pyx_t_7_squish_INT_T (*index)(__pyx_t_7_squish_Site *); - __pyx_t_7_squish_Vector2D (*vec)(__pyx_t_7_squish_Site *); - __pyx_t_7_squish_HalfEdge (*edge)(__pyx_t_7_squish_Site *); - __pyx_t_7_squish_INT_T (*edge_num)(__pyx_t_7_squish_Site *); +struct __pyx_t_6squish_7voronoi_Site { + __pyx_t_6squish_4core_INT_T arr_index; + __pyx_t_6squish_7voronoi_VoronoiInfo *info; + __pyx_t_6squish_7voronoi_SiteCacheMap *cache; + __pyx_t_6squish_4core_INT_T (*index)(__pyx_t_6squish_7voronoi_Site *); + __pyx_t_6squish_4core_Vector2D (*vec)(__pyx_t_6squish_7voronoi_Site *); + __pyx_t_6squish_7voronoi_HalfEdge (*edge)(__pyx_t_6squish_7voronoi_Site *); + __pyx_t_6squish_4core_INT_T (*edge_num)(__pyx_t_6squish_7voronoi_Site *); }; -/* "_squish.pxd":195 +/* "squish/voronoi.pxd":51 * * # Psuedo-class for an HalfEdge. * ctypedef struct HalfEdge: # <<<<<<<<<<<<<< - * INT_T orig_arr_index, arr_index - * VoronoiInfo* info + * INT_T orig_arr_index, arr_index + * VoronoiInfo* info */ -struct __pyx_t_7_squish_HalfEdge { - __pyx_t_7_squish_INT_T orig_arr_index; - __pyx_t_7_squish_INT_T arr_index; - __pyx_t_7_squish_VoronoiInfo *info; - __pyx_t_7_squish_EdgeCacheMap *cache; - __pyx_t_7_squish_INT_T (*origin_index)(__pyx_t_7_squish_HalfEdge *); - __pyx_t_7_squish_Vector2D (*origin)(__pyx_t_7_squish_HalfEdge *); - __pyx_t_7_squish_Site (*face)(__pyx_t_7_squish_HalfEdge *); - __pyx_t_7_squish_HalfEdge (*next)(__pyx_t_7_squish_HalfEdge *); - __pyx_t_7_squish_HalfEdge (*prev)(__pyx_t_7_squish_HalfEdge *); - __pyx_t_7_squish_HalfEdge (*twin)(__pyx_t_7_squish_HalfEdge *); - __pyx_t_7_squish_Matrix2x2 (*get_H)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Site); +struct __pyx_t_6squish_7voronoi_HalfEdge { + __pyx_t_6squish_4core_INT_T orig_arr_index; + __pyx_t_6squish_4core_INT_T arr_index; + __pyx_t_6squish_7voronoi_VoronoiInfo *info; + __pyx_t_6squish_7voronoi_EdgeCacheMap *cache; + __pyx_t_6squish_4core_INT_T (*origin_index)(__pyx_t_6squish_7voronoi_HalfEdge *); + __pyx_t_6squish_4core_Vector2D (*origin)(__pyx_t_6squish_7voronoi_HalfEdge *); + __pyx_t_6squish_7voronoi_Site (*face)(__pyx_t_6squish_7voronoi_HalfEdge *); + __pyx_t_6squish_7voronoi_HalfEdge (*next)(__pyx_t_6squish_7voronoi_HalfEdge *); + __pyx_t_6squish_7voronoi_HalfEdge (*prev)(__pyx_t_6squish_7voronoi_HalfEdge *); + __pyx_t_6squish_7voronoi_HalfEdge (*twin)(__pyx_t_6squish_7voronoi_HalfEdge *); + __pyx_t_6squish_4core_Matrix2x2 (*get_H)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_7voronoi_Site); }; -/* "_squish.pxd":209 +/* "squish/voronoi.pxd":65 * * * cdef class VoronoiContainer: # <<<<<<<<<<<<<< - * cdef readonly INT_T n - * cdef readonly FLOAT_T w, h, r, energy + * cdef readonly INT_T n + * cdef readonly FLOAT_T w, h, r, energy */ -struct __pyx_obj_7_squish_VoronoiContainer { +struct __pyx_obj_6squish_7voronoi_VoronoiContainer { PyObject_HEAD - struct __pyx_vtabstruct_7_squish_VoronoiContainer *__pyx_vtab; - __pyx_t_7_squish_INT_T n; - __pyx_t_7_squish_FLOAT_T w; - __pyx_t_7_squish_FLOAT_T h; - __pyx_t_7_squish_FLOAT_T r; - __pyx_t_7_squish_FLOAT_T energy; - __pyx_t_7_squish_FLOAT_T dim[2]; + struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer *__pyx_vtab; + __pyx_t_6squish_4core_INT_T n; + __pyx_t_6squish_4core_FLOAT_T w; + __pyx_t_6squish_4core_FLOAT_T h; + __pyx_t_6squish_4core_FLOAT_T r; + __pyx_t_6squish_4core_FLOAT_T energy; + __pyx_t_6squish_4core_FLOAT_T dim[2]; __Pyx_memviewslice points; __Pyx_memviewslice vertices; __Pyx_memviewslice site_cache; @@ -1707,61 +1682,11 @@ struct __pyx_obj_7_squish_VoronoiContainer { __Pyx_memviewslice grad; __Pyx_memviewslice sites; __Pyx_memviewslice edges; - __pyx_t_7_squish_EdgeCacheMap *edge_cache_map; + __pyx_t_6squish_7voronoi_EdgeCacheMap *edge_cache_map; PyObject *__dict__; }; -/* "_squish.pxd":232 - * - * - * cdef class AreaEnergy(VoronoiContainer): # <<<<<<<<<<<<<< - * cdef readonly FLOAT_T minimum - * cdef void precompute(self) except * - */ -struct __pyx_obj_7_squish_AreaEnergy { - struct __pyx_obj_7_squish_VoronoiContainer __pyx_base; - __pyx_t_7_squish_FLOAT_T minimum; -}; - - -/* "_squish.pxd":238 - * - * - * cdef class RadialALEnergy(VoronoiContainer): # <<<<<<<<<<<<<< - * cdef void precompute(self) except * - * cdef void calc_grad(self) except * - */ -struct __pyx_obj_7_squish_RadialALEnergy { - struct __pyx_obj_7_squish_VoronoiContainer __pyx_base; -}; - - -/* "_squish.pxd":243 - * - * - * cdef class RadialTEnergy(VoronoiContainer): # <<<<<<<<<<<<<< - * cdef void precompute(self) except * - * cdef void calc_grad(self) except * - */ -struct __pyx_obj_7_squish_RadialTEnergy { - struct __pyx_obj_7_squish_VoronoiContainer __pyx_base; -}; - - -/* "_squish.pxd":247 - * cdef void calc_grad(self) except * - * - * cdef class Calc: # <<<<<<<<<<<<<< - * @staticmethod - * cdef inline FLOAT_T phi(HalfEdge) nogil - */ -struct __pyx_obj_7_squish_Calc { - PyObject_HEAD - struct __pyx_vtabstruct_7_squish_Calc *__pyx_vtab; -}; - - /* "View.MemoryView":105 * * @cname("__pyx_array") @@ -1840,85 +1765,27 @@ struct __pyx_memoryviewslice_obj { -/* "squish/_squish/voronoi_dcel.pyx":388 +/* "squish/voronoi.pyx":396 * * * cdef class VoronoiContainer: # <<<<<<<<<<<<<< - * """ - * Class for Voronoi diagrams, stored in a modified DCEL. + * """ + * Class for Voronoi diagrams, stored in a modified DCEL. */ -struct __pyx_vtabstruct_7_squish_VoronoiContainer { - void (*calculate_voronoi)(struct __pyx_obj_7_squish_VoronoiContainer *, PyArrayObject *); - void (*generate_dcel)(struct __pyx_obj_7_squish_VoronoiContainer *); - void (*common_cache)(struct __pyx_obj_7_squish_VoronoiContainer *); - void (*precompute)(struct __pyx_obj_7_squish_VoronoiContainer *); - void (*calc_grad)(struct __pyx_obj_7_squish_VoronoiContainer *); - void (*get_statistics)(struct __pyx_obj_7_squish_VoronoiContainer *); - __pyx_t_7_squish_Matrix2x2 (*calc_H)(__pyx_t_7_squish_HalfEdge, __pyx_t_7_squish_HalfEdge); +struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer { + void (*calculate_voronoi)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *, PyArrayObject *); + void (*generate_dcel)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *); + void (*common_cache)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *); + void (*precompute)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *); + void (*calc_grad)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *); + void (*get_statistics)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *); + __pyx_t_6squish_4core_Matrix2x2 (*calc_H)(__pyx_t_6squish_7voronoi_HalfEdge, __pyx_t_6squish_7voronoi_HalfEdge); int (*sign)(__Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice); }; -static struct __pyx_vtabstruct_7_squish_VoronoiContainer *__pyx_vtabptr_7_squish_VoronoiContainer; -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_16VoronoiContainer_calc_H(__pyx_t_7_squish_HalfEdge, __pyx_t_7_squish_HalfEdge); -static CYTHON_INLINE int __pyx_f_7_squish_16VoronoiContainer_sign(__Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice); - - -/* "squish/_squish/energy.pyx":1 - * cdef class AreaEnergy(VoronoiContainer): # <<<<<<<<<<<<<< - * """ - * Class for formulas relevant to the Area energy. - */ - -struct __pyx_vtabstruct_7_squish_AreaEnergy { - struct __pyx_vtabstruct_7_squish_VoronoiContainer __pyx_base; -}; -static struct __pyx_vtabstruct_7_squish_AreaEnergy *__pyx_vtabptr_7_squish_AreaEnergy; - - -/* "squish/_squish/energy.pyx":95 - * - * - * cdef class RadialALEnergy(VoronoiContainer): # <<<<<<<<<<<<<< - * """ - * Class for formulas relevant to the Area energy. - */ - -struct __pyx_vtabstruct_7_squish_RadialALEnergy { - struct __pyx_vtabstruct_7_squish_VoronoiContainer __pyx_base; -}; -static struct __pyx_vtabstruct_7_squish_RadialALEnergy *__pyx_vtabptr_7_squish_RadialALEnergy; - - -/* "squish/_squish/energy.pyx":131 - * - * - * cdef class RadialTEnergy(VoronoiContainer): # <<<<<<<<<<<<<< - * """ - * Class for formulas relevant to the Area energy. - */ - -struct __pyx_vtabstruct_7_squish_RadialTEnergy { - struct __pyx_vtabstruct_7_squish_VoronoiContainer __pyx_base; -}; -static struct __pyx_vtabstruct_7_squish_RadialTEnergy *__pyx_vtabptr_7_squish_RadialTEnergy; - - -/* "squish/_squish/energy.pyx":263 - * - * - * cdef class Calc: # <<<<<<<<<<<<<< - * @staticmethod - * cdef inline FLOAT_T phi(HalfEdge e) nogil: - */ - -struct __pyx_vtabstruct_7_squish_Calc { - __pyx_t_7_squish_FLOAT_T (*phi)(__pyx_t_7_squish_HalfEdge); - __pyx_t_7_squish_Vector2D (*I2)(__pyx_t_7_squish_HalfEdge, __pyx_t_7_squish_FLOAT_T, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_Vector2D (*radialt_edge_grad)(__pyx_t_7_squish_HalfEdge, __pyx_t_7_squish_Site, __pyx_t_7_squish_FLOAT_T); -}; -static struct __pyx_vtabstruct_7_squish_Calc *__pyx_vtabptr_7_squish_Calc; -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_4Calc_phi(__pyx_t_7_squish_HalfEdge); -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_4Calc_I2(__pyx_t_7_squish_HalfEdge, __pyx_t_7_squish_FLOAT_T, __pyx_t_7_squish_FLOAT_T); +static struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer *__pyx_vtabptr_6squish_7voronoi_VoronoiContainer; +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_7voronoi_16VoronoiContainer_calc_H(__pyx_t_6squish_7voronoi_HalfEdge, __pyx_t_6squish_7voronoi_HalfEdge); +static CYTHON_INLINE int __pyx_f_6squish_7voronoi_16VoronoiContainer_sign(__Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice); /* "View.MemoryView":105 @@ -2042,117 +1909,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject /* GetBuiltinName.proto */ static PyObject *__Pyx_GetBuiltinName(PyObject *name); -/* PyObjectFormatSimple.proto */ -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyObject_FormatSimple(s, f) (\ - likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ - PyObject_Format(s, f)) -#elif PY_MAJOR_VERSION < 3 - #define __Pyx_PyObject_FormatSimple(s, f) (\ - likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ - likely(PyString_CheckExact(s)) ? PyUnicode_FromEncodedObject(s, NULL, "strict") :\ - PyObject_Format(s, f)) -#elif CYTHON_USE_TYPE_SLOTS - #define __Pyx_PyObject_FormatSimple(s, f) (\ - likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ - likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_str(s) :\ - likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_str(s) :\ - PyObject_Format(s, f)) -#else - #define __Pyx_PyObject_FormatSimple(s, f) (\ - likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ - PyObject_Format(s, f)) -#endif - -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -#else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#define __Pyx_BUILD_ASSERT_EXPR(cond)\ - (sizeof(char [1 - 2*!(cond)]) - 1) -#ifndef Py_MEMBER_SIZE -#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) -#endif - static size_t __pyx_pyframe_localsplus_offset = 0; - #include "frameobject.h" - #define __Pxy_PyFrame_Initialize_Offsets()\ - ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ - (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) - #define __Pyx_PyFrame_GetLocalsplus(frame)\ - (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) -#endif - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* RaiseException.proto */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); - -/* WriteUnraisableException.proto */ -static void __Pyx_WriteUnraisable(const char *name, int clineno, - int lineno, const char *filename, - int full_traceback, int nogil); - /* RaiseArgTupleInvalid.proto */ static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); @@ -2215,9 +1971,54 @@ static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_ve static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); #endif +/* PyCFunctionFastCall.proto */ +#if CYTHON_FAST_PYCCALL +static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); +#else +#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) +#endif + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +#if 1 || PY_VERSION_HEX < 0x030600B1 +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); +#else +#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) +#endif +#define __Pyx_BUILD_ASSERT_EXPR(cond)\ + (sizeof(char [1 - 2*!(cond)]) - 1) +#ifndef Py_MEMBER_SIZE +#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) +#endif + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets()\ + ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ + (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) + #define __Pyx_PyFrame_GetLocalsplus(frame)\ + (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) +#endif + +/* PyObjectCall.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + /* PyObjectCall2Args.proto */ static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + /* ExtTypeTest.proto */ static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); @@ -2309,6 +2110,42 @@ static CYTHON_INLINE int __pyx_sub_acquisition_count_locked( static CYTHON_INLINE void __Pyx_INC_MEMVIEW(__Pyx_memviewslice *, int, int); static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *, int, int); +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + /* ObjectGetItem.proto */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key); @@ -2388,6 +2225,28 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); #define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) #endif +/* PyObjectFormatSimple.proto */ +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#elif PY_MAJOR_VERSION < 3 + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyString_CheckExact(s)) ? PyUnicode_FromEncodedObject(s, NULL, "strict") :\ + PyObject_Format(s, f)) +#elif CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_str(s) :\ + likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_str(s) :\ + PyObject_Format(s, f)) +#else + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#endif + /* PyIntBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); @@ -2396,34 +2255,25 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, long i (inplace ? PyNumber_InPlaceTrueDivide(op1, op2) : PyNumber_TrueDivide(op1, op2)) #endif -/* ArgTypeTest.proto */ -#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ - ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\ - __Pyx__ArgTypeTest(obj, type, name, exact)) -static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); - -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +/* ListAppend.proto */ +#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS +static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { + PyListObject* L = (PyListObject*) list; + Py_ssize_t len = Py_SIZE(list); + if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { + Py_INCREF(x); + PyList_SET_ITEM(list, len, x); + __Pyx_SET_SIZE(list, len + 1); + return 0; + } + return PyList_Append(list, x); +} #else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#define __Pyx_PyList_Append(L,x) PyList_Append(L,x) #endif -/* GetAttr.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); - -/* GetAttr3.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); - -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); - -/* HasAttr.proto */ -static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); +/* RaiseException.proto */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /* GetTopmostException.proto */ #if CYTHON_USE_EXC_INFO_STACK @@ -2441,6 +2291,14 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject #define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) #endif +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + /* GetException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) @@ -2449,6 +2307,12 @@ static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); #endif +/* ArgTypeTest.proto */ +#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ + ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\ + __Pyx__ArgTypeTest(obj, type, name, exact)) +static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); + /* BytesEquals.proto */ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); @@ -2468,6 +2332,9 @@ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int static CYTHON_UNUSED int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *); /*proto*/ +/* GetAttr.proto */ +static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); + /* decode_c_string_utf16.proto */ static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) { int byteorder = 0; @@ -2488,6 +2355,9 @@ static CYTHON_INLINE PyObject* __Pyx_decode_c_string( const char* encoding, const char* errors, PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)); +/* GetAttr3.proto */ +static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); + /* RaiseTooManyValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); @@ -2505,6 +2375,9 @@ static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject * static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); #endif +/* Import.proto */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + /* FastTypeChecks.proto */ #if CYTHON_COMPILING_IN_CPYTHON #define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) @@ -2557,26 +2430,15 @@ static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) { #endif } -/* ListAppend.proto */ -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { - PyListObject* L = (PyListObject*) list; - Py_ssize_t len = Py_SIZE(list); - if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { - Py_INCREF(x); - PyList_SET_ITEM(list, len, x); - __Pyx_SET_SIZE(list, len + 1); - return 0; - } - return PyList_Append(list, x); -} -#else -#define __Pyx_PyList_Append(L,x) PyList_Append(L,x) -#endif - /* None.proto */ static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); + +/* HasAttr.proto */ +static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); + /* PyObject_GenericGetAttrNoDict.proto */ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); @@ -2791,9 +2653,6 @@ static CYTHON_INLINE int resize_smart(arrayobject *self, Py_ssize_t n) { #define __Pyx_HAS_GCC_DIAGNOSTIC #endif -/* ToPyCTupleUtility.proto */ -static PyObject* __pyx_convert__to_py___pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T(__pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T); - /* TypeInfoCompare.proto */ static int __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b); @@ -2809,21 +2668,21 @@ static int __Pyx_ValidateAndInit_memviewslice( PyObject *original_obj); /* ObjectToMemviewSlice.proto */ -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_7_squish_FLOAT_T(PyObject *, int writable_flag); +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_6squish_4core_FLOAT_T(PyObject *, int writable_flag); /* ObjectToMemviewSlice.proto */ -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_7_squish_INT_T(PyObject *, int writable_flag); +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_6squish_4core_INT_T(PyObject *, int writable_flag); /* MemviewDtypeToObject.proto */ -static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_7_squish_INT_T(const char *itemp); -static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_7_squish_INT_T(const char *itemp, PyObject *obj); +static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_6squish_4core_INT_T(const char *itemp); +static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_6squish_4core_INT_T(const char *itemp, PyObject *obj); /* ObjectToMemviewSlice.proto */ -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_7_squish_FLOAT_T(PyObject *, int writable_flag); +static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_6squish_4core_FLOAT_T(PyObject *, int writable_flag); /* MemviewDtypeToObject.proto */ -static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_7_squish_FLOAT_T(const char *itemp); -static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_7_squish_FLOAT_T(const char *itemp, PyObject *obj); +static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_6squish_4core_FLOAT_T(const char *itemp); +static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_6squish_4core_FLOAT_T(const char *itemp, PyObject *obj); /* RealImag.proto */ #if CYTHON_CCOMPLEX @@ -2933,9 +2792,6 @@ __pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs, /* CIntFromPy.proto */ static CYTHON_INLINE npy_int64 __Pyx_PyInt_As_npy_int64(PyObject *); -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int64(npy_int64 value); @@ -2948,6 +2804,9 @@ static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); + /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); @@ -2957,26 +2816,26 @@ static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *); /* CheckBinaryVersion.proto */ static int __Pyx_check_binary_version(void); +/* VoidPtrExport.proto */ +static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig); + +/* FunctionExport.proto */ +static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); + +/* FunctionImport.proto */ +static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); + /* InitStrings.proto */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); -static void __pyx_f_7_squish_16VoronoiContainer_calculate_voronoi(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self, PyArrayObject *__pyx_v_site_arr); /* proto*/ -static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self); /* proto*/ -static void __pyx_f_7_squish_16VoronoiContainer_common_cache(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self); /* proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_16VoronoiContainer_calc_H(__pyx_t_7_squish_HalfEdge __pyx_v_em, __pyx_t_7_squish_HalfEdge __pyx_v_ep); /* proto*/ -static CYTHON_INLINE int __pyx_f_7_squish_16VoronoiContainer_sign(__Pyx_memviewslice __pyx_v_ref, __Pyx_memviewslice __pyx_v_p, __Pyx_memviewslice __pyx_v_q); /* proto*/ -static void __pyx_f_7_squish_16VoronoiContainer_precompute(CYTHON_UNUSED struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self); /* proto*/ -static void __pyx_f_7_squish_16VoronoiContainer_calc_grad(CYTHON_UNUSED struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self); /* proto*/ -static void __pyx_f_7_squish_16VoronoiContainer_get_statistics(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self); /* proto*/ -static void __pyx_f_7_squish_10AreaEnergy_precompute(struct __pyx_obj_7_squish_AreaEnergy *__pyx_v_self); /* proto*/ -static void __pyx_f_7_squish_10AreaEnergy_calc_grad(struct __pyx_obj_7_squish_AreaEnergy *__pyx_v_self); /* proto*/ -static void __pyx_f_7_squish_14RadialALEnergy_precompute(struct __pyx_obj_7_squish_RadialALEnergy *__pyx_v_self); /* proto*/ -static void __pyx_f_7_squish_14RadialALEnergy_calc_grad(struct __pyx_obj_7_squish_RadialALEnergy *__pyx_v_self); /* proto*/ -static void __pyx_f_7_squish_13RadialTEnergy_precompute(struct __pyx_obj_7_squish_RadialTEnergy *__pyx_v_self); /* proto*/ -static void __pyx_f_7_squish_13RadialTEnergy_calc_grad(struct __pyx_obj_7_squish_RadialTEnergy *__pyx_v_self); /* proto*/ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_4Calc_phi(__pyx_t_7_squish_HalfEdge __pyx_v_e); /* proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_4Calc_I2(__pyx_t_7_squish_HalfEdge __pyx_v_e, CYTHON_UNUSED __pyx_t_7_squish_FLOAT_T __pyx_v_r0, CYTHON_UNUSED __pyx_t_7_squish_FLOAT_T __pyx_v_t); /* proto*/ -static __pyx_t_7_squish_Vector2D __pyx_f_7_squish_4Calc_radialt_edge_grad(__pyx_t_7_squish_HalfEdge __pyx_v_e, __pyx_t_7_squish_Site __pyx_v_xi, __pyx_t_7_squish_FLOAT_T __pyx_v_r0); /* proto*/ +static void __pyx_f_6squish_7voronoi_16VoronoiContainer_calculate_voronoi(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self, PyArrayObject *__pyx_v_site_arr); /* proto*/ +static void __pyx_f_6squish_7voronoi_16VoronoiContainer_generate_dcel(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self); /* proto*/ +static void __pyx_f_6squish_7voronoi_16VoronoiContainer_common_cache(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self); /* proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_7voronoi_16VoronoiContainer_calc_H(__pyx_t_6squish_7voronoi_HalfEdge __pyx_v_em, __pyx_t_6squish_7voronoi_HalfEdge __pyx_v_ep); /* proto*/ +static CYTHON_INLINE int __pyx_f_6squish_7voronoi_16VoronoiContainer_sign(__Pyx_memviewslice __pyx_v_ref, __Pyx_memviewslice __pyx_v_p, __Pyx_memviewslice __pyx_v_q); /* proto*/ +static void __pyx_f_6squish_7voronoi_16VoronoiContainer_precompute(CYTHON_UNUSED struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self); /* proto*/ +static void __pyx_f_6squish_7voronoi_16VoronoiContainer_calc_grad(CYTHON_UNUSED struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self); /* proto*/ +static void __pyx_f_6squish_7voronoi_16VoronoiContainer_get_statistics(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self); /* proto*/ static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self); /* proto*/ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index); /* proto*/ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj); /* proto*/ @@ -3090,6 +2949,12 @@ static PyTypeObject *__pyx_ptype_5numpy_flexible = 0; static PyTypeObject *__pyx_ptype_5numpy_character = 0; static PyTypeObject *__pyx_ptype_5numpy_ufunc = 0; +/* Module declarations from 'squish.core' */ +static struct __pyx_t_6squish_4core_IArray (*__pyx_f_6squish_4core__IArray)(__pyx_t_6squish_4core_INT_T *, __pyx_t_6squish_4core_Pair); /*proto*/ +static __pyx_t_6squish_4core_FArray (*__pyx_f_6squish_4core__FArray)(__pyx_t_6squish_4core_FLOAT_T *, __pyx_t_6squish_4core_Pair); /*proto*/ +static __pyx_t_6squish_4core_Vector2D (*__pyx_f_6squish_4core__Vector2D)(__pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static __pyx_t_6squish_4core_Matrix2x2 (*__pyx_f_6squish_4core__Matrix2x2)(__pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ + /* Module declarations from 'array' */ /* Module declarations from 'cpython.array' */ @@ -3097,34 +2962,19 @@ static PyTypeObject *__pyx_ptype_7cpython_5array_array = 0; static CYTHON_INLINE arrayobject *__pyx_f_7cpython_5array_clone(arrayobject *, Py_ssize_t, int); /*proto*/ static CYTHON_INLINE int __pyx_f_7cpython_5array_extend_buffer(arrayobject *, char *, Py_ssize_t); /*proto*/ -/* Module declarations from 'libc.stdlib' */ - /* Module declarations from 'libc.math' */ -/* Module declarations from '_squish' */ -static PyTypeObject *__pyx_ptype_7_squish_VoronoiContainer = 0; -static PyTypeObject *__pyx_ptype_7_squish_AreaEnergy = 0; -static PyTypeObject *__pyx_ptype_7_squish_RadialALEnergy = 0; -static PyTypeObject *__pyx_ptype_7_squish_RadialTEnergy = 0; -static PyTypeObject *__pyx_ptype_7_squish_Calc = 0; +/* Module declarations from 'squish.voronoi' */ +static PyTypeObject *__pyx_ptype_6squish_7voronoi_VoronoiContainer = 0; static PyTypeObject *__pyx_array_type = 0; static PyTypeObject *__pyx_MemviewEnum_type = 0; static PyTypeObject *__pyx_memoryview_type = 0; static PyTypeObject *__pyx_memoryviewslice_type = 0; -static __pyx_t_7_squish_FLOAT_T __pyx_v_7_squish_TAU; -static __pyx_t_7_squish_INT_T __pyx_v_7_squish_EDGE_ARR_SIZE; -static struct __pyx_t_7_squish_Init __pyx_v_7_squish_init; -static __pyx_t_7_squish_VectorSelfOps __pyx_v_7_squish_VSO; -static __pyx_t_7_squish_VectorCopyOps __pyx_v_7_squish_VCO; -static __pyx_t_7_squish_MatrixSelfOps __pyx_v_7_squish_MSO; -static __pyx_t_7_squish_MatrixCopyOps __pyx_v_7_squish_MCO; -static __pyx_t_7_squish_Vector2D __pyx_v_7_squish_NAN_VECTOR; -static __pyx_t_7_squish_Matrix2x2 __pyx_v_7_squish_NAN_MATRIX; -static __pyx_t_7_squish_FLOAT_T __pyx_v_7_squish_SYMM[18]; -static __pyx_t_7_squish_Matrix2x2 __pyx_v_7_squish_R; -static __pyx_t_7_squish_SiteCacheMap __pyx_v_7_squish_SITE_CACHE_MAP; -static __pyx_t_7_squish_EdgeCacheMap __pyx_v_7_squish_AREA_EDGE_CACHE_MAP; -static __pyx_t_7_squish_EdgeCacheMap __pyx_v_7_squish_RADIALT_EDGE_CACHE_MAP; +static __pyx_t_6squish_4core_Vector2D __pyx_v_6squish_7voronoi_NAN_VECTOR; +static __pyx_t_6squish_4core_Matrix2x2 __pyx_v_6squish_7voronoi_R; +static __pyx_t_6squish_4core_Matrix2x2 __pyx_v_6squish_7voronoi_NAN_MATRIX; +static __pyx_t_6squish_4core_FLOAT_T __pyx_v_6squish_7voronoi_SYMM[18]; +static __pyx_t_6squish_7voronoi_SiteCacheMap __pyx_v_6squish_7voronoi_SITE_CACHE_MAP; static PyObject *generic = 0; static PyObject *strided = 0; static PyObject *indirect = 0; @@ -3132,100 +2982,39 @@ static PyObject *contiguous = 0; static PyObject *indirect_contiguous = 0; static int __pyx_memoryview_thread_locks_used; static PyThread_type_lock __pyx_memoryview_thread_locks[8]; -static CYTHON_INLINE struct __pyx_t_7_squish_IArray __pyx_f_7_squish_init_iarray(__pyx_t_7_squish_INT_T *, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_INT_T __pyx_f_7_squish_iarray_get(struct __pyx_t_7_squish_IArray *, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T); /*proto*/ -static CYTHON_INLINE void __pyx_f_7_squish_iarray_set(struct __pyx_t_7_squish_IArray *, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_FArray __pyx_f_7_squish_init_farray(__pyx_t_7_squish_FLOAT_T *, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_farray_get(__pyx_t_7_squish_FArray *, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T); /*proto*/ -static CYTHON_INLINE void __pyx_f_7_squish_farray_set(__pyx_t_7_squish_FArray *, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_BitSet __pyx_f_7_squish_init_bitset(__pyx_t_7_squish_INT_T); /*proto*/ -static CYTHON_INLINE int __pyx_f_7_squish_bitset_add(__pyx_t_7_squish_BitSet *, __pyx_t_7_squish_INT_T); /*proto*/ -static CYTHON_INLINE void __pyx_f_7_squish_bitset_free(__pyx_t_7_squish_BitSet *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_init_vector2d(__pyx_t_7_squish_FLOAT_T, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE int __pyx_f_7_squish_v_equals(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_neg_s(__pyx_t_7_squish_Vector2D *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_vadd_s(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_vsub_s(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_vmul_s(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_vdiv_s(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_sadd_s(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_ssub_s(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_smul_s(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_sdiv_s(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_matmul_s(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Matrix2x2); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_neg_c(__pyx_t_7_squish_Vector2D *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_vadd_c(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_vsub_c(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_vmul_c(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_vdiv_c(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_sadd_c(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_ssub_c(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_smul_c(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_sdiv_c(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_matmul_c(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Matrix2x2); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_rot(__pyx_t_7_squish_Vector2D *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_dot(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_mag(__pyx_t_7_squish_Vector2D *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_init_matrix2x2(__pyx_t_7_squish_FLOAT_T, __pyx_t_7_squish_FLOAT_T, __pyx_t_7_squish_FLOAT_T, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE int __pyx_f_7_squish_m_equals(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_m_vecmul(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Vector2D); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_neg_s(__pyx_t_7_squish_Matrix2x2 *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_madd_s(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_msub_s(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_mmul_s(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_mdiv_s(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_sadd_s(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_ssub_s(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_smul_s(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_sdiv_s(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_matmul_s(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_neg_c(__pyx_t_7_squish_Matrix2x2 *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_madd_c(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_msub_c(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_mmul_c(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_mdiv_c(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_sadd_c(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_ssub_c(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_smul_c(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_sdiv_c(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_matmul_c(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_SiteCacheMap __pyx_f_7_squish_init_sitecachemap(__pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_area(__pyx_t_7_squish_Site *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_perim(__pyx_t_7_squish_Site *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_isoparam(__pyx_t_7_squish_Site *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_energy(__pyx_t_7_squish_Site *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_avg_radius(__pyx_t_7_squish_Site *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_EdgeCacheMap __pyx_f_7_squish_init_edgecachemap(__pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_H(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Matrix2x2); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_la(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Vector2D); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_da(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Vector2D); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_xij(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Vector2D); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_dVdv(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Vector2D); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_i2p(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Vector2D); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_la_mag(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_da_mag(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_phi(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_B(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_F(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_lntan(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_csc(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_VoronoiInfo __pyx_f_7_squish_init_voronoiinfo(__Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __pyx_t_7_squish_EdgeCacheMap *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Site __pyx_f_7_squish_init_site(__pyx_t_7_squish_INT_T, __pyx_t_7_squish_VoronoiInfo *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_INT_T __pyx_f_7_squish_index(__pyx_t_7_squish_Site *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_vec(__pyx_t_7_squish_Site *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_HalfEdge __pyx_f_7_squish_edge(__pyx_t_7_squish_Site *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_INT_T __pyx_f_7_squish_edge_num(__pyx_t_7_squish_Site *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_HalfEdge __pyx_f_7_squish_init_halfedge(__pyx_t_7_squish_INT_T, __pyx_t_7_squish_VoronoiInfo *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_INT_T __pyx_f_7_squish_origin_index(__pyx_t_7_squish_HalfEdge *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_origin(__pyx_t_7_squish_HalfEdge *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Site __pyx_f_7_squish_face(__pyx_t_7_squish_HalfEdge *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_HalfEdge __pyx_f_7_squish_edge_next(__pyx_t_7_squish_HalfEdge *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_HalfEdge __pyx_f_7_squish_prev(__pyx_t_7_squish_HalfEdge *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_HalfEdge __pyx_f_7_squish_twin(__pyx_t_7_squish_HalfEdge *); /*proto*/ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_get_H(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Site); /*proto*/ -static PyObject *__pyx_f_7_squish___pyx_unpickle_Calc__set_state(struct __pyx_obj_7_squish_Calc *, PyObject *); /*proto*/ -static CYTHON_INLINE PyObject *__Pyx_carray_to_py___pyx_t_7_squish_FLOAT_T(__pyx_t_7_squish_FLOAT_T *, Py_ssize_t); /*proto*/ -static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple___pyx_t_7_squish_FLOAT_T(__pyx_t_7_squish_FLOAT_T *, Py_ssize_t); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_7voronoi_SiteCacheMap __pyx_f_6squish_7voronoi__SiteCacheMap(__pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_7voronoi_VoronoiInfo __pyx_f_6squish_7voronoi__VoronoiInfo(__Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __pyx_t_6squish_7voronoi_EdgeCacheMap *); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_7voronoi_Site __pyx_f_6squish_7voronoi__Site(__pyx_t_6squish_4core_INT_T, __pyx_t_6squish_7voronoi_VoronoiInfo *); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_7voronoi_HalfEdge __pyx_f_6squish_7voronoi__HalfEdge(__pyx_t_6squish_4core_INT_T, __pyx_t_6squish_7voronoi_VoronoiInfo *); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_7voronoi_area(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_7voronoi_perim(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_7voronoi_isoparam(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_7voronoi_energy(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_7voronoi_avg_radius(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_7voronoi_centroid(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_Vector2D); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_7voronoi_maxcenter(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_Vector2D); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_7voronoi_H(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Matrix2x2); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_7voronoi_la(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Vector2D); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_7voronoi_da(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Vector2D); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_7voronoi_xij(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Vector2D); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_7voronoi_dVdv(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Vector2D); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_7voronoi_la_mag(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_7voronoi_da_mag(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_7voronoi_area_p(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_7voronoi_calI(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_FLOAT_T); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_INT_T __pyx_f_6squish_7voronoi_index(__pyx_t_6squish_7voronoi_Site *); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_7voronoi_vec(__pyx_t_6squish_7voronoi_Site *); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_7voronoi_HalfEdge __pyx_f_6squish_7voronoi_edge(__pyx_t_6squish_7voronoi_Site *); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_INT_T __pyx_f_6squish_7voronoi_edge_num(__pyx_t_6squish_7voronoi_Site *); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_INT_T __pyx_f_6squish_7voronoi_origin_index(__pyx_t_6squish_7voronoi_HalfEdge *); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_7voronoi_origin(__pyx_t_6squish_7voronoi_HalfEdge *); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_7voronoi_Site __pyx_f_6squish_7voronoi_face(__pyx_t_6squish_7voronoi_HalfEdge *); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_7voronoi_HalfEdge __pyx_f_6squish_7voronoi_edge_next(__pyx_t_6squish_7voronoi_HalfEdge *); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_7voronoi_HalfEdge __pyx_f_6squish_7voronoi_prev(__pyx_t_6squish_7voronoi_HalfEdge *); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_7voronoi_HalfEdge __pyx_f_6squish_7voronoi_twin(__pyx_t_6squish_7voronoi_HalfEdge *); /*proto*/ +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_7voronoi_get_H(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_7voronoi_Site); /*proto*/ +static CYTHON_INLINE PyObject *__Pyx_carray_to_py___pyx_t_6squish_4core_FLOAT_T(__pyx_t_6squish_4core_FLOAT_T *, Py_ssize_t); /*proto*/ +static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple___pyx_t_6squish_4core_FLOAT_T(__pyx_t_6squish_4core_FLOAT_T *, Py_ssize_t); /*proto*/ static struct __pyx_array_obj *__pyx_array_new(PyObject *, Py_ssize_t, char *, char *, char *); /*proto*/ static void *__pyx_align_pointer(void *, size_t); /*proto*/ static PyObject *__pyx_memoryview_new(PyObject *, int, int, __Pyx_TypeInfo *); /*proto*/ @@ -3259,24 +3048,25 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *, Py_ssize_t *, Py_ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *, int, size_t, void *, int); /*proto*/ static void __pyx_memoryview__slice_assign_scalar(char *, Py_ssize_t *, Py_ssize_t *, int, size_t, void *); /*proto*/ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *, PyObject *); /*proto*/ -static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_7_squish_FLOAT_T = { "FLOAT_T", NULL, sizeof(__pyx_t_7_squish_FLOAT_T), { 0 }, 0, 'R', 0, 0 }; -static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_7_squish_INT_T = { "INT_T", NULL, sizeof(__pyx_t_7_squish_INT_T), { 0 }, 0, IS_UNSIGNED(__pyx_t_7_squish_INT_T) ? 'U' : 'I', IS_UNSIGNED(__pyx_t_7_squish_INT_T), 0 }; -#define __Pyx_MODULE_NAME "_squish" -extern int __pyx_module_is_main__squish; -int __pyx_module_is_main__squish = 0; +static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_6squish_4core_FLOAT_T = { "FLOAT_T", NULL, sizeof(__pyx_t_6squish_4core_FLOAT_T), { 0 }, 0, 'R', 0, 0 }; +static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_6squish_4core_INT_T = { "INT_T", NULL, sizeof(__pyx_t_6squish_4core_INT_T), { 0 }, 0, IS_UNSIGNED(__pyx_t_6squish_4core_INT_T) ? 'U' : 'I', IS_UNSIGNED(__pyx_t_6squish_4core_INT_T), 0 }; +#define __Pyx_MODULE_NAME "squish.voronoi" +extern int __pyx_module_is_main_squish__voronoi; +int __pyx_module_is_main_squish__voronoi = 0; -/* Implementation of '_squish' */ -static PyObject *__pyx_builtin_IndexError; +/* Implementation of 'squish.voronoi' */ static PyObject *__pyx_builtin_range; +static PyObject *__pyx_builtin_print; static PyObject *__pyx_builtin_TypeError; -static PyObject *__pyx_builtin_super; static PyObject *__pyx_builtin_ImportError; static PyObject *__pyx_builtin_MemoryError; static PyObject *__pyx_builtin_ValueError; static PyObject *__pyx_builtin_enumerate; static PyObject *__pyx_builtin_Ellipsis; static PyObject *__pyx_builtin_id; +static PyObject *__pyx_builtin_IndexError; static const char __pyx_k_O[] = "O"; +static const char __pyx_k_R[] = "R"; static const char __pyx_k_c[] = "c"; static const char __pyx_k_h[] = "h"; static const char __pyx_k_n[] = "n"; @@ -3285,19 +3075,16 @@ static const char __pyx_k_r[] = "r"; static const char __pyx_k_w[] = "w"; static const char __pyx_k_id[] = "id"; static const char __pyx_k_np[] = "np"; +static const char __pyx_k_Get[] = "Get: "; static const char __pyx_k_INT[] = "INT"; +static const char __pyx_k_New[] = "New: "; static const char __pyx_k_get[] = "get"; static const char __pyx_k_new[] = "__new__"; static const char __pyx_k_obj[] = "obj"; -static const char __pyx_k_Area[] = "Area"; -static const char __pyx_k_Calc[] = "Calc"; -static const char __pyx_k_area[] = "area"; static const char __pyx_k_base[] = "base"; static const char __pyx_k_copy[] = "copy"; static const char __pyx_k_dict[] = "__dict__"; static const char __pyx_k_flip[] = "flip"; -static const char __pyx_k_full[] = "full"; -static const char __pyx_k_init[] = "__init__"; static const char __pyx_k_isin[] = "isin"; static const char __pyx_k_main[] = "__main__"; static const char __pyx_k_mode[] = "mode"; @@ -3319,13 +3106,14 @@ static const char __pyx_k_error[] = "error"; static const char __pyx_k_flags[] = "flags"; static const char __pyx_k_int64[] = "int64"; static const char __pyx_k_numpy[] = "numpy"; +static const char __pyx_k_print[] = "print"; static const char __pyx_k_range[] = "range"; static const char __pyx_k_right[] = "right"; static const char __pyx_k_scipy[] = "scipy"; static const char __pyx_k_shape[] = "shape"; static const char __pyx_k_start[] = "start"; static const char __pyx_k_stats[] = "stats"; -static const char __pyx_k_super[] = "super"; +static const char __pyx_k_timer[] = "timer"; static const char __pyx_k_zeros[] = "zeros"; static const char __pyx_k_arange[] = "arange"; static const char __pyx_k_astype[] = "astype"; @@ -3337,8 +3125,8 @@ static const char __pyx_k_name_2[] = "__name__"; static const char __pyx_k_pickle[] = "pickle"; static const char __pyx_k_points[] = "points"; static const char __pyx_k_reduce[] = "__reduce__"; -static const char __pyx_k_squish[] = "_squish"; static const char __pyx_k_struct[] = "struct"; +static const char __pyx_k_timeit[] = "timeit"; static const char __pyx_k_unique[] = "unique"; static const char __pyx_k_unpack[] = "unpack"; static const char __pyx_k_update[] = "update"; @@ -3353,28 +3141,25 @@ static const char __pyx_k_regions[] = "regions"; static const char __pyx_k_reshape[] = "reshape"; static const char __pyx_k_spatial[] = "spatial"; static const char __pyx_k_Ellipsis[] = "Ellipsis"; -static const char __pyx_k_Radial_T[] = "Radial[T]"; -static const char __pyx_k_attr_str[] = "attr_str"; static const char __pyx_k_getstate[] = "__getstate__"; static const char __pyx_k_gradient[] = "gradient"; static const char __pyx_k_itemsize[] = "itemsize"; +static const char __pyx_k_pyx_capi[] = "__pyx_capi__"; static const char __pyx_k_pyx_type[] = "__pyx_type"; -static const char __pyx_k_radial_t[] = "radial-t"; static const char __pyx_k_setstate[] = "__setstate__"; static const char __pyx_k_site_arr[] = "site_arr"; static const char __pyx_k_vertices[] = "vertices"; -static const char __pyx_k_Radial_AL[] = "Radial[AL]"; static const char __pyx_k_TypeError[] = "TypeError"; static const char __pyx_k_add_sites[] = "add_sites"; +static const char __pyx_k_centroids[] = "centroids"; static const char __pyx_k_enumerate[] = "enumerate"; static const char __pyx_k_pyx_state[] = "__pyx_state"; -static const char __pyx_k_radial_al[] = "radial-al"; static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; static const char __pyx_k_scipy_vor[] = "scipy_vor"; static const char __pyx_k_site_isos[] = "site_isos"; -static const char __pyx_k_title_str[] = "title_str"; -static const char __pyx_k_AreaEnergy[] = "AreaEnergy"; static const char __pyx_k_IndexError[] = "IndexError"; +static const char __pyx_k_NAN_MATRIX[] = "NAN_MATRIX"; +static const char __pyx_k_NAN_VECTOR[] = "NAN_VECTOR"; static const char __pyx_k_ValueError[] = "ValueError"; static const char __pyx_k_avg_radius[] = "avg_radius"; static const char __pyx_k_pyx_result[] = "__pyx_result"; @@ -3389,12 +3174,11 @@ static const char __pyx_k_point_region[] = "point_region"; static const char __pyx_k_pyx_checksum[] = "__pyx_checksum"; static const char __pyx_k_searchsorted[] = "searchsorted"; static const char __pyx_k_stringsource[] = "stringsource"; -static const char __pyx_k_RadialTEnergy[] = "RadialTEnergy"; +static const char __pyx_k_default_timer[] = "default_timer"; static const char __pyx_k_pyx_getbuffer[] = "__pyx_getbuffer"; static const char __pyx_k_reduce_cython[] = "__reduce_cython__"; static const char __pyx_k_scipy_spatial[] = "scipy.spatial"; static const char __pyx_k_site_energies[] = "site_energies"; -static const char __pyx_k_RadialALEnergy[] = "RadialALEnergy"; static const char __pyx_k_View_MemoryView[] = "View.MemoryView"; static const char __pyx_k_allocate_buffer[] = "allocate_buffer"; static const char __pyx_k_dtype_is_object[] = "dtype_is_object"; @@ -3402,7 +3186,6 @@ static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError"; static const char __pyx_k_setstate_cython[] = "__setstate_cython__"; static const char __pyx_k_site_edge_count[] = "site_edge_count"; static const char __pyx_k_VoronoiContainer[] = "VoronoiContainer"; -static const char __pyx_k_pyx_unpickle_Calc[] = "__pyx_unpickle_Calc"; static const char __pyx_k_pyx_unpickle_Enum[] = "__pyx_unpickle_Enum"; static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; static const char __pyx_k_strided_and_direct[] = ""; @@ -3423,9 +3206,6 @@ static const char __pyx_k_Cannot_assign_to_read_only_memor[] = "Cannot assign to static const char __pyx_k_Cannot_create_writable_memory_vi[] = "Cannot create writable memory view from read-only memoryview"; static const char __pyx_k_Empty_shape_tuple_for_cython_arr[] = "Empty shape tuple for cython.array"; static const char __pyx_k_Incompatible_checksums_s_vs_0xb0[] = "Incompatible checksums (%s vs 0xb068931 = (name))"; -static const char __pyx_k_Incompatible_checksums_s_vs_0xd4[] = "Incompatible checksums (%s vs 0xd41d8cd = ())"; -static const char __pyx_k_Index_out_of_range_for_FArray_wi[] = "Index out of range for FArray with shape "; -static const char __pyx_k_Index_out_of_range_for_IArray_wi[] = "Index out of range for IArray with shape "; static const char __pyx_k_Indirect_dimensions_not_supporte[] = "Indirect dimensions not supported"; static const char __pyx_k_Invalid_mode_expected_c_or_fortr[] = "Invalid mode, expected 'c' or 'fortran', got %s"; static const char __pyx_k_Out_of_bounds_on_buffer_access_a[] = "Out of bounds on buffer access (axis %d)"; @@ -3436,10 +3216,7 @@ static const char __pyx_k_numpy_core_umath_failed_to_impor[] = "numpy.core.umath static const char __pyx_k_self_edge_cache_map_cannot_be_co[] = "self.edge_cache_map cannot be converted to a Python object for pickling"; static const char __pyx_k_unable_to_allocate_shape_and_str[] = "unable to allocate shape and strides."; static PyObject *__pyx_n_s_ASCII; -static PyObject *__pyx_n_u_Area; -static PyObject *__pyx_n_s_AreaEnergy; static PyObject *__pyx_kp_s_Buffer_view_does_not_expose_stri; -static PyObject *__pyx_n_s_Calc; static PyObject *__pyx_kp_s_Can_only_create_a_buffer_that_is; static PyObject *__pyx_kp_s_Cannot_assign_to_read_only_memor; static PyObject *__pyx_kp_s_Cannot_create_writable_memory_vi; @@ -3447,26 +3224,24 @@ static PyObject *__pyx_kp_s_Cannot_index_with_type_s; static PyObject *__pyx_n_s_Ellipsis; static PyObject *__pyx_kp_s_Empty_shape_tuple_for_cython_arr; static PyObject *__pyx_n_s_FLOAT; +static PyObject *__pyx_kp_u_Get; static PyObject *__pyx_n_s_INT; static PyObject *__pyx_n_s_ImportError; static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xb0; -static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xd4; static PyObject *__pyx_n_s_IndexError; -static PyObject *__pyx_kp_u_Index_out_of_range_for_FArray_wi; -static PyObject *__pyx_kp_u_Index_out_of_range_for_IArray_wi; static PyObject *__pyx_kp_s_Indirect_dimensions_not_supporte; static PyObject *__pyx_kp_s_Invalid_mode_expected_c_or_fortr; static PyObject *__pyx_kp_s_Invalid_shape_in_axis_d_d; static PyObject *__pyx_n_s_MemoryError; static PyObject *__pyx_kp_s_MemoryView_of_r_at_0x_x; static PyObject *__pyx_kp_s_MemoryView_of_r_object; +static PyObject *__pyx_n_s_NAN_MATRIX; +static PyObject *__pyx_n_s_NAN_VECTOR; +static PyObject *__pyx_kp_u_New; static PyObject *__pyx_n_b_O; static PyObject *__pyx_kp_s_Out_of_bounds_on_buffer_access_a; static PyObject *__pyx_n_s_PickleError; -static PyObject *__pyx_n_s_RadialALEnergy; -static PyObject *__pyx_n_s_RadialTEnergy; -static PyObject *__pyx_kp_u_Radial_AL; -static PyObject *__pyx_kp_u_Radial_T; +static PyObject *__pyx_n_s_R; static PyObject *__pyx_n_s_TypeError; static PyObject *__pyx_kp_s_Unable_to_convert_item_to_object; static PyObject *__pyx_n_s_ValueError; @@ -3476,20 +3251,20 @@ static PyObject *__pyx_n_s_VoronoiContainer; static PyObject *__pyx_n_s_add_sites; static PyObject *__pyx_n_s_allocate_buffer; static PyObject *__pyx_n_s_arange; -static PyObject *__pyx_n_u_area; static PyObject *__pyx_n_s_array; static PyObject *__pyx_n_s_asarray; static PyObject *__pyx_n_s_astype; -static PyObject *__pyx_n_s_attr_str; static PyObject *__pyx_n_u_avg_radius; static PyObject *__pyx_n_s_base; static PyObject *__pyx_n_s_c; static PyObject *__pyx_n_u_c; +static PyObject *__pyx_n_u_centroids; static PyObject *__pyx_n_s_class; static PyObject *__pyx_n_s_cline_in_traceback; static PyObject *__pyx_kp_s_contiguous_and_direct; static PyObject *__pyx_kp_s_contiguous_and_indirect; static PyObject *__pyx_n_s_copy; +static PyObject *__pyx_n_s_default_timer; static PyObject *__pyx_n_s_dict; static PyObject *__pyx_n_s_dtype; static PyObject *__pyx_n_s_dtype_is_object; @@ -3506,7 +3281,6 @@ static PyObject *__pyx_n_s_float64; static PyObject *__pyx_n_s_format; static PyObject *__pyx_n_s_fortran; static PyObject *__pyx_n_u_fortran; -static PyObject *__pyx_n_s_full; static PyObject *__pyx_n_s_get; static PyObject *__pyx_n_s_getstate; static PyObject *__pyx_kp_s_got_differing_extents_in_dimensi; @@ -3514,7 +3288,6 @@ static PyObject *__pyx_n_s_gradient; static PyObject *__pyx_n_s_h; static PyObject *__pyx_n_s_id; static PyObject *__pyx_n_s_import; -static PyObject *__pyx_n_s_init; static PyObject *__pyx_n_s_int64; static PyObject *__pyx_n_s_isin; static PyObject *__pyx_n_u_isoparam_avg; @@ -3539,19 +3312,18 @@ static PyObject *__pyx_n_s_pack; static PyObject *__pyx_n_s_pickle; static PyObject *__pyx_n_s_point_region; static PyObject *__pyx_n_s_points; +static PyObject *__pyx_n_s_print; static PyObject *__pyx_n_s_pyx_PickleError; +static PyObject *__pyx_n_s_pyx_capi; static PyObject *__pyx_n_s_pyx_checksum; static PyObject *__pyx_n_s_pyx_getbuffer; static PyObject *__pyx_n_s_pyx_result; static PyObject *__pyx_n_s_pyx_state; static PyObject *__pyx_n_s_pyx_type; -static PyObject *__pyx_n_s_pyx_unpickle_Calc; static PyObject *__pyx_n_s_pyx_unpickle_Enum; static PyObject *__pyx_n_s_pyx_vtable; static PyObject *__pyx_n_u_q; static PyObject *__pyx_n_s_r; -static PyObject *__pyx_kp_u_radial_al; -static PyObject *__pyx_kp_u_radial_t; static PyObject *__pyx_n_s_range; static PyObject *__pyx_n_s_reduce; static PyObject *__pyx_n_s_reduce_cython; @@ -3575,7 +3347,6 @@ static PyObject *__pyx_n_u_site_energies; static PyObject *__pyx_n_u_site_isos; static PyObject *__pyx_n_s_size; static PyObject *__pyx_n_s_spatial; -static PyObject *__pyx_n_s_squish; static PyObject *__pyx_n_s_start; static PyObject *__pyx_n_s_stats; static PyObject *__pyx_n_s_step; @@ -3585,9 +3356,9 @@ static PyObject *__pyx_kp_s_strided_and_direct_or_indirect; static PyObject *__pyx_kp_s_strided_and_indirect; static PyObject *__pyx_kp_s_stringsource; static PyObject *__pyx_n_s_struct; -static PyObject *__pyx_n_s_super; static PyObject *__pyx_n_s_test; -static PyObject *__pyx_n_s_title_str; +static PyObject *__pyx_n_s_timeit; +static PyObject *__pyx_n_s_timer; static PyObject *__pyx_kp_s_unable_to_allocate_array_data; static PyObject *__pyx_kp_s_unable_to_allocate_shape_and_str; static PyObject *__pyx_n_s_unique; @@ -3596,33 +3367,21 @@ static PyObject *__pyx_n_s_update; static PyObject *__pyx_n_s_vertices; static PyObject *__pyx_n_s_w; static PyObject *__pyx_n_s_zeros; -static int __pyx_pf_7_squish_16VoronoiContainer___init__(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self, __pyx_t_7_squish_INT_T __pyx_v_n, __pyx_t_7_squish_FLOAT_T __pyx_v_w, __pyx_t_7_squish_FLOAT_T __pyx_v_h, __pyx_t_7_squish_FLOAT_T __pyx_v_r, PyObject *__pyx_v_site_arr); /* proto */ -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_8site_arr___get__(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_8vor_data___get__(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_8gradient___get__(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_2add_sites(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self, PyObject *__pyx_v_add); /* proto */ -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_4iterate(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_step); /* proto */ -static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self, double __pyx_v_d); /* proto */ -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_1n___get__(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_1w___get__(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_1h___get__(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_1r___get__(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_6energy___get__(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -static int __pyx_pf_7_squish_10AreaEnergy___init__(struct __pyx_obj_7_squish_AreaEnergy *__pyx_v_self, __pyx_t_7_squish_INT_T __pyx_v_n, __pyx_t_7_squish_FLOAT_T __pyx_v_w, __pyx_t_7_squish_FLOAT_T __pyx_v_h, __pyx_t_7_squish_FLOAT_T __pyx_v_r, PyArrayObject *__pyx_v_site_arr); /* proto */ -static PyObject *__pyx_pf_7_squish_10AreaEnergy_7minimum___get__(struct __pyx_obj_7_squish_AreaEnergy *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_7_squish_10AreaEnergy_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_squish_AreaEnergy *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_7_squish_10AreaEnergy_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_squish_AreaEnergy *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -static int __pyx_pf_7_squish_14RadialALEnergy___init__(struct __pyx_obj_7_squish_RadialALEnergy *__pyx_v_self, __pyx_t_7_squish_INT_T __pyx_v_n, __pyx_t_7_squish_FLOAT_T __pyx_v_w, __pyx_t_7_squish_FLOAT_T __pyx_v_h, __pyx_t_7_squish_FLOAT_T __pyx_v_r, PyArrayObject *__pyx_v_site_arr); /* proto */ -static PyObject *__pyx_pf_7_squish_14RadialALEnergy_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_squish_RadialALEnergy *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_7_squish_14RadialALEnergy_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_squish_RadialALEnergy *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -static int __pyx_pf_7_squish_13RadialTEnergy___init__(struct __pyx_obj_7_squish_RadialTEnergy *__pyx_v_self, __pyx_t_7_squish_INT_T __pyx_v_n, __pyx_t_7_squish_FLOAT_T __pyx_v_w, __pyx_t_7_squish_FLOAT_T __pyx_v_h, __pyx_t_7_squish_FLOAT_T __pyx_v_r, PyArrayObject *__pyx_v_site_arr); /* proto */ -static PyObject *__pyx_pf_7_squish_13RadialTEnergy_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_squish_RadialTEnergy *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_7_squish_13RadialTEnergy_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_squish_RadialTEnergy *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_7_squish_4Calc___reduce_cython__(struct __pyx_obj_7_squish_Calc *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_7_squish_4Calc_2__setstate_cython__(struct __pyx_obj_7_squish_Calc *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_7_squish___pyx_unpickle_Calc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +static int __pyx_pf_6squish_7voronoi_16VoronoiContainer___init__(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self, __pyx_t_6squish_4core_INT_T __pyx_v_n, __pyx_t_6squish_4core_FLOAT_T __pyx_v_w, __pyx_t_6squish_4core_FLOAT_T __pyx_v_h, __pyx_t_6squish_4core_FLOAT_T __pyx_v_r, PyObject *__pyx_v_site_arr); /* proto */ +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_8site_arr___get__(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_8vor_data___get__(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_8gradient___get__(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_2add_sites(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self, PyObject *__pyx_v_add); /* proto */ +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_4iterate(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_step); /* proto */ +static PyArrayObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_6hessian(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self, double __pyx_v_d); /* proto */ +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_8site_vert_arr(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_1n___get__(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_1w___get__(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_1h___get__(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_1r___get__(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_6energy___get__(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_pf_7cpython_5array_5array___getbuffer__(arrayobject *__pyx_v_self, Py_buffer *__pyx_v_info, CYTHON_UNUSED int __pyx_v_flags); /* proto */ static void __pyx_pf_7cpython_5array_5array_2__releasebuffer__(CYTHON_UNUSED arrayobject *__pyx_v_self, Py_buffer *__pyx_v_info); /* proto */ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, PyObject *__pyx_v_format, PyObject *__pyx_v_mode, int __pyx_v_allocate_buffer); /* proto */ @@ -3667,11 +3426,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__ static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_tp_new_7_squish_VoronoiContainer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_7_squish_AreaEnergy(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_7_squish_RadialALEnergy(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_7_squish_RadialTEnergy(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_7_squish_Calc(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_6squish_7voronoi_VoronoiContainer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_array(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_memoryview(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ @@ -3683,9 +3438,9 @@ static PyObject *__pyx_int_2; static PyObject *__pyx_int_3; static PyObject *__pyx_int_4; static PyObject *__pyx_int_5; +static PyObject *__pyx_int_7; static PyObject *__pyx_int_9; static PyObject *__pyx_int_184977713; -static PyObject *__pyx_int_222419149; static PyObject *__pyx_int_neg_1; static PyObject *__pyx_tuple_; static PyObject *__pyx_slice__2; @@ -3717,3038 +3472,39 @@ static PyObject *__pyx_tuple__27; static PyObject *__pyx_tuple__28; static PyObject *__pyx_tuple__29; static PyObject *__pyx_tuple__30; -static PyObject *__pyx_tuple__31; -static PyObject *__pyx_tuple__33; -static PyObject *__pyx_tuple__34; -static PyObject *__pyx_tuple__35; -static PyObject *__pyx_tuple__36; -static PyObject *__pyx_tuple__37; -static PyObject *__pyx_tuple__38; -static PyObject *__pyx_codeobj__32; -static PyObject *__pyx_codeobj__39; +static PyObject *__pyx_codeobj__31; /* Late includes */ -/* "squish/_squish/core.pyx":61 - * #### IArray Methods #### - * - * cdef inline IArray init_iarray(INT_T* arr, (INT_T, INT_T) shape) nogil: # <<<<<<<<<<<<<< - * cdef IArray iarray - * iarray.arr, iarray.shape = arr, shape - */ - -static CYTHON_INLINE struct __pyx_t_7_squish_IArray __pyx_f_7_squish_init_iarray(__pyx_t_7_squish_INT_T *__pyx_v_arr, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_v_shape) { - struct __pyx_t_7_squish_IArray __pyx_v_iarray; - struct __pyx_t_7_squish_IArray __pyx_r; - __pyx_t_7_squish_INT_T *__pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; - - /* "squish/_squish/core.pyx":63 - * cdef inline IArray init_iarray(INT_T* arr, (INT_T, INT_T) shape) nogil: - * cdef IArray iarray - * iarray.arr, iarray.shape = arr, shape # <<<<<<<<<<<<<< - * - * iarray.get = iarray_get - */ - __pyx_t_1 = __pyx_v_arr; - __pyx_t_2 = __pyx_v_shape; - __pyx_v_iarray.arr = __pyx_t_1; - __pyx_v_iarray.shape = __pyx_t_2; - - /* "squish/_squish/core.pyx":65 - * iarray.arr, iarray.shape = arr, shape - * - * iarray.get = iarray_get # <<<<<<<<<<<<<< - * iarray.set = iarray_set - * return iarray - */ - __pyx_v_iarray.get = __pyx_f_7_squish_iarray_get; - - /* "squish/_squish/core.pyx":66 - * - * iarray.get = iarray_get - * iarray.set = iarray_set # <<<<<<<<<<<<<< - * return iarray - * - */ - __pyx_v_iarray.set = __pyx_f_7_squish_iarray_set; - - /* "squish/_squish/core.pyx":67 - * iarray.get = iarray_get - * iarray.set = iarray_set - * return iarray # <<<<<<<<<<<<<< - * - * cdef inline bint iarray_valid_indices(IArray* self, (INT_T, INT_T) index) nogil: - */ - __pyx_r = __pyx_v_iarray; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":61 - * #### IArray Methods #### - * - * cdef inline IArray init_iarray(INT_T* arr, (INT_T, INT_T) shape) nogil: # <<<<<<<<<<<<<< - * cdef IArray iarray - * iarray.arr, iarray.shape = arr, shape - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":69 - * return iarray - * - * cdef inline bint iarray_valid_indices(IArray* self, (INT_T, INT_T) index) nogil: # <<<<<<<<<<<<<< - * if index[0] > self.shape[0] or index[1] > self.shape[1]: - * with gil: - */ - -static CYTHON_INLINE int __pyx_f_7_squish_iarray_valid_indices(struct __pyx_t_7_squish_IArray *__pyx_v_self, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_v_index) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save; - #endif - __Pyx_RefNannySetupContext("iarray_valid_indices", 1); - - /* "squish/_squish/core.pyx":70 - * - * cdef inline bint iarray_valid_indices(IArray* self, (INT_T, INT_T) index) nogil: - * if index[0] > self.shape[0] or index[1] > self.shape[1]: # <<<<<<<<<<<<<< - * with gil: - * raise IndexError(f"Index out of range for IArray with shape {self.shape}") - */ - /*try:*/ { - __pyx_t_2 = ((__pyx_v_index.f0 > __pyx_v_self->shape.f0) != 0); - if (!__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L7_bool_binop_done; - } - __pyx_t_2 = ((__pyx_v_index.f1 > __pyx_v_self->shape.f1) != 0); - __pyx_t_1 = __pyx_t_2; - __pyx_L7_bool_binop_done:; - if (__pyx_t_1) { - - /* "squish/_squish/core.pyx":71 - * cdef inline bint iarray_valid_indices(IArray* self, (INT_T, INT_T) index) nogil: - * if index[0] > self.shape[0] or index[1] > self.shape[1]: - * with gil: # <<<<<<<<<<<<<< - * raise IndexError(f"Index out of range for IArray with shape {self.shape}") - * - */ - { - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - #endif - /*try:*/ { - - /* "squish/_squish/core.pyx":72 - * if index[0] > self.shape[0] or index[1] > self.shape[1]: - * with gil: - * raise IndexError(f"Index out of range for IArray with shape {self.shape}") # <<<<<<<<<<<<<< - * - * cdef inline INT_T iarray_get(IArray* self, (INT_T, INT_T) index) nogil: - */ - __pyx_t_3 = __pyx_convert__to_py___pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T(__pyx_v_self->shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 72, __pyx_L10_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 72, __pyx_L10_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Index_out_of_range_for_IArray_wi, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 72, __pyx_L10_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IndexError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 72, __pyx_L10_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 72, __pyx_L10_error) - } - - /* "squish/_squish/core.pyx":71 - * cdef inline bint iarray_valid_indices(IArray* self, (INT_T, INT_T) index) nogil: - * if index[0] > self.shape[0] or index[1] > self.shape[1]: - * with gil: # <<<<<<<<<<<<<< - * raise IndexError(f"Index out of range for IArray with shape {self.shape}") - * - */ - /*finally:*/ { - __pyx_L10_error: { - #ifdef WITH_THREAD - __Pyx_PyGILState_Release(__pyx_gilstate_save); - #endif - goto __pyx_L4_error; - } - } - } - - /* "squish/_squish/core.pyx":70 - * - * cdef inline bint iarray_valid_indices(IArray* self, (INT_T, INT_T) index) nogil: - * if index[0] > self.shape[0] or index[1] > self.shape[1]: # <<<<<<<<<<<<<< - * with gil: - * raise IndexError(f"Index out of range for IArray with shape {self.shape}") - */ - } - } - /*finally:*/ { - /*normal exit:*/{ - #ifdef WITH_THREAD - __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - #endif - goto __pyx_L5; - } - __pyx_L4_error: { - #ifdef WITH_THREAD - __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - #endif - goto __pyx_L1_error; - } - __pyx_L5:; - } - - /* "squish/_squish/core.pyx":69 - * return iarray - * - * cdef inline bint iarray_valid_indices(IArray* self, (INT_T, INT_T) index) nogil: # <<<<<<<<<<<<<< - * if index[0] > self.shape[0] or index[1] > self.shape[1]: - * with gil: - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_WriteUnraisable("_squish.iarray_valid_indices", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1); - __pyx_r = 0; - __pyx_L0:; - #ifdef WITH_THREAD - __Pyx_PyGILState_Release(__pyx_gilstate_save); - #endif - return __pyx_r; -} - -/* "squish/_squish/core.pyx":74 - * raise IndexError(f"Index out of range for IArray with shape {self.shape}") - * - * cdef inline INT_T iarray_get(IArray* self, (INT_T, INT_T) index) nogil: # <<<<<<<<<<<<<< - * #iarray_valid_indices(&self, index) - * return self.arr[index[0]*self.shape[1] + index[1]] - */ - -static CYTHON_INLINE __pyx_t_7_squish_INT_T __pyx_f_7_squish_iarray_get(struct __pyx_t_7_squish_IArray *__pyx_v_self, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_v_index) { - __pyx_t_7_squish_INT_T __pyx_r; - - /* "squish/_squish/core.pyx":76 - * cdef inline INT_T iarray_get(IArray* self, (INT_T, INT_T) index) nogil: - * #iarray_valid_indices(&self, index) - * return self.arr[index[0]*self.shape[1] + index[1]] # <<<<<<<<<<<<<< - * - * cdef inline void iarray_set(IArray* self, (INT_T, INT_T) index, INT_T val) nogil: - */ - __pyx_r = (__pyx_v_self->arr[((__pyx_v_index.f0 * __pyx_v_self->shape.f1) + __pyx_v_index.f1)]); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":74 - * raise IndexError(f"Index out of range for IArray with shape {self.shape}") - * - * cdef inline INT_T iarray_get(IArray* self, (INT_T, INT_T) index) nogil: # <<<<<<<<<<<<<< - * #iarray_valid_indices(&self, index) - * return self.arr[index[0]*self.shape[1] + index[1]] - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":78 - * return self.arr[index[0]*self.shape[1] + index[1]] - * - * cdef inline void iarray_set(IArray* self, (INT_T, INT_T) index, INT_T val) nogil: # <<<<<<<<<<<<<< - * #iarray_valid_indices(&self, index) - * self.arr[index[0]*self.shape[1] + index[1]] = val - */ - -static CYTHON_INLINE void __pyx_f_7_squish_iarray_set(struct __pyx_t_7_squish_IArray *__pyx_v_self, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_v_index, __pyx_t_7_squish_INT_T __pyx_v_val) { - - /* "squish/_squish/core.pyx":80 - * cdef inline void iarray_set(IArray* self, (INT_T, INT_T) index, INT_T val) nogil: - * #iarray_valid_indices(&self, index) - * self.arr[index[0]*self.shape[1] + index[1]] = val # <<<<<<<<<<<<<< - * - * - */ - (__pyx_v_self->arr[((__pyx_v_index.f0 * __pyx_v_self->shape.f1) + __pyx_v_index.f1)]) = __pyx_v_val; - - /* "squish/_squish/core.pyx":78 - * return self.arr[index[0]*self.shape[1] + index[1]] - * - * cdef inline void iarray_set(IArray* self, (INT_T, INT_T) index, INT_T val) nogil: # <<<<<<<<<<<<<< - * #iarray_valid_indices(&self, index) - * self.arr[index[0]*self.shape[1] + index[1]] = val - */ - - /* function exit code */ -} - -/* "squish/_squish/core.pyx":85 - * #### FArray Methods #### - * - * cdef inline FArray init_farray(FLOAT_T* arr, (INT_T, INT_T) shape) nogil: # <<<<<<<<<<<<<< - * cdef FArray farray - * farray.arr, farray.shape = arr, shape - */ - -static CYTHON_INLINE __pyx_t_7_squish_FArray __pyx_f_7_squish_init_farray(__pyx_t_7_squish_FLOAT_T *__pyx_v_arr, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_v_shape) { - __pyx_t_7_squish_FArray __pyx_v_farray; - __pyx_t_7_squish_FArray __pyx_r; - __pyx_t_7_squish_FLOAT_T *__pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; - - /* "squish/_squish/core.pyx":87 - * cdef inline FArray init_farray(FLOAT_T* arr, (INT_T, INT_T) shape) nogil: - * cdef FArray farray - * farray.arr, farray.shape = arr, shape # <<<<<<<<<<<<<< - * - * farray.get = farray_get - */ - __pyx_t_1 = __pyx_v_arr; - __pyx_t_2 = __pyx_v_shape; - __pyx_v_farray.arr = __pyx_t_1; - __pyx_v_farray.shape = __pyx_t_2; - - /* "squish/_squish/core.pyx":89 - * farray.arr, farray.shape = arr, shape - * - * farray.get = farray_get # <<<<<<<<<<<<<< - * farray.set = farray_set - * return farray - */ - __pyx_v_farray.get = __pyx_f_7_squish_farray_get; - - /* "squish/_squish/core.pyx":90 - * - * farray.get = farray_get - * farray.set = farray_set # <<<<<<<<<<<<<< - * return farray - * - */ - __pyx_v_farray.set = __pyx_f_7_squish_farray_set; - - /* "squish/_squish/core.pyx":91 - * farray.get = farray_get - * farray.set = farray_set - * return farray # <<<<<<<<<<<<<< - * - * cdef inline bint farray_valid_indices(FArray* self, (INT_T, INT_T) index) nogil: - */ - __pyx_r = __pyx_v_farray; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":85 - * #### FArray Methods #### - * - * cdef inline FArray init_farray(FLOAT_T* arr, (INT_T, INT_T) shape) nogil: # <<<<<<<<<<<<<< - * cdef FArray farray - * farray.arr, farray.shape = arr, shape - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":93 - * return farray - * - * cdef inline bint farray_valid_indices(FArray* self, (INT_T, INT_T) index) nogil: # <<<<<<<<<<<<<< - * if index[0] > self.shape[0] or index[1] > self.shape[1]: - * with gil: - */ - -static CYTHON_INLINE int __pyx_f_7_squish_farray_valid_indices(__pyx_t_7_squish_FArray *__pyx_v_self, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_v_index) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save; - #endif - __Pyx_RefNannySetupContext("farray_valid_indices", 1); - - /* "squish/_squish/core.pyx":94 - * - * cdef inline bint farray_valid_indices(FArray* self, (INT_T, INT_T) index) nogil: - * if index[0] > self.shape[0] or index[1] > self.shape[1]: # <<<<<<<<<<<<<< - * with gil: - * raise IndexError(f"Index out of range for FArray with shape {self.shape}") - */ - /*try:*/ { - __pyx_t_2 = ((__pyx_v_index.f0 > __pyx_v_self->shape.f0) != 0); - if (!__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L7_bool_binop_done; - } - __pyx_t_2 = ((__pyx_v_index.f1 > __pyx_v_self->shape.f1) != 0); - __pyx_t_1 = __pyx_t_2; - __pyx_L7_bool_binop_done:; - if (__pyx_t_1) { - - /* "squish/_squish/core.pyx":95 - * cdef inline bint farray_valid_indices(FArray* self, (INT_T, INT_T) index) nogil: - * if index[0] > self.shape[0] or index[1] > self.shape[1]: - * with gil: # <<<<<<<<<<<<<< - * raise IndexError(f"Index out of range for FArray with shape {self.shape}") - * - */ - { - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - #endif - /*try:*/ { - - /* "squish/_squish/core.pyx":96 - * if index[0] > self.shape[0] or index[1] > self.shape[1]: - * with gil: - * raise IndexError(f"Index out of range for FArray with shape {self.shape}") # <<<<<<<<<<<<<< - * - * cdef inline FLOAT_T farray_get(FArray* self, (INT_T, INT_T) index) nogil: - */ - __pyx_t_3 = __pyx_convert__to_py___pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T(__pyx_v_self->shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 96, __pyx_L10_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 96, __pyx_L10_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Index_out_of_range_for_FArray_wi, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 96, __pyx_L10_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IndexError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 96, __pyx_L10_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 96, __pyx_L10_error) - } - - /* "squish/_squish/core.pyx":95 - * cdef inline bint farray_valid_indices(FArray* self, (INT_T, INT_T) index) nogil: - * if index[0] > self.shape[0] or index[1] > self.shape[1]: - * with gil: # <<<<<<<<<<<<<< - * raise IndexError(f"Index out of range for FArray with shape {self.shape}") - * - */ - /*finally:*/ { - __pyx_L10_error: { - #ifdef WITH_THREAD - __Pyx_PyGILState_Release(__pyx_gilstate_save); - #endif - goto __pyx_L4_error; - } - } - } - - /* "squish/_squish/core.pyx":94 - * - * cdef inline bint farray_valid_indices(FArray* self, (INT_T, INT_T) index) nogil: - * if index[0] > self.shape[0] or index[1] > self.shape[1]: # <<<<<<<<<<<<<< - * with gil: - * raise IndexError(f"Index out of range for FArray with shape {self.shape}") - */ - } - } - /*finally:*/ { - /*normal exit:*/{ - #ifdef WITH_THREAD - __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - #endif - goto __pyx_L5; - } - __pyx_L4_error: { - #ifdef WITH_THREAD - __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - #endif - goto __pyx_L1_error; - } - __pyx_L5:; - } - - /* "squish/_squish/core.pyx":93 - * return farray - * - * cdef inline bint farray_valid_indices(FArray* self, (INT_T, INT_T) index) nogil: # <<<<<<<<<<<<<< - * if index[0] > self.shape[0] or index[1] > self.shape[1]: - * with gil: - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_WriteUnraisable("_squish.farray_valid_indices", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1); - __pyx_r = 0; - __pyx_L0:; - #ifdef WITH_THREAD - __Pyx_PyGILState_Release(__pyx_gilstate_save); - #endif - return __pyx_r; -} - -/* "squish/_squish/core.pyx":98 - * raise IndexError(f"Index out of range for FArray with shape {self.shape}") - * - * cdef inline FLOAT_T farray_get(FArray* self, (INT_T, INT_T) index) nogil: # <<<<<<<<<<<<<< - * #iarray_valid_indices(&self, index) - * return self.arr[index[0]*self.shape[1] + index[1]] - */ - -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_farray_get(__pyx_t_7_squish_FArray *__pyx_v_self, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_v_index) { - __pyx_t_7_squish_FLOAT_T __pyx_r; - - /* "squish/_squish/core.pyx":100 - * cdef inline FLOAT_T farray_get(FArray* self, (INT_T, INT_T) index) nogil: - * #iarray_valid_indices(&self, index) - * return self.arr[index[0]*self.shape[1] + index[1]] # <<<<<<<<<<<<<< - * - * cdef inline void farray_set(FArray* self, (INT_T, INT_T) index, FLOAT_T val) nogil: - */ - __pyx_r = (__pyx_v_self->arr[((__pyx_v_index.f0 * __pyx_v_self->shape.f1) + __pyx_v_index.f1)]); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":98 - * raise IndexError(f"Index out of range for FArray with shape {self.shape}") - * - * cdef inline FLOAT_T farray_get(FArray* self, (INT_T, INT_T) index) nogil: # <<<<<<<<<<<<<< - * #iarray_valid_indices(&self, index) - * return self.arr[index[0]*self.shape[1] + index[1]] - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":102 - * return self.arr[index[0]*self.shape[1] + index[1]] - * - * cdef inline void farray_set(FArray* self, (INT_T, INT_T) index, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * #iarray_valid_indices(&self, index) - * self.arr[index[0]*self.shape[1] + index[1]] = val - */ - -static CYTHON_INLINE void __pyx_f_7_squish_farray_set(__pyx_t_7_squish_FArray *__pyx_v_self, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_v_index, __pyx_t_7_squish_FLOAT_T __pyx_v_val) { - - /* "squish/_squish/core.pyx":104 - * cdef inline void farray_set(FArray* self, (INT_T, INT_T) index, FLOAT_T val) nogil: - * #iarray_valid_indices(&self, index) - * self.arr[index[0]*self.shape[1] + index[1]] = val # <<<<<<<<<<<<<< - * - * - */ - (__pyx_v_self->arr[((__pyx_v_index.f0 * __pyx_v_self->shape.f1) + __pyx_v_index.f1)]) = __pyx_v_val; - - /* "squish/_squish/core.pyx":102 - * return self.arr[index[0]*self.shape[1] + index[1]] - * - * cdef inline void farray_set(FArray* self, (INT_T, INT_T) index, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * #iarray_valid_indices(&self, index) - * self.arr[index[0]*self.shape[1] + index[1]] = val - */ - - /* function exit code */ -} - -/* "squish/_squish/core.pyx":132 - * #### BitSet Methods #### - * - * cdef inline BitSet init_bitset(INT_T elements) nogil: # <<<<<<<<<<<<<< - * cdef BitSet bitset - * bitset.bits = calloc(((elements/sizeof(INT_T))+1), sizeof(INT_T)) - */ - -static CYTHON_INLINE __pyx_t_7_squish_BitSet __pyx_f_7_squish_init_bitset(__pyx_t_7_squish_INT_T __pyx_v_elements) { - __pyx_t_7_squish_BitSet __pyx_v_bitset; - __pyx_t_7_squish_BitSet __pyx_r; - int (*__pyx_t_1)(__pyx_t_7_squish_BitSet *, __pyx_t_7_squish_INT_T); - void (*__pyx_t_2)(__pyx_t_7_squish_BitSet *); - - /* "squish/_squish/core.pyx":134 - * cdef inline BitSet init_bitset(INT_T elements) nogil: - * cdef BitSet bitset - * bitset.bits = calloc(((elements/sizeof(INT_T))+1), sizeof(INT_T)) # <<<<<<<<<<<<<< - * - * bitset.add, bitset.free = bitset_add, bitset_free - */ - __pyx_v_bitset.bits = ((__pyx_t_7_squish_INT_T *)calloc(((__pyx_v_elements / ((__pyx_t_7_squish_INT_T)(sizeof(__pyx_t_7_squish_INT_T)))) + 1), (sizeof(__pyx_t_7_squish_INT_T)))); - - /* "squish/_squish/core.pyx":136 - * bitset.bits = calloc(((elements/sizeof(INT_T))+1), sizeof(INT_T)) - * - * bitset.add, bitset.free = bitset_add, bitset_free # <<<<<<<<<<<<<< - * return bitset - * - */ - __pyx_t_1 = __pyx_f_7_squish_bitset_add; - __pyx_t_2 = __pyx_f_7_squish_bitset_free; - __pyx_v_bitset.add = __pyx_t_1; - __pyx_v_bitset.free = __pyx_t_2; - - /* "squish/_squish/core.pyx":137 - * - * bitset.add, bitset.free = bitset_add, bitset_free - * return bitset # <<<<<<<<<<<<<< - * - * cdef inline bint bitset_add(BitSet* self, INT_T val) nogil: - */ - __pyx_r = __pyx_v_bitset; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":132 - * #### BitSet Methods #### - * - * cdef inline BitSet init_bitset(INT_T elements) nogil: # <<<<<<<<<<<<<< - * cdef BitSet bitset - * bitset.bits = calloc(((elements/sizeof(INT_T))+1), sizeof(INT_T)) - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":139 - * return bitset - * - * cdef inline bint bitset_add(BitSet* self, INT_T val) nogil: # <<<<<<<<<<<<<< - * cdef INT_T index, rel_index, old - * index = val/sizeof(INT_T) - */ - -static CYTHON_INLINE int __pyx_f_7_squish_bitset_add(__pyx_t_7_squish_BitSet *__pyx_v_self, __pyx_t_7_squish_INT_T __pyx_v_val) { - __pyx_t_7_squish_INT_T __pyx_v_index; - __pyx_t_7_squish_INT_T __pyx_v_rel_index; - __pyx_t_7_squish_INT_T __pyx_v_old; - int __pyx_r; - - /* "squish/_squish/core.pyx":141 - * cdef inline bint bitset_add(BitSet* self, INT_T val) nogil: - * cdef INT_T index, rel_index, old - * index = val/sizeof(INT_T) # <<<<<<<<<<<<<< - * old = self.bits[index] - * rel_index = val - index*sizeof(INT_T) - */ - __pyx_v_index = (__pyx_v_val / ((__pyx_t_7_squish_INT_T)(sizeof(__pyx_t_7_squish_INT_T)))); - - /* "squish/_squish/core.pyx":142 - * cdef INT_T index, rel_index, old - * index = val/sizeof(INT_T) - * old = self.bits[index] # <<<<<<<<<<<<<< - * rel_index = val - index*sizeof(INT_T) - * - */ - __pyx_v_old = (__pyx_v_self->bits[__pyx_v_index]); - - /* "squish/_squish/core.pyx":143 - * index = val/sizeof(INT_T) - * old = self.bits[index] - * rel_index = val - index*sizeof(INT_T) # <<<<<<<<<<<<<< - * - * self.bits[index] = (1 << rel_index) | old # New value. - */ - __pyx_v_rel_index = (__pyx_v_val - (__pyx_v_index * (sizeof(__pyx_t_7_squish_INT_T)))); - - /* "squish/_squish/core.pyx":145 - * rel_index = val - index*sizeof(INT_T) - * - * self.bits[index] = (1 << rel_index) | old # New value. # <<<<<<<<<<<<<< - * - * return old == self.bits[index] # Means 1 was already there. - */ - (__pyx_v_self->bits[__pyx_v_index]) = ((1 << __pyx_v_rel_index) | __pyx_v_old); - - /* "squish/_squish/core.pyx":147 - * self.bits[index] = (1 << rel_index) | old # New value. - * - * return old == self.bits[index] # Means 1 was already there. # <<<<<<<<<<<<<< - * - * cdef inline void bitset_free(BitSet* self) nogil: - */ - __pyx_r = (__pyx_v_old == (__pyx_v_self->bits[__pyx_v_index])); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":139 - * return bitset - * - * cdef inline bint bitset_add(BitSet* self, INT_T val) nogil: # <<<<<<<<<<<<<< - * cdef INT_T index, rel_index, old - * index = val/sizeof(INT_T) - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":149 - * return old == self.bits[index] # Means 1 was already there. - * - * cdef inline void bitset_free(BitSet* self) nogil: # <<<<<<<<<<<<<< - * free(self.bits) - * - */ - -static CYTHON_INLINE void __pyx_f_7_squish_bitset_free(__pyx_t_7_squish_BitSet *__pyx_v_self) { - - /* "squish/_squish/core.pyx":150 - * - * cdef inline void bitset_free(BitSet* self) nogil: - * free(self.bits) # <<<<<<<<<<<<<< - * - * #### Vector2D Methods #### - */ - free(__pyx_v_self->bits); - - /* "squish/_squish/core.pyx":149 - * return old == self.bits[index] # Means 1 was already there. - * - * cdef inline void bitset_free(BitSet* self) nogil: # <<<<<<<<<<<<<< - * free(self.bits) - * - */ - - /* function exit code */ -} - -/* "squish/_squish/core.pyx":163 - * """ - * - * cdef inline Vector2D init_vector2d(FLOAT_T x, FLOAT_T y) nogil: # <<<<<<<<<<<<<< - * cdef Vector2D vec - * vec.x, vec.y = x, y - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_init_vector2d(__pyx_t_7_squish_FLOAT_T __pyx_v_x, __pyx_t_7_squish_FLOAT_T __pyx_v_y) { - __pyx_t_7_squish_Vector2D __pyx_v_vec; - __pyx_t_7_squish_Vector2D __pyx_r; - __pyx_t_7_squish_FLOAT_T __pyx_t_1; - __pyx_t_7_squish_FLOAT_T __pyx_t_2; - __pyx_t_7_squish_VectorSelfOps __pyx_t_3; - __pyx_t_7_squish_VectorCopyOps __pyx_t_4; - int (*__pyx_t_5)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_Vector2D (*__pyx_t_6)(__pyx_t_7_squish_Vector2D *); - __pyx_t_7_squish_FLOAT_T (*__pyx_t_7)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_FLOAT_T (*__pyx_t_8)(__pyx_t_7_squish_Vector2D *); - - /* "squish/_squish/core.pyx":165 - * cdef inline Vector2D init_vector2d(FLOAT_T x, FLOAT_T y) nogil: - * cdef Vector2D vec - * vec.x, vec.y = x, y # <<<<<<<<<<<<<< - * vec.self, vec.copy = VSO, VCO - * - */ - __pyx_t_1 = __pyx_v_x; - __pyx_t_2 = __pyx_v_y; - __pyx_v_vec.x = __pyx_t_1; - __pyx_v_vec.y = __pyx_t_2; - - /* "squish/_squish/core.pyx":166 - * cdef Vector2D vec - * vec.x, vec.y = x, y - * vec.self, vec.copy = VSO, VCO # <<<<<<<<<<<<<< - * - * vec.equals, vec.rot, vec.dot, vec.mag = v_equals, rot, dot, mag - */ - __pyx_t_3 = __pyx_v_7_squish_VSO; - __pyx_t_4 = __pyx_v_7_squish_VCO; - __pyx_v_vec.self = __pyx_t_3; - __pyx_v_vec.copy = __pyx_t_4; - - /* "squish/_squish/core.pyx":168 - * vec.self, vec.copy = VSO, VCO - * - * vec.equals, vec.rot, vec.dot, vec.mag = v_equals, rot, dot, mag # <<<<<<<<<<<<<< - * - * return vec - */ - __pyx_t_5 = __pyx_f_7_squish_v_equals; - __pyx_t_6 = __pyx_f_7_squish_rot; - __pyx_t_7 = __pyx_f_7_squish_dot; - __pyx_t_8 = __pyx_f_7_squish_mag; - __pyx_v_vec.equals = __pyx_t_5; - __pyx_v_vec.rot = __pyx_t_6; - __pyx_v_vec.dot = __pyx_t_7; - __pyx_v_vec.mag = __pyx_t_8; - - /* "squish/_squish/core.pyx":170 - * vec.equals, vec.rot, vec.dot, vec.mag = v_equals, rot, dot, mag - * - * return vec # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = __pyx_v_vec; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":163 - * """ - * - * cdef inline Vector2D init_vector2d(FLOAT_T x, FLOAT_T y) nogil: # <<<<<<<<<<<<<< - * cdef Vector2D vec - * vec.x, vec.y = x, y - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":173 - * - * - * cdef inline bint v_equals(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * return ((self.x == w.x) and (self.y == w.y)) - * - */ - -static CYTHON_INLINE int __pyx_f_7_squish_v_equals(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_Vector2D __pyx_v_w) { - int __pyx_r; - int __pyx_t_1; - int __pyx_t_2; - - /* "squish/_squish/core.pyx":174 - * - * cdef inline bint v_equals(Vector2D* self, Vector2D w) nogil: - * return ((self.x == w.x) and (self.y == w.y)) # <<<<<<<<<<<<<< - * - * cdef inline Vector2D* v_neg_s(Vector2D* self) nogil: - */ - __pyx_t_2 = ((__pyx_v_self->x == __pyx_v_w.x) != 0); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L3_bool_binop_done; - } - __pyx_t_2 = ((__pyx_v_self->y == __pyx_v_w.y) != 0); - __pyx_t_1 = __pyx_t_2; - __pyx_L3_bool_binop_done:; - __pyx_r = __pyx_t_1; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":173 - * - * - * cdef inline bint v_equals(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * return ((self.x == w.x) and (self.y == w.y)) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":176 - * return ((self.x == w.x) and (self.y == w.y)) - * - * cdef inline Vector2D* v_neg_s(Vector2D* self) nogil: # <<<<<<<<<<<<<< - * self.x = -self.x - * self.y = -self.y - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_neg_s(__pyx_t_7_squish_Vector2D *__pyx_v_self) { - __pyx_t_7_squish_Vector2D *__pyx_r; - - /* "squish/_squish/core.pyx":177 - * - * cdef inline Vector2D* v_neg_s(Vector2D* self) nogil: - * self.x = -self.x # <<<<<<<<<<<<<< - * self.y = -self.y - * return self - */ - __pyx_v_self->x = (-__pyx_v_self->x); - - /* "squish/_squish/core.pyx":178 - * cdef inline Vector2D* v_neg_s(Vector2D* self) nogil: - * self.x = -self.x - * self.y = -self.y # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_v_self->y = (-__pyx_v_self->y); - - /* "squish/_squish/core.pyx":179 - * self.x = -self.x - * self.y = -self.y - * return self # <<<<<<<<<<<<<< - * - * cdef inline Vector2D* v_vadd_s(Vector2D* self, Vector2D w) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":176 - * return ((self.x == w.x) and (self.y == w.y)) - * - * cdef inline Vector2D* v_neg_s(Vector2D* self) nogil: # <<<<<<<<<<<<<< - * self.x = -self.x - * self.y = -self.y - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":181 - * return self - * - * cdef inline Vector2D* v_vadd_s(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * self.x += w.x - * self.y += w.y - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_vadd_s(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_Vector2D __pyx_v_w) { - __pyx_t_7_squish_Vector2D *__pyx_r; - - /* "squish/_squish/core.pyx":182 - * - * cdef inline Vector2D* v_vadd_s(Vector2D* self, Vector2D w) nogil: - * self.x += w.x # <<<<<<<<<<<<<< - * self.y += w.y - * return self - */ - __pyx_v_self->x = (__pyx_v_self->x + __pyx_v_w.x); - - /* "squish/_squish/core.pyx":183 - * cdef inline Vector2D* v_vadd_s(Vector2D* self, Vector2D w) nogil: - * self.x += w.x - * self.y += w.y # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_v_self->y = (__pyx_v_self->y + __pyx_v_w.y); - - /* "squish/_squish/core.pyx":184 - * self.x += w.x - * self.y += w.y - * return self # <<<<<<<<<<<<<< - * - * cdef inline Vector2D* v_vsub_s(Vector2D* self, Vector2D w) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":181 - * return self - * - * cdef inline Vector2D* v_vadd_s(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * self.x += w.x - * self.y += w.y - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":186 - * return self - * - * cdef inline Vector2D* v_vsub_s(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * self.x -= w.x - * self.y -= w.y - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_vsub_s(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_Vector2D __pyx_v_w) { - __pyx_t_7_squish_Vector2D *__pyx_r; - - /* "squish/_squish/core.pyx":187 - * - * cdef inline Vector2D* v_vsub_s(Vector2D* self, Vector2D w) nogil: - * self.x -= w.x # <<<<<<<<<<<<<< - * self.y -= w.y - * return self - */ - __pyx_v_self->x = (__pyx_v_self->x - __pyx_v_w.x); - - /* "squish/_squish/core.pyx":188 - * cdef inline Vector2D* v_vsub_s(Vector2D* self, Vector2D w) nogil: - * self.x -= w.x - * self.y -= w.y # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_v_self->y = (__pyx_v_self->y - __pyx_v_w.y); - - /* "squish/_squish/core.pyx":189 - * self.x -= w.x - * self.y -= w.y - * return self # <<<<<<<<<<<<<< - * - * cdef inline Vector2D* v_vmul_s(Vector2D* self, Vector2D w) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":186 - * return self - * - * cdef inline Vector2D* v_vsub_s(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * self.x -= w.x - * self.y -= w.y - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":191 - * return self - * - * cdef inline Vector2D* v_vmul_s(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * self.x *= w.x - * self.y *= w.y - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_vmul_s(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_Vector2D __pyx_v_w) { - __pyx_t_7_squish_Vector2D *__pyx_r; - - /* "squish/_squish/core.pyx":192 - * - * cdef inline Vector2D* v_vmul_s(Vector2D* self, Vector2D w) nogil: - * self.x *= w.x # <<<<<<<<<<<<<< - * self.y *= w.y - * return self - */ - __pyx_v_self->x = (__pyx_v_self->x * __pyx_v_w.x); - - /* "squish/_squish/core.pyx":193 - * cdef inline Vector2D* v_vmul_s(Vector2D* self, Vector2D w) nogil: - * self.x *= w.x - * self.y *= w.y # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_v_self->y = (__pyx_v_self->y * __pyx_v_w.y); - - /* "squish/_squish/core.pyx":194 - * self.x *= w.x - * self.y *= w.y - * return self # <<<<<<<<<<<<<< - * - * cdef inline Vector2D* v_vdiv_s(Vector2D* self, Vector2D w) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":191 - * return self - * - * cdef inline Vector2D* v_vmul_s(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * self.x *= w.x - * self.y *= w.y - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":196 - * return self - * - * cdef inline Vector2D* v_vdiv_s(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * self.x /= w.x - * self.y /= w.y - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_vdiv_s(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_Vector2D __pyx_v_w) { - __pyx_t_7_squish_Vector2D *__pyx_r; - - /* "squish/_squish/core.pyx":197 - * - * cdef inline Vector2D* v_vdiv_s(Vector2D* self, Vector2D w) nogil: - * self.x /= w.x # <<<<<<<<<<<<<< - * self.y /= w.y - * return self - */ - __pyx_v_self->x = (__pyx_v_self->x / __pyx_v_w.x); - - /* "squish/_squish/core.pyx":198 - * cdef inline Vector2D* v_vdiv_s(Vector2D* self, Vector2D w) nogil: - * self.x /= w.x - * self.y /= w.y # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_v_self->y = (__pyx_v_self->y / __pyx_v_w.y); - - /* "squish/_squish/core.pyx":199 - * self.x /= w.x - * self.y /= w.y - * return self # <<<<<<<<<<<<<< - * - * cdef inline Vector2D* v_sadd_s(Vector2D* self, FLOAT_T s) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":196 - * return self - * - * cdef inline Vector2D* v_vdiv_s(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * self.x /= w.x - * self.y /= w.y - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":201 - * return self - * - * cdef inline Vector2D* v_sadd_s(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * self.x += s - * self.y += s - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_sadd_s(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_s) { - __pyx_t_7_squish_Vector2D *__pyx_r; - - /* "squish/_squish/core.pyx":202 - * - * cdef inline Vector2D* v_sadd_s(Vector2D* self, FLOAT_T s) nogil: - * self.x += s # <<<<<<<<<<<<<< - * self.y += s - * return self - */ - __pyx_v_self->x = (__pyx_v_self->x + __pyx_v_s); - - /* "squish/_squish/core.pyx":203 - * cdef inline Vector2D* v_sadd_s(Vector2D* self, FLOAT_T s) nogil: - * self.x += s - * self.y += s # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_v_self->y = (__pyx_v_self->y + __pyx_v_s); - - /* "squish/_squish/core.pyx":204 - * self.x += s - * self.y += s - * return self # <<<<<<<<<<<<<< - * - * cdef inline Vector2D* v_ssub_s(Vector2D* self, FLOAT_T s) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":201 - * return self - * - * cdef inline Vector2D* v_sadd_s(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * self.x += s - * self.y += s - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":206 - * return self - * - * cdef inline Vector2D* v_ssub_s(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * self.x -= s - * self.y -= s - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_ssub_s(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_s) { - __pyx_t_7_squish_Vector2D *__pyx_r; - - /* "squish/_squish/core.pyx":207 - * - * cdef inline Vector2D* v_ssub_s(Vector2D* self, FLOAT_T s) nogil: - * self.x -= s # <<<<<<<<<<<<<< - * self.y -= s - * return self - */ - __pyx_v_self->x = (__pyx_v_self->x - __pyx_v_s); - - /* "squish/_squish/core.pyx":208 - * cdef inline Vector2D* v_ssub_s(Vector2D* self, FLOAT_T s) nogil: - * self.x -= s - * self.y -= s # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_v_self->y = (__pyx_v_self->y - __pyx_v_s); - - /* "squish/_squish/core.pyx":209 - * self.x -= s - * self.y -= s - * return self # <<<<<<<<<<<<<< - * - * cdef inline Vector2D* v_smul_s(Vector2D* self, FLOAT_T s) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":206 - * return self - * - * cdef inline Vector2D* v_ssub_s(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * self.x -= s - * self.y -= s - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":211 - * return self - * - * cdef inline Vector2D* v_smul_s(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * self.x *= s - * self.y *= s - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_smul_s(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_s) { - __pyx_t_7_squish_Vector2D *__pyx_r; - - /* "squish/_squish/core.pyx":212 - * - * cdef inline Vector2D* v_smul_s(Vector2D* self, FLOAT_T s) nogil: - * self.x *= s # <<<<<<<<<<<<<< - * self.y *= s - * return self - */ - __pyx_v_self->x = (__pyx_v_self->x * __pyx_v_s); - - /* "squish/_squish/core.pyx":213 - * cdef inline Vector2D* v_smul_s(Vector2D* self, FLOAT_T s) nogil: - * self.x *= s - * self.y *= s # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_v_self->y = (__pyx_v_self->y * __pyx_v_s); - - /* "squish/_squish/core.pyx":214 - * self.x *= s - * self.y *= s - * return self # <<<<<<<<<<<<<< - * - * cdef inline Vector2D* v_sdiv_s(Vector2D* self, FLOAT_T s) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":211 - * return self - * - * cdef inline Vector2D* v_smul_s(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * self.x *= s - * self.y *= s - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":216 - * return self - * - * cdef inline Vector2D* v_sdiv_s(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * self.x /= s - * self.y /= s - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_sdiv_s(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_s) { - __pyx_t_7_squish_Vector2D *__pyx_r; - - /* "squish/_squish/core.pyx":217 - * - * cdef inline Vector2D* v_sdiv_s(Vector2D* self, FLOAT_T s) nogil: - * self.x /= s # <<<<<<<<<<<<<< - * self.y /= s - * return self - */ - __pyx_v_self->x = (__pyx_v_self->x / __pyx_v_s); - - /* "squish/_squish/core.pyx":218 - * cdef inline Vector2D* v_sdiv_s(Vector2D* self, FLOAT_T s) nogil: - * self.x /= s - * self.y /= s # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_v_self->y = (__pyx_v_self->y / __pyx_v_s); - - /* "squish/_squish/core.pyx":219 - * self.x /= s - * self.y /= s - * return self # <<<<<<<<<<<<<< - * - * cdef inline Vector2D* v_matmul_s(Vector2D* self, Matrix2x2 m) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":216 - * return self - * - * cdef inline Vector2D* v_sdiv_s(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * self.x /= s - * self.y /= s - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":221 - * return self - * - * cdef inline Vector2D* v_matmul_s(Vector2D* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * self.x, self.y = self.x*m.a + self.y*m.c, self.x*m.b + self.y*m.d - * return self - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D *__pyx_f_7_squish_v_matmul_s(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_Matrix2x2 __pyx_v_m) { - __pyx_t_7_squish_Vector2D *__pyx_r; - __pyx_t_7_squish_FLOAT_T __pyx_t_1; - __pyx_t_7_squish_FLOAT_T __pyx_t_2; - - /* "squish/_squish/core.pyx":222 - * - * cdef inline Vector2D* v_matmul_s(Vector2D* self, Matrix2x2 m) nogil: - * self.x, self.y = self.x*m.a + self.y*m.c, self.x*m.b + self.y*m.d # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_t_1 = ((__pyx_v_self->x * __pyx_v_m.a) + (__pyx_v_self->y * __pyx_v_m.c)); - __pyx_t_2 = ((__pyx_v_self->x * __pyx_v_m.b) + (__pyx_v_self->y * __pyx_v_m.d)); - __pyx_v_self->x = __pyx_t_1; - __pyx_v_self->y = __pyx_t_2; - - /* "squish/_squish/core.pyx":223 - * cdef inline Vector2D* v_matmul_s(Vector2D* self, Matrix2x2 m) nogil: - * self.x, self.y = self.x*m.a + self.y*m.c, self.x*m.b + self.y*m.d - * return self # <<<<<<<<<<<<<< - * - * cdef inline Vector2D v_neg_c(Vector2D* self) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":221 - * return self - * - * cdef inline Vector2D* v_matmul_s(Vector2D* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * self.x, self.y = self.x*m.a + self.y*m.c, self.x*m.b + self.y*m.d - * return self - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":225 - * return self - * - * cdef inline Vector2D v_neg_c(Vector2D* self) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(-self.x, -self.y) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_neg_c(__pyx_t_7_squish_Vector2D *__pyx_v_self) { - __pyx_t_7_squish_Vector2D __pyx_r; - - /* "squish/_squish/core.pyx":226 - * - * cdef inline Vector2D v_neg_c(Vector2D* self) nogil: - * return init.Vector2D(-self.x, -self.y) # <<<<<<<<<<<<<< - * - * cdef inline Vector2D v_vadd_c(Vector2D* self, Vector2D w) nogil: - */ - __pyx_r = __pyx_v_7_squish_init.Vector2D((-__pyx_v_self->x), (-__pyx_v_self->y)); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":225 - * return self - * - * cdef inline Vector2D v_neg_c(Vector2D* self) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(-self.x, -self.y) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":228 - * return init.Vector2D(-self.x, -self.y) - * - * cdef inline Vector2D v_vadd_c(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(self.x + w.x, self.y + w.y) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_vadd_c(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_Vector2D __pyx_v_w) { - __pyx_t_7_squish_Vector2D __pyx_r; - - /* "squish/_squish/core.pyx":229 - * - * cdef inline Vector2D v_vadd_c(Vector2D* self, Vector2D w) nogil: - * return init.Vector2D(self.x + w.x, self.y + w.y) # <<<<<<<<<<<<<< - * - * cdef inline Vector2D v_vsub_c(Vector2D* self, Vector2D w) nogil: - */ - __pyx_r = __pyx_v_7_squish_init.Vector2D((__pyx_v_self->x + __pyx_v_w.x), (__pyx_v_self->y + __pyx_v_w.y)); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":228 - * return init.Vector2D(-self.x, -self.y) - * - * cdef inline Vector2D v_vadd_c(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(self.x + w.x, self.y + w.y) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":231 - * return init.Vector2D(self.x + w.x, self.y + w.y) - * - * cdef inline Vector2D v_vsub_c(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(self.x - w.x, self.y - w.y) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_vsub_c(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_Vector2D __pyx_v_w) { - __pyx_t_7_squish_Vector2D __pyx_r; - - /* "squish/_squish/core.pyx":232 - * - * cdef inline Vector2D v_vsub_c(Vector2D* self, Vector2D w) nogil: - * return init.Vector2D(self.x - w.x, self.y - w.y) # <<<<<<<<<<<<<< - * - * cdef inline Vector2D v_vmul_c(Vector2D* self, Vector2D w) nogil: - */ - __pyx_r = __pyx_v_7_squish_init.Vector2D((__pyx_v_self->x - __pyx_v_w.x), (__pyx_v_self->y - __pyx_v_w.y)); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":231 - * return init.Vector2D(self.x + w.x, self.y + w.y) - * - * cdef inline Vector2D v_vsub_c(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(self.x - w.x, self.y - w.y) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":234 - * return init.Vector2D(self.x - w.x, self.y - w.y) - * - * cdef inline Vector2D v_vmul_c(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(self.x * w.x, self.y * w.y) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_vmul_c(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_Vector2D __pyx_v_w) { - __pyx_t_7_squish_Vector2D __pyx_r; - - /* "squish/_squish/core.pyx":235 - * - * cdef inline Vector2D v_vmul_c(Vector2D* self, Vector2D w) nogil: - * return init.Vector2D(self.x * w.x, self.y * w.y) # <<<<<<<<<<<<<< - * - * cdef inline Vector2D v_vdiv_c(Vector2D* self, Vector2D w) nogil: - */ - __pyx_r = __pyx_v_7_squish_init.Vector2D((__pyx_v_self->x * __pyx_v_w.x), (__pyx_v_self->y * __pyx_v_w.y)); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":234 - * return init.Vector2D(self.x - w.x, self.y - w.y) - * - * cdef inline Vector2D v_vmul_c(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(self.x * w.x, self.y * w.y) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":237 - * return init.Vector2D(self.x * w.x, self.y * w.y) - * - * cdef inline Vector2D v_vdiv_c(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(self.x / w.x, self.y / w.y) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_vdiv_c(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_Vector2D __pyx_v_w) { - __pyx_t_7_squish_Vector2D __pyx_r; - - /* "squish/_squish/core.pyx":238 - * - * cdef inline Vector2D v_vdiv_c(Vector2D* self, Vector2D w) nogil: - * return init.Vector2D(self.x / w.x, self.y / w.y) # <<<<<<<<<<<<<< - * - * cdef inline Vector2D v_sadd_c(Vector2D* self, FLOAT_T s) nogil: - */ - __pyx_r = __pyx_v_7_squish_init.Vector2D((__pyx_v_self->x / __pyx_v_w.x), (__pyx_v_self->y / __pyx_v_w.y)); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":237 - * return init.Vector2D(self.x * w.x, self.y * w.y) - * - * cdef inline Vector2D v_vdiv_c(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(self.x / w.x, self.y / w.y) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":240 - * return init.Vector2D(self.x / w.x, self.y / w.y) - * - * cdef inline Vector2D v_sadd_c(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(self.x + s, self.y + s) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_sadd_c(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_s) { - __pyx_t_7_squish_Vector2D __pyx_r; - - /* "squish/_squish/core.pyx":241 - * - * cdef inline Vector2D v_sadd_c(Vector2D* self, FLOAT_T s) nogil: - * return init.Vector2D(self.x + s, self.y + s) # <<<<<<<<<<<<<< - * - * cdef inline Vector2D v_ssub_c(Vector2D* self, FLOAT_T s) nogil: - */ - __pyx_r = __pyx_v_7_squish_init.Vector2D((__pyx_v_self->x + __pyx_v_s), (__pyx_v_self->y + __pyx_v_s)); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":240 - * return init.Vector2D(self.x / w.x, self.y / w.y) - * - * cdef inline Vector2D v_sadd_c(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(self.x + s, self.y + s) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":243 - * return init.Vector2D(self.x + s, self.y + s) - * - * cdef inline Vector2D v_ssub_c(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(self.x + s, self.y + s) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_ssub_c(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_s) { - __pyx_t_7_squish_Vector2D __pyx_r; - - /* "squish/_squish/core.pyx":244 - * - * cdef inline Vector2D v_ssub_c(Vector2D* self, FLOAT_T s) nogil: - * return init.Vector2D(self.x + s, self.y + s) # <<<<<<<<<<<<<< - * - * cdef inline Vector2D v_smul_c(Vector2D* self, FLOAT_T s) nogil: - */ - __pyx_r = __pyx_v_7_squish_init.Vector2D((__pyx_v_self->x + __pyx_v_s), (__pyx_v_self->y + __pyx_v_s)); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":243 - * return init.Vector2D(self.x + s, self.y + s) - * - * cdef inline Vector2D v_ssub_c(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(self.x + s, self.y + s) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":246 - * return init.Vector2D(self.x + s, self.y + s) - * - * cdef inline Vector2D v_smul_c(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(self.x * s, self.y * s) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_smul_c(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_s) { - __pyx_t_7_squish_Vector2D __pyx_r; - - /* "squish/_squish/core.pyx":247 - * - * cdef inline Vector2D v_smul_c(Vector2D* self, FLOAT_T s) nogil: - * return init.Vector2D(self.x * s, self.y * s) # <<<<<<<<<<<<<< - * - * cdef inline Vector2D v_sdiv_c(Vector2D* self, FLOAT_T s) nogil: - */ - __pyx_r = __pyx_v_7_squish_init.Vector2D((__pyx_v_self->x * __pyx_v_s), (__pyx_v_self->y * __pyx_v_s)); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":246 - * return init.Vector2D(self.x + s, self.y + s) - * - * cdef inline Vector2D v_smul_c(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(self.x * s, self.y * s) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":249 - * return init.Vector2D(self.x * s, self.y * s) - * - * cdef inline Vector2D v_sdiv_c(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(self.x / s, self.y / s) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_sdiv_c(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_s) { - __pyx_t_7_squish_Vector2D __pyx_r; - - /* "squish/_squish/core.pyx":250 - * - * cdef inline Vector2D v_sdiv_c(Vector2D* self, FLOAT_T s) nogil: - * return init.Vector2D(self.x / s, self.y / s) # <<<<<<<<<<<<<< - * - * cdef inline Vector2D v_matmul_c(Vector2D* self, Matrix2x2 m) nogil: - */ - __pyx_r = __pyx_v_7_squish_init.Vector2D((__pyx_v_self->x / __pyx_v_s), (__pyx_v_self->y / __pyx_v_s)); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":249 - * return init.Vector2D(self.x * s, self.y * s) - * - * cdef inline Vector2D v_sdiv_c(Vector2D* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(self.x / s, self.y / s) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":252 - * return init.Vector2D(self.x / s, self.y / s) - * - * cdef inline Vector2D v_matmul_c(Vector2D* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D( - * self.x*m.a + self.y*m.c, self.x*m.b + self.y*m.d - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_v_matmul_c(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_Matrix2x2 __pyx_v_m) { - __pyx_t_7_squish_Vector2D __pyx_r; - - /* "squish/_squish/core.pyx":253 - * - * cdef inline Vector2D v_matmul_c(Vector2D* self, Matrix2x2 m) nogil: - * return init.Vector2D( # <<<<<<<<<<<<<< - * self.x*m.a + self.y*m.c, self.x*m.b + self.y*m.d - * ) - */ - __pyx_r = __pyx_v_7_squish_init.Vector2D(((__pyx_v_self->x * __pyx_v_m.a) + (__pyx_v_self->y * __pyx_v_m.c)), ((__pyx_v_self->x * __pyx_v_m.b) + (__pyx_v_self->y * __pyx_v_m.d))); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":252 - * return init.Vector2D(self.x / s, self.y / s) - * - * cdef inline Vector2D v_matmul_c(Vector2D* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D( - * self.x*m.a + self.y*m.c, self.x*m.b + self.y*m.d - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":257 - * ) - * - * cdef inline Vector2D rot(Vector2D* self) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(-self.y, self.x) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_rot(__pyx_t_7_squish_Vector2D *__pyx_v_self) { - __pyx_t_7_squish_Vector2D __pyx_r; - - /* "squish/_squish/core.pyx":258 - * - * cdef inline Vector2D rot(Vector2D* self) nogil: - * return init.Vector2D(-self.y, self.x) # <<<<<<<<<<<<<< - * - * cdef inline FLOAT_T dot(Vector2D* self, Vector2D w) nogil: - */ - __pyx_r = __pyx_v_7_squish_init.Vector2D((-__pyx_v_self->y), __pyx_v_self->x); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":257 - * ) - * - * cdef inline Vector2D rot(Vector2D* self) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D(-self.y, self.x) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":260 - * return init.Vector2D(-self.y, self.x) - * - * cdef inline FLOAT_T dot(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * return self.x*w.x + self.y*w.y - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_dot(__pyx_t_7_squish_Vector2D *__pyx_v_self, __pyx_t_7_squish_Vector2D __pyx_v_w) { - __pyx_t_7_squish_FLOAT_T __pyx_r; - - /* "squish/_squish/core.pyx":261 - * - * cdef inline FLOAT_T dot(Vector2D* self, Vector2D w) nogil: - * return self.x*w.x + self.y*w.y # <<<<<<<<<<<<<< - * - * cdef inline FLOAT_T mag(Vector2D* self) nogil: - */ - __pyx_r = ((__pyx_v_self->x * __pyx_v_w.x) + (__pyx_v_self->y * __pyx_v_w.y)); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":260 - * return init.Vector2D(-self.y, self.x) - * - * cdef inline FLOAT_T dot(Vector2D* self, Vector2D w) nogil: # <<<<<<<<<<<<<< - * return self.x*w.x + self.y*w.y - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":263 - * return self.x*w.x + self.y*w.y - * - * cdef inline FLOAT_T mag(Vector2D* self) nogil: # <<<<<<<<<<<<<< - * return sqrt((self.x*self.x + self.y*self.y)) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_mag(__pyx_t_7_squish_Vector2D *__pyx_v_self) { - __pyx_t_7_squish_FLOAT_T __pyx_r; - - /* "squish/_squish/core.pyx":264 - * - * cdef inline FLOAT_T mag(Vector2D* self) nogil: - * return sqrt((self.x*self.x + self.y*self.y)) # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = ((__pyx_t_7_squish_FLOAT_T)sqrt(((double)((__pyx_v_self->x * __pyx_v_self->x) + (__pyx_v_self->y * __pyx_v_self->y))))); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":263 - * return self.x*w.x + self.y*w.y - * - * cdef inline FLOAT_T mag(Vector2D* self) nogil: # <<<<<<<<<<<<<< - * return sqrt((self.x*self.x + self.y*self.y)) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":269 - * #### Matrix2x2 Methods #### - * - * cdef inline Matrix2x2 init_matrix2x2(FLOAT_T a, FLOAT_T b, FLOAT_T c, FLOAT_T d) nogil: # <<<<<<<<<<<<<< - * cdef Matrix2x2 matrix - * matrix.a, matrix.b, matrix.c, matrix.d = a, b, c, d - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_init_matrix2x2(__pyx_t_7_squish_FLOAT_T __pyx_v_a, __pyx_t_7_squish_FLOAT_T __pyx_v_b, __pyx_t_7_squish_FLOAT_T __pyx_v_c, __pyx_t_7_squish_FLOAT_T __pyx_v_d) { - __pyx_t_7_squish_Matrix2x2 __pyx_v_matrix; - __pyx_t_7_squish_Matrix2x2 __pyx_r; - __pyx_t_7_squish_FLOAT_T __pyx_t_1; - __pyx_t_7_squish_FLOAT_T __pyx_t_2; - __pyx_t_7_squish_FLOAT_T __pyx_t_3; - __pyx_t_7_squish_FLOAT_T __pyx_t_4; - __pyx_t_7_squish_MatrixSelfOps __pyx_t_5; - __pyx_t_7_squish_MatrixCopyOps __pyx_t_6; - int (*__pyx_t_7)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); - __pyx_t_7_squish_Vector2D (*__pyx_t_8)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Vector2D); - - /* "squish/_squish/core.pyx":271 - * cdef inline Matrix2x2 init_matrix2x2(FLOAT_T a, FLOAT_T b, FLOAT_T c, FLOAT_T d) nogil: - * cdef Matrix2x2 matrix - * matrix.a, matrix.b, matrix.c, matrix.d = a, b, c, d # <<<<<<<<<<<<<< - * matrix.self, matrix.copy = MSO, MCO - * - */ - __pyx_t_1 = __pyx_v_a; - __pyx_t_2 = __pyx_v_b; - __pyx_t_3 = __pyx_v_c; - __pyx_t_4 = __pyx_v_d; - __pyx_v_matrix.a = __pyx_t_1; - __pyx_v_matrix.b = __pyx_t_2; - __pyx_v_matrix.c = __pyx_t_3; - __pyx_v_matrix.d = __pyx_t_4; - - /* "squish/_squish/core.pyx":272 - * cdef Matrix2x2 matrix - * matrix.a, matrix.b, matrix.c, matrix.d = a, b, c, d - * matrix.self, matrix.copy = MSO, MCO # <<<<<<<<<<<<<< - * - * matrix.equals, matrix.vecmul = m_equals, m_vecmul - */ - __pyx_t_5 = __pyx_v_7_squish_MSO; - __pyx_t_6 = __pyx_v_7_squish_MCO; - __pyx_v_matrix.self = __pyx_t_5; - __pyx_v_matrix.copy = __pyx_t_6; - - /* "squish/_squish/core.pyx":274 - * matrix.self, matrix.copy = MSO, MCO - * - * matrix.equals, matrix.vecmul = m_equals, m_vecmul # <<<<<<<<<<<<<< - * - * return matrix - */ - __pyx_t_7 = __pyx_f_7_squish_m_equals; - __pyx_t_8 = __pyx_f_7_squish_m_vecmul; - __pyx_v_matrix.equals = __pyx_t_7; - __pyx_v_matrix.vecmul = __pyx_t_8; - - /* "squish/_squish/core.pyx":276 - * matrix.equals, matrix.vecmul = m_equals, m_vecmul - * - * return matrix # <<<<<<<<<<<<<< - * - * cdef inline bint m_equals(Matrix2x2* self, Matrix2x2 m) nogil: - */ - __pyx_r = __pyx_v_matrix; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":269 - * #### Matrix2x2 Methods #### - * - * cdef inline Matrix2x2 init_matrix2x2(FLOAT_T a, FLOAT_T b, FLOAT_T c, FLOAT_T d) nogil: # <<<<<<<<<<<<<< - * cdef Matrix2x2 matrix - * matrix.a, matrix.b, matrix.c, matrix.d = a, b, c, d - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":278 - * return matrix - * - * cdef inline bint m_equals(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * return ( - * (self.a == m.a) and (self.b == m.b) and (self.c == m.c) and (self.d == m.d) - */ - -static CYTHON_INLINE int __pyx_f_7_squish_m_equals(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_Matrix2x2 __pyx_v_m) { - int __pyx_r; - int __pyx_t_1; - int __pyx_t_2; - - /* "squish/_squish/core.pyx":280 - * cdef inline bint m_equals(Matrix2x2* self, Matrix2x2 m) nogil: - * return ( - * (self.a == m.a) and (self.b == m.b) and (self.c == m.c) and (self.d == m.d) # <<<<<<<<<<<<<< - * ) - * - */ - __pyx_t_2 = ((__pyx_v_self->a == __pyx_v_m.a) != 0); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L3_bool_binop_done; - } - __pyx_t_2 = ((__pyx_v_self->b == __pyx_v_m.b) != 0); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L3_bool_binop_done; - } - __pyx_t_2 = ((__pyx_v_self->c == __pyx_v_m.c) != 0); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L3_bool_binop_done; - } - __pyx_t_2 = ((__pyx_v_self->d == __pyx_v_m.d) != 0); - __pyx_t_1 = __pyx_t_2; - __pyx_L3_bool_binop_done:; - __pyx_r = __pyx_t_1; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":278 - * return matrix - * - * cdef inline bint m_equals(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * return ( - * (self.a == m.a) and (self.b == m.b) and (self.c == m.c) and (self.d == m.d) - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":283 - * ) - * - * cdef inline Vector2D m_vecmul(Matrix2x2* self, Vector2D v) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D( - * self.a*v.x + self.b*v.y, self.c*v.x + self.d*v.y - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_m_vecmul(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_Vector2D __pyx_v_v) { - __pyx_t_7_squish_Vector2D __pyx_r; - - /* "squish/_squish/core.pyx":284 - * - * cdef inline Vector2D m_vecmul(Matrix2x2* self, Vector2D v) nogil: - * return init.Vector2D( # <<<<<<<<<<<<<< - * self.a*v.x + self.b*v.y, self.c*v.x + self.d*v.y - * ) - */ - __pyx_r = __pyx_v_7_squish_init.Vector2D(((__pyx_v_self->a * __pyx_v_v.x) + (__pyx_v_self->b * __pyx_v_v.y)), ((__pyx_v_self->c * __pyx_v_v.x) + (__pyx_v_self->d * __pyx_v_v.y))); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":283 - * ) - * - * cdef inline Vector2D m_vecmul(Matrix2x2* self, Vector2D v) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D( - * self.a*v.x + self.b*v.y, self.c*v.x + self.d*v.y - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":288 - * ) - * - * cdef inline Matrix2x2* m_neg_s(Matrix2x2* self) nogil: # <<<<<<<<<<<<<< - * self.a, self.b, self.c, self.d = -self.a, -self.b, -self.c, -self.d - * return self - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_neg_s(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self) { - __pyx_t_7_squish_Matrix2x2 *__pyx_r; - __pyx_t_7_squish_FLOAT_T __pyx_t_1; - __pyx_t_7_squish_FLOAT_T __pyx_t_2; - __pyx_t_7_squish_FLOAT_T __pyx_t_3; - __pyx_t_7_squish_FLOAT_T __pyx_t_4; - - /* "squish/_squish/core.pyx":289 - * - * cdef inline Matrix2x2* m_neg_s(Matrix2x2* self) nogil: - * self.a, self.b, self.c, self.d = -self.a, -self.b, -self.c, -self.d # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_t_1 = (-__pyx_v_self->a); - __pyx_t_2 = (-__pyx_v_self->b); - __pyx_t_3 = (-__pyx_v_self->c); - __pyx_t_4 = (-__pyx_v_self->d); - __pyx_v_self->a = __pyx_t_1; - __pyx_v_self->b = __pyx_t_2; - __pyx_v_self->c = __pyx_t_3; - __pyx_v_self->d = __pyx_t_4; - - /* "squish/_squish/core.pyx":290 - * cdef inline Matrix2x2* m_neg_s(Matrix2x2* self) nogil: - * self.a, self.b, self.c, self.d = -self.a, -self.b, -self.c, -self.d - * return self # <<<<<<<<<<<<<< - * - * cdef inline Matrix2x2* m_madd_s(Matrix2x2* self, Matrix2x2 m) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":288 - * ) - * - * cdef inline Matrix2x2* m_neg_s(Matrix2x2* self) nogil: # <<<<<<<<<<<<<< - * self.a, self.b, self.c, self.d = -self.a, -self.b, -self.c, -self.d - * return self - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":292 - * return self - * - * cdef inline Matrix2x2* m_madd_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * self.a += m.a - * self.b += m.b - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_madd_s(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_Matrix2x2 __pyx_v_m) { - __pyx_t_7_squish_Matrix2x2 *__pyx_r; - - /* "squish/_squish/core.pyx":293 - * - * cdef inline Matrix2x2* m_madd_s(Matrix2x2* self, Matrix2x2 m) nogil: - * self.a += m.a # <<<<<<<<<<<<<< - * self.b += m.b - * self.c += m.c - */ - __pyx_v_self->a = (__pyx_v_self->a + __pyx_v_m.a); - - /* "squish/_squish/core.pyx":294 - * cdef inline Matrix2x2* m_madd_s(Matrix2x2* self, Matrix2x2 m) nogil: - * self.a += m.a - * self.b += m.b # <<<<<<<<<<<<<< - * self.c += m.c - * self.d += m.d - */ - __pyx_v_self->b = (__pyx_v_self->b + __pyx_v_m.b); - - /* "squish/_squish/core.pyx":295 - * self.a += m.a - * self.b += m.b - * self.c += m.c # <<<<<<<<<<<<<< - * self.d += m.d - * return self - */ - __pyx_v_self->c = (__pyx_v_self->c + __pyx_v_m.c); - - /* "squish/_squish/core.pyx":296 - * self.b += m.b - * self.c += m.c - * self.d += m.d # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_v_self->d = (__pyx_v_self->d + __pyx_v_m.d); - - /* "squish/_squish/core.pyx":297 - * self.c += m.c - * self.d += m.d - * return self # <<<<<<<<<<<<<< - * - * cdef inline Matrix2x2* m_msub_s(Matrix2x2* self, Matrix2x2 m) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":292 - * return self - * - * cdef inline Matrix2x2* m_madd_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * self.a += m.a - * self.b += m.b - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":299 - * return self - * - * cdef inline Matrix2x2* m_msub_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * self.a -= m.a - * self.b -= m.b - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_msub_s(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_Matrix2x2 __pyx_v_m) { - __pyx_t_7_squish_Matrix2x2 *__pyx_r; - - /* "squish/_squish/core.pyx":300 - * - * cdef inline Matrix2x2* m_msub_s(Matrix2x2* self, Matrix2x2 m) nogil: - * self.a -= m.a # <<<<<<<<<<<<<< - * self.b -= m.b - * self.c -= m.c - */ - __pyx_v_self->a = (__pyx_v_self->a - __pyx_v_m.a); - - /* "squish/_squish/core.pyx":301 - * cdef inline Matrix2x2* m_msub_s(Matrix2x2* self, Matrix2x2 m) nogil: - * self.a -= m.a - * self.b -= m.b # <<<<<<<<<<<<<< - * self.c -= m.c - * self.d -= m.d - */ - __pyx_v_self->b = (__pyx_v_self->b - __pyx_v_m.b); - - /* "squish/_squish/core.pyx":302 - * self.a -= m.a - * self.b -= m.b - * self.c -= m.c # <<<<<<<<<<<<<< - * self.d -= m.d - * return self - */ - __pyx_v_self->c = (__pyx_v_self->c - __pyx_v_m.c); - - /* "squish/_squish/core.pyx":303 - * self.b -= m.b - * self.c -= m.c - * self.d -= m.d # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_v_self->d = (__pyx_v_self->d - __pyx_v_m.d); - - /* "squish/_squish/core.pyx":304 - * self.c -= m.c - * self.d -= m.d - * return self # <<<<<<<<<<<<<< - * - * cdef inline Matrix2x2* m_mmul_s(Matrix2x2* self, Matrix2x2 m) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":299 - * return self - * - * cdef inline Matrix2x2* m_msub_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * self.a -= m.a - * self.b -= m.b - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":306 - * return self - * - * cdef inline Matrix2x2* m_mmul_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * self.a *= m.a - * self.b *= m.b - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_mmul_s(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_Matrix2x2 __pyx_v_m) { - __pyx_t_7_squish_Matrix2x2 *__pyx_r; - - /* "squish/_squish/core.pyx":307 - * - * cdef inline Matrix2x2* m_mmul_s(Matrix2x2* self, Matrix2x2 m) nogil: - * self.a *= m.a # <<<<<<<<<<<<<< - * self.b *= m.b - * self.c *= m.c - */ - __pyx_v_self->a = (__pyx_v_self->a * __pyx_v_m.a); - - /* "squish/_squish/core.pyx":308 - * cdef inline Matrix2x2* m_mmul_s(Matrix2x2* self, Matrix2x2 m) nogil: - * self.a *= m.a - * self.b *= m.b # <<<<<<<<<<<<<< - * self.c *= m.c - * self.d *= m.d - */ - __pyx_v_self->b = (__pyx_v_self->b * __pyx_v_m.b); - - /* "squish/_squish/core.pyx":309 - * self.a *= m.a - * self.b *= m.b - * self.c *= m.c # <<<<<<<<<<<<<< - * self.d *= m.d - * return self - */ - __pyx_v_self->c = (__pyx_v_self->c * __pyx_v_m.c); - - /* "squish/_squish/core.pyx":310 - * self.b *= m.b - * self.c *= m.c - * self.d *= m.d # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_v_self->d = (__pyx_v_self->d * __pyx_v_m.d); - - /* "squish/_squish/core.pyx":311 - * self.c *= m.c - * self.d *= m.d - * return self # <<<<<<<<<<<<<< - * - * cdef inline Matrix2x2* m_mdiv_s(Matrix2x2* self, Matrix2x2 m) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":306 - * return self - * - * cdef inline Matrix2x2* m_mmul_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * self.a *= m.a - * self.b *= m.b - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":313 - * return self - * - * cdef inline Matrix2x2* m_mdiv_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * self.a /= m.a - * self.b /= m.b - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_mdiv_s(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_Matrix2x2 __pyx_v_m) { - __pyx_t_7_squish_Matrix2x2 *__pyx_r; - - /* "squish/_squish/core.pyx":314 - * - * cdef inline Matrix2x2* m_mdiv_s(Matrix2x2* self, Matrix2x2 m) nogil: - * self.a /= m.a # <<<<<<<<<<<<<< - * self.b /= m.b - * self.c /= m.c - */ - __pyx_v_self->a = (__pyx_v_self->a / __pyx_v_m.a); - - /* "squish/_squish/core.pyx":315 - * cdef inline Matrix2x2* m_mdiv_s(Matrix2x2* self, Matrix2x2 m) nogil: - * self.a /= m.a - * self.b /= m.b # <<<<<<<<<<<<<< - * self.c /= m.c - * self.d /= m.d - */ - __pyx_v_self->b = (__pyx_v_self->b / __pyx_v_m.b); - - /* "squish/_squish/core.pyx":316 - * self.a /= m.a - * self.b /= m.b - * self.c /= m.c # <<<<<<<<<<<<<< - * self.d /= m.d - * return self - */ - __pyx_v_self->c = (__pyx_v_self->c / __pyx_v_m.c); - - /* "squish/_squish/core.pyx":317 - * self.b /= m.b - * self.c /= m.c - * self.d /= m.d # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_v_self->d = (__pyx_v_self->d / __pyx_v_m.d); - - /* "squish/_squish/core.pyx":318 - * self.c /= m.c - * self.d /= m.d - * return self # <<<<<<<<<<<<<< - * - * cdef inline Matrix2x2* m_sadd_s(Matrix2x2* self, FLOAT_T s) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":313 - * return self - * - * cdef inline Matrix2x2* m_mdiv_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * self.a /= m.a - * self.b /= m.b - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":320 - * return self - * - * cdef inline Matrix2x2* m_sadd_s(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * self.a += s - * self.b += s - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_sadd_s(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_s) { - __pyx_t_7_squish_Matrix2x2 *__pyx_r; - - /* "squish/_squish/core.pyx":321 - * - * cdef inline Matrix2x2* m_sadd_s(Matrix2x2* self, FLOAT_T s) nogil: - * self.a += s # <<<<<<<<<<<<<< - * self.b += s - * self.c += s - */ - __pyx_v_self->a = (__pyx_v_self->a + __pyx_v_s); - - /* "squish/_squish/core.pyx":322 - * cdef inline Matrix2x2* m_sadd_s(Matrix2x2* self, FLOAT_T s) nogil: - * self.a += s - * self.b += s # <<<<<<<<<<<<<< - * self.c += s - * self.d += s - */ - __pyx_v_self->b = (__pyx_v_self->b + __pyx_v_s); - - /* "squish/_squish/core.pyx":323 - * self.a += s - * self.b += s - * self.c += s # <<<<<<<<<<<<<< - * self.d += s - * return self - */ - __pyx_v_self->c = (__pyx_v_self->c + __pyx_v_s); - - /* "squish/_squish/core.pyx":324 - * self.b += s - * self.c += s - * self.d += s # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_v_self->d = (__pyx_v_self->d + __pyx_v_s); - - /* "squish/_squish/core.pyx":325 - * self.c += s - * self.d += s - * return self # <<<<<<<<<<<<<< - * - * cdef inline Matrix2x2* m_ssub_s(Matrix2x2* self, FLOAT_T s) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":320 - * return self - * - * cdef inline Matrix2x2* m_sadd_s(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * self.a += s - * self.b += s - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":327 - * return self - * - * cdef inline Matrix2x2* m_ssub_s(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * self.a -= s - * self.b -= s - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_ssub_s(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_s) { - __pyx_t_7_squish_Matrix2x2 *__pyx_r; - - /* "squish/_squish/core.pyx":328 - * - * cdef inline Matrix2x2* m_ssub_s(Matrix2x2* self, FLOAT_T s) nogil: - * self.a -= s # <<<<<<<<<<<<<< - * self.b -= s - * self.c -= s - */ - __pyx_v_self->a = (__pyx_v_self->a - __pyx_v_s); - - /* "squish/_squish/core.pyx":329 - * cdef inline Matrix2x2* m_ssub_s(Matrix2x2* self, FLOAT_T s) nogil: - * self.a -= s - * self.b -= s # <<<<<<<<<<<<<< - * self.c -= s - * self.d -= s - */ - __pyx_v_self->b = (__pyx_v_self->b - __pyx_v_s); - - /* "squish/_squish/core.pyx":330 - * self.a -= s - * self.b -= s - * self.c -= s # <<<<<<<<<<<<<< - * self.d -= s - * return self - */ - __pyx_v_self->c = (__pyx_v_self->c - __pyx_v_s); - - /* "squish/_squish/core.pyx":331 - * self.b -= s - * self.c -= s - * self.d -= s # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_v_self->d = (__pyx_v_self->d - __pyx_v_s); - - /* "squish/_squish/core.pyx":332 - * self.c -= s - * self.d -= s - * return self # <<<<<<<<<<<<<< - * - * cdef inline Matrix2x2* m_smul_s(Matrix2x2* self, FLOAT_T s) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":327 - * return self - * - * cdef inline Matrix2x2* m_ssub_s(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * self.a -= s - * self.b -= s - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":334 - * return self - * - * cdef inline Matrix2x2* m_smul_s(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * self.a *= s - * self.b *= s - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_smul_s(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_s) { - __pyx_t_7_squish_Matrix2x2 *__pyx_r; - - /* "squish/_squish/core.pyx":335 - * - * cdef inline Matrix2x2* m_smul_s(Matrix2x2* self, FLOAT_T s) nogil: - * self.a *= s # <<<<<<<<<<<<<< - * self.b *= s - * self.c *= s - */ - __pyx_v_self->a = (__pyx_v_self->a * __pyx_v_s); - - /* "squish/_squish/core.pyx":336 - * cdef inline Matrix2x2* m_smul_s(Matrix2x2* self, FLOAT_T s) nogil: - * self.a *= s - * self.b *= s # <<<<<<<<<<<<<< - * self.c *= s - * self.d *= s - */ - __pyx_v_self->b = (__pyx_v_self->b * __pyx_v_s); - - /* "squish/_squish/core.pyx":337 - * self.a *= s - * self.b *= s - * self.c *= s # <<<<<<<<<<<<<< - * self.d *= s - * return self - */ - __pyx_v_self->c = (__pyx_v_self->c * __pyx_v_s); - - /* "squish/_squish/core.pyx":338 - * self.b *= s - * self.c *= s - * self.d *= s # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_v_self->d = (__pyx_v_self->d * __pyx_v_s); - - /* "squish/_squish/core.pyx":339 - * self.c *= s - * self.d *= s - * return self # <<<<<<<<<<<<<< - * - * cdef inline Matrix2x2* m_sdiv_s(Matrix2x2* self, FLOAT_T s) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":334 - * return self - * - * cdef inline Matrix2x2* m_smul_s(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * self.a *= s - * self.b *= s - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":341 - * return self - * - * cdef inline Matrix2x2* m_sdiv_s(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * self.a /= s - * self.b /= s - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_sdiv_s(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_s) { - __pyx_t_7_squish_Matrix2x2 *__pyx_r; - - /* "squish/_squish/core.pyx":342 - * - * cdef inline Matrix2x2* m_sdiv_s(Matrix2x2* self, FLOAT_T s) nogil: - * self.a /= s # <<<<<<<<<<<<<< - * self.b /= s - * self.c /= s - */ - __pyx_v_self->a = (__pyx_v_self->a / __pyx_v_s); - - /* "squish/_squish/core.pyx":343 - * cdef inline Matrix2x2* m_sdiv_s(Matrix2x2* self, FLOAT_T s) nogil: - * self.a /= s - * self.b /= s # <<<<<<<<<<<<<< - * self.c /= s - * self.d /= s - */ - __pyx_v_self->b = (__pyx_v_self->b / __pyx_v_s); - - /* "squish/_squish/core.pyx":344 - * self.a /= s - * self.b /= s - * self.c /= s # <<<<<<<<<<<<<< - * self.d /= s - * return self - */ - __pyx_v_self->c = (__pyx_v_self->c / __pyx_v_s); - - /* "squish/_squish/core.pyx":345 - * self.b /= s - * self.c /= s - * self.d /= s # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_v_self->d = (__pyx_v_self->d / __pyx_v_s); - - /* "squish/_squish/core.pyx":346 - * self.c /= s - * self.d /= s - * return self # <<<<<<<<<<<<<< - * - * cdef inline Matrix2x2* m_matmul_s(Matrix2x2* self, Matrix2x2 m) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":341 - * return self - * - * cdef inline Matrix2x2* m_sdiv_s(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * self.a /= s - * self.b /= s - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":348 - * return self - * - * cdef inline Matrix2x2* m_matmul_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * self.a, self.b, self.c, self.d = \ - * self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, \ - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 *__pyx_f_7_squish_m_matmul_s(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_Matrix2x2 __pyx_v_m) { - __pyx_t_7_squish_Matrix2x2 *__pyx_r; - __pyx_t_7_squish_FLOAT_T __pyx_t_1; - __pyx_t_7_squish_FLOAT_T __pyx_t_2; - __pyx_t_7_squish_FLOAT_T __pyx_t_3; - __pyx_t_7_squish_FLOAT_T __pyx_t_4; - - /* "squish/_squish/core.pyx":350 - * cdef inline Matrix2x2* m_matmul_s(Matrix2x2* self, Matrix2x2 m) nogil: - * self.a, self.b, self.c, self.d = \ - * self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, \ # <<<<<<<<<<<<<< - * self.c*m.a + self.d*m.c, self.c*m.b + self.d*m.d - * return self - */ - __pyx_t_1 = ((__pyx_v_self->a * __pyx_v_m.a) + (__pyx_v_self->b * __pyx_v_m.c)); - __pyx_t_2 = ((__pyx_v_self->a * __pyx_v_m.b) + (__pyx_v_self->b * __pyx_v_m.d)); - - /* "squish/_squish/core.pyx":351 - * self.a, self.b, self.c, self.d = \ - * self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, \ - * self.c*m.a + self.d*m.c, self.c*m.b + self.d*m.d # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_t_3 = ((__pyx_v_self->c * __pyx_v_m.a) + (__pyx_v_self->d * __pyx_v_m.c)); - __pyx_t_4 = ((__pyx_v_self->c * __pyx_v_m.b) + (__pyx_v_self->d * __pyx_v_m.d)); - - /* "squish/_squish/core.pyx":349 - * - * cdef inline Matrix2x2* m_matmul_s(Matrix2x2* self, Matrix2x2 m) nogil: - * self.a, self.b, self.c, self.d = \ # <<<<<<<<<<<<<< - * self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, \ - * self.c*m.a + self.d*m.c, self.c*m.b + self.d*m.d - */ - __pyx_v_self->a = __pyx_t_1; - __pyx_v_self->b = __pyx_t_2; - __pyx_v_self->c = __pyx_t_3; - __pyx_v_self->d = __pyx_t_4; - - /* "squish/_squish/core.pyx":352 - * self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, \ - * self.c*m.a + self.d*m.c, self.c*m.b + self.d*m.d - * return self # <<<<<<<<<<<<<< - * - * cdef inline Matrix2x2 m_neg_c(Matrix2x2* self) nogil: - */ - __pyx_r = __pyx_v_self; - goto __pyx_L0; - - /* "squish/_squish/core.pyx":348 - * return self - * - * cdef inline Matrix2x2* m_matmul_s(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * self.a, self.b, self.c, self.d = \ - * self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, \ - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":354 - * return self - * - * cdef inline Matrix2x2 m_neg_c(Matrix2x2* self) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2(-self.a, -self.b, -self.c, -self.d) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_neg_c(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self) { - __pyx_t_7_squish_Matrix2x2 __pyx_r; - - /* "squish/_squish/core.pyx":355 - * - * cdef inline Matrix2x2 m_neg_c(Matrix2x2* self) nogil: - * return init.Matrix2x2(-self.a, -self.b, -self.c, -self.d) # <<<<<<<<<<<<<< - * - * cdef inline Matrix2x2 m_madd_c(Matrix2x2* self, Matrix2x2 m) nogil: - */ - __pyx_r = __pyx_v_7_squish_init.Matrix2x2((-__pyx_v_self->a), (-__pyx_v_self->b), (-__pyx_v_self->c), (-__pyx_v_self->d)); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":354 - * return self - * - * cdef inline Matrix2x2 m_neg_c(Matrix2x2* self) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2(-self.a, -self.b, -self.c, -self.d) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":357 - * return init.Matrix2x2(-self.a, -self.b, -self.c, -self.d) - * - * cdef inline Matrix2x2 m_madd_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2(self.a+m.a, self.b+m.b, self.c+m.c, self.d+m.d) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_madd_c(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_Matrix2x2 __pyx_v_m) { - __pyx_t_7_squish_Matrix2x2 __pyx_r; - - /* "squish/_squish/core.pyx":358 - * - * cdef inline Matrix2x2 m_madd_c(Matrix2x2* self, Matrix2x2 m) nogil: - * return init.Matrix2x2(self.a+m.a, self.b+m.b, self.c+m.c, self.d+m.d) # <<<<<<<<<<<<<< - * - * cdef inline Matrix2x2 m_msub_c(Matrix2x2* self, Matrix2x2 m) nogil: - */ - __pyx_r = __pyx_v_7_squish_init.Matrix2x2((__pyx_v_self->a + __pyx_v_m.a), (__pyx_v_self->b + __pyx_v_m.b), (__pyx_v_self->c + __pyx_v_m.c), (__pyx_v_self->d + __pyx_v_m.d)); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":357 - * return init.Matrix2x2(-self.a, -self.b, -self.c, -self.d) - * - * cdef inline Matrix2x2 m_madd_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2(self.a+m.a, self.b+m.b, self.c+m.c, self.d+m.d) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":360 - * return init.Matrix2x2(self.a+m.a, self.b+m.b, self.c+m.c, self.d+m.d) - * - * cdef inline Matrix2x2 m_msub_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2(self.a-m.a, self.b-m.b, self.c-m.c, self.d-m.d) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_msub_c(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_Matrix2x2 __pyx_v_m) { - __pyx_t_7_squish_Matrix2x2 __pyx_r; - - /* "squish/_squish/core.pyx":361 - * - * cdef inline Matrix2x2 m_msub_c(Matrix2x2* self, Matrix2x2 m) nogil: - * return init.Matrix2x2(self.a-m.a, self.b-m.b, self.c-m.c, self.d-m.d) # <<<<<<<<<<<<<< - * - * cdef inline Matrix2x2 m_mmul_c(Matrix2x2* self, Matrix2x2 m) nogil: - */ - __pyx_r = __pyx_v_7_squish_init.Matrix2x2((__pyx_v_self->a - __pyx_v_m.a), (__pyx_v_self->b - __pyx_v_m.b), (__pyx_v_self->c - __pyx_v_m.c), (__pyx_v_self->d - __pyx_v_m.d)); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":360 - * return init.Matrix2x2(self.a+m.a, self.b+m.b, self.c+m.c, self.d+m.d) - * - * cdef inline Matrix2x2 m_msub_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2(self.a-m.a, self.b-m.b, self.c-m.c, self.d-m.d) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":363 - * return init.Matrix2x2(self.a-m.a, self.b-m.b, self.c-m.c, self.d-m.d) - * - * cdef inline Matrix2x2 m_mmul_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2(self.a*m.a, self.b*m.b, self.c*m.c, self.d*m.d) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_mmul_c(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_Matrix2x2 __pyx_v_m) { - __pyx_t_7_squish_Matrix2x2 __pyx_r; - - /* "squish/_squish/core.pyx":364 - * - * cdef inline Matrix2x2 m_mmul_c(Matrix2x2* self, Matrix2x2 m) nogil: - * return init.Matrix2x2(self.a*m.a, self.b*m.b, self.c*m.c, self.d*m.d) # <<<<<<<<<<<<<< - * - * cdef inline Matrix2x2 m_mdiv_c(Matrix2x2* self, Matrix2x2 m) nogil: - */ - __pyx_r = __pyx_v_7_squish_init.Matrix2x2((__pyx_v_self->a * __pyx_v_m.a), (__pyx_v_self->b * __pyx_v_m.b), (__pyx_v_self->c * __pyx_v_m.c), (__pyx_v_self->d * __pyx_v_m.d)); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":363 - * return init.Matrix2x2(self.a-m.a, self.b-m.b, self.c-m.c, self.d-m.d) - * - * cdef inline Matrix2x2 m_mmul_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2(self.a*m.a, self.b*m.b, self.c*m.c, self.d*m.d) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":366 - * return init.Matrix2x2(self.a*m.a, self.b*m.b, self.c*m.c, self.d*m.d) - * - * cdef inline Matrix2x2 m_mdiv_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2(self.a/m.a, self.b/m.b, self.c/m.c, self.d/m.d) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_mdiv_c(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_Matrix2x2 __pyx_v_m) { - __pyx_t_7_squish_Matrix2x2 __pyx_r; - - /* "squish/_squish/core.pyx":367 - * - * cdef inline Matrix2x2 m_mdiv_c(Matrix2x2* self, Matrix2x2 m) nogil: - * return init.Matrix2x2(self.a/m.a, self.b/m.b, self.c/m.c, self.d/m.d) # <<<<<<<<<<<<<< - * - * cdef inline Matrix2x2 m_sadd_c(Matrix2x2* self, FLOAT_T s) nogil: - */ - __pyx_r = __pyx_v_7_squish_init.Matrix2x2((__pyx_v_self->a / __pyx_v_m.a), (__pyx_v_self->b / __pyx_v_m.b), (__pyx_v_self->c / __pyx_v_m.c), (__pyx_v_self->d / __pyx_v_m.d)); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":366 - * return init.Matrix2x2(self.a*m.a, self.b*m.b, self.c*m.c, self.d*m.d) - * - * cdef inline Matrix2x2 m_mdiv_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2(self.a/m.a, self.b/m.b, self.c/m.c, self.d/m.d) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":369 - * return init.Matrix2x2(self.a/m.a, self.b/m.b, self.c/m.c, self.d/m.d) - * - * cdef inline Matrix2x2 m_sadd_c(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2(self.a+s, self.b+s, self.c+s, self.d+s) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_sadd_c(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_s) { - __pyx_t_7_squish_Matrix2x2 __pyx_r; - - /* "squish/_squish/core.pyx":370 - * - * cdef inline Matrix2x2 m_sadd_c(Matrix2x2* self, FLOAT_T s) nogil: - * return init.Matrix2x2(self.a+s, self.b+s, self.c+s, self.d+s) # <<<<<<<<<<<<<< - * - * cdef inline Matrix2x2 m_ssub_c(Matrix2x2* self, FLOAT_T s) nogil: - */ - __pyx_r = __pyx_v_7_squish_init.Matrix2x2((__pyx_v_self->a + __pyx_v_s), (__pyx_v_self->b + __pyx_v_s), (__pyx_v_self->c + __pyx_v_s), (__pyx_v_self->d + __pyx_v_s)); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":369 - * return init.Matrix2x2(self.a/m.a, self.b/m.b, self.c/m.c, self.d/m.d) - * - * cdef inline Matrix2x2 m_sadd_c(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2(self.a+s, self.b+s, self.c+s, self.d+s) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":372 - * return init.Matrix2x2(self.a+s, self.b+s, self.c+s, self.d+s) - * - * cdef inline Matrix2x2 m_ssub_c(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2(self.a-s, self.b-s, self.c-s, self.d-s) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_ssub_c(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_s) { - __pyx_t_7_squish_Matrix2x2 __pyx_r; - - /* "squish/_squish/core.pyx":373 - * - * cdef inline Matrix2x2 m_ssub_c(Matrix2x2* self, FLOAT_T s) nogil: - * return init.Matrix2x2(self.a-s, self.b-s, self.c-s, self.d-s) # <<<<<<<<<<<<<< - * - * cdef inline Matrix2x2 m_smul_c(Matrix2x2* self, FLOAT_T s) nogil: - */ - __pyx_r = __pyx_v_7_squish_init.Matrix2x2((__pyx_v_self->a - __pyx_v_s), (__pyx_v_self->b - __pyx_v_s), (__pyx_v_self->c - __pyx_v_s), (__pyx_v_self->d - __pyx_v_s)); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":372 - * return init.Matrix2x2(self.a+s, self.b+s, self.c+s, self.d+s) - * - * cdef inline Matrix2x2 m_ssub_c(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2(self.a-s, self.b-s, self.c-s, self.d-s) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":375 - * return init.Matrix2x2(self.a-s, self.b-s, self.c-s, self.d-s) - * - * cdef inline Matrix2x2 m_smul_c(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2(self.a*s, self.b*s, self.c*s, self.d*s) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_smul_c(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_s) { - __pyx_t_7_squish_Matrix2x2 __pyx_r; - - /* "squish/_squish/core.pyx":376 - * - * cdef inline Matrix2x2 m_smul_c(Matrix2x2* self, FLOAT_T s) nogil: - * return init.Matrix2x2(self.a*s, self.b*s, self.c*s, self.d*s) # <<<<<<<<<<<<<< - * - * cdef inline Matrix2x2 m_sdiv_c(Matrix2x2* self, FLOAT_T s) nogil: - */ - __pyx_r = __pyx_v_7_squish_init.Matrix2x2((__pyx_v_self->a * __pyx_v_s), (__pyx_v_self->b * __pyx_v_s), (__pyx_v_self->c * __pyx_v_s), (__pyx_v_self->d * __pyx_v_s)); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":375 - * return init.Matrix2x2(self.a-s, self.b-s, self.c-s, self.d-s) - * - * cdef inline Matrix2x2 m_smul_c(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2(self.a*s, self.b*s, self.c*s, self.d*s) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":378 - * return init.Matrix2x2(self.a*s, self.b*s, self.c*s, self.d*s) - * - * cdef inline Matrix2x2 m_sdiv_c(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2(self.a/s, self.b/s, self.c/s, self.d/s) - * - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_sdiv_c(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_s) { - __pyx_t_7_squish_Matrix2x2 __pyx_r; - - /* "squish/_squish/core.pyx":379 - * - * cdef inline Matrix2x2 m_sdiv_c(Matrix2x2* self, FLOAT_T s) nogil: - * return init.Matrix2x2(self.a/s, self.b/s, self.c/s, self.d/s) # <<<<<<<<<<<<<< - * - * cdef inline Matrix2x2 m_matmul_c(Matrix2x2* self, Matrix2x2 m) nogil: - */ - __pyx_r = __pyx_v_7_squish_init.Matrix2x2((__pyx_v_self->a / __pyx_v_s), (__pyx_v_self->b / __pyx_v_s), (__pyx_v_self->c / __pyx_v_s), (__pyx_v_self->d / __pyx_v_s)); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":378 - * return init.Matrix2x2(self.a*s, self.b*s, self.c*s, self.d*s) - * - * cdef inline Matrix2x2 m_sdiv_c(Matrix2x2* self, FLOAT_T s) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2(self.a/s, self.b/s, self.c/s, self.d/s) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/core.pyx":381 - * return init.Matrix2x2(self.a/s, self.b/s, self.c/s, self.d/s) - * - * cdef inline Matrix2x2 m_matmul_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2( - * self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, - */ - -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_m_matmul_c(__pyx_t_7_squish_Matrix2x2 *__pyx_v_self, __pyx_t_7_squish_Matrix2x2 __pyx_v_m) { - __pyx_t_7_squish_Matrix2x2 __pyx_r; - - /* "squish/_squish/core.pyx":382 - * - * cdef inline Matrix2x2 m_matmul_c(Matrix2x2* self, Matrix2x2 m) nogil: - * return init.Matrix2x2( # <<<<<<<<<<<<<< - * self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, - * self.c*m.a + self.d*m.c, self.c*m.b + self.d*m.d - */ - __pyx_r = __pyx_v_7_squish_init.Matrix2x2(((__pyx_v_self->a * __pyx_v_m.a) + (__pyx_v_self->b * __pyx_v_m.c)), ((__pyx_v_self->a * __pyx_v_m.b) + (__pyx_v_self->b * __pyx_v_m.d)), ((__pyx_v_self->c * __pyx_v_m.a) + (__pyx_v_self->d * __pyx_v_m.c)), ((__pyx_v_self->c * __pyx_v_m.b) + (__pyx_v_self->d * __pyx_v_m.d))); - goto __pyx_L0; - - /* "squish/_squish/core.pyx":381 - * return init.Matrix2x2(self.a/s, self.b/s, self.c/s, self.d/s) - * - * cdef inline Matrix2x2 m_matmul_c(Matrix2x2* self, Matrix2x2 m) nogil: # <<<<<<<<<<<<<< - * return init.Matrix2x2( - * self.a*m.a + self.b*m.c, self.a*m.b + self.b*m.d, - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/voronoi_dcel.pyx":17 +/* "squish/voronoi.pyx":30 * #### SiteCacheMap Methods #### * - * cdef inline SiteCacheMap init_sitecachemap(INT_T iarea, INT_T iperim, INT_T iisoparam, # <<<<<<<<<<<<<< - * INT_T ienergy, INT_T iavg_radius) nogil: - * cdef SiteCacheMap sc + * cdef inline SiteCacheMap _SiteCacheMap(INT_T iarea, INT_T iperim, INT_T iisoparam, # <<<<<<<<<<<<<< + * INT_T ienergy, INT_T iavg_radius, + * INT_T icentroid, INT_T imaxcenter) nogil: */ -static CYTHON_INLINE __pyx_t_7_squish_SiteCacheMap __pyx_f_7_squish_init_sitecachemap(__pyx_t_7_squish_INT_T __pyx_v_iarea, __pyx_t_7_squish_INT_T __pyx_v_iperim, __pyx_t_7_squish_INT_T __pyx_v_iisoparam, __pyx_t_7_squish_INT_T __pyx_v_ienergy, __pyx_t_7_squish_INT_T __pyx_v_iavg_radius) { - __pyx_t_7_squish_SiteCacheMap __pyx_v_sc; - __pyx_t_7_squish_SiteCacheMap __pyx_r; - __pyx_t_7_squish_INT_T __pyx_t_1; - __pyx_t_7_squish_INT_T __pyx_t_2; - __pyx_t_7_squish_INT_T __pyx_t_3; - __pyx_t_7_squish_INT_T __pyx_t_4; - __pyx_t_7_squish_INT_T __pyx_t_5; - __pyx_t_7_squish_FLOAT_T (*__pyx_t_6)(__pyx_t_7_squish_Site *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*__pyx_t_7)(__pyx_t_7_squish_Site *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*__pyx_t_8)(__pyx_t_7_squish_Site *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*__pyx_t_9)(__pyx_t_7_squish_Site *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*__pyx_t_10)(__pyx_t_7_squish_Site *, __pyx_t_7_squish_FLOAT_T); +static CYTHON_INLINE __pyx_t_6squish_7voronoi_SiteCacheMap __pyx_f_6squish_7voronoi__SiteCacheMap(__pyx_t_6squish_4core_INT_T __pyx_v_iarea, __pyx_t_6squish_4core_INT_T __pyx_v_iperim, __pyx_t_6squish_4core_INT_T __pyx_v_iisoparam, __pyx_t_6squish_4core_INT_T __pyx_v_ienergy, __pyx_t_6squish_4core_INT_T __pyx_v_iavg_radius, __pyx_t_6squish_4core_INT_T __pyx_v_icentroid, __pyx_t_6squish_4core_INT_T __pyx_v_imaxcenter) { + __pyx_t_6squish_7voronoi_SiteCacheMap __pyx_v_sc; + __pyx_t_6squish_7voronoi_SiteCacheMap __pyx_r; + __pyx_t_6squish_4core_INT_T __pyx_t_1; + __pyx_t_6squish_4core_INT_T __pyx_t_2; + __pyx_t_6squish_4core_INT_T __pyx_t_3; + __pyx_t_6squish_4core_INT_T __pyx_t_4; + __pyx_t_6squish_4core_INT_T __pyx_t_5; + __pyx_t_6squish_4core_FLOAT_T (*__pyx_t_6)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*__pyx_t_7)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*__pyx_t_8)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*__pyx_t_9)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*__pyx_t_10)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_Vector2D (*__pyx_t_11)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*__pyx_t_12)(__pyx_t_6squish_7voronoi_Site *, __pyx_t_6squish_4core_Vector2D); - /* "squish/_squish/voronoi_dcel.pyx":21 - * cdef SiteCacheMap sc - * sc.iarea, sc.iperim, sc.iisoparam, sc.ienergy, sc.iavg_radius = \ - * iarea, iperim, iisoparam, ienergy, iavg_radius # <<<<<<<<<<<<<< - * - * sc.area, sc.perim, sc.isoparam, sc.energy, sc.avg_radius = \ + /* "squish/voronoi.pyx":35 + * cdef SiteCacheMap sc + * sc.iarea, sc.iperim, sc.iisoparam, sc.ienergy, sc.iavg_radius = ( + * iarea, iperim, iisoparam, ienergy, iavg_radius # <<<<<<<<<<<<<< + * ) + * sc.icentroid, sc.imaxcenter = icentroid, imaxcenter */ __pyx_t_1 = __pyx_v_iarea; __pyx_t_2 = __pyx_v_iperim; @@ -6756,12 +3512,12 @@ static CYTHON_INLINE __pyx_t_7_squish_SiteCacheMap __pyx_f_7_squish_init_sitecac __pyx_t_4 = __pyx_v_ienergy; __pyx_t_5 = __pyx_v_iavg_radius; - /* "squish/_squish/voronoi_dcel.pyx":20 - * INT_T ienergy, INT_T iavg_radius) nogil: - * cdef SiteCacheMap sc - * sc.iarea, sc.iperim, sc.iisoparam, sc.ienergy, sc.iavg_radius = \ # <<<<<<<<<<<<<< - * iarea, iperim, iisoparam, ienergy, iavg_radius - * + /* "squish/voronoi.pyx":34 + * INT_T icentroid, INT_T imaxcenter) nogil: + * cdef SiteCacheMap sc + * sc.iarea, sc.iperim, sc.iisoparam, sc.ienergy, sc.iavg_radius = ( # <<<<<<<<<<<<<< + * iarea, iperim, iisoparam, ienergy, iavg_radius + * ) */ __pyx_v_sc.iarea = __pyx_t_1; __pyx_v_sc.iperim = __pyx_t_2; @@ -6769,25 +3525,37 @@ static CYTHON_INLINE __pyx_t_7_squish_SiteCacheMap __pyx_f_7_squish_init_sitecac __pyx_v_sc.ienergy = __pyx_t_4; __pyx_v_sc.iavg_radius = __pyx_t_5; - /* "squish/_squish/voronoi_dcel.pyx":24 + /* "squish/voronoi.pyx":37 + * iarea, iperim, iisoparam, ienergy, iavg_radius + * ) + * sc.icentroid, sc.imaxcenter = icentroid, imaxcenter # <<<<<<<<<<<<<< * - * sc.area, sc.perim, sc.isoparam, sc.energy, sc.avg_radius = \ - * area, perim, isoparam, energy, avg_radius # <<<<<<<<<<<<<< - * - * return sc + * sc.area, sc.perim, sc.isoparam, sc.energy, sc.avg_radius = ( */ - __pyx_t_6 = __pyx_f_7_squish_area; - __pyx_t_7 = __pyx_f_7_squish_perim; - __pyx_t_8 = __pyx_f_7_squish_isoparam; - __pyx_t_9 = __pyx_f_7_squish_energy; - __pyx_t_10 = __pyx_f_7_squish_avg_radius; + __pyx_t_5 = __pyx_v_icentroid; + __pyx_t_4 = __pyx_v_imaxcenter; + __pyx_v_sc.icentroid = __pyx_t_5; + __pyx_v_sc.imaxcenter = __pyx_t_4; - /* "squish/_squish/voronoi_dcel.pyx":23 - * iarea, iperim, iisoparam, ienergy, iavg_radius + /* "squish/voronoi.pyx":40 * - * sc.area, sc.perim, sc.isoparam, sc.energy, sc.avg_radius = \ # <<<<<<<<<<<<<< - * area, perim, isoparam, energy, avg_radius + * sc.area, sc.perim, sc.isoparam, sc.energy, sc.avg_radius = ( + * area, perim, isoparam, energy, avg_radius # <<<<<<<<<<<<<< + * ) + * sc.centroid, sc.maxcenter = centroid, maxcenter + */ + __pyx_t_6 = __pyx_f_6squish_7voronoi_area; + __pyx_t_7 = __pyx_f_6squish_7voronoi_perim; + __pyx_t_8 = __pyx_f_6squish_7voronoi_isoparam; + __pyx_t_9 = __pyx_f_6squish_7voronoi_energy; + __pyx_t_10 = __pyx_f_6squish_7voronoi_avg_radius; + + /* "squish/voronoi.pyx":39 + * sc.icentroid, sc.imaxcenter = icentroid, imaxcenter * + * sc.area, sc.perim, sc.isoparam, sc.energy, sc.avg_radius = ( # <<<<<<<<<<<<<< + * area, perim, isoparam, energy, avg_radius + * ) */ __pyx_v_sc.area = __pyx_t_6; __pyx_v_sc.perim = __pyx_t_7; @@ -6795,22 +3563,34 @@ static CYTHON_INLINE __pyx_t_7_squish_SiteCacheMap __pyx_f_7_squish_init_sitecac __pyx_v_sc.energy = __pyx_t_9; __pyx_v_sc.avg_radius = __pyx_t_10; - /* "squish/_squish/voronoi_dcel.pyx":26 - * area, perim, isoparam, energy, avg_radius + /* "squish/voronoi.pyx":42 + * area, perim, isoparam, energy, avg_radius + * ) + * sc.centroid, sc.maxcenter = centroid, maxcenter # <<<<<<<<<<<<<< * - * return sc # <<<<<<<<<<<<<< + * return sc + */ + __pyx_t_11 = __pyx_f_6squish_7voronoi_centroid; + __pyx_t_12 = __pyx_f_6squish_7voronoi_maxcenter; + __pyx_v_sc.centroid = __pyx_t_11; + __pyx_v_sc.maxcenter = __pyx_t_12; + + /* "squish/voronoi.pyx":44 + * sc.centroid, sc.maxcenter = centroid, maxcenter * + * return sc # <<<<<<<<<<<<<< * + * cdef inline FLOAT_T area(Site* self, FLOAT_T val) nogil: */ __pyx_r = __pyx_v_sc; goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":17 + /* "squish/voronoi.pyx":30 * #### SiteCacheMap Methods #### * - * cdef inline SiteCacheMap init_sitecachemap(INT_T iarea, INT_T iperim, INT_T iisoparam, # <<<<<<<<<<<<<< - * INT_T ienergy, INT_T iavg_radius) nogil: - * cdef SiteCacheMap sc + * cdef inline SiteCacheMap _SiteCacheMap(INT_T iarea, INT_T iperim, INT_T iisoparam, # <<<<<<<<<<<<<< + * INT_T ienergy, INT_T iavg_radius, + * INT_T icentroid, INT_T imaxcenter) nogil: */ /* function exit code */ @@ -6818,90 +3598,90 @@ static CYTHON_INLINE __pyx_t_7_squish_SiteCacheMap __pyx_f_7_squish_init_sitecac return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":29 - * +/* "squish/voronoi.pyx":46 + * return sc * * cdef inline FLOAT_T area(Site* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, */ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_area(__pyx_t_7_squish_Site *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_val) { - __pyx_t_7_squish_FLOAT_T __pyx_r; +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_7voronoi_area(__pyx_t_6squish_7voronoi_Site *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_val) { + __pyx_t_6squish_4core_FLOAT_T __pyx_r; int __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; + __pyx_t_6squish_4core_Pair __pyx_t_2; - /* "squish/_squish/voronoi_dcel.pyx":30 + /* "squish/voronoi.pyx":47 * * cdef inline FLOAT_T area(Site* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.site_cache.get(&self.info.site_cache, - * (self.arr_index, self.cache.iarea) + * if isnan(val): # <<<<<<<<<<<<<< + * return self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.iarea) */ __pyx_t_1 = (isnan(((double)__pyx_v_val)) != 0); if (__pyx_t_1) { - /* "squish/_squish/voronoi_dcel.pyx":32 - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, - * (self.arr_index, self.cache.iarea) # <<<<<<<<<<<<<< - * ) - * else: + /* "squish/voronoi.pyx":49 + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.iarea) # <<<<<<<<<<<<<< + * ) + * else: */ __pyx_t_2.f0 = __pyx_v_self->arr_index; __pyx_t_2.f1 = __pyx_v_self->cache->iarea; - /* "squish/_squish/voronoi_dcel.pyx":31 + /* "squish/voronoi.pyx":48 * cdef inline FLOAT_T area(Site* self, FLOAT_T val) nogil: - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iarea) - * ) + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iarea) + * ) */ __pyx_r = __pyx_v_self->info->site_cache.get((&__pyx_v_self->info->site_cache), __pyx_t_2); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":30 + /* "squish/voronoi.pyx":47 * * cdef inline FLOAT_T area(Site* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.site_cache.get(&self.info.site_cache, - * (self.arr_index, self.cache.iarea) + * if isnan(val): # <<<<<<<<<<<<<< + * return self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.iarea) */ } - /* "squish/_squish/voronoi_dcel.pyx":35 - * ) - * else: - * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iarea), val) - * return val + /* "squish/voronoi.pyx":52 + * ) + * else: + * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iarea), val) + * return val */ /*else*/ { - /* "squish/_squish/voronoi_dcel.pyx":36 - * else: - * self.info.site_cache.set(&self.info.site_cache, - * (self.arr_index, self.cache.iarea), val) # <<<<<<<<<<<<<< - * return val + /* "squish/voronoi.pyx":53 + * else: + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.iarea), val) # <<<<<<<<<<<<<< + * return val * */ __pyx_t_2.f0 = __pyx_v_self->arr_index; __pyx_t_2.f1 = __pyx_v_self->cache->iarea; - /* "squish/_squish/voronoi_dcel.pyx":35 - * ) - * else: - * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iarea), val) - * return val + /* "squish/voronoi.pyx":52 + * ) + * else: + * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iarea), val) + * return val */ __pyx_v_self->info->site_cache.set((&__pyx_v_self->info->site_cache), __pyx_t_2, __pyx_v_val); - /* "squish/_squish/voronoi_dcel.pyx":37 - * self.info.site_cache.set(&self.info.site_cache, - * (self.arr_index, self.cache.iarea), val) - * return val # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":54 + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.iarea), val) + * return val # <<<<<<<<<<<<<< * * cdef inline FLOAT_T perim(Site* self, FLOAT_T val) nogil: */ @@ -6909,12 +3689,12 @@ static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_area(__pyx_t_7_sq goto __pyx_L0; } - /* "squish/_squish/voronoi_dcel.pyx":29 - * + /* "squish/voronoi.pyx":46 + * return sc * * cdef inline FLOAT_T area(Site* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, */ /* function exit code */ @@ -6922,90 +3702,90 @@ static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_area(__pyx_t_7_sq return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":39 - * return val +/* "squish/voronoi.pyx":56 + * return val * * cdef inline FLOAT_T perim(Site* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, */ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_perim(__pyx_t_7_squish_Site *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_val) { - __pyx_t_7_squish_FLOAT_T __pyx_r; +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_7voronoi_perim(__pyx_t_6squish_7voronoi_Site *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_val) { + __pyx_t_6squish_4core_FLOAT_T __pyx_r; int __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; + __pyx_t_6squish_4core_Pair __pyx_t_2; - /* "squish/_squish/voronoi_dcel.pyx":40 + /* "squish/voronoi.pyx":57 * * cdef inline FLOAT_T perim(Site* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.site_cache.get(&self.info.site_cache, - * (self.arr_index, self.cache.iperim) + * if isnan(val): # <<<<<<<<<<<<<< + * return self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.iperim) */ __pyx_t_1 = (isnan(((double)__pyx_v_val)) != 0); if (__pyx_t_1) { - /* "squish/_squish/voronoi_dcel.pyx":42 - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, - * (self.arr_index, self.cache.iperim) # <<<<<<<<<<<<<< - * ) - * else: + /* "squish/voronoi.pyx":59 + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.iperim) # <<<<<<<<<<<<<< + * ) + * else: */ __pyx_t_2.f0 = __pyx_v_self->arr_index; __pyx_t_2.f1 = __pyx_v_self->cache->iperim; - /* "squish/_squish/voronoi_dcel.pyx":41 + /* "squish/voronoi.pyx":58 * cdef inline FLOAT_T perim(Site* self, FLOAT_T val) nogil: - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iperim) - * ) + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iperim) + * ) */ __pyx_r = __pyx_v_self->info->site_cache.get((&__pyx_v_self->info->site_cache), __pyx_t_2); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":40 + /* "squish/voronoi.pyx":57 * * cdef inline FLOAT_T perim(Site* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.site_cache.get(&self.info.site_cache, - * (self.arr_index, self.cache.iperim) + * if isnan(val): # <<<<<<<<<<<<<< + * return self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.iperim) */ } - /* "squish/_squish/voronoi_dcel.pyx":45 - * ) - * else: - * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iperim), val) - * return val + /* "squish/voronoi.pyx":62 + * ) + * else: + * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iperim), val) + * return val */ /*else*/ { - /* "squish/_squish/voronoi_dcel.pyx":46 - * else: - * self.info.site_cache.set(&self.info.site_cache, - * (self.arr_index, self.cache.iperim), val) # <<<<<<<<<<<<<< - * return val + /* "squish/voronoi.pyx":63 + * else: + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.iperim), val) # <<<<<<<<<<<<<< + * return val * */ __pyx_t_2.f0 = __pyx_v_self->arr_index; __pyx_t_2.f1 = __pyx_v_self->cache->iperim; - /* "squish/_squish/voronoi_dcel.pyx":45 - * ) - * else: - * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iperim), val) - * return val + /* "squish/voronoi.pyx":62 + * ) + * else: + * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iperim), val) + * return val */ __pyx_v_self->info->site_cache.set((&__pyx_v_self->info->site_cache), __pyx_t_2, __pyx_v_val); - /* "squish/_squish/voronoi_dcel.pyx":47 - * self.info.site_cache.set(&self.info.site_cache, - * (self.arr_index, self.cache.iperim), val) - * return val # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":64 + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.iperim), val) + * return val # <<<<<<<<<<<<<< * * cdef inline FLOAT_T isoparam(Site* self, FLOAT_T val) nogil: */ @@ -7013,12 +3793,12 @@ static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_perim(__pyx_t_7_s goto __pyx_L0; } - /* "squish/_squish/voronoi_dcel.pyx":39 - * return val + /* "squish/voronoi.pyx":56 + * return val * * cdef inline FLOAT_T perim(Site* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, */ /* function exit code */ @@ -7026,90 +3806,90 @@ static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_perim(__pyx_t_7_s return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":49 - * return val +/* "squish/voronoi.pyx":66 + * return val * * cdef inline FLOAT_T isoparam(Site* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, */ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_isoparam(__pyx_t_7_squish_Site *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_val) { - __pyx_t_7_squish_FLOAT_T __pyx_r; +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_7voronoi_isoparam(__pyx_t_6squish_7voronoi_Site *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_val) { + __pyx_t_6squish_4core_FLOAT_T __pyx_r; int __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; + __pyx_t_6squish_4core_Pair __pyx_t_2; - /* "squish/_squish/voronoi_dcel.pyx":50 + /* "squish/voronoi.pyx":67 * * cdef inline FLOAT_T isoparam(Site* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.site_cache.get(&self.info.site_cache, - * (self.arr_index, self.cache.iisoparam) + * if isnan(val): # <<<<<<<<<<<<<< + * return self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.iisoparam) */ __pyx_t_1 = (isnan(((double)__pyx_v_val)) != 0); if (__pyx_t_1) { - /* "squish/_squish/voronoi_dcel.pyx":52 - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, - * (self.arr_index, self.cache.iisoparam) # <<<<<<<<<<<<<< - * ) - * else: + /* "squish/voronoi.pyx":69 + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.iisoparam) # <<<<<<<<<<<<<< + * ) + * else: */ __pyx_t_2.f0 = __pyx_v_self->arr_index; __pyx_t_2.f1 = __pyx_v_self->cache->iisoparam; - /* "squish/_squish/voronoi_dcel.pyx":51 + /* "squish/voronoi.pyx":68 * cdef inline FLOAT_T isoparam(Site* self, FLOAT_T val) nogil: - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iisoparam) - * ) + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iisoparam) + * ) */ __pyx_r = __pyx_v_self->info->site_cache.get((&__pyx_v_self->info->site_cache), __pyx_t_2); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":50 + /* "squish/voronoi.pyx":67 * * cdef inline FLOAT_T isoparam(Site* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.site_cache.get(&self.info.site_cache, - * (self.arr_index, self.cache.iisoparam) + * if isnan(val): # <<<<<<<<<<<<<< + * return self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.iisoparam) */ } - /* "squish/_squish/voronoi_dcel.pyx":55 - * ) - * else: - * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iisoparam), val) - * return val + /* "squish/voronoi.pyx":72 + * ) + * else: + * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iisoparam), val) + * return val */ /*else*/ { - /* "squish/_squish/voronoi_dcel.pyx":56 - * else: - * self.info.site_cache.set(&self.info.site_cache, - * (self.arr_index, self.cache.iisoparam), val) # <<<<<<<<<<<<<< - * return val + /* "squish/voronoi.pyx":73 + * else: + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.iisoparam), val) # <<<<<<<<<<<<<< + * return val * */ __pyx_t_2.f0 = __pyx_v_self->arr_index; __pyx_t_2.f1 = __pyx_v_self->cache->iisoparam; - /* "squish/_squish/voronoi_dcel.pyx":55 - * ) - * else: - * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iisoparam), val) - * return val + /* "squish/voronoi.pyx":72 + * ) + * else: + * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iisoparam), val) + * return val */ __pyx_v_self->info->site_cache.set((&__pyx_v_self->info->site_cache), __pyx_t_2, __pyx_v_val); - /* "squish/_squish/voronoi_dcel.pyx":57 - * self.info.site_cache.set(&self.info.site_cache, - * (self.arr_index, self.cache.iisoparam), val) - * return val # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":74 + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.iisoparam), val) + * return val # <<<<<<<<<<<<<< * * cdef inline FLOAT_T energy(Site* self, FLOAT_T val) nogil: */ @@ -7117,12 +3897,12 @@ static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_isoparam(__pyx_t_ goto __pyx_L0; } - /* "squish/_squish/voronoi_dcel.pyx":49 - * return val + /* "squish/voronoi.pyx":66 + * return val * * cdef inline FLOAT_T isoparam(Site* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, */ /* function exit code */ @@ -7130,90 +3910,90 @@ static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_isoparam(__pyx_t_ return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":59 - * return val +/* "squish/voronoi.pyx":76 + * return val * * cdef inline FLOAT_T energy(Site* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, */ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_energy(__pyx_t_7_squish_Site *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_val) { - __pyx_t_7_squish_FLOAT_T __pyx_r; +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_7voronoi_energy(__pyx_t_6squish_7voronoi_Site *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_val) { + __pyx_t_6squish_4core_FLOAT_T __pyx_r; int __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; + __pyx_t_6squish_4core_Pair __pyx_t_2; - /* "squish/_squish/voronoi_dcel.pyx":60 + /* "squish/voronoi.pyx":77 * * cdef inline FLOAT_T energy(Site* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.site_cache.get(&self.info.site_cache, - * (self.arr_index, self.cache.ienergy) + * if isnan(val): # <<<<<<<<<<<<<< + * return self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.ienergy) */ __pyx_t_1 = (isnan(((double)__pyx_v_val)) != 0); if (__pyx_t_1) { - /* "squish/_squish/voronoi_dcel.pyx":62 - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, - * (self.arr_index, self.cache.ienergy) # <<<<<<<<<<<<<< - * ) - * else: + /* "squish/voronoi.pyx":79 + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.ienergy) # <<<<<<<<<<<<<< + * ) + * else: */ __pyx_t_2.f0 = __pyx_v_self->arr_index; __pyx_t_2.f1 = __pyx_v_self->cache->ienergy; - /* "squish/_squish/voronoi_dcel.pyx":61 + /* "squish/voronoi.pyx":78 * cdef inline FLOAT_T energy(Site* self, FLOAT_T val) nogil: - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ienergy) - * ) + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.ienergy) + * ) */ __pyx_r = __pyx_v_self->info->site_cache.get((&__pyx_v_self->info->site_cache), __pyx_t_2); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":60 + /* "squish/voronoi.pyx":77 * * cdef inline FLOAT_T energy(Site* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.site_cache.get(&self.info.site_cache, - * (self.arr_index, self.cache.ienergy) + * if isnan(val): # <<<<<<<<<<<<<< + * return self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.ienergy) */ } - /* "squish/_squish/voronoi_dcel.pyx":65 - * ) - * else: - * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ienergy), val) - * return val + /* "squish/voronoi.pyx":82 + * ) + * else: + * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.ienergy), val) + * return val */ /*else*/ { - /* "squish/_squish/voronoi_dcel.pyx":66 - * else: - * self.info.site_cache.set(&self.info.site_cache, - * (self.arr_index, self.cache.ienergy), val) # <<<<<<<<<<<<<< - * return val + /* "squish/voronoi.pyx":83 + * else: + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.ienergy), val) # <<<<<<<<<<<<<< + * return val * */ __pyx_t_2.f0 = __pyx_v_self->arr_index; __pyx_t_2.f1 = __pyx_v_self->cache->ienergy; - /* "squish/_squish/voronoi_dcel.pyx":65 - * ) - * else: - * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ienergy), val) - * return val + /* "squish/voronoi.pyx":82 + * ) + * else: + * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.ienergy), val) + * return val */ __pyx_v_self->info->site_cache.set((&__pyx_v_self->info->site_cache), __pyx_t_2, __pyx_v_val); - /* "squish/_squish/voronoi_dcel.pyx":67 - * self.info.site_cache.set(&self.info.site_cache, - * (self.arr_index, self.cache.ienergy), val) - * return val # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":84 + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.ienergy), val) + * return val # <<<<<<<<<<<<<< * * cdef inline FLOAT_T avg_radius(Site* self, FLOAT_T val) nogil: */ @@ -7221,12 +4001,12 @@ static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_energy(__pyx_t_7_ goto __pyx_L0; } - /* "squish/_squish/voronoi_dcel.pyx":59 - * return val + /* "squish/voronoi.pyx":76 + * return val * * cdef inline FLOAT_T energy(Site* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, */ /* function exit code */ @@ -7234,90 +4014,358 @@ static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_energy(__pyx_t_7_ return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":69 - * return val +/* "squish/voronoi.pyx":86 + * return val * * cdef inline FLOAT_T avg_radius(Site* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, */ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_avg_radius(__pyx_t_7_squish_Site *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_val) { - __pyx_t_7_squish_FLOAT_T __pyx_r; +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_7voronoi_avg_radius(__pyx_t_6squish_7voronoi_Site *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_val) { + __pyx_t_6squish_4core_FLOAT_T __pyx_r; int __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; + __pyx_t_6squish_4core_Pair __pyx_t_2; - /* "squish/_squish/voronoi_dcel.pyx":70 + /* "squish/voronoi.pyx":87 * * cdef inline FLOAT_T avg_radius(Site* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.site_cache.get(&self.info.site_cache, - * (self.arr_index, self.cache.iavg_radius) + * if isnan(val): # <<<<<<<<<<<<<< + * return self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.iavg_radius) */ __pyx_t_1 = (isnan(((double)__pyx_v_val)) != 0); if (__pyx_t_1) { - /* "squish/_squish/voronoi_dcel.pyx":72 - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, - * (self.arr_index, self.cache.iavg_radius) # <<<<<<<<<<<<<< - * ) - * else: + /* "squish/voronoi.pyx":89 + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.iavg_radius) # <<<<<<<<<<<<<< + * ) + * else: */ __pyx_t_2.f0 = __pyx_v_self->arr_index; __pyx_t_2.f1 = __pyx_v_self->cache->iavg_radius; - /* "squish/_squish/voronoi_dcel.pyx":71 + /* "squish/voronoi.pyx":88 * cdef inline FLOAT_T avg_radius(Site* self, FLOAT_T val) nogil: - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iavg_radius) - * ) + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iavg_radius) + * ) */ __pyx_r = __pyx_v_self->info->site_cache.get((&__pyx_v_self->info->site_cache), __pyx_t_2); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":70 + /* "squish/voronoi.pyx":87 * * cdef inline FLOAT_T avg_radius(Site* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.site_cache.get(&self.info.site_cache, - * (self.arr_index, self.cache.iavg_radius) + * if isnan(val): # <<<<<<<<<<<<<< + * return self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.iavg_radius) */ } - /* "squish/_squish/voronoi_dcel.pyx":75 - * ) - * else: - * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iavg_radius), val) - * return val + /* "squish/voronoi.pyx":92 + * ) + * else: + * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iavg_radius), val) + * return val */ /*else*/ { - /* "squish/_squish/voronoi_dcel.pyx":76 - * else: - * self.info.site_cache.set(&self.info.site_cache, - * (self.arr_index, self.cache.iavg_radius), val) # <<<<<<<<<<<<<< - * return val + /* "squish/voronoi.pyx":93 + * else: + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.iavg_radius), val) # <<<<<<<<<<<<<< + * return val * */ __pyx_t_2.f0 = __pyx_v_self->arr_index; __pyx_t_2.f1 = __pyx_v_self->cache->iavg_radius; - /* "squish/_squish/voronoi_dcel.pyx":75 - * ) - * else: - * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iavg_radius), val) - * return val + /* "squish/voronoi.pyx":92 + * ) + * else: + * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iavg_radius), val) + * return val */ __pyx_v_self->info->site_cache.set((&__pyx_v_self->info->site_cache), __pyx_t_2, __pyx_v_val); - /* "squish/_squish/voronoi_dcel.pyx":77 - * self.info.site_cache.set(&self.info.site_cache, - * (self.arr_index, self.cache.iavg_radius), val) - * return val # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":94 + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.iavg_radius), val) + * return val # <<<<<<<<<<<<<< + * + * cdef inline Vector2D centroid(Site* self, Vector2D val) nogil: + */ + __pyx_r = __pyx_v_val; + goto __pyx_L0; + } + + /* "squish/voronoi.pyx":86 + * return val + * + * cdef inline FLOAT_T avg_radius(Site* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< + * if isnan(val): + * return self.info.site_cache.get(&self.info.site_cache, + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/voronoi.pyx":96 + * return val + * + * cdef inline Vector2D centroid(Site* self, Vector2D val) nogil: # <<<<<<<<<<<<<< + * if isnan(val.x): + * return _Vector2D( + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_7voronoi_centroid(__pyx_t_6squish_7voronoi_Site *__pyx_v_self, __pyx_t_6squish_4core_Vector2D __pyx_v_val) { + __pyx_t_6squish_4core_Vector2D __pyx_r; + int __pyx_t_1; + __pyx_t_6squish_4core_Pair __pyx_t_2; + __pyx_t_6squish_4core_Pair __pyx_t_3; + + /* "squish/voronoi.pyx":97 + * + * cdef inline Vector2D centroid(Site* self, Vector2D val) nogil: + * if isnan(val.x): # <<<<<<<<<<<<<< + * return _Vector2D( + * self.info.site_cache.get(&self.info.site_cache, + */ + __pyx_t_1 = (isnan(((double)__pyx_v_val.x)) != 0); + if (__pyx_t_1) { + + /* "squish/voronoi.pyx":100 + * return _Vector2D( + * self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.icentroid) # <<<<<<<<<<<<<< + * ), + * self.info.site_cache.get(&self.info.site_cache, + */ + __pyx_t_2.f0 = __pyx_v_self->arr_index; + __pyx_t_2.f1 = __pyx_v_self->cache->icentroid; + + /* "squish/voronoi.pyx":103 + * ), + * self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.icentroid+1) # <<<<<<<<<<<<<< + * ) + * ) + */ + __pyx_t_3.f0 = __pyx_v_self->arr_index; + __pyx_t_3.f1 = (__pyx_v_self->cache->icentroid + 1); + + /* "squish/voronoi.pyx":98 + * cdef inline Vector2D centroid(Site* self, Vector2D val) nogil: + * if isnan(val.x): + * return _Vector2D( # <<<<<<<<<<<<<< + * self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.icentroid) + */ + __pyx_r = __pyx_f_6squish_4core__Vector2D(__pyx_v_self->info->site_cache.get((&__pyx_v_self->info->site_cache), __pyx_t_2), __pyx_v_self->info->site_cache.get((&__pyx_v_self->info->site_cache), __pyx_t_3)); + goto __pyx_L0; + + /* "squish/voronoi.pyx":97 + * + * cdef inline Vector2D centroid(Site* self, Vector2D val) nogil: + * if isnan(val.x): # <<<<<<<<<<<<<< + * return _Vector2D( + * self.info.site_cache.get(&self.info.site_cache, + */ + } + + /* "squish/voronoi.pyx":107 + * ) + * else: + * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.icentroid), val.x) + * self.info.site_cache.set(&self.info.site_cache, + */ + /*else*/ { + + /* "squish/voronoi.pyx":108 + * else: + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.icentroid), val.x) # <<<<<<<<<<<<<< + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.icentroid+1), val.y) + */ + __pyx_t_3.f0 = __pyx_v_self->arr_index; + __pyx_t_3.f1 = __pyx_v_self->cache->icentroid; + + /* "squish/voronoi.pyx":107 + * ) + * else: + * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.icentroid), val.x) + * self.info.site_cache.set(&self.info.site_cache, + */ + __pyx_v_self->info->site_cache.set((&__pyx_v_self->info->site_cache), __pyx_t_3, __pyx_v_val.x); + + /* "squish/voronoi.pyx":110 + * (self.arr_index, self.cache.icentroid), val.x) + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.icentroid+1), val.y) # <<<<<<<<<<<<<< + * return val + * + */ + __pyx_t_3.f0 = __pyx_v_self->arr_index; + __pyx_t_3.f1 = (__pyx_v_self->cache->icentroid + 1); + + /* "squish/voronoi.pyx":109 + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.icentroid), val.x) + * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.icentroid+1), val.y) + * return val + */ + __pyx_v_self->info->site_cache.set((&__pyx_v_self->info->site_cache), __pyx_t_3, __pyx_v_val.y); + + /* "squish/voronoi.pyx":111 + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.icentroid+1), val.y) + * return val # <<<<<<<<<<<<<< + * + * cdef inline Vector2D maxcenter(Site* self, Vector2D val) nogil: + */ + __pyx_r = __pyx_v_val; + goto __pyx_L0; + } + + /* "squish/voronoi.pyx":96 + * return val + * + * cdef inline Vector2D centroid(Site* self, Vector2D val) nogil: # <<<<<<<<<<<<<< + * if isnan(val.x): + * return _Vector2D( + */ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "squish/voronoi.pyx":113 + * return val + * + * cdef inline Vector2D maxcenter(Site* self, Vector2D val) nogil: # <<<<<<<<<<<<<< + * if isnan(val.x): + * return _Vector2D( + */ + +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_7voronoi_maxcenter(__pyx_t_6squish_7voronoi_Site *__pyx_v_self, __pyx_t_6squish_4core_Vector2D __pyx_v_val) { + __pyx_t_6squish_4core_Vector2D __pyx_r; + int __pyx_t_1; + __pyx_t_6squish_4core_Pair __pyx_t_2; + __pyx_t_6squish_4core_Pair __pyx_t_3; + + /* "squish/voronoi.pyx":114 + * + * cdef inline Vector2D maxcenter(Site* self, Vector2D val) nogil: + * if isnan(val.x): # <<<<<<<<<<<<<< + * return _Vector2D( + * self.info.site_cache.get(&self.info.site_cache, + */ + __pyx_t_1 = (isnan(((double)__pyx_v_val.x)) != 0); + if (__pyx_t_1) { + + /* "squish/voronoi.pyx":117 + * return _Vector2D( + * self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.imaxcenter) # <<<<<<<<<<<<<< + * ), + * self.info.site_cache.get(&self.info.site_cache, + */ + __pyx_t_2.f0 = __pyx_v_self->arr_index; + __pyx_t_2.f1 = __pyx_v_self->cache->imaxcenter; + + /* "squish/voronoi.pyx":120 + * ), + * self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.imaxcenter+1) # <<<<<<<<<<<<<< + * ) + * ) + */ + __pyx_t_3.f0 = __pyx_v_self->arr_index; + __pyx_t_3.f1 = (__pyx_v_self->cache->imaxcenter + 1); + + /* "squish/voronoi.pyx":115 + * cdef inline Vector2D maxcenter(Site* self, Vector2D val) nogil: + * if isnan(val.x): + * return _Vector2D( # <<<<<<<<<<<<<< + * self.info.site_cache.get(&self.info.site_cache, + * (self.arr_index, self.cache.imaxcenter) + */ + __pyx_r = __pyx_f_6squish_4core__Vector2D(__pyx_v_self->info->site_cache.get((&__pyx_v_self->info->site_cache), __pyx_t_2), __pyx_v_self->info->site_cache.get((&__pyx_v_self->info->site_cache), __pyx_t_3)); + goto __pyx_L0; + + /* "squish/voronoi.pyx":114 + * + * cdef inline Vector2D maxcenter(Site* self, Vector2D val) nogil: + * if isnan(val.x): # <<<<<<<<<<<<<< + * return _Vector2D( + * self.info.site_cache.get(&self.info.site_cache, + */ + } + + /* "squish/voronoi.pyx":124 + * ) + * else: + * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.imaxcenter), val.x) + * self.info.site_cache.set(&self.info.site_cache, + */ + /*else*/ { + + /* "squish/voronoi.pyx":125 + * else: + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.imaxcenter), val.x) # <<<<<<<<<<<<<< + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.imaxcenter+1), val.y) + */ + __pyx_t_3.f0 = __pyx_v_self->arr_index; + __pyx_t_3.f1 = __pyx_v_self->cache->imaxcenter; + + /* "squish/voronoi.pyx":124 + * ) + * else: + * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.imaxcenter), val.x) + * self.info.site_cache.set(&self.info.site_cache, + */ + __pyx_v_self->info->site_cache.set((&__pyx_v_self->info->site_cache), __pyx_t_3, __pyx_v_val.x); + + /* "squish/voronoi.pyx":127 + * (self.arr_index, self.cache.imaxcenter), val.x) + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.imaxcenter+1), val.y) # <<<<<<<<<<<<<< + * return val + * + */ + __pyx_t_3.f0 = __pyx_v_self->arr_index; + __pyx_t_3.f1 = (__pyx_v_self->cache->imaxcenter + 1); + + /* "squish/voronoi.pyx":126 + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.imaxcenter), val.x) + * self.info.site_cache.set(&self.info.site_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.imaxcenter+1), val.y) + * return val + */ + __pyx_v_self->info->site_cache.set((&__pyx_v_self->info->site_cache), __pyx_t_3, __pyx_v_val.y); + + /* "squish/voronoi.pyx":128 + * self.info.site_cache.set(&self.info.site_cache, + * (self.arr_index, self.cache.imaxcenter+1), val.y) + * return val # <<<<<<<<<<<<<< * * */ @@ -7325,12 +4373,12 @@ static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_avg_radius(__pyx_ goto __pyx_L0; } - /* "squish/_squish/voronoi_dcel.pyx":69 - * return val + /* "squish/voronoi.pyx":113 + * return val * - * cdef inline FLOAT_T avg_radius(Site* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.site_cache.get(&self.info.site_cache, + * cdef inline Vector2D maxcenter(Site* self, Vector2D val) nogil: # <<<<<<<<<<<<<< + * if isnan(val.x): + * return _Vector2D( */ /* function exit code */ @@ -7338,177 +4386,125 @@ static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_avg_radius(__pyx_ return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":82 +/* "squish/voronoi.pyx":133 * #### EdgeCacheMap Methods #### * - * cdef inline EdgeCacheMap init_edgecachemap(INT_T iH, INT_T ila, INT_T ida, INT_T ixij, # <<<<<<<<<<<<<< - * INT_T idVdv, INT_T ii2p, INT_T ila_mag, INT_T ida_mag, INT_T iphi, INT_T iB, - * INT_T iF, INT_T ilntan, INT_T icsc, INT_T size) nogil: + * cdef inline EdgeCacheMap _EdgeCacheMap(INT_T iH, INT_T ila, INT_T ida, INT_T ixij, # <<<<<<<<<<<<<< + * INT_T idVdv, INT_T ila_mag, INT_T ida_mag, + * INT_T iarea_p, INT_T icalI, INT_T size) nogil: */ -static CYTHON_INLINE __pyx_t_7_squish_EdgeCacheMap __pyx_f_7_squish_init_edgecachemap(__pyx_t_7_squish_INT_T __pyx_v_iH, __pyx_t_7_squish_INT_T __pyx_v_ila, __pyx_t_7_squish_INT_T __pyx_v_ida, __pyx_t_7_squish_INT_T __pyx_v_ixij, __pyx_t_7_squish_INT_T __pyx_v_idVdv, __pyx_t_7_squish_INT_T __pyx_v_ii2p, __pyx_t_7_squish_INT_T __pyx_v_ila_mag, __pyx_t_7_squish_INT_T __pyx_v_ida_mag, __pyx_t_7_squish_INT_T __pyx_v_iphi, __pyx_t_7_squish_INT_T __pyx_v_iB, __pyx_t_7_squish_INT_T __pyx_v_iF, __pyx_t_7_squish_INT_T __pyx_v_ilntan, __pyx_t_7_squish_INT_T __pyx_v_icsc, __pyx_t_7_squish_INT_T __pyx_v_size) { - __pyx_t_7_squish_EdgeCacheMap __pyx_v_ec; - __pyx_t_7_squish_EdgeCacheMap __pyx_r; - __pyx_t_7_squish_INT_T __pyx_t_1; - __pyx_t_7_squish_INT_T __pyx_t_2; - __pyx_t_7_squish_INT_T __pyx_t_3; - __pyx_t_7_squish_INT_T __pyx_t_4; - __pyx_t_7_squish_INT_T __pyx_t_5; - __pyx_t_7_squish_INT_T __pyx_t_6; - __pyx_t_7_squish_INT_T __pyx_t_7; - __pyx_t_7_squish_INT_T __pyx_t_8; - __pyx_t_7_squish_INT_T __pyx_t_9; - __pyx_t_7_squish_INT_T __pyx_t_10; - __pyx_t_7_squish_INT_T __pyx_t_11; - __pyx_t_7_squish_INT_T __pyx_t_12; - __pyx_t_7_squish_INT_T __pyx_t_13; - __pyx_t_7_squish_Matrix2x2 (*__pyx_t_14)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Matrix2x2); - __pyx_t_7_squish_Vector2D (*__pyx_t_15)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_Vector2D (*__pyx_t_16)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_Vector2D (*__pyx_t_17)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_Vector2D (*__pyx_t_18)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_Vector2D (*__pyx_t_19)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_FLOAT_T (*__pyx_t_20)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*__pyx_t_21)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*__pyx_t_22)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*__pyx_t_23)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*__pyx_t_24)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*__pyx_t_25)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_FLOAT_T (*__pyx_t_26)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_FLOAT_T); +static CYTHON_INLINE __pyx_t_6squish_7voronoi_EdgeCacheMap __pyx_f_6squish_7voronoi__EdgeCacheMap(__pyx_t_6squish_4core_INT_T __pyx_v_iH, __pyx_t_6squish_4core_INT_T __pyx_v_ila, __pyx_t_6squish_4core_INT_T __pyx_v_ida, __pyx_t_6squish_4core_INT_T __pyx_v_ixij, __pyx_t_6squish_4core_INT_T __pyx_v_idVdv, __pyx_t_6squish_4core_INT_T __pyx_v_ila_mag, __pyx_t_6squish_4core_INT_T __pyx_v_ida_mag, __pyx_t_6squish_4core_INT_T __pyx_v_iarea_p, __pyx_t_6squish_4core_INT_T __pyx_v_icalI, __pyx_t_6squish_4core_INT_T __pyx_v_size) { + __pyx_t_6squish_7voronoi_EdgeCacheMap __pyx_v_ec; + __pyx_t_6squish_7voronoi_EdgeCacheMap __pyx_r; + __pyx_t_6squish_4core_INT_T __pyx_t_1; + __pyx_t_6squish_4core_INT_T __pyx_t_2; + __pyx_t_6squish_4core_INT_T __pyx_t_3; + __pyx_t_6squish_4core_INT_T __pyx_t_4; + __pyx_t_6squish_4core_INT_T __pyx_t_5; + __pyx_t_6squish_4core_Matrix2x2 (*__pyx_t_6)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Matrix2x2); + __pyx_t_6squish_4core_Vector2D (*__pyx_t_7)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*__pyx_t_8)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*__pyx_t_9)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_Vector2D (*__pyx_t_10)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_Vector2D); + __pyx_t_6squish_4core_FLOAT_T (*__pyx_t_11)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*__pyx_t_12)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*__pyx_t_13)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_FLOAT_T); + __pyx_t_6squish_4core_FLOAT_T (*__pyx_t_14)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_4core_FLOAT_T); - /* "squish/_squish/voronoi_dcel.pyx":87 - * cdef EdgeCacheMap ec - * ec.iH, ec.ila, ec.ida, ec.ixij, ec.idVdv, ec.ii2p, ec.ila_mag, ec.ida_mag, ec.iphi, \ - * ec.iB, ec.iF, ec.ilntan, ec.icsc = iH, ila, ida, ixij, idVdv, ii2p, \ # <<<<<<<<<<<<<< - * ila_mag, ida_mag, iphi, iB, iF, ilntan, icsc - * ec.size = size + /* "squish/voronoi.pyx":137 + * INT_T iarea_p, INT_T icalI, INT_T size) nogil: + * cdef EdgeCacheMap ec + * ec.iH, ec.ila, ec.ida, ec.ixij, ec.idVdv = iH, ila, ida, ixij, idVdv # <<<<<<<<<<<<<< + * ec.ila_mag, ec.ida_mag, ec.iarea_p, ec.icalI = ila_mag, ida_mag, iarea_p, icalI + * ec.size = size */ __pyx_t_1 = __pyx_v_iH; __pyx_t_2 = __pyx_v_ila; __pyx_t_3 = __pyx_v_ida; __pyx_t_4 = __pyx_v_ixij; __pyx_t_5 = __pyx_v_idVdv; - __pyx_t_6 = __pyx_v_ii2p; - - /* "squish/_squish/voronoi_dcel.pyx":88 - * ec.iH, ec.ila, ec.ida, ec.ixij, ec.idVdv, ec.ii2p, ec.ila_mag, ec.ida_mag, ec.iphi, \ - * ec.iB, ec.iF, ec.ilntan, ec.icsc = iH, ila, ida, ixij, idVdv, ii2p, \ - * ila_mag, ida_mag, iphi, iB, iF, ilntan, icsc # <<<<<<<<<<<<<< - * ec.size = size - * - */ - __pyx_t_7 = __pyx_v_ila_mag; - __pyx_t_8 = __pyx_v_ida_mag; - __pyx_t_9 = __pyx_v_iphi; - __pyx_t_10 = __pyx_v_iB; - __pyx_t_11 = __pyx_v_iF; - __pyx_t_12 = __pyx_v_ilntan; - __pyx_t_13 = __pyx_v_icsc; - - /* "squish/_squish/voronoi_dcel.pyx":86 - * INT_T iF, INT_T ilntan, INT_T icsc, INT_T size) nogil: - * cdef EdgeCacheMap ec - * ec.iH, ec.ila, ec.ida, ec.ixij, ec.idVdv, ec.ii2p, ec.ila_mag, ec.ida_mag, ec.iphi, \ # <<<<<<<<<<<<<< - * ec.iB, ec.iF, ec.ilntan, ec.icsc = iH, ila, ida, ixij, idVdv, ii2p, \ - * ila_mag, ida_mag, iphi, iB, iF, ilntan, icsc - */ __pyx_v_ec.iH = __pyx_t_1; __pyx_v_ec.ila = __pyx_t_2; __pyx_v_ec.ida = __pyx_t_3; __pyx_v_ec.ixij = __pyx_t_4; __pyx_v_ec.idVdv = __pyx_t_5; - __pyx_v_ec.ii2p = __pyx_t_6; - __pyx_v_ec.ila_mag = __pyx_t_7; - __pyx_v_ec.ida_mag = __pyx_t_8; - __pyx_v_ec.iphi = __pyx_t_9; - /* "squish/_squish/voronoi_dcel.pyx":87 - * cdef EdgeCacheMap ec - * ec.iH, ec.ila, ec.ida, ec.ixij, ec.idVdv, ec.ii2p, ec.ila_mag, ec.ida_mag, ec.iphi, \ - * ec.iB, ec.iF, ec.ilntan, ec.icsc = iH, ila, ida, ixij, idVdv, ii2p, \ # <<<<<<<<<<<<<< - * ila_mag, ida_mag, iphi, iB, iF, ilntan, icsc - * ec.size = size - */ - __pyx_v_ec.iB = __pyx_t_10; - __pyx_v_ec.iF = __pyx_t_11; - __pyx_v_ec.ilntan = __pyx_t_12; - __pyx_v_ec.icsc = __pyx_t_13; - - /* "squish/_squish/voronoi_dcel.pyx":89 - * ec.iB, ec.iF, ec.ilntan, ec.icsc = iH, ila, ida, ixij, idVdv, ii2p, \ - * ila_mag, ida_mag, iphi, iB, iF, ilntan, icsc - * ec.size = size # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":138 + * cdef EdgeCacheMap ec + * ec.iH, ec.ila, ec.ida, ec.ixij, ec.idVdv = iH, ila, ida, ixij, idVdv + * ec.ila_mag, ec.ida_mag, ec.iarea_p, ec.icalI = ila_mag, ida_mag, iarea_p, icalI # <<<<<<<<<<<<<< + * ec.size = size * - * ec.H, ec.la, ec.da, ec.xij, ec.dVdv, ec.i2p, ec.la_mag, ec.da_mag, ec.phi, ec.B, ec.F, \ + */ + __pyx_t_5 = __pyx_v_ila_mag; + __pyx_t_4 = __pyx_v_ida_mag; + __pyx_t_3 = __pyx_v_iarea_p; + __pyx_t_2 = __pyx_v_icalI; + __pyx_v_ec.ila_mag = __pyx_t_5; + __pyx_v_ec.ida_mag = __pyx_t_4; + __pyx_v_ec.iarea_p = __pyx_t_3; + __pyx_v_ec.icalI = __pyx_t_2; + + /* "squish/voronoi.pyx":139 + * ec.iH, ec.ila, ec.ida, ec.ixij, ec.idVdv = iH, ila, ida, ixij, idVdv + * ec.ila_mag, ec.ida_mag, ec.iarea_p, ec.icalI = ila_mag, ida_mag, iarea_p, icalI + * ec.size = size # <<<<<<<<<<<<<< + * + * ec.H, ec.la, ec.da, ec.xij, ec.dVdv = H, la, da, xij, dVdv */ __pyx_v_ec.size = __pyx_v_size; - /* "squish/_squish/voronoi_dcel.pyx":92 + /* "squish/voronoi.pyx":141 + * ec.size = size * - * ec.H, ec.la, ec.da, ec.xij, ec.dVdv, ec.i2p, ec.la_mag, ec.da_mag, ec.phi, ec.B, ec.F, \ - * ec.lntan, ec.csc = H, la, da, xij, dVdv, i2p, la_mag, da_mag, phi, B, F, lntan, csc # <<<<<<<<<<<<<< - * - * return ec - */ - __pyx_t_14 = __pyx_f_7_squish_H; - __pyx_t_15 = __pyx_f_7_squish_la; - __pyx_t_16 = __pyx_f_7_squish_da; - __pyx_t_17 = __pyx_f_7_squish_xij; - __pyx_t_18 = __pyx_f_7_squish_dVdv; - __pyx_t_19 = __pyx_f_7_squish_i2p; - __pyx_t_20 = __pyx_f_7_squish_la_mag; - __pyx_t_21 = __pyx_f_7_squish_da_mag; - __pyx_t_22 = __pyx_f_7_squish_phi; - __pyx_t_23 = __pyx_f_7_squish_B; - __pyx_t_24 = __pyx_f_7_squish_F; - __pyx_t_25 = __pyx_f_7_squish_lntan; - __pyx_t_26 = __pyx_f_7_squish_csc; - - /* "squish/_squish/voronoi_dcel.pyx":91 - * ec.size = size - * - * ec.H, ec.la, ec.da, ec.xij, ec.dVdv, ec.i2p, ec.la_mag, ec.da_mag, ec.phi, ec.B, ec.F, \ # <<<<<<<<<<<<<< - * ec.lntan, ec.csc = H, la, da, xij, dVdv, i2p, la_mag, da_mag, phi, B, F, lntan, csc + * ec.H, ec.la, ec.da, ec.xij, ec.dVdv = H, la, da, xij, dVdv # <<<<<<<<<<<<<< + * ec.la_mag, ec.da_mag, ec.area_p, ec.calI = la_mag, da_mag, area_p, calI * */ - __pyx_v_ec.H = __pyx_t_14; - __pyx_v_ec.la = __pyx_t_15; - __pyx_v_ec.da = __pyx_t_16; - __pyx_v_ec.xij = __pyx_t_17; - __pyx_v_ec.dVdv = __pyx_t_18; - __pyx_v_ec.i2p = __pyx_t_19; - __pyx_v_ec.la_mag = __pyx_t_20; - __pyx_v_ec.da_mag = __pyx_t_21; - __pyx_v_ec.phi = __pyx_t_22; - __pyx_v_ec.B = __pyx_t_23; - __pyx_v_ec.F = __pyx_t_24; + __pyx_t_6 = __pyx_f_6squish_7voronoi_H; + __pyx_t_7 = __pyx_f_6squish_7voronoi_la; + __pyx_t_8 = __pyx_f_6squish_7voronoi_da; + __pyx_t_9 = __pyx_f_6squish_7voronoi_xij; + __pyx_t_10 = __pyx_f_6squish_7voronoi_dVdv; + __pyx_v_ec.H = __pyx_t_6; + __pyx_v_ec.la = __pyx_t_7; + __pyx_v_ec.da = __pyx_t_8; + __pyx_v_ec.xij = __pyx_t_9; + __pyx_v_ec.dVdv = __pyx_t_10; - /* "squish/_squish/voronoi_dcel.pyx":92 + /* "squish/voronoi.pyx":142 * - * ec.H, ec.la, ec.da, ec.xij, ec.dVdv, ec.i2p, ec.la_mag, ec.da_mag, ec.phi, ec.B, ec.F, \ - * ec.lntan, ec.csc = H, la, da, xij, dVdv, i2p, la_mag, da_mag, phi, B, F, lntan, csc # <<<<<<<<<<<<<< + * ec.H, ec.la, ec.da, ec.xij, ec.dVdv = H, la, da, xij, dVdv + * ec.la_mag, ec.da_mag, ec.area_p, ec.calI = la_mag, da_mag, area_p, calI # <<<<<<<<<<<<<< * - * return ec + * return ec */ - __pyx_v_ec.lntan = __pyx_t_25; - __pyx_v_ec.csc = __pyx_t_26; + __pyx_t_11 = __pyx_f_6squish_7voronoi_la_mag; + __pyx_t_12 = __pyx_f_6squish_7voronoi_da_mag; + __pyx_t_13 = __pyx_f_6squish_7voronoi_area_p; + __pyx_t_14 = __pyx_f_6squish_7voronoi_calI; + __pyx_v_ec.la_mag = __pyx_t_11; + __pyx_v_ec.da_mag = __pyx_t_12; + __pyx_v_ec.area_p = __pyx_t_13; + __pyx_v_ec.calI = __pyx_t_14; - /* "squish/_squish/voronoi_dcel.pyx":94 - * ec.lntan, ec.csc = H, la, da, xij, dVdv, i2p, la_mag, da_mag, phi, B, F, lntan, csc - * - * return ec # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":144 + * ec.la_mag, ec.da_mag, ec.area_p, ec.calI = la_mag, da_mag, area_p, calI * + * return ec # <<<<<<<<<<<<<< * + * cdef inline Matrix2x2 H(HalfEdge* self, Matrix2x2 val) nogil: */ __pyx_r = __pyx_v_ec; goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":82 + /* "squish/voronoi.pyx":133 * #### EdgeCacheMap Methods #### * - * cdef inline EdgeCacheMap init_edgecachemap(INT_T iH, INT_T ila, INT_T ida, INT_T ixij, # <<<<<<<<<<<<<< - * INT_T idVdv, INT_T ii2p, INT_T ila_mag, INT_T ida_mag, INT_T iphi, INT_T iB, - * INT_T iF, INT_T ilntan, INT_T icsc, INT_T size) nogil: + * cdef inline EdgeCacheMap _EdgeCacheMap(INT_T iH, INT_T ila, INT_T ida, INT_T ixij, # <<<<<<<<<<<<<< + * INT_T idVdv, INT_T ila_mag, INT_T ida_mag, + * INT_T iarea_p, INT_T icalI, INT_T size) nogil: */ /* function exit code */ @@ -7516,180 +4512,180 @@ static CYTHON_INLINE __pyx_t_7_squish_EdgeCacheMap __pyx_f_7_squish_init_edgecac return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":97 - * +/* "squish/voronoi.pyx":146 + * return ec * * cdef inline Matrix2x2 H(HalfEdge* self, Matrix2x2 val) nogil: # <<<<<<<<<<<<<< - * if isnan(val.a): - * return init.Matrix2x2( + * if isnan(val.a): + * return _Matrix2x2( */ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_H(__pyx_t_7_squish_HalfEdge *__pyx_v_self, __pyx_t_7_squish_Matrix2x2 __pyx_v_val) { - __pyx_t_7_squish_Matrix2x2 __pyx_r; +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_7voronoi_H(__pyx_t_6squish_7voronoi_HalfEdge *__pyx_v_self, __pyx_t_6squish_4core_Matrix2x2 __pyx_v_val) { + __pyx_t_6squish_4core_Matrix2x2 __pyx_r; int __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_3; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_4; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_5; + __pyx_t_6squish_4core_Pair __pyx_t_2; + __pyx_t_6squish_4core_Pair __pyx_t_3; + __pyx_t_6squish_4core_Pair __pyx_t_4; + __pyx_t_6squish_4core_Pair __pyx_t_5; - /* "squish/_squish/voronoi_dcel.pyx":98 + /* "squish/voronoi.pyx":147 * * cdef inline Matrix2x2 H(HalfEdge* self, Matrix2x2 val) nogil: - * if isnan(val.a): # <<<<<<<<<<<<<< - * return init.Matrix2x2( - * self.info.edge_cache.get(&self.info.edge_cache, + * if isnan(val.a): # <<<<<<<<<<<<<< + * return _Matrix2x2( + * self.info.edge_cache.get(&self.info.edge_cache, */ __pyx_t_1 = (isnan(((double)__pyx_v_val.a)) != 0); if (__pyx_t_1) { - /* "squish/_squish/voronoi_dcel.pyx":101 - * return init.Matrix2x2( - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.iH) # <<<<<<<<<<<<<< - * ), - * self.info.edge_cache.get(&self.info.edge_cache, + /* "squish/voronoi.pyx":150 + * return _Matrix2x2( + * self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.iH) # <<<<<<<<<<<<<< + * ), + * self.info.edge_cache.get(&self.info.edge_cache, */ __pyx_t_2.f0 = __pyx_v_self->arr_index; __pyx_t_2.f1 = __pyx_v_self->cache->iH; - /* "squish/_squish/voronoi_dcel.pyx":104 - * ), - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.iH+1) # <<<<<<<<<<<<<< - * ), - * self.info.edge_cache.get(&self.info.edge_cache, + /* "squish/voronoi.pyx":153 + * ), + * self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.iH+1) # <<<<<<<<<<<<<< + * ), + * self.info.edge_cache.get(&self.info.edge_cache, */ __pyx_t_3.f0 = __pyx_v_self->arr_index; __pyx_t_3.f1 = (__pyx_v_self->cache->iH + 1); - /* "squish/_squish/voronoi_dcel.pyx":107 - * ), - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.iH+2) # <<<<<<<<<<<<<< - * ), - * self.info.edge_cache.get(&self.info.edge_cache, + /* "squish/voronoi.pyx":156 + * ), + * self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.iH+2) # <<<<<<<<<<<<<< + * ), + * self.info.edge_cache.get(&self.info.edge_cache, */ __pyx_t_4.f0 = __pyx_v_self->arr_index; __pyx_t_4.f1 = (__pyx_v_self->cache->iH + 2); - /* "squish/_squish/voronoi_dcel.pyx":110 - * ), - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.iH+3) # <<<<<<<<<<<<<< - * ), - * ) + /* "squish/voronoi.pyx":159 + * ), + * self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.iH+3) # <<<<<<<<<<<<<< + * ), + * ) */ __pyx_t_5.f0 = __pyx_v_self->arr_index; __pyx_t_5.f1 = (__pyx_v_self->cache->iH + 3); - /* "squish/_squish/voronoi_dcel.pyx":99 + /* "squish/voronoi.pyx":148 * cdef inline Matrix2x2 H(HalfEdge* self, Matrix2x2 val) nogil: - * if isnan(val.a): - * return init.Matrix2x2( # <<<<<<<<<<<<<< - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.iH) + * if isnan(val.a): + * return _Matrix2x2( # <<<<<<<<<<<<<< + * self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.iH) */ - __pyx_r = __pyx_v_7_squish_init.Matrix2x2(__pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_2), __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_3), __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_4), __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_5)); + __pyx_r = __pyx_f_6squish_4core__Matrix2x2(__pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_2), __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_3), __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_4), __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_5)); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":98 + /* "squish/voronoi.pyx":147 * * cdef inline Matrix2x2 H(HalfEdge* self, Matrix2x2 val) nogil: - * if isnan(val.a): # <<<<<<<<<<<<<< - * return init.Matrix2x2( - * self.info.edge_cache.get(&self.info.edge_cache, + * if isnan(val.a): # <<<<<<<<<<<<<< + * return _Matrix2x2( + * self.info.edge_cache.get(&self.info.edge_cache, */ } - /* "squish/_squish/voronoi_dcel.pyx":114 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iH), val.a) - * self.info.edge_cache.set(&self.info.edge_cache, + /* "squish/voronoi.pyx":163 + * ) + * else: + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iH), val.a) + * self.info.edge_cache.set(&self.info.edge_cache, */ /*else*/ { - /* "squish/_squish/voronoi_dcel.pyx":115 - * else: - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.iH), val.a) # <<<<<<<<<<<<<< - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.iH+1), val.b) + /* "squish/voronoi.pyx":164 + * else: + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.iH), val.a) # <<<<<<<<<<<<<< + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.iH+1), val.b) */ __pyx_t_5.f0 = __pyx_v_self->arr_index; __pyx_t_5.f1 = __pyx_v_self->cache->iH; - /* "squish/_squish/voronoi_dcel.pyx":114 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iH), val.a) - * self.info.edge_cache.set(&self.info.edge_cache, + /* "squish/voronoi.pyx":163 + * ) + * else: + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iH), val.a) + * self.info.edge_cache.set(&self.info.edge_cache, */ __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_5, __pyx_v_val.a); - /* "squish/_squish/voronoi_dcel.pyx":117 - * (self.arr_index, self.cache.iH), val.a) - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.iH+1), val.b) # <<<<<<<<<<<<<< - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.iH+2), val.c) + /* "squish/voronoi.pyx":166 + * (self.arr_index, self.cache.iH), val.a) + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.iH+1), val.b) # <<<<<<<<<<<<<< + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.iH+2), val.c) */ __pyx_t_5.f0 = __pyx_v_self->arr_index; __pyx_t_5.f1 = (__pyx_v_self->cache->iH + 1); - /* "squish/_squish/voronoi_dcel.pyx":116 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.iH), val.a) - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iH+1), val.b) - * self.info.edge_cache.set(&self.info.edge_cache, + /* "squish/voronoi.pyx":165 + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.iH), val.a) + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iH+1), val.b) + * self.info.edge_cache.set(&self.info.edge_cache, */ __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_5, __pyx_v_val.b); - /* "squish/_squish/voronoi_dcel.pyx":119 - * (self.arr_index, self.cache.iH+1), val.b) - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.iH+2), val.c) # <<<<<<<<<<<<<< - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.iH+3), val.d) + /* "squish/voronoi.pyx":168 + * (self.arr_index, self.cache.iH+1), val.b) + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.iH+2), val.c) # <<<<<<<<<<<<<< + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.iH+3), val.d) */ __pyx_t_5.f0 = __pyx_v_self->arr_index; __pyx_t_5.f1 = (__pyx_v_self->cache->iH + 2); - /* "squish/_squish/voronoi_dcel.pyx":118 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.iH+1), val.b) - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iH+2), val.c) - * self.info.edge_cache.set(&self.info.edge_cache, + /* "squish/voronoi.pyx":167 + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.iH+1), val.b) + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iH+2), val.c) + * self.info.edge_cache.set(&self.info.edge_cache, */ __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_5, __pyx_v_val.c); - /* "squish/_squish/voronoi_dcel.pyx":121 - * (self.arr_index, self.cache.iH+2), val.c) - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.iH+3), val.d) # <<<<<<<<<<<<<< - * return val + /* "squish/voronoi.pyx":170 + * (self.arr_index, self.cache.iH+2), val.c) + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.iH+3), val.d) # <<<<<<<<<<<<<< + * return val * */ __pyx_t_5.f0 = __pyx_v_self->arr_index; __pyx_t_5.f1 = (__pyx_v_self->cache->iH + 3); - /* "squish/_squish/voronoi_dcel.pyx":120 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.iH+2), val.c) - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iH+3), val.d) - * return val + /* "squish/voronoi.pyx":169 + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.iH+2), val.c) + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iH+3), val.d) + * return val */ __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_5, __pyx_v_val.d); - /* "squish/_squish/voronoi_dcel.pyx":122 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.iH+3), val.d) - * return val # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":171 + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.iH+3), val.d) + * return val # <<<<<<<<<<<<<< * * cdef inline Vector2D la(HalfEdge* self, Vector2D val) nogil: */ @@ -7697,12 +4693,12 @@ static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_H(__pyx_t_7_squ goto __pyx_L0; } - /* "squish/_squish/voronoi_dcel.pyx":97 - * + /* "squish/voronoi.pyx":146 + * return ec * * cdef inline Matrix2x2 H(HalfEdge* self, Matrix2x2 val) nogil: # <<<<<<<<<<<<<< - * if isnan(val.a): - * return init.Matrix2x2( + * if isnan(val.a): + * return _Matrix2x2( */ /* function exit code */ @@ -7710,120 +4706,120 @@ static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_H(__pyx_t_7_squ return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":124 - * return val +/* "squish/voronoi.pyx":173 + * return val * * cdef inline Vector2D la(HalfEdge* self, Vector2D val) nogil: # <<<<<<<<<<<<<< - * if isnan(val.x): - * return init.Vector2D( + * if isnan(val.x): + * return _Vector2D( */ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_la(__pyx_t_7_squish_HalfEdge *__pyx_v_self, __pyx_t_7_squish_Vector2D __pyx_v_val) { - __pyx_t_7_squish_Vector2D __pyx_r; +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_7voronoi_la(__pyx_t_6squish_7voronoi_HalfEdge *__pyx_v_self, __pyx_t_6squish_4core_Vector2D __pyx_v_val) { + __pyx_t_6squish_4core_Vector2D __pyx_r; int __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_3; + __pyx_t_6squish_4core_Pair __pyx_t_2; + __pyx_t_6squish_4core_Pair __pyx_t_3; - /* "squish/_squish/voronoi_dcel.pyx":125 + /* "squish/voronoi.pyx":174 * * cdef inline Vector2D la(HalfEdge* self, Vector2D val) nogil: - * if isnan(val.x): # <<<<<<<<<<<<<< - * return init.Vector2D( - * self.info.edge_cache.get(&self.info.edge_cache, + * if isnan(val.x): # <<<<<<<<<<<<<< + * return _Vector2D( + * self.info.edge_cache.get(&self.info.edge_cache, */ __pyx_t_1 = (isnan(((double)__pyx_v_val.x)) != 0); if (__pyx_t_1) { - /* "squish/_squish/voronoi_dcel.pyx":128 - * return init.Vector2D( - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ila) # <<<<<<<<<<<<<< - * ), - * self.info.edge_cache.get(&self.info.edge_cache, + /* "squish/voronoi.pyx":177 + * return _Vector2D( + * self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.ila) # <<<<<<<<<<<<<< + * ), + * self.info.edge_cache.get(&self.info.edge_cache, */ __pyx_t_2.f0 = __pyx_v_self->arr_index; __pyx_t_2.f1 = __pyx_v_self->cache->ila; - /* "squish/_squish/voronoi_dcel.pyx":131 - * ), - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ila+1) # <<<<<<<<<<<<<< - * ) - * ) + /* "squish/voronoi.pyx":180 + * ), + * self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.ila+1) # <<<<<<<<<<<<<< + * ) + * ) */ __pyx_t_3.f0 = __pyx_v_self->arr_index; __pyx_t_3.f1 = (__pyx_v_self->cache->ila + 1); - /* "squish/_squish/voronoi_dcel.pyx":126 + /* "squish/voronoi.pyx":175 * cdef inline Vector2D la(HalfEdge* self, Vector2D val) nogil: - * if isnan(val.x): - * return init.Vector2D( # <<<<<<<<<<<<<< - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ila) + * if isnan(val.x): + * return _Vector2D( # <<<<<<<<<<<<<< + * self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.ila) */ - __pyx_r = __pyx_v_7_squish_init.Vector2D(__pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_2), __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_3)); + __pyx_r = __pyx_f_6squish_4core__Vector2D(__pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_2), __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_3)); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":125 + /* "squish/voronoi.pyx":174 * * cdef inline Vector2D la(HalfEdge* self, Vector2D val) nogil: - * if isnan(val.x): # <<<<<<<<<<<<<< - * return init.Vector2D( - * self.info.edge_cache.get(&self.info.edge_cache, + * if isnan(val.x): # <<<<<<<<<<<<<< + * return _Vector2D( + * self.info.edge_cache.get(&self.info.edge_cache, */ } - /* "squish/_squish/voronoi_dcel.pyx":135 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ila), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, + /* "squish/voronoi.pyx":184 + * ) + * else: + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.ila), val.x) + * self.info.edge_cache.set(&self.info.edge_cache, */ /*else*/ { - /* "squish/_squish/voronoi_dcel.pyx":136 - * else: - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ila), val.x) # <<<<<<<<<<<<<< - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ila+1), val.y) + /* "squish/voronoi.pyx":185 + * else: + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.ila), val.x) # <<<<<<<<<<<<<< + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.ila+1), val.y) */ __pyx_t_3.f0 = __pyx_v_self->arr_index; __pyx_t_3.f1 = __pyx_v_self->cache->ila; - /* "squish/_squish/voronoi_dcel.pyx":135 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ila), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, + /* "squish/voronoi.pyx":184 + * ) + * else: + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.ila), val.x) + * self.info.edge_cache.set(&self.info.edge_cache, */ __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_3, __pyx_v_val.x); - /* "squish/_squish/voronoi_dcel.pyx":138 - * (self.arr_index, self.cache.ila), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ila+1), val.y) # <<<<<<<<<<<<<< - * return val + /* "squish/voronoi.pyx":187 + * (self.arr_index, self.cache.ila), val.x) + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.ila+1), val.y) # <<<<<<<<<<<<<< + * return val * */ __pyx_t_3.f0 = __pyx_v_self->arr_index; __pyx_t_3.f1 = (__pyx_v_self->cache->ila + 1); - /* "squish/_squish/voronoi_dcel.pyx":137 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ila), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ila+1), val.y) - * return val + /* "squish/voronoi.pyx":186 + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.ila), val.x) + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.ila+1), val.y) + * return val */ __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_3, __pyx_v_val.y); - /* "squish/_squish/voronoi_dcel.pyx":139 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ila+1), val.y) - * return val # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":188 + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.ila+1), val.y) + * return val # <<<<<<<<<<<<<< * * cdef inline Vector2D da(HalfEdge* self, Vector2D val) nogil: */ @@ -7831,12 +4827,12 @@ static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_la(__pyx_t_7_squ goto __pyx_L0; } - /* "squish/_squish/voronoi_dcel.pyx":124 - * return val + /* "squish/voronoi.pyx":173 + * return val * * cdef inline Vector2D la(HalfEdge* self, Vector2D val) nogil: # <<<<<<<<<<<<<< - * if isnan(val.x): - * return init.Vector2D( + * if isnan(val.x): + * return _Vector2D( */ /* function exit code */ @@ -7844,120 +4840,120 @@ static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_la(__pyx_t_7_squ return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":141 - * return val +/* "squish/voronoi.pyx":190 + * return val * * cdef inline Vector2D da(HalfEdge* self, Vector2D val) nogil: # <<<<<<<<<<<<<< - * if isnan(val.x): - * return init.Vector2D( + * if isnan(val.x): + * return _Vector2D( */ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_da(__pyx_t_7_squish_HalfEdge *__pyx_v_self, __pyx_t_7_squish_Vector2D __pyx_v_val) { - __pyx_t_7_squish_Vector2D __pyx_r; +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_7voronoi_da(__pyx_t_6squish_7voronoi_HalfEdge *__pyx_v_self, __pyx_t_6squish_4core_Vector2D __pyx_v_val) { + __pyx_t_6squish_4core_Vector2D __pyx_r; int __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_3; + __pyx_t_6squish_4core_Pair __pyx_t_2; + __pyx_t_6squish_4core_Pair __pyx_t_3; - /* "squish/_squish/voronoi_dcel.pyx":142 + /* "squish/voronoi.pyx":191 * * cdef inline Vector2D da(HalfEdge* self, Vector2D val) nogil: - * if isnan(val.x): # <<<<<<<<<<<<<< - * return init.Vector2D( - * self.info.edge_cache.get(&self.info.edge_cache, + * if isnan(val.x): # <<<<<<<<<<<<<< + * return _Vector2D( + * self.info.edge_cache.get(&self.info.edge_cache, */ __pyx_t_1 = (isnan(((double)__pyx_v_val.x)) != 0); if (__pyx_t_1) { - /* "squish/_squish/voronoi_dcel.pyx":145 - * return init.Vector2D( - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ida) # <<<<<<<<<<<<<< - * ), - * self.info.edge_cache.get(&self.info.edge_cache, + /* "squish/voronoi.pyx":194 + * return _Vector2D( + * self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.ida) # <<<<<<<<<<<<<< + * ), + * self.info.edge_cache.get(&self.info.edge_cache, */ __pyx_t_2.f0 = __pyx_v_self->arr_index; __pyx_t_2.f1 = __pyx_v_self->cache->ida; - /* "squish/_squish/voronoi_dcel.pyx":148 - * ), - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ida+1) # <<<<<<<<<<<<<< - * ) - * ) + /* "squish/voronoi.pyx":197 + * ), + * self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.ida+1) # <<<<<<<<<<<<<< + * ) + * ) */ __pyx_t_3.f0 = __pyx_v_self->arr_index; __pyx_t_3.f1 = (__pyx_v_self->cache->ida + 1); - /* "squish/_squish/voronoi_dcel.pyx":143 + /* "squish/voronoi.pyx":192 * cdef inline Vector2D da(HalfEdge* self, Vector2D val) nogil: - * if isnan(val.x): - * return init.Vector2D( # <<<<<<<<<<<<<< - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ida) + * if isnan(val.x): + * return _Vector2D( # <<<<<<<<<<<<<< + * self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.ida) */ - __pyx_r = __pyx_v_7_squish_init.Vector2D(__pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_2), __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_3)); + __pyx_r = __pyx_f_6squish_4core__Vector2D(__pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_2), __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_3)); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":142 + /* "squish/voronoi.pyx":191 * * cdef inline Vector2D da(HalfEdge* self, Vector2D val) nogil: - * if isnan(val.x): # <<<<<<<<<<<<<< - * return init.Vector2D( - * self.info.edge_cache.get(&self.info.edge_cache, + * if isnan(val.x): # <<<<<<<<<<<<<< + * return _Vector2D( + * self.info.edge_cache.get(&self.info.edge_cache, */ } - /* "squish/_squish/voronoi_dcel.pyx":152 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ida), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, + /* "squish/voronoi.pyx":201 + * ) + * else: + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.ida), val.x) + * self.info.edge_cache.set(&self.info.edge_cache, */ /*else*/ { - /* "squish/_squish/voronoi_dcel.pyx":153 - * else: - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ida), val.x) # <<<<<<<<<<<<<< - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ida+1), val.y) + /* "squish/voronoi.pyx":202 + * else: + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.ida), val.x) # <<<<<<<<<<<<<< + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.ida+1), val.y) */ __pyx_t_3.f0 = __pyx_v_self->arr_index; __pyx_t_3.f1 = __pyx_v_self->cache->ida; - /* "squish/_squish/voronoi_dcel.pyx":152 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ida), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, + /* "squish/voronoi.pyx":201 + * ) + * else: + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.ida), val.x) + * self.info.edge_cache.set(&self.info.edge_cache, */ __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_3, __pyx_v_val.x); - /* "squish/_squish/voronoi_dcel.pyx":155 - * (self.arr_index, self.cache.ida), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ida+1), val.y) # <<<<<<<<<<<<<< - * return val + /* "squish/voronoi.pyx":204 + * (self.arr_index, self.cache.ida), val.x) + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.ida+1), val.y) # <<<<<<<<<<<<<< + * return val * */ __pyx_t_3.f0 = __pyx_v_self->arr_index; __pyx_t_3.f1 = (__pyx_v_self->cache->ida + 1); - /* "squish/_squish/voronoi_dcel.pyx":154 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ida), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ida+1), val.y) - * return val + /* "squish/voronoi.pyx":203 + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.ida), val.x) + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.ida+1), val.y) + * return val */ __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_3, __pyx_v_val.y); - /* "squish/_squish/voronoi_dcel.pyx":156 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ida+1), val.y) - * return val # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":205 + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.ida+1), val.y) + * return val # <<<<<<<<<<<<<< * * cdef inline Vector2D xij(HalfEdge* self, Vector2D val) nogil: */ @@ -7965,12 +4961,12 @@ static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_da(__pyx_t_7_squ goto __pyx_L0; } - /* "squish/_squish/voronoi_dcel.pyx":141 - * return val + /* "squish/voronoi.pyx":190 + * return val * * cdef inline Vector2D da(HalfEdge* self, Vector2D val) nogil: # <<<<<<<<<<<<<< - * if isnan(val.x): - * return init.Vector2D( + * if isnan(val.x): + * return _Vector2D( */ /* function exit code */ @@ -7978,120 +4974,120 @@ static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_da(__pyx_t_7_squ return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":158 - * return val +/* "squish/voronoi.pyx":207 + * return val * * cdef inline Vector2D xij(HalfEdge* self, Vector2D val) nogil: # <<<<<<<<<<<<<< - * if isnan(val.x): - * return init.Vector2D( + * if isnan(val.x): + * return _Vector2D( */ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_xij(__pyx_t_7_squish_HalfEdge *__pyx_v_self, __pyx_t_7_squish_Vector2D __pyx_v_val) { - __pyx_t_7_squish_Vector2D __pyx_r; +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_7voronoi_xij(__pyx_t_6squish_7voronoi_HalfEdge *__pyx_v_self, __pyx_t_6squish_4core_Vector2D __pyx_v_val) { + __pyx_t_6squish_4core_Vector2D __pyx_r; int __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_3; + __pyx_t_6squish_4core_Pair __pyx_t_2; + __pyx_t_6squish_4core_Pair __pyx_t_3; - /* "squish/_squish/voronoi_dcel.pyx":159 + /* "squish/voronoi.pyx":208 * * cdef inline Vector2D xij(HalfEdge* self, Vector2D val) nogil: - * if isnan(val.x): # <<<<<<<<<<<<<< - * return init.Vector2D( - * self.info.edge_cache.get(&self.info.edge_cache, + * if isnan(val.x): # <<<<<<<<<<<<<< + * return _Vector2D( + * self.info.edge_cache.get(&self.info.edge_cache, */ __pyx_t_1 = (isnan(((double)__pyx_v_val.x)) != 0); if (__pyx_t_1) { - /* "squish/_squish/voronoi_dcel.pyx":162 - * return init.Vector2D( - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ixij) # <<<<<<<<<<<<<< - * ), - * self.info.edge_cache.get(&self.info.edge_cache, + /* "squish/voronoi.pyx":211 + * return _Vector2D( + * self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.ixij) # <<<<<<<<<<<<<< + * ), + * self.info.edge_cache.get(&self.info.edge_cache, */ __pyx_t_2.f0 = __pyx_v_self->arr_index; __pyx_t_2.f1 = __pyx_v_self->cache->ixij; - /* "squish/_squish/voronoi_dcel.pyx":165 - * ), - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ixij+1) # <<<<<<<<<<<<<< - * ) - * ) + /* "squish/voronoi.pyx":214 + * ), + * self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.ixij+1) # <<<<<<<<<<<<<< + * ) + * ) */ __pyx_t_3.f0 = __pyx_v_self->arr_index; __pyx_t_3.f1 = (__pyx_v_self->cache->ixij + 1); - /* "squish/_squish/voronoi_dcel.pyx":160 + /* "squish/voronoi.pyx":209 * cdef inline Vector2D xij(HalfEdge* self, Vector2D val) nogil: - * if isnan(val.x): - * return init.Vector2D( # <<<<<<<<<<<<<< - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ixij) + * if isnan(val.x): + * return _Vector2D( # <<<<<<<<<<<<<< + * self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.ixij) */ - __pyx_r = __pyx_v_7_squish_init.Vector2D(__pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_2), __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_3)); + __pyx_r = __pyx_f_6squish_4core__Vector2D(__pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_2), __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_3)); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":159 + /* "squish/voronoi.pyx":208 * * cdef inline Vector2D xij(HalfEdge* self, Vector2D val) nogil: - * if isnan(val.x): # <<<<<<<<<<<<<< - * return init.Vector2D( - * self.info.edge_cache.get(&self.info.edge_cache, + * if isnan(val.x): # <<<<<<<<<<<<<< + * return _Vector2D( + * self.info.edge_cache.get(&self.info.edge_cache, */ } - /* "squish/_squish/voronoi_dcel.pyx":169 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ixij), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, + /* "squish/voronoi.pyx":218 + * ) + * else: + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.ixij), val.x) + * self.info.edge_cache.set(&self.info.edge_cache, */ /*else*/ { - /* "squish/_squish/voronoi_dcel.pyx":170 - * else: - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ixij), val.x) # <<<<<<<<<<<<<< - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ixij+1), val.y) + /* "squish/voronoi.pyx":219 + * else: + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.ixij), val.x) # <<<<<<<<<<<<<< + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.ixij+1), val.y) */ __pyx_t_3.f0 = __pyx_v_self->arr_index; __pyx_t_3.f1 = __pyx_v_self->cache->ixij; - /* "squish/_squish/voronoi_dcel.pyx":169 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ixij), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, + /* "squish/voronoi.pyx":218 + * ) + * else: + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.ixij), val.x) + * self.info.edge_cache.set(&self.info.edge_cache, */ __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_3, __pyx_v_val.x); - /* "squish/_squish/voronoi_dcel.pyx":172 - * (self.arr_index, self.cache.ixij), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ixij+1), val.y) # <<<<<<<<<<<<<< - * return val + /* "squish/voronoi.pyx":221 + * (self.arr_index, self.cache.ixij), val.x) + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.ixij+1), val.y) # <<<<<<<<<<<<<< + * return val * */ __pyx_t_3.f0 = __pyx_v_self->arr_index; __pyx_t_3.f1 = (__pyx_v_self->cache->ixij + 1); - /* "squish/_squish/voronoi_dcel.pyx":171 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ixij), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ixij+1), val.y) - * return val + /* "squish/voronoi.pyx":220 + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.ixij), val.x) + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.ixij+1), val.y) + * return val */ __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_3, __pyx_v_val.y); - /* "squish/_squish/voronoi_dcel.pyx":173 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ixij+1), val.y) - * return val # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":222 + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.ixij+1), val.y) + * return val # <<<<<<<<<<<<<< * * cdef inline Vector2D dVdv(HalfEdge* self, Vector2D val) nogil: */ @@ -8099,12 +5095,12 @@ static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_xij(__pyx_t_7_sq goto __pyx_L0; } - /* "squish/_squish/voronoi_dcel.pyx":158 - * return val + /* "squish/voronoi.pyx":207 + * return val * * cdef inline Vector2D xij(HalfEdge* self, Vector2D val) nogil: # <<<<<<<<<<<<<< - * if isnan(val.x): - * return init.Vector2D( + * if isnan(val.x): + * return _Vector2D( */ /* function exit code */ @@ -8112,133 +5108,133 @@ static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_xij(__pyx_t_7_sq return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":175 - * return val +/* "squish/voronoi.pyx":224 + * return val * * cdef inline Vector2D dVdv(HalfEdge* self, Vector2D val) nogil: # <<<<<<<<<<<<<< - * if isnan(val.x): - * return init.Vector2D( + * if isnan(val.x): + * return _Vector2D( */ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_dVdv(__pyx_t_7_squish_HalfEdge *__pyx_v_self, __pyx_t_7_squish_Vector2D __pyx_v_val) { - __pyx_t_7_squish_Vector2D __pyx_r; +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_7voronoi_dVdv(__pyx_t_6squish_7voronoi_HalfEdge *__pyx_v_self, __pyx_t_6squish_4core_Vector2D __pyx_v_val) { + __pyx_t_6squish_4core_Vector2D __pyx_r; int __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_3; + __pyx_t_6squish_4core_Pair __pyx_t_2; + __pyx_t_6squish_4core_Pair __pyx_t_3; - /* "squish/_squish/voronoi_dcel.pyx":176 + /* "squish/voronoi.pyx":225 * * cdef inline Vector2D dVdv(HalfEdge* self, Vector2D val) nogil: - * if isnan(val.x): # <<<<<<<<<<<<<< - * return init.Vector2D( - * self.info.edge_cache.get(&self.info.edge_cache, + * if isnan(val.x): # <<<<<<<<<<<<<< + * return _Vector2D( + * self.info.edge_cache.get(&self.info.edge_cache, */ __pyx_t_1 = (isnan(((double)__pyx_v_val.x)) != 0); if (__pyx_t_1) { - /* "squish/_squish/voronoi_dcel.pyx":179 - * return init.Vector2D( - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.idVdv) # <<<<<<<<<<<<<< - * ), - * self.info.edge_cache.get(&self.info.edge_cache, + /* "squish/voronoi.pyx":228 + * return _Vector2D( + * self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.idVdv) # <<<<<<<<<<<<<< + * ), + * self.info.edge_cache.get(&self.info.edge_cache, */ __pyx_t_2.f0 = __pyx_v_self->arr_index; __pyx_t_2.f1 = __pyx_v_self->cache->idVdv; - /* "squish/_squish/voronoi_dcel.pyx":182 - * ), - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.idVdv+1) # <<<<<<<<<<<<<< - * ) - * ) + /* "squish/voronoi.pyx":231 + * ), + * self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.idVdv+1) # <<<<<<<<<<<<<< + * ) + * ) */ __pyx_t_3.f0 = __pyx_v_self->arr_index; __pyx_t_3.f1 = (__pyx_v_self->cache->idVdv + 1); - /* "squish/_squish/voronoi_dcel.pyx":177 + /* "squish/voronoi.pyx":226 * cdef inline Vector2D dVdv(HalfEdge* self, Vector2D val) nogil: - * if isnan(val.x): - * return init.Vector2D( # <<<<<<<<<<<<<< - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.idVdv) + * if isnan(val.x): + * return _Vector2D( # <<<<<<<<<<<<<< + * self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.idVdv) */ - __pyx_r = __pyx_v_7_squish_init.Vector2D(__pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_2), __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_3)); + __pyx_r = __pyx_f_6squish_4core__Vector2D(__pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_2), __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_3)); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":176 + /* "squish/voronoi.pyx":225 * * cdef inline Vector2D dVdv(HalfEdge* self, Vector2D val) nogil: - * if isnan(val.x): # <<<<<<<<<<<<<< - * return init.Vector2D( - * self.info.edge_cache.get(&self.info.edge_cache, + * if isnan(val.x): # <<<<<<<<<<<<<< + * return _Vector2D( + * self.info.edge_cache.get(&self.info.edge_cache, */ } - /* "squish/_squish/voronoi_dcel.pyx":186 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.idVdv), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, + /* "squish/voronoi.pyx":235 + * ) + * else: + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.idVdv), val.x) + * self.info.edge_cache.set(&self.info.edge_cache, */ /*else*/ { - /* "squish/_squish/voronoi_dcel.pyx":187 - * else: - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.idVdv), val.x) # <<<<<<<<<<<<<< - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.idVdv+1), val.y) + /* "squish/voronoi.pyx":236 + * else: + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.idVdv), val.x) # <<<<<<<<<<<<<< + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.idVdv+1), val.y) */ __pyx_t_3.f0 = __pyx_v_self->arr_index; __pyx_t_3.f1 = __pyx_v_self->cache->idVdv; - /* "squish/_squish/voronoi_dcel.pyx":186 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.idVdv), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, + /* "squish/voronoi.pyx":235 + * ) + * else: + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.idVdv), val.x) + * self.info.edge_cache.set(&self.info.edge_cache, */ __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_3, __pyx_v_val.x); - /* "squish/_squish/voronoi_dcel.pyx":189 - * (self.arr_index, self.cache.idVdv), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.idVdv+1), val.y) # <<<<<<<<<<<<<< - * return val + /* "squish/voronoi.pyx":238 + * (self.arr_index, self.cache.idVdv), val.x) + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.idVdv+1), val.y) # <<<<<<<<<<<<<< + * return val * */ __pyx_t_3.f0 = __pyx_v_self->arr_index; __pyx_t_3.f1 = (__pyx_v_self->cache->idVdv + 1); - /* "squish/_squish/voronoi_dcel.pyx":188 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.idVdv), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.idVdv+1), val.y) - * return val + /* "squish/voronoi.pyx":237 + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.idVdv), val.x) + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.idVdv+1), val.y) + * return val */ __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_3, __pyx_v_val.y); - /* "squish/_squish/voronoi_dcel.pyx":190 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.idVdv+1), val.y) - * return val # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":239 + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.idVdv+1), val.y) + * return val # <<<<<<<<<<<<<< * - * cdef inline Vector2D i2p(HalfEdge* self, Vector2D val) nogil: + * cdef inline FLOAT_T la_mag(HalfEdge* self, FLOAT_T val) nogil: */ __pyx_r = __pyx_v_val; goto __pyx_L0; } - /* "squish/_squish/voronoi_dcel.pyx":175 - * return val + /* "squish/voronoi.pyx":224 + * return val * * cdef inline Vector2D dVdv(HalfEdge* self, Vector2D val) nogil: # <<<<<<<<<<<<<< - * if isnan(val.x): - * return init.Vector2D( + * if isnan(val.x): + * return _Vector2D( */ /* function exit code */ @@ -8246,224 +5242,90 @@ static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_dVdv(__pyx_t_7_s return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":192 - * return val - * - * cdef inline Vector2D i2p(HalfEdge* self, Vector2D val) nogil: # <<<<<<<<<<<<<< - * if isnan(val.x): - * return init.Vector2D( - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_i2p(__pyx_t_7_squish_HalfEdge *__pyx_v_self, __pyx_t_7_squish_Vector2D __pyx_v_val) { - __pyx_t_7_squish_Vector2D __pyx_r; - int __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_3; - - /* "squish/_squish/voronoi_dcel.pyx":193 - * - * cdef inline Vector2D i2p(HalfEdge* self, Vector2D val) nogil: - * if isnan(val.x): # <<<<<<<<<<<<<< - * return init.Vector2D( - * self.info.edge_cache.get(&self.info.edge_cache, - */ - __pyx_t_1 = (isnan(((double)__pyx_v_val.x)) != 0); - if (__pyx_t_1) { - - /* "squish/_squish/voronoi_dcel.pyx":196 - * return init.Vector2D( - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ii2p) # <<<<<<<<<<<<<< - * ), - * self.info.edge_cache.get(&self.info.edge_cache, - */ - __pyx_t_2.f0 = __pyx_v_self->arr_index; - __pyx_t_2.f1 = __pyx_v_self->cache->ii2p; - - /* "squish/_squish/voronoi_dcel.pyx":199 - * ), - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ii2p+1) # <<<<<<<<<<<<<< - * ) - * ) - */ - __pyx_t_3.f0 = __pyx_v_self->arr_index; - __pyx_t_3.f1 = (__pyx_v_self->cache->ii2p + 1); - - /* "squish/_squish/voronoi_dcel.pyx":194 - * cdef inline Vector2D i2p(HalfEdge* self, Vector2D val) nogil: - * if isnan(val.x): - * return init.Vector2D( # <<<<<<<<<<<<<< - * self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ii2p) - */ - __pyx_r = __pyx_v_7_squish_init.Vector2D(__pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_2), __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_3)); - goto __pyx_L0; - - /* "squish/_squish/voronoi_dcel.pyx":193 - * - * cdef inline Vector2D i2p(HalfEdge* self, Vector2D val) nogil: - * if isnan(val.x): # <<<<<<<<<<<<<< - * return init.Vector2D( - * self.info.edge_cache.get(&self.info.edge_cache, - */ - } - - /* "squish/_squish/voronoi_dcel.pyx":203 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ii2p), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, - */ - /*else*/ { - - /* "squish/_squish/voronoi_dcel.pyx":204 - * else: - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ii2p), val.x) # <<<<<<<<<<<<<< - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ii2p+1), val.y) - */ - __pyx_t_3.f0 = __pyx_v_self->arr_index; - __pyx_t_3.f1 = __pyx_v_self->cache->ii2p; - - /* "squish/_squish/voronoi_dcel.pyx":203 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ii2p), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, - */ - __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_3, __pyx_v_val.x); - - /* "squish/_squish/voronoi_dcel.pyx":206 - * (self.arr_index, self.cache.ii2p), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ii2p+1), val.y) # <<<<<<<<<<<<<< - * return val - * - */ - __pyx_t_3.f0 = __pyx_v_self->arr_index; - __pyx_t_3.f1 = (__pyx_v_self->cache->ii2p + 1); - - /* "squish/_squish/voronoi_dcel.pyx":205 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ii2p), val.x) - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ii2p+1), val.y) - * return val - */ - __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_3, __pyx_v_val.y); - - /* "squish/_squish/voronoi_dcel.pyx":207 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ii2p+1), val.y) - * return val # <<<<<<<<<<<<<< - * - * cdef inline FLOAT_T la_mag(HalfEdge* self, FLOAT_T val) nogil: - */ - __pyx_r = __pyx_v_val; - goto __pyx_L0; - } - - /* "squish/_squish/voronoi_dcel.pyx":192 - * return val - * - * cdef inline Vector2D i2p(HalfEdge* self, Vector2D val) nogil: # <<<<<<<<<<<<<< - * if isnan(val.x): - * return init.Vector2D( - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/voronoi_dcel.pyx":209 - * return val +/* "squish/voronoi.pyx":241 + * return val * * cdef inline FLOAT_T la_mag(HalfEdge* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, + * if isnan(val): + * return self.info.edge_cache.get(&self.info.edge_cache, */ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_la_mag(__pyx_t_7_squish_HalfEdge *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_val) { - __pyx_t_7_squish_FLOAT_T __pyx_r; +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_7voronoi_la_mag(__pyx_t_6squish_7voronoi_HalfEdge *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_val) { + __pyx_t_6squish_4core_FLOAT_T __pyx_r; int __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; + __pyx_t_6squish_4core_Pair __pyx_t_2; - /* "squish/_squish/voronoi_dcel.pyx":210 + /* "squish/voronoi.pyx":242 * * cdef inline FLOAT_T la_mag(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ila_mag) + * if isnan(val): # <<<<<<<<<<<<<< + * return self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.ila_mag) */ __pyx_t_1 = (isnan(((double)__pyx_v_val)) != 0); if (__pyx_t_1) { - /* "squish/_squish/voronoi_dcel.pyx":212 - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ila_mag) # <<<<<<<<<<<<<< - * ) - * else: + /* "squish/voronoi.pyx":244 + * if isnan(val): + * return self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.ila_mag) # <<<<<<<<<<<<<< + * ) + * else: */ __pyx_t_2.f0 = __pyx_v_self->arr_index; __pyx_t_2.f1 = __pyx_v_self->cache->ila_mag; - /* "squish/_squish/voronoi_dcel.pyx":211 + /* "squish/voronoi.pyx":243 * cdef inline FLOAT_T la_mag(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ila_mag) - * ) + * if isnan(val): + * return self.info.edge_cache.get(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.ila_mag) + * ) */ __pyx_r = __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_2); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":210 + /* "squish/voronoi.pyx":242 * * cdef inline FLOAT_T la_mag(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ila_mag) + * if isnan(val): # <<<<<<<<<<<<<< + * return self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.ila_mag) */ } - /* "squish/_squish/voronoi_dcel.pyx":215 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ila_mag), val) - * return val + /* "squish/voronoi.pyx":247 + * ) + * else: + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.ila_mag), val) + * return val */ /*else*/ { - /* "squish/_squish/voronoi_dcel.pyx":216 - * else: - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ila_mag), val) # <<<<<<<<<<<<<< - * return val + /* "squish/voronoi.pyx":248 + * else: + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.ila_mag), val) # <<<<<<<<<<<<<< + * return val * */ __pyx_t_2.f0 = __pyx_v_self->arr_index; __pyx_t_2.f1 = __pyx_v_self->cache->ila_mag; - /* "squish/_squish/voronoi_dcel.pyx":215 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ila_mag), val) - * return val + /* "squish/voronoi.pyx":247 + * ) + * else: + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.ila_mag), val) + * return val */ __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_2, __pyx_v_val); - /* "squish/_squish/voronoi_dcel.pyx":217 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ila_mag), val) - * return val # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":249 + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.ila_mag), val) + * return val # <<<<<<<<<<<<<< * * cdef inline FLOAT_T da_mag(HalfEdge* self, FLOAT_T val) nogil: */ @@ -8471,12 +5333,12 @@ static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_la_mag(__pyx_t_7_ goto __pyx_L0; } - /* "squish/_squish/voronoi_dcel.pyx":209 - * return val + /* "squish/voronoi.pyx":241 + * return val * * cdef inline FLOAT_T la_mag(HalfEdge* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, + * if isnan(val): + * return self.info.edge_cache.get(&self.info.edge_cache, */ /* function exit code */ @@ -8484,103 +5346,103 @@ static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_la_mag(__pyx_t_7_ return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":219 - * return val +/* "squish/voronoi.pyx":251 + * return val * * cdef inline FLOAT_T da_mag(HalfEdge* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, + * if isnan(val): + * return self.info.edge_cache.get(&self.info.edge_cache, */ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_da_mag(__pyx_t_7_squish_HalfEdge *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_val) { - __pyx_t_7_squish_FLOAT_T __pyx_r; +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_7voronoi_da_mag(__pyx_t_6squish_7voronoi_HalfEdge *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_val) { + __pyx_t_6squish_4core_FLOAT_T __pyx_r; int __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; + __pyx_t_6squish_4core_Pair __pyx_t_2; - /* "squish/_squish/voronoi_dcel.pyx":220 + /* "squish/voronoi.pyx":252 * * cdef inline FLOAT_T da_mag(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ida_mag) + * if isnan(val): # <<<<<<<<<<<<<< + * return self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.ida_mag) */ __pyx_t_1 = (isnan(((double)__pyx_v_val)) != 0); if (__pyx_t_1) { - /* "squish/_squish/voronoi_dcel.pyx":222 - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ida_mag) # <<<<<<<<<<<<<< - * ) - * else: + /* "squish/voronoi.pyx":254 + * if isnan(val): + * return self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.ida_mag) # <<<<<<<<<<<<<< + * ) + * else: */ __pyx_t_2.f0 = __pyx_v_self->arr_index; __pyx_t_2.f1 = __pyx_v_self->cache->ida_mag; - /* "squish/_squish/voronoi_dcel.pyx":221 + /* "squish/voronoi.pyx":253 * cdef inline FLOAT_T da_mag(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ida_mag) - * ) + * if isnan(val): + * return self.info.edge_cache.get(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.ida_mag) + * ) */ __pyx_r = __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_2); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":220 + /* "squish/voronoi.pyx":252 * * cdef inline FLOAT_T da_mag(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ida_mag) + * if isnan(val): # <<<<<<<<<<<<<< + * return self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.ida_mag) */ } - /* "squish/_squish/voronoi_dcel.pyx":225 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ida_mag), val) - * return val + /* "squish/voronoi.pyx":257 + * ) + * else: + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.ida_mag), val) + * return val */ /*else*/ { - /* "squish/_squish/voronoi_dcel.pyx":226 - * else: - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ida_mag), val) # <<<<<<<<<<<<<< - * return val + /* "squish/voronoi.pyx":258 + * else: + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.ida_mag), val) # <<<<<<<<<<<<<< + * return val * */ __pyx_t_2.f0 = __pyx_v_self->arr_index; __pyx_t_2.f1 = __pyx_v_self->cache->ida_mag; - /* "squish/_squish/voronoi_dcel.pyx":225 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ida_mag), val) - * return val + /* "squish/voronoi.pyx":257 + * ) + * else: + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.ida_mag), val) + * return val */ __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_2, __pyx_v_val); - /* "squish/_squish/voronoi_dcel.pyx":227 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ida_mag), val) - * return val # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":259 + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.ida_mag), val) + * return val # <<<<<<<<<<<<<< * - * cdef inline FLOAT_T phi(HalfEdge* self, FLOAT_T val) nogil: + * cdef inline FLOAT_T area_p(HalfEdge* self, FLOAT_T val) nogil: */ __pyx_r = __pyx_v_val; goto __pyx_L0; } - /* "squish/_squish/voronoi_dcel.pyx":219 - * return val + /* "squish/voronoi.pyx":251 + * return val * * cdef inline FLOAT_T da_mag(HalfEdge* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, + * if isnan(val): + * return self.info.edge_cache.get(&self.info.edge_cache, */ /* function exit code */ @@ -8588,103 +5450,103 @@ static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_da_mag(__pyx_t_7_ return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":229 - * return val +/* "squish/voronoi.pyx":261 + * return val * - * cdef inline FLOAT_T phi(HalfEdge* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, + * cdef inline FLOAT_T area_p(HalfEdge* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< + * if isnan(val): + * return self.info.edge_cache.get(&self.info.edge_cache, */ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_phi(__pyx_t_7_squish_HalfEdge *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_val) { - __pyx_t_7_squish_FLOAT_T __pyx_r; +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_7voronoi_area_p(__pyx_t_6squish_7voronoi_HalfEdge *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_val) { + __pyx_t_6squish_4core_FLOAT_T __pyx_r; int __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; + __pyx_t_6squish_4core_Pair __pyx_t_2; - /* "squish/_squish/voronoi_dcel.pyx":230 + /* "squish/voronoi.pyx":262 * - * cdef inline FLOAT_T phi(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.iphi) + * cdef inline FLOAT_T area_p(HalfEdge* self, FLOAT_T val) nogil: + * if isnan(val): # <<<<<<<<<<<<<< + * return self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.iarea_p) */ __pyx_t_1 = (isnan(((double)__pyx_v_val)) != 0); if (__pyx_t_1) { - /* "squish/_squish/voronoi_dcel.pyx":232 - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.iphi) # <<<<<<<<<<<<<< - * ) - * else: + /* "squish/voronoi.pyx":264 + * if isnan(val): + * return self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.iarea_p) # <<<<<<<<<<<<<< + * ) + * else: */ __pyx_t_2.f0 = __pyx_v_self->arr_index; - __pyx_t_2.f1 = __pyx_v_self->cache->iphi; + __pyx_t_2.f1 = __pyx_v_self->cache->iarea_p; - /* "squish/_squish/voronoi_dcel.pyx":231 - * cdef inline FLOAT_T phi(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iphi) - * ) + /* "squish/voronoi.pyx":263 + * cdef inline FLOAT_T area_p(HalfEdge* self, FLOAT_T val) nogil: + * if isnan(val): + * return self.info.edge_cache.get(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iarea_p) + * ) */ __pyx_r = __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_2); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":230 + /* "squish/voronoi.pyx":262 * - * cdef inline FLOAT_T phi(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.iphi) + * cdef inline FLOAT_T area_p(HalfEdge* self, FLOAT_T val) nogil: + * if isnan(val): # <<<<<<<<<<<<<< + * return self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.iarea_p) */ } - /* "squish/_squish/voronoi_dcel.pyx":235 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iphi), val) - * return val + /* "squish/voronoi.pyx":267 + * ) + * else: + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iarea_p), val) + * return val */ /*else*/ { - /* "squish/_squish/voronoi_dcel.pyx":236 - * else: - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.iphi), val) # <<<<<<<<<<<<<< - * return val + /* "squish/voronoi.pyx":268 + * else: + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.iarea_p), val) # <<<<<<<<<<<<<< + * return val * */ __pyx_t_2.f0 = __pyx_v_self->arr_index; - __pyx_t_2.f1 = __pyx_v_self->cache->iphi; + __pyx_t_2.f1 = __pyx_v_self->cache->iarea_p; - /* "squish/_squish/voronoi_dcel.pyx":235 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iphi), val) - * return val + /* "squish/voronoi.pyx":267 + * ) + * else: + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.iarea_p), val) + * return val */ __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_2, __pyx_v_val); - /* "squish/_squish/voronoi_dcel.pyx":237 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.iphi), val) - * return val # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":269 + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.iarea_p), val) + * return val # <<<<<<<<<<<<<< * - * cdef inline FLOAT_T B(HalfEdge* self, FLOAT_T val) nogil: + * cdef inline FLOAT_T calI(HalfEdge* self, FLOAT_T val) nogil: */ __pyx_r = __pyx_v_val; goto __pyx_L0; } - /* "squish/_squish/voronoi_dcel.pyx":229 - * return val + /* "squish/voronoi.pyx":261 + * return val * - * cdef inline FLOAT_T phi(HalfEdge* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, + * cdef inline FLOAT_T area_p(HalfEdge* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< + * if isnan(val): + * return self.info.edge_cache.get(&self.info.edge_cache, */ /* function exit code */ @@ -8692,103 +5554,103 @@ static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_phi(__pyx_t_7_squ return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":239 - * return val +/* "squish/voronoi.pyx":271 + * return val * - * cdef inline FLOAT_T B(HalfEdge* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, + * cdef inline FLOAT_T calI(HalfEdge* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< + * if isnan(val): + * return self.info.edge_cache.get(&self.info.edge_cache, */ -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_B(__pyx_t_7_squish_HalfEdge *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_val) { - __pyx_t_7_squish_FLOAT_T __pyx_r; +static CYTHON_INLINE __pyx_t_6squish_4core_FLOAT_T __pyx_f_6squish_7voronoi_calI(__pyx_t_6squish_7voronoi_HalfEdge *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_val) { + __pyx_t_6squish_4core_FLOAT_T __pyx_r; int __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; + __pyx_t_6squish_4core_Pair __pyx_t_2; - /* "squish/_squish/voronoi_dcel.pyx":240 + /* "squish/voronoi.pyx":272 * - * cdef inline FLOAT_T B(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.iB) + * cdef inline FLOAT_T calI(HalfEdge* self, FLOAT_T val) nogil: + * if isnan(val): # <<<<<<<<<<<<<< + * return self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.icalI) */ __pyx_t_1 = (isnan(((double)__pyx_v_val)) != 0); if (__pyx_t_1) { - /* "squish/_squish/voronoi_dcel.pyx":242 - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.iB) # <<<<<<<<<<<<<< - * ) - * else: + /* "squish/voronoi.pyx":274 + * if isnan(val): + * return self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.icalI) # <<<<<<<<<<<<<< + * ) + * else: */ __pyx_t_2.f0 = __pyx_v_self->arr_index; - __pyx_t_2.f1 = __pyx_v_self->cache->iB; + __pyx_t_2.f1 = __pyx_v_self->cache->icalI; - /* "squish/_squish/voronoi_dcel.pyx":241 - * cdef inline FLOAT_T B(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iB) - * ) + /* "squish/voronoi.pyx":273 + * cdef inline FLOAT_T calI(HalfEdge* self, FLOAT_T val) nogil: + * if isnan(val): + * return self.info.edge_cache.get(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.icalI) + * ) */ __pyx_r = __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_2); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":240 + /* "squish/voronoi.pyx":272 * - * cdef inline FLOAT_T B(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.iB) + * cdef inline FLOAT_T calI(HalfEdge* self, FLOAT_T val) nogil: + * if isnan(val): # <<<<<<<<<<<<<< + * return self.info.edge_cache.get(&self.info.edge_cache, + * (self.arr_index, self.cache.icalI) */ } - /* "squish/_squish/voronoi_dcel.pyx":245 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iB), val) - * return val + /* "squish/voronoi.pyx":277 + * ) + * else: + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.icalI), val) + * return val */ /*else*/ { - /* "squish/_squish/voronoi_dcel.pyx":246 - * else: - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.iB), val) # <<<<<<<<<<<<<< - * return val + /* "squish/voronoi.pyx":278 + * else: + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.icalI), val) # <<<<<<<<<<<<<< + * return val * */ __pyx_t_2.f0 = __pyx_v_self->arr_index; - __pyx_t_2.f1 = __pyx_v_self->cache->iB; + __pyx_t_2.f1 = __pyx_v_self->cache->icalI; - /* "squish/_squish/voronoi_dcel.pyx":245 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iB), val) - * return val + /* "squish/voronoi.pyx":277 + * ) + * else: + * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< + * (self.arr_index, self.cache.icalI), val) + * return val */ __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_2, __pyx_v_val); - /* "squish/_squish/voronoi_dcel.pyx":247 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.iB), val) - * return val # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":279 + * self.info.edge_cache.set(&self.info.edge_cache, + * (self.arr_index, self.cache.icalI), val) + * return val # <<<<<<<<<<<<<< * - * cdef inline FLOAT_T F(HalfEdge* self, FLOAT_T val) nogil: + * #### VoronoiInfo Methods #### */ __pyx_r = __pyx_v_val; goto __pyx_L0; } - /* "squish/_squish/voronoi_dcel.pyx":239 - * return val + /* "squish/voronoi.pyx":271 + * return val * - * cdef inline FLOAT_T B(HalfEdge* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, + * cdef inline FLOAT_T calI(HalfEdge* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< + * if isnan(val): + * return self.info.edge_cache.get(&self.info.edge_cache, */ /* function exit code */ @@ -8796,484 +5658,188 @@ static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_B(__pyx_t_7_squis return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":249 - * return val - * - * cdef inline FLOAT_T F(HalfEdge* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, - */ - -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_F(__pyx_t_7_squish_HalfEdge *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_val) { - __pyx_t_7_squish_FLOAT_T __pyx_r; - int __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; - - /* "squish/_squish/voronoi_dcel.pyx":250 - * - * cdef inline FLOAT_T F(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.iF) - */ - __pyx_t_1 = (isnan(((double)__pyx_v_val)) != 0); - if (__pyx_t_1) { - - /* "squish/_squish/voronoi_dcel.pyx":252 - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.iF) # <<<<<<<<<<<<<< - * ) - * else: - */ - __pyx_t_2.f0 = __pyx_v_self->arr_index; - __pyx_t_2.f1 = __pyx_v_self->cache->iF; - - /* "squish/_squish/voronoi_dcel.pyx":251 - * cdef inline FLOAT_T F(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iF) - * ) - */ - __pyx_r = __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_2); - goto __pyx_L0; - - /* "squish/_squish/voronoi_dcel.pyx":250 - * - * cdef inline FLOAT_T F(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.iF) - */ - } - - /* "squish/_squish/voronoi_dcel.pyx":255 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iF), val) - * return val - */ - /*else*/ { - - /* "squish/_squish/voronoi_dcel.pyx":256 - * else: - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.iF), val) # <<<<<<<<<<<<<< - * return val - * - */ - __pyx_t_2.f0 = __pyx_v_self->arr_index; - __pyx_t_2.f1 = __pyx_v_self->cache->iF; - - /* "squish/_squish/voronoi_dcel.pyx":255 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.iF), val) - * return val - */ - __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_2, __pyx_v_val); - - /* "squish/_squish/voronoi_dcel.pyx":257 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.iF), val) - * return val # <<<<<<<<<<<<<< - * - * cdef inline FLOAT_T lntan(HalfEdge* self, FLOAT_T val) nogil: - */ - __pyx_r = __pyx_v_val; - goto __pyx_L0; - } - - /* "squish/_squish/voronoi_dcel.pyx":249 - * return val - * - * cdef inline FLOAT_T F(HalfEdge* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/voronoi_dcel.pyx":259 - * return val - * - * cdef inline FLOAT_T lntan(HalfEdge* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, - */ - -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_lntan(__pyx_t_7_squish_HalfEdge *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_val) { - __pyx_t_7_squish_FLOAT_T __pyx_r; - int __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; - - /* "squish/_squish/voronoi_dcel.pyx":260 - * - * cdef inline FLOAT_T lntan(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ilntan) - */ - __pyx_t_1 = (isnan(((double)__pyx_v_val)) != 0); - if (__pyx_t_1) { - - /* "squish/_squish/voronoi_dcel.pyx":262 - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ilntan) # <<<<<<<<<<<<<< - * ) - * else: - */ - __pyx_t_2.f0 = __pyx_v_self->arr_index; - __pyx_t_2.f1 = __pyx_v_self->cache->ilntan; - - /* "squish/_squish/voronoi_dcel.pyx":261 - * cdef inline FLOAT_T lntan(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ilntan) - * ) - */ - __pyx_r = __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_2); - goto __pyx_L0; - - /* "squish/_squish/voronoi_dcel.pyx":260 - * - * cdef inline FLOAT_T lntan(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.ilntan) - */ - } - - /* "squish/_squish/voronoi_dcel.pyx":265 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ilntan), val) - * return val - */ - /*else*/ { - - /* "squish/_squish/voronoi_dcel.pyx":266 - * else: - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ilntan), val) # <<<<<<<<<<<<<< - * return val - * - */ - __pyx_t_2.f0 = __pyx_v_self->arr_index; - __pyx_t_2.f1 = __pyx_v_self->cache->ilntan; - - /* "squish/_squish/voronoi_dcel.pyx":265 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.ilntan), val) - * return val - */ - __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_2, __pyx_v_val); - - /* "squish/_squish/voronoi_dcel.pyx":267 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.ilntan), val) - * return val # <<<<<<<<<<<<<< - * - * cdef inline FLOAT_T csc(HalfEdge* self, FLOAT_T val) nogil: - */ - __pyx_r = __pyx_v_val; - goto __pyx_L0; - } - - /* "squish/_squish/voronoi_dcel.pyx":259 - * return val - * - * cdef inline FLOAT_T lntan(HalfEdge* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/voronoi_dcel.pyx":269 - * return val - * - * cdef inline FLOAT_T csc(HalfEdge* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, - */ - -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_csc(__pyx_t_7_squish_HalfEdge *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_val) { - __pyx_t_7_squish_FLOAT_T __pyx_r; - int __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; - - /* "squish/_squish/voronoi_dcel.pyx":270 - * - * cdef inline FLOAT_T csc(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.icsc) - */ - __pyx_t_1 = (isnan(((double)__pyx_v_val)) != 0); - if (__pyx_t_1) { - - /* "squish/_squish/voronoi_dcel.pyx":272 - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.icsc) # <<<<<<<<<<<<<< - * ) - * else: - */ - __pyx_t_2.f0 = __pyx_v_self->arr_index; - __pyx_t_2.f1 = __pyx_v_self->cache->icsc; - - /* "squish/_squish/voronoi_dcel.pyx":271 - * cdef inline FLOAT_T csc(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.icsc) - * ) - */ - __pyx_r = __pyx_v_self->info->edge_cache.get((&__pyx_v_self->info->edge_cache), __pyx_t_2); - goto __pyx_L0; - - /* "squish/_squish/voronoi_dcel.pyx":270 - * - * cdef inline FLOAT_T csc(HalfEdge* self, FLOAT_T val) nogil: - * if isnan(val): # <<<<<<<<<<<<<< - * return self.info.edge_cache.get(&self.info.edge_cache, - * (self.arr_index, self.cache.icsc) - */ - } - - /* "squish/_squish/voronoi_dcel.pyx":275 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.icsc), val) - * return val - */ - /*else*/ { - - /* "squish/_squish/voronoi_dcel.pyx":276 - * else: - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.icsc), val) # <<<<<<<<<<<<<< - * return val - * - */ - __pyx_t_2.f0 = __pyx_v_self->arr_index; - __pyx_t_2.f1 = __pyx_v_self->cache->icsc; - - /* "squish/_squish/voronoi_dcel.pyx":275 - * ) - * else: - * self.info.edge_cache.set(&self.info.edge_cache, # <<<<<<<<<<<<<< - * (self.arr_index, self.cache.icsc), val) - * return val - */ - __pyx_v_self->info->edge_cache.set((&__pyx_v_self->info->edge_cache), __pyx_t_2, __pyx_v_val); - - /* "squish/_squish/voronoi_dcel.pyx":277 - * self.info.edge_cache.set(&self.info.edge_cache, - * (self.arr_index, self.cache.icsc), val) - * return val # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = __pyx_v_val; - goto __pyx_L0; - } - - /* "squish/_squish/voronoi_dcel.pyx":269 - * return val - * - * cdef inline FLOAT_T csc(HalfEdge* self, FLOAT_T val) nogil: # <<<<<<<<<<<<<< - * if isnan(val): - * return self.info.edge_cache.get(&self.info.edge_cache, - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/voronoi_dcel.pyx":282 +/* "squish/voronoi.pyx":283 * #### VoronoiInfo Methods #### * - * cdef inline VoronoiInfo init_voronoiinfo(INT_T [:, ::1] sites, INT_T [:, ::1] edges, # <<<<<<<<<<<<<< - * FLOAT_T [:, ::1] points, FLOAT_T [:, ::1] vertices, - * FLOAT_T [:, ::1] site_cache, FLOAT_T [:, ::1] edge_cache, + * cdef inline VoronoiInfo _VoronoiInfo(INT_T [:, ::1] sites, INT_T [:, ::1] edges, # <<<<<<<<<<<<<< + * FLOAT_T [:, ::1] points, FLOAT_T [:, ::1] vertices, + * FLOAT_T [:, ::1] site_cache, */ -static CYTHON_INLINE __pyx_t_7_squish_VoronoiInfo __pyx_f_7_squish_init_voronoiinfo(__Pyx_memviewslice __pyx_v_sites, __Pyx_memviewslice __pyx_v_edges, __Pyx_memviewslice __pyx_v_points, __Pyx_memviewslice __pyx_v_vertices, __Pyx_memviewslice __pyx_v_site_cache, __Pyx_memviewslice __pyx_v_edge_cache, __pyx_t_7_squish_EdgeCacheMap *__pyx_v_edge_cache_map) { - __pyx_t_7_squish_VoronoiInfo __pyx_v_info; - __pyx_t_7_squish_VoronoiInfo __pyx_r; +static CYTHON_INLINE __pyx_t_6squish_7voronoi_VoronoiInfo __pyx_f_6squish_7voronoi__VoronoiInfo(__Pyx_memviewslice __pyx_v_sites, __Pyx_memviewslice __pyx_v_edges, __Pyx_memviewslice __pyx_v_points, __Pyx_memviewslice __pyx_v_vertices, __Pyx_memviewslice __pyx_v_site_cache, __Pyx_memviewslice __pyx_v_edge_cache, __pyx_t_6squish_7voronoi_EdgeCacheMap *__pyx_v_edge_cache_map) { + __pyx_t_6squish_7voronoi_VoronoiInfo __pyx_v_info; + __pyx_t_6squish_7voronoi_VoronoiInfo __pyx_r; Py_ssize_t __pyx_t_1; Py_ssize_t __pyx_t_2; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_3; + __pyx_t_6squish_4core_Pair __pyx_t_3; - /* "squish/_squish/voronoi_dcel.pyx":287 - * EdgeCacheMap* edge_cache_map) nogil: - * cdef VoronoiInfo info - * info.sites = init_iarray(&sites[0,0], (sites.shape[0], sites.shape[1])) # <<<<<<<<<<<<<< - * info.edges = init_iarray(&edges[0,0], (edges.shape[0], edges.shape[1])) - * info.points = init_farray(&points[0,0], (points.shape[0], points.shape[1])) + /* "squish/voronoi.pyx":289 + * EdgeCacheMap* edge_cache_map) nogil: + * cdef VoronoiInfo info + * info.sites = _IArray(&sites[0,0], (sites.shape[0], sites.shape[1])) # <<<<<<<<<<<<<< + * info.edges = _IArray(&edges[0,0], (edges.shape[0], edges.shape[1])) + * info.points = _FArray( */ __pyx_t_1 = 0; __pyx_t_2 = 0; - __pyx_t_3.f0 = ((__pyx_t_7_squish_INT_T)(__pyx_v_sites.shape[0])); - __pyx_t_3.f1 = ((__pyx_t_7_squish_INT_T)(__pyx_v_sites.shape[1])); - __pyx_v_info.sites = __pyx_f_7_squish_init_iarray((&(*((__pyx_t_7_squish_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_INT_T *) ( /* dim=0 */ (__pyx_v_sites.data + __pyx_t_1 * __pyx_v_sites.strides[0]) )) + __pyx_t_2)) )))), __pyx_t_3); + __pyx_t_3.f0 = ((__pyx_t_6squish_4core_INT_T)(__pyx_v_sites.shape[0])); + __pyx_t_3.f1 = ((__pyx_t_6squish_4core_INT_T)(__pyx_v_sites.shape[1])); + __pyx_v_info.sites = __pyx_f_6squish_4core__IArray((&(*((__pyx_t_6squish_4core_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_INT_T *) ( /* dim=0 */ (__pyx_v_sites.data + __pyx_t_1 * __pyx_v_sites.strides[0]) )) + __pyx_t_2)) )))), __pyx_t_3); - /* "squish/_squish/voronoi_dcel.pyx":288 - * cdef VoronoiInfo info - * info.sites = init_iarray(&sites[0,0], (sites.shape[0], sites.shape[1])) - * info.edges = init_iarray(&edges[0,0], (edges.shape[0], edges.shape[1])) # <<<<<<<<<<<<<< - * info.points = init_farray(&points[0,0], (points.shape[0], points.shape[1])) - * info.vertices = init_farray(&vertices[0,0], + /* "squish/voronoi.pyx":290 + * cdef VoronoiInfo info + * info.sites = _IArray(&sites[0,0], (sites.shape[0], sites.shape[1])) + * info.edges = _IArray(&edges[0,0], (edges.shape[0], edges.shape[1])) # <<<<<<<<<<<<<< + * info.points = _FArray( + * &points[0,0], */ __pyx_t_2 = 0; __pyx_t_1 = 0; - __pyx_t_3.f0 = ((__pyx_t_7_squish_INT_T)(__pyx_v_edges.shape[0])); - __pyx_t_3.f1 = ((__pyx_t_7_squish_INT_T)(__pyx_v_edges.shape[1])); - __pyx_v_info.edges = __pyx_f_7_squish_init_iarray((&(*((__pyx_t_7_squish_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_INT_T *) ( /* dim=0 */ (__pyx_v_edges.data + __pyx_t_2 * __pyx_v_edges.strides[0]) )) + __pyx_t_1)) )))), __pyx_t_3); + __pyx_t_3.f0 = ((__pyx_t_6squish_4core_INT_T)(__pyx_v_edges.shape[0])); + __pyx_t_3.f1 = ((__pyx_t_6squish_4core_INT_T)(__pyx_v_edges.shape[1])); + __pyx_v_info.edges = __pyx_f_6squish_4core__IArray((&(*((__pyx_t_6squish_4core_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_INT_T *) ( /* dim=0 */ (__pyx_v_edges.data + __pyx_t_2 * __pyx_v_edges.strides[0]) )) + __pyx_t_1)) )))), __pyx_t_3); - /* "squish/_squish/voronoi_dcel.pyx":289 - * info.sites = init_iarray(&sites[0,0], (sites.shape[0], sites.shape[1])) - * info.edges = init_iarray(&edges[0,0], (edges.shape[0], edges.shape[1])) - * info.points = init_farray(&points[0,0], (points.shape[0], points.shape[1])) # <<<<<<<<<<<<<< - * info.vertices = init_farray(&vertices[0,0], - * (vertices.shape[0], vertices.shape[1]) - */ - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_t_3.f0 = ((__pyx_t_7_squish_INT_T)(__pyx_v_points.shape[0])); - __pyx_t_3.f1 = ((__pyx_t_7_squish_INT_T)(__pyx_v_points.shape[1])); - __pyx_v_info.points = __pyx_f_7_squish_init_farray((&(*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_points.data + __pyx_t_1 * __pyx_v_points.strides[0]) )) + __pyx_t_2)) )))), __pyx_t_3); - - /* "squish/_squish/voronoi_dcel.pyx":290 - * info.edges = init_iarray(&edges[0,0], (edges.shape[0], edges.shape[1])) - * info.points = init_farray(&points[0,0], (points.shape[0], points.shape[1])) - * info.vertices = init_farray(&vertices[0,0], # <<<<<<<<<<<<<< - * (vertices.shape[0], vertices.shape[1]) - * ) - */ - __pyx_t_2 = 0; - __pyx_t_1 = 0; - - /* "squish/_squish/voronoi_dcel.pyx":291 - * info.points = init_farray(&points[0,0], (points.shape[0], points.shape[1])) - * info.vertices = init_farray(&vertices[0,0], - * (vertices.shape[0], vertices.shape[1]) # <<<<<<<<<<<<<< - * ) - * info.site_cache = init_farray(&site_cache[0,0], - */ - __pyx_t_3.f0 = ((__pyx_t_7_squish_INT_T)(__pyx_v_vertices.shape[0])); - __pyx_t_3.f1 = ((__pyx_t_7_squish_INT_T)(__pyx_v_vertices.shape[1])); - - /* "squish/_squish/voronoi_dcel.pyx":290 - * info.edges = init_iarray(&edges[0,0], (edges.shape[0], edges.shape[1])) - * info.points = init_farray(&points[0,0], (points.shape[0], points.shape[1])) - * info.vertices = init_farray(&vertices[0,0], # <<<<<<<<<<<<<< - * (vertices.shape[0], vertices.shape[1]) - * ) - */ - __pyx_v_info.vertices = __pyx_f_7_squish_init_farray((&(*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_vertices.data + __pyx_t_2 * __pyx_v_vertices.strides[0]) )) + __pyx_t_1)) )))), __pyx_t_3); - - /* "squish/_squish/voronoi_dcel.pyx":293 - * (vertices.shape[0], vertices.shape[1]) - * ) - * info.site_cache = init_farray(&site_cache[0,0], # <<<<<<<<<<<<<< - * (site_cache.shape[0], site_cache.shape[1]) - * ) + /* "squish/voronoi.pyx":292 + * info.edges = _IArray(&edges[0,0], (edges.shape[0], edges.shape[1])) + * info.points = _FArray( + * &points[0,0], # <<<<<<<<<<<<<< + * (points.shape[0], points.shape[1]) + * ) */ __pyx_t_1 = 0; __pyx_t_2 = 0; - /* "squish/_squish/voronoi_dcel.pyx":294 - * ) - * info.site_cache = init_farray(&site_cache[0,0], - * (site_cache.shape[0], site_cache.shape[1]) # <<<<<<<<<<<<<< - * ) - * info.edge_cache = init_farray(&edge_cache[0,0], + /* "squish/voronoi.pyx":293 + * info.points = _FArray( + * &points[0,0], + * (points.shape[0], points.shape[1]) # <<<<<<<<<<<<<< + * ) + * info.vertices = _FArray( */ - __pyx_t_3.f0 = ((__pyx_t_7_squish_INT_T)(__pyx_v_site_cache.shape[0])); - __pyx_t_3.f1 = ((__pyx_t_7_squish_INT_T)(__pyx_v_site_cache.shape[1])); + __pyx_t_3.f0 = ((__pyx_t_6squish_4core_INT_T)(__pyx_v_points.shape[0])); + __pyx_t_3.f1 = ((__pyx_t_6squish_4core_INT_T)(__pyx_v_points.shape[1])); - /* "squish/_squish/voronoi_dcel.pyx":293 - * (vertices.shape[0], vertices.shape[1]) - * ) - * info.site_cache = init_farray(&site_cache[0,0], # <<<<<<<<<<<<<< - * (site_cache.shape[0], site_cache.shape[1]) - * ) + /* "squish/voronoi.pyx":291 + * info.sites = _IArray(&sites[0,0], (sites.shape[0], sites.shape[1])) + * info.edges = _IArray(&edges[0,0], (edges.shape[0], edges.shape[1])) + * info.points = _FArray( # <<<<<<<<<<<<<< + * &points[0,0], + * (points.shape[0], points.shape[1]) */ - __pyx_v_info.site_cache = __pyx_f_7_squish_init_farray((&(*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_site_cache.data + __pyx_t_1 * __pyx_v_site_cache.strides[0]) )) + __pyx_t_2)) )))), __pyx_t_3); + __pyx_v_info.points = __pyx_f_6squish_4core__FArray((&(*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_points.data + __pyx_t_1 * __pyx_v_points.strides[0]) )) + __pyx_t_2)) )))), __pyx_t_3); - /* "squish/_squish/voronoi_dcel.pyx":296 - * (site_cache.shape[0], site_cache.shape[1]) - * ) - * info.edge_cache = init_farray(&edge_cache[0,0], # <<<<<<<<<<<<<< - * (edge_cache.shape[0], edge_cache.shape[1]) - * ) + /* "squish/voronoi.pyx":296 + * ) + * info.vertices = _FArray( + * &vertices[0,0], # <<<<<<<<<<<<<< + * (vertices.shape[0], vertices.shape[1]) + * ) */ __pyx_t_2 = 0; __pyx_t_1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":297 - * ) - * info.edge_cache = init_farray(&edge_cache[0,0], - * (edge_cache.shape[0], edge_cache.shape[1]) # <<<<<<<<<<<<<< - * ) - * info.edge_cache_map = edge_cache_map + /* "squish/voronoi.pyx":297 + * info.vertices = _FArray( + * &vertices[0,0], + * (vertices.shape[0], vertices.shape[1]) # <<<<<<<<<<<<<< + * ) + * info.site_cache = _FArray( */ - __pyx_t_3.f0 = ((__pyx_t_7_squish_INT_T)(__pyx_v_edge_cache.shape[0])); - __pyx_t_3.f1 = ((__pyx_t_7_squish_INT_T)(__pyx_v_edge_cache.shape[1])); + __pyx_t_3.f0 = ((__pyx_t_6squish_4core_INT_T)(__pyx_v_vertices.shape[0])); + __pyx_t_3.f1 = ((__pyx_t_6squish_4core_INT_T)(__pyx_v_vertices.shape[1])); - /* "squish/_squish/voronoi_dcel.pyx":296 - * (site_cache.shape[0], site_cache.shape[1]) - * ) - * info.edge_cache = init_farray(&edge_cache[0,0], # <<<<<<<<<<<<<< - * (edge_cache.shape[0], edge_cache.shape[1]) - * ) + /* "squish/voronoi.pyx":295 + * (points.shape[0], points.shape[1]) + * ) + * info.vertices = _FArray( # <<<<<<<<<<<<<< + * &vertices[0,0], + * (vertices.shape[0], vertices.shape[1]) */ - __pyx_v_info.edge_cache = __pyx_f_7_squish_init_farray((&(*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_edge_cache.data + __pyx_t_2 * __pyx_v_edge_cache.strides[0]) )) + __pyx_t_1)) )))), __pyx_t_3); + __pyx_v_info.vertices = __pyx_f_6squish_4core__FArray((&(*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_vertices.data + __pyx_t_2 * __pyx_v_vertices.strides[0]) )) + __pyx_t_1)) )))), __pyx_t_3); - /* "squish/_squish/voronoi_dcel.pyx":299 - * (edge_cache.shape[0], edge_cache.shape[1]) - * ) - * info.edge_cache_map = edge_cache_map # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":300 + * ) + * info.site_cache = _FArray( + * &site_cache[0,0], # <<<<<<<<<<<<<< + * (site_cache.shape[0], site_cache.shape[1]) + * ) + */ + __pyx_t_1 = 0; + __pyx_t_2 = 0; + + /* "squish/voronoi.pyx":301 + * info.site_cache = _FArray( + * &site_cache[0,0], + * (site_cache.shape[0], site_cache.shape[1]) # <<<<<<<<<<<<<< + * ) + * info.edge_cache = _FArray( + */ + __pyx_t_3.f0 = ((__pyx_t_6squish_4core_INT_T)(__pyx_v_site_cache.shape[0])); + __pyx_t_3.f1 = ((__pyx_t_6squish_4core_INT_T)(__pyx_v_site_cache.shape[1])); + + /* "squish/voronoi.pyx":299 + * (vertices.shape[0], vertices.shape[1]) + * ) + * info.site_cache = _FArray( # <<<<<<<<<<<<<< + * &site_cache[0,0], + * (site_cache.shape[0], site_cache.shape[1]) + */ + __pyx_v_info.site_cache = __pyx_f_6squish_4core__FArray((&(*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_site_cache.data + __pyx_t_1 * __pyx_v_site_cache.strides[0]) )) + __pyx_t_2)) )))), __pyx_t_3); + + /* "squish/voronoi.pyx":304 + * ) + * info.edge_cache = _FArray( + * &edge_cache[0,0], # <<<<<<<<<<<<<< + * (edge_cache.shape[0], edge_cache.shape[1]) + * ) + */ + __pyx_t_2 = 0; + __pyx_t_1 = 0; + + /* "squish/voronoi.pyx":305 + * info.edge_cache = _FArray( + * &edge_cache[0,0], + * (edge_cache.shape[0], edge_cache.shape[1]) # <<<<<<<<<<<<<< + * ) + * info.edge_cache_map = edge_cache_map + */ + __pyx_t_3.f0 = ((__pyx_t_6squish_4core_INT_T)(__pyx_v_edge_cache.shape[0])); + __pyx_t_3.f1 = ((__pyx_t_6squish_4core_INT_T)(__pyx_v_edge_cache.shape[1])); + + /* "squish/voronoi.pyx":303 + * (site_cache.shape[0], site_cache.shape[1]) + * ) + * info.edge_cache = _FArray( # <<<<<<<<<<<<<< + * &edge_cache[0,0], + * (edge_cache.shape[0], edge_cache.shape[1]) + */ + __pyx_v_info.edge_cache = __pyx_f_6squish_4core__FArray((&(*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_edge_cache.data + __pyx_t_2 * __pyx_v_edge_cache.strides[0]) )) + __pyx_t_1)) )))), __pyx_t_3); + + /* "squish/voronoi.pyx":307 + * (edge_cache.shape[0], edge_cache.shape[1]) + * ) + * info.edge_cache_map = edge_cache_map # <<<<<<<<<<<<<< * - * return info + * return info */ __pyx_v_info.edge_cache_map = __pyx_v_edge_cache_map; - /* "squish/_squish/voronoi_dcel.pyx":301 - * info.edge_cache_map = edge_cache_map + /* "squish/voronoi.pyx":309 + * info.edge_cache_map = edge_cache_map * - * return info # <<<<<<<<<<<<<< + * return info # <<<<<<<<<<<<<< * * */ __pyx_r = __pyx_v_info; goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":282 + /* "squish/voronoi.pyx":283 * #### VoronoiInfo Methods #### * - * cdef inline VoronoiInfo init_voronoiinfo(INT_T [:, ::1] sites, INT_T [:, ::1] edges, # <<<<<<<<<<<<<< - * FLOAT_T [:, ::1] points, FLOAT_T [:, ::1] vertices, - * FLOAT_T [:, ::1] site_cache, FLOAT_T [:, ::1] edge_cache, + * cdef inline VoronoiInfo _VoronoiInfo(INT_T [:, ::1] sites, INT_T [:, ::1] edges, # <<<<<<<<<<<<<< + * FLOAT_T [:, ::1] points, FLOAT_T [:, ::1] vertices, + * FLOAT_T [:, ::1] site_cache, */ /* function exit code */ @@ -9281,71 +5847,71 @@ static CYTHON_INLINE __pyx_t_7_squish_VoronoiInfo __pyx_f_7_squish_init_voronoii return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":306 +/* "squish/voronoi.pyx":314 * #### Site Methods #### * - * cdef inline Site init_site(INT_T arr_index, VoronoiInfo* info) nogil: # <<<<<<<<<<<<<< - * cdef Site site - * site.arr_index, site.info, site.cache = arr_index, info, &SITE_CACHE_MAP + * cdef inline Site _Site(INT_T arr_index, VoronoiInfo* info) nogil: # <<<<<<<<<<<<<< + * cdef Site site + * site.arr_index, site.info, site.cache = arr_index, info, &SITE_CACHE_MAP */ -static CYTHON_INLINE __pyx_t_7_squish_Site __pyx_f_7_squish_init_site(__pyx_t_7_squish_INT_T __pyx_v_arr_index, __pyx_t_7_squish_VoronoiInfo *__pyx_v_info) { - __pyx_t_7_squish_Site __pyx_v_site; - __pyx_t_7_squish_Site __pyx_r; - __pyx_t_7_squish_INT_T __pyx_t_1; - __pyx_t_7_squish_VoronoiInfo *__pyx_t_2; - __pyx_t_7_squish_SiteCacheMap *__pyx_t_3; - __pyx_t_7_squish_INT_T (*__pyx_t_4)(__pyx_t_7_squish_Site *); - __pyx_t_7_squish_Vector2D (*__pyx_t_5)(__pyx_t_7_squish_Site *); - __pyx_t_7_squish_HalfEdge (*__pyx_t_6)(__pyx_t_7_squish_Site *); - __pyx_t_7_squish_INT_T (*__pyx_t_7)(__pyx_t_7_squish_Site *); +static CYTHON_INLINE __pyx_t_6squish_7voronoi_Site __pyx_f_6squish_7voronoi__Site(__pyx_t_6squish_4core_INT_T __pyx_v_arr_index, __pyx_t_6squish_7voronoi_VoronoiInfo *__pyx_v_info) { + __pyx_t_6squish_7voronoi_Site __pyx_v_site; + __pyx_t_6squish_7voronoi_Site __pyx_r; + __pyx_t_6squish_4core_INT_T __pyx_t_1; + __pyx_t_6squish_7voronoi_VoronoiInfo *__pyx_t_2; + __pyx_t_6squish_7voronoi_SiteCacheMap *__pyx_t_3; + __pyx_t_6squish_4core_INT_T (*__pyx_t_4)(__pyx_t_6squish_7voronoi_Site *); + __pyx_t_6squish_4core_Vector2D (*__pyx_t_5)(__pyx_t_6squish_7voronoi_Site *); + __pyx_t_6squish_7voronoi_HalfEdge (*__pyx_t_6)(__pyx_t_6squish_7voronoi_Site *); + __pyx_t_6squish_4core_INT_T (*__pyx_t_7)(__pyx_t_6squish_7voronoi_Site *); - /* "squish/_squish/voronoi_dcel.pyx":308 - * cdef inline Site init_site(INT_T arr_index, VoronoiInfo* info) nogil: - * cdef Site site - * site.arr_index, site.info, site.cache = arr_index, info, &SITE_CACHE_MAP # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":316 + * cdef inline Site _Site(INT_T arr_index, VoronoiInfo* info) nogil: + * cdef Site site + * site.arr_index, site.info, site.cache = arr_index, info, &SITE_CACHE_MAP # <<<<<<<<<<<<<< * - * site.index, site.vec, site.edge, site.edge_num = index, vec, edge, edge_num + * site.index, site.vec, site.edge, site.edge_num = index, vec, edge, edge_num */ __pyx_t_1 = __pyx_v_arr_index; __pyx_t_2 = __pyx_v_info; - __pyx_t_3 = (&__pyx_v_7_squish_SITE_CACHE_MAP); + __pyx_t_3 = (&__pyx_v_6squish_7voronoi_SITE_CACHE_MAP); __pyx_v_site.arr_index = __pyx_t_1; __pyx_v_site.info = __pyx_t_2; __pyx_v_site.cache = __pyx_t_3; - /* "squish/_squish/voronoi_dcel.pyx":310 - * site.arr_index, site.info, site.cache = arr_index, info, &SITE_CACHE_MAP + /* "squish/voronoi.pyx":318 + * site.arr_index, site.info, site.cache = arr_index, info, &SITE_CACHE_MAP * - * site.index, site.vec, site.edge, site.edge_num = index, vec, edge, edge_num # <<<<<<<<<<<<<< + * site.index, site.vec, site.edge, site.edge_num = index, vec, edge, edge_num # <<<<<<<<<<<<<< * - * return site + * return site */ - __pyx_t_4 = __pyx_f_7_squish_index; - __pyx_t_5 = __pyx_f_7_squish_vec; - __pyx_t_6 = __pyx_f_7_squish_edge; - __pyx_t_7 = __pyx_f_7_squish_edge_num; + __pyx_t_4 = __pyx_f_6squish_7voronoi_index; + __pyx_t_5 = __pyx_f_6squish_7voronoi_vec; + __pyx_t_6 = __pyx_f_6squish_7voronoi_edge; + __pyx_t_7 = __pyx_f_6squish_7voronoi_edge_num; __pyx_v_site.index = __pyx_t_4; __pyx_v_site.vec = __pyx_t_5; __pyx_v_site.edge = __pyx_t_6; __pyx_v_site.edge_num = __pyx_t_7; - /* "squish/_squish/voronoi_dcel.pyx":312 - * site.index, site.vec, site.edge, site.edge_num = index, vec, edge, edge_num + /* "squish/voronoi.pyx":320 + * site.index, site.vec, site.edge, site.edge_num = index, vec, edge, edge_num * - * return site # <<<<<<<<<<<<<< + * return site # <<<<<<<<<<<<<< * * */ __pyx_r = __pyx_v_site; goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":306 + /* "squish/voronoi.pyx":314 * #### Site Methods #### * - * cdef inline Site init_site(INT_T arr_index, VoronoiInfo* info) nogil: # <<<<<<<<<<<<<< - * cdef Site site - * site.arr_index, site.info, site.cache = arr_index, info, &SITE_CACHE_MAP + * cdef inline Site _Site(INT_T arr_index, VoronoiInfo* info) nogil: # <<<<<<<<<<<<<< + * cdef Site site + * site.arr_index, site.info, site.cache = arr_index, info, &SITE_CACHE_MAP */ /* function exit code */ @@ -9353,22 +5919,22 @@ static CYTHON_INLINE __pyx_t_7_squish_Site __pyx_f_7_squish_init_site(__pyx_t_7_ return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":315 +/* "squish/voronoi.pyx":323 * * * cdef inline INT_T index(Site* self) nogil: # <<<<<<<<<<<<<< - * return self.info.sites.get(&self.info.sites, (self.arr_index, 0)) + * return self.info.sites.get(&self.info.sites, (self.arr_index, 0)) * */ -static CYTHON_INLINE __pyx_t_7_squish_INT_T __pyx_f_7_squish_index(__pyx_t_7_squish_Site *__pyx_v_self) { - __pyx_t_7_squish_INT_T __pyx_r; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_1; +static CYTHON_INLINE __pyx_t_6squish_4core_INT_T __pyx_f_6squish_7voronoi_index(__pyx_t_6squish_7voronoi_Site *__pyx_v_self) { + __pyx_t_6squish_4core_INT_T __pyx_r; + __pyx_t_6squish_4core_Pair __pyx_t_1; - /* "squish/_squish/voronoi_dcel.pyx":316 + /* "squish/voronoi.pyx":324 * * cdef inline INT_T index(Site* self) nogil: - * return self.info.sites.get(&self.info.sites, (self.arr_index, 0)) # <<<<<<<<<<<<<< + * return self.info.sites.get(&self.info.sites, (self.arr_index, 0)) # <<<<<<<<<<<<<< * * cdef inline Vector2D vec(Site* self) nogil: */ @@ -9377,11 +5943,11 @@ static CYTHON_INLINE __pyx_t_7_squish_INT_T __pyx_f_7_squish_index(__pyx_t_7_squ __pyx_r = __pyx_v_self->info->sites.get((&__pyx_v_self->info->sites), __pyx_t_1); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":315 + /* "squish/voronoi.pyx":323 * * * cdef inline INT_T index(Site* self) nogil: # <<<<<<<<<<<<<< - * return self.info.sites.get(&self.info.sites, (self.arr_index, 0)) + * return self.info.sites.get(&self.info.sites, (self.arr_index, 0)) * */ @@ -9390,55 +5956,55 @@ static CYTHON_INLINE __pyx_t_7_squish_INT_T __pyx_f_7_squish_index(__pyx_t_7_squ return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":318 - * return self.info.sites.get(&self.info.sites, (self.arr_index, 0)) +/* "squish/voronoi.pyx":326 + * return self.info.sites.get(&self.info.sites, (self.arr_index, 0)) * * cdef inline Vector2D vec(Site* self) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D( - * self.info.points.get(&self.info.points, (self.index(self), 0)), + * return _Vector2D( + * self.info.points.get(&self.info.points, (self.index(self), 0)), */ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_vec(__pyx_t_7_squish_Site *__pyx_v_self) { - __pyx_t_7_squish_Vector2D __pyx_r; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_7voronoi_vec(__pyx_t_6squish_7voronoi_Site *__pyx_v_self) { + __pyx_t_6squish_4core_Vector2D __pyx_r; + __pyx_t_6squish_4core_Pair __pyx_t_1; + __pyx_t_6squish_4core_Pair __pyx_t_2; - /* "squish/_squish/voronoi_dcel.pyx":320 + /* "squish/voronoi.pyx":328 * cdef inline Vector2D vec(Site* self) nogil: - * return init.Vector2D( - * self.info.points.get(&self.info.points, (self.index(self), 0)), # <<<<<<<<<<<<<< - * self.info.points.get(&self.info.points, (self.index(self), 1)) - * ) + * return _Vector2D( + * self.info.points.get(&self.info.points, (self.index(self), 0)), # <<<<<<<<<<<<<< + * self.info.points.get(&self.info.points, (self.index(self), 1)) + * ) */ __pyx_t_1.f0 = __pyx_v_self->index(__pyx_v_self); __pyx_t_1.f1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":321 - * return init.Vector2D( - * self.info.points.get(&self.info.points, (self.index(self), 0)), - * self.info.points.get(&self.info.points, (self.index(self), 1)) # <<<<<<<<<<<<<< - * ) + /* "squish/voronoi.pyx":329 + * return _Vector2D( + * self.info.points.get(&self.info.points, (self.index(self), 0)), + * self.info.points.get(&self.info.points, (self.index(self), 1)) # <<<<<<<<<<<<<< + * ) * */ __pyx_t_2.f0 = __pyx_v_self->index(__pyx_v_self); __pyx_t_2.f1 = 1; - /* "squish/_squish/voronoi_dcel.pyx":319 + /* "squish/voronoi.pyx":327 * * cdef inline Vector2D vec(Site* self) nogil: - * return init.Vector2D( # <<<<<<<<<<<<<< - * self.info.points.get(&self.info.points, (self.index(self), 0)), - * self.info.points.get(&self.info.points, (self.index(self), 1)) + * return _Vector2D( # <<<<<<<<<<<<<< + * self.info.points.get(&self.info.points, (self.index(self), 0)), + * self.info.points.get(&self.info.points, (self.index(self), 1)) */ - __pyx_r = __pyx_v_7_squish_init.Vector2D(__pyx_v_self->info->points.get((&__pyx_v_self->info->points), __pyx_t_1), __pyx_v_self->info->points.get((&__pyx_v_self->info->points), __pyx_t_2)); + __pyx_r = __pyx_f_6squish_4core__Vector2D(__pyx_v_self->info->points.get((&__pyx_v_self->info->points), __pyx_t_1), __pyx_v_self->info->points.get((&__pyx_v_self->info->points), __pyx_t_2)); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":318 - * return self.info.sites.get(&self.info.sites, (self.arr_index, 0)) + /* "squish/voronoi.pyx":326 + * return self.info.sites.get(&self.info.sites, (self.arr_index, 0)) * * cdef inline Vector2D vec(Site* self) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D( - * self.info.points.get(&self.info.points, (self.index(self), 0)), + * return _Vector2D( + * self.info.points.get(&self.info.points, (self.index(self), 0)), */ /* function exit code */ @@ -9446,44 +6012,44 @@ static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_vec(__pyx_t_7_sq return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":324 - * ) +/* "squish/voronoi.pyx":332 + * ) * * cdef inline HalfEdge edge(Site* self) nogil: # <<<<<<<<<<<<<< - * return init.HalfEdge( - * self.info.sites.get(&self.info.sites, (self.arr_index, 1)), self.info + * return _HalfEdge( + * self.info.sites.get(&self.info.sites, (self.arr_index, 1)), self.info */ -static CYTHON_INLINE __pyx_t_7_squish_HalfEdge __pyx_f_7_squish_edge(__pyx_t_7_squish_Site *__pyx_v_self) { - __pyx_t_7_squish_HalfEdge __pyx_r; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_1; +static CYTHON_INLINE __pyx_t_6squish_7voronoi_HalfEdge __pyx_f_6squish_7voronoi_edge(__pyx_t_6squish_7voronoi_Site *__pyx_v_self) { + __pyx_t_6squish_7voronoi_HalfEdge __pyx_r; + __pyx_t_6squish_4core_Pair __pyx_t_1; - /* "squish/_squish/voronoi_dcel.pyx":326 + /* "squish/voronoi.pyx":334 * cdef inline HalfEdge edge(Site* self) nogil: - * return init.HalfEdge( - * self.info.sites.get(&self.info.sites, (self.arr_index, 1)), self.info # <<<<<<<<<<<<<< - * ) + * return _HalfEdge( + * self.info.sites.get(&self.info.sites, (self.arr_index, 1)), self.info # <<<<<<<<<<<<<< + * ) * */ __pyx_t_1.f0 = __pyx_v_self->arr_index; __pyx_t_1.f1 = 1; - /* "squish/_squish/voronoi_dcel.pyx":325 + /* "squish/voronoi.pyx":333 * * cdef inline HalfEdge edge(Site* self) nogil: - * return init.HalfEdge( # <<<<<<<<<<<<<< - * self.info.sites.get(&self.info.sites, (self.arr_index, 1)), self.info - * ) + * return _HalfEdge( # <<<<<<<<<<<<<< + * self.info.sites.get(&self.info.sites, (self.arr_index, 1)), self.info + * ) */ - __pyx_r = __pyx_v_7_squish_init.HalfEdge(__pyx_v_self->info->sites.get((&__pyx_v_self->info->sites), __pyx_t_1), __pyx_v_self->info); + __pyx_r = __pyx_f_6squish_7voronoi__HalfEdge(__pyx_v_self->info->sites.get((&__pyx_v_self->info->sites), __pyx_t_1), __pyx_v_self->info); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":324 - * ) + /* "squish/voronoi.pyx":332 + * ) * * cdef inline HalfEdge edge(Site* self) nogil: # <<<<<<<<<<<<<< - * return init.HalfEdge( - * self.info.sites.get(&self.info.sites, (self.arr_index, 1)), self.info + * return _HalfEdge( + * self.info.sites.get(&self.info.sites, (self.arr_index, 1)), self.info */ /* function exit code */ @@ -9491,22 +6057,22 @@ static CYTHON_INLINE __pyx_t_7_squish_HalfEdge __pyx_f_7_squish_edge(__pyx_t_7_s return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":329 - * ) +/* "squish/voronoi.pyx":337 + * ) * * cdef inline INT_T edge_num(Site* self) nogil: # <<<<<<<<<<<<<< - * return self.info.sites.get(&self.info.sites, (self.arr_index, 2)) + * return self.info.sites.get(&self.info.sites, (self.arr_index, 2)) * */ -static CYTHON_INLINE __pyx_t_7_squish_INT_T __pyx_f_7_squish_edge_num(__pyx_t_7_squish_Site *__pyx_v_self) { - __pyx_t_7_squish_INT_T __pyx_r; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_1; +static CYTHON_INLINE __pyx_t_6squish_4core_INT_T __pyx_f_6squish_7voronoi_edge_num(__pyx_t_6squish_7voronoi_Site *__pyx_v_self) { + __pyx_t_6squish_4core_INT_T __pyx_r; + __pyx_t_6squish_4core_Pair __pyx_t_1; - /* "squish/_squish/voronoi_dcel.pyx":330 + /* "squish/voronoi.pyx":338 * * cdef inline INT_T edge_num(Site* self) nogil: - * return self.info.sites.get(&self.info.sites, (self.arr_index, 2)) # <<<<<<<<<<<<<< + * return self.info.sites.get(&self.info.sites, (self.arr_index, 2)) # <<<<<<<<<<<<<< * * */ @@ -9515,11 +6081,11 @@ static CYTHON_INLINE __pyx_t_7_squish_INT_T __pyx_f_7_squish_edge_num(__pyx_t_7_ __pyx_r = __pyx_v_self->info->sites.get((&__pyx_v_self->info->sites), __pyx_t_1); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":329 - * ) + /* "squish/voronoi.pyx":337 + * ) * * cdef inline INT_T edge_num(Site* self) nogil: # <<<<<<<<<<<<<< - * return self.info.sites.get(&self.info.sites, (self.arr_index, 2)) + * return self.info.sites.get(&self.info.sites, (self.arr_index, 2)) * */ @@ -9528,97 +6094,97 @@ static CYTHON_INLINE __pyx_t_7_squish_INT_T __pyx_f_7_squish_edge_num(__pyx_t_7_ return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":335 +/* "squish/voronoi.pyx":343 * #### HalfEdge Methods #### * - * cdef inline HalfEdge init_halfedge(INT_T arr_index, VoronoiInfo* info) nogil: # <<<<<<<<<<<<<< - * cdef HalfEdge edge - * edge.arr_index, edge.info, edge.cache = arr_index, info, info.edge_cache_map + * cdef inline HalfEdge _HalfEdge(INT_T arr_index, VoronoiInfo* info) nogil: # <<<<<<<<<<<<<< + * cdef HalfEdge e + * e.arr_index, e.info, e.cache = arr_index, info, info.edge_cache_map */ -static CYTHON_INLINE __pyx_t_7_squish_HalfEdge __pyx_f_7_squish_init_halfedge(__pyx_t_7_squish_INT_T __pyx_v_arr_index, __pyx_t_7_squish_VoronoiInfo *__pyx_v_info) { - __pyx_t_7_squish_HalfEdge __pyx_v_edge; - __pyx_t_7_squish_HalfEdge __pyx_r; - __pyx_t_7_squish_INT_T __pyx_t_1; - __pyx_t_7_squish_VoronoiInfo *__pyx_t_2; - __pyx_t_7_squish_EdgeCacheMap *__pyx_t_3; - __pyx_t_7_squish_INT_T (*__pyx_t_4)(__pyx_t_7_squish_HalfEdge *); - __pyx_t_7_squish_Vector2D (*__pyx_t_5)(__pyx_t_7_squish_HalfEdge *); - __pyx_t_7_squish_Site (*__pyx_t_6)(__pyx_t_7_squish_HalfEdge *); - __pyx_t_7_squish_HalfEdge (*__pyx_t_7)(__pyx_t_7_squish_HalfEdge *); - __pyx_t_7_squish_HalfEdge (*__pyx_t_8)(__pyx_t_7_squish_HalfEdge *); - __pyx_t_7_squish_HalfEdge (*__pyx_t_9)(__pyx_t_7_squish_HalfEdge *); - __pyx_t_7_squish_Matrix2x2 (*__pyx_t_10)(__pyx_t_7_squish_HalfEdge *, __pyx_t_7_squish_Site); +static CYTHON_INLINE __pyx_t_6squish_7voronoi_HalfEdge __pyx_f_6squish_7voronoi__HalfEdge(__pyx_t_6squish_4core_INT_T __pyx_v_arr_index, __pyx_t_6squish_7voronoi_VoronoiInfo *__pyx_v_info) { + __pyx_t_6squish_7voronoi_HalfEdge __pyx_v_e; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_r; + __pyx_t_6squish_4core_INT_T __pyx_t_1; + __pyx_t_6squish_7voronoi_VoronoiInfo *__pyx_t_2; + __pyx_t_6squish_7voronoi_EdgeCacheMap *__pyx_t_3; + __pyx_t_6squish_4core_INT_T (*__pyx_t_4)(__pyx_t_6squish_7voronoi_HalfEdge *); + __pyx_t_6squish_4core_Vector2D (*__pyx_t_5)(__pyx_t_6squish_7voronoi_HalfEdge *); + __pyx_t_6squish_7voronoi_Site (*__pyx_t_6)(__pyx_t_6squish_7voronoi_HalfEdge *); + __pyx_t_6squish_7voronoi_HalfEdge (*__pyx_t_7)(__pyx_t_6squish_7voronoi_HalfEdge *); + __pyx_t_6squish_7voronoi_HalfEdge (*__pyx_t_8)(__pyx_t_6squish_7voronoi_HalfEdge *); + __pyx_t_6squish_7voronoi_HalfEdge (*__pyx_t_9)(__pyx_t_6squish_7voronoi_HalfEdge *); + __pyx_t_6squish_4core_Matrix2x2 (*__pyx_t_10)(__pyx_t_6squish_7voronoi_HalfEdge *, __pyx_t_6squish_7voronoi_Site); - /* "squish/_squish/voronoi_dcel.pyx":337 - * cdef inline HalfEdge init_halfedge(INT_T arr_index, VoronoiInfo* info) nogil: - * cdef HalfEdge edge - * edge.arr_index, edge.info, edge.cache = arr_index, info, info.edge_cache_map # <<<<<<<<<<<<<< - * edge.orig_arr_index = arr_index + /* "squish/voronoi.pyx":345 + * cdef inline HalfEdge _HalfEdge(INT_T arr_index, VoronoiInfo* info) nogil: + * cdef HalfEdge e + * e.arr_index, e.info, e.cache = arr_index, info, info.edge_cache_map # <<<<<<<<<<<<<< + * e.orig_arr_index = arr_index * */ __pyx_t_1 = __pyx_v_arr_index; __pyx_t_2 = __pyx_v_info; __pyx_t_3 = __pyx_v_info->edge_cache_map; - __pyx_v_edge.arr_index = __pyx_t_1; - __pyx_v_edge.info = __pyx_t_2; - __pyx_v_edge.cache = __pyx_t_3; + __pyx_v_e.arr_index = __pyx_t_1; + __pyx_v_e.info = __pyx_t_2; + __pyx_v_e.cache = __pyx_t_3; - /* "squish/_squish/voronoi_dcel.pyx":338 - * cdef HalfEdge edge - * edge.arr_index, edge.info, edge.cache = arr_index, info, info.edge_cache_map - * edge.orig_arr_index = arr_index # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":346 + * cdef HalfEdge e + * e.arr_index, e.info, e.cache = arr_index, info, info.edge_cache_map + * e.orig_arr_index = arr_index # <<<<<<<<<<<<<< * - * edge.origin_index, edge.origin, edge.face, edge.next, edge.prev, edge.twin, edge.get_H = \ + * e.origin_index, e.origin, e.face, e.next, e.prev, e.twin, e.get_H = ( */ - __pyx_v_edge.orig_arr_index = __pyx_v_arr_index; + __pyx_v_e.orig_arr_index = __pyx_v_arr_index; - /* "squish/_squish/voronoi_dcel.pyx":341 + /* "squish/voronoi.pyx":349 * - * edge.origin_index, edge.origin, edge.face, edge.next, edge.prev, edge.twin, edge.get_H = \ - * origin_index, origin, face, edge_next, prev, twin, get_H # <<<<<<<<<<<<<< - * - * return edge - */ - __pyx_t_4 = __pyx_f_7_squish_origin_index; - __pyx_t_5 = __pyx_f_7_squish_origin; - __pyx_t_6 = __pyx_f_7_squish_face; - __pyx_t_7 = __pyx_f_7_squish_edge_next; - __pyx_t_8 = __pyx_f_7_squish_prev; - __pyx_t_9 = __pyx_f_7_squish_twin; - __pyx_t_10 = __pyx_f_7_squish_get_H; - - /* "squish/_squish/voronoi_dcel.pyx":340 - * edge.orig_arr_index = arr_index - * - * edge.origin_index, edge.origin, edge.face, edge.next, edge.prev, edge.twin, edge.get_H = \ # <<<<<<<<<<<<<< - * origin_index, origin, face, edge_next, prev, twin, get_H + * e.origin_index, e.origin, e.face, e.next, e.prev, e.twin, e.get_H = ( + * origin_index, origin, face, edge_next, prev, twin, get_H # <<<<<<<<<<<<<< + * ) * */ - __pyx_v_edge.origin_index = __pyx_t_4; - __pyx_v_edge.origin = __pyx_t_5; - __pyx_v_edge.face = __pyx_t_6; - __pyx_v_edge.next = __pyx_t_7; - __pyx_v_edge.prev = __pyx_t_8; - __pyx_v_edge.twin = __pyx_t_9; - __pyx_v_edge.get_H = __pyx_t_10; + __pyx_t_4 = __pyx_f_6squish_7voronoi_origin_index; + __pyx_t_5 = __pyx_f_6squish_7voronoi_origin; + __pyx_t_6 = __pyx_f_6squish_7voronoi_face; + __pyx_t_7 = __pyx_f_6squish_7voronoi_edge_next; + __pyx_t_8 = __pyx_f_6squish_7voronoi_prev; + __pyx_t_9 = __pyx_f_6squish_7voronoi_twin; + __pyx_t_10 = __pyx_f_6squish_7voronoi_get_H; - /* "squish/_squish/voronoi_dcel.pyx":343 - * origin_index, origin, face, edge_next, prev, twin, get_H + /* "squish/voronoi.pyx":348 + * e.orig_arr_index = arr_index * - * return edge # <<<<<<<<<<<<<< + * e.origin_index, e.origin, e.face, e.next, e.prev, e.twin, e.get_H = ( # <<<<<<<<<<<<<< + * origin_index, origin, face, edge_next, prev, twin, get_H + * ) + */ + __pyx_v_e.origin_index = __pyx_t_4; + __pyx_v_e.origin = __pyx_t_5; + __pyx_v_e.face = __pyx_t_6; + __pyx_v_e.next = __pyx_t_7; + __pyx_v_e.prev = __pyx_t_8; + __pyx_v_e.twin = __pyx_t_9; + __pyx_v_e.get_H = __pyx_t_10; + + /* "squish/voronoi.pyx":352 + * ) + * + * return e # <<<<<<<<<<<<<< * * */ - __pyx_r = __pyx_v_edge; + __pyx_r = __pyx_v_e; goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":335 + /* "squish/voronoi.pyx":343 * #### HalfEdge Methods #### * - * cdef inline HalfEdge init_halfedge(INT_T arr_index, VoronoiInfo* info) nogil: # <<<<<<<<<<<<<< - * cdef HalfEdge edge - * edge.arr_index, edge.info, edge.cache = arr_index, info, info.edge_cache_map + * cdef inline HalfEdge _HalfEdge(INT_T arr_index, VoronoiInfo* info) nogil: # <<<<<<<<<<<<<< + * cdef HalfEdge e + * e.arr_index, e.info, e.cache = arr_index, info, info.edge_cache_map */ /* function exit code */ @@ -9626,22 +6192,22 @@ static CYTHON_INLINE __pyx_t_7_squish_HalfEdge __pyx_f_7_squish_init_halfedge(__ return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":346 +/* "squish/voronoi.pyx":355 * * * cdef inline INT_T origin_index(HalfEdge* self) nogil: # <<<<<<<<<<<<<< - * return self.info.edges.get(&self.info.edges, (self.arr_index, 0)) + * return self.info.edges.get(&self.info.edges, (self.arr_index, 0)) * */ -static CYTHON_INLINE __pyx_t_7_squish_INT_T __pyx_f_7_squish_origin_index(__pyx_t_7_squish_HalfEdge *__pyx_v_self) { - __pyx_t_7_squish_INT_T __pyx_r; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_1; +static CYTHON_INLINE __pyx_t_6squish_4core_INT_T __pyx_f_6squish_7voronoi_origin_index(__pyx_t_6squish_7voronoi_HalfEdge *__pyx_v_self) { + __pyx_t_6squish_4core_INT_T __pyx_r; + __pyx_t_6squish_4core_Pair __pyx_t_1; - /* "squish/_squish/voronoi_dcel.pyx":347 + /* "squish/voronoi.pyx":356 * * cdef inline INT_T origin_index(HalfEdge* self) nogil: - * return self.info.edges.get(&self.info.edges, (self.arr_index, 0)) # <<<<<<<<<<<<<< + * return self.info.edges.get(&self.info.edges, (self.arr_index, 0)) # <<<<<<<<<<<<<< * * cdef inline Vector2D origin(HalfEdge* self) nogil: */ @@ -9650,11 +6216,11 @@ static CYTHON_INLINE __pyx_t_7_squish_INT_T __pyx_f_7_squish_origin_index(__pyx_ __pyx_r = __pyx_v_self->info->edges.get((&__pyx_v_self->info->edges), __pyx_t_1); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":346 + /* "squish/voronoi.pyx":355 * * * cdef inline INT_T origin_index(HalfEdge* self) nogil: # <<<<<<<<<<<<<< - * return self.info.edges.get(&self.info.edges, (self.arr_index, 0)) + * return self.info.edges.get(&self.info.edges, (self.arr_index, 0)) * */ @@ -9663,55 +6229,55 @@ static CYTHON_INLINE __pyx_t_7_squish_INT_T __pyx_f_7_squish_origin_index(__pyx_ return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":349 - * return self.info.edges.get(&self.info.edges, (self.arr_index, 0)) +/* "squish/voronoi.pyx":358 + * return self.info.edges.get(&self.info.edges, (self.arr_index, 0)) * * cdef inline Vector2D origin(HalfEdge* self) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D( - * self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 0)), + * return _Vector2D( + * self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 0)), */ -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_origin(__pyx_t_7_squish_HalfEdge *__pyx_v_self) { - __pyx_t_7_squish_Vector2D __pyx_r; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_1; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_2; +static CYTHON_INLINE __pyx_t_6squish_4core_Vector2D __pyx_f_6squish_7voronoi_origin(__pyx_t_6squish_7voronoi_HalfEdge *__pyx_v_self) { + __pyx_t_6squish_4core_Vector2D __pyx_r; + __pyx_t_6squish_4core_Pair __pyx_t_1; + __pyx_t_6squish_4core_Pair __pyx_t_2; - /* "squish/_squish/voronoi_dcel.pyx":351 + /* "squish/voronoi.pyx":360 * cdef inline Vector2D origin(HalfEdge* self) nogil: - * return init.Vector2D( - * self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 0)), # <<<<<<<<<<<<<< - * self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 1)) - * ) + * return _Vector2D( + * self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 0)), # <<<<<<<<<<<<<< + * self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 1)) + * ) */ __pyx_t_1.f0 = __pyx_v_self->origin_index(__pyx_v_self); __pyx_t_1.f1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":352 - * return init.Vector2D( - * self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 0)), - * self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 1)) # <<<<<<<<<<<<<< - * ) + /* "squish/voronoi.pyx":361 + * return _Vector2D( + * self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 0)), + * self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 1)) # <<<<<<<<<<<<<< + * ) * */ __pyx_t_2.f0 = __pyx_v_self->origin_index(__pyx_v_self); __pyx_t_2.f1 = 1; - /* "squish/_squish/voronoi_dcel.pyx":350 + /* "squish/voronoi.pyx":359 * * cdef inline Vector2D origin(HalfEdge* self) nogil: - * return init.Vector2D( # <<<<<<<<<<<<<< - * self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 0)), - * self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 1)) + * return _Vector2D( # <<<<<<<<<<<<<< + * self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 0)), + * self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 1)) */ - __pyx_r = __pyx_v_7_squish_init.Vector2D(__pyx_v_self->info->vertices.get((&__pyx_v_self->info->vertices), __pyx_t_1), __pyx_v_self->info->vertices.get((&__pyx_v_self->info->vertices), __pyx_t_2)); + __pyx_r = __pyx_f_6squish_4core__Vector2D(__pyx_v_self->info->vertices.get((&__pyx_v_self->info->vertices), __pyx_t_1), __pyx_v_self->info->vertices.get((&__pyx_v_self->info->vertices), __pyx_t_2)); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":349 - * return self.info.edges.get(&self.info.edges, (self.arr_index, 0)) + /* "squish/voronoi.pyx":358 + * return self.info.edges.get(&self.info.edges, (self.arr_index, 0)) * * cdef inline Vector2D origin(HalfEdge* self) nogil: # <<<<<<<<<<<<<< - * return init.Vector2D( - * self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 0)), + * return _Vector2D( + * self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 0)), */ /* function exit code */ @@ -9719,44 +6285,44 @@ static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_origin(__pyx_t_7 return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":355 - * ) +/* "squish/voronoi.pyx":364 + * ) * * cdef inline Site face(HalfEdge* self) nogil: # <<<<<<<<<<<<<< - * return init.Site( - * self.info.edges.get(&self.info.edges, (self.arr_index, 1)), self.info + * return _Site( + * self.info.edges.get(&self.info.edges, (self.arr_index, 1)), self.info */ -static CYTHON_INLINE __pyx_t_7_squish_Site __pyx_f_7_squish_face(__pyx_t_7_squish_HalfEdge *__pyx_v_self) { - __pyx_t_7_squish_Site __pyx_r; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_1; +static CYTHON_INLINE __pyx_t_6squish_7voronoi_Site __pyx_f_6squish_7voronoi_face(__pyx_t_6squish_7voronoi_HalfEdge *__pyx_v_self) { + __pyx_t_6squish_7voronoi_Site __pyx_r; + __pyx_t_6squish_4core_Pair __pyx_t_1; - /* "squish/_squish/voronoi_dcel.pyx":357 + /* "squish/voronoi.pyx":366 * cdef inline Site face(HalfEdge* self) nogil: - * return init.Site( - * self.info.edges.get(&self.info.edges, (self.arr_index, 1)), self.info # <<<<<<<<<<<<<< - * ) + * return _Site( + * self.info.edges.get(&self.info.edges, (self.arr_index, 1)), self.info # <<<<<<<<<<<<<< + * ) * */ __pyx_t_1.f0 = __pyx_v_self->arr_index; __pyx_t_1.f1 = 1; - /* "squish/_squish/voronoi_dcel.pyx":356 + /* "squish/voronoi.pyx":365 * * cdef inline Site face(HalfEdge* self) nogil: - * return init.Site( # <<<<<<<<<<<<<< - * self.info.edges.get(&self.info.edges, (self.arr_index, 1)), self.info - * ) + * return _Site( # <<<<<<<<<<<<<< + * self.info.edges.get(&self.info.edges, (self.arr_index, 1)), self.info + * ) */ - __pyx_r = __pyx_v_7_squish_init.Site(__pyx_v_self->info->edges.get((&__pyx_v_self->info->edges), __pyx_t_1), __pyx_v_self->info); + __pyx_r = __pyx_f_6squish_7voronoi__Site(__pyx_v_self->info->edges.get((&__pyx_v_self->info->edges), __pyx_t_1), __pyx_v_self->info); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":355 - * ) + /* "squish/voronoi.pyx":364 + * ) * * cdef inline Site face(HalfEdge* self) nogil: # <<<<<<<<<<<<<< - * return init.Site( - * self.info.edges.get(&self.info.edges, (self.arr_index, 1)), self.info + * return _Site( + * self.info.edges.get(&self.info.edges, (self.arr_index, 1)), self.info */ /* function exit code */ @@ -9764,44 +6330,44 @@ static CYTHON_INLINE __pyx_t_7_squish_Site __pyx_f_7_squish_face(__pyx_t_7_squis return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":360 - * ) +/* "squish/voronoi.pyx":369 + * ) * * cdef inline HalfEdge edge_next(HalfEdge* self) nogil: # <<<<<<<<<<<<<< * - * return init.HalfEdge( + * return _HalfEdge( */ -static CYTHON_INLINE __pyx_t_7_squish_HalfEdge __pyx_f_7_squish_edge_next(__pyx_t_7_squish_HalfEdge *__pyx_v_self) { - __pyx_t_7_squish_HalfEdge __pyx_r; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_1; +static CYTHON_INLINE __pyx_t_6squish_7voronoi_HalfEdge __pyx_f_6squish_7voronoi_edge_next(__pyx_t_6squish_7voronoi_HalfEdge *__pyx_v_self) { + __pyx_t_6squish_7voronoi_HalfEdge __pyx_r; + __pyx_t_6squish_4core_Pair __pyx_t_1; - /* "squish/_squish/voronoi_dcel.pyx":363 + /* "squish/voronoi.pyx":372 * - * return init.HalfEdge( - * self.info.edges.get(&self.info.edges, (self.arr_index, 2)), self.info # <<<<<<<<<<<<<< - * ) + * return _HalfEdge( + * self.info.edges.get(&self.info.edges, (self.arr_index, 2)), self.info # <<<<<<<<<<<<<< + * ) * */ __pyx_t_1.f0 = __pyx_v_self->arr_index; __pyx_t_1.f1 = 2; - /* "squish/_squish/voronoi_dcel.pyx":362 + /* "squish/voronoi.pyx":371 * cdef inline HalfEdge edge_next(HalfEdge* self) nogil: * - * return init.HalfEdge( # <<<<<<<<<<<<<< - * self.info.edges.get(&self.info.edges, (self.arr_index, 2)), self.info - * ) + * return _HalfEdge( # <<<<<<<<<<<<<< + * self.info.edges.get(&self.info.edges, (self.arr_index, 2)), self.info + * ) */ - __pyx_r = __pyx_v_7_squish_init.HalfEdge(__pyx_v_self->info->edges.get((&__pyx_v_self->info->edges), __pyx_t_1), __pyx_v_self->info); + __pyx_r = __pyx_f_6squish_7voronoi__HalfEdge(__pyx_v_self->info->edges.get((&__pyx_v_self->info->edges), __pyx_t_1), __pyx_v_self->info); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":360 - * ) + /* "squish/voronoi.pyx":369 + * ) * * cdef inline HalfEdge edge_next(HalfEdge* self) nogil: # <<<<<<<<<<<<<< * - * return init.HalfEdge( + * return _HalfEdge( */ /* function exit code */ @@ -9809,44 +6375,44 @@ static CYTHON_INLINE __pyx_t_7_squish_HalfEdge __pyx_f_7_squish_edge_next(__pyx_ return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":366 - * ) +/* "squish/voronoi.pyx":375 + * ) * * cdef inline HalfEdge prev(HalfEdge* self) nogil: # <<<<<<<<<<<<<< - * return init.HalfEdge( - * self.info.edges.get(&self.info.edges, (self.arr_index, 3)), self.info + * return _HalfEdge( + * self.info.edges.get(&self.info.edges, (self.arr_index, 3)), self.info */ -static CYTHON_INLINE __pyx_t_7_squish_HalfEdge __pyx_f_7_squish_prev(__pyx_t_7_squish_HalfEdge *__pyx_v_self) { - __pyx_t_7_squish_HalfEdge __pyx_r; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_1; +static CYTHON_INLINE __pyx_t_6squish_7voronoi_HalfEdge __pyx_f_6squish_7voronoi_prev(__pyx_t_6squish_7voronoi_HalfEdge *__pyx_v_self) { + __pyx_t_6squish_7voronoi_HalfEdge __pyx_r; + __pyx_t_6squish_4core_Pair __pyx_t_1; - /* "squish/_squish/voronoi_dcel.pyx":368 + /* "squish/voronoi.pyx":377 * cdef inline HalfEdge prev(HalfEdge* self) nogil: - * return init.HalfEdge( - * self.info.edges.get(&self.info.edges, (self.arr_index, 3)), self.info # <<<<<<<<<<<<<< - * ) + * return _HalfEdge( + * self.info.edges.get(&self.info.edges, (self.arr_index, 3)), self.info # <<<<<<<<<<<<<< + * ) * */ __pyx_t_1.f0 = __pyx_v_self->arr_index; __pyx_t_1.f1 = 3; - /* "squish/_squish/voronoi_dcel.pyx":367 + /* "squish/voronoi.pyx":376 * * cdef inline HalfEdge prev(HalfEdge* self) nogil: - * return init.HalfEdge( # <<<<<<<<<<<<<< - * self.info.edges.get(&self.info.edges, (self.arr_index, 3)), self.info - * ) + * return _HalfEdge( # <<<<<<<<<<<<<< + * self.info.edges.get(&self.info.edges, (self.arr_index, 3)), self.info + * ) */ - __pyx_r = __pyx_v_7_squish_init.HalfEdge(__pyx_v_self->info->edges.get((&__pyx_v_self->info->edges), __pyx_t_1), __pyx_v_self->info); + __pyx_r = __pyx_f_6squish_7voronoi__HalfEdge(__pyx_v_self->info->edges.get((&__pyx_v_self->info->edges), __pyx_t_1), __pyx_v_self->info); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":366 - * ) + /* "squish/voronoi.pyx":375 + * ) * * cdef inline HalfEdge prev(HalfEdge* self) nogil: # <<<<<<<<<<<<<< - * return init.HalfEdge( - * self.info.edges.get(&self.info.edges, (self.arr_index, 3)), self.info + * return _HalfEdge( + * self.info.edges.get(&self.info.edges, (self.arr_index, 3)), self.info */ /* function exit code */ @@ -9854,44 +6420,44 @@ static CYTHON_INLINE __pyx_t_7_squish_HalfEdge __pyx_f_7_squish_prev(__pyx_t_7_s return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":371 - * ) +/* "squish/voronoi.pyx":380 + * ) * * cdef inline HalfEdge twin(HalfEdge* self) nogil: # <<<<<<<<<<<<<< - * return init.HalfEdge( - * self.info.edges.get(&self.info.edges, (self.arr_index, 4)), self.info + * return _HalfEdge( + * self.info.edges.get(&self.info.edges, (self.arr_index, 4)), self.info */ -static CYTHON_INLINE __pyx_t_7_squish_HalfEdge __pyx_f_7_squish_twin(__pyx_t_7_squish_HalfEdge *__pyx_v_self) { - __pyx_t_7_squish_HalfEdge __pyx_r; - __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T __pyx_t_1; +static CYTHON_INLINE __pyx_t_6squish_7voronoi_HalfEdge __pyx_f_6squish_7voronoi_twin(__pyx_t_6squish_7voronoi_HalfEdge *__pyx_v_self) { + __pyx_t_6squish_7voronoi_HalfEdge __pyx_r; + __pyx_t_6squish_4core_Pair __pyx_t_1; - /* "squish/_squish/voronoi_dcel.pyx":373 + /* "squish/voronoi.pyx":382 * cdef inline HalfEdge twin(HalfEdge* self) nogil: - * return init.HalfEdge( - * self.info.edges.get(&self.info.edges, (self.arr_index, 4)), self.info # <<<<<<<<<<<<<< - * ) + * return _HalfEdge( + * self.info.edges.get(&self.info.edges, (self.arr_index, 4)), self.info # <<<<<<<<<<<<<< + * ) * */ __pyx_t_1.f0 = __pyx_v_self->arr_index; __pyx_t_1.f1 = 4; - /* "squish/_squish/voronoi_dcel.pyx":372 + /* "squish/voronoi.pyx":381 * * cdef inline HalfEdge twin(HalfEdge* self) nogil: - * return init.HalfEdge( # <<<<<<<<<<<<<< - * self.info.edges.get(&self.info.edges, (self.arr_index, 4)), self.info - * ) + * return _HalfEdge( # <<<<<<<<<<<<<< + * self.info.edges.get(&self.info.edges, (self.arr_index, 4)), self.info + * ) */ - __pyx_r = __pyx_v_7_squish_init.HalfEdge(__pyx_v_self->info->edges.get((&__pyx_v_self->info->edges), __pyx_t_1), __pyx_v_self->info); + __pyx_r = __pyx_f_6squish_7voronoi__HalfEdge(__pyx_v_self->info->edges.get((&__pyx_v_self->info->edges), __pyx_t_1), __pyx_v_self->info); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":371 - * ) + /* "squish/voronoi.pyx":380 + * ) * * cdef inline HalfEdge twin(HalfEdge* self) nogil: # <<<<<<<<<<<<<< - * return init.HalfEdge( - * self.info.edges.get(&self.info.edges, (self.arr_index, 4)), self.info + * return _HalfEdge( + * self.info.edges.get(&self.info.edges, (self.arr_index, 4)), self.info */ /* function exit code */ @@ -9899,109 +6465,109 @@ static CYTHON_INLINE __pyx_t_7_squish_HalfEdge __pyx_f_7_squish_twin(__pyx_t_7_s return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":376 - * ) +/* "squish/voronoi.pyx":385 + * ) * * cdef inline Matrix2x2 get_H(HalfEdge* self, Site xi) nogil: # <<<<<<<<<<<<<< - * cdef INT_T this_e = self.origin_index(self) - * cdef HalfEdge s_e = xi.edge(&xi) + * cdef INT_T this_e = self.origin_index(self) + * cdef HalfEdge s_e = xi.edge(&xi) */ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_get_H(__pyx_t_7_squish_HalfEdge *__pyx_v_self, __pyx_t_7_squish_Site __pyx_v_xi) { - __pyx_t_7_squish_INT_T __pyx_v_this_e; - __pyx_t_7_squish_HalfEdge __pyx_v_s_e; - CYTHON_UNUSED __pyx_t_7_squish_INT_T __pyx_v_i; - __pyx_t_7_squish_Matrix2x2 __pyx_r; - __pyx_t_7_squish_INT_T __pyx_t_1; - __pyx_t_7_squish_INT_T __pyx_t_2; - __pyx_t_7_squish_INT_T __pyx_t_3; +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_7voronoi_get_H(__pyx_t_6squish_7voronoi_HalfEdge *__pyx_v_self, __pyx_t_6squish_7voronoi_Site __pyx_v_xi) { + __pyx_t_6squish_4core_INT_T __pyx_v_this_e; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_v_s_e; + CYTHON_UNUSED __pyx_t_6squish_4core_INT_T __pyx_v__; + __pyx_t_6squish_4core_Matrix2x2 __pyx_r; + __pyx_t_6squish_4core_INT_T __pyx_t_1; + __pyx_t_6squish_4core_INT_T __pyx_t_2; + __pyx_t_6squish_4core_INT_T __pyx_t_3; int __pyx_t_4; - /* "squish/_squish/voronoi_dcel.pyx":377 + /* "squish/voronoi.pyx":386 * * cdef inline Matrix2x2 get_H(HalfEdge* self, Site xi) nogil: - * cdef INT_T this_e = self.origin_index(self) # <<<<<<<<<<<<<< - * cdef HalfEdge s_e = xi.edge(&xi) - * cdef INT_T i + * cdef INT_T this_e = self.origin_index(self) # <<<<<<<<<<<<<< + * cdef HalfEdge s_e = xi.edge(&xi) + * */ __pyx_v_this_e = __pyx_v_self->origin_index(__pyx_v_self); - /* "squish/_squish/voronoi_dcel.pyx":378 + /* "squish/voronoi.pyx":387 * cdef inline Matrix2x2 get_H(HalfEdge* self, Site xi) nogil: - * cdef INT_T this_e = self.origin_index(self) - * cdef HalfEdge s_e = xi.edge(&xi) # <<<<<<<<<<<<<< - * cdef INT_T i + * cdef INT_T this_e = self.origin_index(self) + * cdef HalfEdge s_e = xi.edge(&xi) # <<<<<<<<<<<<<< * + * for _ in range(xi.edge_num(&xi)): */ __pyx_v_s_e = __pyx_v_xi.edge((&__pyx_v_xi)); - /* "squish/_squish/voronoi_dcel.pyx":381 - * cdef INT_T i + /* "squish/voronoi.pyx":389 + * cdef HalfEdge s_e = xi.edge(&xi) * - * for i in range(xi.edge_num(&xi)): # <<<<<<<<<<<<<< - * if s_e.origin_index(&s_e) == this_e: - * return s_e.cache.H(&s_e, NAN_MATRIX) + * for _ in range(xi.edge_num(&xi)): # <<<<<<<<<<<<<< + * if s_e.origin_index(&s_e) == this_e: + * return s_e.cache.H(&s_e, NAN_MATRIX) */ __pyx_t_1 = __pyx_v_xi.edge_num((&__pyx_v_xi)); __pyx_t_2 = __pyx_t_1; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { - __pyx_v_i = __pyx_t_3; + __pyx_v__ = __pyx_t_3; - /* "squish/_squish/voronoi_dcel.pyx":382 + /* "squish/voronoi.pyx":390 * - * for i in range(xi.edge_num(&xi)): - * if s_e.origin_index(&s_e) == this_e: # <<<<<<<<<<<<<< - * return s_e.cache.H(&s_e, NAN_MATRIX) - * s_e = s_e.next(&s_e) + * for _ in range(xi.edge_num(&xi)): + * if s_e.origin_index(&s_e) == this_e: # <<<<<<<<<<<<<< + * return s_e.cache.H(&s_e, NAN_MATRIX) + * s_e = s_e.next(&s_e) */ __pyx_t_4 = ((__pyx_v_s_e.origin_index((&__pyx_v_s_e)) == __pyx_v_this_e) != 0); if (__pyx_t_4) { - /* "squish/_squish/voronoi_dcel.pyx":383 - * for i in range(xi.edge_num(&xi)): - * if s_e.origin_index(&s_e) == this_e: - * return s_e.cache.H(&s_e, NAN_MATRIX) # <<<<<<<<<<<<<< - * s_e = s_e.next(&s_e) - * return init.Matrix2x2(0.0, 0.0, 0.0, 0.0) + /* "squish/voronoi.pyx":391 + * for _ in range(xi.edge_num(&xi)): + * if s_e.origin_index(&s_e) == this_e: + * return s_e.cache.H(&s_e, NAN_MATRIX) # <<<<<<<<<<<<<< + * s_e = s_e.next(&s_e) + * return _Matrix2x2(0.0, 0.0, 0.0, 0.0) */ - __pyx_r = __pyx_v_s_e.cache->H((&__pyx_v_s_e), __pyx_v_7_squish_NAN_MATRIX); + __pyx_r = __pyx_v_s_e.cache->H((&__pyx_v_s_e), __pyx_v_6squish_7voronoi_NAN_MATRIX); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":382 + /* "squish/voronoi.pyx":390 * - * for i in range(xi.edge_num(&xi)): - * if s_e.origin_index(&s_e) == this_e: # <<<<<<<<<<<<<< - * return s_e.cache.H(&s_e, NAN_MATRIX) - * s_e = s_e.next(&s_e) + * for _ in range(xi.edge_num(&xi)): + * if s_e.origin_index(&s_e) == this_e: # <<<<<<<<<<<<<< + * return s_e.cache.H(&s_e, NAN_MATRIX) + * s_e = s_e.next(&s_e) */ } - /* "squish/_squish/voronoi_dcel.pyx":384 - * if s_e.origin_index(&s_e) == this_e: - * return s_e.cache.H(&s_e, NAN_MATRIX) - * s_e = s_e.next(&s_e) # <<<<<<<<<<<<<< - * return init.Matrix2x2(0.0, 0.0, 0.0, 0.0) + /* "squish/voronoi.pyx":392 + * if s_e.origin_index(&s_e) == this_e: + * return s_e.cache.H(&s_e, NAN_MATRIX) + * s_e = s_e.next(&s_e) # <<<<<<<<<<<<<< + * return _Matrix2x2(0.0, 0.0, 0.0, 0.0) * */ __pyx_v_s_e = __pyx_v_s_e.next((&__pyx_v_s_e)); } - /* "squish/_squish/voronoi_dcel.pyx":385 - * return s_e.cache.H(&s_e, NAN_MATRIX) - * s_e = s_e.next(&s_e) - * return init.Matrix2x2(0.0, 0.0, 0.0, 0.0) # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":393 + * return s_e.cache.H(&s_e, NAN_MATRIX) + * s_e = s_e.next(&s_e) + * return _Matrix2x2(0.0, 0.0, 0.0, 0.0) # <<<<<<<<<<<<<< * * */ - __pyx_r = __pyx_v_7_squish_init.Matrix2x2(0.0, 0.0, 0.0, 0.0); + __pyx_r = __pyx_f_6squish_4core__Matrix2x2(0.0, 0.0, 0.0, 0.0); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":376 - * ) + /* "squish/voronoi.pyx":385 + * ) * * cdef inline Matrix2x2 get_H(HalfEdge* self, Site xi) nogil: # <<<<<<<<<<<<<< - * cdef INT_T this_e = self.origin_index(self) - * cdef HalfEdge s_e = xi.edge(&xi) + * cdef INT_T this_e = self.origin_index(self) + * cdef HalfEdge s_e = xi.edge(&xi) */ /* function exit code */ @@ -10009,21 +6575,21 @@ static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_get_H(__pyx_t_7 return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":398 - * """ +/* "squish/voronoi.pyx":406 + * """ * - * def __init__(VoronoiContainer self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, object site_arr): # <<<<<<<<<<<<<< - * self.n, self.w, self.h, self.r = n, w, h, r - * self.dim = [w, h] + * def __init__(VoronoiContainer self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, # <<<<<<<<<<<<<< + * object site_arr): + * self.n, self.w, self.h, self.r = n, w, h, r */ /* Python wrapper */ -static int __pyx_pw_7_squish_16VoronoiContainer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_7_squish_16VoronoiContainer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - __pyx_t_7_squish_INT_T __pyx_v_n; - __pyx_t_7_squish_FLOAT_T __pyx_v_w; - __pyx_t_7_squish_FLOAT_T __pyx_v_h; - __pyx_t_7_squish_FLOAT_T __pyx_v_r; +static int __pyx_pw_6squish_7voronoi_16VoronoiContainer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_6squish_7voronoi_16VoronoiContainer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + __pyx_t_6squish_4core_INT_T __pyx_v_n; + __pyx_t_6squish_4core_FLOAT_T __pyx_v_w; + __pyx_t_6squish_4core_FLOAT_T __pyx_v_h; + __pyx_t_6squish_4core_FLOAT_T __pyx_v_r; PyObject *__pyx_v_site_arr = 0; int __pyx_lineno = 0; const char *__pyx_filename = NULL; @@ -10060,29 +6626,29 @@ static int __pyx_pw_7_squish_16VoronoiContainer_1__init__(PyObject *__pyx_v_self case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 1); __PYX_ERR(1, 398, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 1); __PYX_ERR(0, 406, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 2); __PYX_ERR(1, 398, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 2); __PYX_ERR(0, 406, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_r)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 3); __PYX_ERR(1, 398, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 3); __PYX_ERR(0, 406, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_site_arr)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 4); __PYX_ERR(1, 398, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 4); __PYX_ERR(0, 406, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 398, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 406, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { goto __pyx_L5_argtuple_error; @@ -10093,35 +6659,35 @@ static int __pyx_pw_7_squish_16VoronoiContainer_1__init__(PyObject *__pyx_v_self values[3] = PyTuple_GET_ITEM(__pyx_args, 3); values[4] = PyTuple_GET_ITEM(__pyx_args, 4); } - __pyx_v_n = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_n == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(1, 398, __pyx_L3_error) - __pyx_v_w = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_w == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(1, 398, __pyx_L3_error) - __pyx_v_h = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_h == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(1, 398, __pyx_L3_error) - __pyx_v_r = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_r == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(1, 398, __pyx_L3_error) + __pyx_v_n = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_n == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 406, __pyx_L3_error) + __pyx_v_w = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_w == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 406, __pyx_L3_error) + __pyx_v_h = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_h == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 406, __pyx_L3_error) + __pyx_v_r = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_r == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 406, __pyx_L3_error) __pyx_v_site_arr = values[4]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 398, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 406, __pyx_L3_error) __pyx_L3_error:; - __Pyx_AddTraceback("_squish.VoronoiContainer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_7_squish_16VoronoiContainer___init__(((struct __pyx_obj_7_squish_VoronoiContainer *)__pyx_v_self), __pyx_v_n, __pyx_v_w, __pyx_v_h, __pyx_v_r, __pyx_v_site_arr); + __pyx_r = __pyx_pf_6squish_7voronoi_16VoronoiContainer___init__(((struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)__pyx_v_self), __pyx_v_n, __pyx_v_w, __pyx_v_h, __pyx_v_r, __pyx_v_site_arr); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_7_squish_16VoronoiContainer___init__(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self, __pyx_t_7_squish_INT_T __pyx_v_n, __pyx_t_7_squish_FLOAT_T __pyx_v_w, __pyx_t_7_squish_FLOAT_T __pyx_v_h, __pyx_t_7_squish_FLOAT_T __pyx_v_r, PyObject *__pyx_v_site_arr) { +static int __pyx_pf_6squish_7voronoi_16VoronoiContainer___init__(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self, __pyx_t_6squish_4core_INT_T __pyx_v_n, __pyx_t_6squish_4core_FLOAT_T __pyx_v_w, __pyx_t_6squish_4core_FLOAT_T __pyx_v_h, __pyx_t_6squish_4core_FLOAT_T __pyx_v_r, PyObject *__pyx_v_site_arr) { int __pyx_r; __Pyx_RefNannyDeclarations - __pyx_t_7_squish_INT_T __pyx_t_1; - __pyx_t_7_squish_FLOAT_T __pyx_t_2; - __pyx_t_7_squish_FLOAT_T __pyx_t_3; - __pyx_t_7_squish_FLOAT_T __pyx_t_4; - __pyx_t_7_squish_FLOAT_T __pyx_t_5[2]; + __pyx_t_6squish_4core_INT_T __pyx_t_1; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_2; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_3; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_4; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_5[2]; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; @@ -10131,11 +6697,11 @@ static int __pyx_pf_7_squish_16VoronoiContainer___init__(struct __pyx_obj_7_squi int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__init__", 0); - /* "squish/_squish/voronoi_dcel.pyx":399 - * - * def __init__(VoronoiContainer self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, object site_arr): - * self.n, self.w, self.h, self.r = n, w, h, r # <<<<<<<<<<<<<< - * self.dim = [w, h] + /* "squish/voronoi.pyx":408 + * def __init__(VoronoiContainer self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, + * object site_arr): + * self.n, self.w, self.h, self.r = n, w, h, r # <<<<<<<<<<<<<< + * self.dim = [w, h] * */ __pyx_t_1 = __pyx_v_n; @@ -10147,27 +6713,27 @@ static int __pyx_pf_7_squish_16VoronoiContainer___init__(struct __pyx_obj_7_squi __pyx_v_self->h = __pyx_t_3; __pyx_v_self->r = __pyx_t_4; - /* "squish/_squish/voronoi_dcel.pyx":400 - * def __init__(VoronoiContainer self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, object site_arr): - * self.n, self.w, self.h, self.r = n, w, h, r - * self.dim = [w, h] # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":409 + * object site_arr): + * self.n, self.w, self.h, self.r = n, w, h, r + * self.dim = [w, h] # <<<<<<<<<<<<<< * - * self.calculate_voronoi(site_arr.astype(FLOAT)) + * self.calculate_voronoi(site_arr.astype(FLOAT)) */ __pyx_t_5[0] = __pyx_v_w; __pyx_t_5[1] = __pyx_v_h; memcpy(&(__pyx_v_self->dim[0]), __pyx_t_5, sizeof(__pyx_v_self->dim[0]) * (2)); - /* "squish/_squish/voronoi_dcel.pyx":402 - * self.dim = [w, h] + /* "squish/voronoi.pyx":411 + * self.dim = [w, h] * - * self.calculate_voronoi(site_arr.astype(FLOAT)) # <<<<<<<<<<<<<< - * self.generate_dcel() + * self.calculate_voronoi(site_arr.astype(FLOAT)) # <<<<<<<<<<<<<< + * self.generate_dcel() * */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_site_arr, __pyx_n_s_astype); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 402, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_site_arr, __pyx_n_s_astype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 402, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { @@ -10182,64 +6748,64 @@ static int __pyx_pf_7_squish_16VoronoiContainer___init__(struct __pyx_obj_7_squi __pyx_t_6 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 402, __pyx_L1_error) + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 402, __pyx_L1_error) - ((struct __pyx_vtabstruct_7_squish_VoronoiContainer *)__pyx_v_self->__pyx_vtab)->calculate_voronoi(__pyx_v_self, ((PyArrayObject *)__pyx_t_6)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 402, __pyx_L1_error) + if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 411, __pyx_L1_error) + ((struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer *)__pyx_v_self->__pyx_vtab)->calculate_voronoi(__pyx_v_self, ((PyArrayObject *)__pyx_t_6)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 411, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "squish/_squish/voronoi_dcel.pyx":403 + /* "squish/voronoi.pyx":412 * - * self.calculate_voronoi(site_arr.astype(FLOAT)) - * self.generate_dcel() # <<<<<<<<<<<<<< + * self.calculate_voronoi(site_arr.astype(FLOAT)) + * self.generate_dcel() # <<<<<<<<<<<<<< * - * self.common_cache() + * self.common_cache() */ - ((struct __pyx_vtabstruct_7_squish_VoronoiContainer *)__pyx_v_self->__pyx_vtab)->generate_dcel(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 403, __pyx_L1_error) + ((struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer *)__pyx_v_self->__pyx_vtab)->generate_dcel(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 412, __pyx_L1_error) - /* "squish/_squish/voronoi_dcel.pyx":405 - * self.generate_dcel() + /* "squish/voronoi.pyx":414 + * self.generate_dcel() * - * self.common_cache() # <<<<<<<<<<<<<< - * self.precompute() - * self.calc_grad() + * self.common_cache() # <<<<<<<<<<<<<< + * self.precompute() + * self.calc_grad() */ - ((struct __pyx_vtabstruct_7_squish_VoronoiContainer *)__pyx_v_self->__pyx_vtab)->common_cache(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 405, __pyx_L1_error) + ((struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer *)__pyx_v_self->__pyx_vtab)->common_cache(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 414, __pyx_L1_error) - /* "squish/_squish/voronoi_dcel.pyx":406 + /* "squish/voronoi.pyx":415 * - * self.common_cache() - * self.precompute() # <<<<<<<<<<<<<< - * self.calc_grad() - * self.get_statistics() + * self.common_cache() + * self.precompute() # <<<<<<<<<<<<<< + * self.calc_grad() + * self.get_statistics() */ - ((struct __pyx_vtabstruct_7_squish_VoronoiContainer *)__pyx_v_self->__pyx_vtab)->precompute(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 406, __pyx_L1_error) + ((struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer *)__pyx_v_self->__pyx_vtab)->precompute(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 415, __pyx_L1_error) - /* "squish/_squish/voronoi_dcel.pyx":407 - * self.common_cache() - * self.precompute() - * self.calc_grad() # <<<<<<<<<<<<<< - * self.get_statistics() + /* "squish/voronoi.pyx":416 + * self.common_cache() + * self.precompute() + * self.calc_grad() # <<<<<<<<<<<<<< + * self.get_statistics() * */ - ((struct __pyx_vtabstruct_7_squish_VoronoiContainer *)__pyx_v_self->__pyx_vtab)->calc_grad(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 407, __pyx_L1_error) + ((struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer *)__pyx_v_self->__pyx_vtab)->calc_grad(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 416, __pyx_L1_error) - /* "squish/_squish/voronoi_dcel.pyx":408 - * self.precompute() - * self.calc_grad() - * self.get_statistics() # <<<<<<<<<<<<<< - * + /* "squish/voronoi.pyx":417 + * self.precompute() + * self.calc_grad() + * self.get_statistics() # <<<<<<<<<<<<<< * + * cdef void calculate_voronoi(VoronoiContainer self, */ - ((struct __pyx_vtabstruct_7_squish_VoronoiContainer *)__pyx_v_self->__pyx_vtab)->get_statistics(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 408, __pyx_L1_error) + ((struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer *)__pyx_v_self->__pyx_vtab)->get_statistics(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 417, __pyx_L1_error) - /* "squish/_squish/voronoi_dcel.pyx":398 - * """ + /* "squish/voronoi.pyx":406 + * """ * - * def __init__(VoronoiContainer self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, object site_arr): # <<<<<<<<<<<<<< - * self.n, self.w, self.h, self.r = n, w, h, r - * self.dim = [w, h] + * def __init__(VoronoiContainer self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, # <<<<<<<<<<<<<< + * object site_arr): + * self.n, self.w, self.h, self.r = n, w, h, r */ /* function exit code */ @@ -10250,26 +6816,26 @@ static int __pyx_pf_7_squish_16VoronoiContainer___init__(struct __pyx_obj_7_squi __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); - __Pyx_AddTraceback("_squish.VoronoiContainer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":411 +/* "squish/voronoi.pyx":419 + * self.get_statistics() * - * - * cdef void calculate_voronoi(VoronoiContainer self, # <<<<<<<<<<<<<< - * np.ndarray[FLOAT_T, ndim=2] site_arr) except *: - * """ + * cdef void calculate_voronoi(VoronoiContainer self, # <<<<<<<<<<<<<< + * np.ndarray[FLOAT_T, ndim=2] site_arr) except *: + * """ */ -static void __pyx_f_7_squish_16VoronoiContainer_calculate_voronoi(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self, PyArrayObject *__pyx_v_site_arr) { +static void __pyx_f_6squish_7voronoi_16VoronoiContainer_calculate_voronoi(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self, PyArrayObject *__pyx_v_site_arr) { PyArrayObject *__pyx_v_symm = 0; PyArrayObject *__pyx_v_dim = 0; PyArrayObject *__pyx_v_full_site_arr = 0; - __pyx_t_7_squish_INT_T __pyx_v_i; + __pyx_t_6squish_4core_INT_T __pyx_v_i; __Pyx_LocalBuf_ND __pyx_pybuffernd_dim; __Pyx_Buffer __pyx_pybuffer_dim; __Pyx_LocalBuf_ND __pyx_pybuffernd_full_site_arr; @@ -10286,9 +6852,9 @@ static void __pyx_f_7_squish_16VoronoiContainer_calculate_voronoi(struct __pyx_o PyArrayObject *__pyx_t_5 = NULL; PyArrayObject *__pyx_t_6 = NULL; PyArrayObject *__pyx_t_7 = NULL; - __pyx_t_7_squish_INT_T __pyx_t_8; + __pyx_t_6squish_4core_INT_T __pyx_t_8; int __pyx_t_9; - __pyx_t_7_squish_INT_T __pyx_t_10; + __pyx_t_6squish_4core_INT_T __pyx_t_10; __Pyx_memviewslice __pyx_t_11 = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_lineno = 0; const char *__pyx_filename = NULL; @@ -10312,23 +6878,23 @@ static void __pyx_f_7_squish_16VoronoiContainer_calculate_voronoi(struct __pyx_o __pyx_pybuffernd_site_arr.rcbuffer = &__pyx_pybuffer_site_arr; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_site_arr, &__Pyx_TypeInfo_nn___pyx_t_7_squish_FLOAT_T, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(1, 411, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_site_arr, &__Pyx_TypeInfo_nn___pyx_t_6squish_4core_FLOAT_T, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 419, __pyx_L1_error) } __pyx_pybuffernd_site_arr.diminfo[0].strides = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_site_arr.diminfo[0].shape = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_site_arr.diminfo[1].strides = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_site_arr.diminfo[1].shape = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.shape[1]; - /* "squish/_squish/voronoi_dcel.pyx":418 - * """ - * global SYMM - * cdef np.ndarray[FLOAT_T, ndim=2] symm = np.asarray(SYMM).reshape(9,2) # <<<<<<<<<<<<<< - * cdef np.ndarray[FLOAT_T, ndim=1] dim = np.asarray(self.dim) - * cdef np.ndarray[FLOAT_T, ndim=2] full_site_arr = np.empty((self.n*9+8, 2), dtype=FLOAT) + /* "squish/voronoi.pyx":426 + * """ + * global SYMM + * cdef np.ndarray[FLOAT_T, ndim=2] symm = np.asarray(SYMM).reshape(9,2) # <<<<<<<<<<<<<< + * cdef np.ndarray[FLOAT_T, ndim=1] dim = np.asarray(self.dim) + * cdef np.ndarray[FLOAT_T, ndim=2] full_site_arr = np.empty( */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 418, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_asarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 418, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_asarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_carray_to_py___pyx_t_7_squish_FLOAT_T(__pyx_v_7_squish_SYMM, 18); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 418, __pyx_L1_error) + __pyx_t_2 = __Pyx_carray_to_py___pyx_t_6squish_4core_FLOAT_T(__pyx_v_6squish_7voronoi_SYMM, 18); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { @@ -10343,22 +6909,22 @@ static void __pyx_f_7_squish_16VoronoiContainer_calculate_voronoi(struct __pyx_o __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 418, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 418, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 418, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 418, __pyx_L1_error) + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 426, __pyx_L1_error) __pyx_t_5 = ((PyArrayObject *)__pyx_t_1); { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_symm.rcbuffer->pybuffer, (PyObject*)__pyx_t_5, &__Pyx_TypeInfo_nn___pyx_t_7_squish_FLOAT_T, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_symm.rcbuffer->pybuffer, (PyObject*)__pyx_t_5, &__Pyx_TypeInfo_nn___pyx_t_6squish_4core_FLOAT_T, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { __pyx_v_symm = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_symm.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(1, 418, __pyx_L1_error) + __PYX_ERR(0, 426, __pyx_L1_error) } else {__pyx_pybuffernd_symm.diminfo[0].strides = __pyx_pybuffernd_symm.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_symm.diminfo[0].shape = __pyx_pybuffernd_symm.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_symm.diminfo[1].strides = __pyx_pybuffernd_symm.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_symm.diminfo[1].shape = __pyx_pybuffernd_symm.rcbuffer->pybuffer.shape[1]; } } @@ -10366,19 +6932,19 @@ static void __pyx_f_7_squish_16VoronoiContainer_calculate_voronoi(struct __pyx_o __pyx_v_symm = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":419 - * global SYMM - * cdef np.ndarray[FLOAT_T, ndim=2] symm = np.asarray(SYMM).reshape(9,2) - * cdef np.ndarray[FLOAT_T, ndim=1] dim = np.asarray(self.dim) # <<<<<<<<<<<<<< - * cdef np.ndarray[FLOAT_T, ndim=2] full_site_arr = np.empty((self.n*9+8, 2), dtype=FLOAT) - * + /* "squish/voronoi.pyx":427 + * global SYMM + * cdef np.ndarray[FLOAT_T, ndim=2] symm = np.asarray(SYMM).reshape(9,2) + * cdef np.ndarray[FLOAT_T, ndim=1] dim = np.asarray(self.dim) # <<<<<<<<<<<<<< + * cdef np.ndarray[FLOAT_T, ndim=2] full_site_arr = np.empty( + * (self.n*9+8, 2), */ - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 419, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 427, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 419, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 427, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_carray_to_py___pyx_t_7_squish_FLOAT_T(__pyx_v_self->dim, 2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 419, __pyx_L1_error) + __pyx_t_3 = __Pyx_carray_to_py___pyx_t_6squish_4core_FLOAT_T(__pyx_v_self->dim, 2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 427, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { @@ -10393,16 +6959,16 @@ static void __pyx_f_7_squish_16VoronoiContainer_calculate_voronoi(struct __pyx_o __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 419, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 427, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 419, __pyx_L1_error) + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 427, __pyx_L1_error) __pyx_t_6 = ((PyArrayObject *)__pyx_t_1); { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_dim.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_7_squish_FLOAT_T, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_dim.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_6squish_4core_FLOAT_T, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { __pyx_v_dim = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_dim.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(1, 419, __pyx_L1_error) + __PYX_ERR(0, 427, __pyx_L1_error) } else {__pyx_pybuffernd_dim.diminfo[0].strides = __pyx_pybuffernd_dim.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_dim.diminfo[0].shape = __pyx_pybuffernd_dim.rcbuffer->pybuffer.shape[0]; } } @@ -10410,21 +6976,29 @@ static void __pyx_f_7_squish_16VoronoiContainer_calculate_voronoi(struct __pyx_o __pyx_v_dim = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":420 - * cdef np.ndarray[FLOAT_T, ndim=2] symm = np.asarray(SYMM).reshape(9,2) - * cdef np.ndarray[FLOAT_T, ndim=1] dim = np.asarray(self.dim) - * cdef np.ndarray[FLOAT_T, ndim=2] full_site_arr = np.empty((self.n*9+8, 2), dtype=FLOAT) # <<<<<<<<<<<<<< - * - * # Generate periodic sites and sites that bound periodic sites. + /* "squish/voronoi.pyx":428 + * cdef np.ndarray[FLOAT_T, ndim=2] symm = np.asarray(SYMM).reshape(9,2) + * cdef np.ndarray[FLOAT_T, ndim=1] dim = np.asarray(self.dim) + * cdef np.ndarray[FLOAT_T, ndim=2] full_site_arr = np.empty( # <<<<<<<<<<<<<< + * (self.n*9+8, 2), + * dtype=FLOAT */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 420, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 428, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 420, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 428, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyInt_From_npy_int64(((__pyx_v_self->n * 9) + 8)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 420, __pyx_L1_error) + + /* "squish/voronoi.pyx":429 + * cdef np.ndarray[FLOAT_T, ndim=1] dim = np.asarray(self.dim) + * cdef np.ndarray[FLOAT_T, ndim=2] full_site_arr = np.empty( + * (self.n*9+8, 2), # <<<<<<<<<<<<<< + * dtype=FLOAT + * ) + */ + __pyx_t_1 = __Pyx_PyInt_From_npy_int64(((__pyx_v_self->n * 9) + 8)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 420, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); @@ -10432,29 +7006,53 @@ static void __pyx_f_7_squish_16VoronoiContainer_calculate_voronoi(struct __pyx_o __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_2); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 420, __pyx_L1_error) + + /* "squish/voronoi.pyx":428 + * cdef np.ndarray[FLOAT_T, ndim=2] symm = np.asarray(SYMM).reshape(9,2) + * cdef np.ndarray[FLOAT_T, ndim=1] dim = np.asarray(self.dim) + * cdef np.ndarray[FLOAT_T, ndim=2] full_site_arr = np.empty( # <<<<<<<<<<<<<< + * (self.n*9+8, 2), + * dtype=FLOAT + */ + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 428, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 420, __pyx_L1_error) + + /* "squish/voronoi.pyx":430 + * cdef np.ndarray[FLOAT_T, ndim=2] full_site_arr = np.empty( + * (self.n*9+8, 2), + * dtype=FLOAT # <<<<<<<<<<<<<< + * ) + * + */ + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 420, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(1, 420, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 430, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 420, __pyx_L1_error) + + /* "squish/voronoi.pyx":428 + * cdef np.ndarray[FLOAT_T, ndim=2] symm = np.asarray(SYMM).reshape(9,2) + * cdef np.ndarray[FLOAT_T, ndim=1] dim = np.asarray(self.dim) + * cdef np.ndarray[FLOAT_T, ndim=2] full_site_arr = np.empty( # <<<<<<<<<<<<<< + * (self.n*9+8, 2), + * dtype=FLOAT + */ + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 428, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 420, __pyx_L1_error) + if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 428, __pyx_L1_error) __pyx_t_7 = ((PyArrayObject *)__pyx_t_4); { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_full_site_arr.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_7_squish_FLOAT_T, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_full_site_arr.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_6squish_4core_FLOAT_T, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { __pyx_v_full_site_arr = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_full_site_arr.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(1, 420, __pyx_L1_error) + __PYX_ERR(0, 428, __pyx_L1_error) } else {__pyx_pybuffernd_full_site_arr.diminfo[0].strides = __pyx_pybuffernd_full_site_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_full_site_arr.diminfo[0].shape = __pyx_pybuffernd_full_site_arr.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_full_site_arr.diminfo[1].strides = __pyx_pybuffernd_full_site_arr.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_full_site_arr.diminfo[1].shape = __pyx_pybuffernd_full_site_arr.rcbuffer->pybuffer.shape[1]; } } @@ -10462,101 +7060,101 @@ static void __pyx_f_7_squish_16VoronoiContainer_calculate_voronoi(struct __pyx_o __pyx_v_full_site_arr = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "squish/_squish/voronoi_dcel.pyx":424 - * # Generate periodic sites and sites that bound periodic sites. - * cdef INT_T i - * for i in range(9): # <<<<<<<<<<<<<< - * full_site_arr[self.n*i:self.n*(i+1)] = site_arr + symm[i]*dim - * if i > 0: + /* "squish/voronoi.pyx":435 + * # Generate periodic sites and sites that bound periodic sites. + * cdef INT_T i + * for i in range(9): # <<<<<<<<<<<<<< + * full_site_arr[self.n*i:self.n*(i+1)] = site_arr + symm[i]*dim + * if i > 0: */ for (__pyx_t_8 = 0; __pyx_t_8 < 9; __pyx_t_8+=1) { __pyx_v_i = __pyx_t_8; - /* "squish/_squish/voronoi_dcel.pyx":425 - * cdef INT_T i - * for i in range(9): - * full_site_arr[self.n*i:self.n*(i+1)] = site_arr + symm[i]*dim # <<<<<<<<<<<<<< - * if i > 0: - * full_site_arr[9*self.n+i-1] = dim/2 + 2*dim*symm[i] + /* "squish/voronoi.pyx":436 + * cdef INT_T i + * for i in range(9): + * full_site_arr[self.n*i:self.n*(i+1)] = site_arr + symm[i]*dim # <<<<<<<<<<<<<< + * if i > 0: + * full_site_arr[9*self.n+i-1] = dim/2 + 2*dim*symm[i] */ - __pyx_t_4 = __Pyx_GetItemInt(((PyObject *)__pyx_v_symm), __pyx_v_i, __pyx_t_7_squish_INT_T, 1, __Pyx_PyInt_From_npy_int64, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 425, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetItemInt(((PyObject *)__pyx_v_symm), __pyx_v_i, __pyx_t_6squish_4core_INT_T, 1, __Pyx_PyInt_From_npy_int64, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 436, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, ((PyObject *)__pyx_v_dim)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 425, __pyx_L1_error) + __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, ((PyObject *)__pyx_v_dim)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 436, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyNumber_Add(((PyObject *)__pyx_v_site_arr), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 425, __pyx_L1_error) + __pyx_t_4 = PyNumber_Add(((PyObject *)__pyx_v_site_arr), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 436, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_From_npy_int64((__pyx_v_self->n * __pyx_v_i)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 425, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_npy_int64((__pyx_v_self->n * __pyx_v_i)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 436, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __Pyx_PyInt_From_npy_int64((__pyx_v_self->n * (__pyx_v_i + 1))); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 425, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_npy_int64((__pyx_v_self->n * (__pyx_v_i + 1))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PySlice_New(__pyx_t_3, __pyx_t_1, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 425, __pyx_L1_error) + __pyx_t_2 = PySlice_New(__pyx_t_3, __pyx_t_1, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 436, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_full_site_arr), __pyx_t_2, __pyx_t_4) < 0)) __PYX_ERR(1, 425, __pyx_L1_error) + if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_full_site_arr), __pyx_t_2, __pyx_t_4) < 0)) __PYX_ERR(0, 436, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "squish/_squish/voronoi_dcel.pyx":426 - * for i in range(9): - * full_site_arr[self.n*i:self.n*(i+1)] = site_arr + symm[i]*dim - * if i > 0: # <<<<<<<<<<<<<< - * full_site_arr[9*self.n+i-1] = dim/2 + 2*dim*symm[i] + /* "squish/voronoi.pyx":437 + * for i in range(9): + * full_site_arr[self.n*i:self.n*(i+1)] = site_arr + symm[i]*dim + * if i > 0: # <<<<<<<<<<<<<< + * full_site_arr[9*self.n+i-1] = dim/2 + 2*dim*symm[i] * */ __pyx_t_9 = ((__pyx_v_i > 0) != 0); if (__pyx_t_9) { - /* "squish/_squish/voronoi_dcel.pyx":427 - * full_site_arr[self.n*i:self.n*(i+1)] = site_arr + symm[i]*dim - * if i > 0: - * full_site_arr[9*self.n+i-1] = dim/2 + 2*dim*symm[i] # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":438 + * full_site_arr[self.n*i:self.n*(i+1)] = site_arr + symm[i]*dim + * if i > 0: + * full_site_arr[9*self.n+i-1] = dim/2 + 2*dim*symm[i] # <<<<<<<<<<<<<< * - * # Use SciPy to compute the Voronoi set. + * # Use SciPy to compute the Voronoi set. */ - __pyx_t_4 = __Pyx_PyNumber_Divide(((PyObject *)__pyx_v_dim), __pyx_int_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 427, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyNumber_Divide(((PyObject *)__pyx_v_dim), __pyx_int_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = PyNumber_Multiply(__pyx_int_2, ((PyObject *)__pyx_v_dim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 427, __pyx_L1_error) + __pyx_t_2 = PyNumber_Multiply(__pyx_int_2, ((PyObject *)__pyx_v_dim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_symm), __pyx_v_i, __pyx_t_7_squish_INT_T, 1, __Pyx_PyInt_From_npy_int64, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 427, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_symm), __pyx_v_i, __pyx_t_6squish_4core_INT_T, 1, __Pyx_PyInt_From_npy_int64, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 427, __pyx_L1_error) + __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 438, __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_t_1 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 427, __pyx_L1_error) + __pyx_t_1 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_10 = (((9 * __pyx_v_self->n) + __pyx_v_i) - 1); - if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_full_site_arr), __pyx_t_10, __pyx_t_1, __pyx_t_7_squish_INT_T, 1, __Pyx_PyInt_From_npy_int64, 0, 0, 0) < 0)) __PYX_ERR(1, 427, __pyx_L1_error) + if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_full_site_arr), __pyx_t_10, __pyx_t_1, __pyx_t_6squish_4core_INT_T, 1, __Pyx_PyInt_From_npy_int64, 0, 0, 0) < 0)) __PYX_ERR(0, 438, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":426 - * for i in range(9): - * full_site_arr[self.n*i:self.n*(i+1)] = site_arr + symm[i]*dim - * if i > 0: # <<<<<<<<<<<<<< - * full_site_arr[9*self.n+i-1] = dim/2 + 2*dim*symm[i] + /* "squish/voronoi.pyx":437 + * for i in range(9): + * full_site_arr[self.n*i:self.n*(i+1)] = site_arr + symm[i]*dim + * if i > 0: # <<<<<<<<<<<<<< + * full_site_arr[9*self.n+i-1] = dim/2 + 2*dim*symm[i] * */ } } - /* "squish/_squish/voronoi_dcel.pyx":430 + /* "squish/voronoi.pyx":441 * - * # Use SciPy to compute the Voronoi set. - * self.scipy_vor = scipy.spatial.Voronoi(full_site_arr) # <<<<<<<<<<<<<< - * self.points = self.scipy_vor.points - * self.vertices = self.scipy_vor.vertices + * # Use SciPy to compute the Voronoi set. + * self.scipy_vor = scipy.spatial.Voronoi(full_site_arr) # <<<<<<<<<<<<<< + * self.points = self.scipy_vor.points + * self.vertices = self.scipy_vor.vertices */ - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_scipy); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 430, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_scipy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 441, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_spatial); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 430, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_spatial); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 441, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Voronoi); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 430, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Voronoi); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 441, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -10571,56 +7169,56 @@ static void __pyx_f_7_squish_16VoronoiContainer_calculate_voronoi(struct __pyx_o } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_full_site_arr)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_full_site_arr)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 430, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 441, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scipy_vor, __pyx_t_1) < 0) __PYX_ERR(1, 430, __pyx_L1_error) + if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scipy_vor, __pyx_t_1) < 0) __PYX_ERR(0, 441, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":431 - * # Use SciPy to compute the Voronoi set. - * self.scipy_vor = scipy.spatial.Voronoi(full_site_arr) - * self.points = self.scipy_vor.points # <<<<<<<<<<<<<< - * self.vertices = self.scipy_vor.vertices + /* "squish/voronoi.pyx":442 + * # Use SciPy to compute the Voronoi set. + * self.scipy_vor = scipy.spatial.Voronoi(full_site_arr) + * self.points = self.scipy_vor.points # <<<<<<<<<<<<<< + * self.vertices = self.scipy_vor.vertices * */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scipy_vor); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 431, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scipy_vor); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_points); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 431, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_points); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_7_squish_FLOAT_T(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(1, 431, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_6squish_4core_FLOAT_T(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 442, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_self->points, 0); __pyx_v_self->points = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL; - /* "squish/_squish/voronoi_dcel.pyx":432 - * self.scipy_vor = scipy.spatial.Voronoi(full_site_arr) - * self.points = self.scipy_vor.points - * self.vertices = self.scipy_vor.vertices # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":443 + * self.scipy_vor = scipy.spatial.Voronoi(full_site_arr) + * self.points = self.scipy_vor.points + * self.vertices = self.scipy_vor.vertices # <<<<<<<<<<<<<< * * */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scipy_vor); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 432, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scipy_vor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 443, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_vertices); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 432, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_vertices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 443, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_7_squish_FLOAT_T(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(1, 432, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_6squish_4core_FLOAT_T(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 443, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_self->vertices, 0); __pyx_v_self->vertices = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL; - /* "squish/_squish/voronoi_dcel.pyx":411 + /* "squish/voronoi.pyx":419 + * self.get_statistics() * - * - * cdef void calculate_voronoi(VoronoiContainer self, # <<<<<<<<<<<<<< - * np.ndarray[FLOAT_T, ndim=2] site_arr) except *: - * """ + * cdef void calculate_voronoi(VoronoiContainer self, # <<<<<<<<<<<<<< + * np.ndarray[FLOAT_T, ndim=2] site_arr) except *: + * """ */ /* function exit code */ @@ -10640,7 +7238,7 @@ static void __pyx_f_7_squish_16VoronoiContainer_calculate_voronoi(struct __pyx_o __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_symm.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_AddTraceback("_squish.VoronoiContainer.calculate_voronoi", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.calculate_voronoi", __pyx_clineno, __pyx_lineno, __pyx_filename); goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_dim.rcbuffer->pybuffer); @@ -10654,33 +7252,32 @@ static void __pyx_f_7_squish_16VoronoiContainer_calculate_voronoi(struct __pyx_o __Pyx_RefNannyFinishContext(); } -/* "squish/_squish/voronoi_dcel.pyx":435 +/* "squish/voronoi.pyx":446 * * - * cdef void generate_dcel(VoronoiContainer self) except *: # <<<<<<<<<<<<<< - * cdef INT_T npoints = self.n*9+8 - * cdef array.array int_tmplt = array.array('q', []) + * cdef void generate_dcel(VoronoiContainer self) except *: # <<<<<<<<<<<<<< + * cdef array.array int_tmplt = array.array('q', []) + * */ -static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self) { - CYTHON_UNUSED __pyx_t_7_squish_INT_T __pyx_v_npoints; +static void __pyx_f_6squish_7voronoi_16VoronoiContainer_generate_dcel(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self) { arrayobject *__pyx_v_int_tmplt = 0; PyArrayObject *__pyx_v_offsets = 0; arrayobject *__pyx_v_vert_indices = 0; - __pyx_t_7_squish_INT_T __pyx_v_i; + __pyx_t_6squish_4core_INT_T __pyx_v_i; PyObject *__pyx_v_verts = NULL; PyArrayObject *__pyx_v_vert_indices_np = 0; PyArrayObject *__pyx_v_border_sites = 0; - __pyx_t_7_squish_INT_T __pyx_v_border_num; - __pyx_t_7_squish_INT_T __pyx_v_edge_count; - __pyx_t_7_squish_INT_T __pyx_v_diff; + __pyx_t_6squish_4core_INT_T __pyx_v_border_num; + __pyx_t_6squish_4core_INT_T __pyx_v_edge_count; + __pyx_t_6squish_4core_INT_T __pyx_v_diff; PyArrayObject *__pyx_v_site_verts = 0; - __pyx_t_7_squish_INT_T __pyx_v_j; - __pyx_t_7_squish_INT_T __pyx_v_site_i; - __pyx_t_7_squish_INT_T __pyx_v_edge_i; - __pyx_t_7_squish_INT_T __pyx_v_edge_offset; - __pyx_t_7_squish_INT_T __pyx_v_vert_num; - __pyx_t_7_squish_INT_T __pyx_v_twin_index; + __pyx_t_6squish_4core_INT_T __pyx_v_j; + __pyx_t_6squish_4core_INT_T __pyx_v_site_i; + __pyx_t_6squish_4core_INT_T __pyx_v_edge_i; + __pyx_t_6squish_4core_INT_T __pyx_v_edge_offset; + __pyx_t_6squish_4core_INT_T __pyx_v_vert_num; + __pyx_t_6squish_4core_INT_T __pyx_v_twin_index; PyObject *__pyx_v_edge_indices = NULL; __Pyx_LocalBuf_ND __pyx_pybuffernd_border_sites; __Pyx_Buffer __pyx_pybuffer_border_sites; @@ -10696,12 +7293,12 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyArrayObject *__pyx_t_5 = NULL; - __pyx_t_7_squish_INT_T __pyx_t_6; - __pyx_t_7_squish_INT_T __pyx_t_7; - __pyx_t_7_squish_INT_T __pyx_t_8; - __pyx_t_7_squish_INT_T __pyx_t_9; + __pyx_t_6squish_4core_INT_T __pyx_t_6; + __pyx_t_6squish_4core_INT_T __pyx_t_7; + __pyx_t_6squish_4core_INT_T __pyx_t_8; + __pyx_t_6squish_4core_INT_T __pyx_t_9; Py_ssize_t __pyx_t_10; - __pyx_t_7_squish_INT_T __pyx_t_11; + __pyx_t_6squish_4core_INT_T __pyx_t_11; PyArrayObject *__pyx_t_12 = NULL; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; @@ -10717,9 +7314,9 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 __Pyx_memviewslice __pyx_t_24 = { 0, 0, { 0 }, { 0 }, { 0 } }; Py_ssize_t __pyx_t_25; Py_ssize_t __pyx_t_26; - __pyx_t_7_squish_INT_T __pyx_t_27; + __pyx_t_6squish_4core_INT_T __pyx_t_27; Py_ssize_t __pyx_t_28; - __pyx_t_7_squish_INT_T __pyx_t_29; + __pyx_t_6squish_4core_INT_T __pyx_t_29; int __pyx_t_30; PyArrayObject *__pyx_t_31 = NULL; PyObject *__pyx_t_32 = NULL; @@ -10728,7 +7325,7 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 __Pyx_memviewslice __pyx_t_35 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_t_36 = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_t_37 = { 0, 0, { 0 }, { 0 }, { 0 } }; - __pyx_t_7_squish_INT_T __pyx_t_38; + __pyx_t_6squish_4core_INT_T __pyx_t_38; __Pyx_memviewslice __pyx_t_39 = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_lineno = 0; const char *__pyx_filename = NULL; @@ -10751,25 +7348,16 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 __pyx_pybuffernd_site_verts.data = NULL; __pyx_pybuffernd_site_verts.rcbuffer = &__pyx_pybuffer_site_verts; - /* "squish/_squish/voronoi_dcel.pyx":436 + /* "squish/voronoi.pyx":447 * - * cdef void generate_dcel(VoronoiContainer self) except *: - * cdef INT_T npoints = self.n*9+8 # <<<<<<<<<<<<<< - * cdef array.array int_tmplt = array.array('q', []) + * cdef void generate_dcel(VoronoiContainer self) except *: + * cdef array.array int_tmplt = array.array('q', []) # <<<<<<<<<<<<<< * + * cdef np.ndarray[INT_T, ndim=1] offsets = np.zeros(self.n*9+1, dtype=INT) */ - __pyx_v_npoints = ((__pyx_v_self->n * 9) + 8); - - /* "squish/_squish/voronoi_dcel.pyx":437 - * cdef void generate_dcel(VoronoiContainer self) except *: - * cdef INT_T npoints = self.n*9+8 - * cdef array.array int_tmplt = array.array('q', []) # <<<<<<<<<<<<<< - * - * cdef np.ndarray[INT_T, ndim=1] offsets = np.zeros(self.n*9+1, dtype=INT) - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 437, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 437, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_u_q); __Pyx_GIVEREF(__pyx_n_u_q); @@ -10777,49 +7365,49 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7cpython_5array_array), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 437, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7cpython_5array_array), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_int_tmplt = ((arrayobject *)__pyx_t_1); __pyx_t_1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":439 - * cdef array.array int_tmplt = array.array('q', []) + /* "squish/voronoi.pyx":449 + * cdef array.array int_tmplt = array.array('q', []) * - * cdef np.ndarray[INT_T, ndim=1] offsets = np.zeros(self.n*9+1, dtype=INT) # <<<<<<<<<<<<<< - * cdef array.array vert_indices = array.clone(int_tmplt, 0, False) + * cdef np.ndarray[INT_T, ndim=1] offsets = np.zeros(self.n*9+1, dtype=INT) # <<<<<<<<<<<<<< + * cdef array.array vert_indices = array.clone(int_tmplt, 0, False) * */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 439, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 439, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 449, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyInt_From_npy_int64(((__pyx_v_self->n * 9) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 439, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_npy_int64(((__pyx_v_self->n * 9) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 439, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 449, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 439, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 439, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 449, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(1, 439, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 449, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 439, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 449, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 439, __pyx_L1_error) + if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 449, __pyx_L1_error) __pyx_t_5 = ((PyArrayObject *)__pyx_t_4); { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_offsets.rcbuffer->pybuffer, (PyObject*)__pyx_t_5, &__Pyx_TypeInfo_nn___pyx_t_7_squish_INT_T, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_offsets.rcbuffer->pybuffer, (PyObject*)__pyx_t_5, &__Pyx_TypeInfo_nn___pyx_t_6squish_4core_INT_T, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { __pyx_v_offsets = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(1, 439, __pyx_L1_error) + __PYX_ERR(0, 449, __pyx_L1_error) } else {__pyx_pybuffernd_offsets.diminfo[0].strides = __pyx_pybuffernd_offsets.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_offsets.diminfo[0].shape = __pyx_pybuffernd_offsets.rcbuffer->pybuffer.shape[0]; } } @@ -10827,79 +7415,79 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 __pyx_v_offsets = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "squish/_squish/voronoi_dcel.pyx":440 + /* "squish/voronoi.pyx":450 * - * cdef np.ndarray[INT_T, ndim=1] offsets = np.zeros(self.n*9+1, dtype=INT) - * cdef array.array vert_indices = array.clone(int_tmplt, 0, False) # <<<<<<<<<<<<<< + * cdef np.ndarray[INT_T, ndim=1] offsets = np.zeros(self.n*9+1, dtype=INT) + * cdef array.array vert_indices = array.clone(int_tmplt, 0, False) # <<<<<<<<<<<<<< * - * # Flatten regions into array, so it can be used later. + * # Flatten regions into array, so it can be used later. */ - __pyx_t_4 = ((PyObject *)__pyx_f_7cpython_5array_clone(__pyx_v_int_tmplt, 0, 0)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 440, __pyx_L1_error) + __pyx_t_4 = ((PyObject *)__pyx_f_7cpython_5array_clone(__pyx_v_int_tmplt, 0, 0)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_vert_indices = ((arrayobject *)__pyx_t_4); __pyx_t_4 = 0; - /* "squish/_squish/voronoi_dcel.pyx":444 - * # Flatten regions into array, so it can be used later. - * cdef INT_T i - * for i in range(self.n*9): # <<<<<<<<<<<<<< - * verts = self.scipy_vor.regions[self.scipy_vor.point_region[i]] - * offsets[i+1] = offsets[i] + len(verts) # Build offsets. + /* "squish/voronoi.pyx":454 + * # Flatten regions into array, so it can be used later. + * cdef INT_T i + * for i in range(self.n*9): # <<<<<<<<<<<<<< + * verts = self.scipy_vor.regions[self.scipy_vor.point_region[i]] + * offsets[i+1] = offsets[i] + len(verts) # Build offsets. */ __pyx_t_6 = (__pyx_v_self->n * 9); __pyx_t_7 = __pyx_t_6; for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { __pyx_v_i = __pyx_t_8; - /* "squish/_squish/voronoi_dcel.pyx":445 - * cdef INT_T i - * for i in range(self.n*9): - * verts = self.scipy_vor.regions[self.scipy_vor.point_region[i]] # <<<<<<<<<<<<<< - * offsets[i+1] = offsets[i] + len(verts) # Build offsets. - * vert_indices.extend(array.array('q', verts)) # Flatten + /* "squish/voronoi.pyx":455 + * cdef INT_T i + * for i in range(self.n*9): + * verts = self.scipy_vor.regions[self.scipy_vor.point_region[i]] # <<<<<<<<<<<<<< + * offsets[i+1] = offsets[i] + len(verts) # Build offsets. + * vert_indices.extend(array.array('q', verts)) # Flatten */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scipy_vor); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 445, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scipy_vor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_regions); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 445, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_regions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scipy_vor); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 445, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scipy_vor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_point_region); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 445, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_point_region); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, __pyx_v_i, __pyx_t_7_squish_INT_T, 1, __Pyx_PyInt_From_npy_int64, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 445, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, __pyx_v_i, __pyx_t_6squish_4core_INT_T, 1, __Pyx_PyInt_From_npy_int64, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 445, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF_SET(__pyx_v_verts, __pyx_t_3); __pyx_t_3 = 0; - /* "squish/_squish/voronoi_dcel.pyx":446 - * for i in range(self.n*9): - * verts = self.scipy_vor.regions[self.scipy_vor.point_region[i]] - * offsets[i+1] = offsets[i] + len(verts) # Build offsets. # <<<<<<<<<<<<<< - * vert_indices.extend(array.array('q', verts)) # Flatten + /* "squish/voronoi.pyx":456 + * for i in range(self.n*9): + * verts = self.scipy_vor.regions[self.scipy_vor.point_region[i]] + * offsets[i+1] = offsets[i] + len(verts) # Build offsets. # <<<<<<<<<<<<<< + * vert_indices.extend(array.array('q', verts)) # Flatten * */ __pyx_t_9 = __pyx_v_i; - __pyx_t_10 = PyObject_Length(__pyx_v_verts); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(1, 446, __pyx_L1_error) + __pyx_t_10 = PyObject_Length(__pyx_v_verts); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 456, __pyx_L1_error) __pyx_t_11 = (__pyx_v_i + 1); - *__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_11, __pyx_pybuffernd_offsets.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_9, __pyx_pybuffernd_offsets.diminfo[0].strides)) + __pyx_t_10); + *__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_11, __pyx_pybuffernd_offsets.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_9, __pyx_pybuffernd_offsets.diminfo[0].strides)) + __pyx_t_10); - /* "squish/_squish/voronoi_dcel.pyx":447 - * verts = self.scipy_vor.regions[self.scipy_vor.point_region[i]] - * offsets[i+1] = offsets[i] + len(verts) # Build offsets. - * vert_indices.extend(array.array('q', verts)) # Flatten # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":457 + * verts = self.scipy_vor.regions[self.scipy_vor.point_region[i]] + * offsets[i+1] = offsets[i] + len(verts) # Build offsets. + * vert_indices.extend(array.array('q', verts)) # Flatten # <<<<<<<<<<<<<< * - * # Get vertices of original N sites. + * # Get vertices of original N sites. */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_vert_indices), __pyx_n_s_extend); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 447, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_vert_indices), __pyx_n_s_extend); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 457, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 447, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 457, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_q); __Pyx_GIVEREF(__pyx_n_u_q); @@ -10907,7 +7495,7 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 __Pyx_INCREF(__pyx_v_verts); __Pyx_GIVEREF(__pyx_v_verts); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_verts); - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7cpython_5array_array), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 447, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7cpython_5array_array), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 457, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; @@ -10923,22 +7511,22 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_1, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 447, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 457, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } - /* "squish/_squish/voronoi_dcel.pyx":450 + /* "squish/voronoi.pyx":460 * - * # Get vertices of original N sites. - * cdef np.ndarray[INT_T, ndim=1] vert_indices_np = np.asarray(vert_indices) # <<<<<<<<<<<<<< - * cdef np.ndarray[INT_T, ndim=1] border_sites = np.unique(np.searchsorted( - * np.asarray(offsets), # Check indices where below matches would be inserted + * # Get vertices of original N sites. + * cdef np.ndarray[INT_T, ndim=1] vert_indices_np = np.asarray(vert_indices) # <<<<<<<<<<<<<< + * cdef np.ndarray[INT_T, ndim=1] border_sites = np.unique(np.searchsorted( + * np.asarray(offsets), # Check indices where below matches would be inserted */ - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 450, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 450, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -10953,16 +7541,16 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 } __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, ((PyObject *)__pyx_v_vert_indices)) : __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_vert_indices)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 450, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 450, __pyx_L1_error) + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 460, __pyx_L1_error) __pyx_t_12 = ((PyArrayObject *)__pyx_t_3); { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vert_indices_np.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_7_squish_INT_T, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vert_indices_np.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_6squish_4core_INT_T, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { __pyx_v_vert_indices_np = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_vert_indices_np.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(1, 450, __pyx_L1_error) + __PYX_ERR(0, 460, __pyx_L1_error) } else {__pyx_pybuffernd_vert_indices_np.diminfo[0].strides = __pyx_pybuffernd_vert_indices_np.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vert_indices_np.diminfo[0].shape = __pyx_pybuffernd_vert_indices_np.rcbuffer->pybuffer.shape[0]; } } @@ -10970,50 +7558,50 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 __pyx_v_vert_indices_np = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0; - /* "squish/_squish/voronoi_dcel.pyx":451 - * # Get vertices of original N sites. - * cdef np.ndarray[INT_T, ndim=1] vert_indices_np = np.asarray(vert_indices) - * cdef np.ndarray[INT_T, ndim=1] border_sites = np.unique(np.searchsorted( # <<<<<<<<<<<<<< - * np.asarray(offsets), # Check indices where below matches would be inserted - * np.nonzero(np.isin( # Indices of other verts being in bound verts. + /* "squish/voronoi.pyx":461 + * # Get vertices of original N sites. + * cdef np.ndarray[INT_T, ndim=1] vert_indices_np = np.asarray(vert_indices) + * cdef np.ndarray[INT_T, ndim=1] border_sites = np.unique(np.searchsorted( # <<<<<<<<<<<<<< + * np.asarray(offsets), # Check indices where below matches would be inserted + * np.nonzero(np.isin( # Indices of other verts being in bound verts. */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 451, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_unique); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 451, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_unique); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "squish/_squish/voronoi_dcel.pyx":458 - * ))[0] + offsets[self.n], - * side='right' # If on index == offset_number, should be part of the next site. - * ) - 1) # Subtract by one to get actual site number. # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":468 + * ))[0] + offsets[self.n], + * side='right' # If on index == offset_number, should be part of the next site. + * ) - 1) # Subtract by one to get actual site number. # <<<<<<<<<<<<<< * - * cdef INT_T border_num = len(border_sites) + * cdef INT_T border_num = len(border_sites) */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 451, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - /* "squish/_squish/voronoi_dcel.pyx":451 - * # Get vertices of original N sites. - * cdef np.ndarray[INT_T, ndim=1] vert_indices_np = np.asarray(vert_indices) - * cdef np.ndarray[INT_T, ndim=1] border_sites = np.unique(np.searchsorted( # <<<<<<<<<<<<<< - * np.asarray(offsets), # Check indices where below matches would be inserted - * np.nonzero(np.isin( # Indices of other verts being in bound verts. + /* "squish/voronoi.pyx":461 + * # Get vertices of original N sites. + * cdef np.ndarray[INT_T, ndim=1] vert_indices_np = np.asarray(vert_indices) + * cdef np.ndarray[INT_T, ndim=1] border_sites = np.unique(np.searchsorted( # <<<<<<<<<<<<<< + * np.asarray(offsets), # Check indices where below matches would be inserted + * np.nonzero(np.isin( # Indices of other verts being in bound verts. */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_searchsorted); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 451, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_searchsorted); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "squish/_squish/voronoi_dcel.pyx":452 - * cdef np.ndarray[INT_T, ndim=1] vert_indices_np = np.asarray(vert_indices) - * cdef np.ndarray[INT_T, ndim=1] border_sites = np.unique(np.searchsorted( - * np.asarray(offsets), # Check indices where below matches would be inserted # <<<<<<<<<<<<<< - * np.nonzero(np.isin( # Indices of other verts being in bound verts. - * vert_indices_np[offsets[self.n]:], # Rest of the verts to check. + /* "squish/voronoi.pyx":462 + * cdef np.ndarray[INT_T, ndim=1] vert_indices_np = np.asarray(vert_indices) + * cdef np.ndarray[INT_T, ndim=1] border_sites = np.unique(np.searchsorted( + * np.asarray(offsets), # Check indices where below matches would be inserted # <<<<<<<<<<<<<< + * np.nonzero(np.isin( # Indices of other verts being in bound verts. + * vert_indices_np[offsets[self.n]:], # Rest of the verts to check. */ - __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_np); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 452, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_np); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 462, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); - __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_asarray); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 452, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_asarray); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 462, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = NULL; @@ -11028,64 +7616,64 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 } __pyx_t_2 = (__pyx_t_13) ? __Pyx_PyObject_Call2Args(__pyx_t_14, __pyx_t_13, ((PyObject *)__pyx_v_offsets)) : __Pyx_PyObject_CallOneArg(__pyx_t_14, ((PyObject *)__pyx_v_offsets)); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 452, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 462, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - /* "squish/_squish/voronoi_dcel.pyx":453 - * cdef np.ndarray[INT_T, ndim=1] border_sites = np.unique(np.searchsorted( - * np.asarray(offsets), # Check indices where below matches would be inserted - * np.nonzero(np.isin( # Indices of other verts being in bound verts. # <<<<<<<<<<<<<< - * vert_indices_np[offsets[self.n]:], # Rest of the verts to check. - * np.unique(vert_indices_np[:offsets[self.n]]) # Bound verts + /* "squish/voronoi.pyx":463 + * cdef np.ndarray[INT_T, ndim=1] border_sites = np.unique(np.searchsorted( + * np.asarray(offsets), # Check indices where below matches would be inserted + * np.nonzero(np.isin( # Indices of other verts being in bound verts. # <<<<<<<<<<<<<< + * vert_indices_np[offsets[self.n]:], # Rest of the verts to check. + * np.unique(vert_indices_np[:offsets[self.n]]) # Bound verts */ - __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_np); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 453, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_np); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); - __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_nonzero); if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 453, __pyx_L1_error) + __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_nonzero); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_n_s_np); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 453, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_n_s_np); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); - __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_isin); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 453, __pyx_L1_error) + __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_isin); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; - /* "squish/_squish/voronoi_dcel.pyx":454 - * np.asarray(offsets), # Check indices where below matches would be inserted - * np.nonzero(np.isin( # Indices of other verts being in bound verts. - * vert_indices_np[offsets[self.n]:], # Rest of the verts to check. # <<<<<<<<<<<<<< - * np.unique(vert_indices_np[:offsets[self.n]]) # Bound verts - * ))[0] + offsets[self.n], + /* "squish/voronoi.pyx":464 + * np.asarray(offsets), # Check indices where below matches would be inserted + * np.nonzero(np.isin( # Indices of other verts being in bound verts. + * vert_indices_np[offsets[self.n]:], # Rest of the verts to check. # <<<<<<<<<<<<<< + * np.unique(vert_indices_np[:offsets[self.n]]) # Bound verts + * ))[0] + offsets[self.n], */ __pyx_t_6 = __pyx_v_self->n; - __pyx_t_16 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_offsets.diminfo[0].strides))); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 454, __pyx_L1_error) + __pyx_t_16 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_offsets.diminfo[0].strides))); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); - __pyx_t_18 = PySlice_New(__pyx_t_16, Py_None, Py_None); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 454, __pyx_L1_error) + __pyx_t_18 = PySlice_New(__pyx_t_16, Py_None, Py_None); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; - __pyx_t_16 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_vert_indices_np), __pyx_t_18); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 454, __pyx_L1_error) + __pyx_t_16 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_vert_indices_np), __pyx_t_18); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; - /* "squish/_squish/voronoi_dcel.pyx":455 - * np.nonzero(np.isin( # Indices of other verts being in bound verts. - * vert_indices_np[offsets[self.n]:], # Rest of the verts to check. - * np.unique(vert_indices_np[:offsets[self.n]]) # Bound verts # <<<<<<<<<<<<<< - * ))[0] + offsets[self.n], - * side='right' # If on index == offset_number, should be part of the next site. + /* "squish/voronoi.pyx":465 + * np.nonzero(np.isin( # Indices of other verts being in bound verts. + * vert_indices_np[offsets[self.n]:], # Rest of the verts to check. + * np.unique(vert_indices_np[:offsets[self.n]]) # Bound verts # <<<<<<<<<<<<<< + * ))[0] + offsets[self.n], + * side='right' # If on index == offset_number, should be part of the next site. */ - __Pyx_GetModuleGlobalName(__pyx_t_19, __pyx_n_s_np); if (unlikely(!__pyx_t_19)) __PYX_ERR(1, 455, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_19, __pyx_n_s_np); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 465, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); - __pyx_t_20 = __Pyx_PyObject_GetAttrStr(__pyx_t_19, __pyx_n_s_unique); if (unlikely(!__pyx_t_20)) __PYX_ERR(1, 455, __pyx_L1_error) + __pyx_t_20 = __Pyx_PyObject_GetAttrStr(__pyx_t_19, __pyx_n_s_unique); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 465, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __pyx_t_6 = __pyx_v_self->n; - __pyx_t_19 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_offsets.diminfo[0].strides))); if (unlikely(!__pyx_t_19)) __PYX_ERR(1, 455, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_offsets.diminfo[0].strides))); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 465, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); - __pyx_t_21 = PySlice_New(Py_None, __pyx_t_19, Py_None); if (unlikely(!__pyx_t_21)) __PYX_ERR(1, 455, __pyx_L1_error) + __pyx_t_21 = PySlice_New(Py_None, __pyx_t_19, Py_None); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 465, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_21); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; - __pyx_t_19 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_vert_indices_np), __pyx_t_21); if (unlikely(!__pyx_t_19)) __PYX_ERR(1, 455, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_vert_indices_np), __pyx_t_21); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 465, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; __pyx_t_21 = NULL; @@ -11101,7 +7689,7 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 __pyx_t_18 = (__pyx_t_21) ? __Pyx_PyObject_Call2Args(__pyx_t_20, __pyx_t_21, __pyx_t_19) : __Pyx_PyObject_CallOneArg(__pyx_t_20, __pyx_t_19); __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; - if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 455, __pyx_L1_error) + if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 465, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __pyx_t_20 = NULL; @@ -11119,7 +7707,7 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_17)) { PyObject *__pyx_temp[3] = {__pyx_t_20, __pyx_t_16, __pyx_t_18}; - __pyx_t_13 = __Pyx_PyFunction_FastCall(__pyx_t_17, __pyx_temp+1-__pyx_t_22, 2+__pyx_t_22); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 453, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyFunction_FastCall(__pyx_t_17, __pyx_temp+1-__pyx_t_22, 2+__pyx_t_22); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; @@ -11129,7 +7717,7 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_17)) { PyObject *__pyx_temp[3] = {__pyx_t_20, __pyx_t_16, __pyx_t_18}; - __pyx_t_13 = __Pyx_PyCFunction_FastCall(__pyx_t_17, __pyx_temp+1-__pyx_t_22, 2+__pyx_t_22); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 453, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyCFunction_FastCall(__pyx_t_17, __pyx_temp+1-__pyx_t_22, 2+__pyx_t_22); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; @@ -11137,7 +7725,7 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 } else #endif { - __pyx_t_19 = PyTuple_New(2+__pyx_t_22); if (unlikely(!__pyx_t_19)) __PYX_ERR(1, 453, __pyx_L1_error) + __pyx_t_19 = PyTuple_New(2+__pyx_t_22); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); if (__pyx_t_20) { __Pyx_GIVEREF(__pyx_t_20); PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_20); __pyx_t_20 = NULL; @@ -11148,7 +7736,7 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 PyTuple_SET_ITEM(__pyx_t_19, 1+__pyx_t_22, __pyx_t_18); __pyx_t_16 = 0; __pyx_t_18 = 0; - __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_17, __pyx_t_19, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 453, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_17, __pyx_t_19, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; } @@ -11166,36 +7754,36 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 __pyx_t_14 = (__pyx_t_17) ? __Pyx_PyObject_Call2Args(__pyx_t_15, __pyx_t_17, __pyx_t_13) : __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_13); __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 453, __pyx_L1_error) + if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - /* "squish/_squish/voronoi_dcel.pyx":456 - * vert_indices_np[offsets[self.n]:], # Rest of the verts to check. - * np.unique(vert_indices_np[:offsets[self.n]]) # Bound verts - * ))[0] + offsets[self.n], # <<<<<<<<<<<<<< - * side='right' # If on index == offset_number, should be part of the next site. - * ) - 1) # Subtract by one to get actual site number. + /* "squish/voronoi.pyx":466 + * vert_indices_np[offsets[self.n]:], # Rest of the verts to check. + * np.unique(vert_indices_np[:offsets[self.n]]) # Bound verts + * ))[0] + offsets[self.n], # <<<<<<<<<<<<<< + * side='right' # If on index == offset_number, should be part of the next site. + * ) - 1) # Subtract by one to get actual site number. */ - __pyx_t_15 = __Pyx_GetItemInt(__pyx_t_14, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 456, __pyx_L1_error) + __pyx_t_15 = __Pyx_GetItemInt(__pyx_t_14, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 466, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_6 = __pyx_v_self->n; - __pyx_t_14 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_offsets.diminfo[0].strides))); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 456, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_offsets.diminfo[0].strides))); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 466, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); - __pyx_t_13 = PyNumber_Add(__pyx_t_15, __pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 456, __pyx_L1_error) + __pyx_t_13 = PyNumber_Add(__pyx_t_15, __pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 466, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - /* "squish/_squish/voronoi_dcel.pyx":451 - * # Get vertices of original N sites. - * cdef np.ndarray[INT_T, ndim=1] vert_indices_np = np.asarray(vert_indices) - * cdef np.ndarray[INT_T, ndim=1] border_sites = np.unique(np.searchsorted( # <<<<<<<<<<<<<< - * np.asarray(offsets), # Check indices where below matches would be inserted - * np.nonzero(np.isin( # Indices of other verts being in bound verts. + /* "squish/voronoi.pyx":461 + * # Get vertices of original N sites. + * cdef np.ndarray[INT_T, ndim=1] vert_indices_np = np.asarray(vert_indices) + * cdef np.ndarray[INT_T, ndim=1] border_sites = np.unique(np.searchsorted( # <<<<<<<<<<<<<< + * np.asarray(offsets), # Check indices where below matches would be inserted + * np.nonzero(np.isin( # Indices of other verts being in bound verts. */ - __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 451, __pyx_L1_error) + __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_2); @@ -11204,38 +7792,38 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 __pyx_t_2 = 0; __pyx_t_13 = 0; - /* "squish/_squish/voronoi_dcel.pyx":457 - * np.unique(vert_indices_np[:offsets[self.n]]) # Bound verts - * ))[0] + offsets[self.n], - * side='right' # If on index == offset_number, should be part of the next site. # <<<<<<<<<<<<<< - * ) - 1) # Subtract by one to get actual site number. + /* "squish/voronoi.pyx":467 + * np.unique(vert_indices_np[:offsets[self.n]]) # Bound verts + * ))[0] + offsets[self.n], + * side='right' # If on index == offset_number, should be part of the next site. # <<<<<<<<<<<<<< + * ) - 1) # Subtract by one to get actual site number. * */ - __pyx_t_13 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 457, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 467, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); - if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_side, __pyx_n_u_right) < 0) __PYX_ERR(1, 457, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_side, __pyx_n_u_right) < 0) __PYX_ERR(0, 467, __pyx_L1_error) - /* "squish/_squish/voronoi_dcel.pyx":451 - * # Get vertices of original N sites. - * cdef np.ndarray[INT_T, ndim=1] vert_indices_np = np.asarray(vert_indices) - * cdef np.ndarray[INT_T, ndim=1] border_sites = np.unique(np.searchsorted( # <<<<<<<<<<<<<< - * np.asarray(offsets), # Check indices where below matches would be inserted - * np.nonzero(np.isin( # Indices of other verts being in bound verts. + /* "squish/voronoi.pyx":461 + * # Get vertices of original N sites. + * cdef np.ndarray[INT_T, ndim=1] vert_indices_np = np.asarray(vert_indices) + * cdef np.ndarray[INT_T, ndim=1] border_sites = np.unique(np.searchsorted( # <<<<<<<<<<<<<< + * np.asarray(offsets), # Check indices where below matches would be inserted + * np.nonzero(np.isin( # Indices of other verts being in bound verts. */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_14, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 451, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_14, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - /* "squish/_squish/voronoi_dcel.pyx":458 - * ))[0] + offsets[self.n], - * side='right' # If on index == offset_number, should be part of the next site. - * ) - 1) # Subtract by one to get actual site number. # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":468 + * ))[0] + offsets[self.n], + * side='right' # If on index == offset_number, should be part of the next site. + * ) - 1) # Subtract by one to get actual site number. # <<<<<<<<<<<<<< * - * cdef INT_T border_num = len(border_sites) + * cdef INT_T border_num = len(border_sites) */ - __pyx_t_13 = __Pyx_PyInt_SubtractObjC(__pyx_t_2, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 458, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyInt_SubtractObjC(__pyx_t_2, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -11251,24 +7839,24 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_2, __pyx_t_13) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_13); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 451, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "squish/_squish/voronoi_dcel.pyx":451 - * # Get vertices of original N sites. - * cdef np.ndarray[INT_T, ndim=1] vert_indices_np = np.asarray(vert_indices) - * cdef np.ndarray[INT_T, ndim=1] border_sites = np.unique(np.searchsorted( # <<<<<<<<<<<<<< - * np.asarray(offsets), # Check indices where below matches would be inserted - * np.nonzero(np.isin( # Indices of other verts being in bound verts. + /* "squish/voronoi.pyx":461 + * # Get vertices of original N sites. + * cdef np.ndarray[INT_T, ndim=1] vert_indices_np = np.asarray(vert_indices) + * cdef np.ndarray[INT_T, ndim=1] border_sites = np.unique(np.searchsorted( # <<<<<<<<<<<<<< + * np.asarray(offsets), # Check indices where below matches would be inserted + * np.nonzero(np.isin( # Indices of other verts being in bound verts. */ - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 451, __pyx_L1_error) + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 461, __pyx_L1_error) __pyx_t_23 = ((PyArrayObject *)__pyx_t_3); { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_border_sites.rcbuffer->pybuffer, (PyObject*)__pyx_t_23, &__Pyx_TypeInfo_nn___pyx_t_7_squish_INT_T, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_border_sites.rcbuffer->pybuffer, (PyObject*)__pyx_t_23, &__Pyx_TypeInfo_nn___pyx_t_6squish_4core_INT_T, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { __pyx_v_border_sites = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_border_sites.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(1, 451, __pyx_L1_error) + __PYX_ERR(0, 461, __pyx_L1_error) } else {__pyx_pybuffernd_border_sites.diminfo[0].strides = __pyx_pybuffernd_border_sites.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_border_sites.diminfo[0].shape = __pyx_pybuffernd_border_sites.rcbuffer->pybuffer.shape[0]; } } @@ -11276,31 +7864,31 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 __pyx_v_border_sites = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0; - /* "squish/_squish/voronoi_dcel.pyx":460 - * ) - 1) # Subtract by one to get actual site number. + /* "squish/voronoi.pyx":470 + * ) - 1) # Subtract by one to get actual site number. * - * cdef INT_T border_num = len(border_sites) # <<<<<<<<<<<<<< + * cdef INT_T border_num = len(border_sites) # <<<<<<<<<<<<<< * - * # Build sites array. + * # Build sites array. */ - __pyx_t_10 = PyObject_Length(((PyObject *)__pyx_v_border_sites)); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(1, 460, __pyx_L1_error) + __pyx_t_10 = PyObject_Length(((PyObject *)__pyx_v_border_sites)); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 470, __pyx_L1_error) __pyx_v_border_num = __pyx_t_10; - /* "squish/_squish/voronoi_dcel.pyx":464 - * # Build sites array. - * # [Site Index, Edge Index/Offset, Edge Count] - * self.sites = np.empty((self.n+border_num, 3), dtype=INT) # <<<<<<<<<<<<<< - * self.sites.base[:self.n, 0] = np.arange(self.n, dtype=INT) - * self.sites.base[self.n:, 0] = border_sites + /* "squish/voronoi.pyx":474 + * # Build sites array. + * # [Site Index, Edge Index/Offset, Edge Count] + * self.sites = np.empty((self.n+border_num, 3), dtype=INT) # <<<<<<<<<<<<<< + * self.sites.base[:self.n, 0] = np.arange(self.n, dtype=INT) + * self.sites.base[self.n:, 0] = border_sites */ - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 464, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 464, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_From_npy_int64((__pyx_v_self->n + __pyx_v_border_num)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 464, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_npy_int64((__pyx_v_self->n + __pyx_v_border_num)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 464, __pyx_L1_error) + __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_3); @@ -11308,71 +7896,71 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 __Pyx_GIVEREF(__pyx_int_3); PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_int_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 464, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_13); __pyx_t_13 = 0; - __pyx_t_13 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 464, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_INT); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 464, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_INT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(1, 464, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 474, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 464, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_24 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_7_squish_INT_T(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_24.memview)) __PYX_ERR(1, 464, __pyx_L1_error) + __pyx_t_24 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_6squish_4core_INT_T(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_24.memview)) __PYX_ERR(0, 474, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_self->sites, 0); __pyx_v_self->sites = __pyx_t_24; __pyx_t_24.memview = NULL; __pyx_t_24.data = NULL; - /* "squish/_squish/voronoi_dcel.pyx":465 - * # [Site Index, Edge Index/Offset, Edge Count] - * self.sites = np.empty((self.n+border_num, 3), dtype=INT) - * self.sites.base[:self.n, 0] = np.arange(self.n, dtype=INT) # <<<<<<<<<<<<<< - * self.sites.base[self.n:, 0] = border_sites - * self.sites.base[:self.n+1, 1] = offsets[:self.n+1] + /* "squish/voronoi.pyx":475 + * # [Site Index, Edge Index/Offset, Edge Count] + * self.sites = np.empty((self.n+border_num, 3), dtype=INT) + * self.sites.base[:self.n, 0] = np.arange(self.n, dtype=INT) # <<<<<<<<<<<<<< + * self.sites.base[self.n:, 0] = border_sites + * self.sites.base[:self.n+1, 1] = offsets[:self.n+1] */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 465, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_arange); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 465, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_arange); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->n); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 465, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->n); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 465, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 465, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 465, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(1, 465, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 475, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 465, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 465, __pyx_L1_error)} - __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_self->sites, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_7_squish_INT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_7_squish_INT_T, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 465, __pyx_L1_error) + if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 475, __pyx_L1_error)} + __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_self->sites, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_6squish_4core_INT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_6squish_4core_INT_T, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_base); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 465, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_base); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->n); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 465, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->n); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_13 = PySlice_New(Py_None, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 465, __pyx_L1_error) + __pyx_t_13 = PySlice_New(Py_None, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 465, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_13); @@ -11380,30 +7968,30 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_0); __pyx_t_13 = 0; - if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_2, __pyx_t_4) < 0)) __PYX_ERR(1, 465, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_2, __pyx_t_4) < 0)) __PYX_ERR(0, 475, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "squish/_squish/voronoi_dcel.pyx":466 - * self.sites = np.empty((self.n+border_num, 3), dtype=INT) - * self.sites.base[:self.n, 0] = np.arange(self.n, dtype=INT) - * self.sites.base[self.n:, 0] = border_sites # <<<<<<<<<<<<<< - * self.sites.base[:self.n+1, 1] = offsets[:self.n+1] - * for i in range(self.n): + /* "squish/voronoi.pyx":476 + * self.sites = np.empty((self.n+border_num, 3), dtype=INT) + * self.sites.base[:self.n, 0] = np.arange(self.n, dtype=INT) + * self.sites.base[self.n:, 0] = border_sites # <<<<<<<<<<<<<< + * self.sites.base[:self.n+1, 1] = offsets[:self.n+1] + * for i in range(self.n): */ - if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 466, __pyx_L1_error)} - __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_self->sites, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_7_squish_INT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_7_squish_INT_T, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 466, __pyx_L1_error) + if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 476, __pyx_L1_error)} + __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_self->sites, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_6squish_4core_INT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_6squish_4core_INT_T, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_base); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 466, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_base); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->n); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 466, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PySlice_New(__pyx_t_4, Py_None, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 466, __pyx_L1_error) + __pyx_t_3 = PySlice_New(__pyx_t_4, Py_None, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 466, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); @@ -11411,37 +7999,37 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_0); __pyx_t_3 = 0; - if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_t_4, ((PyObject *)__pyx_v_border_sites)) < 0)) __PYX_ERR(1, 466, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_t_4, ((PyObject *)__pyx_v_border_sites)) < 0)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "squish/_squish/voronoi_dcel.pyx":467 - * self.sites.base[:self.n, 0] = np.arange(self.n, dtype=INT) - * self.sites.base[self.n:, 0] = border_sites - * self.sites.base[:self.n+1, 1] = offsets[:self.n+1] # <<<<<<<<<<<<<< - * for i in range(self.n): - * self.sites[i, 2] = self.sites[i+1, 1] - self.sites[i, 1] + /* "squish/voronoi.pyx":477 + * self.sites.base[:self.n, 0] = np.arange(self.n, dtype=INT) + * self.sites.base[self.n:, 0] = border_sites + * self.sites.base[:self.n+1, 1] = offsets[:self.n+1] # <<<<<<<<<<<<<< + * for i in range(self.n): + * self.sites[i, 2] = self.sites[i+1, 1] - self.sites[i, 1] */ - __pyx_t_4 = __Pyx_PyInt_From_npy_int64((__pyx_v_self->n + 1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 467, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_npy_int64((__pyx_v_self->n + 1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 477, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = PySlice_New(Py_None, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 467, __pyx_L1_error) + __pyx_t_2 = PySlice_New(Py_None, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 477, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_offsets), __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 467, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_offsets), __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 477, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 467, __pyx_L1_error)} - __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_self->sites, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_7_squish_INT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_7_squish_INT_T, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 467, __pyx_L1_error) + if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 477, __pyx_L1_error)} + __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_self->sites, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_6squish_4core_INT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_6squish_4core_INT_T, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 477, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_base); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 467, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_base); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 477, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_From_npy_int64((__pyx_v_self->n + 1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 467, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_npy_int64((__pyx_v_self->n + 1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 477, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_13 = PySlice_New(Py_None, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 467, __pyx_L1_error) + __pyx_t_13 = PySlice_New(Py_None, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 477, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 467, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 477, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_13); @@ -11449,16 +8037,16 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_1); __pyx_t_13 = 0; - if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_2, __pyx_t_4) < 0)) __PYX_ERR(1, 467, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_2, __pyx_t_4) < 0)) __PYX_ERR(0, 477, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "squish/_squish/voronoi_dcel.pyx":468 - * self.sites.base[self.n:, 0] = border_sites - * self.sites.base[:self.n+1, 1] = offsets[:self.n+1] - * for i in range(self.n): # <<<<<<<<<<<<<< - * self.sites[i, 2] = self.sites[i+1, 1] - self.sites[i, 1] + /* "squish/voronoi.pyx":478 + * self.sites.base[self.n:, 0] = border_sites + * self.sites.base[:self.n+1, 1] = offsets[:self.n+1] + * for i in range(self.n): # <<<<<<<<<<<<<< + * self.sites[i, 2] = self.sites[i+1, 1] - self.sites[i, 1] * */ __pyx_t_6 = __pyx_v_self->n; @@ -11466,131 +8054,131 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { __pyx_v_i = __pyx_t_8; - /* "squish/_squish/voronoi_dcel.pyx":469 - * self.sites.base[:self.n+1, 1] = offsets[:self.n+1] - * for i in range(self.n): - * self.sites[i, 2] = self.sites[i+1, 1] - self.sites[i, 1] # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":479 + * self.sites.base[:self.n+1, 1] = offsets[:self.n+1] + * for i in range(self.n): + * self.sites[i, 2] = self.sites[i+1, 1] - self.sites[i, 1] # <<<<<<<<<<<<<< * - * cdef INT_T edge_count = offsets[self.n] + * cdef INT_T edge_count = offsets[self.n] */ - if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 469, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 479, __pyx_L1_error)} __pyx_t_9 = (__pyx_v_i + 1); __pyx_t_25 = 1; - if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 469, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 479, __pyx_L1_error)} __pyx_t_11 = __pyx_v_i; __pyx_t_26 = 1; - if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 469, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 479, __pyx_L1_error)} __pyx_t_27 = __pyx_v_i; __pyx_t_28 = 2; - *((__pyx_t_7_squish_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_INT_T *) ( /* dim=0 */ (__pyx_v_self->sites.data + __pyx_t_27 * __pyx_v_self->sites.strides[0]) )) + __pyx_t_28)) )) = ((*((__pyx_t_7_squish_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_INT_T *) ( /* dim=0 */ (__pyx_v_self->sites.data + __pyx_t_9 * __pyx_v_self->sites.strides[0]) )) + __pyx_t_25)) ))) - (*((__pyx_t_7_squish_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_INT_T *) ( /* dim=0 */ (__pyx_v_self->sites.data + __pyx_t_11 * __pyx_v_self->sites.strides[0]) )) + __pyx_t_26)) )))); + *((__pyx_t_6squish_4core_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_INT_T *) ( /* dim=0 */ (__pyx_v_self->sites.data + __pyx_t_27 * __pyx_v_self->sites.strides[0]) )) + __pyx_t_28)) )) = ((*((__pyx_t_6squish_4core_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_INT_T *) ( /* dim=0 */ (__pyx_v_self->sites.data + __pyx_t_9 * __pyx_v_self->sites.strides[0]) )) + __pyx_t_25)) ))) - (*((__pyx_t_6squish_4core_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_INT_T *) ( /* dim=0 */ (__pyx_v_self->sites.data + __pyx_t_11 * __pyx_v_self->sites.strides[0]) )) + __pyx_t_26)) )))); } - /* "squish/_squish/voronoi_dcel.pyx":471 - * self.sites[i, 2] = self.sites[i+1, 1] - self.sites[i, 1] + /* "squish/voronoi.pyx":481 + * self.sites[i, 2] = self.sites[i+1, 1] - self.sites[i, 1] * - * cdef INT_T edge_count = offsets[self.n] # <<<<<<<<<<<<<< - * cdef INT_T diff - * for i in range(border_num): + * cdef INT_T edge_count = offsets[self.n] # <<<<<<<<<<<<<< + * cdef INT_T diff + * for i in range(border_num): */ __pyx_t_6 = __pyx_v_self->n; - __pyx_v_edge_count = (*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_offsets.diminfo[0].strides)); + __pyx_v_edge_count = (*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_offsets.diminfo[0].strides)); - /* "squish/_squish/voronoi_dcel.pyx":473 - * cdef INT_T edge_count = offsets[self.n] - * cdef INT_T diff - * for i in range(border_num): # <<<<<<<<<<<<<< - * diff = offsets[border_sites[i]+1] - offsets[border_sites[i]] - * edge_count += diff + /* "squish/voronoi.pyx":483 + * cdef INT_T edge_count = offsets[self.n] + * cdef INT_T diff + * for i in range(border_num): # <<<<<<<<<<<<<< + * diff = offsets[border_sites[i]+1] - offsets[border_sites[i]] + * edge_count += diff */ __pyx_t_6 = __pyx_v_border_num; __pyx_t_7 = __pyx_t_6; for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { __pyx_v_i = __pyx_t_8; - /* "squish/_squish/voronoi_dcel.pyx":474 - * cdef INT_T diff - * for i in range(border_num): - * diff = offsets[border_sites[i]+1] - offsets[border_sites[i]] # <<<<<<<<<<<<<< - * edge_count += diff - * self.sites[self.n+i, 2] = diff + /* "squish/voronoi.pyx":484 + * cdef INT_T diff + * for i in range(border_num): + * diff = offsets[border_sites[i]+1] - offsets[border_sites[i]] # <<<<<<<<<<<<<< + * edge_count += diff + * self.sites[self.n+i, 2] = diff */ __pyx_t_11 = __pyx_v_i; - __pyx_t_9 = ((*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_border_sites.rcbuffer->pybuffer.buf, __pyx_t_11, __pyx_pybuffernd_border_sites.diminfo[0].strides)) + 1); + __pyx_t_9 = ((*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_border_sites.rcbuffer->pybuffer.buf, __pyx_t_11, __pyx_pybuffernd_border_sites.diminfo[0].strides)) + 1); __pyx_t_27 = __pyx_v_i; - __pyx_t_29 = (*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_border_sites.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_border_sites.diminfo[0].strides)); - __pyx_v_diff = ((*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_9, __pyx_pybuffernd_offsets.diminfo[0].strides)) - (*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_offsets.diminfo[0].strides))); + __pyx_t_29 = (*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_border_sites.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_border_sites.diminfo[0].strides)); + __pyx_v_diff = ((*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_9, __pyx_pybuffernd_offsets.diminfo[0].strides)) - (*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_offsets.diminfo[0].strides))); - /* "squish/_squish/voronoi_dcel.pyx":475 - * for i in range(border_num): - * diff = offsets[border_sites[i]+1] - offsets[border_sites[i]] - * edge_count += diff # <<<<<<<<<<<<<< - * self.sites[self.n+i, 2] = diff - * if i < border_num - 1: + /* "squish/voronoi.pyx":485 + * for i in range(border_num): + * diff = offsets[border_sites[i]+1] - offsets[border_sites[i]] + * edge_count += diff # <<<<<<<<<<<<<< + * self.sites[self.n+i, 2] = diff + * if i < border_num - 1: */ __pyx_v_edge_count = (__pyx_v_edge_count + __pyx_v_diff); - /* "squish/_squish/voronoi_dcel.pyx":476 - * diff = offsets[border_sites[i]+1] - offsets[border_sites[i]] - * edge_count += diff - * self.sites[self.n+i, 2] = diff # <<<<<<<<<<<<<< - * if i < border_num - 1: - * self.sites[self.n+i+1, 1] = self.sites[self.n+i, 1] + diff + /* "squish/voronoi.pyx":486 + * diff = offsets[border_sites[i]+1] - offsets[border_sites[i]] + * edge_count += diff + * self.sites[self.n+i, 2] = diff # <<<<<<<<<<<<<< + * if i < border_num - 1: + * self.sites[self.n+i+1, 1] = self.sites[self.n+i, 1] + diff */ - if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 476, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 486, __pyx_L1_error)} __pyx_t_27 = (__pyx_v_self->n + __pyx_v_i); __pyx_t_26 = 2; - *((__pyx_t_7_squish_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_INT_T *) ( /* dim=0 */ (__pyx_v_self->sites.data + __pyx_t_27 * __pyx_v_self->sites.strides[0]) )) + __pyx_t_26)) )) = __pyx_v_diff; + *((__pyx_t_6squish_4core_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_INT_T *) ( /* dim=0 */ (__pyx_v_self->sites.data + __pyx_t_27 * __pyx_v_self->sites.strides[0]) )) + __pyx_t_26)) )) = __pyx_v_diff; - /* "squish/_squish/voronoi_dcel.pyx":477 - * edge_count += diff - * self.sites[self.n+i, 2] = diff - * if i < border_num - 1: # <<<<<<<<<<<<<< - * self.sites[self.n+i+1, 1] = self.sites[self.n+i, 1] + diff + /* "squish/voronoi.pyx":487 + * edge_count += diff + * self.sites[self.n+i, 2] = diff + * if i < border_num - 1: # <<<<<<<<<<<<<< + * self.sites[self.n+i+1, 1] = self.sites[self.n+i, 1] + diff * */ __pyx_t_30 = ((__pyx_v_i < (__pyx_v_border_num - 1)) != 0); if (__pyx_t_30) { - /* "squish/_squish/voronoi_dcel.pyx":478 - * self.sites[self.n+i, 2] = diff - * if i < border_num - 1: - * self.sites[self.n+i+1, 1] = self.sites[self.n+i, 1] + diff # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":488 + * self.sites[self.n+i, 2] = diff + * if i < border_num - 1: + * self.sites[self.n+i+1, 1] = self.sites[self.n+i, 1] + diff # <<<<<<<<<<<<<< * - * # Build edges array + * # Build edges array */ - if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 478, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 488, __pyx_L1_error)} __pyx_t_27 = (__pyx_v_self->n + __pyx_v_i); __pyx_t_26 = 1; - if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 478, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 488, __pyx_L1_error)} __pyx_t_29 = ((__pyx_v_self->n + __pyx_v_i) + 1); __pyx_t_25 = 1; - *((__pyx_t_7_squish_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_INT_T *) ( /* dim=0 */ (__pyx_v_self->sites.data + __pyx_t_29 * __pyx_v_self->sites.strides[0]) )) + __pyx_t_25)) )) = ((*((__pyx_t_7_squish_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_INT_T *) ( /* dim=0 */ (__pyx_v_self->sites.data + __pyx_t_27 * __pyx_v_self->sites.strides[0]) )) + __pyx_t_26)) ))) + __pyx_v_diff); + *((__pyx_t_6squish_4core_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_INT_T *) ( /* dim=0 */ (__pyx_v_self->sites.data + __pyx_t_29 * __pyx_v_self->sites.strides[0]) )) + __pyx_t_25)) )) = ((*((__pyx_t_6squish_4core_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_INT_T *) ( /* dim=0 */ (__pyx_v_self->sites.data + __pyx_t_27 * __pyx_v_self->sites.strides[0]) )) + __pyx_t_26)) ))) + __pyx_v_diff); - /* "squish/_squish/voronoi_dcel.pyx":477 - * edge_count += diff - * self.sites[self.n+i, 2] = diff - * if i < border_num - 1: # <<<<<<<<<<<<<< - * self.sites[self.n+i+1, 1] = self.sites[self.n+i, 1] + diff + /* "squish/voronoi.pyx":487 + * edge_count += diff + * self.sites[self.n+i, 2] = diff + * if i < border_num - 1: # <<<<<<<<<<<<<< + * self.sites[self.n+i+1, 1] = self.sites[self.n+i, 1] + diff * */ } } - /* "squish/_squish/voronoi_dcel.pyx":482 - * # Build edges array - * # [Origin Index, Site Index, Next Index, Prev Index, Twin Index] - * self.edges = np.empty((edge_count, 5), dtype=INT) # <<<<<<<<<<<<<< - * cdef np.ndarray[INT_T, ndim=1] site_verts - * cdef INT_T j, site_i, edge_i, edge_offset, vert_num, twin_index, prev_res + /* "squish/voronoi.pyx":492 + * # Build edges array + * # [Origin Index, Site Index, Next Index, Prev Index, Twin Index] + * self.edges = np.empty((edge_count, 5), dtype=INT) # <<<<<<<<<<<<<< + * cdef np.ndarray[INT_T, ndim=1] site_verts + * cdef INT_T j, site_i, edge_i, edge_offset, vert_num, twin_index */ - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 482, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 482, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyInt_From_npy_int64(__pyx_v_edge_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 482, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_npy_int64(__pyx_v_edge_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 482, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); @@ -11598,106 +8186,106 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 __Pyx_GIVEREF(__pyx_int_5); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_5); __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 482, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 482, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_INT); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 482, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_INT); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_13) < 0) __PYX_ERR(1, 482, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_13) < 0) __PYX_ERR(0, 492, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 482, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_24 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_7_squish_INT_T(__pyx_t_13, PyBUF_WRITABLE); if (unlikely(!__pyx_t_24.memview)) __PYX_ERR(1, 482, __pyx_L1_error) + __pyx_t_24 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_6squish_4core_INT_T(__pyx_t_13, PyBUF_WRITABLE); if (unlikely(!__pyx_t_24.memview)) __PYX_ERR(0, 492, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_self->edges, 0); __pyx_v_self->edges = __pyx_t_24; __pyx_t_24.memview = NULL; __pyx_t_24.data = NULL; - /* "squish/_squish/voronoi_dcel.pyx":486 - * cdef INT_T j, site_i, edge_i, edge_offset, vert_num, twin_index, prev_res + /* "squish/voronoi.pyx":496 + * cdef INT_T j, site_i, edge_i, edge_offset, vert_num, twin_index * - * edge_indices = dict() # <<<<<<<<<<<<<< + * edge_indices = dict() # <<<<<<<<<<<<<< * - * for i in range(self.n + border_num): + * for i in range(self.n + border_num): */ - __pyx_t_13 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 486, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 496, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_v_edge_indices = ((PyObject*)__pyx_t_13); __pyx_t_13 = 0; - /* "squish/_squish/voronoi_dcel.pyx":488 - * edge_indices = dict() + /* "squish/voronoi.pyx":498 + * edge_indices = dict() * - * for i in range(self.n + border_num): # <<<<<<<<<<<<<< - * site_i = self.sites[i, 0] - * edge_offset = self.sites[i, 1] + * for i in range(self.n + border_num): # <<<<<<<<<<<<<< + * site_i = self.sites[i, 0] + * edge_offset = self.sites[i, 1] */ __pyx_t_6 = (__pyx_v_self->n + __pyx_v_border_num); __pyx_t_7 = __pyx_t_6; for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { __pyx_v_i = __pyx_t_8; - /* "squish/_squish/voronoi_dcel.pyx":489 + /* "squish/voronoi.pyx":499 * - * for i in range(self.n + border_num): - * site_i = self.sites[i, 0] # <<<<<<<<<<<<<< - * edge_offset = self.sites[i, 1] - * site_verts = vert_indices_np[offsets[site_i]:offsets[site_i+1]] + * for i in range(self.n + border_num): + * site_i = self.sites[i, 0] # <<<<<<<<<<<<<< + * edge_offset = self.sites[i, 1] + * site_verts = vert_indices_np[offsets[site_i]:offsets[site_i+1]] */ - if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 489, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 499, __pyx_L1_error)} __pyx_t_27 = __pyx_v_i; __pyx_t_26 = 0; - __pyx_v_site_i = (*((__pyx_t_7_squish_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_INT_T *) ( /* dim=0 */ (__pyx_v_self->sites.data + __pyx_t_27 * __pyx_v_self->sites.strides[0]) )) + __pyx_t_26)) ))); + __pyx_v_site_i = (*((__pyx_t_6squish_4core_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_INT_T *) ( /* dim=0 */ (__pyx_v_self->sites.data + __pyx_t_27 * __pyx_v_self->sites.strides[0]) )) + __pyx_t_26)) ))); - /* "squish/_squish/voronoi_dcel.pyx":490 - * for i in range(self.n + border_num): - * site_i = self.sites[i, 0] - * edge_offset = self.sites[i, 1] # <<<<<<<<<<<<<< - * site_verts = vert_indices_np[offsets[site_i]:offsets[site_i+1]] + /* "squish/voronoi.pyx":500 + * for i in range(self.n + border_num): + * site_i = self.sites[i, 0] + * edge_offset = self.sites[i, 1] # <<<<<<<<<<<<<< + * site_verts = vert_indices_np[offsets[site_i]:offsets[site_i+1]] * */ - if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 490, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 500, __pyx_L1_error)} __pyx_t_27 = __pyx_v_i; __pyx_t_26 = 1; - __pyx_v_edge_offset = (*((__pyx_t_7_squish_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_INT_T *) ( /* dim=0 */ (__pyx_v_self->sites.data + __pyx_t_27 * __pyx_v_self->sites.strides[0]) )) + __pyx_t_26)) ))); + __pyx_v_edge_offset = (*((__pyx_t_6squish_4core_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_INT_T *) ( /* dim=0 */ (__pyx_v_self->sites.data + __pyx_t_27 * __pyx_v_self->sites.strides[0]) )) + __pyx_t_26)) ))); - /* "squish/_squish/voronoi_dcel.pyx":491 - * site_i = self.sites[i, 0] - * edge_offset = self.sites[i, 1] - * site_verts = vert_indices_np[offsets[site_i]:offsets[site_i+1]] # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":501 + * site_i = self.sites[i, 0] + * edge_offset = self.sites[i, 1] + * site_verts = vert_indices_np[offsets[site_i]:offsets[site_i+1]] # <<<<<<<<<<<<<< * - * # Scipy outputs sorted vertices, but reverse if not counterclockwise. + * # Scipy outputs sorted vertices, but reverse if not counterclockwise. */ __pyx_t_27 = __pyx_v_site_i; - __pyx_t_13 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_offsets.diminfo[0].strides))); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 491, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_offsets.diminfo[0].strides))); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_27 = (__pyx_v_site_i + 1); - __pyx_t_3 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_offsets.diminfo[0].strides))); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 491, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_offsets.diminfo[0].strides))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PySlice_New(__pyx_t_13, __pyx_t_3, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 491, __pyx_L1_error) + __pyx_t_4 = PySlice_New(__pyx_t_13, __pyx_t_3, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_vert_indices_np), __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 491, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_vert_indices_np), __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 491, __pyx_L1_error) + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 501, __pyx_L1_error) __pyx_t_31 = ((PyArrayObject *)__pyx_t_3); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_site_verts.rcbuffer->pybuffer); - __pyx_t_22 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_site_verts.rcbuffer->pybuffer, (PyObject*)__pyx_t_31, &__Pyx_TypeInfo_nn___pyx_t_7_squish_INT_T, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack); + __pyx_t_22 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_site_verts.rcbuffer->pybuffer, (PyObject*)__pyx_t_31, &__Pyx_TypeInfo_nn___pyx_t_6squish_4core_INT_T, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack); if (unlikely(__pyx_t_22 < 0)) { PyErr_Fetch(&__pyx_t_32, &__pyx_t_33, &__pyx_t_34); - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_site_verts.rcbuffer->pybuffer, (PyObject*)__pyx_v_site_verts, &__Pyx_TypeInfo_nn___pyx_t_7_squish_INT_T, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_site_verts.rcbuffer->pybuffer, (PyObject*)__pyx_v_site_verts, &__Pyx_TypeInfo_nn___pyx_t_6squish_4core_INT_T, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_32); Py_XDECREF(__pyx_t_33); Py_XDECREF(__pyx_t_34); __Pyx_RaiseBufferFallbackError(); } else { @@ -11706,20 +8294,20 @@ static void __pyx_f_7_squish_16VoronoiContainer_generate_dcel(struct __pyx_obj_7 __pyx_t_32 = __pyx_t_33 = __pyx_t_34 = 0; } __pyx_pybuffernd_site_verts.diminfo[0].strides = __pyx_pybuffernd_site_verts.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_site_verts.diminfo[0].shape = __pyx_pybuffernd_site_verts.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_22 < 0)) __PYX_ERR(1, 491, __pyx_L1_error) + if (unlikely(__pyx_t_22 < 0)) __PYX_ERR(0, 501, __pyx_L1_error) } __pyx_t_31 = 0; __Pyx_XDECREF_SET(__pyx_v_site_verts, ((PyArrayObject *)__pyx_t_3)); __pyx_t_3 = 0; - /* "squish/_squish/voronoi_dcel.pyx":494 + /* "squish/voronoi.pyx":504 * - * # Scipy outputs sorted vertices, but reverse if not counterclockwise. - * if not VoronoiContainer.sign(self.points[site_i], # <<<<<<<<<<<<<< - * self.vertices[site_verts[0]], self.vertices[site_verts[1]]): - * site_verts = np.flip(site_verts) + * # Scipy outputs sorted vertices, but reverse if not counterclockwise. + * if not VoronoiContainer.sign(self.points[site_i], # <<<<<<<<<<<<<< + * self.vertices[site_verts[0]], self.vertices[site_verts[1]]): + * site_verts = np.flip(site_verts) */ - if (unlikely(!__pyx_v_self->points.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 494, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->points.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 504, __pyx_L1_error)} __pyx_t_35.data = __pyx_v_self->points.data; __pyx_t_35.memview = __pyx_v_self->points.memview; __PYX_INC_MEMVIEW(&__pyx_t_35, 0); @@ -11733,13 +8321,13 @@ __pyx_t_35.shape[0] = __pyx_v_self->points.shape[1]; __pyx_t_35.strides[0] = __pyx_v_self->points.strides[1]; __pyx_t_35.suboffsets[0] = -1; -if (unlikely(!__pyx_v_self->vertices.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 495, __pyx_L1_error)} +if (unlikely(!__pyx_v_self->vertices.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 505, __pyx_L1_error)} - /* "squish/_squish/voronoi_dcel.pyx":495 - * # Scipy outputs sorted vertices, but reverse if not counterclockwise. - * if not VoronoiContainer.sign(self.points[site_i], - * self.vertices[site_verts[0]], self.vertices[site_verts[1]]): # <<<<<<<<<<<<<< - * site_verts = np.flip(site_verts) + /* "squish/voronoi.pyx":505 + * # Scipy outputs sorted vertices, but reverse if not counterclockwise. + * if not VoronoiContainer.sign(self.points[site_i], + * self.vertices[site_verts[0]], self.vertices[site_verts[1]]): # <<<<<<<<<<<<<< + * site_verts = np.flip(site_verts) * */ __pyx_t_26 = 0; @@ -11747,7 +8335,7 @@ if (unlikely(!__pyx_v_self->vertices.memview)) {PyErr_SetString(PyExc_AttributeE __pyx_t_36.memview = __pyx_v_self->vertices.memview; __PYX_INC_MEMVIEW(&__pyx_t_36, 0); { - Py_ssize_t __pyx_tmp_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_site_verts.rcbuffer->pybuffer.buf, __pyx_t_26, __pyx_pybuffernd_site_verts.diminfo[0].strides)); + Py_ssize_t __pyx_tmp_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_site_verts.rcbuffer->pybuffer.buf, __pyx_t_26, __pyx_pybuffernd_site_verts.diminfo[0].strides)); Py_ssize_t __pyx_tmp_stride = __pyx_v_self->vertices.strides[0]; __pyx_t_36.data += __pyx_tmp_idx * __pyx_tmp_stride; } @@ -11756,13 +8344,13 @@ __pyx_t_36.shape[0] = __pyx_v_self->vertices.shape[1]; __pyx_t_36.strides[0] = __pyx_v_self->vertices.strides[1]; __pyx_t_36.suboffsets[0] = -1; -if (unlikely(!__pyx_v_self->vertices.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 495, __pyx_L1_error)} +if (unlikely(!__pyx_v_self->vertices.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 505, __pyx_L1_error)} __pyx_t_26 = 1; __pyx_t_37.data = __pyx_v_self->vertices.data; __pyx_t_37.memview = __pyx_v_self->vertices.memview; __PYX_INC_MEMVIEW(&__pyx_t_37, 0); { - Py_ssize_t __pyx_tmp_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_site_verts.rcbuffer->pybuffer.buf, __pyx_t_26, __pyx_pybuffernd_site_verts.diminfo[0].strides)); + Py_ssize_t __pyx_tmp_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_site_verts.rcbuffer->pybuffer.buf, __pyx_t_26, __pyx_pybuffernd_site_verts.diminfo[0].strides)); Py_ssize_t __pyx_tmp_stride = __pyx_v_self->vertices.strides[0]; __pyx_t_37.data += __pyx_tmp_idx * __pyx_tmp_stride; } @@ -11771,14 +8359,14 @@ __pyx_t_37.shape[0] = __pyx_v_self->vertices.shape[1]; __pyx_t_37.strides[0] = __pyx_v_self->vertices.strides[1]; __pyx_t_37.suboffsets[0] = -1; -__pyx_t_30 = ((!(__pyx_f_7_squish_16VoronoiContainer_sign(__pyx_t_35, __pyx_t_36, __pyx_t_37) != 0)) != 0); +__pyx_t_30 = ((!(__pyx_f_6squish_7voronoi_16VoronoiContainer_sign(__pyx_t_35, __pyx_t_36, __pyx_t_37) != 0)) != 0); - /* "squish/_squish/voronoi_dcel.pyx":494 + /* "squish/voronoi.pyx":504 * - * # Scipy outputs sorted vertices, but reverse if not counterclockwise. - * if not VoronoiContainer.sign(self.points[site_i], # <<<<<<<<<<<<<< - * self.vertices[site_verts[0]], self.vertices[site_verts[1]]): - * site_verts = np.flip(site_verts) + * # Scipy outputs sorted vertices, but reverse if not counterclockwise. + * if not VoronoiContainer.sign(self.points[site_i], # <<<<<<<<<<<<<< + * self.vertices[site_verts[0]], self.vertices[site_verts[1]]): + * site_verts = np.flip(site_verts) */ __PYX_XDEC_MEMVIEW(&__pyx_t_35, 1); __pyx_t_35.memview = NULL; @@ -11791,16 +8379,16 @@ __pyx_t_30 = ((!(__pyx_f_7_squish_16VoronoiContainer_sign(__pyx_t_35, __pyx_t_36 __pyx_t_37.data = NULL; if (__pyx_t_30) { - /* "squish/_squish/voronoi_dcel.pyx":496 - * if not VoronoiContainer.sign(self.points[site_i], - * self.vertices[site_verts[0]], self.vertices[site_verts[1]]): - * site_verts = np.flip(site_verts) # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":506 + * if not VoronoiContainer.sign(self.points[site_i], + * self.vertices[site_verts[0]], self.vertices[site_verts[1]]): + * site_verts = np.flip(site_verts) # <<<<<<<<<<<<<< * - * vert_num = offsets[site_i+1] - offsets[site_i] + * vert_num = offsets[site_i+1] - offsets[site_i] */ - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 496, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 506, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_flip); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 496, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_flip); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 506, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -11815,18 +8403,18 @@ __pyx_t_30 = ((!(__pyx_f_7_squish_16VoronoiContainer_sign(__pyx_t_35, __pyx_t_36 } __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_4, ((PyObject *)__pyx_v_site_verts)) : __Pyx_PyObject_CallOneArg(__pyx_t_13, ((PyObject *)__pyx_v_site_verts)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 496, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 506, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 496, __pyx_L1_error) + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 506, __pyx_L1_error) __pyx_t_31 = ((PyArrayObject *)__pyx_t_3); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_site_verts.rcbuffer->pybuffer); - __pyx_t_22 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_site_verts.rcbuffer->pybuffer, (PyObject*)__pyx_t_31, &__Pyx_TypeInfo_nn___pyx_t_7_squish_INT_T, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack); + __pyx_t_22 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_site_verts.rcbuffer->pybuffer, (PyObject*)__pyx_t_31, &__Pyx_TypeInfo_nn___pyx_t_6squish_4core_INT_T, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack); if (unlikely(__pyx_t_22 < 0)) { PyErr_Fetch(&__pyx_t_34, &__pyx_t_33, &__pyx_t_32); - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_site_verts.rcbuffer->pybuffer, (PyObject*)__pyx_v_site_verts, &__Pyx_TypeInfo_nn___pyx_t_7_squish_INT_T, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_site_verts.rcbuffer->pybuffer, (PyObject*)__pyx_v_site_verts, &__Pyx_TypeInfo_nn___pyx_t_6squish_4core_INT_T, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_34); Py_XDECREF(__pyx_t_33); Py_XDECREF(__pyx_t_32); __Pyx_RaiseBufferFallbackError(); } else { @@ -11835,116 +8423,116 @@ __pyx_t_30 = ((!(__pyx_f_7_squish_16VoronoiContainer_sign(__pyx_t_35, __pyx_t_36 __pyx_t_34 = __pyx_t_33 = __pyx_t_32 = 0; } __pyx_pybuffernd_site_verts.diminfo[0].strides = __pyx_pybuffernd_site_verts.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_site_verts.diminfo[0].shape = __pyx_pybuffernd_site_verts.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_22 < 0)) __PYX_ERR(1, 496, __pyx_L1_error) + if (unlikely(__pyx_t_22 < 0)) __PYX_ERR(0, 506, __pyx_L1_error) } __pyx_t_31 = 0; __Pyx_DECREF_SET(__pyx_v_site_verts, ((PyArrayObject *)__pyx_t_3)); __pyx_t_3 = 0; - /* "squish/_squish/voronoi_dcel.pyx":494 + /* "squish/voronoi.pyx":504 * - * # Scipy outputs sorted vertices, but reverse if not counterclockwise. - * if not VoronoiContainer.sign(self.points[site_i], # <<<<<<<<<<<<<< - * self.vertices[site_verts[0]], self.vertices[site_verts[1]]): - * site_verts = np.flip(site_verts) + * # Scipy outputs sorted vertices, but reverse if not counterclockwise. + * if not VoronoiContainer.sign(self.points[site_i], # <<<<<<<<<<<<<< + * self.vertices[site_verts[0]], self.vertices[site_verts[1]]): + * site_verts = np.flip(site_verts) */ } - /* "squish/_squish/voronoi_dcel.pyx":498 - * site_verts = np.flip(site_verts) + /* "squish/voronoi.pyx":508 + * site_verts = np.flip(site_verts) * - * vert_num = offsets[site_i+1] - offsets[site_i] # <<<<<<<<<<<<<< + * vert_num = offsets[site_i+1] - offsets[site_i] # <<<<<<<<<<<<<< * - * for j in range(vert_num): + * for j in range(vert_num): */ __pyx_t_27 = (__pyx_v_site_i + 1); __pyx_t_29 = __pyx_v_site_i; - __pyx_v_vert_num = ((*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_offsets.diminfo[0].strides)) - (*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_offsets.diminfo[0].strides))); + __pyx_v_vert_num = ((*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_offsets.diminfo[0].strides)) - (*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_offsets.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_offsets.diminfo[0].strides))); - /* "squish/_squish/voronoi_dcel.pyx":500 - * vert_num = offsets[site_i+1] - offsets[site_i] + /* "squish/voronoi.pyx":510 + * vert_num = offsets[site_i+1] - offsets[site_i] * - * for j in range(vert_num): # <<<<<<<<<<<<<< - * edge_i = edge_offset+j - * self.edges[edge_i, 0] = site_verts[j] + * for j in range(vert_num): # <<<<<<<<<<<<<< + * edge_i = edge_offset+j + * self.edges[edge_i, 0] = site_verts[j] */ __pyx_t_29 = __pyx_v_vert_num; __pyx_t_27 = __pyx_t_29; for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_27; __pyx_t_11+=1) { __pyx_v_j = __pyx_t_11; - /* "squish/_squish/voronoi_dcel.pyx":501 + /* "squish/voronoi.pyx":511 * - * for j in range(vert_num): - * edge_i = edge_offset+j # <<<<<<<<<<<<<< - * self.edges[edge_i, 0] = site_verts[j] - * self.edges[edge_i, 1] = i + * for j in range(vert_num): + * edge_i = edge_offset+j # <<<<<<<<<<<<<< + * self.edges[edge_i, 0] = site_verts[j] + * self.edges[edge_i, 1] = i */ __pyx_v_edge_i = (__pyx_v_edge_offset + __pyx_v_j); - /* "squish/_squish/voronoi_dcel.pyx":502 - * for j in range(vert_num): - * edge_i = edge_offset+j - * self.edges[edge_i, 0] = site_verts[j] # <<<<<<<<<<<<<< - * self.edges[edge_i, 1] = i - * # Add vert_num because of C modulo to get always positive. + /* "squish/voronoi.pyx":512 + * for j in range(vert_num): + * edge_i = edge_offset+j + * self.edges[edge_i, 0] = site_verts[j] # <<<<<<<<<<<<<< + * self.edges[edge_i, 1] = i + * # Add vert_num because of C modulo to get always positive. */ __pyx_t_9 = __pyx_v_j; - if (unlikely(!__pyx_v_self->edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 502, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 512, __pyx_L1_error)} __pyx_t_38 = __pyx_v_edge_i; __pyx_t_26 = 0; - *((__pyx_t_7_squish_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_INT_T *) ( /* dim=0 */ (__pyx_v_self->edges.data + __pyx_t_38 * __pyx_v_self->edges.strides[0]) )) + __pyx_t_26)) )) = (*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_site_verts.rcbuffer->pybuffer.buf, __pyx_t_9, __pyx_pybuffernd_site_verts.diminfo[0].strides)); + *((__pyx_t_6squish_4core_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_INT_T *) ( /* dim=0 */ (__pyx_v_self->edges.data + __pyx_t_38 * __pyx_v_self->edges.strides[0]) )) + __pyx_t_26)) )) = (*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_site_verts.rcbuffer->pybuffer.buf, __pyx_t_9, __pyx_pybuffernd_site_verts.diminfo[0].strides)); - /* "squish/_squish/voronoi_dcel.pyx":503 - * edge_i = edge_offset+j - * self.edges[edge_i, 0] = site_verts[j] - * self.edges[edge_i, 1] = i # <<<<<<<<<<<<<< - * # Add vert_num because of C modulo to get always positive. - * self.edges[edge_i, 2] = (j+vert_num+1) % vert_num + edge_offset + /* "squish/voronoi.pyx":513 + * edge_i = edge_offset+j + * self.edges[edge_i, 0] = site_verts[j] + * self.edges[edge_i, 1] = i # <<<<<<<<<<<<<< + * # Add vert_num because of C modulo to get always positive. + * self.edges[edge_i, 2] = (j+vert_num+1) % vert_num + edge_offset */ - if (unlikely(!__pyx_v_self->edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 503, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 513, __pyx_L1_error)} __pyx_t_9 = __pyx_v_edge_i; __pyx_t_26 = 1; - *((__pyx_t_7_squish_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_INT_T *) ( /* dim=0 */ (__pyx_v_self->edges.data + __pyx_t_9 * __pyx_v_self->edges.strides[0]) )) + __pyx_t_26)) )) = __pyx_v_i; + *((__pyx_t_6squish_4core_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_INT_T *) ( /* dim=0 */ (__pyx_v_self->edges.data + __pyx_t_9 * __pyx_v_self->edges.strides[0]) )) + __pyx_t_26)) )) = __pyx_v_i; - /* "squish/_squish/voronoi_dcel.pyx":505 - * self.edges[edge_i, 1] = i - * # Add vert_num because of C modulo to get always positive. - * self.edges[edge_i, 2] = (j+vert_num+1) % vert_num + edge_offset # <<<<<<<<<<<<<< - * self.edges[edge_i, 3] = (j+vert_num-1) % vert_num + edge_offset + /* "squish/voronoi.pyx":515 + * self.edges[edge_i, 1] = i + * # Add vert_num because of C modulo to get always positive. + * self.edges[edge_i, 2] = (j+vert_num+1) % vert_num + edge_offset # <<<<<<<<<<<<<< + * self.edges[edge_i, 3] = (j+vert_num-1) % vert_num + edge_offset * */ - if (unlikely(!__pyx_v_self->edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 505, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 515, __pyx_L1_error)} __pyx_t_9 = __pyx_v_edge_i; __pyx_t_26 = 2; - *((__pyx_t_7_squish_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_INT_T *) ( /* dim=0 */ (__pyx_v_self->edges.data + __pyx_t_9 * __pyx_v_self->edges.strides[0]) )) + __pyx_t_26)) )) = ((((__pyx_v_j + __pyx_v_vert_num) + 1) % __pyx_v_vert_num) + __pyx_v_edge_offset); + *((__pyx_t_6squish_4core_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_INT_T *) ( /* dim=0 */ (__pyx_v_self->edges.data + __pyx_t_9 * __pyx_v_self->edges.strides[0]) )) + __pyx_t_26)) )) = ((((__pyx_v_j + __pyx_v_vert_num) + 1) % __pyx_v_vert_num) + __pyx_v_edge_offset); - /* "squish/_squish/voronoi_dcel.pyx":506 - * # Add vert_num because of C modulo to get always positive. - * self.edges[edge_i, 2] = (j+vert_num+1) % vert_num + edge_offset - * self.edges[edge_i, 3] = (j+vert_num-1) % vert_num + edge_offset # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":516 + * # Add vert_num because of C modulo to get always positive. + * self.edges[edge_i, 2] = (j+vert_num+1) % vert_num + edge_offset + * self.edges[edge_i, 3] = (j+vert_num-1) % vert_num + edge_offset # <<<<<<<<<<<<<< * - * # Get reversed tuple to theck for twin. + * # Get reversed tuple to theck for twin. */ - if (unlikely(!__pyx_v_self->edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 506, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 516, __pyx_L1_error)} __pyx_t_9 = __pyx_v_edge_i; __pyx_t_26 = 3; - *((__pyx_t_7_squish_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_INT_T *) ( /* dim=0 */ (__pyx_v_self->edges.data + __pyx_t_9 * __pyx_v_self->edges.strides[0]) )) + __pyx_t_26)) )) = ((((__pyx_v_j + __pyx_v_vert_num) - 1) % __pyx_v_vert_num) + __pyx_v_edge_offset); + *((__pyx_t_6squish_4core_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_INT_T *) ( /* dim=0 */ (__pyx_v_self->edges.data + __pyx_t_9 * __pyx_v_self->edges.strides[0]) )) + __pyx_t_26)) )) = ((((__pyx_v_j + __pyx_v_vert_num) - 1) % __pyx_v_vert_num) + __pyx_v_edge_offset); - /* "squish/_squish/voronoi_dcel.pyx":510 - * # Get reversed tuple to theck for twin. - * twin_index = edge_indices.get( - * (site_verts[(j+1) % vert_num], site_verts[j] # <<<<<<<<<<<<<< - * ), -1) + /* "squish/voronoi.pyx":520 + * # Get reversed tuple to theck for twin. + * twin_index = edge_indices.get( + * (site_verts[(j+1) % vert_num], site_verts[j] # <<<<<<<<<<<<<< + * ), -1) * */ __pyx_t_9 = ((__pyx_v_j + 1) % __pyx_v_vert_num); - __pyx_t_3 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_site_verts.rcbuffer->pybuffer.buf, __pyx_t_9, __pyx_pybuffernd_site_verts.diminfo[0].strides))); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 510, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_site_verts.rcbuffer->pybuffer.buf, __pyx_t_9, __pyx_pybuffernd_site_verts.diminfo[0].strides))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 520, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = __pyx_v_j; - __pyx_t_13 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_site_verts.rcbuffer->pybuffer.buf, __pyx_t_9, __pyx_pybuffernd_site_verts.diminfo[0].strides))); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 510, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_site_verts.rcbuffer->pybuffer.buf, __pyx_t_9, __pyx_pybuffernd_site_verts.diminfo[0].strides))); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 520, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 510, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 520, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); @@ -11953,66 +8541,66 @@ __pyx_t_30 = ((!(__pyx_f_7_squish_16VoronoiContainer_sign(__pyx_t_35, __pyx_t_36 __pyx_t_3 = 0; __pyx_t_13 = 0; - /* "squish/_squish/voronoi_dcel.pyx":509 + /* "squish/voronoi.pyx":519 * - * # Get reversed tuple to theck for twin. - * twin_index = edge_indices.get( # <<<<<<<<<<<<<< - * (site_verts[(j+1) % vert_num], site_verts[j] - * ), -1) + * # Get reversed tuple to theck for twin. + * twin_index = edge_indices.get( # <<<<<<<<<<<<<< + * (site_verts[(j+1) % vert_num], site_verts[j] + * ), -1) */ - __pyx_t_13 = __Pyx_PyDict_GetItemDefault(__pyx_v_edge_indices, __pyx_t_4, __pyx_int_neg_1); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 509, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyDict_GetItemDefault(__pyx_v_edge_indices, __pyx_t_4, __pyx_int_neg_1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 519, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_9 = __Pyx_PyInt_As_npy_int64(__pyx_t_13); if (unlikely((__pyx_t_9 == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(1, 509, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyInt_As_npy_int64(__pyx_t_13); if (unlikely((__pyx_t_9 == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 519, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_v_twin_index = __pyx_t_9; - /* "squish/_squish/voronoi_dcel.pyx":513 - * ), -1) + /* "squish/voronoi.pyx":523 + * ), -1) * - * self.edges[edge_i, 4] = twin_index # <<<<<<<<<<<<<< - * if twin_index == -1: - * edge_indices[(site_verts[j], site_verts[(j+1) % vert_num])] = \ + * self.edges[edge_i, 4] = twin_index # <<<<<<<<<<<<<< + * if twin_index == -1: + * edge_indices[(site_verts[j], site_verts[(j+1) % vert_num])] = \ */ - if (unlikely(!__pyx_v_self->edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 513, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 523, __pyx_L1_error)} __pyx_t_9 = __pyx_v_edge_i; __pyx_t_26 = 4; - *((__pyx_t_7_squish_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_INT_T *) ( /* dim=0 */ (__pyx_v_self->edges.data + __pyx_t_9 * __pyx_v_self->edges.strides[0]) )) + __pyx_t_26)) )) = __pyx_v_twin_index; + *((__pyx_t_6squish_4core_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_INT_T *) ( /* dim=0 */ (__pyx_v_self->edges.data + __pyx_t_9 * __pyx_v_self->edges.strides[0]) )) + __pyx_t_26)) )) = __pyx_v_twin_index; - /* "squish/_squish/voronoi_dcel.pyx":514 + /* "squish/voronoi.pyx":524 * - * self.edges[edge_i, 4] = twin_index - * if twin_index == -1: # <<<<<<<<<<<<<< - * edge_indices[(site_verts[j], site_verts[(j+1) % vert_num])] = \ - * j + edge_offset + * self.edges[edge_i, 4] = twin_index + * if twin_index == -1: # <<<<<<<<<<<<<< + * edge_indices[(site_verts[j], site_verts[(j+1) % vert_num])] = \ + * j + edge_offset */ __pyx_t_30 = ((__pyx_v_twin_index == -1LL) != 0); if (__pyx_t_30) { - /* "squish/_squish/voronoi_dcel.pyx":516 - * if twin_index == -1: - * edge_indices[(site_verts[j], site_verts[(j+1) % vert_num])] = \ - * j + edge_offset # <<<<<<<<<<<<<< - * else: - * self.edges[twin_index, 4] = j + edge_offset + /* "squish/voronoi.pyx":526 + * if twin_index == -1: + * edge_indices[(site_verts[j], site_verts[(j+1) % vert_num])] = \ + * j + edge_offset # <<<<<<<<<<<<<< + * else: + * self.edges[twin_index, 4] = j + edge_offset */ - __pyx_t_13 = __Pyx_PyInt_From_npy_int64((__pyx_v_j + __pyx_v_edge_offset)); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 516, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyInt_From_npy_int64((__pyx_v_j + __pyx_v_edge_offset)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); - /* "squish/_squish/voronoi_dcel.pyx":515 - * self.edges[edge_i, 4] = twin_index - * if twin_index == -1: - * edge_indices[(site_verts[j], site_verts[(j+1) % vert_num])] = \ # <<<<<<<<<<<<<< - * j + edge_offset - * else: + /* "squish/voronoi.pyx":525 + * self.edges[edge_i, 4] = twin_index + * if twin_index == -1: + * edge_indices[(site_verts[j], site_verts[(j+1) % vert_num])] = \ # <<<<<<<<<<<<<< + * j + edge_offset + * else: */ __pyx_t_9 = __pyx_v_j; - __pyx_t_4 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_site_verts.rcbuffer->pybuffer.buf, __pyx_t_9, __pyx_pybuffernd_site_verts.diminfo[0].strides))); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 515, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_site_verts.rcbuffer->pybuffer.buf, __pyx_t_9, __pyx_pybuffernd_site_verts.diminfo[0].strides))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = ((__pyx_v_j + 1) % __pyx_v_vert_num); - __pyx_t_3 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_7_squish_INT_T *, __pyx_pybuffernd_site_verts.rcbuffer->pybuffer.buf, __pyx_t_9, __pyx_pybuffernd_site_verts.diminfo[0].strides))); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 515, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_6squish_4core_INT_T *, __pyx_pybuffernd_site_verts.rcbuffer->pybuffer.buf, __pyx_t_9, __pyx_pybuffernd_site_verts.diminfo[0].strides))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 515, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); @@ -12020,99 +8608,99 @@ __pyx_t_30 = ((!(__pyx_f_7_squish_16VoronoiContainer_sign(__pyx_t_35, __pyx_t_36 PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3); __pyx_t_4 = 0; __pyx_t_3 = 0; - if (unlikely(PyDict_SetItem(__pyx_v_edge_indices, __pyx_t_2, __pyx_t_13) < 0)) __PYX_ERR(1, 515, __pyx_L1_error) + if (unlikely(PyDict_SetItem(__pyx_v_edge_indices, __pyx_t_2, __pyx_t_13) < 0)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - /* "squish/_squish/voronoi_dcel.pyx":514 + /* "squish/voronoi.pyx":524 * - * self.edges[edge_i, 4] = twin_index - * if twin_index == -1: # <<<<<<<<<<<<<< - * edge_indices[(site_verts[j], site_verts[(j+1) % vert_num])] = \ - * j + edge_offset + * self.edges[edge_i, 4] = twin_index + * if twin_index == -1: # <<<<<<<<<<<<<< + * edge_indices[(site_verts[j], site_verts[(j+1) % vert_num])] = \ + * j + edge_offset */ goto __pyx_L15; } - /* "squish/_squish/voronoi_dcel.pyx":518 - * j + edge_offset - * else: - * self.edges[twin_index, 4] = j + edge_offset # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":528 + * j + edge_offset + * else: + * self.edges[twin_index, 4] = j + edge_offset # <<<<<<<<<<<<<< * - * self.site_cache = np.empty((self.n + border_num, 5), dtype=FLOAT) + * self.site_cache = np.empty((self.n + border_num, 7), dtype=FLOAT) */ /*else*/ { - if (unlikely(!__pyx_v_self->edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 518, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 528, __pyx_L1_error)} __pyx_t_9 = __pyx_v_twin_index; __pyx_t_26 = 4; - *((__pyx_t_7_squish_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_INT_T *) ( /* dim=0 */ (__pyx_v_self->edges.data + __pyx_t_9 * __pyx_v_self->edges.strides[0]) )) + __pyx_t_26)) )) = (__pyx_v_j + __pyx_v_edge_offset); + *((__pyx_t_6squish_4core_INT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_6squish_4core_INT_T *) ( /* dim=0 */ (__pyx_v_self->edges.data + __pyx_t_9 * __pyx_v_self->edges.strides[0]) )) + __pyx_t_26)) )) = (__pyx_v_j + __pyx_v_edge_offset); } __pyx_L15:; } } - /* "squish/_squish/voronoi_dcel.pyx":520 - * self.edges[twin_index, 4] = j + edge_offset + /* "squish/voronoi.pyx":530 + * self.edges[twin_index, 4] = j + edge_offset * - * self.site_cache = np.empty((self.n + border_num, 5), dtype=FLOAT) # <<<<<<<<<<<<<< - * self.edge_cache = np.empty((edge_count, self.edge_cache_map.size), dtype=FLOAT) + * self.site_cache = np.empty((self.n + border_num, 7), dtype=FLOAT) # <<<<<<<<<<<<<< + * self.edge_cache = np.empty((edge_count, self.edge_cache_map.size), dtype=FLOAT) * */ - __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_np); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 520, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_np); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 520, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_13 = __Pyx_PyInt_From_npy_int64((__pyx_v_self->n + __pyx_v_border_num)); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 520, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyInt_From_npy_int64((__pyx_v_self->n + __pyx_v_border_num)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 520, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_13); - __Pyx_INCREF(__pyx_int_5); - __Pyx_GIVEREF(__pyx_int_5); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_5); + __Pyx_INCREF(__pyx_int_7); + __Pyx_GIVEREF(__pyx_int_7); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_7); __pyx_t_13 = 0; - __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 520, __pyx_L1_error) + __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 520, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 520, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(1, 520, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 530, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_13, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 520, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_13, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_39 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_7_squish_FLOAT_T(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_39.memview)) __PYX_ERR(1, 520, __pyx_L1_error) + __pyx_t_39 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_6squish_4core_FLOAT_T(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_39.memview)) __PYX_ERR(0, 530, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_self->site_cache, 0); __pyx_v_self->site_cache = __pyx_t_39; __pyx_t_39.memview = NULL; __pyx_t_39.data = NULL; - /* "squish/_squish/voronoi_dcel.pyx":521 + /* "squish/voronoi.pyx":531 * - * self.site_cache = np.empty((self.n + border_num, 5), dtype=FLOAT) - * self.edge_cache = np.empty((edge_count, self.edge_cache_map.size), dtype=FLOAT) # <<<<<<<<<<<<<< + * self.site_cache = np.empty((self.n + border_num, 7), dtype=FLOAT) + * self.edge_cache = np.empty((edge_count, self.edge_cache_map.size), dtype=FLOAT) # <<<<<<<<<<<<<< * * */ - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 521, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 531, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 521, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 531, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyInt_From_npy_int64(__pyx_v_edge_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 521, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_npy_int64(__pyx_v_edge_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 531, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_13 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->edge_cache_map->size); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 521, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->edge_cache_map->size); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 531, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 521, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 531, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); @@ -12120,35 +8708,35 @@ __pyx_t_30 = ((!(__pyx_f_7_squish_16VoronoiContainer_sign(__pyx_t_35, __pyx_t_36 PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_13); __pyx_t_4 = 0; __pyx_t_13 = 0; - __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 521, __pyx_L1_error) + __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 531, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 521, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 531, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 521, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 531, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(1, 521, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 531, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_13, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 521, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_13, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 531, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_39 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_7_squish_FLOAT_T(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_39.memview)) __PYX_ERR(1, 521, __pyx_L1_error) + __pyx_t_39 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_6squish_4core_FLOAT_T(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_39.memview)) __PYX_ERR(0, 531, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_self->edge_cache, 0); __pyx_v_self->edge_cache = __pyx_t_39; __pyx_t_39.memview = NULL; __pyx_t_39.data = NULL; - /* "squish/_squish/voronoi_dcel.pyx":435 + /* "squish/voronoi.pyx":446 * * - * cdef void generate_dcel(VoronoiContainer self) except *: # <<<<<<<<<<<<<< - * cdef INT_T npoints = self.n*9+8 - * cdef array.array int_tmplt = array.array('q', []) + * cdef void generate_dcel(VoronoiContainer self) except *: # <<<<<<<<<<<<<< + * cdef array.array int_tmplt = array.array('q', []) + * */ /* function exit code */ @@ -12181,7 +8769,7 @@ __pyx_t_30 = ((!(__pyx_f_7_squish_16VoronoiContainer_sign(__pyx_t_35, __pyx_t_36 __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_site_verts.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vert_indices_np.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_AddTraceback("_squish.VoronoiContainer.generate_dcel", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.generate_dcel", __pyx_clineno, __pyx_lineno, __pyx_filename); goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_border_sites.rcbuffer->pybuffer); @@ -12200,30 +8788,32 @@ __pyx_t_30 = ((!(__pyx_f_7_squish_16VoronoiContainer_sign(__pyx_t_35, __pyx_t_36 __Pyx_RefNannyFinishContext(); } -/* "squish/_squish/voronoi_dcel.pyx":524 +/* "squish/voronoi.pyx":534 * * - * cdef void common_cache(VoronoiContainer self) except *: # <<<<<<<<<<<<<< - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + * cdef void common_cache(VoronoiContainer self) except *: # <<<<<<<<<<<<<< + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) */ -static void __pyx_f_7_squish_16VoronoiContainer_common_cache(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self) { - __pyx_t_7_squish_VoronoiInfo __pyx_v_info; - __pyx_t_7_squish_Site __pyx_v_xi; - __pyx_t_7_squish_HalfEdge __pyx_v_em; - __pyx_t_7_squish_HalfEdge __pyx_v_ep; - __pyx_t_7_squish_Vector2D __pyx_v_p; - __pyx_t_7_squish_Vector2D __pyx_v_q; - __pyx_t_7_squish_Vector2D __pyx_v_la; - __pyx_t_7_squish_Vector2D __pyx_v_da; - __pyx_t_7_squish_Vector2D __pyx_v_Rla; +static void __pyx_f_6squish_7voronoi_16VoronoiContainer_common_cache(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self) { + __pyx_t_6squish_7voronoi_VoronoiInfo __pyx_v_info; + __pyx_t_6squish_7voronoi_Site __pyx_v_xi; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_v_em; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_v_ep; + __pyx_t_6squish_4core_Vector2D __pyx_v_p; + __pyx_t_6squish_4core_Vector2D __pyx_v_q; + __pyx_t_6squish_4core_Vector2D __pyx_v_la; + __pyx_t_6squish_4core_Vector2D __pyx_v_da; + __pyx_t_6squish_4core_Vector2D __pyx_v_Rla; + __pyx_t_6squish_4core_Vector2D __pyx_v_centroid; + __pyx_t_6squish_4core_Vector2D __pyx_v_cent_part; __Pyx_memviewslice __pyx_v_area = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_perim = { 0, 0, { 0 }, { 0 }, { 0 } }; - __pyx_t_7_squish_INT_T __pyx_v_i; - CYTHON_UNUSED __pyx_t_7_squish_INT_T __pyx_v_j; - __pyx_t_7_squish_FLOAT_T __pyx_v_e_area; - __pyx_t_7_squish_FLOAT_T __pyx_v_la_mag; + __pyx_t_6squish_4core_INT_T __pyx_v_i; + __pyx_t_6squish_4core_INT_T __pyx_v_j; + __pyx_t_6squish_4core_FLOAT_T __pyx_v_area_p; + __pyx_t_6squish_4core_FLOAT_T __pyx_v_la_mag; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; @@ -12231,131 +8821,129 @@ static void __pyx_f_7_squish_16VoronoiContainer_common_cache(struct __pyx_obj_7_ PyObject *__pyx_t_4 = NULL; __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } }; Py_ssize_t __pyx_t_6; - __pyx_t_7_squish_INT_T __pyx_t_7; - __pyx_t_7_squish_INT_T __pyx_t_8; - __pyx_t_7_squish_INT_T __pyx_t_9; - __pyx_t_7_squish_INT_T __pyx_t_10; - __pyx_t_7_squish_INT_T __pyx_t_11; - __pyx_t_7_squish_Vector2D __pyx_t_12; - __pyx_t_7_squish_Vector2D __pyx_t_13; - int __pyx_t_14; - __pyx_t_7_squish_INT_T __pyx_t_15; + __pyx_t_6squish_4core_INT_T __pyx_t_7; + __pyx_t_6squish_4core_INT_T __pyx_t_8; + int __pyx_t_9; + __pyx_t_6squish_4core_Vector2D __pyx_t_10; + __pyx_t_6squish_4core_Vector2D __pyx_t_11; + __pyx_t_6squish_4core_INT_T __pyx_t_12; + __pyx_t_6squish_4core_INT_T __pyx_t_13; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("common_cache", 0); - /* "squish/_squish/voronoi_dcel.pyx":525 + /* "squish/voronoi.pyx":535 * - * cdef void common_cache(VoronoiContainer self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + * cdef void common_cache(VoronoiContainer self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) * */ - if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 525, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 525, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->points.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 525, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 535, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 535, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->points.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 535, __pyx_L1_error)} - /* "squish/_squish/voronoi_dcel.pyx":526 - * cdef void common_cache(VoronoiContainer self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":536 + * cdef void common_cache(VoronoiContainer self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) # <<<<<<<<<<<<<< * - * cdef Site xi + * cdef Site xi */ - if (unlikely(!__pyx_v_self->vertices.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 526, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->site_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 526, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->edge_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 526, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->vertices.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 536, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->site_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 536, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->edge_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 536, __pyx_L1_error)} - /* "squish/_squish/voronoi_dcel.pyx":525 + /* "squish/voronoi.pyx":535 * - * cdef void common_cache(VoronoiContainer self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + * cdef void common_cache(VoronoiContainer self) except *: + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) * */ - __pyx_v_info = __pyx_v_7_squish_init.VoronoiInfo(__pyx_v_self->sites, __pyx_v_self->edges, __pyx_v_self->points, __pyx_v_self->vertices, __pyx_v_self->site_cache, __pyx_v_self->edge_cache, __pyx_v_self->edge_cache_map); + __pyx_v_info = __pyx_f_6squish_7voronoi__VoronoiInfo(__pyx_v_self->sites, __pyx_v_self->edges, __pyx_v_self->points, __pyx_v_self->vertices, __pyx_v_self->site_cache, __pyx_v_self->edge_cache, __pyx_v_self->edge_cache_map); - /* "squish/_squish/voronoi_dcel.pyx":532 - * cdef Vector2D p, q, la, da, Rla + /* "squish/voronoi.pyx":542 + * cdef Vector2D p, q, la, da, Rla, centroid, cent_part * - * cdef FLOAT_T [:] area = np.zeros(self.sites.shape[0], dtype=FLOAT) # <<<<<<<<<<<<<< - * cdef FLOAT_T [:] perim = np.zeros(self.sites.shape[0], dtype=FLOAT) + * cdef FLOAT_T [:] area = np.zeros(self.sites.shape[0], dtype=FLOAT) # <<<<<<<<<<<<<< + * cdef FLOAT_T [:] perim = np.zeros(self.sites.shape[0], dtype=FLOAT) * */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 532, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 532, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 532, __pyx_L1_error)} - __pyx_t_1 = PyInt_FromSsize_t((__pyx_v_self->sites.shape[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 532, __pyx_L1_error) + if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 542, __pyx_L1_error)} + __pyx_t_1 = PyInt_FromSsize_t((__pyx_v_self->sites.shape[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 532, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 532, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 532, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(1, 532, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 532, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_7_squish_FLOAT_T(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(1, 532, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_6squish_4core_FLOAT_T(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_area = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL; - /* "squish/_squish/voronoi_dcel.pyx":533 + /* "squish/voronoi.pyx":543 * - * cdef FLOAT_T [:] area = np.zeros(self.sites.shape[0], dtype=FLOAT) - * cdef FLOAT_T [:] perim = np.zeros(self.sites.shape[0], dtype=FLOAT) # <<<<<<<<<<<<<< + * cdef FLOAT_T [:] area = np.zeros(self.sites.shape[0], dtype=FLOAT) + * cdef FLOAT_T [:] perim = np.zeros(self.sites.shape[0], dtype=FLOAT) # <<<<<<<<<<<<<< * - * cdef INT_T i, j + * cdef INT_T i, j */ - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 533, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 533, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 533, __pyx_L1_error)} - __pyx_t_4 = PyInt_FromSsize_t((__pyx_v_self->sites.shape[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 533, __pyx_L1_error) + if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 543, __pyx_L1_error)} + __pyx_t_4 = PyInt_FromSsize_t((__pyx_v_self->sites.shape[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 533, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 533, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 533, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(1, 533, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 543, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 533, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_7_squish_FLOAT_T(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(1, 533, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_6squish_4core_FLOAT_T(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 543, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_perim = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL; - /* "squish/_squish/voronoi_dcel.pyx":537 - * cdef INT_T i, j - * cdef FLOAT_T e_area, la_mag - * for i in prange(self.sites.shape[0], nogil=True): # <<<<<<<<<<<<<< - * xi = init.Site(i, &info) - * em = xi.edge(&xi) + /* "squish/voronoi.pyx":547 + * cdef INT_T i, j + * cdef FLOAT_T area_p, la_mag + * for i in prange(self.sites.shape[0], nogil=True): # <<<<<<<<<<<<<< + * xi = _Site(i, &info) + * centroid = _Vector2D(0, 0) */ { #ifdef WITH_THREAD @@ -12364,7 +8952,7 @@ static void __pyx_f_7_squish_16VoronoiContainer_common_cache(struct __pyx_obj_7_ __Pyx_FastGIL_Remember(); #endif /*try:*/ { - if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 537, __pyx_L4_error)} + if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 547, __pyx_L4_error)} __pyx_t_6 = (__pyx_v_self->sites.shape[0]); if ((1 == 0)) abort(); { @@ -12378,244 +8966,287 @@ static void __pyx_f_7_squish_16VoronoiContainer_common_cache(struct __pyx_obj_7_ if (__pyx_t_8 > 0) { #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_10, __pyx_t_11, __pyx_t_12, __pyx_t_13, __pyx_t_14, __pyx_t_15, __pyx_t_9) + #pragma omp parallel private(__pyx_t_10, __pyx_t_11, __pyx_t_12, __pyx_t_13, __pyx_t_9) #endif /* _OPENMP */ { #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_Rla) lastprivate(__pyx_v_da) lastprivate(__pyx_v_e_area) lastprivate(__pyx_v_em) lastprivate(__pyx_v_ep) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) lastprivate(__pyx_v_la) lastprivate(__pyx_v_la_mag) lastprivate(__pyx_v_p) lastprivate(__pyx_v_q) lastprivate(__pyx_v_xi) + #pragma omp for lastprivate(__pyx_v_Rla) lastprivate(__pyx_v_area_p) lastprivate(__pyx_v_cent_part) lastprivate(__pyx_v_centroid) lastprivate(__pyx_v_da) lastprivate(__pyx_v_em) lastprivate(__pyx_v_ep) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) lastprivate(__pyx_v_la) lastprivate(__pyx_v_la_mag) lastprivate(__pyx_v_p) lastprivate(__pyx_v_q) lastprivate(__pyx_v_xi) #endif /* _OPENMP */ for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_8; __pyx_t_7++){ { - __pyx_v_i = (__pyx_t_7_squish_INT_T)(0 + 1 * __pyx_t_7); + __pyx_v_i = (__pyx_t_6squish_4core_INT_T)(0 + 1 * __pyx_t_7); /* Initialize private variables to invalid values */ - __pyx_v_e_area = ((__pyx_t_7_squish_FLOAT_T)__PYX_NAN()); - __pyx_v_j = ((__pyx_t_7_squish_INT_T)0xbad0bad0); - __pyx_v_la_mag = ((__pyx_t_7_squish_FLOAT_T)__PYX_NAN()); + __pyx_v_area_p = ((__pyx_t_6squish_4core_FLOAT_T)__PYX_NAN()); + __pyx_v_j = ((__pyx_t_6squish_4core_INT_T)0xbad0bad0); + __pyx_v_la_mag = ((__pyx_t_6squish_4core_FLOAT_T)__PYX_NAN()); - /* "squish/_squish/voronoi_dcel.pyx":538 - * cdef FLOAT_T e_area, la_mag - * for i in prange(self.sites.shape[0], nogil=True): - * xi = init.Site(i, &info) # <<<<<<<<<<<<<< - * em = xi.edge(&xi) - * for j in range(xi.edge_num(&xi)): + /* "squish/voronoi.pyx":548 + * cdef FLOAT_T area_p, la_mag + * for i in prange(self.sites.shape[0], nogil=True): + * xi = _Site(i, &info) # <<<<<<<<<<<<<< + * centroid = _Vector2D(0, 0) + * em = xi.edge(&xi) */ - __pyx_v_xi = __pyx_v_7_squish_init.Site(__pyx_v_i, (&__pyx_v_info)); + __pyx_v_xi = __pyx_f_6squish_7voronoi__Site(__pyx_v_i, (&__pyx_v_info)); - /* "squish/_squish/voronoi_dcel.pyx":539 - * for i in prange(self.sites.shape[0], nogil=True): - * xi = init.Site(i, &info) - * em = xi.edge(&xi) # <<<<<<<<<<<<<< - * for j in range(xi.edge_num(&xi)): - * ep = em.next(&em) + /* "squish/voronoi.pyx":549 + * for i in prange(self.sites.shape[0], nogil=True): + * xi = _Site(i, &info) + * centroid = _Vector2D(0, 0) # <<<<<<<<<<<<<< + * em = xi.edge(&xi) + * j = 0 + */ + __pyx_v_centroid = __pyx_f_6squish_4core__Vector2D(0.0, 0.0); + + /* "squish/voronoi.pyx":550 + * xi = _Site(i, &info) + * centroid = _Vector2D(0, 0) + * em = xi.edge(&xi) # <<<<<<<<<<<<<< + * j = 0 + * while j < xi.edge_num(&xi): */ __pyx_v_em = __pyx_v_xi.edge((&__pyx_v_xi)); - /* "squish/_squish/voronoi_dcel.pyx":540 - * xi = init.Site(i, &info) - * em = xi.edge(&xi) - * for j in range(xi.edge_num(&xi)): # <<<<<<<<<<<<<< - * ep = em.next(&em) - * p, q = em.origin(&em), ep.origin(&ep) + /* "squish/voronoi.pyx":551 + * centroid = _Vector2D(0, 0) + * em = xi.edge(&xi) + * j = 0 # <<<<<<<<<<<<<< + * while j < xi.edge_num(&xi): + * ep = em.next(&em) */ - __pyx_t_9 = __pyx_v_xi.edge_num((&__pyx_v_xi)); - __pyx_t_10 = __pyx_t_9; - for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) { - __pyx_v_j = __pyx_t_11; + __pyx_v_j = 0; - /* "squish/_squish/voronoi_dcel.pyx":541 - * em = xi.edge(&xi) - * for j in range(xi.edge_num(&xi)): - * ep = em.next(&em) # <<<<<<<<<<<<<< - * p, q = em.origin(&em), ep.origin(&ep) - * la, da = q.copy.vsub(&q, p), p.copy.vsub(&p, xi.vec(&xi)) # vp - vm, vm - xi + /* "squish/voronoi.pyx":552 + * em = xi.edge(&xi) + * j = 0 + * while j < xi.edge_num(&xi): # <<<<<<<<<<<<<< + * ep = em.next(&em) + * p, q = em.origin(&em), ep.origin(&ep) + */ + while (1) { + __pyx_t_9 = ((__pyx_v_j < __pyx_v_xi.edge_num((&__pyx_v_xi))) != 0); + if (!__pyx_t_9) break; + + /* "squish/voronoi.pyx":553 + * j = 0 + * while j < xi.edge_num(&xi): + * ep = em.next(&em) # <<<<<<<<<<<<<< + * p, q = em.origin(&em), ep.origin(&ep) + * # vp - vm, vm - xi */ __pyx_v_ep = __pyx_v_em.next((&__pyx_v_em)); - /* "squish/_squish/voronoi_dcel.pyx":542 - * for j in range(xi.edge_num(&xi)): - * ep = em.next(&em) - * p, q = em.origin(&em), ep.origin(&ep) # <<<<<<<<<<<<<< - * la, da = q.copy.vsub(&q, p), p.copy.vsub(&p, xi.vec(&xi)) # vp - vm, vm - xi - * + /* "squish/voronoi.pyx":554 + * while j < xi.edge_num(&xi): + * ep = em.next(&em) + * p, q = em.origin(&em), ep.origin(&ep) # <<<<<<<<<<<<<< + * # vp - vm, vm - xi + * la, da = q.copy.vsub(&q, p), p.copy.vsub(&p, xi.vec(&xi)) */ - __pyx_t_12 = __pyx_v_em.origin((&__pyx_v_em)); - __pyx_t_13 = __pyx_v_ep.origin((&__pyx_v_ep)); - __pyx_v_p = __pyx_t_12; - __pyx_v_q = __pyx_t_13; + __pyx_t_10 = __pyx_v_em.origin((&__pyx_v_em)); + __pyx_t_11 = __pyx_v_ep.origin((&__pyx_v_ep)); + __pyx_v_p = __pyx_t_10; + __pyx_v_q = __pyx_t_11; - /* "squish/_squish/voronoi_dcel.pyx":543 - * ep = em.next(&em) - * p, q = em.origin(&em), ep.origin(&ep) - * la, da = q.copy.vsub(&q, p), p.copy.vsub(&p, xi.vec(&xi)) # vp - vm, vm - xi # <<<<<<<<<<<<<< - * - * la_mag = la.mag(&la) + /* "squish/voronoi.pyx":556 + * p, q = em.origin(&em), ep.origin(&ep) + * # vp - vm, vm - xi + * la, da = q.copy.vsub(&q, p), p.copy.vsub(&p, xi.vec(&xi)) # <<<<<<<<<<<<<< + * la_mag = la.mag(&la) + * area_p = la.dot(&la, da.rot(&da)) */ - __pyx_t_13 = __pyx_v_q.copy.vsub((&__pyx_v_q), __pyx_v_p); - __pyx_t_12 = __pyx_v_p.copy.vsub((&__pyx_v_p), __pyx_v_xi.vec((&__pyx_v_xi))); - __pyx_v_la = __pyx_t_13; - __pyx_v_da = __pyx_t_12; + __pyx_t_11 = __pyx_v_q.copy.vsub((&__pyx_v_q), __pyx_v_p); + __pyx_t_10 = __pyx_v_p.copy.vsub((&__pyx_v_p), __pyx_v_xi.vec((&__pyx_v_xi))); + __pyx_v_la = __pyx_t_11; + __pyx_v_da = __pyx_t_10; - /* "squish/_squish/voronoi_dcel.pyx":545 - * la, da = q.copy.vsub(&q, p), p.copy.vsub(&p, xi.vec(&xi)) # vp - vm, vm - xi - * - * la_mag = la.mag(&la) # <<<<<<<<<<<<<< - * e_area = la.dot(&la, da.rot(&da)) - * Rla = la.rot(&la) + /* "squish/voronoi.pyx":557 + * # vp - vm, vm - xi + * la, da = q.copy.vsub(&q, p), p.copy.vsub(&p, xi.vec(&xi)) + * la_mag = la.mag(&la) # <<<<<<<<<<<<<< + * area_p = la.dot(&la, da.rot(&da)) + * Rla = la.rot(&la) */ __pyx_v_la_mag = __pyx_v_la.mag((&__pyx_v_la)); - /* "squish/_squish/voronoi_dcel.pyx":546 - * - * la_mag = la.mag(&la) - * e_area = la.dot(&la, da.rot(&da)) # <<<<<<<<<<<<<< - * Rla = la.rot(&la) + /* "squish/voronoi.pyx":558 + * la, da = q.copy.vsub(&q, p), p.copy.vsub(&p, xi.vec(&xi)) + * la_mag = la.mag(&la) + * area_p = la.dot(&la, da.rot(&da)) # <<<<<<<<<<<<<< + * Rla = la.rot(&la) * */ - __pyx_v_e_area = __pyx_v_la.dot((&__pyx_v_la), __pyx_v_da.rot((&__pyx_v_da))); + __pyx_v_area_p = __pyx_v_la.dot((&__pyx_v_la), __pyx_v_da.rot((&__pyx_v_da))); - /* "squish/_squish/voronoi_dcel.pyx":547 - * la_mag = la.mag(&la) - * e_area = la.dot(&la, da.rot(&da)) - * Rla = la.rot(&la) # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":559 + * la_mag = la.mag(&la) + * area_p = la.dot(&la, da.rot(&da)) + * Rla = la.rot(&la) # <<<<<<<<<<<<<< * - * em.cache.la(&em, la) + * # Calculating centroid. */ __pyx_v_Rla = __pyx_v_la.rot((&__pyx_v_la)); - /* "squish/_squish/voronoi_dcel.pyx":549 - * Rla = la.rot(&la) + /* "squish/voronoi.pyx":562 * - * em.cache.la(&em, la) # <<<<<<<<<<<<<< - * em.cache.la_mag(&em, la_mag) - * em.cache.da(&em, da) + * # Calculating centroid. + * cent_part = p.copy.vadd(&p, q) # <<<<<<<<<<<<<< + * cent_part.self.vadd(¢_part, xi.vec(&xi)) + * centroid.self.vadd(¢roid, cent_part.copy.smul(¢_part, area_p)) + */ + __pyx_v_cent_part = __pyx_v_p.copy.vadd((&__pyx_v_p), __pyx_v_q); + + /* "squish/voronoi.pyx":563 + * # Calculating centroid. + * cent_part = p.copy.vadd(&p, q) + * cent_part.self.vadd(¢_part, xi.vec(&xi)) # <<<<<<<<<<<<<< + * centroid.self.vadd(¢roid, cent_part.copy.smul(¢_part, area_p)) + * + */ + (void)(__pyx_v_cent_part.self.vadd((&__pyx_v_cent_part), __pyx_v_xi.vec((&__pyx_v_xi)))); + + /* "squish/voronoi.pyx":564 + * cent_part = p.copy.vadd(&p, q) + * cent_part.self.vadd(¢_part, xi.vec(&xi)) + * centroid.self.vadd(¢roid, cent_part.copy.smul(¢_part, area_p)) # <<<<<<<<<<<<<< + * + * # Caching + */ + (void)(__pyx_v_centroid.self.vadd((&__pyx_v_centroid), __pyx_v_cent_part.copy.smul((&__pyx_v_cent_part), __pyx_v_area_p))); + + /* "squish/voronoi.pyx":567 + * + * # Caching + * em.cache.la(&em, la) # <<<<<<<<<<<<<< + * em.cache.la_mag(&em, la_mag) + * em.cache.da(&em, da) */ (void)(__pyx_v_em.cache->la((&__pyx_v_em), __pyx_v_la)); - /* "squish/_squish/voronoi_dcel.pyx":550 - * - * em.cache.la(&em, la) - * em.cache.la_mag(&em, la_mag) # <<<<<<<<<<<<<< - * em.cache.da(&em, da) - * em.cache.da_mag(&em, da.mag(&da)) + /* "squish/voronoi.pyx":568 + * # Caching + * em.cache.la(&em, la) + * em.cache.la_mag(&em, la_mag) # <<<<<<<<<<<<<< + * em.cache.da(&em, da) + * em.cache.da_mag(&em, da.mag(&da)) */ (void)(__pyx_v_em.cache->la_mag((&__pyx_v_em), __pyx_v_la_mag)); - /* "squish/_squish/voronoi_dcel.pyx":551 - * em.cache.la(&em, la) - * em.cache.la_mag(&em, la_mag) - * em.cache.da(&em, da) # <<<<<<<<<<<<<< - * em.cache.da_mag(&em, da.mag(&da)) - * em.cache.xij(&em, Rla.copy.smul(&Rla, -e_area/la.dot(&la, la))) + /* "squish/voronoi.pyx":569 + * em.cache.la(&em, la) + * em.cache.la_mag(&em, la_mag) + * em.cache.da(&em, da) # <<<<<<<<<<<<<< + * em.cache.da_mag(&em, da.mag(&da)) + * em.cache.area_p(&em, area_p) */ (void)(__pyx_v_em.cache->da((&__pyx_v_em), __pyx_v_da)); - /* "squish/_squish/voronoi_dcel.pyx":552 - * em.cache.la_mag(&em, la_mag) - * em.cache.da(&em, da) - * em.cache.da_mag(&em, da.mag(&da)) # <<<<<<<<<<<<<< - * em.cache.xij(&em, Rla.copy.smul(&Rla, -e_area/la.dot(&la, la))) - * + /* "squish/voronoi.pyx":570 + * em.cache.la_mag(&em, la_mag) + * em.cache.da(&em, da) + * em.cache.da_mag(&em, da.mag(&da)) # <<<<<<<<<<<<<< + * em.cache.area_p(&em, area_p) + * em.cache.xij(&em, Rla.copy.smul(&Rla, -area_p/la.dot(&la, la))) */ (void)(__pyx_v_em.cache->da_mag((&__pyx_v_em), __pyx_v_da.mag((&__pyx_v_da)))); - /* "squish/_squish/voronoi_dcel.pyx":553 - * em.cache.da(&em, da) - * em.cache.da_mag(&em, da.mag(&da)) - * em.cache.xij(&em, Rla.copy.smul(&Rla, -e_area/la.dot(&la, la))) # <<<<<<<<<<<<<< - * - * if info.edge_cache_map.iF != -1: - */ - (void)(__pyx_v_em.cache->xij((&__pyx_v_em), __pyx_v_Rla.copy.smul((&__pyx_v_Rla), ((-__pyx_v_e_area) / __pyx_v_la.dot((&__pyx_v_la), __pyx_v_la))))); - - /* "squish/_squish/voronoi_dcel.pyx":555 - * em.cache.xij(&em, Rla.copy.smul(&Rla, -e_area/la.dot(&la, la))) - * - * if info.edge_cache_map.iF != -1: # <<<<<<<<<<<<<< - * em.cache.F(&em, e_area) + /* "squish/voronoi.pyx":571 + * em.cache.da(&em, da) + * em.cache.da_mag(&em, da.mag(&da)) + * em.cache.area_p(&em, area_p) # <<<<<<<<<<<<<< + * em.cache.xij(&em, Rla.copy.smul(&Rla, -area_p/la.dot(&la, la))) * */ - __pyx_t_14 = ((__pyx_v_info.edge_cache_map->iF != -1LL) != 0); - if (__pyx_t_14) { + (void)(__pyx_v_em.cache->area_p((&__pyx_v_em), __pyx_v_area_p)); - /* "squish/_squish/voronoi_dcel.pyx":556 + /* "squish/voronoi.pyx":572 + * em.cache.da_mag(&em, da.mag(&da)) + * em.cache.area_p(&em, area_p) + * em.cache.xij(&em, Rla.copy.smul(&Rla, -area_p/la.dot(&la, la))) # <<<<<<<<<<<<<< * - * if info.edge_cache_map.iF != -1: - * em.cache.F(&em, e_area) # <<<<<<<<<<<<<< - * - * area[i] += e_area + * area[i] += area_p */ - (void)(__pyx_v_em.cache->F((&__pyx_v_em), __pyx_v_e_area)); + (void)(__pyx_v_em.cache->xij((&__pyx_v_em), __pyx_v_Rla.copy.smul((&__pyx_v_Rla), ((-__pyx_v_area_p) / __pyx_v_la.dot((&__pyx_v_la), __pyx_v_la))))); - /* "squish/_squish/voronoi_dcel.pyx":555 - * em.cache.xij(&em, Rla.copy.smul(&Rla, -e_area/la.dot(&la, la))) + /* "squish/voronoi.pyx":574 + * em.cache.xij(&em, Rla.copy.smul(&Rla, -area_p/la.dot(&la, la))) * - * if info.edge_cache_map.iF != -1: # <<<<<<<<<<<<<< - * em.cache.F(&em, e_area) + * area[i] += area_p # <<<<<<<<<<<<<< + * perim[i] += la_mag * */ - } + __pyx_t_12 = __pyx_v_i; + *((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_area.data + __pyx_t_12 * __pyx_v_area.strides[0]) )) += __pyx_v_area_p; - /* "squish/_squish/voronoi_dcel.pyx":558 - * em.cache.F(&em, e_area) + /* "squish/voronoi.pyx":575 * - * area[i] += e_area # <<<<<<<<<<<<<< - * perim[i] += la_mag + * area[i] += area_p + * perim[i] += la_mag # <<<<<<<<<<<<<< * + * em = em.next(&em) */ - __pyx_t_15 = __pyx_v_i; - *((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_area.data + __pyx_t_15 * __pyx_v_area.strides[0]) )) += __pyx_v_e_area; + __pyx_t_12 = __pyx_v_i; + *((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_perim.data + __pyx_t_12 * __pyx_v_perim.strides[0]) )) += __pyx_v_la_mag; - /* "squish/_squish/voronoi_dcel.pyx":559 + /* "squish/voronoi.pyx":577 + * perim[i] += la_mag * - * area[i] += e_area - * perim[i] += la_mag # <<<<<<<<<<<<<< + * em = em.next(&em) # <<<<<<<<<<<<<< + * j = j + 1 * - * em = em.next(&em) - */ - __pyx_t_15 = __pyx_v_i; - *((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_perim.data + __pyx_t_15 * __pyx_v_perim.strides[0]) )) += __pyx_v_la_mag; - - /* "squish/_squish/voronoi_dcel.pyx":561 - * perim[i] += la_mag - * - * em = em.next(&em) # <<<<<<<<<<<<<< - * - * xi.cache.area(&xi, area[i]/2) */ __pyx_v_em = __pyx_v_em.next((&__pyx_v_em)); + + /* "squish/voronoi.pyx":578 + * + * em = em.next(&em) + * j = j + 1 # <<<<<<<<<<<<<< + * + * xi.cache.area(&xi, area[i]/2) + */ + __pyx_v_j = (__pyx_v_j + 1); } - /* "squish/_squish/voronoi_dcel.pyx":563 - * em = em.next(&em) + /* "squish/voronoi.pyx":580 + * j = j + 1 * - * xi.cache.area(&xi, area[i]/2) # <<<<<<<<<<<<<< - * xi.cache.perim(&xi, perim[i]) - * xi.cache.isoparam(&xi, 2*PI*area[i]/(perim[i]*perim[i])) + * xi.cache.area(&xi, area[i]/2) # <<<<<<<<<<<<<< + * xi.cache.perim(&xi, perim[i]) + * xi.cache.isoparam(&xi, 2*PI*area[i]/(perim[i]**2)) */ - __pyx_t_9 = __pyx_v_i; - (void)(__pyx_v_xi.cache->area((&__pyx_v_xi), ((*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_area.data + __pyx_t_9 * __pyx_v_area.strides[0]) ))) / 2.0))); + __pyx_t_12 = __pyx_v_i; + (void)(__pyx_v_xi.cache->area((&__pyx_v_xi), ((*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_area.data + __pyx_t_12 * __pyx_v_area.strides[0]) ))) / 2.0))); - /* "squish/_squish/voronoi_dcel.pyx":564 - * - * xi.cache.area(&xi, area[i]/2) - * xi.cache.perim(&xi, perim[i]) # <<<<<<<<<<<<<< - * xi.cache.isoparam(&xi, 2*PI*area[i]/(perim[i]*perim[i])) + /* "squish/voronoi.pyx":581 * + * xi.cache.area(&xi, area[i]/2) + * xi.cache.perim(&xi, perim[i]) # <<<<<<<<<<<<<< + * xi.cache.isoparam(&xi, 2*PI*area[i]/(perim[i]**2)) + * xi.cache.centroid(&xi, centroid.copy.sdiv(¢roid, 3*area[i])) */ - __pyx_t_9 = __pyx_v_i; - (void)(__pyx_v_xi.cache->perim((&__pyx_v_xi), (*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_perim.data + __pyx_t_9 * __pyx_v_perim.strides[0]) ))))); + __pyx_t_12 = __pyx_v_i; + (void)(__pyx_v_xi.cache->perim((&__pyx_v_xi), (*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_perim.data + __pyx_t_12 * __pyx_v_perim.strides[0]) ))))); - /* "squish/_squish/voronoi_dcel.pyx":565 - * xi.cache.area(&xi, area[i]/2) - * xi.cache.perim(&xi, perim[i]) - * xi.cache.isoparam(&xi, 2*PI*area[i]/(perim[i]*perim[i])) # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":582 + * xi.cache.area(&xi, area[i]/2) + * xi.cache.perim(&xi, perim[i]) + * xi.cache.isoparam(&xi, 2*PI*area[i]/(perim[i]**2)) # <<<<<<<<<<<<<< + * xi.cache.centroid(&xi, centroid.copy.sdiv(¢roid, 3*area[i])) + * + */ + __pyx_t_12 = __pyx_v_i; + __pyx_t_13 = __pyx_v_i; + (void)(__pyx_v_xi.cache->isoparam((&__pyx_v_xi), (((2.0 * M_PI) * (*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_area.data + __pyx_t_12 * __pyx_v_area.strides[0]) )))) / pow((*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_perim.data + __pyx_t_13 * __pyx_v_perim.strides[0]) ))), 2.0)))); + + /* "squish/voronoi.pyx":583 + * xi.cache.perim(&xi, perim[i]) + * xi.cache.isoparam(&xi, 2*PI*area[i]/(perim[i]**2)) + * xi.cache.centroid(&xi, centroid.copy.sdiv(¢roid, 3*area[i])) # <<<<<<<<<<<<<< * * */ - __pyx_t_9 = __pyx_v_i; - __pyx_t_10 = __pyx_v_i; - __pyx_t_11 = __pyx_v_i; - (void)(__pyx_v_xi.cache->isoparam((&__pyx_v_xi), (((2.0 * M_PI) * (*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_area.data + __pyx_t_9 * __pyx_v_area.strides[0]) )))) / ((*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_perim.data + __pyx_t_10 * __pyx_v_perim.strides[0]) ))) * (*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_perim.data + __pyx_t_11 * __pyx_v_perim.strides[0]) ))))))); + __pyx_t_13 = __pyx_v_i; + (void)(__pyx_v_xi.cache->centroid((&__pyx_v_xi), __pyx_v_centroid.copy.sdiv((&__pyx_v_centroid), (3.0 * (*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ (__pyx_v_area.data + __pyx_t_13 * __pyx_v_area.strides[0]) ))))))); } } } @@ -12629,12 +9260,12 @@ static void __pyx_f_7_squish_16VoronoiContainer_common_cache(struct __pyx_obj_7_ #endif } - /* "squish/_squish/voronoi_dcel.pyx":537 - * cdef INT_T i, j - * cdef FLOAT_T e_area, la_mag - * for i in prange(self.sites.shape[0], nogil=True): # <<<<<<<<<<<<<< - * xi = init.Site(i, &info) - * em = xi.edge(&xi) + /* "squish/voronoi.pyx":547 + * cdef INT_T i, j + * cdef FLOAT_T area_p, la_mag + * for i in prange(self.sites.shape[0], nogil=True): # <<<<<<<<<<<<<< + * xi = _Site(i, &info) + * centroid = _Vector2D(0, 0) */ /*finally:*/ { /*normal exit:*/{ @@ -12655,12 +9286,12 @@ static void __pyx_f_7_squish_16VoronoiContainer_common_cache(struct __pyx_obj_7_ } } - /* "squish/_squish/voronoi_dcel.pyx":524 + /* "squish/voronoi.pyx":534 * * - * cdef void common_cache(VoronoiContainer self) except *: # <<<<<<<<<<<<<< - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + * cdef void common_cache(VoronoiContainer self) except *: # <<<<<<<<<<<<<< + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) */ /* function exit code */ @@ -12671,157 +9302,157 @@ static void __pyx_f_7_squish_16VoronoiContainer_common_cache(struct __pyx_obj_7_ __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1); - __Pyx_AddTraceback("_squish.VoronoiContainer.common_cache", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.common_cache", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __PYX_XDEC_MEMVIEW(&__pyx_v_area, 1); __PYX_XDEC_MEMVIEW(&__pyx_v_perim, 1); __Pyx_RefNannyFinishContext(); } -/* "squish/_squish/voronoi_dcel.pyx":569 +/* "squish/voronoi.pyx":587 * - * @staticmethod - * cdef inline Matrix2x2 calc_H(HalfEdge em, HalfEdge ep) nogil: # <<<<<<<<<<<<<< - * cdef Vector2D xmv, xpv, im, mp, right, Rpm, Rim, f - * cdef Matrix2x2 h + * @staticmethod + * cdef inline Matrix2x2 calc_H(HalfEdge em, HalfEdge ep) nogil: # <<<<<<<<<<<<<< + * cdef Vector2D xmv, xpv, im, mp, right, Rpm, Rim, f + * cdef Matrix2x2 h */ -static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_16VoronoiContainer_calc_H(__pyx_t_7_squish_HalfEdge __pyx_v_em, __pyx_t_7_squish_HalfEdge __pyx_v_ep) { - __pyx_t_7_squish_Vector2D __pyx_v_xmv; - __pyx_t_7_squish_Vector2D __pyx_v_xpv; - __pyx_t_7_squish_Vector2D __pyx_v_im; - __pyx_t_7_squish_Vector2D __pyx_v_mp; - __pyx_t_7_squish_Vector2D __pyx_v_right; - __pyx_t_7_squish_Vector2D __pyx_v_Rpm; - __pyx_t_7_squish_Vector2D __pyx_v_Rim; - __pyx_t_7_squish_Vector2D __pyx_v_f; - __pyx_t_7_squish_Matrix2x2 __pyx_v_h; - __pyx_t_7_squish_FLOAT_T __pyx_v_im2; - __pyx_t_7_squish_FLOAT_T __pyx_v_mp2; - __pyx_t_7_squish_Matrix2x2 __pyx_r; - __pyx_t_7_squish_Vector2D __pyx_t_1; - __pyx_t_7_squish_Vector2D __pyx_t_2; - __pyx_t_7_squish_FLOAT_T __pyx_t_3; - __pyx_t_7_squish_FLOAT_T __pyx_t_4; +static CYTHON_INLINE __pyx_t_6squish_4core_Matrix2x2 __pyx_f_6squish_7voronoi_16VoronoiContainer_calc_H(__pyx_t_6squish_7voronoi_HalfEdge __pyx_v_em, __pyx_t_6squish_7voronoi_HalfEdge __pyx_v_ep) { + __pyx_t_6squish_4core_Vector2D __pyx_v_xmv; + __pyx_t_6squish_4core_Vector2D __pyx_v_xpv; + __pyx_t_6squish_4core_Vector2D __pyx_v_im; + __pyx_t_6squish_4core_Vector2D __pyx_v_mp; + __pyx_t_6squish_4core_Vector2D __pyx_v_right; + __pyx_t_6squish_4core_Vector2D __pyx_v_Rpm; + __pyx_t_6squish_4core_Vector2D __pyx_v_Rim; + __pyx_t_6squish_4core_Vector2D __pyx_v_f; + __pyx_t_6squish_4core_Matrix2x2 __pyx_v_h; + __pyx_t_6squish_4core_FLOAT_T __pyx_v_im2; + __pyx_t_6squish_4core_FLOAT_T __pyx_v_mp2; + __pyx_t_6squish_4core_Matrix2x2 __pyx_r; + __pyx_t_6squish_4core_Vector2D __pyx_t_1; + __pyx_t_6squish_4core_Vector2D __pyx_t_2; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_3; + __pyx_t_6squish_4core_FLOAT_T __pyx_t_4; - /* "squish/_squish/voronoi_dcel.pyx":575 + /* "squish/voronoi.pyx":593 * - * # Vectors from xi to xm and xp. - * xmv, xpv = em.cache.xij(&em, NAN_VECTOR), ep.cache.xij(&ep, NAN_VECTOR) # <<<<<<<<<<<<<< - * im, mp = xmv.copy.neg(&xmv), xmv.copy.vsub(&xmv, xpv) # -xmv, xmv - xpv - * im2, mp2 = -(xmv.dot(&xmv, xmv)), xmv.dot(&xmv, xmv) - xpv.dot(&xpv, xpv) + * # Vectors from xi to xm and xp. + * xmv, xpv = em.cache.xij(&em, NAN_VECTOR), ep.cache.xij(&ep, NAN_VECTOR) # <<<<<<<<<<<<<< + * im, mp = xmv.copy.neg(&xmv), xmv.copy.vsub(&xmv, xpv) # -xmv, xmv - xpv + * im2, mp2 = -(xmv.dot(&xmv, xmv)), xmv.dot(&xmv, xmv) - xpv.dot(&xpv, xpv) */ - __pyx_t_1 = __pyx_v_em.cache->xij((&__pyx_v_em), __pyx_v_7_squish_NAN_VECTOR); - __pyx_t_2 = __pyx_v_ep.cache->xij((&__pyx_v_ep), __pyx_v_7_squish_NAN_VECTOR); + __pyx_t_1 = __pyx_v_em.cache->xij((&__pyx_v_em), __pyx_v_6squish_7voronoi_NAN_VECTOR); + __pyx_t_2 = __pyx_v_ep.cache->xij((&__pyx_v_ep), __pyx_v_6squish_7voronoi_NAN_VECTOR); __pyx_v_xmv = __pyx_t_1; __pyx_v_xpv = __pyx_t_2; - /* "squish/_squish/voronoi_dcel.pyx":576 - * # Vectors from xi to xm and xp. - * xmv, xpv = em.cache.xij(&em, NAN_VECTOR), ep.cache.xij(&ep, NAN_VECTOR) - * im, mp = xmv.copy.neg(&xmv), xmv.copy.vsub(&xmv, xpv) # -xmv, xmv - xpv # <<<<<<<<<<<<<< - * im2, mp2 = -(xmv.dot(&xmv, xmv)), xmv.dot(&xmv, xmv) - xpv.dot(&xpv, xpv) - * # (-xmv*xmv, xmv*xmv - xpv*xpv) + /* "squish/voronoi.pyx":594 + * # Vectors from xi to xm and xp. + * xmv, xpv = em.cache.xij(&em, NAN_VECTOR), ep.cache.xij(&ep, NAN_VECTOR) + * im, mp = xmv.copy.neg(&xmv), xmv.copy.vsub(&xmv, xpv) # -xmv, xmv - xpv # <<<<<<<<<<<<<< + * im2, mp2 = -(xmv.dot(&xmv, xmv)), xmv.dot(&xmv, xmv) - xpv.dot(&xpv, xpv) + * # (-xmv*xmv, xmv*xmv - xpv*xpv) */ __pyx_t_2 = __pyx_v_xmv.copy.neg((&__pyx_v_xmv)); __pyx_t_1 = __pyx_v_xmv.copy.vsub((&__pyx_v_xmv), __pyx_v_xpv); __pyx_v_im = __pyx_t_2; __pyx_v_mp = __pyx_t_1; - /* "squish/_squish/voronoi_dcel.pyx":577 - * xmv, xpv = em.cache.xij(&em, NAN_VECTOR), ep.cache.xij(&ep, NAN_VECTOR) - * im, mp = xmv.copy.neg(&xmv), xmv.copy.vsub(&xmv, xpv) # -xmv, xmv - xpv - * im2, mp2 = -(xmv.dot(&xmv, xmv)), xmv.dot(&xmv, xmv) - xpv.dot(&xpv, xpv) # <<<<<<<<<<<<<< - * # (-xmv*xmv, xmv*xmv - xpv*xpv) - * right = init.Vector2D(im2, mp2) + /* "squish/voronoi.pyx":595 + * xmv, xpv = em.cache.xij(&em, NAN_VECTOR), ep.cache.xij(&ep, NAN_VECTOR) + * im, mp = xmv.copy.neg(&xmv), xmv.copy.vsub(&xmv, xpv) # -xmv, xmv - xpv + * im2, mp2 = -(xmv.dot(&xmv, xmv)), xmv.dot(&xmv, xmv) - xpv.dot(&xpv, xpv) # <<<<<<<<<<<<<< + * # (-xmv*xmv, xmv*xmv - xpv*xpv) + * right = _Vector2D(im2, mp2) */ __pyx_t_3 = (-__pyx_v_xmv.dot((&__pyx_v_xmv), __pyx_v_xmv)); __pyx_t_4 = (__pyx_v_xmv.dot((&__pyx_v_xmv), __pyx_v_xmv) - __pyx_v_xpv.dot((&__pyx_v_xpv), __pyx_v_xpv)); __pyx_v_im2 = __pyx_t_3; __pyx_v_mp2 = __pyx_t_4; - /* "squish/_squish/voronoi_dcel.pyx":579 - * im2, mp2 = -(xmv.dot(&xmv, xmv)), xmv.dot(&xmv, xmv) - xpv.dot(&xpv, xpv) - * # (-xmv*xmv, xmv*xmv - xpv*xpv) - * right = init.Vector2D(im2, mp2) # <<<<<<<<<<<<<< - * Rpm, Rim = R.vecmul(&R, mp.copy.neg(&mp)), im.rot(&im) # R*-mp, R*im + /* "squish/voronoi.pyx":597 + * im2, mp2 = -(xmv.dot(&xmv, xmv)), xmv.dot(&xmv, xmv) - xpv.dot(&xpv, xpv) + * # (-xmv*xmv, xmv*xmv - xpv*xpv) + * right = _Vector2D(im2, mp2) # <<<<<<<<<<<<<< + * Rpm, Rim = R.vecmul(&R, mp.copy.neg(&mp)), im.rot(&im) # R*-mp, R*im * */ - __pyx_v_right = __pyx_v_7_squish_init.Vector2D(__pyx_v_im2, __pyx_v_mp2); + __pyx_v_right = __pyx_f_6squish_4core__Vector2D(__pyx_v_im2, __pyx_v_mp2); - /* "squish/_squish/voronoi_dcel.pyx":580 - * # (-xmv*xmv, xmv*xmv - xpv*xpv) - * right = init.Vector2D(im2, mp2) - * Rpm, Rim = R.vecmul(&R, mp.copy.neg(&mp)), im.rot(&im) # R*-mp, R*im # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":598 + * # (-xmv*xmv, xmv*xmv - xpv*xpv) + * right = _Vector2D(im2, mp2) + * Rpm, Rim = R.vecmul(&R, mp.copy.neg(&mp)), im.rot(&im) # R*-mp, R*im # <<<<<<<<<<<<<< * - * h = init.Matrix2x2(Rpm.x, Rim.x, Rpm.y, Rim.y) # [Rpm | Rim], h is temporary. + * h = _Matrix2x2(Rpm.x, Rim.x, Rpm.y, Rim.y) # [Rpm | Rim], h is temporary. */ - __pyx_t_1 = __pyx_v_7_squish_R.vecmul((&__pyx_v_7_squish_R), __pyx_v_mp.copy.neg((&__pyx_v_mp))); + __pyx_t_1 = __pyx_v_6squish_7voronoi_R.vecmul((&__pyx_v_6squish_7voronoi_R), __pyx_v_mp.copy.neg((&__pyx_v_mp))); __pyx_t_2 = __pyx_v_im.rot((&__pyx_v_im)); __pyx_v_Rpm = __pyx_t_1; __pyx_v_Rim = __pyx_t_2; - /* "squish/_squish/voronoi_dcel.pyx":582 - * Rpm, Rim = R.vecmul(&R, mp.copy.neg(&mp)), im.rot(&im) # R*-mp, R*im + /* "squish/voronoi.pyx":600 + * Rpm, Rim = R.vecmul(&R, mp.copy.neg(&mp)), im.rot(&im) # R*-mp, R*im * - * h = init.Matrix2x2(Rpm.x, Rim.x, Rpm.y, Rim.y) # [Rpm | Rim], h is temporary. # <<<<<<<<<<<<<< - * f = h.vecmul(&h, right) # [Rpm | Rim]*right - * h = R.copy.smul(&R, mp2*(2*mp.dot(&mp, Rim))) # fp*g, g is a scalar. + * h = _Matrix2x2(Rpm.x, Rim.x, Rpm.y, Rim.y) # [Rpm | Rim], h is temporary. # <<<<<<<<<<<<<< + * f = h.vecmul(&h, right) # [Rpm | Rim]*right + * h = R.copy.smul(&R, mp2*(2*mp.dot(&mp, Rim))) # fp*g, g is a scalar. */ - __pyx_v_h = __pyx_v_7_squish_init.Matrix2x2(__pyx_v_Rpm.x, __pyx_v_Rim.x, __pyx_v_Rpm.y, __pyx_v_Rim.y); + __pyx_v_h = __pyx_f_6squish_4core__Matrix2x2(__pyx_v_Rpm.x, __pyx_v_Rim.x, __pyx_v_Rpm.y, __pyx_v_Rim.y); - /* "squish/_squish/voronoi_dcel.pyx":583 + /* "squish/voronoi.pyx":601 * - * h = init.Matrix2x2(Rpm.x, Rim.x, Rpm.y, Rim.y) # [Rpm | Rim], h is temporary. - * f = h.vecmul(&h, right) # [Rpm | Rim]*right # <<<<<<<<<<<<<< - * h = R.copy.smul(&R, mp2*(2*mp.dot(&mp, Rim))) # fp*g, g is a scalar. - * # (fp*g - f*gp)/(g**2). f is a column vector, gp = 2*Rpm is a row vector. + * h = _Matrix2x2(Rpm.x, Rim.x, Rpm.y, Rim.y) # [Rpm | Rim], h is temporary. + * f = h.vecmul(&h, right) # [Rpm | Rim]*right # <<<<<<<<<<<<<< + * h = R.copy.smul(&R, mp2*(2*mp.dot(&mp, Rim))) # fp*g, g is a scalar. + * # (fp*g - f*gp)/(g**2). f is a column vector, gp = 2*Rpm is a row vector. */ __pyx_v_f = __pyx_v_h.vecmul((&__pyx_v_h), __pyx_v_right); - /* "squish/_squish/voronoi_dcel.pyx":584 - * h = init.Matrix2x2(Rpm.x, Rim.x, Rpm.y, Rim.y) # [Rpm | Rim], h is temporary. - * f = h.vecmul(&h, right) # [Rpm | Rim]*right - * h = R.copy.smul(&R, mp2*(2*mp.dot(&mp, Rim))) # fp*g, g is a scalar. # <<<<<<<<<<<<<< - * # (fp*g - f*gp)/(g**2). f is a column vector, gp = 2*Rpm is a row vector. - * h.self.msub(&h, init.Matrix2x2( + /* "squish/voronoi.pyx":602 + * h = _Matrix2x2(Rpm.x, Rim.x, Rpm.y, Rim.y) # [Rpm | Rim], h is temporary. + * f = h.vecmul(&h, right) # [Rpm | Rim]*right + * h = R.copy.smul(&R, mp2*(2*mp.dot(&mp, Rim))) # fp*g, g is a scalar. # <<<<<<<<<<<<<< + * # (fp*g - f*gp)/(g**2). f is a column vector, gp = 2*Rpm is a row vector. + * h.self.msub(&h, _Matrix2x2( */ - __pyx_v_h = __pyx_v_7_squish_R.copy.smul((&__pyx_v_7_squish_R), (__pyx_v_mp2 * (2.0 * __pyx_v_mp.dot((&__pyx_v_mp), __pyx_v_Rim)))); + __pyx_v_h = __pyx_v_6squish_7voronoi_R.copy.smul((&__pyx_v_6squish_7voronoi_R), (__pyx_v_mp2 * (2.0 * __pyx_v_mp.dot((&__pyx_v_mp), __pyx_v_Rim)))); - /* "squish/_squish/voronoi_dcel.pyx":586 - * h = R.copy.smul(&R, mp2*(2*mp.dot(&mp, Rim))) # fp*g, g is a scalar. - * # (fp*g - f*gp)/(g**2). f is a column vector, gp = 2*Rpm is a row vector. - * h.self.msub(&h, init.Matrix2x2( # <<<<<<<<<<<<<< - * f.x*2*Rpm.x, f.x*2*Rpm.y, f.y*2*Rpm.x, f.y*2*Rpm.y - * )) + /* "squish/voronoi.pyx":604 + * h = R.copy.smul(&R, mp2*(2*mp.dot(&mp, Rim))) # fp*g, g is a scalar. + * # (fp*g - f*gp)/(g**2). f is a column vector, gp = 2*Rpm is a row vector. + * h.self.msub(&h, _Matrix2x2( # <<<<<<<<<<<<<< + * f.x*2*Rpm.x, f.x*2*Rpm.y, f.y*2*Rpm.x, f.y*2*Rpm.y + * )) */ - (void)(__pyx_v_h.self.msub((&__pyx_v_h), __pyx_v_7_squish_init.Matrix2x2(((__pyx_v_f.x * 2.0) * __pyx_v_Rpm.x), ((__pyx_v_f.x * 2.0) * __pyx_v_Rpm.y), ((__pyx_v_f.y * 2.0) * __pyx_v_Rpm.x), ((__pyx_v_f.y * 2.0) * __pyx_v_Rpm.y)))); + (void)(__pyx_v_h.self.msub((&__pyx_v_h), __pyx_f_6squish_4core__Matrix2x2(((__pyx_v_f.x * 2.0) * __pyx_v_Rpm.x), ((__pyx_v_f.x * 2.0) * __pyx_v_Rpm.y), ((__pyx_v_f.y * 2.0) * __pyx_v_Rpm.x), ((__pyx_v_f.y * 2.0) * __pyx_v_Rpm.y)))); - /* "squish/_squish/voronoi_dcel.pyx":589 - * f.x*2*Rpm.x, f.x*2*Rpm.y, f.y*2*Rpm.x, f.y*2*Rpm.y - * )) - * h.self.sdiv(&h, (2*mp.dot(&mp, Rim))**2) # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":607 + * f.x*2*Rpm.x, f.x*2*Rpm.y, f.y*2*Rpm.x, f.y*2*Rpm.y + * )) + * h.self.sdiv(&h, (2*mp.dot(&mp, Rim))**2) # <<<<<<<<<<<<<< * - * return h + * return h */ (void)(__pyx_v_h.self.sdiv((&__pyx_v_h), pow((2.0 * __pyx_v_mp.dot((&__pyx_v_mp), __pyx_v_Rim)), 2.0))); - /* "squish/_squish/voronoi_dcel.pyx":591 - * h.self.sdiv(&h, (2*mp.dot(&mp, Rim))**2) + /* "squish/voronoi.pyx":609 + * h.self.sdiv(&h, (2*mp.dot(&mp, Rim))**2) * - * return h # <<<<<<<<<<<<<< + * return h # <<<<<<<<<<<<<< * * */ __pyx_r = __pyx_v_h; goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":569 + /* "squish/voronoi.pyx":587 * - * @staticmethod - * cdef inline Matrix2x2 calc_H(HalfEdge em, HalfEdge ep) nogil: # <<<<<<<<<<<<<< - * cdef Vector2D xmv, xpv, im, mp, right, Rpm, Rim, f - * cdef Matrix2x2 h + * @staticmethod + * cdef inline Matrix2x2 calc_H(HalfEdge em, HalfEdge ep) nogil: # <<<<<<<<<<<<<< + * cdef Vector2D xmv, xpv, im, mp, right, Rpm, Rim, f + * cdef Matrix2x2 h */ /* function exit code */ @@ -12829,15 +9460,15 @@ static CYTHON_INLINE __pyx_t_7_squish_Matrix2x2 __pyx_f_7_squish_16VoronoiContai return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":595 +/* "squish/voronoi.pyx":613 * - * @staticmethod - * cdef inline bint sign(FLOAT_T [::1] ref, FLOAT_T [::1] p, FLOAT_T [::1] q): # <<<<<<<<<<<<<< - * """ - * Outputs if p2 - self is counterclockwise of p1 - self. + * @staticmethod + * cdef inline bint sign(FLOAT_T [::1] ref, FLOAT_T [::1] p, FLOAT_T [::1] q): # <<<<<<<<<<<<<< + * """ + * Outputs if p2 - self is counterclockwise of p1 - self. */ -static CYTHON_INLINE int __pyx_f_7_squish_16VoronoiContainer_sign(__Pyx_memviewslice __pyx_v_ref, __Pyx_memviewslice __pyx_v_p, __Pyx_memviewslice __pyx_v_q) { +static CYTHON_INLINE int __pyx_f_6squish_7voronoi_16VoronoiContainer_sign(__Pyx_memviewslice __pyx_v_ref, __Pyx_memviewslice __pyx_v_p, __Pyx_memviewslice __pyx_v_q) { int __pyx_r; __Pyx_RefNannyDeclarations Py_ssize_t __pyx_t_1; @@ -12850,11 +9481,11 @@ static CYTHON_INLINE int __pyx_f_7_squish_16VoronoiContainer_sign(__Pyx_memviews Py_ssize_t __pyx_t_8; __Pyx_RefNannySetupContext("sign", 0); - /* "squish/_squish/voronoi_dcel.pyx":602 - * :return: [bool] returns if counterclockwise. - * """ - * return ((q[0] - ref[0])*-(p[1] - ref[1]) + \ # <<<<<<<<<<<<<< - * (q[1] - ref[1])*(p[0] - ref[0])) >= 0 + /* "squish/voronoi.pyx":620 + * :return: [bool] returns if counterclockwise. + * """ + * return ((q[0] - ref[0])*-(p[1] - ref[1]) + \ # <<<<<<<<<<<<<< + * (q[1] - ref[1])*(p[0] - ref[0])) >= 0 * */ __pyx_t_1 = 0; @@ -12862,34 +9493,34 @@ static CYTHON_INLINE int __pyx_f_7_squish_16VoronoiContainer_sign(__Pyx_memviews __pyx_t_3 = 1; __pyx_t_4 = 1; - /* "squish/_squish/voronoi_dcel.pyx":603 - * """ - * return ((q[0] - ref[0])*-(p[1] - ref[1]) + \ - * (q[1] - ref[1])*(p[0] - ref[0])) >= 0 # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":621 + * """ + * return ((q[0] - ref[0])*-(p[1] - ref[1]) + \ + * (q[1] - ref[1])*(p[0] - ref[0])) >= 0 # <<<<<<<<<<<<<< * - * # global ROT + * # global ROT */ __pyx_t_5 = 1; __pyx_t_6 = 1; __pyx_t_7 = 0; __pyx_t_8 = 0; - /* "squish/_squish/voronoi_dcel.pyx":602 - * :return: [bool] returns if counterclockwise. - * """ - * return ((q[0] - ref[0])*-(p[1] - ref[1]) + \ # <<<<<<<<<<<<<< - * (q[1] - ref[1])*(p[0] - ref[0])) >= 0 + /* "squish/voronoi.pyx":620 + * :return: [bool] returns if counterclockwise. + * """ + * return ((q[0] - ref[0])*-(p[1] - ref[1]) + \ # <<<<<<<<<<<<<< + * (q[1] - ref[1])*(p[0] - ref[0])) >= 0 * */ - __pyx_r = (((((*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ ((char *) (((__pyx_t_7_squish_FLOAT_T *) __pyx_v_q.data) + __pyx_t_1)) ))) - (*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ ((char *) (((__pyx_t_7_squish_FLOAT_T *) __pyx_v_ref.data) + __pyx_t_2)) )))) * (-((*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ ((char *) (((__pyx_t_7_squish_FLOAT_T *) __pyx_v_p.data) + __pyx_t_3)) ))) - (*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ ((char *) (((__pyx_t_7_squish_FLOAT_T *) __pyx_v_ref.data) + __pyx_t_4)) )))))) + (((*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ ((char *) (((__pyx_t_7_squish_FLOAT_T *) __pyx_v_q.data) + __pyx_t_5)) ))) - (*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ ((char *) (((__pyx_t_7_squish_FLOAT_T *) __pyx_v_ref.data) + __pyx_t_6)) )))) * ((*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ ((char *) (((__pyx_t_7_squish_FLOAT_T *) __pyx_v_p.data) + __pyx_t_7)) ))) - (*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ ((char *) (((__pyx_t_7_squish_FLOAT_T *) __pyx_v_ref.data) + __pyx_t_8)) )))))) >= 0.0); + __pyx_r = (((((*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ ((char *) (((__pyx_t_6squish_4core_FLOAT_T *) __pyx_v_q.data) + __pyx_t_1)) ))) - (*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ ((char *) (((__pyx_t_6squish_4core_FLOAT_T *) __pyx_v_ref.data) + __pyx_t_2)) )))) * (-((*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ ((char *) (((__pyx_t_6squish_4core_FLOAT_T *) __pyx_v_p.data) + __pyx_t_3)) ))) - (*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ ((char *) (((__pyx_t_6squish_4core_FLOAT_T *) __pyx_v_ref.data) + __pyx_t_4)) )))))) + (((*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ ((char *) (((__pyx_t_6squish_4core_FLOAT_T *) __pyx_v_q.data) + __pyx_t_5)) ))) - (*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ ((char *) (((__pyx_t_6squish_4core_FLOAT_T *) __pyx_v_ref.data) + __pyx_t_6)) )))) * ((*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ ((char *) (((__pyx_t_6squish_4core_FLOAT_T *) __pyx_v_p.data) + __pyx_t_7)) ))) - (*((__pyx_t_6squish_4core_FLOAT_T *) ( /* dim=0 */ ((char *) (((__pyx_t_6squish_4core_FLOAT_T *) __pyx_v_ref.data) + __pyx_t_8)) )))))) >= 0.0); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":595 + /* "squish/voronoi.pyx":613 * - * @staticmethod - * cdef inline bint sign(FLOAT_T [::1] ref, FLOAT_T [::1] p, FLOAT_T [::1] q): # <<<<<<<<<<<<<< - * """ - * Outputs if p2 - self is counterclockwise of p1 - self. + * @staticmethod + * cdef inline bint sign(FLOAT_T [::1] ref, FLOAT_T [::1] p, FLOAT_T [::1] q): # <<<<<<<<<<<<<< + * """ + * Outputs if p2 - self is counterclockwise of p1 - self. */ /* function exit code */ @@ -12898,15 +9529,15 @@ static CYTHON_INLINE int __pyx_f_7_squish_16VoronoiContainer_sign(__Pyx_memviews return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":609 - * # return (q - ref).dot(rot.dot(p - ref)) >= 0 +/* "squish/voronoi.pyx":627 + * # return (q - ref).dot(rot.dot(p - ref)) >= 0 * - * cdef void precompute(self) except *: # <<<<<<<<<<<<<< - * pass + * cdef void precompute(self) except *: # <<<<<<<<<<<<<< + * pass * */ -static void __pyx_f_7_squish_16VoronoiContainer_precompute(CYTHON_UNUSED struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self) { +static void __pyx_f_6squish_7voronoi_16VoronoiContainer_precompute(CYTHON_UNUSED struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("precompute", 0); @@ -12914,15 +9545,15 @@ static void __pyx_f_7_squish_16VoronoiContainer_precompute(CYTHON_UNUSED struct __Pyx_RefNannyFinishContext(); } -/* "squish/_squish/voronoi_dcel.pyx":612 - * pass +/* "squish/voronoi.pyx":630 + * pass * - * cdef void calc_grad(self) except *: # <<<<<<<<<<<<<< - * pass + * cdef void calc_grad(self) except *: # <<<<<<<<<<<<<< + * pass * */ -static void __pyx_f_7_squish_16VoronoiContainer_calc_grad(CYTHON_UNUSED struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self) { +static void __pyx_f_6squish_7voronoi_16VoronoiContainer_calc_grad(CYTHON_UNUSED struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("calc_grad", 0); @@ -12930,15 +9561,15 @@ static void __pyx_f_7_squish_16VoronoiContainer_calc_grad(CYTHON_UNUSED struct _ __Pyx_RefNannyFinishContext(); } -/* "squish/_squish/voronoi_dcel.pyx":615 - * pass +/* "squish/voronoi.pyx":633 + * pass * - * cdef void get_statistics(self) except *: # <<<<<<<<<<<<<< - * self.stats = {} - * cache = self.site_cache[:self.n, :] + * cdef void get_statistics(self) except *: # <<<<<<<<<<<<<< + * self.stats = {} + * cache = self.site_cache[:self.n, :] */ -static void __pyx_f_7_squish_16VoronoiContainer_get_statistics(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self) { +static void __pyx_f_6squish_7voronoi_16VoronoiContainer_get_statistics(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self) { PyObject *__pyx_v_cache = NULL; PyObject *__pyx_v_edges = NULL; PyObject *__pyx_v_mask = NULL; @@ -12953,31 +9584,32 @@ static void __pyx_f_7_squish_16VoronoiContainer_get_statistics(struct __pyx_obj_ PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; __Pyx_memviewslice __pyx_t_7 = { 0, 0, { 0 }, { 0 }, { 0 } }; + PyObject *__pyx_t_8 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_statistics", 0); - /* "squish/_squish/voronoi_dcel.pyx":616 + /* "squish/voronoi.pyx":634 * - * cdef void get_statistics(self) except *: - * self.stats = {} # <<<<<<<<<<<<<< - * cache = self.site_cache[:self.n, :] + * cdef void get_statistics(self) except *: + * self.stats = {} # <<<<<<<<<<<<<< + * cache = self.site_cache[:self.n, :] * */ - __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 616, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats, __pyx_t_1) < 0) __PYX_ERR(1, 616, __pyx_L1_error) + if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats, __pyx_t_1) < 0) __PYX_ERR(0, 634, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":617 - * cdef void get_statistics(self) except *: - * self.stats = {} - * cache = self.site_cache[:self.n, :] # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":635 + * cdef void get_statistics(self) except *: + * self.stats = {} + * cache = self.site_cache[:self.n, :] # <<<<<<<<<<<<<< * - * self.stats["site_areas"] = np.asarray(cache[:, SITE_CACHE_MAP.iarea]) + * self.stats["site_areas"] = np.asarray(cache[:, SITE_CACHE_MAP.iarea]) */ - if (unlikely(!__pyx_v_self->site_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 617, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->site_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 635, __pyx_L1_error)} __pyx_t_2.data = __pyx_v_self->site_cache.data; __pyx_t_2.memview = __pyx_v_self->site_cache.memview; __PYX_INC_MEMVIEW(&__pyx_t_2, 0); @@ -12996,14 +9628,14 @@ static void __pyx_f_7_squish_16VoronoiContainer_get_statistics(struct __pyx_obj_ 0, 1) < 0)) { - __PYX_ERR(1, 617, __pyx_L1_error) + __PYX_ERR(0, 635, __pyx_L1_error) } __pyx_t_2.shape[1] = __pyx_v_self->site_cache.shape[1]; __pyx_t_2.strides[1] = __pyx_v_self->site_cache.strides[1]; __pyx_t_2.suboffsets[1] = -1; -__pyx_t_1 = __pyx_memoryview_fromslice(__pyx_t_2, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_7_squish_FLOAT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_7_squish_FLOAT_T, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 617, __pyx_L1_error) +__pyx_t_1 = __pyx_memoryview_fromslice(__pyx_t_2, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_6squish_4core_FLOAT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_6squish_4core_FLOAT_T, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __PYX_XDEC_MEMVIEW(&__pyx_t_2, 1); __pyx_t_2.memview = NULL; @@ -13011,21 +9643,21 @@ __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_t_2, 2, (PyObject *(*)(char *)) __p __pyx_v_cache = __pyx_t_1; __pyx_t_1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":619 - * cache = self.site_cache[:self.n, :] + /* "squish/voronoi.pyx":637 + * cache = self.site_cache[:self.n, :] * - * self.stats["site_areas"] = np.asarray(cache[:, SITE_CACHE_MAP.iarea]) # <<<<<<<<<<<<<< - * self.stats["site_edge_count"] = np.asarray(self.sites[:self.n, 2]) + * self.stats["site_areas"] = np.asarray(cache[:, SITE_CACHE_MAP.iarea]) # <<<<<<<<<<<<<< + * self.stats["site_edge_count"] = np.asarray(self.sites[:self.n, 2]) * */ - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 619, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 619, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyInt_From_npy_int64(__pyx_v_7_squish_SITE_CACHE_MAP.iarea); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 619, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_npy_int64(__pyx_v_6squish_7voronoi_SITE_CACHE_MAP.iarea); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 619, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); @@ -13033,7 +9665,7 @@ __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_t_2, 2, (PyObject *(*)(char *)) __p __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_cache, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 619, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_cache, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; @@ -13049,28 +9681,28 @@ __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_t_2, 2, (PyObject *(*)(char *)) __p __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 619, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 619, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (unlikely(PyObject_SetItem(__pyx_t_5, __pyx_n_u_site_areas, __pyx_t_1) < 0)) __PYX_ERR(1, 619, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_t_5, __pyx_n_u_site_areas, __pyx_t_1) < 0)) __PYX_ERR(0, 637, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":620 + /* "squish/voronoi.pyx":638 * - * self.stats["site_areas"] = np.asarray(cache[:, SITE_CACHE_MAP.iarea]) - * self.stats["site_edge_count"] = np.asarray(self.sites[:self.n, 2]) # <<<<<<<<<<<<<< + * self.stats["site_areas"] = np.asarray(cache[:, SITE_CACHE_MAP.iarea]) + * self.stats["site_edge_count"] = np.asarray(self.sites[:self.n, 2]) # <<<<<<<<<<<<<< * - * self.stats["site_isos"] = np.asarray(cache[:, SITE_CACHE_MAP.iisoparam]) + * self.stats["site_isos"] = np.asarray(cache[:, SITE_CACHE_MAP.iisoparam]) */ - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 620, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_asarray); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 620, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_asarray); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 620, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 638, __pyx_L1_error)} __pyx_t_7.data = __pyx_v_self->sites.data; __pyx_t_7.memview = __pyx_v_self->sites.memview; __PYX_INC_MEMVIEW(&__pyx_t_7, 0); @@ -13089,7 +9721,7 @@ __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_t_2, 2, (PyObject *(*)(char *)) __p 0, 1) < 0)) { - __PYX_ERR(1, 620, __pyx_L1_error) + __PYX_ERR(0, 638, __pyx_L1_error) } { @@ -13098,7 +9730,7 @@ __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_t_2, 2, (PyObject *(*)(char *)) __p __pyx_t_7.data += __pyx_tmp_idx * __pyx_tmp_stride; } -__pyx_t_5 = __pyx_memoryview_fromslice(__pyx_t_7, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_7_squish_INT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_7_squish_INT_T, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 620, __pyx_L1_error) +__pyx_t_5 = __pyx_memoryview_fromslice(__pyx_t_7, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_6squish_4core_INT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_6squish_4core_INT_T, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); __pyx_t_7.memview = NULL; @@ -13116,30 +9748,30 @@ __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_t_7, 1, (PyObject *(*)(char *)) __p __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 620, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 620, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_n_u_site_edge_count, __pyx_t_1) < 0)) __PYX_ERR(1, 620, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_n_u_site_edge_count, __pyx_t_1) < 0)) __PYX_ERR(0, 638, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":622 - * self.stats["site_edge_count"] = np.asarray(self.sites[:self.n, 2]) + /* "squish/voronoi.pyx":640 + * self.stats["site_edge_count"] = np.asarray(self.sites[:self.n, 2]) * - * self.stats["site_isos"] = np.asarray(cache[:, SITE_CACHE_MAP.iisoparam]) # <<<<<<<<<<<<<< - * self.stats["site_energies"] = np.asarray(cache[:, SITE_CACHE_MAP.ienergy]) - * self.stats["avg_radius"] = np.asarray(cache[:, SITE_CACHE_MAP.iavg_radius]) + * self.stats["site_isos"] = np.asarray(cache[:, SITE_CACHE_MAP.iisoparam]) # <<<<<<<<<<<<<< + * self.stats["site_energies"] = np.asarray(cache[:, SITE_CACHE_MAP.ienergy]) + * self.stats["avg_radius"] = np.asarray(cache[:, SITE_CACHE_MAP.iavg_radius]) */ - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 622, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 622, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyInt_From_npy_int64(__pyx_v_7_squish_SITE_CACHE_MAP.iisoparam); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 622, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_npy_int64(__pyx_v_6squish_7voronoi_SITE_CACHE_MAP.iisoparam); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 622, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); @@ -13147,7 +9779,7 @@ __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_t_7, 1, (PyObject *(*)(char *)) __p __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_cache, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 622, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_cache, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; @@ -13163,30 +9795,30 @@ __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_t_7, 1, (PyObject *(*)(char *)) __p __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 622, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 622, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (unlikely(PyObject_SetItem(__pyx_t_5, __pyx_n_u_site_isos, __pyx_t_1) < 0)) __PYX_ERR(1, 622, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_t_5, __pyx_n_u_site_isos, __pyx_t_1) < 0)) __PYX_ERR(0, 640, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":623 - * - * self.stats["site_isos"] = np.asarray(cache[:, SITE_CACHE_MAP.iisoparam]) - * self.stats["site_energies"] = np.asarray(cache[:, SITE_CACHE_MAP.ienergy]) # <<<<<<<<<<<<<< - * self.stats["avg_radius"] = np.asarray(cache[:, SITE_CACHE_MAP.iavg_radius]) + /* "squish/voronoi.pyx":641 * + * self.stats["site_isos"] = np.asarray(cache[:, SITE_CACHE_MAP.iisoparam]) + * self.stats["site_energies"] = np.asarray(cache[:, SITE_CACHE_MAP.ienergy]) # <<<<<<<<<<<<<< + * self.stats["avg_radius"] = np.asarray(cache[:, SITE_CACHE_MAP.iavg_radius]) + * self.stats["centroids"] = np.asarray( */ - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 623, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_asarray); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 623, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_asarray); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyInt_From_npy_int64(__pyx_v_7_squish_SITE_CACHE_MAP.ienergy); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 623, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_From_npy_int64(__pyx_v_6squish_7voronoi_SITE_CACHE_MAP.ienergy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 623, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); @@ -13194,7 +9826,7 @@ __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_t_7, 1, (PyObject *(*)(char *)) __p __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_cache, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 623, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_cache, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; @@ -13210,30 +9842,30 @@ __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_t_7, 1, (PyObject *(*)(char *)) __p __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 623, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 623, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_n_u_site_energies, __pyx_t_1) < 0)) __PYX_ERR(1, 623, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_n_u_site_energies, __pyx_t_1) < 0)) __PYX_ERR(0, 641, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":624 - * self.stats["site_isos"] = np.asarray(cache[:, SITE_CACHE_MAP.iisoparam]) - * self.stats["site_energies"] = np.asarray(cache[:, SITE_CACHE_MAP.ienergy]) - * self.stats["avg_radius"] = np.asarray(cache[:, SITE_CACHE_MAP.iavg_radius]) # <<<<<<<<<<<<<< - * - * self.stats["isoparam_avg"] = self.stats["site_areas"] / \ + /* "squish/voronoi.pyx":642 + * self.stats["site_isos"] = np.asarray(cache[:, SITE_CACHE_MAP.iisoparam]) + * self.stats["site_energies"] = np.asarray(cache[:, SITE_CACHE_MAP.ienergy]) + * self.stats["avg_radius"] = np.asarray(cache[:, SITE_CACHE_MAP.iavg_radius]) # <<<<<<<<<<<<<< + * self.stats["centroids"] = np.asarray( + * cache[:, SITE_CACHE_MAP.icentroid:SITE_CACHE_MAP.icentroid+2] */ - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 624, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 624, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyInt_From_npy_int64(__pyx_v_7_squish_SITE_CACHE_MAP.iavg_radius); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 624, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_npy_int64(__pyx_v_6squish_7voronoi_SITE_CACHE_MAP.iavg_radius); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 624, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); @@ -13241,7 +9873,7 @@ __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_t_7, 1, (PyObject *(*)(char *)) __p __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_cache, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 624, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_cache, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; @@ -13257,166 +9889,235 @@ __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_t_7, 1, (PyObject *(*)(char *)) __p __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 624, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 624, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (unlikely(PyObject_SetItem(__pyx_t_5, __pyx_n_u_avg_radius, __pyx_t_1) < 0)) __PYX_ERR(1, 624, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_t_5, __pyx_n_u_avg_radius, __pyx_t_1) < 0)) __PYX_ERR(0, 642, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":626 - * self.stats["avg_radius"] = np.asarray(cache[:, SITE_CACHE_MAP.iavg_radius]) - * - * self.stats["isoparam_avg"] = self.stats["site_areas"] / \ # <<<<<<<<<<<<<< - * (PI*self.stats["avg_radius"]**2) - * + /* "squish/voronoi.pyx":643 + * self.stats["site_energies"] = np.asarray(cache[:, SITE_CACHE_MAP.ienergy]) + * self.stats["avg_radius"] = np.asarray(cache[:, SITE_CACHE_MAP.iavg_radius]) + * self.stats["centroids"] = np.asarray( # <<<<<<<<<<<<<< + * cache[:, SITE_CACHE_MAP.icentroid:SITE_CACHE_MAP.icentroid+2] + * ) */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 626, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_t_1, __pyx_n_u_site_areas); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 626, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "squish/_squish/voronoi_dcel.pyx":627 - * - * self.stats["isoparam_avg"] = self.stats["site_areas"] / \ - * (PI*self.stats["avg_radius"]**2) # <<<<<<<<<<<<<< - * - * edges = np.asarray(self.edges) - */ - __pyx_t_1 = PyFloat_FromDouble(M_PI); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 627, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 627, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_PyObject_Dict_GetItem(__pyx_t_4, __pyx_n_u_avg_radius); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 627, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyNumber_Power(__pyx_t_6, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 627, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 627, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "squish/_squish/voronoi_dcel.pyx":626 - * self.stats["avg_radius"] = np.asarray(cache[:, SITE_CACHE_MAP.iavg_radius]) - * - * self.stats["isoparam_avg"] = self.stats["site_areas"] / \ # <<<<<<<<<<<<<< - * (PI*self.stats["avg_radius"]**2) - * - */ - __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 626, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_asarray); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 626, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (unlikely(PyObject_SetItem(__pyx_t_6, __pyx_n_u_isoparam_avg, __pyx_t_4) < 0)) __PYX_ERR(1, 626, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "squish/_squish/voronoi_dcel.pyx":629 - * (PI*self.stats["avg_radius"]**2) + /* "squish/voronoi.pyx":644 + * self.stats["avg_radius"] = np.asarray(cache[:, SITE_CACHE_MAP.iavg_radius]) + * self.stats["centroids"] = np.asarray( + * cache[:, SITE_CACHE_MAP.icentroid:SITE_CACHE_MAP.icentroid+2] # <<<<<<<<<<<<<< + * ) * - * edges = np.asarray(self.edges) # <<<<<<<<<<<<<< - * - * mask = np.nonzero(edges[:, 0] != -1)[0] */ - __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 629, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 629, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_From_npy_int64(__pyx_v_6squish_7voronoi_SITE_CACHE_MAP.icentroid); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 644, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_v_self->edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 629, __pyx_L1_error)} - __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_self->edges, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_7_squish_INT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_7_squish_INT_T, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 629, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyInt_From_npy_int64((__pyx_v_6squish_7voronoi_SITE_CACHE_MAP.icentroid + 2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 644, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_1); + __pyx_t_8 = PySlice_New(__pyx_t_5, __pyx_t_6, Py_None); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 644, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 644, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_INCREF(__pyx_slice__2); + __Pyx_GIVEREF(__pyx_slice__2); + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_slice__2); + __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_8); + __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_cache, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 644, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); + __Pyx_DECREF_SET(__pyx_t_4, function); } } - __pyx_t_4 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_1, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); + __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_8); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 643, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "squish/voronoi.pyx":643 + * self.stats["site_energies"] = np.asarray(cache[:, SITE_CACHE_MAP.ienergy]) + * self.stats["avg_radius"] = np.asarray(cache[:, SITE_CACHE_MAP.iavg_radius]) + * self.stats["centroids"] = np.asarray( # <<<<<<<<<<<<<< + * cache[:, SITE_CACHE_MAP.icentroid:SITE_CACHE_MAP.icentroid+2] + * ) + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 643, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_n_u_centroids, __pyx_t_1) < 0)) __PYX_ERR(0, 643, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "squish/voronoi.pyx":647 + * ) + * + * self.stats["isoparam_avg"] = self.stats["site_areas"] / \ # <<<<<<<<<<<<<< + * (PI*self.stats["avg_radius"]**2) + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 647, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_t_1, __pyx_n_u_site_areas); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 647, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "squish/voronoi.pyx":648 + * + * self.stats["isoparam_avg"] = self.stats["site_areas"] / \ + * (PI*self.stats["avg_radius"]**2) # <<<<<<<<<<<<<< + * + * edges = np.asarray(self.edges) + */ + __pyx_t_1 = PyFloat_FromDouble(M_PI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 648, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 648, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_6 = __Pyx_PyObject_Dict_GetItem(__pyx_t_8, __pyx_n_u_avg_radius); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 648, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = PyNumber_Power(__pyx_t_6, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 648, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 648, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "squish/voronoi.pyx":647 + * ) + * + * self.stats["isoparam_avg"] = self.stats["site_areas"] / \ # <<<<<<<<<<<<<< + * (PI*self.stats["avg_radius"]**2) + * + */ + __pyx_t_8 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 647, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 647, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (unlikely(PyObject_SetItem(__pyx_t_6, __pyx_n_u_isoparam_avg, __pyx_t_8) < 0)) __PYX_ERR(0, 647, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "squish/voronoi.pyx":650 + * (PI*self.stats["avg_radius"]**2) + * + * edges = np.asarray(self.edges) # <<<<<<<<<<<<<< + * + * mask = np.nonzero(edges[:, 0] != -1)[0] + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 650, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asarray); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 650, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_v_self->edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 650, __pyx_L1_error)} + __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_self->edges, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_6squish_4core_INT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_6squish_4core_INT_T, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 650, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + __pyx_t_8 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_1, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 629, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_v_edges = __pyx_t_4; - __pyx_t_4 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 650, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_edges = __pyx_t_8; + __pyx_t_8 = 0; - /* "squish/_squish/voronoi_dcel.pyx":631 - * edges = np.asarray(self.edges) + /* "squish/voronoi.pyx":652 + * edges = np.asarray(self.edges) * - * mask = np.nonzero(edges[:, 0] != -1)[0] # <<<<<<<<<<<<<< - * all_edges = mask[(mask % 2 == 0)] - * caches = edges[all_edges, 4] + * mask = np.nonzero(edges[:, 0] != -1)[0] # <<<<<<<<<<<<<< + * all_edges = mask[(mask % 2 == 0)] + * caches = edges[all_edges, 4] */ - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 631, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_nonzero); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 631, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 652, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_nonzero); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_edges, __pyx_tuple__3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 631, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_PyInt_NeObjC(__pyx_t_5, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 631, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_edges, __pyx_tuple__3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 652, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = __Pyx_PyInt_NeObjC(__pyx_t_4, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = NULL; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_5)) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } - __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_8 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_4, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 631, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 652, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 631, __pyx_L1_error) + __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_8, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_mask = __pyx_t_6; __pyx_t_6 = 0; - /* "squish/_squish/voronoi_dcel.pyx":632 + /* "squish/voronoi.pyx":653 * - * mask = np.nonzero(edges[:, 0] != -1)[0] - * all_edges = mask[(mask % 2 == 0)] # <<<<<<<<<<<<<< - * caches = edges[all_edges, 4] + * mask = np.nonzero(edges[:, 0] != -1)[0] + * all_edges = mask[(mask % 2 == 0)] # <<<<<<<<<<<<<< + * caches = edges[all_edges, 4] * */ - __pyx_t_6 = __Pyx_PyInt_RemainderObjC(__pyx_v_mask, __pyx_int_2, 2, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 632, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyInt_RemainderObjC(__pyx_v_mask, __pyx_int_2, 2, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = __Pyx_PyInt_EqObjC(__pyx_t_6, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 632, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = __Pyx_PyInt_EqObjC(__pyx_t_6, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 653, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_mask, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 632, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_mask, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_all_edges = __pyx_t_6; __pyx_t_6 = 0; - /* "squish/_squish/voronoi_dcel.pyx":633 - * mask = np.nonzero(edges[:, 0] != -1)[0] - * all_edges = mask[(mask % 2 == 0)] - * caches = edges[all_edges, 4] # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":654 + * mask = np.nonzero(edges[:, 0] != -1)[0] + * all_edges = mask[(mask % 2 == 0)] + * caches = edges[all_edges, 4] # <<<<<<<<<<<<<< * - * edge_cache = np.asarray(self.edge_cache) + * edge_cache = np.asarray(self.edge_cache) */ - __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 633, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_all_edges); __Pyx_GIVEREF(__pyx_v_all_edges); @@ -13424,78 +10125,78 @@ __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_t_7, 1, (PyObject *(*)(char *)) __p __Pyx_INCREF(__pyx_int_4); __Pyx_GIVEREF(__pyx_int_4); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_4); - __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_edges, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 633, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_edges, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 654, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_v_caches = __pyx_t_4; - __pyx_t_4 = 0; + __pyx_v_caches = __pyx_t_8; + __pyx_t_8 = 0; - /* "squish/_squish/voronoi_dcel.pyx":635 - * caches = edges[all_edges, 4] + /* "squish/voronoi.pyx":656 + * caches = edges[all_edges, 4] * - * edge_cache = np.asarray(self.edge_cache) # <<<<<<<<<<<<<< + * edge_cache = np.asarray(self.edge_cache) # <<<<<<<<<<<<<< * - * self.stats["edge_lengths"] = edge_cache[caches, self.edge_cache_map.ila_mag] + * self.stats["edge_lengths"] = edge_cache[caches, self.edge_cache_map.ila_mag] */ - __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 635, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asarray); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 635, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asarray); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_v_self->edge_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 635, __pyx_L1_error)} - __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_self->edge_cache, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_7_squish_FLOAT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_7_squish_FLOAT_T, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 635, __pyx_L1_error) + if (unlikely(!__pyx_v_self->edge_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 656, __pyx_L1_error)} + __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_self->edge_cache, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_6squish_4core_FLOAT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_6squish_4core_FLOAT_T, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = NULL; + __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_5)) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } - __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_8 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 635, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 656, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_edge_cache = __pyx_t_4; - __pyx_t_4 = 0; + __pyx_v_edge_cache = __pyx_t_8; + __pyx_t_8 = 0; - /* "squish/_squish/voronoi_dcel.pyx":637 - * edge_cache = np.asarray(self.edge_cache) + /* "squish/voronoi.pyx":658 + * edge_cache = np.asarray(self.edge_cache) * - * self.stats["edge_lengths"] = edge_cache[caches, self.edge_cache_map.ila_mag] # <<<<<<<<<<<<<< + * self.stats["edge_lengths"] = edge_cache[caches, self.edge_cache_map.ila_mag] # <<<<<<<<<<<<<< * - * @property + * @property */ - __pyx_t_4 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->edge_cache_map->ila_mag); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 637, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 637, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->edge_cache_map->ila_mag); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 658, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_caches); __Pyx_GIVEREF(__pyx_v_caches); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_caches); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_edge_cache, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 637, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_8); + __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_edge_cache, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 658, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 637, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_n_u_edge_lengths, __pyx_t_4) < 0)) __PYX_ERR(1, 637, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_n_u_edge_lengths, __pyx_t_8) < 0)) __PYX_ERR(0, 658, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "squish/_squish/voronoi_dcel.pyx":615 - * pass + /* "squish/voronoi.pyx":633 + * pass * - * cdef void get_statistics(self) except *: # <<<<<<<<<<<<<< - * self.stats = {} - * cache = self.site_cache[:self.n, :] + * cdef void get_statistics(self) except *: # <<<<<<<<<<<<<< + * self.stats = {} + * cache = self.site_cache[:self.n, :] */ /* function exit code */ @@ -13507,7 +10208,8 @@ __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_t_7, 1, (PyObject *(*)(char *)) __p __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); - __Pyx_AddTraceback("_squish.VoronoiContainer.get_statistics", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.get_statistics", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_v_cache); __Pyx_XDECREF(__pyx_v_edges); @@ -13518,28 +10220,28 @@ __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_t_7, 1, (PyObject *(*)(char *)) __p __Pyx_RefNannyFinishContext(); } -/* "squish/_squish/voronoi_dcel.pyx":640 +/* "squish/voronoi.pyx":661 * - * @property - * def site_arr(self): # <<<<<<<<<<<<<< - * return np.asarray(self.points[:self.n], dtype=FLOAT) + * @property + * def site_arr(self): # <<<<<<<<<<<<<< + * return np.asarray(self.points[:self.n], dtype=FLOAT) * */ /* Python wrapper */ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_8site_arr_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_8site_arr_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_8site_arr_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_8site_arr_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_16VoronoiContainer_8site_arr___get__(((struct __pyx_obj_7_squish_VoronoiContainer *)__pyx_v_self)); + __pyx_r = __pyx_pf_6squish_7voronoi_16VoronoiContainer_8site_arr___get__(((struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_8site_arr___get__(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self) { +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_8site_arr___get__(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -13553,20 +10255,20 @@ static PyObject *__pyx_pf_7_squish_16VoronoiContainer_8site_arr___get__(struct _ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "squish/_squish/voronoi_dcel.pyx":641 - * @property - * def site_arr(self): - * return np.asarray(self.points[:self.n], dtype=FLOAT) # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":662 + * @property + * def site_arr(self): + * return np.asarray(self.points[:self.n], dtype=FLOAT) # <<<<<<<<<<<<<< * - * @property + * @property */ __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 641, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 662, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_asarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 641, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_asarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 662, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_v_self->points.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 641, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->points.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 662, __pyx_L1_error)} __pyx_t_3.data = __pyx_v_self->points.data; __pyx_t_3.memview = __pyx_v_self->points.memview; __PYX_INC_MEMVIEW(&__pyx_t_3, 0); @@ -13585,30 +10287,30 @@ static PyObject *__pyx_pf_7_squish_16VoronoiContainer_8site_arr___get__(struct _ 0, 1) < 0)) { - __PYX_ERR(1, 641, __pyx_L1_error) + __PYX_ERR(0, 662, __pyx_L1_error) } __pyx_t_3.shape[1] = __pyx_v_self->points.shape[1]; __pyx_t_3.strides[1] = __pyx_v_self->points.strides[1]; __pyx_t_3.suboffsets[1] = -1; -__pyx_t_1 = __pyx_memoryview_fromslice(__pyx_t_3, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_7_squish_FLOAT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_7_squish_FLOAT_T, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 641, __pyx_L1_error) +__pyx_t_1 = __pyx_memoryview_fromslice(__pyx_t_3, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_6squish_4core_FLOAT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_6squish_4core_FLOAT_T, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 662, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __PYX_XDEC_MEMVIEW(&__pyx_t_3, 1); __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 641, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 662, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 641, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 662, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 641, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 662, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(1, 641, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 662, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 641, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 662, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -13617,11 +10319,11 @@ __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_t_3, 2, (PyObject *(*)(char *)) __p __pyx_t_6 = 0; goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":640 + /* "squish/voronoi.pyx":661 * - * @property - * def site_arr(self): # <<<<<<<<<<<<<< - * return np.asarray(self.points[:self.n], dtype=FLOAT) + * @property + * def site_arr(self): # <<<<<<<<<<<<<< + * return np.asarray(self.points[:self.n], dtype=FLOAT) * */ @@ -13632,7 +10334,7 @@ __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_t_3, 2, (PyObject *(*)(char *)) __p __PYX_XDEC_MEMVIEW(&__pyx_t_3, 1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("_squish.VoronoiContainer.site_arr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.site_arr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -13640,28 +10342,28 @@ __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_t_3, 2, (PyObject *(*)(char *)) __p return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":644 +/* "squish/voronoi.pyx":665 * - * @property - * def vor_data(self): # <<<<<<<<<<<<<< - * return self.scipy_vor + * @property + * def vor_data(self): # <<<<<<<<<<<<<< + * return self.scipy_vor * */ /* Python wrapper */ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_8vor_data_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_8vor_data_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_8vor_data_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_8vor_data_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_16VoronoiContainer_8vor_data___get__(((struct __pyx_obj_7_squish_VoronoiContainer *)__pyx_v_self)); + __pyx_r = __pyx_pf_6squish_7voronoi_16VoronoiContainer_8vor_data___get__(((struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_8vor_data___get__(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self) { +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_8vor_data___get__(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -13670,32 +10372,32 @@ static PyObject *__pyx_pf_7_squish_16VoronoiContainer_8vor_data___get__(struct _ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "squish/_squish/voronoi_dcel.pyx":645 - * @property - * def vor_data(self): - * return self.scipy_vor # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":666 + * @property + * def vor_data(self): + * return self.scipy_vor # <<<<<<<<<<<<<< * - * @property + * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scipy_vor); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 645, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scipy_vor); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 666, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":644 + /* "squish/voronoi.pyx":665 * - * @property - * def vor_data(self): # <<<<<<<<<<<<<< - * return self.scipy_vor + * @property + * def vor_data(self): # <<<<<<<<<<<<<< + * return self.scipy_vor * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("_squish.VoronoiContainer.vor_data.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.vor_data.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -13703,28 +10405,28 @@ static PyObject *__pyx_pf_7_squish_16VoronoiContainer_8vor_data___get__(struct _ return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":648 +/* "squish/voronoi.pyx":669 * - * @property - * def gradient(self): # <<<<<<<<<<<<<< - * return np.asarray(self.grad, dtype=FLOAT) + * @property + * def gradient(self): # <<<<<<<<<<<<<< + * return np.asarray(self.grad, dtype=FLOAT) * */ /* Python wrapper */ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_8gradient_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_8gradient_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_8gradient_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_8gradient_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_16VoronoiContainer_8gradient___get__(((struct __pyx_obj_7_squish_VoronoiContainer *)__pyx_v_self)); + __pyx_r = __pyx_pf_6squish_7voronoi_16VoronoiContainer_8gradient___get__(((struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_8gradient___get__(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self) { +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_8gradient___get__(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -13736,34 +10438,34 @@ static PyObject *__pyx_pf_7_squish_16VoronoiContainer_8gradient___get__(struct _ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "squish/_squish/voronoi_dcel.pyx":649 - * @property - * def gradient(self): - * return np.asarray(self.grad, dtype=FLOAT) # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":670 + * @property + * def gradient(self): + * return np.asarray(self.grad, dtype=FLOAT) # <<<<<<<<<<<<<< * - * def add_sites(self, add): + * def add_sites(self, add): */ __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 649, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_asarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 649, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_asarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_v_self->grad.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(1, 649, __pyx_L1_error)} - __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_self->grad, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_7_squish_FLOAT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_7_squish_FLOAT_T, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 649, __pyx_L1_error) + if (unlikely(!__pyx_v_self->grad.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 670, __pyx_L1_error)} + __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_self->grad, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_6squish_4core_FLOAT_T, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_6squish_4core_FLOAT_T, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 649, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 649, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 649, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(1, 649, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 670, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 649, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -13772,11 +10474,11 @@ static PyObject *__pyx_pf_7_squish_16VoronoiContainer_8gradient___get__(struct _ __pyx_t_4 = 0; goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":648 + /* "squish/voronoi.pyx":669 * - * @property - * def gradient(self): # <<<<<<<<<<<<<< - * return np.asarray(self.grad, dtype=FLOAT) + * @property + * def gradient(self): # <<<<<<<<<<<<<< + * return np.asarray(self.grad, dtype=FLOAT) * */ @@ -13786,7 +10488,7 @@ static PyObject *__pyx_pf_7_squish_16VoronoiContainer_8gradient___get__(struct _ __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("_squish.VoronoiContainer.gradient.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.gradient.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -13794,28 +10496,28 @@ static PyObject *__pyx_pf_7_squish_16VoronoiContainer_8gradient___get__(struct _ return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":651 - * return np.asarray(self.grad, dtype=FLOAT) +/* "squish/voronoi.pyx":672 + * return np.asarray(self.grad, dtype=FLOAT) * - * def add_sites(self, add): # <<<<<<<<<<<<<< - * return (self.site_arr + add) % np.asarray(self.dim, dtype=FLOAT) + * def add_sites(self, add): # <<<<<<<<<<<<<< + * return (self.site_arr + add) % np.asarray(self.dim, dtype=FLOAT) * */ /* Python wrapper */ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_3add_sites(PyObject *__pyx_v_self, PyObject *__pyx_v_add); /*proto*/ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_3add_sites(PyObject *__pyx_v_self, PyObject *__pyx_v_add) { +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_3add_sites(PyObject *__pyx_v_self, PyObject *__pyx_v_add); /*proto*/ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_3add_sites(PyObject *__pyx_v_self, PyObject *__pyx_v_add) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("add_sites (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_16VoronoiContainer_2add_sites(((struct __pyx_obj_7_squish_VoronoiContainer *)__pyx_v_self), ((PyObject *)__pyx_v_add)); + __pyx_r = __pyx_pf_6squish_7voronoi_16VoronoiContainer_2add_sites(((struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)__pyx_v_self), ((PyObject *)__pyx_v_add)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_2add_sites(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self, PyObject *__pyx_v_add) { +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_2add_sites(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self, PyObject *__pyx_v_add) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -13828,43 +10530,43 @@ static PyObject *__pyx_pf_7_squish_16VoronoiContainer_2add_sites(struct __pyx_ob int __pyx_clineno = 0; __Pyx_RefNannySetupContext("add_sites", 0); - /* "squish/_squish/voronoi_dcel.pyx":652 + /* "squish/voronoi.pyx":673 * - * def add_sites(self, add): - * return (self.site_arr + add) % np.asarray(self.dim, dtype=FLOAT) # <<<<<<<<<<<<<< + * def add_sites(self, add): + * return (self.site_arr + add) % np.asarray(self.dim, dtype=FLOAT) # <<<<<<<<<<<<<< * - * def iterate(self, FLOAT_T step): + * def iterate(self, FLOAT_T step): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_site_arr); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 652, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_site_arr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 673, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 652, __pyx_L1_error) + __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 673, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 652, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 673, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_asarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 652, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_asarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 673, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_carray_to_py___pyx_t_7_squish_FLOAT_T(__pyx_v_self->dim, 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 652, __pyx_L1_error) + __pyx_t_1 = __Pyx_carray_to_py___pyx_t_6squish_4core_FLOAT_T(__pyx_v_self->dim, 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 673, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 652, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 673, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 652, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 673, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 652, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 673, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(1, 652, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 673, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 652, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 673, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Remainder(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 652, __pyx_L1_error) + __pyx_t_1 = PyNumber_Remainder(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 673, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -13872,11 +10574,11 @@ static PyObject *__pyx_pf_7_squish_16VoronoiContainer_2add_sites(struct __pyx_ob __pyx_t_1 = 0; goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":651 - * return np.asarray(self.grad, dtype=FLOAT) + /* "squish/voronoi.pyx":672 + * return np.asarray(self.grad, dtype=FLOAT) * - * def add_sites(self, add): # <<<<<<<<<<<<<< - * return (self.site_arr + add) % np.asarray(self.dim, dtype=FLOAT) + * def add_sites(self, add): # <<<<<<<<<<<<<< + * return (self.site_arr + add) % np.asarray(self.dim, dtype=FLOAT) * */ @@ -13887,7 +10589,7 @@ static PyObject *__pyx_pf_7_squish_16VoronoiContainer_2add_sites(struct __pyx_ob __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("_squish.VoronoiContainer.add_sites", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.add_sites", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -13895,18 +10597,18 @@ static PyObject *__pyx_pf_7_squish_16VoronoiContainer_2add_sites(struct __pyx_ob return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":654 - * return (self.site_arr + add) % np.asarray(self.dim, dtype=FLOAT) +/* "squish/voronoi.pyx":675 + * return (self.site_arr + add) % np.asarray(self.dim, dtype=FLOAT) * - * def iterate(self, FLOAT_T step): # <<<<<<<<<<<<<< - * k1 = self.gradient - * k2 = self.__class__(self.n, self.w, self.h, self.r, + * def iterate(self, FLOAT_T step): # <<<<<<<<<<<<<< + * start = timer() + * k1 = self.gradient */ /* Python wrapper */ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_5iterate(PyObject *__pyx_v_self, PyObject *__pyx_arg_step); /*proto*/ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_5iterate(PyObject *__pyx_v_self, PyObject *__pyx_arg_step) { - __pyx_t_7_squish_FLOAT_T __pyx_v_step; +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_5iterate(PyObject *__pyx_v_self, PyObject *__pyx_arg_step); /*proto*/ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_5iterate(PyObject *__pyx_v_self, PyObject *__pyx_arg_step) { + __pyx_t_6squish_4core_FLOAT_T __pyx_v_step; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -13914,23 +10616,25 @@ static PyObject *__pyx_pw_7_squish_16VoronoiContainer_5iterate(PyObject *__pyx_v __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("iterate (wrapper)", 0); assert(__pyx_arg_step); { - __pyx_v_step = __pyx_PyFloat_AsDouble(__pyx_arg_step); if (unlikely((__pyx_v_step == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(1, 654, __pyx_L3_error) + __pyx_v_step = __pyx_PyFloat_AsDouble(__pyx_arg_step); if (unlikely((__pyx_v_step == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 675, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; - __Pyx_AddTraceback("_squish.VoronoiContainer.iterate", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.iterate", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_7_squish_16VoronoiContainer_4iterate(((struct __pyx_obj_7_squish_VoronoiContainer *)__pyx_v_self), ((__pyx_t_7_squish_FLOAT_T)__pyx_v_step)); + __pyx_r = __pyx_pf_6squish_7voronoi_16VoronoiContainer_4iterate(((struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)__pyx_v_self), ((__pyx_t_6squish_4core_FLOAT_T)__pyx_v_step)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_4iterate(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self, __pyx_t_7_squish_FLOAT_T __pyx_v_step) { +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_4iterate(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self, __pyx_t_6squish_4core_FLOAT_T __pyx_v_step) { + PyObject *__pyx_v_start = NULL; PyObject *__pyx_v_k1 = NULL; + PyObject *__pyx_v_end = NULL; PyObject *__pyx_v_k2 = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -13950,48 +10654,149 @@ static PyObject *__pyx_pf_7_squish_16VoronoiContainer_4iterate(struct __pyx_obj_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("iterate", 0); - /* "squish/_squish/voronoi_dcel.pyx":655 + /* "squish/voronoi.pyx":676 * - * def iterate(self, FLOAT_T step): - * k1 = self.gradient # <<<<<<<<<<<<<< - * k2 = self.__class__(self.n, self.w, self.h, self.r, - * self.add_sites(step*k1) + * def iterate(self, FLOAT_T step): + * start = timer() # <<<<<<<<<<<<<< + * k1 = self.gradient + * end = timer() */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_gradient); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 655, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_timer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 676, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 676, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_start = __pyx_t_1; + __pyx_t_1 = 0; + + /* "squish/voronoi.pyx":677 + * def iterate(self, FLOAT_T step): + * start = timer() + * k1 = self.gradient # <<<<<<<<<<<<<< + * end = timer() + * print(f"Get: {end - start}") + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_gradient); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_k1 = __pyx_t_1; __pyx_t_1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":656 - * def iterate(self, FLOAT_T step): - * k1 = self.gradient - * k2 = self.__class__(self.n, self.w, self.h, self.r, # <<<<<<<<<<<<<< - * self.add_sites(step*k1) - * ).gradient + /* "squish/voronoi.pyx":678 + * start = timer() + * k1 = self.gradient + * end = timer() # <<<<<<<<<<<<<< + * print(f"Get: {end - start}") + * start = timer() */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 656, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_timer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 678, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->n); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 656, __pyx_L1_error) + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 678, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_end = __pyx_t_1; + __pyx_t_1 = 0; + + /* "squish/voronoi.pyx":679 + * k1 = self.gradient + * end = timer() + * print(f"Get: {end - start}") # <<<<<<<<<<<<<< + * start = timer() + * k2 = self.__class__(self.n, self.w, self.h, self.r, + */ + __pyx_t_1 = PyNumber_Subtract(__pyx_v_end, __pyx_v_start); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 679, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 679, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Get, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 679, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 679, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "squish/voronoi.pyx":680 + * end = timer() + * print(f"Get: {end - start}") + * start = timer() # <<<<<<<<<<<<<< + * k2 = self.__class__(self.n, self.w, self.h, self.r, + * self.add_sites(step*k1) + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_timer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 680, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + } + } + __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 680, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_2); + __pyx_t_2 = 0; + + /* "squish/voronoi.pyx":681 + * print(f"Get: {end - start}") + * start = timer() + * k2 = self.__class__(self.n, self.w, self.h, self.r, # <<<<<<<<<<<<<< + * self.add_sites(step*k1) + * ).gradient + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 681, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->n); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->w); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 656, __pyx_L1_error) + __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->w); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->h); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 656, __pyx_L1_error) + __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->h); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PyFloat_FromDouble(__pyx_v_self->r); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 656, __pyx_L1_error) + __pyx_t_6 = PyFloat_FromDouble(__pyx_v_self->r); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - /* "squish/_squish/voronoi_dcel.pyx":657 - * k1 = self.gradient - * k2 = self.__class__(self.n, self.w, self.h, self.r, - * self.add_sites(step*k1) # <<<<<<<<<<<<<< - * ).gradient - * + /* "squish/voronoi.pyx":682 + * start = timer() + * k2 = self.__class__(self.n, self.w, self.h, self.r, + * self.add_sites(step*k1) # <<<<<<<<<<<<<< + * ).gradient + * end = timer() */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_sites); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 657, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_sites); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = PyFloat_FromDouble(__pyx_v_step); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 657, __pyx_L1_error) + __pyx_t_9 = PyFloat_FromDouble(__pyx_v_step); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = PyNumber_Multiply(__pyx_t_9, __pyx_v_k1); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 657, __pyx_L1_error) + __pyx_t_10 = PyNumber_Multiply(__pyx_t_9, __pyx_v_k1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; @@ -14007,27 +10812,27 @@ static PyObject *__pyx_pf_7_squish_16VoronoiContainer_4iterate(struct __pyx_obj_ __pyx_t_7 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_10); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 657, __pyx_L1_error) + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = NULL; __pyx_t_11 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); + __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_11 = 1; } } #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { + if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[6] = {__pyx_t_8, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_11, 5+__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 656, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_11, 5+__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 681, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -14036,11 +10841,11 @@ static PyObject *__pyx_pf_7_squish_16VoronoiContainer_4iterate(struct __pyx_obj_ } else #endif #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[6] = {__pyx_t_8, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_11, 5+__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 656, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_11, 5+__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 681, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -14049,7 +10854,7 @@ static PyObject *__pyx_pf_7_squish_16VoronoiContainer_4iterate(struct __pyx_obj_ } else #endif { - __pyx_t_10 = PyTuple_New(5+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 656, __pyx_L1_error) + __pyx_t_10 = PyTuple_New(5+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL; @@ -14069,42 +10874,89 @@ static PyObject *__pyx_pf_7_squish_16VoronoiContainer_4iterate(struct __pyx_obj_ __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 656, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 681, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":658 - * k2 = self.__class__(self.n, self.w, self.h, self.r, - * self.add_sites(step*k1) - * ).gradient # <<<<<<<<<<<<<< - * - * return (step/2)*(k1+k2), k1 + /* "squish/voronoi.pyx":683 + * k2 = self.__class__(self.n, self.w, self.h, self.r, + * self.add_sites(step*k1) + * ).gradient # <<<<<<<<<<<<<< + * end = timer() + * print(f"New: {end - start}") */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_gradient); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 658, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_gradient); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 683, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_k2 = __pyx_t_1; + __pyx_t_1 = 0; + + /* "squish/voronoi.pyx":684 + * self.add_sites(step*k1) + * ).gradient + * end = timer() # <<<<<<<<<<<<<< + * print(f"New: {end - start}") + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_timer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 684, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_10 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_10) : __Pyx_PyObject_CallNoArg(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 684, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_end, __pyx_t_1); + __pyx_t_1 = 0; + + /* "squish/voronoi.pyx":685 + * ).gradient + * end = timer() + * print(f"New: {end - start}") # <<<<<<<<<<<<<< + * + * return (step/2)*(k1+k2), k1 + */ + __pyx_t_1 = PyNumber_Subtract(__pyx_v_end, __pyx_v_start); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 685, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_k2 = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_kp_u_New, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 685, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 685, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "squish/_squish/voronoi_dcel.pyx":660 - * ).gradient + /* "squish/voronoi.pyx":687 + * print(f"New: {end - start}") + * + * return (step/2)*(k1+k2), k1 # <<<<<<<<<<<<<< * - * return (step/2)*(k1+k2), k1 # <<<<<<<<<<<<<< - * # k1 = self.gradient * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PyFloat_FromDouble((__pyx_v_step / 2.0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 660, __pyx_L1_error) + __pyx_t_2 = PyFloat_FromDouble((__pyx_v_step / 2.0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyNumber_Add(__pyx_v_k1, __pyx_v_k2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 660, __pyx_L1_error) + __pyx_t_1 = PyNumber_Add(__pyx_v_k1, __pyx_v_k2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_10 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 660, __pyx_L1_error) + __pyx_t_10 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 660, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_10); @@ -14116,12 +10968,12 @@ static PyObject *__pyx_pf_7_squish_16VoronoiContainer_4iterate(struct __pyx_obj_ __pyx_t_1 = 0; goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":654 - * return (self.site_arr + add) % np.asarray(self.dim, dtype=FLOAT) + /* "squish/voronoi.pyx":675 + * return (self.site_arr + add) % np.asarray(self.dim, dtype=FLOAT) * - * def iterate(self, FLOAT_T step): # <<<<<<<<<<<<<< - * k1 = self.gradient - * k2 = self.__class__(self.n, self.w, self.h, self.r, + * def iterate(self, FLOAT_T step): # <<<<<<<<<<<<<< + * start = timer() + * k1 = self.gradient */ /* function exit code */ @@ -14136,28 +10988,30 @@ static PyObject *__pyx_pf_7_squish_16VoronoiContainer_4iterate(struct __pyx_obj_ __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); - __Pyx_AddTraceback("_squish.VoronoiContainer.iterate", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.iterate", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; + __Pyx_XDECREF(__pyx_v_start); __Pyx_XDECREF(__pyx_v_k1); + __Pyx_XDECREF(__pyx_v_end); __Pyx_XDECREF(__pyx_v_k2); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "squish/_squish/voronoi_dcel.pyx":680 - * #return higher, k1 +/* "squish/voronoi.pyx":690 * - * def hessian(self, d: float) -> np.ndarray: # <<<<<<<<<<<<<< - * """ - * Obtains the approximate Hessian. + * + * def hessian(self, d: float) -> np.ndarray: # <<<<<<<<<<<<<< + * """ + * Obtains the approximate Hessian. */ /* Python wrapper */ -static PyArrayObject *__pyx_pw_7_squish_16VoronoiContainer_7hessian(PyObject *__pyx_v_self, PyObject *__pyx_arg_d); /*proto*/ -static char __pyx_doc_7_squish_16VoronoiContainer_6hessian[] = "\n\t\tObtains the approximate Hessian.\n\t\t:param d: [float] small d for approximation.\n\t\t:return: 2Nx2N array that represents Hessian.\n\t\t"; -static PyArrayObject *__pyx_pw_7_squish_16VoronoiContainer_7hessian(PyObject *__pyx_v_self, PyObject *__pyx_arg_d) { +static PyArrayObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_7hessian(PyObject *__pyx_v_self, PyObject *__pyx_arg_d); /*proto*/ +static char __pyx_doc_6squish_7voronoi_16VoronoiContainer_6hessian[] = "\n Obtains the approximate Hessian.\n :param d: [float] small d for approximation.\n :return: 2Nx2N array that represents Hessian.\n "; +static PyArrayObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_7hessian(PyObject *__pyx_v_self, PyObject *__pyx_arg_d) { double __pyx_v_d; int __pyx_lineno = 0; const char *__pyx_filename = NULL; @@ -14166,22 +11020,22 @@ static PyArrayObject *__pyx_pw_7_squish_16VoronoiContainer_7hessian(PyObject *__ __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("hessian (wrapper)", 0); assert(__pyx_arg_d); { - __pyx_v_d = __pyx_PyFloat_AsDouble(__pyx_arg_d); if (unlikely((__pyx_v_d == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 680, __pyx_L3_error) + __pyx_v_d = __pyx_PyFloat_AsDouble(__pyx_arg_d); if (unlikely((__pyx_v_d == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 690, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; - __Pyx_AddTraceback("_squish.VoronoiContainer.hessian", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.hessian", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_7_squish_16VoronoiContainer_6hessian(((struct __pyx_obj_7_squish_VoronoiContainer *)__pyx_v_self), ((double)__pyx_v_d)); + __pyx_r = __pyx_pf_6squish_7voronoi_16VoronoiContainer_6hessian(((struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)__pyx_v_self), ((double)__pyx_v_d)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self, double __pyx_v_d) { +static PyArrayObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_6hessian(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self, double __pyx_v_d) { PyObject *__pyx_v_HE = NULL; PyObject *__pyx_v_new_sites = NULL; PyObject *__pyx_v_i = NULL; @@ -14212,23 +11066,23 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("hessian", 0); - /* "squish/_squish/voronoi_dcel.pyx":686 - * :return: 2Nx2N array that represents Hessian. - * """ - * HE = np.zeros((2*self.n, 2*self.n)) # <<<<<<<<<<<<<< - * new_sites = np.copy(self.site_arr) # Maintain one copy for speed. - * for i in range(self.n): + /* "squish/voronoi.pyx":696 + * :return: 2Nx2N array that represents Hessian. + * """ + * HE = np.zeros((2*self.n, 2*self.n)) # <<<<<<<<<<<<<< + * new_sites = np.copy(self.site_arr) # Maintain one copy for speed. + * for i in range(self.n): */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 686, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 686, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_From_npy_int64((2 * __pyx_v_self->n)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 686, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_npy_int64((2 * __pyx_v_self->n)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyInt_From_npy_int64((2 * __pyx_v_self->n)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 686, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_npy_int64((2 * __pyx_v_self->n)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 686, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); @@ -14249,25 +11103,25 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 686, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_HE = __pyx_t_1; __pyx_t_1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":687 - * """ - * HE = np.zeros((2*self.n, 2*self.n)) - * new_sites = np.copy(self.site_arr) # Maintain one copy for speed. # <<<<<<<<<<<<<< - * for i in range(self.n): - * for j in range(2): + /* "squish/voronoi.pyx":697 + * """ + * HE = np.zeros((2*self.n, 2*self.n)) + * new_sites = np.copy(self.site_arr) # Maintain one copy for speed. # <<<<<<<<<<<<<< + * for i in range(self.n): + * for j in range(2): */ - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 687, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 687, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_site_arr); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 687, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_site_arr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { @@ -14282,31 +11136,31 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 687, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_new_sites = __pyx_t_1; __pyx_t_1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":688 - * HE = np.zeros((2*self.n, 2*self.n)) - * new_sites = np.copy(self.site_arr) # Maintain one copy for speed. - * for i in range(self.n): # <<<<<<<<<<<<<< - * for j in range(2): - * mod = self.w if j == 0 else self.h + /* "squish/voronoi.pyx":698 + * HE = np.zeros((2*self.n, 2*self.n)) + * new_sites = np.copy(self.site_arr) # Maintain one copy for speed. + * for i in range(self.n): # <<<<<<<<<<<<<< + * for j in range(2): + * mod = self.w if j == 0 else self.h */ - __pyx_t_1 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->n); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 688, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 688, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) { __pyx_t_1 = __pyx_t_5; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0; __pyx_t_7 = NULL; } else { - __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 688, __pyx_L1_error) + __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 688, __pyx_L1_error) + __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 698, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; for (;;) { @@ -14314,17 +11168,17 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 688, __pyx_L1_error) + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 698, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 688, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 688, __pyx_L1_error) + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 698, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 688, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } @@ -14334,7 +11188,7 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(1, 688, __pyx_L1_error) + else __PYX_ERR(0, 698, __pyx_L1_error) } break; } @@ -14343,37 +11197,37 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5); __pyx_t_5 = 0; - /* "squish/_squish/voronoi_dcel.pyx":689 - * new_sites = np.copy(self.site_arr) # Maintain one copy for speed. - * for i in range(self.n): - * for j in range(2): # <<<<<<<<<<<<<< - * mod = self.w if j == 0 else self.h - * new_sites[i][j] = (new_sites[i][j] + d) % mod + /* "squish/voronoi.pyx":699 + * new_sites = np.copy(self.site_arr) # Maintain one copy for speed. + * for i in range(self.n): + * for j in range(2): # <<<<<<<<<<<<<< + * mod = self.w if j == 0 else self.h + * new_sites[i][j] = (new_sites[i][j] + d) % mod */ for (__pyx_t_8 = 0; __pyx_t_8 < 2; __pyx_t_8+=1) { - __pyx_t_5 = __Pyx_PyInt_From_long(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 689, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_From_long(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_5); __pyx_t_5 = 0; - /* "squish/_squish/voronoi_dcel.pyx":690 - * for i in range(self.n): - * for j in range(2): - * mod = self.w if j == 0 else self.h # <<<<<<<<<<<<<< - * new_sites[i][j] = (new_sites[i][j] + d) % mod - * Ep = self.__class__(self.n, self.w, self.h, self.r, new_sites) + /* "squish/voronoi.pyx":700 + * for i in range(self.n): + * for j in range(2): + * mod = self.w if j == 0 else self.h # <<<<<<<<<<<<<< + * new_sites[i][j] = (new_sites[i][j] + d) % mod + * Ep = self.__class__(self.n, self.w, self.h, self.r, new_sites) */ - __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_v_j, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 690, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_v_j, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(1, 690, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 700, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_9) { - __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->w); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 690, __pyx_L1_error) + __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->w); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __pyx_t_3; __pyx_t_3 = 0; } else { - __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->h); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 690, __pyx_L1_error) + __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->h); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __pyx_t_3; __pyx_t_3 = 0; @@ -14381,49 +11235,49 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx __Pyx_XDECREF_SET(__pyx_v_mod, __pyx_t_5); __pyx_t_5 = 0; - /* "squish/_squish/voronoi_dcel.pyx":691 - * for j in range(2): - * mod = self.w if j == 0 else self.h - * new_sites[i][j] = (new_sites[i][j] + d) % mod # <<<<<<<<<<<<<< - * Ep = self.__class__(self.n, self.w, self.h, self.r, new_sites) - * new_sites[i][j] = (new_sites[i][j] - 2*d) % mod + /* "squish/voronoi.pyx":701 + * for j in range(2): + * mod = self.w if j == 0 else self.h + * new_sites[i][j] = (new_sites[i][j] + d) % mod # <<<<<<<<<<<<<< + * Ep = self.__class__(self.n, self.w, self.h, self.r, new_sites) + * new_sites[i][j] = (new_sites[i][j] - 2*d) % mod */ - __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_new_sites, __pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 691, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_new_sites, __pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 701, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_v_j); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 691, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_v_j); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 701, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyFloat_FromDouble(__pyx_v_d); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 691, __pyx_L1_error) + __pyx_t_5 = PyFloat_FromDouble(__pyx_v_d); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 701, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 691, __pyx_L1_error) + __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 701, __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 = PyNumber_Remainder(__pyx_t_4, __pyx_v_mod); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 691, __pyx_L1_error) + __pyx_t_5 = PyNumber_Remainder(__pyx_t_4, __pyx_v_mod); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 701, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_new_sites, __pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 691, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_new_sites, __pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 701, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_v_j, __pyx_t_5) < 0)) __PYX_ERR(1, 691, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_v_j, __pyx_t_5) < 0)) __PYX_ERR(0, 701, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "squish/_squish/voronoi_dcel.pyx":692 - * mod = self.w if j == 0 else self.h - * new_sites[i][j] = (new_sites[i][j] + d) % mod - * Ep = self.__class__(self.n, self.w, self.h, self.r, new_sites) # <<<<<<<<<<<<<< - * new_sites[i][j] = (new_sites[i][j] - 2*d) % mod - * Em = self.__class__(self.n, self.w, self.h, self.r, new_sites) + /* "squish/voronoi.pyx":702 + * mod = self.w if j == 0 else self.h + * new_sites[i][j] = (new_sites[i][j] + d) % mod + * Ep = self.__class__(self.n, self.w, self.h, self.r, new_sites) # <<<<<<<<<<<<<< + * new_sites[i][j] = (new_sites[i][j] - 2*d) % mod + * Em = self.__class__(self.n, self.w, self.h, self.r, new_sites) */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 692, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 702, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->n); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 692, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->n); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 702, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->w); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 692, __pyx_L1_error) + __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->w); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 702, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_10 = PyFloat_FromDouble(__pyx_v_self->h); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 692, __pyx_L1_error) + __pyx_t_10 = PyFloat_FromDouble(__pyx_v_self->h); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 702, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); - __pyx_t_11 = PyFloat_FromDouble(__pyx_v_self->r); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 692, __pyx_L1_error) + __pyx_t_11 = PyFloat_FromDouble(__pyx_v_self->r); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 702, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = NULL; __pyx_t_13 = 0; @@ -14440,7 +11294,7 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[6] = {__pyx_t_12, __pyx_t_3, __pyx_t_2, __pyx_t_10, __pyx_t_11, __pyx_v_new_sites}; - __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_13, 5+__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 692, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_13, 5+__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 702, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -14452,7 +11306,7 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[6] = {__pyx_t_12, __pyx_t_3, __pyx_t_2, __pyx_t_10, __pyx_t_11, __pyx_v_new_sites}; - __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_13, 5+__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 692, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_13, 5+__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 702, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -14462,7 +11316,7 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx } else #endif { - __pyx_t_14 = PyTuple_New(5+__pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 692, __pyx_L1_error) + __pyx_t_14 = PyTuple_New(5+__pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 702, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); if (__pyx_t_12) { __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_12); __pyx_t_12 = NULL; @@ -14482,7 +11336,7 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx __pyx_t_2 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_14, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 692, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_14, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 702, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } @@ -14490,49 +11344,49 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx __Pyx_XDECREF_SET(__pyx_v_Ep, __pyx_t_5); __pyx_t_5 = 0; - /* "squish/_squish/voronoi_dcel.pyx":693 - * new_sites[i][j] = (new_sites[i][j] + d) % mod - * Ep = self.__class__(self.n, self.w, self.h, self.r, new_sites) - * new_sites[i][j] = (new_sites[i][j] - 2*d) % mod # <<<<<<<<<<<<<< - * Em = self.__class__(self.n, self.w, self.h, self.r, new_sites) - * new_sites[i][j] = (new_sites[i][j] + d) % mod + /* "squish/voronoi.pyx":703 + * new_sites[i][j] = (new_sites[i][j] + d) % mod + * Ep = self.__class__(self.n, self.w, self.h, self.r, new_sites) + * new_sites[i][j] = (new_sites[i][j] - 2*d) % mod # <<<<<<<<<<<<<< + * Em = self.__class__(self.n, self.w, self.h, self.r, new_sites) + * new_sites[i][j] = (new_sites[i][j] + d) % mod */ - __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_new_sites, __pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 693, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_new_sites, __pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_v_j); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 693, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_v_j); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyFloat_FromDouble((2.0 * __pyx_v_d)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 693, __pyx_L1_error) + __pyx_t_5 = PyFloat_FromDouble((2.0 * __pyx_v_d)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_14 = PyNumber_Subtract(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 693, __pyx_L1_error) + __pyx_t_14 = PyNumber_Subtract(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyNumber_Remainder(__pyx_t_14, __pyx_v_mod); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 693, __pyx_L1_error) + __pyx_t_5 = PyNumber_Remainder(__pyx_t_14, __pyx_v_mod); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = __Pyx_PyObject_GetItem(__pyx_v_new_sites, __pyx_v_i); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 693, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyObject_GetItem(__pyx_v_new_sites, __pyx_v_i); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); - if (unlikely(PyObject_SetItem(__pyx_t_14, __pyx_v_j, __pyx_t_5) < 0)) __PYX_ERR(1, 693, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_t_14, __pyx_v_j, __pyx_t_5) < 0)) __PYX_ERR(0, 703, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "squish/_squish/voronoi_dcel.pyx":694 - * Ep = self.__class__(self.n, self.w, self.h, self.r, new_sites) - * new_sites[i][j] = (new_sites[i][j] - 2*d) % mod - * Em = self.__class__(self.n, self.w, self.h, self.r, new_sites) # <<<<<<<<<<<<<< - * new_sites[i][j] = (new_sites[i][j] + d) % mod + /* "squish/voronoi.pyx":704 + * Ep = self.__class__(self.n, self.w, self.h, self.r, new_sites) + * new_sites[i][j] = (new_sites[i][j] - 2*d) % mod + * Em = self.__class__(self.n, self.w, self.h, self.r, new_sites) # <<<<<<<<<<<<<< + * new_sites[i][j] = (new_sites[i][j] + d) % mod * */ - __pyx_t_14 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 694, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); - __pyx_t_4 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->n); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 694, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_11 = PyFloat_FromDouble(__pyx_v_self->w); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 694, __pyx_L1_error) + __pyx_t_11 = PyFloat_FromDouble(__pyx_v_self->w); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); - __pyx_t_10 = PyFloat_FromDouble(__pyx_v_self->h); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 694, __pyx_L1_error) + __pyx_t_10 = PyFloat_FromDouble(__pyx_v_self->h); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); - __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->r); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 694, __pyx_L1_error) + __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->r); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_13 = 0; @@ -14549,7 +11403,7 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_14)) { PyObject *__pyx_temp[6] = {__pyx_t_3, __pyx_t_4, __pyx_t_11, __pyx_t_10, __pyx_t_2, __pyx_v_new_sites}; - __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_13, 5+__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 694, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_13, 5+__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 704, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -14561,7 +11415,7 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_14)) { PyObject *__pyx_temp[6] = {__pyx_t_3, __pyx_t_4, __pyx_t_11, __pyx_t_10, __pyx_t_2, __pyx_v_new_sites}; - __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_13, 5+__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 694, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_13, 5+__pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 704, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -14571,7 +11425,7 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx } else #endif { - __pyx_t_12 = PyTuple_New(5+__pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 694, __pyx_L1_error) + __pyx_t_12 = PyTuple_New(5+__pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_3); __pyx_t_3 = NULL; @@ -14591,7 +11445,7 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx __pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_t_2 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_12, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 694, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_12, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } @@ -14599,55 +11453,55 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx __Pyx_XDECREF_SET(__pyx_v_Em, __pyx_t_5); __pyx_t_5 = 0; - /* "squish/_squish/voronoi_dcel.pyx":695 - * new_sites[i][j] = (new_sites[i][j] - 2*d) % mod - * Em = self.__class__(self.n, self.w, self.h, self.r, new_sites) - * new_sites[i][j] = (new_sites[i][j] + d) % mod # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":705 + * new_sites[i][j] = (new_sites[i][j] - 2*d) % mod + * Em = self.__class__(self.n, self.w, self.h, self.r, new_sites) + * new_sites[i][j] = (new_sites[i][j] + d) % mod # <<<<<<<<<<<<<< * - * HE[:, 2*i+j] = ((Ep.gradient - Em.gradient)/(2*d)).flatten() + * HE[:, 2*i+j] = ((Ep.gradient - Em.gradient)/(2*d)).flatten() */ - __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_new_sites, __pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 695, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_new_sites, __pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_14 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_v_j); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 695, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_v_j); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyFloat_FromDouble(__pyx_v_d); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 695, __pyx_L1_error) + __pyx_t_5 = PyFloat_FromDouble(__pyx_v_d); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_12 = PyNumber_Add(__pyx_t_14, __pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 695, __pyx_L1_error) + __pyx_t_12 = PyNumber_Add(__pyx_t_14, __pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyNumber_Remainder(__pyx_t_12, __pyx_v_mod); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 695, __pyx_L1_error) + __pyx_t_5 = PyNumber_Remainder(__pyx_t_12, __pyx_v_mod); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_new_sites, __pyx_v_i); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 695, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_new_sites, __pyx_v_i); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); - if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_v_j, __pyx_t_5) < 0)) __PYX_ERR(1, 695, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_t_12, __pyx_v_j, __pyx_t_5) < 0)) __PYX_ERR(0, 705, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "squish/_squish/voronoi_dcel.pyx":697 - * new_sites[i][j] = (new_sites[i][j] + d) % mod + /* "squish/voronoi.pyx":707 + * new_sites[i][j] = (new_sites[i][j] + d) % mod * - * HE[:, 2*i+j] = ((Ep.gradient - Em.gradient)/(2*d)).flatten() # <<<<<<<<<<<<<< + * HE[:, 2*i+j] = ((Ep.gradient - Em.gradient)/(2*d)).flatten() # <<<<<<<<<<<<<< * - * # Average out discrepencies, since it should be symmetric. + * # Average out discrepencies, since it should be symmetric. */ - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_Ep, __pyx_n_s_gradient); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 697, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_Ep, __pyx_n_s_gradient); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); - __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_Em, __pyx_n_s_gradient); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 697, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_Em, __pyx_n_s_gradient); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); - __pyx_t_2 = PyNumber_Subtract(__pyx_t_12, __pyx_t_14); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 697, __pyx_L1_error) + __pyx_t_2 = PyNumber_Subtract(__pyx_t_12, __pyx_t_14); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = PyFloat_FromDouble((2.0 * __pyx_v_d)); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 697, __pyx_L1_error) + __pyx_t_14 = PyFloat_FromDouble((2.0 * __pyx_v_d)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); - __pyx_t_12 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 697, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_flatten); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 697, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_flatten); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = NULL; @@ -14662,15 +11516,15 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx } __pyx_t_5 = (__pyx_t_12) ? __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_12) : __Pyx_PyObject_CallNoArg(__pyx_t_14); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 697, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = PyNumber_Multiply(__pyx_int_2, __pyx_v_i); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 697, __pyx_L1_error) + __pyx_t_14 = PyNumber_Multiply(__pyx_int_2, __pyx_v_i); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); - __pyx_t_12 = PyNumber_Add(__pyx_t_14, __pyx_v_j); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 697, __pyx_L1_error) + __pyx_t_12 = PyNumber_Add(__pyx_t_14, __pyx_v_j); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 697, __pyx_L1_error) + __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); @@ -14678,40 +11532,40 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_12); __pyx_t_12 = 0; - if (unlikely(PyObject_SetItem(__pyx_v_HE, __pyx_t_14, __pyx_t_5) < 0)) __PYX_ERR(1, 697, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_v_HE, __pyx_t_14, __pyx_t_5) < 0)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } - /* "squish/_squish/voronoi_dcel.pyx":688 - * HE = np.zeros((2*self.n, 2*self.n)) - * new_sites = np.copy(self.site_arr) # Maintain one copy for speed. - * for i in range(self.n): # <<<<<<<<<<<<<< - * for j in range(2): - * mod = self.w if j == 0 else self.h + /* "squish/voronoi.pyx":698 + * HE = np.zeros((2*self.n, 2*self.n)) + * new_sites = np.copy(self.site_arr) # Maintain one copy for speed. + * for i in range(self.n): # <<<<<<<<<<<<<< + * for j in range(2): + * mod = self.w if j == 0 else self.h */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":700 + /* "squish/voronoi.pyx":710 * - * # Average out discrepencies, since it should be symmetric. - * for i in range(2*self.n): # <<<<<<<<<<<<<< - * for j in range(i, 2*self.n): - * HE[i][j] = (HE[i][j] + HE[j][i])/2 + * # Average out discrepencies, since it should be symmetric. + * for i in range(2*self.n): # <<<<<<<<<<<<<< + * for j in range(i, 2*self.n): + * HE[i][j] = (HE[i][j] + HE[j][i])/2 */ - __pyx_t_1 = __Pyx_PyInt_From_npy_int64((2 * __pyx_v_self->n)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 700, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_npy_int64((2 * __pyx_v_self->n)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 700, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) { __pyx_t_1 = __pyx_t_5; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0; __pyx_t_7 = NULL; } else { - __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 700, __pyx_L1_error) + __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 700, __pyx_L1_error) + __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 710, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; for (;;) { @@ -14719,17 +11573,17 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 700, __pyx_L1_error) + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 710, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 700, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 700, __pyx_L1_error) + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 710, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 700, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } @@ -14739,7 +11593,7 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(1, 700, __pyx_L1_error) + else __PYX_ERR(0, 710, __pyx_L1_error) } break; } @@ -14748,16 +11602,16 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5); __pyx_t_5 = 0; - /* "squish/_squish/voronoi_dcel.pyx":701 - * # Average out discrepencies, since it should be symmetric. - * for i in range(2*self.n): - * for j in range(i, 2*self.n): # <<<<<<<<<<<<<< - * HE[i][j] = (HE[i][j] + HE[j][i])/2 - * HE[j][i] = HE[i][j] + /* "squish/voronoi.pyx":711 + * # Average out discrepencies, since it should be symmetric. + * for i in range(2*self.n): + * for j in range(i, 2*self.n): # <<<<<<<<<<<<<< + * HE[i][j] = (HE[i][j] + HE[j][i])/2 + * HE[j][i] = HE[i][j] */ - __pyx_t_5 = __Pyx_PyInt_From_npy_int64((2 * __pyx_v_self->n)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 701, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_From_npy_int64((2 * __pyx_v_self->n)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 701, __pyx_L1_error) + __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); @@ -14765,16 +11619,16 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_14, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 701, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_14, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) { __pyx_t_14 = __pyx_t_5; __Pyx_INCREF(__pyx_t_14); __pyx_t_15 = 0; __pyx_t_16 = NULL; } else { - __pyx_t_15 = -1; __pyx_t_14 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 701, __pyx_L1_error) + __pyx_t_15 = -1; __pyx_t_14 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); - __pyx_t_16 = Py_TYPE(__pyx_t_14)->tp_iternext; if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 701, __pyx_L1_error) + __pyx_t_16 = Py_TYPE(__pyx_t_14)->tp_iternext; if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 711, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; for (;;) { @@ -14782,17 +11636,17 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx if (likely(PyList_CheckExact(__pyx_t_14))) { if (__pyx_t_15 >= PyList_GET_SIZE(__pyx_t_14)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_14, __pyx_t_15); __Pyx_INCREF(__pyx_t_5); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(1, 701, __pyx_L1_error) + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_14, __pyx_t_15); __Pyx_INCREF(__pyx_t_5); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(0, 711, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_14, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 701, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_14, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_15 >= PyTuple_GET_SIZE(__pyx_t_14)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_14, __pyx_t_15); __Pyx_INCREF(__pyx_t_5); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(1, 701, __pyx_L1_error) + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_14, __pyx_t_15); __Pyx_INCREF(__pyx_t_5); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(0, 711, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_14, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 701, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_14, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } @@ -14802,7 +11656,7 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(1, 701, __pyx_L1_error) + else __PYX_ERR(0, 711, __pyx_L1_error) } break; } @@ -14811,92 +11665,93 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_5); __pyx_t_5 = 0; - /* "squish/_squish/voronoi_dcel.pyx":702 - * for i in range(2*self.n): - * for j in range(i, 2*self.n): - * HE[i][j] = (HE[i][j] + HE[j][i])/2 # <<<<<<<<<<<<<< - * HE[j][i] = HE[i][j] + /* "squish/voronoi.pyx":712 + * for i in range(2*self.n): + * for j in range(i, 2*self.n): + * HE[i][j] = (HE[i][j] + HE[j][i])/2 # <<<<<<<<<<<<<< + * HE[j][i] = HE[i][j] * */ - __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_HE, __pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 702, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_HE, __pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_v_j); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 702, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_v_j); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_HE, __pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 702, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_HE, __pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 702, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyNumber_Add(__pyx_t_12, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 702, __pyx_L1_error) + __pyx_t_5 = PyNumber_Add(__pyx_t_12, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_TrueDivideObjC(__pyx_t_5, __pyx_int_2, 2, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 702, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_TrueDivideObjC(__pyx_t_5, __pyx_int_2, 2, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_HE, __pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 702, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_HE, __pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (unlikely(PyObject_SetItem(__pyx_t_5, __pyx_v_j, __pyx_t_2) < 0)) __PYX_ERR(1, 702, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_t_5, __pyx_v_j, __pyx_t_2) < 0)) __PYX_ERR(0, 712, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "squish/_squish/voronoi_dcel.pyx":703 - * for j in range(i, 2*self.n): - * HE[i][j] = (HE[i][j] + HE[j][i])/2 - * HE[j][i] = HE[i][j] # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":713 + * for j in range(i, 2*self.n): + * HE[i][j] = (HE[i][j] + HE[j][i])/2 + * HE[j][i] = HE[i][j] # <<<<<<<<<<<<<< * - * return HE + * return HE */ - __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_HE, __pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 703, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_HE, __pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 703, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_HE, __pyx_v_j); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 703, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_HE, __pyx_v_j); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_v_i, __pyx_t_5) < 0)) __PYX_ERR(1, 703, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_v_i, __pyx_t_5) < 0)) __PYX_ERR(0, 713, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "squish/_squish/voronoi_dcel.pyx":701 - * # Average out discrepencies, since it should be symmetric. - * for i in range(2*self.n): - * for j in range(i, 2*self.n): # <<<<<<<<<<<<<< - * HE[i][j] = (HE[i][j] + HE[j][i])/2 - * HE[j][i] = HE[i][j] + /* "squish/voronoi.pyx":711 + * # Average out discrepencies, since it should be symmetric. + * for i in range(2*self.n): + * for j in range(i, 2*self.n): # <<<<<<<<<<<<<< + * HE[i][j] = (HE[i][j] + HE[j][i])/2 + * HE[j][i] = HE[i][j] */ } __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - /* "squish/_squish/voronoi_dcel.pyx":700 + /* "squish/voronoi.pyx":710 * - * # Average out discrepencies, since it should be symmetric. - * for i in range(2*self.n): # <<<<<<<<<<<<<< - * for j in range(i, 2*self.n): - * HE[i][j] = (HE[i][j] + HE[j][i])/2 + * # Average out discrepencies, since it should be symmetric. + * for i in range(2*self.n): # <<<<<<<<<<<<<< + * for j in range(i, 2*self.n): + * HE[i][j] = (HE[i][j] + HE[j][i])/2 */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "squish/_squish/voronoi_dcel.pyx":705 - * HE[j][i] = HE[i][j] + /* "squish/voronoi.pyx":715 + * HE[j][i] = HE[i][j] + * + * return HE # <<<<<<<<<<<<<< * - * return HE # <<<<<<<<<<<<<< * */ __Pyx_XDECREF(((PyObject *)__pyx_r)); - if (!(likely(((__pyx_v_HE) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_HE, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 705, __pyx_L1_error) + if (!(likely(((__pyx_v_HE) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_HE, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 715, __pyx_L1_error) __Pyx_INCREF(__pyx_v_HE); __pyx_r = ((PyArrayObject *)__pyx_v_HE); goto __pyx_L0; - /* "squish/_squish/voronoi_dcel.pyx":680 - * #return higher, k1 + /* "squish/voronoi.pyx":690 * - * def hessian(self, d: float) -> np.ndarray: # <<<<<<<<<<<<<< - * """ - * Obtains the approximate Hessian. + * + * def hessian(self, d: float) -> np.ndarray: # <<<<<<<<<<<<<< + * """ + * Obtains the approximate Hessian. */ /* function exit code */ @@ -14910,7 +11765,7 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_14); - __Pyx_AddTraceback("_squish.VoronoiContainer.hessian", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.hessian", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_HE); @@ -14925,4708 +11780,674 @@ static PyArrayObject *__pyx_pf_7_squish_16VoronoiContainer_6hessian(struct __pyx return __pyx_r; } -/* "_squish.pxd":210 +/* "squish/voronoi.pyx":718 * - * cdef class VoronoiContainer: - * cdef readonly INT_T n # <<<<<<<<<<<<<< - * cdef readonly FLOAT_T w, h, r, energy - * cdef FLOAT_T [2] dim - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_1n_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_1n_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_16VoronoiContainer_1n___get__(((struct __pyx_obj_7_squish_VoronoiContainer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_1n___get__(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->n); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 210, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("_squish.VoronoiContainer.n.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "_squish.pxd":211 - * cdef class VoronoiContainer: - * cdef readonly INT_T n - * cdef readonly FLOAT_T w, h, r, energy # <<<<<<<<<<<<<< - * cdef FLOAT_T [2] dim - * cdef FLOAT_T [:, ::1] points, vertices, site_cache, edge_cache, grad - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_1w_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_1w_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_16VoronoiContainer_1w___get__(((struct __pyx_obj_7_squish_VoronoiContainer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_1w___get__(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->w); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 211, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("_squish.VoronoiContainer.w.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_1h_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_1h_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_16VoronoiContainer_1h___get__(((struct __pyx_obj_7_squish_VoronoiContainer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_1h___get__(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->h); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 211, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("_squish.VoronoiContainer.h.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_1r_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_1r_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_16VoronoiContainer_1r___get__(((struct __pyx_obj_7_squish_VoronoiContainer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_1r___get__(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->r); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 211, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("_squish.VoronoiContainer.r.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_6energy_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_6energy_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_16VoronoiContainer_6energy___get__(((struct __pyx_obj_7_squish_VoronoiContainer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_6energy___get__(struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->energy); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 211, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("_squish.VoronoiContainer.energy.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_9__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_9__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_16VoronoiContainer_8__reduce_cython__(((struct __pyx_obj_7_squish_VoronoiContainer *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 0); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(2, 2, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("_squish.VoronoiContainer.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_11__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ -static PyObject *__pyx_pw_7_squish_16VoronoiContainer_11__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_16VoronoiContainer_10__setstate_cython__(((struct __pyx_obj_7_squish_VoronoiContainer *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_7_squish_16VoronoiContainer_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_squish_VoronoiContainer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 0); - - /* "(tree fragment)":4 - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(2, 4, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("_squish.VoronoiContainer.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "squish/_squish/energy.pyx":14 - * title_str = "Area" * - * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, # <<<<<<<<<<<<<< - * np.ndarray[FLOAT_T, ndim=2] site_arr): - * self.edge_cache_map = &AREA_EDGE_CACHE_MAP + * def site_vert_arr(self): # -> List[np.ndarray] # <<<<<<<<<<<<<< + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) */ /* Python wrapper */ -static int __pyx_pw_7_squish_10AreaEnergy_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_7_squish_10AreaEnergy_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - __pyx_t_7_squish_INT_T __pyx_v_n; - __pyx_t_7_squish_FLOAT_T __pyx_v_w; - __pyx_t_7_squish_FLOAT_T __pyx_v_h; - __pyx_t_7_squish_FLOAT_T __pyx_v_r; - PyArrayObject *__pyx_v_site_arr = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - int __pyx_r; +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_9site_vert_arr(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_9site_vert_arr(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_w,&__pyx_n_s_h,&__pyx_n_s_r,&__pyx_n_s_site_arr,0}; - PyObject* values[5] = {0,0,0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 1); __PYX_ERR(3, 14, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 2); __PYX_ERR(3, 14, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 3: - if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_r)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 3); __PYX_ERR(3, 14, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 4: - if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_site_arr)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 4); __PYX_ERR(3, 14, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(3, 14, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - } - __pyx_v_n = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_n == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(3, 14, __pyx_L3_error) - __pyx_v_w = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_w == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(3, 14, __pyx_L3_error) - __pyx_v_h = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_h == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(3, 14, __pyx_L3_error) - __pyx_v_r = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_r == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(3, 14, __pyx_L3_error) - __pyx_v_site_arr = ((PyArrayObject *)values[4]); - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 14, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("_squish.AreaEnergy.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_site_arr), __pyx_ptype_5numpy_ndarray, 1, "site_arr", 0))) __PYX_ERR(3, 15, __pyx_L1_error) - __pyx_r = __pyx_pf_7_squish_10AreaEnergy___init__(((struct __pyx_obj_7_squish_AreaEnergy *)__pyx_v_self), __pyx_v_n, __pyx_v_w, __pyx_v_h, __pyx_v_r, __pyx_v_site_arr); + __Pyx_RefNannySetupContext("site_vert_arr (wrapper)", 0); + __pyx_r = __pyx_pf_6squish_7voronoi_16VoronoiContainer_8site_vert_arr(((struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)__pyx_v_self)); /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_7_squish_10AreaEnergy___init__(struct __pyx_obj_7_squish_AreaEnergy *__pyx_v_self, __pyx_t_7_squish_INT_T __pyx_v_n, __pyx_t_7_squish_FLOAT_T __pyx_v_w, __pyx_t_7_squish_FLOAT_T __pyx_v_h, __pyx_t_7_squish_FLOAT_T __pyx_v_r, PyArrayObject *__pyx_v_site_arr) { - __Pyx_LocalBuf_ND __pyx_pybuffernd_site_arr; - __Pyx_Buffer __pyx_pybuffer_site_arr; - int __pyx_r; +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_8site_vert_arr(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self) { + __pyx_t_6squish_7voronoi_VoronoiInfo __pyx_v_info; + __pyx_t_6squish_4core_INT_T __pyx_v_i; + __pyx_t_6squish_4core_INT_T __pyx_v_j; + __pyx_t_6squish_7voronoi_Site __pyx_v_xi; + __pyx_t_6squish_7voronoi_HalfEdge __pyx_v_e; + __pyx_t_6squish_4core_Vector2D __pyx_v_v; + PyObject *__pyx_v_sites = NULL; + PyObject *__pyx_v_site_verts = NULL; + PyObject *__pyx_v_verts = NULL; + PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; + __pyx_t_6squish_4core_INT_T __pyx_t_3; + __pyx_t_6squish_4core_INT_T __pyx_t_4; + __pyx_t_6squish_4core_INT_T __pyx_t_5; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; - int __pyx_t_8; - PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_8 = NULL; + int __pyx_t_9; + __pyx_t_6squish_4core_INT_T __pyx_t_10; + __pyx_t_6squish_4core_INT_T __pyx_t_11; + __pyx_t_6squish_4core_INT_T __pyx_t_12; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__init__", 0); - __pyx_pybuffer_site_arr.pybuffer.buf = NULL; - __pyx_pybuffer_site_arr.refcount = 0; - __pyx_pybuffernd_site_arr.data = NULL; - __pyx_pybuffernd_site_arr.rcbuffer = &__pyx_pybuffer_site_arr; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_site_arr, &__Pyx_TypeInfo_nn___pyx_t_7_squish_FLOAT_T, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(3, 14, __pyx_L1_error) - } - __pyx_pybuffernd_site_arr.diminfo[0].strides = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_site_arr.diminfo[0].shape = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_site_arr.diminfo[1].strides = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_site_arr.diminfo[1].shape = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.shape[1]; + __Pyx_RefNannySetupContext("site_vert_arr", 0); - /* "squish/_squish/energy.pyx":16 - * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, - * np.ndarray[FLOAT_T, ndim=2] site_arr): - * self.edge_cache_map = &AREA_EDGE_CACHE_MAP # <<<<<<<<<<<<<< - * self.energy = 0.0 + /* "squish/voronoi.pyx":719 + * + * def site_vert_arr(self): # -> List[np.ndarray] + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) * */ - __pyx_v_self->__pyx_base.edge_cache_map = (&__pyx_v_7_squish_AREA_EDGE_CACHE_MAP); + if (unlikely(!__pyx_v_self->sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 719, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 719, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->points.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 719, __pyx_L1_error)} - /* "squish/_squish/energy.pyx":17 - * np.ndarray[FLOAT_T, ndim=2] site_arr): - * self.edge_cache_map = &AREA_EDGE_CACHE_MAP - * self.energy = 0.0 # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":720 + * def site_vert_arr(self): # -> List[np.ndarray] + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) # <<<<<<<<<<<<<< * - * super().__init__(n, w, h, r, site_arr) + * cdef INT_T i, j */ - __pyx_v_self->__pyx_base.energy = 0.0; + if (unlikely(!__pyx_v_self->vertices.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 720, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->site_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 720, __pyx_L1_error)} + if (unlikely(!__pyx_v_self->edge_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 720, __pyx_L1_error)} - /* "squish/_squish/energy.pyx":19 - * self.energy = 0.0 + /* "squish/voronoi.pyx":719 * - * super().__init__(n, w, h, r, site_arr) # <<<<<<<<<<<<<< - * self.minimum = (n)*(w*h/(n)-PI*r**2)**2 + * def site_vert_arr(self): # -> List[np.ndarray] + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) * */ - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 19, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)__pyx_ptype_7_squish_AreaEnergy)); - __Pyx_GIVEREF(((PyObject *)__pyx_ptype_7_squish_AreaEnergy)); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_7_squish_AreaEnergy)); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 19, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 19, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_From_npy_int64(__pyx_v_n); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 19, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyFloat_FromDouble(__pyx_v_w); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 19, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyFloat_FromDouble(__pyx_v_h); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 19, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PyFloat_FromDouble(__pyx_v_r); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 19, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = NULL; - __pyx_t_8 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_8 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, ((PyObject *)__pyx_v_site_arr)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 19, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, ((PyObject *)__pyx_v_site_arr)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 19, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - { - __pyx_t_9 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 19, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - if (__pyx_t_7) { - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; - } - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_4); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_8, __pyx_t_6); - __Pyx_INCREF(((PyObject *)__pyx_v_site_arr)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_site_arr)); - PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_8, ((PyObject *)__pyx_v_site_arr)); - __pyx_t_3 = 0; - __pyx_t_4 = 0; - __pyx_t_5 = 0; - __pyx_t_6 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 19, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_info = __pyx_f_6squish_7voronoi__VoronoiInfo(__pyx_v_self->sites, __pyx_v_self->edges, __pyx_v_self->points, __pyx_v_self->vertices, __pyx_v_self->site_cache, __pyx_v_self->edge_cache, __pyx_v_self->edge_cache_map); - /* "squish/_squish/energy.pyx":20 - * - * super().__init__(n, w, h, r, site_arr) - * self.minimum = (n)*(w*h/(n)-PI*r**2)**2 # <<<<<<<<<<<<<< + /* "squish/voronoi.pyx":727 + * cdef Vector2D v * + * sites, site_verts = [], [] # <<<<<<<<<<<<<< * + * for i in range(self.n): */ - __pyx_v_self->minimum = (((__pyx_t_7_squish_FLOAT_T)__pyx_v_n) * pow((((__pyx_v_w * __pyx_v_h) / ((__pyx_t_7_squish_FLOAT_T)__pyx_v_n)) - (M_PI * pow(__pyx_v_r, 2.0))), 2.0)); - - /* "squish/_squish/energy.pyx":14 - * title_str = "Area" - * - * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, # <<<<<<<<<<<<<< - * np.ndarray[FLOAT_T, ndim=2] site_arr): - * self.edge_cache_map = &AREA_EDGE_CACHE_MAP - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_9); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_AddTraceback("_squish.AreaEnergy.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - goto __pyx_L2; - __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "squish/_squish/energy.pyx":23 - * - * - * cdef void precompute(self) except *: # <<<<<<<<<<<<<< - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - */ - -static void __pyx_f_7_squish_10AreaEnergy_precompute(struct __pyx_obj_7_squish_AreaEnergy *__pyx_v_self) { - __pyx_t_7_squish_VoronoiInfo __pyx_v_info; - __pyx_t_7_squish_Site __pyx_v_xi; - __pyx_t_7_squish_HalfEdge __pyx_v_em; - __pyx_t_7_squish_HalfEdge __pyx_v_e; - __pyx_t_7_squish_HalfEdge __pyx_v_ep; - __pyx_t_7_squish_Vector2D __pyx_v_vdiff; - __pyx_t_7_squish_FLOAT_T __pyx_v_A; - __pyx_t_7_squish_FLOAT_T __pyx_v_energy; - __pyx_t_7_squish_INT_T __pyx_v_i; - CYTHON_UNUSED __pyx_t_7_squish_INT_T __pyx_v_j; - __Pyx_RefNannyDeclarations - Py_ssize_t __pyx_t_1; - __pyx_t_7_squish_INT_T __pyx_t_2; - __pyx_t_7_squish_INT_T __pyx_t_3; - int __pyx_t_4; - __pyx_t_7_squish_INT_T __pyx_t_5; - __pyx_t_7_squish_INT_T __pyx_t_6; - __pyx_t_7_squish_INT_T __pyx_t_7; - __pyx_t_7_squish_HalfEdge __pyx_t_8; - __pyx_t_7_squish_HalfEdge __pyx_t_9; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("precompute", 0); - - /* "squish/_squish/energy.pyx":24 - * - * cdef void precompute(self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - * - */ - if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 24, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 24, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.points.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 24, __pyx_L1_error)} - - /* "squish/_squish/energy.pyx":25 - * cdef void precompute(self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) # <<<<<<<<<<<<<< - * - * cdef Site xi - */ - if (unlikely(!__pyx_v_self->__pyx_base.vertices.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 25, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.site_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 25, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.edge_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 25, __pyx_L1_error)} - - /* "squish/_squish/energy.pyx":24 - * - * cdef void precompute(self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - * - */ - __pyx_v_info = __pyx_v_7_squish_init.VoronoiInfo(__pyx_v_self->__pyx_base.sites, __pyx_v_self->__pyx_base.edges, __pyx_v_self->__pyx_base.points, __pyx_v_self->__pyx_base.vertices, __pyx_v_self->__pyx_base.site_cache, __pyx_v_self->__pyx_base.edge_cache, __pyx_v_self->__pyx_base.edge_cache_map); - - /* "squish/_squish/energy.pyx":30 - * cdef HalfEdge em, e, ep - * cdef Vector2D vdiff - * cdef FLOAT_T A = PI*self.r**2 # <<<<<<<<<<<<<< - * cdef FLOAT_T energy = 0 - * - */ - __pyx_v_A = (M_PI * pow(__pyx_v_self->__pyx_base.r, 2.0)); - - /* "squish/_squish/energy.pyx":31 - * cdef Vector2D vdiff - * cdef FLOAT_T A = PI*self.r**2 - * cdef FLOAT_T energy = 0 # <<<<<<<<<<<<<< - * - * cdef INT_T i, j - */ - __pyx_v_energy = 0.0; - - /* "squish/_squish/energy.pyx":34 - * - * cdef INT_T i, j - * for i in prange(self.sites.shape[0], nogil=True): # <<<<<<<<<<<<<< - * xi = init.Site(i, &info) - * e = xi.edge(&xi) - */ - { - #ifdef WITH_THREAD - PyThreadState *_save; - Py_UNBLOCK_THREADS - __Pyx_FastGIL_Remember(); - #endif - /*try:*/ { - if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 34, __pyx_L4_error)} - __pyx_t_1 = (__pyx_v_self->__pyx_base.sites.shape[0]); - if ((1 == 0)) abort(); - { - #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) - #undef likely - #undef unlikely - #define likely(x) (x) - #define unlikely(x) (x) - #endif - __pyx_t_3 = (__pyx_t_1 - 0 + 1 - 1/abs(1)) / 1; - if (__pyx_t_3 > 0) - { - #ifdef _OPENMP - #pragma omp parallel reduction(+:__pyx_v_energy) private(__pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7, __pyx_t_8, __pyx_t_9) - #endif /* _OPENMP */ - { - #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_e) lastprivate(__pyx_v_em) lastprivate(__pyx_v_ep) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) lastprivate(__pyx_v_vdiff) lastprivate(__pyx_v_xi) - #endif /* _OPENMP */ - for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_3; __pyx_t_2++){ - { - __pyx_v_i = (__pyx_t_7_squish_INT_T)(0 + 1 * __pyx_t_2); - /* Initialize private variables to invalid values */ - __pyx_v_j = ((__pyx_t_7_squish_INT_T)0xbad0bad0); - - /* "squish/_squish/energy.pyx":35 - * cdef INT_T i, j - * for i in prange(self.sites.shape[0], nogil=True): - * xi = init.Site(i, &info) # <<<<<<<<<<<<<< - * e = xi.edge(&xi) - * xi.cache.energy(&xi, - */ - __pyx_v_xi = __pyx_v_7_squish_init.Site(__pyx_v_i, (&__pyx_v_info)); - - /* "squish/_squish/energy.pyx":36 - * for i in prange(self.sites.shape[0], nogil=True): - * xi = init.Site(i, &info) - * e = xi.edge(&xi) # <<<<<<<<<<<<<< - * xi.cache.energy(&xi, - * (xi.cache.area(&xi, NAN) - A)**2 - */ - __pyx_v_e = __pyx_v_xi.edge((&__pyx_v_xi)); - - /* "squish/_squish/energy.pyx":37 - * xi = init.Site(i, &info) - * e = xi.edge(&xi) - * xi.cache.energy(&xi, # <<<<<<<<<<<<<< - * (xi.cache.area(&xi, NAN) - A)**2 - * ) - */ - (void)(__pyx_v_xi.cache->energy((&__pyx_v_xi), pow((__pyx_v_xi.cache->area((&__pyx_v_xi), NAN) - __pyx_v_A), 2.0))); - - /* "squish/_squish/energy.pyx":40 - * (xi.cache.area(&xi, NAN) - A)**2 - * ) - * if i < self.n: # <<<<<<<<<<<<<< - * energy += xi.cache.energy(&xi, NAN) - * - */ - __pyx_t_4 = ((__pyx_v_i < __pyx_v_self->__pyx_base.n) != 0); - if (__pyx_t_4) { - - /* "squish/_squish/energy.pyx":41 - * ) - * if i < self.n: - * energy += xi.cache.energy(&xi, NAN) # <<<<<<<<<<<<<< - * - * for j in range(xi.edge_num(&xi)): - */ - __pyx_v_energy = (__pyx_v_energy + __pyx_v_xi.cache->energy((&__pyx_v_xi), NAN)); - - /* "squish/_squish/energy.pyx":40 - * (xi.cache.area(&xi, NAN) - A)**2 - * ) - * if i < self.n: # <<<<<<<<<<<<<< - * energy += xi.cache.energy(&xi, NAN) - * - */ - } - - /* "squish/_squish/energy.pyx":43 - * energy += xi.cache.energy(&xi, NAN) - * - * for j in range(xi.edge_num(&xi)): # <<<<<<<<<<<<<< - * em, ep = e.prev(&e), e.next(&e) - * vdiff = em.origin(&em) - */ - __pyx_t_5 = __pyx_v_xi.edge_num((&__pyx_v_xi)); - __pyx_t_6 = __pyx_t_5; - for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { - __pyx_v_j = __pyx_t_7; - - /* "squish/_squish/energy.pyx":44 - * - * for j in range(xi.edge_num(&xi)): - * em, ep = e.prev(&e), e.next(&e) # <<<<<<<<<<<<<< - * vdiff = em.origin(&em) - * vdiff.self.vsub(&vdiff, ep.origin(&ep)) - */ - __pyx_t_8 = __pyx_v_e.prev((&__pyx_v_e)); - __pyx_t_9 = __pyx_v_e.next((&__pyx_v_e)); - __pyx_v_em = __pyx_t_8; - __pyx_v_ep = __pyx_t_9; - - /* "squish/_squish/energy.pyx":45 - * for j in range(xi.edge_num(&xi)): - * em, ep = e.prev(&e), e.next(&e) - * vdiff = em.origin(&em) # <<<<<<<<<<<<<< - * vdiff.self.vsub(&vdiff, ep.origin(&ep)) - * e.cache.dVdv(&e, R.vecmul(&R, vdiff)) - */ - __pyx_v_vdiff = __pyx_v_em.origin((&__pyx_v_em)); - - /* "squish/_squish/energy.pyx":46 - * em, ep = e.prev(&e), e.next(&e) - * vdiff = em.origin(&em) - * vdiff.self.vsub(&vdiff, ep.origin(&ep)) # <<<<<<<<<<<<<< - * e.cache.dVdv(&e, R.vecmul(&R, vdiff)) - * e.cache.H(&e, VoronoiContainer.calc_H(em, e)) - */ - (void)(__pyx_v_vdiff.self.vsub((&__pyx_v_vdiff), __pyx_v_ep.origin((&__pyx_v_ep)))); - - /* "squish/_squish/energy.pyx":47 - * vdiff = em.origin(&em) - * vdiff.self.vsub(&vdiff, ep.origin(&ep)) - * e.cache.dVdv(&e, R.vecmul(&R, vdiff)) # <<<<<<<<<<<<<< - * e.cache.H(&e, VoronoiContainer.calc_H(em, e)) - * - */ - (void)(__pyx_v_e.cache->dVdv((&__pyx_v_e), __pyx_v_7_squish_R.vecmul((&__pyx_v_7_squish_R), __pyx_v_vdiff))); - - /* "squish/_squish/energy.pyx":48 - * vdiff.self.vsub(&vdiff, ep.origin(&ep)) - * e.cache.dVdv(&e, R.vecmul(&R, vdiff)) - * e.cache.H(&e, VoronoiContainer.calc_H(em, e)) # <<<<<<<<<<<<<< - * - * e = e.next(&e) - */ - (void)(__pyx_v_e.cache->H((&__pyx_v_e), __pyx_f_7_squish_16VoronoiContainer_calc_H(__pyx_v_em, __pyx_v_e))); - - /* "squish/_squish/energy.pyx":50 - * e.cache.H(&e, VoronoiContainer.calc_H(em, e)) - * - * e = e.next(&e) # <<<<<<<<<<<<<< - * - * self.energy = energy - */ - __pyx_v_e = __pyx_v_e.next((&__pyx_v_e)); - } - } - } - } - } - } - #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) - #undef likely - #undef unlikely - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) - #endif - } - - /* "squish/_squish/energy.pyx":34 - * - * cdef INT_T i, j - * for i in prange(self.sites.shape[0], nogil=True): # <<<<<<<<<<<<<< - * xi = init.Site(i, &info) - * e = xi.edge(&xi) - */ - /*finally:*/ { - /*normal exit:*/{ - #ifdef WITH_THREAD - __Pyx_FastGIL_Forget(); - Py_BLOCK_THREADS - #endif - goto __pyx_L5; - } - __pyx_L4_error: { - #ifdef WITH_THREAD - __Pyx_FastGIL_Forget(); - Py_BLOCK_THREADS - #endif - goto __pyx_L1_error; - } - __pyx_L5:; - } - } - - /* "squish/_squish/energy.pyx":52 - * e = e.next(&e) - * - * self.energy = energy # <<<<<<<<<<<<<< - * - * - */ - __pyx_v_self->__pyx_base.energy = __pyx_v_energy; - - /* "squish/_squish/energy.pyx":23 - * - * - * cdef void precompute(self) except *: # <<<<<<<<<<<<<< - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - */ - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("_squish.AreaEnergy.precompute", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_L0:; - __Pyx_RefNannyFinishContext(); -} - -/* "squish/_squish/energy.pyx":55 - * - * - * cdef void calc_grad(self) except *: # <<<<<<<<<<<<<< - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - */ - -static void __pyx_f_7_squish_10AreaEnergy_calc_grad(struct __pyx_obj_7_squish_AreaEnergy *__pyx_v_self) { - __pyx_t_7_squish_VoronoiInfo __pyx_v_info; - __pyx_t_7_squish_Site __pyx_v_xi; - __pyx_t_7_squish_Site __pyx_v_xf; - __pyx_t_7_squish_HalfEdge __pyx_v_e; - __pyx_t_7_squish_HalfEdge __pyx_v_f; - __pyx_t_7_squish_Vector2D __pyx_v_dedxi_p; - __pyx_t_7_squish_BitSet __pyx_v_edge_set; - __pyx_t_7_squish_INT_T __pyx_v_num_edges; - __pyx_t_7_squish_FLOAT_T __pyx_v_A; - __Pyx_memviewslice __pyx_v_dedx = { 0, 0, { 0 }, { 0 }, { 0 } }; - __pyx_t_7_squish_INT_T __pyx_v_i; - CYTHON_UNUSED __pyx_t_7_squish_INT_T __pyx_v_j; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } }; - __pyx_t_7_squish_INT_T __pyx_t_6; - __pyx_t_7_squish_INT_T __pyx_t_7; - __pyx_t_7_squish_INT_T __pyx_t_8; - __pyx_t_7_squish_INT_T __pyx_t_9; - __pyx_t_7_squish_INT_T __pyx_t_10; - __pyx_t_7_squish_INT_T __pyx_t_11; - int __pyx_t_12; - __pyx_t_7_squish_INT_T __pyx_t_13; - Py_ssize_t __pyx_t_14; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("calc_grad", 0); - - /* "squish/_squish/energy.pyx":56 - * - * cdef void calc_grad(self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - * - */ - if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 56, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 56, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.points.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 56, __pyx_L1_error)} - - /* "squish/_squish/energy.pyx":57 - * cdef void calc_grad(self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) # <<<<<<<<<<<<<< - * - * cdef Site xi, xf - */ - if (unlikely(!__pyx_v_self->__pyx_base.vertices.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 57, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.site_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 57, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.edge_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 57, __pyx_L1_error)} - - /* "squish/_squish/energy.pyx":56 - * - * cdef void calc_grad(self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - * - */ - __pyx_v_info = __pyx_v_7_squish_init.VoronoiInfo(__pyx_v_self->__pyx_base.sites, __pyx_v_self->__pyx_base.edges, __pyx_v_self->__pyx_base.points, __pyx_v_self->__pyx_base.vertices, __pyx_v_self->__pyx_base.site_cache, __pyx_v_self->__pyx_base.edge_cache, __pyx_v_self->__pyx_base.edge_cache_map); - - /* "squish/_squish/energy.pyx":64 - * cdef BitSet edge_set - * - * cdef INT_T num_edges = self.edges.shape[0] # <<<<<<<<<<<<<< - * cdef FLOAT_T A = PI*self.r**2 - * - */ - if (unlikely(!__pyx_v_self->__pyx_base.edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 64, __pyx_L1_error)} - __pyx_v_num_edges = (__pyx_v_self->__pyx_base.edges.shape[0]); - - /* "squish/_squish/energy.pyx":65 - * - * cdef INT_T num_edges = self.edges.shape[0] - * cdef FLOAT_T A = PI*self.r**2 # <<<<<<<<<<<<<< - * - * cdef FLOAT_T [:, ::1] dedx = np.zeros((self.n, 2), dtype=FLOAT) - */ - __pyx_v_A = (M_PI * pow(__pyx_v_self->__pyx_base.r, 2.0)); - - /* "squish/_squish/energy.pyx":67 - * cdef FLOAT_T A = PI*self.r**2 - * - * cdef FLOAT_T [:, ::1] dedx = np.zeros((self.n, 2), dtype=FLOAT) # <<<<<<<<<<<<<< - * - * cdef INT_T i, j - */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 67, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 727, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 67, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 727, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->__pyx_base.n); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 67, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 67, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); - __Pyx_INCREF(__pyx_int_2); - __Pyx_GIVEREF(__pyx_int_2); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_2); + __pyx_v_sites = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 67, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 67, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 67, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(3, 67, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 67, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_7_squish_FLOAT_T(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(3, 67, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_dedx = __pyx_t_5; - __pyx_t_5.memview = NULL; - __pyx_t_5.data = NULL; - - /* "squish/_squish/energy.pyx":70 - * - * cdef INT_T i, j - * for i in prange(self.n, nogil=True): # <<<<<<<<<<<<<< - * xi = init.Site(i, &info) - * e = xi.edge(&xi) - */ - { - #ifdef WITH_THREAD - PyThreadState *_save; - Py_UNBLOCK_THREADS - __Pyx_FastGIL_Remember(); - #endif - /*try:*/ { - __pyx_t_6 = __pyx_v_self->__pyx_base.n; - if ((1 == 0)) abort(); - { - #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) - #undef likely - #undef unlikely - #define likely(x) (x) - #define unlikely(x) (x) - #endif - __pyx_t_8 = (__pyx_t_6 - 0 + 1 - 1/abs(1)) / 1; - if (__pyx_t_8 > 0) - { - #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_10, __pyx_t_11, __pyx_t_12, __pyx_t_13, __pyx_t_14, __pyx_t_9) - #endif /* _OPENMP */ - { - #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_dedxi_p) lastprivate(__pyx_v_e) lastprivate(__pyx_v_edge_set) lastprivate(__pyx_v_f) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) lastprivate(__pyx_v_xf) lastprivate(__pyx_v_xi) - #endif /* _OPENMP */ - for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_8; __pyx_t_7++){ - { - __pyx_v_i = (__pyx_t_7_squish_INT_T)(0 + 1 * __pyx_t_7); - /* Initialize private variables to invalid values */ - __pyx_v_j = ((__pyx_t_7_squish_INT_T)0xbad0bad0); - - /* "squish/_squish/energy.pyx":71 - * cdef INT_T i, j - * for i in prange(self.n, nogil=True): - * xi = init.Site(i, &info) # <<<<<<<<<<<<<< - * e = xi.edge(&xi) - * edge_set = init.BitSet(num_edges) - */ - __pyx_v_xi = __pyx_v_7_squish_init.Site(__pyx_v_i, (&__pyx_v_info)); - - /* "squish/_squish/energy.pyx":72 - * for i in prange(self.n, nogil=True): - * xi = init.Site(i, &info) - * e = xi.edge(&xi) # <<<<<<<<<<<<<< - * edge_set = init.BitSet(num_edges) - * for j in range(xi.edge_num(&xi)): # Looping through site edges. - */ - __pyx_v_e = __pyx_v_xi.edge((&__pyx_v_xi)); - - /* "squish/_squish/energy.pyx":73 - * xi = init.Site(i, &info) - * e = xi.edge(&xi) - * edge_set = init.BitSet(num_edges) # <<<<<<<<<<<<<< - * for j in range(xi.edge_num(&xi)): # Looping through site edges. - * f = e - */ - __pyx_v_edge_set = __pyx_v_7_squish_init.BitSet(__pyx_v_num_edges); - - /* "squish/_squish/energy.pyx":74 - * e = xi.edge(&xi) - * edge_set = init.BitSet(num_edges) - * for j in range(xi.edge_num(&xi)): # Looping through site edges. # <<<<<<<<<<<<<< - * f = e - * while True: # Circling this vertex. - */ - __pyx_t_9 = __pyx_v_xi.edge_num((&__pyx_v_xi)); - __pyx_t_10 = __pyx_t_9; - for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) { - __pyx_v_j = __pyx_t_11; - - /* "squish/_squish/energy.pyx":75 - * edge_set = init.BitSet(num_edges) - * for j in range(xi.edge_num(&xi)): # Looping through site edges. - * f = e # <<<<<<<<<<<<<< - * while True: # Circling this vertex. - * if not edge_set.add(&edge_set, f.arr_index): - */ - __pyx_v_f = __pyx_v_e; - - /* "squish/_squish/energy.pyx":76 - * for j in range(xi.edge_num(&xi)): # Looping through site edges. - * f = e - * while True: # Circling this vertex. # <<<<<<<<<<<<<< - * if not edge_set.add(&edge_set, f.arr_index): - * xf = f.face(&f) - */ - while (1) { - - /* "squish/_squish/energy.pyx":77 - * f = e - * while True: # Circling this vertex. - * if not edge_set.add(&edge_set, f.arr_index): # <<<<<<<<<<<<<< - * xf = f.face(&f) - * dedxi_p = f.cache.dVdv(&f, NAN_VECTOR) #dVdv - */ - __pyx_t_12 = ((!(__pyx_v_edge_set.add((&__pyx_v_edge_set), __pyx_v_f.arr_index) != 0)) != 0); - if (__pyx_t_12) { - - /* "squish/_squish/energy.pyx":78 - * while True: # Circling this vertex. - * if not edge_set.add(&edge_set, f.arr_index): - * xf = f.face(&f) # <<<<<<<<<<<<<< - * dedxi_p = f.cache.dVdv(&f, NAN_VECTOR) #dVdv - * dedxi_p.self.smul(&dedxi_p, xf.cache.area(&xf, NAN) - A) - */ - __pyx_v_xf = __pyx_v_f.face((&__pyx_v_f)); - - /* "squish/_squish/energy.pyx":79 - * if not edge_set.add(&edge_set, f.arr_index): - * xf = f.face(&f) - * dedxi_p = f.cache.dVdv(&f, NAN_VECTOR) #dVdv # <<<<<<<<<<<<<< - * dedxi_p.self.smul(&dedxi_p, xf.cache.area(&xf, NAN) - A) - * dedxi_p.self.matmul(&dedxi_p, e.cache.H(&e, NAN_MATRIX)) - */ - __pyx_v_dedxi_p = __pyx_v_f.cache->dVdv((&__pyx_v_f), __pyx_v_7_squish_NAN_VECTOR); - - /* "squish/_squish/energy.pyx":80 - * xf = f.face(&f) - * dedxi_p = f.cache.dVdv(&f, NAN_VECTOR) #dVdv - * dedxi_p.self.smul(&dedxi_p, xf.cache.area(&xf, NAN) - A) # <<<<<<<<<<<<<< - * dedxi_p.self.matmul(&dedxi_p, e.cache.H(&e, NAN_MATRIX)) - * dedx[i][0] -= dedxi_p.x - */ - (void)(__pyx_v_dedxi_p.self.smul((&__pyx_v_dedxi_p), (__pyx_v_xf.cache->area((&__pyx_v_xf), NAN) - __pyx_v_A))); - - /* "squish/_squish/energy.pyx":81 - * dedxi_p = f.cache.dVdv(&f, NAN_VECTOR) #dVdv - * dedxi_p.self.smul(&dedxi_p, xf.cache.area(&xf, NAN) - A) - * dedxi_p.self.matmul(&dedxi_p, e.cache.H(&e, NAN_MATRIX)) # <<<<<<<<<<<<<< - * dedx[i][0] -= dedxi_p.x - * dedx[i][1] -= dedxi_p.y - */ - (void)(__pyx_v_dedxi_p.self.matmul((&__pyx_v_dedxi_p), __pyx_v_e.cache->H((&__pyx_v_e), __pyx_v_7_squish_NAN_MATRIX))); - - /* "squish/_squish/energy.pyx":82 - * dedxi_p.self.smul(&dedxi_p, xf.cache.area(&xf, NAN) - A) - * dedxi_p.self.matmul(&dedxi_p, e.cache.H(&e, NAN_MATRIX)) - * dedx[i][0] -= dedxi_p.x # <<<<<<<<<<<<<< - * dedx[i][1] -= dedxi_p.y - * - */ - __pyx_t_13 = __pyx_v_i; - __pyx_t_14 = 0; - *((__pyx_t_7_squish_FLOAT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_dedx.data + __pyx_t_13 * __pyx_v_dedx.strides[0]) )) + __pyx_t_14)) )) -= __pyx_v_dedxi_p.x; - - /* "squish/_squish/energy.pyx":83 - * dedxi_p.self.matmul(&dedxi_p, e.cache.H(&e, NAN_MATRIX)) - * dedx[i][0] -= dedxi_p.x - * dedx[i][1] -= dedxi_p.y # <<<<<<<<<<<<<< - * - * f = f.twin(&f) - */ - __pyx_t_13 = __pyx_v_i; - __pyx_t_14 = 1; - *((__pyx_t_7_squish_FLOAT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_dedx.data + __pyx_t_13 * __pyx_v_dedx.strides[0]) )) + __pyx_t_14)) )) -= __pyx_v_dedxi_p.y; - - /* "squish/_squish/energy.pyx":77 - * f = e - * while True: # Circling this vertex. - * if not edge_set.add(&edge_set, f.arr_index): # <<<<<<<<<<<<<< - * xf = f.face(&f) - * dedxi_p = f.cache.dVdv(&f, NAN_VECTOR) #dVdv - */ - } - - /* "squish/_squish/energy.pyx":85 - * dedx[i][1] -= dedxi_p.y - * - * f = f.twin(&f) # <<<<<<<<<<<<<< - * f = f.next(&f) - * if f.arr_index == e.arr_index: - */ - __pyx_v_f = __pyx_v_f.twin((&__pyx_v_f)); - - /* "squish/_squish/energy.pyx":86 - * - * f = f.twin(&f) - * f = f.next(&f) # <<<<<<<<<<<<<< - * if f.arr_index == e.arr_index: - * break - */ - __pyx_v_f = __pyx_v_f.next((&__pyx_v_f)); - - /* "squish/_squish/energy.pyx":87 - * f = f.twin(&f) - * f = f.next(&f) - * if f.arr_index == e.arr_index: # <<<<<<<<<<<<<< - * break - * - */ - __pyx_t_12 = ((__pyx_v_f.arr_index == __pyx_v_e.arr_index) != 0); - if (__pyx_t_12) { - - /* "squish/_squish/energy.pyx":88 - * f = f.next(&f) - * if f.arr_index == e.arr_index: - * break # <<<<<<<<<<<<<< - * - * e = e.next(&e) - */ - goto __pyx_L13_break; - - /* "squish/_squish/energy.pyx":87 - * f = f.twin(&f) - * f = f.next(&f) - * if f.arr_index == e.arr_index: # <<<<<<<<<<<<<< - * break - * - */ - } - } - __pyx_L13_break:; - - /* "squish/_squish/energy.pyx":90 - * break - * - * e = e.next(&e) # <<<<<<<<<<<<<< - * edge_set.free(&edge_set) - * self.grad = dedx - */ - __pyx_v_e = __pyx_v_e.next((&__pyx_v_e)); - } - - /* "squish/_squish/energy.pyx":91 - * - * e = e.next(&e) - * edge_set.free(&edge_set) # <<<<<<<<<<<<<< - * self.grad = dedx - * - */ - __pyx_v_edge_set.free((&__pyx_v_edge_set)); - } - } - } - } - } - #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) - #undef likely - #undef unlikely - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) - #endif - } - - /* "squish/_squish/energy.pyx":70 - * - * cdef INT_T i, j - * for i in prange(self.n, nogil=True): # <<<<<<<<<<<<<< - * xi = init.Site(i, &info) - * e = xi.edge(&xi) - */ - /*finally:*/ { - /*normal exit:*/{ - #ifdef WITH_THREAD - __Pyx_FastGIL_Forget(); - Py_BLOCK_THREADS - #endif - goto __pyx_L5; - } - __pyx_L5:; - } - } - - /* "squish/_squish/energy.pyx":92 - * e = e.next(&e) - * edge_set.free(&edge_set) - * self.grad = dedx # <<<<<<<<<<<<<< - * - * - */ - __PYX_XDEC_MEMVIEW(&__pyx_v_self->__pyx_base.grad, 0); - __PYX_INC_MEMVIEW(&__pyx_v_dedx, 0); - __pyx_v_self->__pyx_base.grad = __pyx_v_dedx; - - /* "squish/_squish/energy.pyx":55 - * - * - * cdef void calc_grad(self) except *: # <<<<<<<<<<<<<< - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - */ - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1); - __Pyx_AddTraceback("_squish.AreaEnergy.calc_grad", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_L0:; - __PYX_XDEC_MEMVIEW(&__pyx_v_dedx, 1); - __Pyx_RefNannyFinishContext(); -} - -/* "_squish.pxd":233 - * - * cdef class AreaEnergy(VoronoiContainer): - * cdef readonly FLOAT_T minimum # <<<<<<<<<<<<<< - * cdef void precompute(self) except * - * cdef void calc_grad(self) except * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_7_squish_10AreaEnergy_7minimum_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_7_squish_10AreaEnergy_7minimum_1__get__(PyObject *__pyx_v_self) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_10AreaEnergy_7minimum___get__(((struct __pyx_obj_7_squish_AreaEnergy *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_7_squish_10AreaEnergy_7minimum___get__(struct __pyx_obj_7_squish_AreaEnergy *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->minimum); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 233, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("_squish.AreaEnergy.minimum.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_7_squish_10AreaEnergy_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_7_squish_10AreaEnergy_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_10AreaEnergy_2__reduce_cython__(((struct __pyx_obj_7_squish_AreaEnergy *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_7_squish_10AreaEnergy_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_squish_AreaEnergy *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 0); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(2, 2, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("_squish.AreaEnergy.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_7_squish_10AreaEnergy_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ -static PyObject *__pyx_pw_7_squish_10AreaEnergy_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_10AreaEnergy_4__setstate_cython__(((struct __pyx_obj_7_squish_AreaEnergy *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_7_squish_10AreaEnergy_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_squish_AreaEnergy *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 0); - - /* "(tree fragment)":4 - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(2, 4, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("_squish.AreaEnergy.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "squish/_squish/energy.pyx":109 - * - * - * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, # <<<<<<<<<<<<<< - * np.ndarray[FLOAT_T, ndim=2] site_arr): - * #self.edge_cache_map = &AREA_EDGE_CACHE_MAP - */ - -/* Python wrapper */ -static int __pyx_pw_7_squish_14RadialALEnergy_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_7_squish_14RadialALEnergy_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - __pyx_t_7_squish_INT_T __pyx_v_n; - __pyx_t_7_squish_FLOAT_T __pyx_v_w; - __pyx_t_7_squish_FLOAT_T __pyx_v_h; - __pyx_t_7_squish_FLOAT_T __pyx_v_r; - PyArrayObject *__pyx_v_site_arr = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_w,&__pyx_n_s_h,&__pyx_n_s_r,&__pyx_n_s_site_arr,0}; - PyObject* values[5] = {0,0,0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 1); __PYX_ERR(3, 109, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 2); __PYX_ERR(3, 109, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 3: - if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_r)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 3); __PYX_ERR(3, 109, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 4: - if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_site_arr)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 4); __PYX_ERR(3, 109, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(3, 109, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - } - __pyx_v_n = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_n == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(3, 109, __pyx_L3_error) - __pyx_v_w = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_w == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(3, 109, __pyx_L3_error) - __pyx_v_h = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_h == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(3, 109, __pyx_L3_error) - __pyx_v_r = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_r == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(3, 109, __pyx_L3_error) - __pyx_v_site_arr = ((PyArrayObject *)values[4]); - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 109, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("_squish.RadialALEnergy.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_site_arr), __pyx_ptype_5numpy_ndarray, 1, "site_arr", 0))) __PYX_ERR(3, 110, __pyx_L1_error) - __pyx_r = __pyx_pf_7_squish_14RadialALEnergy___init__(((struct __pyx_obj_7_squish_RadialALEnergy *)__pyx_v_self), __pyx_v_n, __pyx_v_w, __pyx_v_h, __pyx_v_r, __pyx_v_site_arr); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_7_squish_14RadialALEnergy___init__(struct __pyx_obj_7_squish_RadialALEnergy *__pyx_v_self, __pyx_t_7_squish_INT_T __pyx_v_n, __pyx_t_7_squish_FLOAT_T __pyx_v_w, __pyx_t_7_squish_FLOAT_T __pyx_v_h, __pyx_t_7_squish_FLOAT_T __pyx_v_r, PyArrayObject *__pyx_v_site_arr) { - __Pyx_LocalBuf_ND __pyx_pybuffernd_site_arr; - __Pyx_Buffer __pyx_pybuffer_site_arr; - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - int __pyx_t_8; - PyObject *__pyx_t_9 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__init__", 0); - __pyx_pybuffer_site_arr.pybuffer.buf = NULL; - __pyx_pybuffer_site_arr.refcount = 0; - __pyx_pybuffernd_site_arr.data = NULL; - __pyx_pybuffernd_site_arr.rcbuffer = &__pyx_pybuffer_site_arr; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_site_arr, &__Pyx_TypeInfo_nn___pyx_t_7_squish_FLOAT_T, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(3, 109, __pyx_L1_error) - } - __pyx_pybuffernd_site_arr.diminfo[0].strides = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_site_arr.diminfo[0].shape = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_site_arr.diminfo[1].strides = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_site_arr.diminfo[1].shape = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.shape[1]; - - /* "squish/_squish/energy.pyx":112 - * np.ndarray[FLOAT_T, ndim=2] site_arr): - * #self.edge_cache_map = &AREA_EDGE_CACHE_MAP - * self.energy = 0.0 # <<<<<<<<<<<<<< - * - * super().__init__(n, w, h, r, site_arr) - */ - __pyx_v_self->__pyx_base.energy = 0.0; - - /* "squish/_squish/energy.pyx":114 - * self.energy = 0.0 - * - * super().__init__(n, w, h, r, site_arr) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)__pyx_ptype_7_squish_RadialALEnergy)); - __Pyx_GIVEREF(((PyObject *)__pyx_ptype_7_squish_RadialALEnergy)); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_7_squish_RadialALEnergy)); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_From_npy_int64(__pyx_v_n); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyFloat_FromDouble(__pyx_v_w); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyFloat_FromDouble(__pyx_v_h); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PyFloat_FromDouble(__pyx_v_r); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = NULL; - __pyx_t_8 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_8 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, ((PyObject *)__pyx_v_site_arr)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 114, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, ((PyObject *)__pyx_v_site_arr)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 114, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - { - __pyx_t_9 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - if (__pyx_t_7) { - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; - } - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_4); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_8, __pyx_t_6); - __Pyx_INCREF(((PyObject *)__pyx_v_site_arr)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_site_arr)); - PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_8, ((PyObject *)__pyx_v_site_arr)); - __pyx_t_3 = 0; - __pyx_t_4 = 0; - __pyx_t_5 = 0; - __pyx_t_6 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "squish/_squish/energy.pyx":109 - * - * - * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, # <<<<<<<<<<<<<< - * np.ndarray[FLOAT_T, ndim=2] site_arr): - * #self.edge_cache_map = &AREA_EDGE_CACHE_MAP - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_9); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_AddTraceback("_squish.RadialALEnergy.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - goto __pyx_L2; - __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "squish/_squish/energy.pyx":117 - * - * - * cdef void precompute(self) except *: # <<<<<<<<<<<<<< - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - */ - -static void __pyx_f_7_squish_14RadialALEnergy_precompute(struct __pyx_obj_7_squish_RadialALEnergy *__pyx_v_self) { - CYTHON_UNUSED __pyx_t_7_squish_VoronoiInfo __pyx_v_info; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("precompute", 0); - - /* "squish/_squish/energy.pyx":118 - * - * cdef void precompute(self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - * - */ - if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 118, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 118, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.points.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 118, __pyx_L1_error)} - - /* "squish/_squish/energy.pyx":119 - * cdef void precompute(self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) # <<<<<<<<<<<<<< - * - * pass - */ - if (unlikely(!__pyx_v_self->__pyx_base.vertices.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 119, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.site_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 119, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.edge_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 119, __pyx_L1_error)} - - /* "squish/_squish/energy.pyx":118 - * - * cdef void precompute(self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - * - */ - __pyx_v_info = __pyx_v_7_squish_init.VoronoiInfo(__pyx_v_self->__pyx_base.sites, __pyx_v_self->__pyx_base.edges, __pyx_v_self->__pyx_base.points, __pyx_v_self->__pyx_base.vertices, __pyx_v_self->__pyx_base.site_cache, __pyx_v_self->__pyx_base.edge_cache, __pyx_v_self->__pyx_base.edge_cache_map); - - /* "squish/_squish/energy.pyx":117 - * - * - * cdef void precompute(self) except *: # <<<<<<<<<<<<<< - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - */ - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("_squish.RadialALEnergy.precompute", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_L0:; - __Pyx_RefNannyFinishContext(); -} - -/* "squish/_squish/energy.pyx":124 - * - * - * cdef void calc_grad(self) except *: # <<<<<<<<<<<<<< - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - */ - -static void __pyx_f_7_squish_14RadialALEnergy_calc_grad(struct __pyx_obj_7_squish_RadialALEnergy *__pyx_v_self) { - CYTHON_UNUSED __pyx_t_7_squish_VoronoiInfo __pyx_v_info; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("calc_grad", 0); - - /* "squish/_squish/energy.pyx":125 - * - * cdef void calc_grad(self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - * - */ - if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 125, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 125, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.points.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 125, __pyx_L1_error)} - - /* "squish/_squish/energy.pyx":126 - * cdef void calc_grad(self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) # <<<<<<<<<<<<<< - * - * pass - */ - if (unlikely(!__pyx_v_self->__pyx_base.vertices.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 126, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.site_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 126, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.edge_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 126, __pyx_L1_error)} - - /* "squish/_squish/energy.pyx":125 - * - * cdef void calc_grad(self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - * - */ - __pyx_v_info = __pyx_v_7_squish_init.VoronoiInfo(__pyx_v_self->__pyx_base.sites, __pyx_v_self->__pyx_base.edges, __pyx_v_self->__pyx_base.points, __pyx_v_self->__pyx_base.vertices, __pyx_v_self->__pyx_base.site_cache, __pyx_v_self->__pyx_base.edge_cache, __pyx_v_self->__pyx_base.edge_cache_map); - - /* "squish/_squish/energy.pyx":124 - * - * - * cdef void calc_grad(self) except *: # <<<<<<<<<<<<<< - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - */ - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("_squish.RadialALEnergy.calc_grad", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_L0:; - __Pyx_RefNannyFinishContext(); -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_7_squish_14RadialALEnergy_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_7_squish_14RadialALEnergy_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_14RadialALEnergy_2__reduce_cython__(((struct __pyx_obj_7_squish_RadialALEnergy *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_7_squish_14RadialALEnergy_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_squish_RadialALEnergy *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 0); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(2, 2, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("_squish.RadialALEnergy.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_7_squish_14RadialALEnergy_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ -static PyObject *__pyx_pw_7_squish_14RadialALEnergy_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_14RadialALEnergy_4__setstate_cython__(((struct __pyx_obj_7_squish_RadialALEnergy *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_7_squish_14RadialALEnergy_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_squish_RadialALEnergy *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 0); - - /* "(tree fragment)":4 - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(2, 4, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("_squish.RadialALEnergy.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "squish/_squish/energy.pyx":143 - * attr_str = "radial-t" - * title_str = "Radial[T]" - * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, # <<<<<<<<<<<<<< - * np.ndarray[FLOAT_T, ndim=2] site_arr): - * self.edge_cache_map = &RADIALT_EDGE_CACHE_MAP - */ - -/* Python wrapper */ -static int __pyx_pw_7_squish_13RadialTEnergy_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_7_squish_13RadialTEnergy_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - __pyx_t_7_squish_INT_T __pyx_v_n; - __pyx_t_7_squish_FLOAT_T __pyx_v_w; - __pyx_t_7_squish_FLOAT_T __pyx_v_h; - __pyx_t_7_squish_FLOAT_T __pyx_v_r; - PyArrayObject *__pyx_v_site_arr = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_w,&__pyx_n_s_h,&__pyx_n_s_r,&__pyx_n_s_site_arr,0}; - PyObject* values[5] = {0,0,0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 1); __PYX_ERR(3, 143, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 2); __PYX_ERR(3, 143, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 3: - if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_r)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 3); __PYX_ERR(3, 143, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 4: - if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_site_arr)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 4); __PYX_ERR(3, 143, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(3, 143, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - } - __pyx_v_n = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_n == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(3, 143, __pyx_L3_error) - __pyx_v_w = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_w == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(3, 143, __pyx_L3_error) - __pyx_v_h = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_h == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(3, 143, __pyx_L3_error) - __pyx_v_r = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_r == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(3, 143, __pyx_L3_error) - __pyx_v_site_arr = ((PyArrayObject *)values[4]); - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 143, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("_squish.RadialTEnergy.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_site_arr), __pyx_ptype_5numpy_ndarray, 1, "site_arr", 0))) __PYX_ERR(3, 144, __pyx_L1_error) - __pyx_r = __pyx_pf_7_squish_13RadialTEnergy___init__(((struct __pyx_obj_7_squish_RadialTEnergy *)__pyx_v_self), __pyx_v_n, __pyx_v_w, __pyx_v_h, __pyx_v_r, __pyx_v_site_arr); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_7_squish_13RadialTEnergy___init__(struct __pyx_obj_7_squish_RadialTEnergy *__pyx_v_self, __pyx_t_7_squish_INT_T __pyx_v_n, __pyx_t_7_squish_FLOAT_T __pyx_v_w, __pyx_t_7_squish_FLOAT_T __pyx_v_h, __pyx_t_7_squish_FLOAT_T __pyx_v_r, PyArrayObject *__pyx_v_site_arr) { - __Pyx_LocalBuf_ND __pyx_pybuffernd_site_arr; - __Pyx_Buffer __pyx_pybuffer_site_arr; - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - int __pyx_t_8; - PyObject *__pyx_t_9 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__init__", 0); - __pyx_pybuffer_site_arr.pybuffer.buf = NULL; - __pyx_pybuffer_site_arr.refcount = 0; - __pyx_pybuffernd_site_arr.data = NULL; - __pyx_pybuffernd_site_arr.rcbuffer = &__pyx_pybuffer_site_arr; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_site_arr, &__Pyx_TypeInfo_nn___pyx_t_7_squish_FLOAT_T, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(3, 143, __pyx_L1_error) - } - __pyx_pybuffernd_site_arr.diminfo[0].strides = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_site_arr.diminfo[0].shape = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_site_arr.diminfo[1].strides = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_site_arr.diminfo[1].shape = __pyx_pybuffernd_site_arr.rcbuffer->pybuffer.shape[1]; - - /* "squish/_squish/energy.pyx":145 - * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, - * np.ndarray[FLOAT_T, ndim=2] site_arr): - * self.edge_cache_map = &RADIALT_EDGE_CACHE_MAP # <<<<<<<<<<<<<< - * self.energy = 0.0 - * - */ - __pyx_v_self->__pyx_base.edge_cache_map = (&__pyx_v_7_squish_RADIALT_EDGE_CACHE_MAP); - - /* "squish/_squish/energy.pyx":146 - * np.ndarray[FLOAT_T, ndim=2] site_arr): - * self.edge_cache_map = &RADIALT_EDGE_CACHE_MAP - * self.energy = 0.0 # <<<<<<<<<<<<<< - * - * super().__init__(n, w, h, r, site_arr) - */ - __pyx_v_self->__pyx_base.energy = 0.0; - - /* "squish/_squish/energy.pyx":148 - * self.energy = 0.0 - * - * super().__init__(n, w, h, r, site_arr) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(((PyObject *)__pyx_ptype_7_squish_RadialTEnergy)); - __Pyx_GIVEREF(((PyObject *)__pyx_ptype_7_squish_RadialTEnergy)); - PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_7_squish_RadialTEnergy)); - __Pyx_INCREF(((PyObject *)__pyx_v_self)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); - PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_From_npy_int64(__pyx_v_n); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyFloat_FromDouble(__pyx_v_w); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyFloat_FromDouble(__pyx_v_h); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PyFloat_FromDouble(__pyx_v_r); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = NULL; - __pyx_t_8 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_8 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, ((PyObject *)__pyx_v_site_arr)}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 148, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, ((PyObject *)__pyx_v_site_arr)}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 148, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } else - #endif - { - __pyx_t_9 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - if (__pyx_t_7) { - __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; - } - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_4); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_8, __pyx_t_6); - __Pyx_INCREF(((PyObject *)__pyx_v_site_arr)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_site_arr)); - PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_8, ((PyObject *)__pyx_v_site_arr)); - __pyx_t_3 = 0; - __pyx_t_4 = 0; - __pyx_t_5 = 0; - __pyx_t_6 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "squish/_squish/energy.pyx":143 - * attr_str = "radial-t" - * title_str = "Radial[T]" - * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, # <<<<<<<<<<<<<< - * np.ndarray[FLOAT_T, ndim=2] site_arr): - * self.edge_cache_map = &RADIALT_EDGE_CACHE_MAP - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_9); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_AddTraceback("_squish.RadialTEnergy.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - goto __pyx_L2; - __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_site_arr.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "squish/_squish/energy.pyx":151 - * - * - * cdef void precompute(self) except *: # <<<<<<<<<<<<<< - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - */ - -static void __pyx_f_7_squish_13RadialTEnergy_precompute(struct __pyx_obj_7_squish_RadialTEnergy *__pyx_v_self) { - __pyx_t_7_squish_VoronoiInfo __pyx_v_info; - __pyx_t_7_squish_Site __pyx_v_xi; - __pyx_t_7_squish_HalfEdge __pyx_v_em; - __pyx_t_7_squish_HalfEdge __pyx_v_e; - __pyx_t_7_squish_Vector2D __pyx_v_Rnla; - __Pyx_memviewslice __pyx_v_site_energy = { 0, 0, { 0 }, { 0 }, { 0 } }; - __Pyx_memviewslice __pyx_v_avg_radii = { 0, 0, { 0 }, { 0 }, { 0 } }; - __pyx_t_7_squish_FLOAT_T __pyx_v_energy; - __pyx_t_7_squish_FLOAT_T __pyx_v_r0; - __pyx_t_7_squish_FLOAT_T __pyx_v_t; - __pyx_t_7_squish_FLOAT_T __pyx_v_tp; - __pyx_t_7_squish_FLOAT_T __pyx_v_B; - __pyx_t_7_squish_FLOAT_T __pyx_v_lntan; - __pyx_t_7_squish_FLOAT_T __pyx_v_csc; - __pyx_t_7_squish_INT_T __pyx_v_i; - CYTHON_UNUSED __pyx_t_7_squish_INT_T __pyx_v_j; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } }; - __pyx_t_7_squish_FLOAT_T __pyx_t_9; - __pyx_t_7_squish_FLOAT_T __pyx_t_10; - Py_ssize_t __pyx_t_11; - __pyx_t_7_squish_INT_T __pyx_t_12; - __pyx_t_7_squish_INT_T __pyx_t_13; - __pyx_t_7_squish_INT_T __pyx_t_14; - __pyx_t_7_squish_INT_T __pyx_t_15; - __pyx_t_7_squish_INT_T __pyx_t_16; - int __pyx_t_17; - __pyx_t_7_squish_INT_T __pyx_t_18; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("precompute", 0); - - /* "squish/_squish/energy.pyx":152 - * - * cdef void precompute(self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - * - */ - if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 152, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 152, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.points.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 152, __pyx_L1_error)} - - /* "squish/_squish/energy.pyx":153 - * cdef void precompute(self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) # <<<<<<<<<<<<<< - * - * cdef Site xi - */ - if (unlikely(!__pyx_v_self->__pyx_base.vertices.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 153, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.site_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 153, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.edge_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 153, __pyx_L1_error)} - - /* "squish/_squish/energy.pyx":152 - * - * cdef void precompute(self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - * - */ - __pyx_v_info = __pyx_v_7_squish_init.VoronoiInfo(__pyx_v_self->__pyx_base.sites, __pyx_v_self->__pyx_base.edges, __pyx_v_self->__pyx_base.points, __pyx_v_self->__pyx_base.vertices, __pyx_v_self->__pyx_base.site_cache, __pyx_v_self->__pyx_base.edge_cache, __pyx_v_self->__pyx_base.edge_cache_map); - - /* "squish/_squish/energy.pyx":160 - * - * # All energy has a 2pir_0 term. - * cdef FLOAT_T [:] site_energy = np.full(self.sites.shape[0], TAU*self.r**2) # <<<<<<<<<<<<<< - * cdef FLOAT_T [:] avg_radii = np.zeros(self.sites.shape[0]) - * cdef FLOAT_T energy, r0, t, tp, B, lntan, csc - */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_full); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 160, __pyx_L1_error)} - __pyx_t_2 = PyInt_FromSsize_t((__pyx_v_self->__pyx_base.sites.shape[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyFloat_FromDouble((__pyx_v_7_squish_TAU * pow(__pyx_v_self->__pyx_base.r, 2.0))); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 160, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 160, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - { - __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; - } - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_2); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); - __pyx_t_2 = 0; - __pyx_t_4 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_7_squish_FLOAT_T(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(3, 160, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_site_energy = __pyx_t_8; - __pyx_t_8.memview = NULL; - __pyx_t_8.data = NULL; - - /* "squish/_squish/energy.pyx":161 - * # All energy has a 2pir_0 term. - * cdef FLOAT_T [:] site_energy = np.full(self.sites.shape[0], TAU*self.r**2) - * cdef FLOAT_T [:] avg_radii = np.zeros(self.sites.shape[0]) # <<<<<<<<<<<<<< - * cdef FLOAT_T energy, r0, t, tp, B, lntan, csc - * energy, r0 = 0, self.r - */ - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 161, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 161, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 161, __pyx_L1_error)} - __pyx_t_3 = PyInt_FromSsize_t((__pyx_v_self->__pyx_base.sites.shape[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 161, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - } - } - __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 161, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_7_squish_FLOAT_T(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(3, 161, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_avg_radii = __pyx_t_8; - __pyx_t_8.memview = NULL; - __pyx_t_8.data = NULL; - - /* "squish/_squish/energy.pyx":163 - * cdef FLOAT_T [:] avg_radii = np.zeros(self.sites.shape[0]) - * cdef FLOAT_T energy, r0, t, tp, B, lntan, csc - * energy, r0 = 0, self.r # <<<<<<<<<<<<<< - * - * cdef INT_T i, j - */ - __pyx_t_9 = 0.0; - __pyx_t_10 = __pyx_v_self->__pyx_base.r; - __pyx_v_energy = __pyx_t_9; - __pyx_v_r0 = __pyx_t_10; - - /* "squish/_squish/energy.pyx":166 - * - * cdef INT_T i, j - * for i in prange(self.sites.shape[0], nogil=True): # <<<<<<<<<<<<<< - * xi = init.Site(i, &info) - * e = xi.edge(&xi) - */ - { - #ifdef WITH_THREAD - PyThreadState *_save; - Py_UNBLOCK_THREADS - __Pyx_FastGIL_Remember(); - #endif - /*try:*/ { - if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 166, __pyx_L4_error)} - __pyx_t_11 = (__pyx_v_self->__pyx_base.sites.shape[0]); - if ((1 == 0)) abort(); - { - #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) - #undef likely - #undef unlikely - #define likely(x) (x) - #define unlikely(x) (x) - #endif - __pyx_t_13 = (__pyx_t_11 - 0 + 1 - 1/abs(1)) / 1; - if (__pyx_t_13 > 0) - { - #ifdef _OPENMP - #pragma omp parallel reduction(+:__pyx_v_energy) private(__pyx_t_10, __pyx_t_14, __pyx_t_15, __pyx_t_16, __pyx_t_17, __pyx_t_18, __pyx_t_9) - #endif /* _OPENMP */ - { - #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_B) lastprivate(__pyx_v_Rnla) lastprivate(__pyx_v_csc) lastprivate(__pyx_v_e) lastprivate(__pyx_v_em) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) lastprivate(__pyx_v_lntan) lastprivate(__pyx_v_t) lastprivate(__pyx_v_tp) lastprivate(__pyx_v_xi) - #endif /* _OPENMP */ - for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_13; __pyx_t_12++){ - { - __pyx_v_i = (__pyx_t_7_squish_INT_T)(0 + 1 * __pyx_t_12); - /* Initialize private variables to invalid values */ - __pyx_v_B = ((__pyx_t_7_squish_FLOAT_T)__PYX_NAN()); - __pyx_v_csc = ((__pyx_t_7_squish_FLOAT_T)__PYX_NAN()); - __pyx_v_j = ((__pyx_t_7_squish_INT_T)0xbad0bad0); - __pyx_v_lntan = ((__pyx_t_7_squish_FLOAT_T)__PYX_NAN()); - __pyx_v_t = ((__pyx_t_7_squish_FLOAT_T)__PYX_NAN()); - __pyx_v_tp = ((__pyx_t_7_squish_FLOAT_T)__PYX_NAN()); - - /* "squish/_squish/energy.pyx":167 - * cdef INT_T i, j - * for i in prange(self.sites.shape[0], nogil=True): - * xi = init.Site(i, &info) # <<<<<<<<<<<<<< - * e = xi.edge(&xi) - * for j in range(xi.edge_num(&xi)): - */ - __pyx_v_xi = __pyx_v_7_squish_init.Site(__pyx_v_i, (&__pyx_v_info)); - - /* "squish/_squish/energy.pyx":168 - * for i in prange(self.sites.shape[0], nogil=True): - * xi = init.Site(i, &info) - * e = xi.edge(&xi) # <<<<<<<<<<<<<< - * for j in range(xi.edge_num(&xi)): - * em = e.prev(&e) - */ - __pyx_v_e = __pyx_v_xi.edge((&__pyx_v_xi)); - - /* "squish/_squish/energy.pyx":169 - * xi = init.Site(i, &info) - * e = xi.edge(&xi) - * for j in range(xi.edge_num(&xi)): # <<<<<<<<<<<<<< - * em = e.prev(&e) - * e.cache.H(&e, VoronoiContainer.calc_H(em, e)) - */ - __pyx_t_14 = __pyx_v_xi.edge_num((&__pyx_v_xi)); - __pyx_t_15 = __pyx_t_14; - for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) { - __pyx_v_j = __pyx_t_16; - - /* "squish/_squish/energy.pyx":170 - * e = xi.edge(&xi) - * for j in range(xi.edge_num(&xi)): - * em = e.prev(&e) # <<<<<<<<<<<<<< - * e.cache.H(&e, VoronoiContainer.calc_H(em, e)) - * t = Calc.phi(e) - */ - __pyx_v_em = __pyx_v_e.prev((&__pyx_v_e)); - - /* "squish/_squish/energy.pyx":171 - * for j in range(xi.edge_num(&xi)): - * em = e.prev(&e) - * e.cache.H(&e, VoronoiContainer.calc_H(em, e)) # <<<<<<<<<<<<<< - * t = Calc.phi(e) - * - */ - (void)(__pyx_v_e.cache->H((&__pyx_v_e), __pyx_f_7_squish_16VoronoiContainer_calc_H(__pyx_v_em, __pyx_v_e))); - - /* "squish/_squish/energy.pyx":172 - * em = e.prev(&e) - * e.cache.H(&e, VoronoiContainer.calc_H(em, e)) - * t = Calc.phi(e) # <<<<<<<<<<<<<< - * - * e.cache.phi(&e, t) - */ - __pyx_v_t = __pyx_f_7_squish_4Calc_phi(__pyx_v_e); - - /* "squish/_squish/energy.pyx":174 - * t = Calc.phi(e) - * - * e.cache.phi(&e, t) # <<<<<<<<<<<<<< - * Rnla = e.cache.la(&e, NAN_VECTOR) - * Rnla.self.neg(&Rnla) - */ - (void)(__pyx_v_e.cache->phi((&__pyx_v_e), __pyx_v_t)); - - /* "squish/_squish/energy.pyx":175 - * - * e.cache.phi(&e, t) - * Rnla = e.cache.la(&e, NAN_VECTOR) # <<<<<<<<<<<<<< - * Rnla.self.neg(&Rnla) - * Rnla = Rnla.rot(&Rnla) - */ - __pyx_v_Rnla = __pyx_v_e.cache->la((&__pyx_v_e), __pyx_v_7_squish_NAN_VECTOR); - - /* "squish/_squish/energy.pyx":176 - * e.cache.phi(&e, t) - * Rnla = e.cache.la(&e, NAN_VECTOR) - * Rnla.self.neg(&Rnla) # <<<<<<<<<<<<<< - * Rnla = Rnla.rot(&Rnla) - * - */ - (void)(__pyx_v_Rnla.self.neg((&__pyx_v_Rnla))); - - /* "squish/_squish/energy.pyx":177 - * Rnla = e.cache.la(&e, NAN_VECTOR) - * Rnla.self.neg(&Rnla) - * Rnla = Rnla.rot(&Rnla) # <<<<<<<<<<<<<< - * - * if Rnla.x < 0: - */ - __pyx_v_Rnla = __pyx_v_Rnla.rot((&__pyx_v_Rnla)); - - /* "squish/_squish/energy.pyx":179 - * Rnla = Rnla.rot(&Rnla) - * - * if Rnla.x < 0: # <<<<<<<<<<<<<< - * e.cache.B(&e, -acos((Rnla.y/e.cache.la_mag(&e, NAN)))) - * else: - */ - __pyx_t_17 = ((__pyx_v_Rnla.x < 0.0) != 0); - if (__pyx_t_17) { - - /* "squish/_squish/energy.pyx":180 - * - * if Rnla.x < 0: - * e.cache.B(&e, -acos((Rnla.y/e.cache.la_mag(&e, NAN)))) # <<<<<<<<<<<<<< - * else: - * e.cache.B(&e, acos((Rnla.y/e.cache.la_mag(&e, NAN)))) - */ - (void)(__pyx_v_e.cache->B((&__pyx_v_e), (-((__pyx_t_7_squish_FLOAT_T)acos(((double)(__pyx_v_Rnla.y / __pyx_v_e.cache->la_mag((&__pyx_v_e), NAN)))))))); - - /* "squish/_squish/energy.pyx":179 - * Rnla = Rnla.rot(&Rnla) - * - * if Rnla.x < 0: # <<<<<<<<<<<<<< - * e.cache.B(&e, -acos((Rnla.y/e.cache.la_mag(&e, NAN)))) - * else: - */ - goto __pyx_L12; - } - - /* "squish/_squish/energy.pyx":182 - * e.cache.B(&e, -acos((Rnla.y/e.cache.la_mag(&e, NAN)))) - * else: - * e.cache.B(&e, acos((Rnla.y/e.cache.la_mag(&e, NAN)))) # <<<<<<<<<<<<<< - * - * e.cache.i2p(&e, Calc.I2(e, r0, t)) - */ - /*else*/ { - (void)(__pyx_v_e.cache->B((&__pyx_v_e), ((__pyx_t_7_squish_FLOAT_T)acos(((double)(__pyx_v_Rnla.y / __pyx_v_e.cache->la_mag((&__pyx_v_e), NAN))))))); - } - __pyx_L12:; - - /* "squish/_squish/energy.pyx":184 - * e.cache.B(&e, acos((Rnla.y/e.cache.la_mag(&e, NAN)))) - * - * e.cache.i2p(&e, Calc.I2(e, r0, t)) # <<<<<<<<<<<<<< - * e = e.next(&e) - * - */ - (void)(__pyx_v_e.cache->i2p((&__pyx_v_e), __pyx_f_7_squish_4Calc_I2(__pyx_v_e, __pyx_v_r0, __pyx_v_t))); - - /* "squish/_squish/energy.pyx":185 - * - * e.cache.i2p(&e, Calc.I2(e, r0, t)) - * e = e.next(&e) # <<<<<<<<<<<<<< - * - * # For looping again to calculate integrals. - */ - __pyx_v_e = __pyx_v_e.next((&__pyx_v_e)); - } - - /* "squish/_squish/energy.pyx":188 - * - * # For looping again to calculate integrals. - * em = xi.edge(&xi) # <<<<<<<<<<<<<< - * for j in range(xi.edge_num(&xi)): - * e = em.next(&em) - */ - __pyx_v_em = __pyx_v_xi.edge((&__pyx_v_xi)); - - /* "squish/_squish/energy.pyx":189 - * # For looping again to calculate integrals. - * em = xi.edge(&xi) - * for j in range(xi.edge_num(&xi)): # <<<<<<<<<<<<<< - * e = em.next(&em) - * B = em.cache.B(&em, NAN) - */ - __pyx_t_14 = __pyx_v_xi.edge_num((&__pyx_v_xi)); - __pyx_t_15 = __pyx_t_14; - for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) { - __pyx_v_j = __pyx_t_16; - - /* "squish/_squish/energy.pyx":190 - * em = xi.edge(&xi) - * for j in range(xi.edge_num(&xi)): - * e = em.next(&em) # <<<<<<<<<<<<<< - * B = em.cache.B(&em, NAN) - * t, tp = em.cache.phi(&em, NAN), e.cache.phi(&e, NAN) - */ - __pyx_v_e = __pyx_v_em.next((&__pyx_v_em)); - - /* "squish/_squish/energy.pyx":191 - * for j in range(xi.edge_num(&xi)): - * e = em.next(&em) - * B = em.cache.B(&em, NAN) # <<<<<<<<<<<<<< - * t, tp = em.cache.phi(&em, NAN), e.cache.phi(&e, NAN) - * - */ - __pyx_v_B = __pyx_v_em.cache->B((&__pyx_v_em), NAN); - - /* "squish/_squish/energy.pyx":192 - * e = em.next(&em) - * B = em.cache.B(&em, NAN) - * t, tp = em.cache.phi(&em, NAN), e.cache.phi(&e, NAN) # <<<<<<<<<<<<<< - * - * lntan = (log(fabs(tan(((tp+B)/2))))) - \ - */ - __pyx_t_10 = __pyx_v_em.cache->phi((&__pyx_v_em), NAN); - __pyx_t_9 = __pyx_v_e.cache->phi((&__pyx_v_e), NAN); - __pyx_v_t = __pyx_t_10; - __pyx_v_tp = __pyx_t_9; - - /* "squish/_squish/energy.pyx":194 - * t, tp = em.cache.phi(&em, NAN), e.cache.phi(&e, NAN) - * - * lntan = (log(fabs(tan(((tp+B)/2))))) - \ # <<<<<<<<<<<<<< - * (log(fabs(tan(((t+B)/2))))) - * - */ - __pyx_v_lntan = (((__pyx_t_7_squish_FLOAT_T)log(fabs(tan(((double)((__pyx_v_tp + __pyx_v_B) / 2.0)))))) - ((__pyx_t_7_squish_FLOAT_T)log(fabs(tan(((double)((__pyx_v_t + __pyx_v_B) / 2.0))))))); - - /* "squish/_squish/energy.pyx":197 - * (log(fabs(tan(((t+B)/2))))) - * - * csc = 1/((sin((tp+B)))) - \ # <<<<<<<<<<<<<< - * 1/((sin((t+B)))) - * - */ - __pyx_v_csc = ((1.0 / ((__pyx_t_7_squish_FLOAT_T)sin(((double)(__pyx_v_tp + __pyx_v_B))))) - (1.0 / ((__pyx_t_7_squish_FLOAT_T)sin(((double)(__pyx_v_t + __pyx_v_B)))))); - - /* "squish/_squish/energy.pyx":200 - * 1/((sin((t+B)))) - * - * em.cache.lntan(&em, lntan) # <<<<<<<<<<<<<< - * em.cache.csc(&em, csc) - * - */ - (void)(__pyx_v_em.cache->lntan((&__pyx_v_em), __pyx_v_lntan)); - - /* "squish/_squish/energy.pyx":201 - * - * em.cache.lntan(&em, lntan) - * em.cache.csc(&em, csc) # <<<<<<<<<<<<<< - * - * avg_radii[i] += (em.cache.F(&em, NAN)/em.cache.la_mag(&em, NAN))*lntan - */ - (void)(__pyx_v_em.cache->csc((&__pyx_v_em), __pyx_v_csc)); - - /* "squish/_squish/energy.pyx":203 - * em.cache.csc(&em, csc) - * - * avg_radii[i] += (em.cache.F(&em, NAN)/em.cache.la_mag(&em, NAN))*lntan # <<<<<<<<<<<<<< - * - * em = em.next(&em) - */ - __pyx_t_18 = __pyx_v_i; - *((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_avg_radii.data + __pyx_t_18 * __pyx_v_avg_radii.strides[0]) )) += ((__pyx_v_em.cache->F((&__pyx_v_em), NAN) / __pyx_v_em.cache->la_mag((&__pyx_v_em), NAN)) * __pyx_v_lntan); - - /* "squish/_squish/energy.pyx":205 - * avg_radii[i] += (em.cache.F(&em, NAN)/em.cache.la_mag(&em, NAN))*lntan - * - * em = em.next(&em) # <<<<<<<<<<<<<< - * - * site_energy[i] += 2*(xi.cache.area(&xi, NAN) - r0*avg_radii[i]) - */ - __pyx_v_em = __pyx_v_em.next((&__pyx_v_em)); - } - - /* "squish/_squish/energy.pyx":207 - * em = em.next(&em) - * - * site_energy[i] += 2*(xi.cache.area(&xi, NAN) - r0*avg_radii[i]) # <<<<<<<<<<<<<< - * - * xi.cache.avg_radius(&xi, avg_radii[i]/TAU) - */ - __pyx_t_14 = __pyx_v_i; - __pyx_t_15 = __pyx_v_i; - *((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_site_energy.data + __pyx_t_15 * __pyx_v_site_energy.strides[0]) )) += (2.0 * (__pyx_v_xi.cache->area((&__pyx_v_xi), NAN) - (__pyx_v_r0 * (*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_avg_radii.data + __pyx_t_14 * __pyx_v_avg_radii.strides[0]) )))))); - - /* "squish/_squish/energy.pyx":209 - * site_energy[i] += 2*(xi.cache.area(&xi, NAN) - r0*avg_radii[i]) - * - * xi.cache.avg_radius(&xi, avg_radii[i]/TAU) # <<<<<<<<<<<<<< - * xi.cache.energy(&xi, site_energy[i]) - * if i < self.n: - */ - __pyx_t_14 = __pyx_v_i; - (void)(__pyx_v_xi.cache->avg_radius((&__pyx_v_xi), ((*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_avg_radii.data + __pyx_t_14 * __pyx_v_avg_radii.strides[0]) ))) / __pyx_v_7_squish_TAU))); - - /* "squish/_squish/energy.pyx":210 - * - * xi.cache.avg_radius(&xi, avg_radii[i]/TAU) - * xi.cache.energy(&xi, site_energy[i]) # <<<<<<<<<<<<<< - * if i < self.n: - * energy += site_energy[i] - */ - __pyx_t_14 = __pyx_v_i; - (void)(__pyx_v_xi.cache->energy((&__pyx_v_xi), (*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_site_energy.data + __pyx_t_14 * __pyx_v_site_energy.strides[0]) ))))); - - /* "squish/_squish/energy.pyx":211 - * xi.cache.avg_radius(&xi, avg_radii[i]/TAU) - * xi.cache.energy(&xi, site_energy[i]) - * if i < self.n: # <<<<<<<<<<<<<< - * energy += site_energy[i] - * - */ - __pyx_t_17 = ((__pyx_v_i < __pyx_v_self->__pyx_base.n) != 0); - if (__pyx_t_17) { - - /* "squish/_squish/energy.pyx":212 - * xi.cache.energy(&xi, site_energy[i]) - * if i < self.n: - * energy += site_energy[i] # <<<<<<<<<<<<<< - * - * self.energy = energy - */ - __pyx_t_14 = __pyx_v_i; - __pyx_v_energy = (__pyx_v_energy + (*((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_site_energy.data + __pyx_t_14 * __pyx_v_site_energy.strides[0]) )))); - - /* "squish/_squish/energy.pyx":211 - * xi.cache.avg_radius(&xi, avg_radii[i]/TAU) - * xi.cache.energy(&xi, site_energy[i]) - * if i < self.n: # <<<<<<<<<<<<<< - * energy += site_energy[i] - * - */ - } - } - } - } - } - } - #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) - #undef likely - #undef unlikely - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) - #endif - } - - /* "squish/_squish/energy.pyx":166 - * - * cdef INT_T i, j - * for i in prange(self.sites.shape[0], nogil=True): # <<<<<<<<<<<<<< - * xi = init.Site(i, &info) - * e = xi.edge(&xi) - */ - /*finally:*/ { - /*normal exit:*/{ - #ifdef WITH_THREAD - __Pyx_FastGIL_Forget(); - Py_BLOCK_THREADS - #endif - goto __pyx_L5; - } - __pyx_L4_error: { - #ifdef WITH_THREAD - __Pyx_FastGIL_Forget(); - Py_BLOCK_THREADS - #endif - goto __pyx_L1_error; - } - __pyx_L5:; - } - } - - /* "squish/_squish/energy.pyx":214 - * energy += site_energy[i] - * - * self.energy = energy # <<<<<<<<<<<<<< - * - * - */ - __pyx_v_self->__pyx_base.energy = __pyx_v_energy; - - /* "squish/_squish/energy.pyx":151 - * - * - * cdef void precompute(self) except *: # <<<<<<<<<<<<<< - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - */ - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); - __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); - __Pyx_AddTraceback("_squish.RadialTEnergy.precompute", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_L0:; - __PYX_XDEC_MEMVIEW(&__pyx_v_site_energy, 1); - __PYX_XDEC_MEMVIEW(&__pyx_v_avg_radii, 1); - __Pyx_RefNannyFinishContext(); -} - -/* "squish/_squish/energy.pyx":217 - * - * - * cdef void calc_grad(self) except *: # <<<<<<<<<<<<<< - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - */ - -static void __pyx_f_7_squish_13RadialTEnergy_calc_grad(struct __pyx_obj_7_squish_RadialTEnergy *__pyx_v_self) { - __pyx_t_7_squish_VoronoiInfo __pyx_v_info; - __pyx_t_7_squish_Site __pyx_v_xi; - __pyx_t_7_squish_HalfEdge __pyx_v_e; - __pyx_t_7_squish_HalfEdge __pyx_v_fm; - __pyx_t_7_squish_HalfEdge __pyx_v_f; - __pyx_t_7_squish_Vector2D __pyx_v_dedxi_p; - __pyx_t_7_squish_BitSet __pyx_v_edge_set; - __pyx_t_7_squish_INT_T __pyx_v_num_edges; - __pyx_t_7_squish_FLOAT_T __pyx_v_r0; - __Pyx_memviewslice __pyx_v_dedx = { 0, 0, { 0 }, { 0 }, { 0 } }; - __pyx_t_7_squish_INT_T __pyx_v_i; - CYTHON_UNUSED __pyx_t_7_squish_INT_T __pyx_v_j; - __Pyx_RefNannyDeclarations - __pyx_t_7_squish_FLOAT_T __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - __Pyx_memviewslice __pyx_t_6 = { 0, 0, { 0 }, { 0 }, { 0 } }; - __pyx_t_7_squish_INT_T __pyx_t_7; - __pyx_t_7_squish_INT_T __pyx_t_8; - __pyx_t_7_squish_INT_T __pyx_t_9; - __pyx_t_7_squish_INT_T __pyx_t_10; - __pyx_t_7_squish_INT_T __pyx_t_11; - __pyx_t_7_squish_INT_T __pyx_t_12; - int __pyx_t_13; - __pyx_t_7_squish_INT_T __pyx_t_14; - Py_ssize_t __pyx_t_15; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("calc_grad", 0); - - /* "squish/_squish/energy.pyx":218 - * - * cdef void calc_grad(self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - * - */ - if (unlikely(!__pyx_v_self->__pyx_base.sites.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 218, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 218, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.points.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 218, __pyx_L1_error)} - - /* "squish/_squish/energy.pyx":219 - * cdef void calc_grad(self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) # <<<<<<<<<<<<<< - * - * cdef Site xi - */ - if (unlikely(!__pyx_v_self->__pyx_base.vertices.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 219, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.site_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 219, __pyx_L1_error)} - if (unlikely(!__pyx_v_self->__pyx_base.edge_cache.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 219, __pyx_L1_error)} - - /* "squish/_squish/energy.pyx":218 - * - * cdef void calc_grad(self) except *: - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, # <<<<<<<<<<<<<< - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - * - */ - __pyx_v_info = __pyx_v_7_squish_init.VoronoiInfo(__pyx_v_self->__pyx_base.sites, __pyx_v_self->__pyx_base.edges, __pyx_v_self->__pyx_base.points, __pyx_v_self->__pyx_base.vertices, __pyx_v_self->__pyx_base.site_cache, __pyx_v_self->__pyx_base.edge_cache, __pyx_v_self->__pyx_base.edge_cache_map); - - /* "squish/_squish/energy.pyx":226 - * cdef BitSet edge_set - * - * cdef INT_T num_edges = self.edges.shape[0] # <<<<<<<<<<<<<< - * cdef FLOAT_T r0 = self.r - * - */ - if (unlikely(!__pyx_v_self->__pyx_base.edges.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(3, 226, __pyx_L1_error)} - __pyx_v_num_edges = (__pyx_v_self->__pyx_base.edges.shape[0]); - - /* "squish/_squish/energy.pyx":227 - * - * cdef INT_T num_edges = self.edges.shape[0] - * cdef FLOAT_T r0 = self.r # <<<<<<<<<<<<<< - * - * cdef FLOAT_T [:, ::1] dedx = np.zeros((self.n, 2), dtype=FLOAT) - */ - __pyx_t_1 = __pyx_v_self->__pyx_base.r; - __pyx_v_r0 = __pyx_t_1; - - /* "squish/_squish/energy.pyx":229 - * cdef FLOAT_T r0 = self.r - * - * cdef FLOAT_T [:, ::1] dedx = np.zeros((self.n, 2), dtype=FLOAT) # <<<<<<<<<<<<<< - * - * cdef INT_T i, j - */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 229, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 229, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->__pyx_base.n); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 229, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 229, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); - __Pyx_INCREF(__pyx_int_2); - __Pyx_GIVEREF(__pyx_int_2); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_2); + __pyx_v_site_verts = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 229, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 229, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_FLOAT); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 229, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(3, 229, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 229, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_7_squish_FLOAT_T(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(3, 229, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_v_dedx = __pyx_t_6; - __pyx_t_6.memview = NULL; - __pyx_t_6.data = NULL; - /* "squish/_squish/energy.pyx":232 + /* "squish/voronoi.pyx":729 + * sites, site_verts = [], [] * - * cdef INT_T i, j - * for i in prange(self.n, nogil=True): # <<<<<<<<<<<<<< - * xi = init.Site(i, &info) - * e = xi.edge(&xi) + * for i in range(self.n): # <<<<<<<<<<<<<< + * xi = _Site(i, &info) + * v = xi.vec(&xi) */ - { - #ifdef WITH_THREAD - PyThreadState *_save; - Py_UNBLOCK_THREADS - __Pyx_FastGIL_Remember(); - #endif - /*try:*/ { - __pyx_t_7 = __pyx_v_self->__pyx_base.n; - if ((1 == 0)) abort(); - { - #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) - #undef likely - #undef unlikely - #define likely(x) (x) - #define unlikely(x) (x) - #endif - __pyx_t_9 = (__pyx_t_7 - 0 + 1 - 1/abs(1)) / 1; - if (__pyx_t_9 > 0) - { - #ifdef _OPENMP - #pragma omp parallel private(__pyx_t_10, __pyx_t_11, __pyx_t_12, __pyx_t_13, __pyx_t_14, __pyx_t_15) - #endif /* _OPENMP */ - { - #ifdef _OPENMP - #pragma omp for lastprivate(__pyx_v_dedxi_p) lastprivate(__pyx_v_e) lastprivate(__pyx_v_edge_set) lastprivate(__pyx_v_f) lastprivate(__pyx_v_fm) firstprivate(__pyx_v_i) lastprivate(__pyx_v_i) lastprivate(__pyx_v_j) lastprivate(__pyx_v_xi) - #endif /* _OPENMP */ - for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_9; __pyx_t_8++){ - { - __pyx_v_i = (__pyx_t_7_squish_INT_T)(0 + 1 * __pyx_t_8); - /* Initialize private variables to invalid values */ - __pyx_v_j = ((__pyx_t_7_squish_INT_T)0xbad0bad0); + __pyx_t_3 = __pyx_v_self->n; + __pyx_t_4 = __pyx_t_3; + for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { + __pyx_v_i = __pyx_t_5; - /* "squish/_squish/energy.pyx":233 - * cdef INT_T i, j - * for i in prange(self.n, nogil=True): - * xi = init.Site(i, &info) # <<<<<<<<<<<<<< - * e = xi.edge(&xi) - * edge_set = init.BitSet(num_edges) - */ - __pyx_v_xi = __pyx_v_7_squish_init.Site(__pyx_v_i, (&__pyx_v_info)); - - /* "squish/_squish/energy.pyx":234 - * for i in prange(self.n, nogil=True): - * xi = init.Site(i, &info) - * e = xi.edge(&xi) # <<<<<<<<<<<<<< - * edge_set = init.BitSet(num_edges) - * - */ - __pyx_v_e = __pyx_v_xi.edge((&__pyx_v_xi)); - - /* "squish/_squish/energy.pyx":235 - * xi = init.Site(i, &info) - * e = xi.edge(&xi) - * edge_set = init.BitSet(num_edges) # <<<<<<<<<<<<<< - * - * for j in range(xi.edge_num(&xi)): # Looping through site edges. - */ - __pyx_v_edge_set = __pyx_v_7_squish_init.BitSet(__pyx_v_num_edges); - - /* "squish/_squish/energy.pyx":237 - * edge_set = init.BitSet(num_edges) - * - * for j in range(xi.edge_num(&xi)): # Looping through site edges. # <<<<<<<<<<<<<< - * f = e - * while True: # Circling this vertex. - */ - __pyx_t_10 = __pyx_v_xi.edge_num((&__pyx_v_xi)); - __pyx_t_11 = __pyx_t_10; - for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { - __pyx_v_j = __pyx_t_12; - - /* "squish/_squish/energy.pyx":238 - * - * for j in range(xi.edge_num(&xi)): # Looping through site edges. - * f = e # <<<<<<<<<<<<<< - * while True: # Circling this vertex. - * fm = f.prev(&f) - */ - __pyx_v_f = __pyx_v_e; - - /* "squish/_squish/energy.pyx":239 - * for j in range(xi.edge_num(&xi)): # Looping through site edges. - * f = e - * while True: # Circling this vertex. # <<<<<<<<<<<<<< - * fm = f.prev(&f) - * if not edge_set.add(&edge_set, f.arr_index): - */ - while (1) { - - /* "squish/_squish/energy.pyx":240 - * f = e - * while True: # Circling this vertex. - * fm = f.prev(&f) # <<<<<<<<<<<<<< - * if not edge_set.add(&edge_set, f.arr_index): - * dedxi_p = Calc.radialt_edge_grad(f, xi, r0) - */ - __pyx_v_fm = __pyx_v_f.prev((&__pyx_v_f)); - - /* "squish/_squish/energy.pyx":241 - * while True: # Circling this vertex. - * fm = f.prev(&f) - * if not edge_set.add(&edge_set, f.arr_index): # <<<<<<<<<<<<<< - * dedxi_p = Calc.radialt_edge_grad(f, xi, r0) - * dedx[i][0] -= dedxi_p.x - */ - __pyx_t_13 = ((!(__pyx_v_edge_set.add((&__pyx_v_edge_set), __pyx_v_f.arr_index) != 0)) != 0); - if (__pyx_t_13) { - - /* "squish/_squish/energy.pyx":242 - * fm = f.prev(&f) - * if not edge_set.add(&edge_set, f.arr_index): - * dedxi_p = Calc.radialt_edge_grad(f, xi, r0) # <<<<<<<<<<<<<< - * dedx[i][0] -= dedxi_p.x - * dedx[i][1] -= dedxi_p.y - */ - __pyx_v_dedxi_p = __pyx_f_7_squish_4Calc_radialt_edge_grad(__pyx_v_f, __pyx_v_xi, __pyx_v_r0); - - /* "squish/_squish/energy.pyx":243 - * if not edge_set.add(&edge_set, f.arr_index): - * dedxi_p = Calc.radialt_edge_grad(f, xi, r0) - * dedx[i][0] -= dedxi_p.x # <<<<<<<<<<<<<< - * dedx[i][1] -= dedxi_p.y - * - */ - __pyx_t_14 = __pyx_v_i; - __pyx_t_15 = 0; - *((__pyx_t_7_squish_FLOAT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_dedx.data + __pyx_t_14 * __pyx_v_dedx.strides[0]) )) + __pyx_t_15)) )) -= __pyx_v_dedxi_p.x; - - /* "squish/_squish/energy.pyx":244 - * dedxi_p = Calc.radialt_edge_grad(f, xi, r0) - * dedx[i][0] -= dedxi_p.x - * dedx[i][1] -= dedxi_p.y # <<<<<<<<<<<<<< - * - * if not edge_set.add(&edge_set, fm.arr_index): - */ - __pyx_t_14 = __pyx_v_i; - __pyx_t_15 = 1; - *((__pyx_t_7_squish_FLOAT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_dedx.data + __pyx_t_14 * __pyx_v_dedx.strides[0]) )) + __pyx_t_15)) )) -= __pyx_v_dedxi_p.y; - - /* "squish/_squish/energy.pyx":241 - * while True: # Circling this vertex. - * fm = f.prev(&f) - * if not edge_set.add(&edge_set, f.arr_index): # <<<<<<<<<<<<<< - * dedxi_p = Calc.radialt_edge_grad(f, xi, r0) - * dedx[i][0] -= dedxi_p.x - */ - } - - /* "squish/_squish/energy.pyx":246 - * dedx[i][1] -= dedxi_p.y - * - * if not edge_set.add(&edge_set, fm.arr_index): # <<<<<<<<<<<<<< - * dedxi_p = Calc.radialt_edge_grad(fm, xi, r0) - * dedx[i][0] -= dedxi_p.x - */ - __pyx_t_13 = ((!(__pyx_v_edge_set.add((&__pyx_v_edge_set), __pyx_v_fm.arr_index) != 0)) != 0); - if (__pyx_t_13) { - - /* "squish/_squish/energy.pyx":247 - * - * if not edge_set.add(&edge_set, fm.arr_index): - * dedxi_p = Calc.radialt_edge_grad(fm, xi, r0) # <<<<<<<<<<<<<< - * dedx[i][0] -= dedxi_p.x - * dedx[i][1] -= dedxi_p.y - */ - __pyx_v_dedxi_p = __pyx_f_7_squish_4Calc_radialt_edge_grad(__pyx_v_fm, __pyx_v_xi, __pyx_v_r0); - - /* "squish/_squish/energy.pyx":248 - * if not edge_set.add(&edge_set, fm.arr_index): - * dedxi_p = Calc.radialt_edge_grad(fm, xi, r0) - * dedx[i][0] -= dedxi_p.x # <<<<<<<<<<<<<< - * dedx[i][1] -= dedxi_p.y - * - */ - __pyx_t_14 = __pyx_v_i; - __pyx_t_15 = 0; - *((__pyx_t_7_squish_FLOAT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_dedx.data + __pyx_t_14 * __pyx_v_dedx.strides[0]) )) + __pyx_t_15)) )) -= __pyx_v_dedxi_p.x; - - /* "squish/_squish/energy.pyx":249 - * dedxi_p = Calc.radialt_edge_grad(fm, xi, r0) - * dedx[i][0] -= dedxi_p.x - * dedx[i][1] -= dedxi_p.y # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_14 = __pyx_v_i; - __pyx_t_15 = 1; - *((__pyx_t_7_squish_FLOAT_T *) ( /* dim=1 */ ((char *) (((__pyx_t_7_squish_FLOAT_T *) ( /* dim=0 */ (__pyx_v_dedx.data + __pyx_t_14 * __pyx_v_dedx.strides[0]) )) + __pyx_t_15)) )) -= __pyx_v_dedxi_p.y; - - /* "squish/_squish/energy.pyx":246 - * dedx[i][1] -= dedxi_p.y - * - * if not edge_set.add(&edge_set, fm.arr_index): # <<<<<<<<<<<<<< - * dedxi_p = Calc.radialt_edge_grad(fm, xi, r0) - * dedx[i][0] -= dedxi_p.x - */ - } - - /* "squish/_squish/energy.pyx":252 - * - * - * f = f.twin(&f) # <<<<<<<<<<<<<< - * f = f.next(&f) - * - */ - __pyx_v_f = __pyx_v_f.twin((&__pyx_v_f)); - - /* "squish/_squish/energy.pyx":253 - * - * f = f.twin(&f) - * f = f.next(&f) # <<<<<<<<<<<<<< - * - * if f.arr_index == e.arr_index: - */ - __pyx_v_f = __pyx_v_f.next((&__pyx_v_f)); - - /* "squish/_squish/energy.pyx":255 - * f = f.next(&f) - * - * if f.arr_index == e.arr_index: # <<<<<<<<<<<<<< - * break - * - */ - __pyx_t_13 = ((__pyx_v_f.arr_index == __pyx_v_e.arr_index) != 0); - if (__pyx_t_13) { - - /* "squish/_squish/energy.pyx":256 - * - * if f.arr_index == e.arr_index: - * break # <<<<<<<<<<<<<< - * - * e = e.next(&e) - */ - goto __pyx_L13_break; - - /* "squish/_squish/energy.pyx":255 - * f = f.next(&f) - * - * if f.arr_index == e.arr_index: # <<<<<<<<<<<<<< - * break - * - */ - } - } - __pyx_L13_break:; - - /* "squish/_squish/energy.pyx":258 - * break - * - * e = e.next(&e) # <<<<<<<<<<<<<< - * edge_set.free(&edge_set) - * self.grad = dedx - */ - __pyx_v_e = __pyx_v_e.next((&__pyx_v_e)); - } - - /* "squish/_squish/energy.pyx":259 - * - * e = e.next(&e) - * edge_set.free(&edge_set) # <<<<<<<<<<<<<< - * self.grad = dedx - * - */ - __pyx_v_edge_set.free((&__pyx_v_edge_set)); - } - } - } - } - } - #if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))) - #undef likely - #undef unlikely - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) - #endif - } - - /* "squish/_squish/energy.pyx":232 - * - * cdef INT_T i, j - * for i in prange(self.n, nogil=True): # <<<<<<<<<<<<<< - * xi = init.Site(i, &info) - * e = xi.edge(&xi) - */ - /*finally:*/ { - /*normal exit:*/{ - #ifdef WITH_THREAD - __Pyx_FastGIL_Forget(); - Py_BLOCK_THREADS - #endif - goto __pyx_L5; - } - __pyx_L5:; - } - } - - /* "squish/_squish/energy.pyx":260 - * e = e.next(&e) - * edge_set.free(&edge_set) - * self.grad = dedx # <<<<<<<<<<<<<< - * - * - */ - __PYX_XDEC_MEMVIEW(&__pyx_v_self->__pyx_base.grad, 0); - __PYX_INC_MEMVIEW(&__pyx_v_dedx, 0); - __pyx_v_self->__pyx_base.grad = __pyx_v_dedx; - - /* "squish/_squish/energy.pyx":217 - * - * - * cdef void calc_grad(self) except *: # <<<<<<<<<<<<<< - * cdef VoronoiInfo info = init.VoronoiInfo(self.sites, self.edges, self.points, - * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) - */ - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); - __Pyx_AddTraceback("_squish.RadialTEnergy.calc_grad", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_L0:; - __PYX_XDEC_MEMVIEW(&__pyx_v_dedx, 1); - __Pyx_RefNannyFinishContext(); -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_7_squish_13RadialTEnergy_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_7_squish_13RadialTEnergy_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_13RadialTEnergy_2__reduce_cython__(((struct __pyx_obj_7_squish_RadialTEnergy *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_7_squish_13RadialTEnergy_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_squish_RadialTEnergy *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 0); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(2, 2, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("_squish.RadialTEnergy.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_7_squish_13RadialTEnergy_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ -static PyObject *__pyx_pw_7_squish_13RadialTEnergy_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_13RadialTEnergy_4__setstate_cython__(((struct __pyx_obj_7_squish_RadialTEnergy *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_7_squish_13RadialTEnergy_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_squish_RadialTEnergy *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 0); - - /* "(tree fragment)":4 - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(2, 4, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("_squish.RadialTEnergy.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "squish/_squish/energy.pyx":265 - * cdef class Calc: - * @staticmethod - * cdef inline FLOAT_T phi(HalfEdge e) nogil: # <<<<<<<<<<<<<< - * cdef Vector2D da = e.cache.da(&e, NAN_VECTOR) - * cdef FLOAT_T angle = acos((da.x/e.cache.da_mag(&e, NAN))) - */ - -static CYTHON_INLINE __pyx_t_7_squish_FLOAT_T __pyx_f_7_squish_4Calc_phi(__pyx_t_7_squish_HalfEdge __pyx_v_e) { - __pyx_t_7_squish_Vector2D __pyx_v_da; - __pyx_t_7_squish_FLOAT_T __pyx_v_angle; - __pyx_t_7_squish_FLOAT_T __pyx_r; - __pyx_t_7_squish_FLOAT_T __pyx_t_1; - - /* "squish/_squish/energy.pyx":266 - * @staticmethod - * cdef inline FLOAT_T phi(HalfEdge e) nogil: - * cdef Vector2D da = e.cache.da(&e, NAN_VECTOR) # <<<<<<<<<<<<<< - * cdef FLOAT_T angle = acos((da.x/e.cache.da_mag(&e, NAN))) - * return angle if da.y >= 0 else TAU - angle - */ - __pyx_v_da = __pyx_v_e.cache->da((&__pyx_v_e), __pyx_v_7_squish_NAN_VECTOR); - - /* "squish/_squish/energy.pyx":267 - * cdef inline FLOAT_T phi(HalfEdge e) nogil: - * cdef Vector2D da = e.cache.da(&e, NAN_VECTOR) - * cdef FLOAT_T angle = acos((da.x/e.cache.da_mag(&e, NAN))) # <<<<<<<<<<<<<< - * return angle if da.y >= 0 else TAU - angle - * - */ - __pyx_v_angle = ((__pyx_t_7_squish_FLOAT_T)acos(((double)(__pyx_v_da.x / __pyx_v_e.cache->da_mag((&__pyx_v_e), NAN))))); - - /* "squish/_squish/energy.pyx":268 - * cdef Vector2D da = e.cache.da(&e, NAN_VECTOR) - * cdef FLOAT_T angle = acos((da.x/e.cache.da_mag(&e, NAN))) - * return angle if da.y >= 0 else TAU - angle # <<<<<<<<<<<<<< - * - * - */ - if (((__pyx_v_da.y >= 0.0) != 0)) { - __pyx_t_1 = __pyx_v_angle; - } else { - __pyx_t_1 = (__pyx_v_7_squish_TAU - __pyx_v_angle); - } - __pyx_r = __pyx_t_1; - goto __pyx_L0; - - /* "squish/_squish/energy.pyx":265 - * cdef class Calc: - * @staticmethod - * cdef inline FLOAT_T phi(HalfEdge e) nogil: # <<<<<<<<<<<<<< - * cdef Vector2D da = e.cache.da(&e, NAN_VECTOR) - * cdef FLOAT_T angle = acos((da.x/e.cache.da_mag(&e, NAN))) - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/energy.pyx":272 - * - * @staticmethod - * cdef inline Vector2D I2(HalfEdge e, FLOAT_T r0, FLOAT_T t) nogil: # <<<<<<<<<<<<<< - * cdef Vector2D Rda = e.cache.da(&e, NAN_VECTOR) - * Rda = Rda.rot(&Rda) - */ - -static CYTHON_INLINE __pyx_t_7_squish_Vector2D __pyx_f_7_squish_4Calc_I2(__pyx_t_7_squish_HalfEdge __pyx_v_e, CYTHON_UNUSED __pyx_t_7_squish_FLOAT_T __pyx_v_r0, CYTHON_UNUSED __pyx_t_7_squish_FLOAT_T __pyx_v_t) { - __pyx_t_7_squish_Vector2D __pyx_v_Rda; - __pyx_t_7_squish_Vector2D __pyx_r; - - /* "squish/_squish/energy.pyx":273 - * @staticmethod - * cdef inline Vector2D I2(HalfEdge e, FLOAT_T r0, FLOAT_T t) nogil: - * cdef Vector2D Rda = e.cache.da(&e, NAN_VECTOR) # <<<<<<<<<<<<<< - * Rda = Rda.rot(&Rda) - * Rda.self.sdiv(&Rda, e.cache.da_mag(&e, NAN)) - */ - __pyx_v_Rda = __pyx_v_e.cache->da((&__pyx_v_e), __pyx_v_7_squish_NAN_VECTOR); - - /* "squish/_squish/energy.pyx":274 - * cdef inline Vector2D I2(HalfEdge e, FLOAT_T r0, FLOAT_T t) nogil: - * cdef Vector2D Rda = e.cache.da(&e, NAN_VECTOR) - * Rda = Rda.rot(&Rda) # <<<<<<<<<<<<<< - * Rda.self.sdiv(&Rda, e.cache.da_mag(&e, NAN)) - * - */ - __pyx_v_Rda = __pyx_v_Rda.rot((&__pyx_v_Rda)); - - /* "squish/_squish/energy.pyx":275 - * cdef Vector2D Rda = e.cache.da(&e, NAN_VECTOR) - * Rda = Rda.rot(&Rda) - * Rda.self.sdiv(&Rda, e.cache.da_mag(&e, NAN)) # <<<<<<<<<<<<<< - * - * return Rda - */ - (void)(__pyx_v_Rda.self.sdiv((&__pyx_v_Rda), __pyx_v_e.cache->da_mag((&__pyx_v_e), NAN))); - - /* "squish/_squish/energy.pyx":277 - * Rda.self.sdiv(&Rda, e.cache.da_mag(&e, NAN)) - * - * return Rda # <<<<<<<<<<<<<< - * + /* "squish/voronoi.pyx":730 * + * for i in range(self.n): + * xi = _Site(i, &info) # <<<<<<<<<<<<<< + * v = xi.vec(&xi) + * sites.append(np.array([v.x, v.y])) */ - __pyx_r = __pyx_v_Rda; - goto __pyx_L0; - - /* "squish/_squish/energy.pyx":272 - * - * @staticmethod - * cdef inline Vector2D I2(HalfEdge e, FLOAT_T r0, FLOAT_T t) nogil: # <<<<<<<<<<<<<< - * cdef Vector2D Rda = e.cache.da(&e, NAN_VECTOR) - * Rda = Rda.rot(&Rda) - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "squish/_squish/energy.pyx":281 - * - * @staticmethod - * cdef Vector2D radialt_edge_grad(HalfEdge e, Site xi, FLOAT_T r0) nogil: # <<<<<<<<<<<<<< - * cdef Site xe - * cdef HalfEdge ep - */ - -static __pyx_t_7_squish_Vector2D __pyx_f_7_squish_4Calc_radialt_edge_grad(__pyx_t_7_squish_HalfEdge __pyx_v_e, __pyx_t_7_squish_Site __pyx_v_xi, __pyx_t_7_squish_FLOAT_T __pyx_v_r0) { - __pyx_t_7_squish_Site __pyx_v_xe; - __pyx_t_7_squish_HalfEdge __pyx_v_ep; - __pyx_t_7_squish_Vector2D __pyx_v_Rda; - __pyx_t_7_squish_Vector2D __pyx_v_i2ps; - __pyx_t_7_squish_Vector2D __pyx_v_fp; - __pyx_t_7_squish_Vector2D __pyx_v_gterms; - __pyx_t_7_squish_Vector2D __pyx_v_q; - __pyx_t_7_squish_Matrix2x2 __pyx_v_ha; - __pyx_t_7_squish_Matrix2x2 __pyx_v_hap; - __pyx_t_7_squish_Matrix2x2 __pyx_v_hdiff; - CYTHON_UNUSED __pyx_t_7_squish_FLOAT_T __pyx_v_t1; - CYTHON_UNUSED __pyx_t_7_squish_FLOAT_T __pyx_v_t2; - __pyx_t_7_squish_FLOAT_T __pyx_v_lntan; - __pyx_t_7_squish_FLOAT_T __pyx_v_csc; - __pyx_t_7_squish_FLOAT_T __pyx_v_sinB; - __pyx_t_7_squish_FLOAT_T __pyx_v_cosB; - __pyx_t_7_squish_FLOAT_T __pyx_v_sinBp; - __pyx_t_7_squish_FLOAT_T __pyx_v_cosBp; - __pyx_t_7_squish_FLOAT_T __pyx_v_F; - __pyx_t_7_squish_FLOAT_T __pyx_v_A; - __pyx_t_7_squish_FLOAT_T __pyx_v_B; - __pyx_t_7_squish_Vector2D __pyx_r; - __pyx_t_7_squish_FLOAT_T __pyx_t_1; - __pyx_t_7_squish_FLOAT_T __pyx_t_2; - __pyx_t_7_squish_FLOAT_T __pyx_t_3; - __pyx_t_7_squish_Matrix2x2 __pyx_t_4; - __pyx_t_7_squish_Matrix2x2 __pyx_t_5; - int __pyx_t_6; - - /* "squish/_squish/energy.pyx":289 - * cdef FLOAT_T t1, t2, lntan, csc, sinB, cosB, sinBp, cosBp, F, A, B - * - * xe = e.face(&e) # <<<<<<<<<<<<<< - * ep = e.next(&e) - * F, A, B = e.cache.F(&e, NAN), e.cache.la_mag(&e, NAN), e.cache.B(&e, NAN) - */ - __pyx_v_xe = __pyx_v_e.face((&__pyx_v_e)); - - /* "squish/_squish/energy.pyx":290 - * - * xe = e.face(&e) - * ep = e.next(&e) # <<<<<<<<<<<<<< - * F, A, B = e.cache.F(&e, NAN), e.cache.la_mag(&e, NAN), e.cache.B(&e, NAN) - * t1, t2 = e.cache.phi(&e, NAN), ep.cache.phi(&ep, NAN) - */ - __pyx_v_ep = __pyx_v_e.next((&__pyx_v_e)); - - /* "squish/_squish/energy.pyx":291 - * xe = e.face(&e) - * ep = e.next(&e) - * F, A, B = e.cache.F(&e, NAN), e.cache.la_mag(&e, NAN), e.cache.B(&e, NAN) # <<<<<<<<<<<<<< - * t1, t2 = e.cache.phi(&e, NAN), ep.cache.phi(&ep, NAN) - * - */ - __pyx_t_1 = __pyx_v_e.cache->F((&__pyx_v_e), NAN); - __pyx_t_2 = __pyx_v_e.cache->la_mag((&__pyx_v_e), NAN); - __pyx_t_3 = __pyx_v_e.cache->B((&__pyx_v_e), NAN); - __pyx_v_F = __pyx_t_1; - __pyx_v_A = __pyx_t_2; - __pyx_v_B = __pyx_t_3; - - /* "squish/_squish/energy.pyx":292 - * ep = e.next(&e) - * F, A, B = e.cache.F(&e, NAN), e.cache.la_mag(&e, NAN), e.cache.B(&e, NAN) - * t1, t2 = e.cache.phi(&e, NAN), ep.cache.phi(&ep, NAN) # <<<<<<<<<<<<<< - * - * lntan, csc = e.cache.lntan(&e, NAN), e.cache.csc(&e, NAN) - */ - __pyx_t_3 = __pyx_v_e.cache->phi((&__pyx_v_e), NAN); - __pyx_t_2 = __pyx_v_ep.cache->phi((&__pyx_v_ep), NAN); - __pyx_v_t1 = __pyx_t_3; - __pyx_v_t2 = __pyx_t_2; - - /* "squish/_squish/energy.pyx":294 - * t1, t2 = e.cache.phi(&e, NAN), ep.cache.phi(&ep, NAN) - * - * lntan, csc = e.cache.lntan(&e, NAN), e.cache.csc(&e, NAN) # <<<<<<<<<<<<<< - * - * sinB, cosB = (sin((B))), (cos((B))) - */ - __pyx_t_2 = __pyx_v_e.cache->lntan((&__pyx_v_e), NAN); - __pyx_t_3 = __pyx_v_e.cache->csc((&__pyx_v_e), NAN); - __pyx_v_lntan = __pyx_t_2; - __pyx_v_csc = __pyx_t_3; - - /* "squish/_squish/energy.pyx":296 - * lntan, csc = e.cache.lntan(&e, NAN), e.cache.csc(&e, NAN) - * - * sinB, cosB = (sin((B))), (cos((B))) # <<<<<<<<<<<<<< - * sinBp, cosBp = (sin((B-PI_2))), \ - * (cos((B-PI_2))) - */ - __pyx_t_3 = ((__pyx_t_7_squish_FLOAT_T)sin(((double)__pyx_v_B))); - __pyx_t_2 = ((__pyx_t_7_squish_FLOAT_T)cos(((double)__pyx_v_B))); - __pyx_v_sinB = __pyx_t_3; - __pyx_v_cosB = __pyx_t_2; - - /* "squish/_squish/energy.pyx":297 - * - * sinB, cosB = (sin((B))), (cos((B))) - * sinBp, cosBp = (sin((B-PI_2))), \ # <<<<<<<<<<<<<< - * (cos((B-PI_2))) - * - */ - __pyx_t_2 = ((__pyx_t_7_squish_FLOAT_T)sin(((double)(__pyx_v_B - M_PI_2)))); - - /* "squish/_squish/energy.pyx":298 - * sinB, cosB = (sin((B))), (cos((B))) - * sinBp, cosBp = (sin((B-PI_2))), \ - * (cos((B-PI_2))) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_3 = ((__pyx_t_7_squish_FLOAT_T)cos(((double)(__pyx_v_B - M_PI_2)))); - __pyx_v_sinBp = __pyx_t_2; - __pyx_v_cosBp = __pyx_t_3; - - /* "squish/_squish/energy.pyx":301 - * - * - * ha, hap = e.get_H(&e, xi), ep.get_H(&ep, xi) # <<<<<<<<<<<<<< - * hdiff = hap.copy.msub(&hap, ha) - * # If edge is part of differentiated site. - */ - __pyx_t_4 = __pyx_v_e.get_H((&__pyx_v_e), __pyx_v_xi); - __pyx_t_5 = __pyx_v_ep.get_H((&__pyx_v_ep), __pyx_v_xi); - __pyx_v_ha = __pyx_t_4; - __pyx_v_hap = __pyx_t_5; - - /* "squish/_squish/energy.pyx":302 - * - * ha, hap = e.get_H(&e, xi), ep.get_H(&ep, xi) - * hdiff = hap.copy.msub(&hap, ha) # <<<<<<<<<<<<<< - * # If edge is part of differentiated site. - * if xe.index(&xe) == xi.index(&xi): - */ - __pyx_v_hdiff = __pyx_v_hap.copy.msub((&__pyx_v_hap), __pyx_v_ha); - - /* "squish/_squish/energy.pyx":304 - * hdiff = hap.copy.msub(&hap, ha) - * # If edge is part of differentiated site. - * if xe.index(&xe) == xi.index(&xi): # <<<<<<<<<<<<<< - * ha.self.msub(&ha, init.Matrix2x2(1.0, 0.0, 0.0, 1.0)) - * hap.self.msub(&hap, init.Matrix2x2(1.0, 0.0, 0.0, 1.0)) - */ - __pyx_t_6 = ((__pyx_v_xe.index((&__pyx_v_xe)) == __pyx_v_xi.index((&__pyx_v_xi))) != 0); - if (__pyx_t_6) { - - /* "squish/_squish/energy.pyx":305 - * # If edge is part of differentiated site. - * if xe.index(&xe) == xi.index(&xi): - * ha.self.msub(&ha, init.Matrix2x2(1.0, 0.0, 0.0, 1.0)) # <<<<<<<<<<<<<< - * hap.self.msub(&hap, init.Matrix2x2(1.0, 0.0, 0.0, 1.0)) - * - */ - (void)(__pyx_v_ha.self.msub((&__pyx_v_ha), __pyx_v_7_squish_init.Matrix2x2(1.0, 0.0, 0.0, 1.0))); - - /* "squish/_squish/energy.pyx":306 - * if xe.index(&xe) == xi.index(&xi): - * ha.self.msub(&ha, init.Matrix2x2(1.0, 0.0, 0.0, 1.0)) - * hap.self.msub(&hap, init.Matrix2x2(1.0, 0.0, 0.0, 1.0)) # <<<<<<<<<<<<<< - * - * i2ps = ep.cache.i2p(&ep, NAN_VECTOR) - */ - (void)(__pyx_v_hap.self.msub((&__pyx_v_hap), __pyx_v_7_squish_init.Matrix2x2(1.0, 0.0, 0.0, 1.0))); - - /* "squish/_squish/energy.pyx":304 - * hdiff = hap.copy.msub(&hap, ha) - * # If edge is part of differentiated site. - * if xe.index(&xe) == xi.index(&xi): # <<<<<<<<<<<<<< - * ha.self.msub(&ha, init.Matrix2x2(1.0, 0.0, 0.0, 1.0)) - * hap.self.msub(&hap, init.Matrix2x2(1.0, 0.0, 0.0, 1.0)) - */ - } - - /* "squish/_squish/energy.pyx":308 - * hap.self.msub(&hap, init.Matrix2x2(1.0, 0.0, 0.0, 1.0)) - * - * i2ps = ep.cache.i2p(&ep, NAN_VECTOR) # <<<<<<<<<<<<<< - * i2ps.self.matmul(&i2ps, hap) - * - */ - __pyx_v_i2ps = __pyx_v_ep.cache->i2p((&__pyx_v_ep), __pyx_v_7_squish_NAN_VECTOR); - - /* "squish/_squish/energy.pyx":309 - * - * i2ps = ep.cache.i2p(&ep, NAN_VECTOR) - * i2ps.self.matmul(&i2ps, hap) # <<<<<<<<<<<<<< - * - * q = e.cache.i2p(&e, NAN_VECTOR) - */ - (void)(__pyx_v_i2ps.self.matmul((&__pyx_v_i2ps), __pyx_v_hap)); - - /* "squish/_squish/energy.pyx":311 - * i2ps.self.matmul(&i2ps, hap) - * - * q = e.cache.i2p(&e, NAN_VECTOR) # <<<<<<<<<<<<<< - * q.self.matmul(&q, ha) - * - */ - __pyx_v_q = __pyx_v_e.cache->i2p((&__pyx_v_e), __pyx_v_7_squish_NAN_VECTOR); - - /* "squish/_squish/energy.pyx":312 - * - * q = e.cache.i2p(&e, NAN_VECTOR) - * q.self.matmul(&q, ha) # <<<<<<<<<<<<<< - * - * i2ps.self.vsub(&i2ps, q) - */ - (void)(__pyx_v_q.self.matmul((&__pyx_v_q), __pyx_v_ha)); - - /* "squish/_squish/energy.pyx":314 - * q.self.matmul(&q, ha) - * - * i2ps.self.vsub(&i2ps, q) # <<<<<<<<<<<<<< - * - * Rda = e.cache.da(&e, NAN_VECTOR) - */ - (void)(__pyx_v_i2ps.self.vsub((&__pyx_v_i2ps), __pyx_v_q)); - - /* "squish/_squish/energy.pyx":316 - * i2ps.self.vsub(&i2ps, q) - * - * Rda = e.cache.da(&e, NAN_VECTOR) # <<<<<<<<<<<<<< - * Rda = Rda.rot(&Rda) - * - */ - __pyx_v_Rda = __pyx_v_e.cache->da((&__pyx_v_e), __pyx_v_7_squish_NAN_VECTOR); - - /* "squish/_squish/energy.pyx":317 - * - * Rda = e.cache.da(&e, NAN_VECTOR) - * Rda = Rda.rot(&Rda) # <<<<<<<<<<<<<< - * - * fp = e.cache.la(&e, NAN_VECTOR) - */ - __pyx_v_Rda = __pyx_v_Rda.rot((&__pyx_v_Rda)); - - /* "squish/_squish/energy.pyx":319 - * Rda = Rda.rot(&Rda) - * - * fp = e.cache.la(&e, NAN_VECTOR) # <<<<<<<<<<<<<< - * fp.self.matmul(&fp, R.copy.matmul(&R, ha)) - * fp.self.vadd(&fp, Rda.copy.matmul(&Rda, hdiff)) - */ - __pyx_v_fp = __pyx_v_e.cache->la((&__pyx_v_e), __pyx_v_7_squish_NAN_VECTOR); - - /* "squish/_squish/energy.pyx":320 - * - * fp = e.cache.la(&e, NAN_VECTOR) - * fp.self.matmul(&fp, R.copy.matmul(&R, ha)) # <<<<<<<<<<<<<< - * fp.self.vadd(&fp, Rda.copy.matmul(&Rda, hdiff)) - * fp.self.smul(&fp, lntan/A) - */ - (void)(__pyx_v_fp.self.matmul((&__pyx_v_fp), __pyx_v_7_squish_R.copy.matmul((&__pyx_v_7_squish_R), __pyx_v_ha))); - - /* "squish/_squish/energy.pyx":321 - * fp = e.cache.la(&e, NAN_VECTOR) - * fp.self.matmul(&fp, R.copy.matmul(&R, ha)) - * fp.self.vadd(&fp, Rda.copy.matmul(&Rda, hdiff)) # <<<<<<<<<<<<<< - * fp.self.smul(&fp, lntan/A) - * - */ - (void)(__pyx_v_fp.self.vadd((&__pyx_v_fp), __pyx_v_Rda.copy.matmul((&__pyx_v_Rda), __pyx_v_hdiff))); - - /* "squish/_squish/energy.pyx":322 - * fp.self.matmul(&fp, R.copy.matmul(&R, ha)) - * fp.self.vadd(&fp, Rda.copy.matmul(&Rda, hdiff)) - * fp.self.smul(&fp, lntan/A) # <<<<<<<<<<<<<< - * - * gterms = init.Vector2D( - */ - (void)(__pyx_v_fp.self.smul((&__pyx_v_fp), (__pyx_v_lntan / __pyx_v_A))); - - /* "squish/_squish/energy.pyx":324 - * fp.self.smul(&fp, lntan/A) - * - * gterms = init.Vector2D( # <<<<<<<<<<<<<< - * cosBp*lntan + sinBp*csc, - * cosB*lntan + sinB*csc - */ - __pyx_v_gterms = __pyx_v_7_squish_init.Vector2D(((__pyx_v_cosBp * __pyx_v_lntan) + (__pyx_v_sinBp * __pyx_v_csc)), ((__pyx_v_cosB * __pyx_v_lntan) + (__pyx_v_sinB * __pyx_v_csc))); - - /* "squish/_squish/energy.pyx":328 - * cosB*lntan + sinB*csc - * ) - * gterms.self.smul(>erms, -F/A**2) # <<<<<<<<<<<<<< - * - * gterms = gterms.rot(>erms) - */ - (void)(__pyx_v_gterms.self.smul((&__pyx_v_gterms), ((-__pyx_v_F) / pow(__pyx_v_A, 2.0)))); - - /* "squish/_squish/energy.pyx":330 - * gterms.self.smul(>erms, -F/A**2) - * - * gterms = gterms.rot(>erms) # <<<<<<<<<<<<<< - * gterms.self.matmul(>erms, hdiff) - * - */ - __pyx_v_gterms = __pyx_v_gterms.rot((&__pyx_v_gterms)); - - /* "squish/_squish/energy.pyx":331 - * - * gterms = gterms.rot(>erms) - * gterms.self.matmul(>erms, hdiff) # <<<<<<<<<<<<<< - * - * fp.self.vadd(&fp, gterms) - */ - (void)(__pyx_v_gterms.self.matmul((&__pyx_v_gterms), __pyx_v_hdiff)); - - /* "squish/_squish/energy.pyx":333 - * gterms.self.matmul(>erms, hdiff) - * - * fp.self.vadd(&fp, gterms) # <<<<<<<<<<<<<< - * - * i2ps.self.vadd(&i2ps, fp) - */ - (void)(__pyx_v_fp.self.vadd((&__pyx_v_fp), __pyx_v_gterms)); - - /* "squish/_squish/energy.pyx":335 - * fp.self.vadd(&fp, gterms) - * - * i2ps.self.vadd(&i2ps, fp) # <<<<<<<<<<<<<< - * i2ps.self.smul(&i2ps, -2*r0) - * - */ - (void)(__pyx_v_i2ps.self.vadd((&__pyx_v_i2ps), __pyx_v_fp)); - - /* "squish/_squish/energy.pyx":336 - * - * i2ps.self.vadd(&i2ps, fp) - * i2ps.self.smul(&i2ps, -2*r0) # <<<<<<<<<<<<<< - * - * return i2ps - */ - (void)(__pyx_v_i2ps.self.smul((&__pyx_v_i2ps), (-2.0 * __pyx_v_r0))); - - /* "squish/_squish/energy.pyx":338 - * i2ps.self.smul(&i2ps, -2*r0) - * - * return i2ps # <<<<<<<<<<<<<< - */ - __pyx_r = __pyx_v_i2ps; - goto __pyx_L0; - - /* "squish/_squish/energy.pyx":281 - * - * @staticmethod - * cdef Vector2D radialt_edge_grad(HalfEdge e, Site xi, FLOAT_T r0) nogil: # <<<<<<<<<<<<<< - * cdef Site xe - * cdef HalfEdge ep - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * cdef tuple state - * cdef object _dict - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_7_squish_4Calc_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ -static PyObject *__pyx_pw_7_squish_4Calc_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_4Calc___reduce_cython__(((struct __pyx_obj_7_squish_Calc *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_7_squish_4Calc___reduce_cython__(struct __pyx_obj_7_squish_Calc *__pyx_v_self) { - PyObject *__pyx_v_state = 0; - PyObject *__pyx_v__dict = 0; - int __pyx_v_use_setstate; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 0); - - /* "(tree fragment)":5 - * cdef object _dict - * cdef bint use_setstate - * state = () # <<<<<<<<<<<<<< - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: - */ - __Pyx_INCREF(__pyx_empty_tuple); - __pyx_v_state = __pyx_empty_tuple; - - /* "(tree fragment)":6 - * cdef bint use_setstate - * state = () - * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< - * if _dict is not None: - * state += (_dict,) - */ - __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v__dict = __pyx_t_1; - __pyx_t_1 = 0; + __pyx_v_xi = __pyx_f_6squish_7voronoi__Site(__pyx_v_i, (&__pyx_v_info)); - /* "(tree fragment)":7 - * state = () - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: # <<<<<<<<<<<<<< - * state += (_dict,) - * use_setstate = True + /* "squish/voronoi.pyx":731 + * for i in range(self.n): + * xi = _Site(i, &info) + * v = xi.vec(&xi) # <<<<<<<<<<<<<< + * sites.append(np.array([v.x, v.y])) + * verts = np.empty((xi.edge_num(&xi), 2)) */ - __pyx_t_2 = (__pyx_v__dict != Py_None); - __pyx_t_3 = (__pyx_t_2 != 0); - if (__pyx_t_3) { + __pyx_v_v = __pyx_v_xi.vec((&__pyx_v_xi)); - /* "(tree fragment)":8 - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: - * state += (_dict,) # <<<<<<<<<<<<<< - * use_setstate = True - * else: + /* "squish/voronoi.pyx":732 + * xi = _Site(i, &info) + * v = xi.vec(&xi) + * sites.append(np.array([v.x, v.y])) # <<<<<<<<<<<<<< + * verts = np.empty((xi.edge_num(&xi), 2)) + * e = xi.edge(&xi) */ - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 8, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v__dict); - __Pyx_GIVEREF(__pyx_v__dict); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict); - __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4)); - __pyx_t_4 = 0; - - /* "(tree fragment)":9 - * if _dict is not None: - * state += (_dict,) - * use_setstate = True # <<<<<<<<<<<<<< - * else: - * use_setstate = False - */ - __pyx_v_use_setstate = 1; - - /* "(tree fragment)":7 - * state = () - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: # <<<<<<<<<<<<<< - * state += (_dict,) - * use_setstate = True - */ - goto __pyx_L3; - } - - /* "(tree fragment)":11 - * use_setstate = True - * else: - * use_setstate = False # <<<<<<<<<<<<<< - * if use_setstate: - * return __pyx_unpickle_Calc, (type(self), 0xd41d8cd, None), state - */ - /*else*/ { - __pyx_v_use_setstate = 0; - } - __pyx_L3:; - - /* "(tree fragment)":12 - * else: - * use_setstate = False - * if use_setstate: # <<<<<<<<<<<<<< - * return __pyx_unpickle_Calc, (type(self), 0xd41d8cd, None), state - * else: - */ - __pyx_t_3 = (__pyx_v_use_setstate != 0); - if (__pyx_t_3) { - - /* "(tree fragment)":13 - * use_setstate = False - * if use_setstate: - * return __pyx_unpickle_Calc, (type(self), 0xd41d8cd, None), state # <<<<<<<<<<<<<< - * else: - * return __pyx_unpickle_Calc, (type(self), 0xd41d8cd, state) - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Calc); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __Pyx_INCREF(__pyx_int_222419149); - __Pyx_GIVEREF(__pyx_int_222419149); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_222419149); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None); - __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1); - __Pyx_INCREF(__pyx_v_state); - __Pyx_GIVEREF(__pyx_v_state); - PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state); - __pyx_t_4 = 0; - __pyx_t_1 = 0; - __pyx_r = __pyx_t_5; - __pyx_t_5 = 0; - goto __pyx_L0; - - /* "(tree fragment)":12 - * else: - * use_setstate = False - * if use_setstate: # <<<<<<<<<<<<<< - * return __pyx_unpickle_Calc, (type(self), 0xd41d8cd, None), state - * else: - */ - } - - /* "(tree fragment)":15 - * return __pyx_unpickle_Calc, (type(self), 0xd41d8cd, None), state - * else: - * return __pyx_unpickle_Calc, (type(self), 0xd41d8cd, state) # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * __pyx_unpickle_Calc__set_state(self, __pyx_state) - */ - /*else*/ { - __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Calc); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __Pyx_INCREF(__pyx_int_222419149); - __Pyx_GIVEREF(__pyx_int_222419149); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_222419149); - __Pyx_INCREF(__pyx_v_state); - __Pyx_GIVEREF(__pyx_v_state); - PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); - __pyx_t_5 = 0; - __pyx_t_1 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - } - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * cdef tuple state - * cdef object _dict - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("_squish.Calc.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_state); - __Pyx_XDECREF(__pyx_v__dict); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":16 - * else: - * return __pyx_unpickle_Calc, (type(self), 0xd41d8cd, state) - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * __pyx_unpickle_Calc__set_state(self, __pyx_state) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_7_squish_4Calc_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ -static PyObject *__pyx_pw_7_squish_4Calc_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - __pyx_r = __pyx_pf_7_squish_4Calc_2__setstate_cython__(((struct __pyx_obj_7_squish_Calc *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_7_squish_4Calc_2__setstate_cython__(struct __pyx_obj_7_squish_Calc *__pyx_v_self, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 0); - - /* "(tree fragment)":17 - * return __pyx_unpickle_Calc, (type(self), 0xd41d8cd, state) - * def __setstate_cython__(self, __pyx_state): - * __pyx_unpickle_Calc__set_state(self, __pyx_state) # <<<<<<<<<<<<<< - */ - if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(2, 17, __pyx_L1_error) - __pyx_t_1 = __pyx_f_7_squish___pyx_unpickle_Calc__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "(tree fragment)":16 - * else: - * return __pyx_unpickle_Calc, (type(self), 0xd41d8cd, state) - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * __pyx_unpickle_Calc__set_state(self, __pyx_state) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("_squish.Calc.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __pyx_unpickle_Calc(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError - * cdef object __pyx_result - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_7_squish_1__pyx_unpickle_Calc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_7_squish_1__pyx_unpickle_Calc = {"__pyx_unpickle_Calc", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_7_squish_1__pyx_unpickle_Calc, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_7_squish_1__pyx_unpickle_Calc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v___pyx_type = 0; - long __pyx_v___pyx_checksum; - PyObject *__pyx_v___pyx_state = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__pyx_unpickle_Calc (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; - PyObject* values[3] = {0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Calc", 1, 3, 3, 1); __PYX_ERR(2, 1, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Calc", 1, 3, 3, 2); __PYX_ERR(2, 1, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Calc") < 0)) __PYX_ERR(2, 1, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - } - __pyx_v___pyx_type = values[0]; - __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) - __pyx_v___pyx_state = values[2]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Calc", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("_squish.__pyx_unpickle_Calc", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_7_squish___pyx_unpickle_Calc(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_7_squish___pyx_unpickle_Calc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_v___pyx_PickleError = 0; - PyObject *__pyx_v___pyx_result = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__pyx_unpickle_Calc", 0); - - /* "(tree fragment)":4 - * cdef object __pyx_PickleError - * cdef object __pyx_result - * if __pyx_checksum != 0xd41d8cd: # <<<<<<<<<<<<<< - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) - */ - __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xd41d8cd) != 0); - if (__pyx_t_1) { - - /* "(tree fragment)":5 - * cdef object __pyx_result - * if __pyx_checksum != 0xd41d8cd: - * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< - * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) - * __pyx_result = Calc.__new__(__pyx_type) - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_PickleError); - __Pyx_GIVEREF(__pyx_n_s_PickleError); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); - __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_2); - __pyx_v___pyx_PickleError = __pyx_t_2; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":6 - * if __pyx_checksum != 0xd41d8cd: - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) # <<<<<<<<<<<<<< - * __pyx_result = Calc.__new__(__pyx_type) - * if __pyx_state is not None: - */ - __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xd4, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_INCREF(__pyx_v___pyx_PickleError); - __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 6, __pyx_L1_error) - - /* "(tree fragment)":4 - * cdef object __pyx_PickleError - * cdef object __pyx_result - * if __pyx_checksum != 0xd41d8cd: # <<<<<<<<<<<<<< - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) - */ - } - - /* "(tree fragment)":7 - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) - * __pyx_result = Calc.__new__(__pyx_type) # <<<<<<<<<<<<<< - * if __pyx_state is not None: - * __pyx_unpickle_Calc__set_state( __pyx_result, __pyx_state) - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_7_squish_Calc), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 7, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 7, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v___pyx_result = __pyx_t_3; - __pyx_t_3 = 0; - - /* "(tree fragment)":8 - * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) - * __pyx_result = Calc.__new__(__pyx_type) - * if __pyx_state is not None: # <<<<<<<<<<<<<< - * __pyx_unpickle_Calc__set_state( __pyx_result, __pyx_state) - * return __pyx_result - */ - __pyx_t_1 = (__pyx_v___pyx_state != Py_None); - __pyx_t_6 = (__pyx_t_1 != 0); - if (__pyx_t_6) { - - /* "(tree fragment)":9 - * __pyx_result = Calc.__new__(__pyx_type) - * if __pyx_state is not None: - * __pyx_unpickle_Calc__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< - * return __pyx_result - * cdef __pyx_unpickle_Calc__set_state(Calc __pyx_result, tuple __pyx_state): - */ - if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(2, 9, __pyx_L1_error) - __pyx_t_3 = __pyx_f_7_squish___pyx_unpickle_Calc__set_state(((struct __pyx_obj_7_squish_Calc *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":8 - * raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum) - * __pyx_result = Calc.__new__(__pyx_type) - * if __pyx_state is not None: # <<<<<<<<<<<<<< - * __pyx_unpickle_Calc__set_state( __pyx_result, __pyx_state) - * return __pyx_result - */ - } - - /* "(tree fragment)":10 - * if __pyx_state is not None: - * __pyx_unpickle_Calc__set_state( __pyx_result, __pyx_state) - * return __pyx_result # <<<<<<<<<<<<<< - * cdef __pyx_unpickle_Calc__set_state(Calc __pyx_result, tuple __pyx_state): - * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v___pyx_result); - __pyx_r = __pyx_v___pyx_result; - goto __pyx_L0; - - /* "(tree fragment)":1 - * def __pyx_unpickle_Calc(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError - * cdef object __pyx_result - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("_squish.__pyx_unpickle_Calc", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v___pyx_PickleError); - __Pyx_XDECREF(__pyx_v___pyx_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":11 - * __pyx_unpickle_Calc__set_state( __pyx_result, __pyx_state) - * return __pyx_result - * cdef __pyx_unpickle_Calc__set_state(Calc __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< - * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): - * __pyx_result.__dict__.update(__pyx_state[0]) - */ - -static PyObject *__pyx_f_7_squish___pyx_unpickle_Calc__set_state(struct __pyx_obj_7_squish_Calc *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - Py_ssize_t __pyx_t_2; - int __pyx_t_3; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__pyx_unpickle_Calc__set_state", 0); - - /* "(tree fragment)":12 - * return __pyx_result - * cdef __pyx_unpickle_Calc__set_state(Calc __pyx_result, tuple __pyx_state): - * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< - * __pyx_result.__dict__.update(__pyx_state[0]) - */ - if (unlikely(__pyx_v___pyx_state == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(2, 12, __pyx_L1_error) - } - __pyx_t_2 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(2, 12, __pyx_L1_error) - __pyx_t_3 = ((__pyx_t_2 > 0) != 0); - if (__pyx_t_3) { - } else { - __pyx_t_1 = __pyx_t_3; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_3 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(2, 12, __pyx_L1_error) - __pyx_t_4 = (__pyx_t_3 != 0); - __pyx_t_1 = __pyx_t_4; - __pyx_L4_bool_binop_done:; - if (__pyx_t_1) { - - /* "(tree fragment)":13 - * cdef __pyx_unpickle_Calc__set_state(Calc __pyx_result, tuple __pyx_state): - * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): - * __pyx_result.__dict__.update(__pyx_state[0]) # <<<<<<<<<<<<<< - */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyFloat_FromDouble(__pyx_v_v.x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 732, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = PyFloat_FromDouble(__pyx_v_v.y); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(__pyx_v___pyx_state == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_8 = PyList_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 732, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_1); + PyList_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_7); + PyList_SET_ITEM(__pyx_t_8, 1, __pyx_t_7); + __pyx_t_1 = 0; + __pyx_t_7 = 0; + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + } } + __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 732, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_sites, __pyx_t_2); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 732, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "squish/voronoi.pyx":733 + * v = xi.vec(&xi) + * sites.append(np.array([v.x, v.y])) + * verts = np.empty((xi.edge_num(&xi), 2)) # <<<<<<<<<<<<<< + * e = xi.edge(&xi) + * for j in range(xi.edge_num(&xi)): + */ + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 733, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 733, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyInt_From_npy_int64(__pyx_v_xi.edge_num((&__pyx_v_xi))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 733, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 733, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); + __Pyx_INCREF(__pyx_int_2); + __Pyx_GIVEREF(__pyx_int_2); + PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_2); + __pyx_t_6 = 0; __pyx_t_6 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); + __Pyx_DECREF_SET(__pyx_t_8, function); } } - __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_6, PyTuple_GET_ITEM(__pyx_v___pyx_state, 0)) : __Pyx_PyObject_CallOneArg(__pyx_t_7, PyTuple_GET_ITEM(__pyx_v___pyx_state, 0)); + __pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_6, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 733, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF_SET(__pyx_v_verts, __pyx_t_2); + __pyx_t_2 = 0; - /* "(tree fragment)":12 - * return __pyx_result - * cdef __pyx_unpickle_Calc__set_state(Calc __pyx_result, tuple __pyx_state): - * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< - * __pyx_result.__dict__.update(__pyx_state[0]) + /* "squish/voronoi.pyx":734 + * sites.append(np.array([v.x, v.y])) + * verts = np.empty((xi.edge_num(&xi), 2)) + * e = xi.edge(&xi) # <<<<<<<<<<<<<< + * for j in range(xi.edge_num(&xi)): + * v = e.origin(&e) */ + __pyx_v_e = __pyx_v_xi.edge((&__pyx_v_xi)); + + /* "squish/voronoi.pyx":735 + * verts = np.empty((xi.edge_num(&xi), 2)) + * e = xi.edge(&xi) + * for j in range(xi.edge_num(&xi)): # <<<<<<<<<<<<<< + * v = e.origin(&e) + * verts[j, 0], verts[j, 1] = v.x, v.y + */ + __pyx_t_10 = __pyx_v_xi.edge_num((&__pyx_v_xi)); + __pyx_t_11 = __pyx_t_10; + for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) { + __pyx_v_j = __pyx_t_12; + + /* "squish/voronoi.pyx":736 + * e = xi.edge(&xi) + * for j in range(xi.edge_num(&xi)): + * v = e.origin(&e) # <<<<<<<<<<<<<< + * verts[j, 0], verts[j, 1] = v.x, v.y + * e = e.next(&e) + */ + __pyx_v_v = __pyx_v_e.origin((&__pyx_v_e)); + + /* "squish/voronoi.pyx":737 + * for j in range(xi.edge_num(&xi)): + * v = e.origin(&e) + * verts[j, 0], verts[j, 1] = v.x, v.y # <<<<<<<<<<<<<< + * e = e.next(&e) + * + */ + __pyx_t_2 = PyFloat_FromDouble(__pyx_v_v.x); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 737, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_8 = PyFloat_FromDouble(__pyx_v_v.y); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 737, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = __Pyx_PyInt_From_npy_int64(__pyx_v_j); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 737, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 737, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); + __Pyx_INCREF(__pyx_int_0); + __Pyx_GIVEREF(__pyx_int_0); + PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_0); + __pyx_t_7 = 0; + if (unlikely(PyObject_SetItem(__pyx_v_verts, __pyx_t_6, __pyx_t_2) < 0)) __PYX_ERR(0, 737, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyInt_From_npy_int64(__pyx_v_j); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 737, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 737, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); + __Pyx_INCREF(__pyx_int_1); + __Pyx_GIVEREF(__pyx_int_1); + PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_1); + __pyx_t_2 = 0; + if (unlikely(PyObject_SetItem(__pyx_v_verts, __pyx_t_6, __pyx_t_8) < 0)) __PYX_ERR(0, 737, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "squish/voronoi.pyx":738 + * v = e.origin(&e) + * verts[j, 0], verts[j, 1] = v.x, v.y + * e = e.next(&e) # <<<<<<<<<<<<<< + * + * site_verts.append(verts) + */ + __pyx_v_e = __pyx_v_e.next((&__pyx_v_e)); + } + + /* "squish/voronoi.pyx":740 + * e = e.next(&e) + * + * site_verts.append(verts) # <<<<<<<<<<<<<< + * + * return sites, site_verts + */ + __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_site_verts, __pyx_v_verts); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 740, __pyx_L1_error) } - /* "(tree fragment)":11 - * __pyx_unpickle_Calc__set_state( __pyx_result, __pyx_state) - * return __pyx_result - * cdef __pyx_unpickle_Calc__set_state(Calc __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< - * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): - * __pyx_result.__dict__.update(__pyx_state[0]) + /* "squish/voronoi.pyx":742 + * site_verts.append(verts) + * + * return sites, site_verts # <<<<<<<<<<<<<< + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 742, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_INCREF(__pyx_v_sites); + __Pyx_GIVEREF(__pyx_v_sites); + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_sites); + __Pyx_INCREF(__pyx_v_site_verts); + __Pyx_GIVEREF(__pyx_v_site_verts); + PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_site_verts); + __pyx_r = __pyx_t_8; + __pyx_t_8 = 0; + goto __pyx_L0; + + /* "squish/voronoi.pyx":718 + * + * + * def site_vert_arr(self): # -> List[np.ndarray] # <<<<<<<<<<<<<< + * cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + * self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) */ /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("_squish.__pyx_unpickle_Calc__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.site_vert_arr", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_sites); + __Pyx_XDECREF(__pyx_v_site_verts); + __Pyx_XDECREF(__pyx_v_verts); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "squish/voronoi.pxd":66 + * + * cdef class VoronoiContainer: + * cdef readonly INT_T n # <<<<<<<<<<<<<< + * cdef readonly FLOAT_T w, h, r, energy + * cdef FLOAT_T [2] dim + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_1n_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_1n_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6squish_7voronoi_16VoronoiContainer_1n___get__(((struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_1n___get__(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyInt_From_npy_int64(__pyx_v_self->n); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 66, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.n.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":735 +/* "squish/voronoi.pxd":67 + * cdef class VoronoiContainer: + * cdef readonly INT_T n + * cdef readonly FLOAT_T w, h, r, energy # <<<<<<<<<<<<<< + * cdef FLOAT_T [2] dim + * cdef FLOAT_T [:, ::1] points, vertices, site_cache, edge_cache, grad + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_1w_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_1w_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6squish_7voronoi_16VoronoiContainer_1w___get__(((struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_1w___get__(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->w); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 67, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.w.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_1h_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_1h_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6squish_7voronoi_16VoronoiContainer_1h___get__(((struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_1h___get__(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->h); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 67, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.h.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_1r_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_1r_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6squish_7voronoi_16VoronoiContainer_1r___get__(((struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_1r___get__(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->r); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 67, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.r.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_6energy_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_6energy_1__get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); + __pyx_r = __pyx_pf_6squish_7voronoi_16VoronoiContainer_6energy___get__(((struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_6energy___get__(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->energy); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 67, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.energy.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_6squish_7voronoi_16VoronoiContainer_10__reduce_cython__(((struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ +static PyObject *__pyx_pw_6squish_7voronoi_16VoronoiContainer_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); + __pyx_r = __pyx_pf_6squish_7voronoi_16VoronoiContainer_12__setstate_cython__(((struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6squish_7voronoi_16VoronoiContainer_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6squish_7voronoi_VoronoiContainer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< + */ + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_Raise(__pyx_t_1, 0, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("squish.voronoi.VoronoiContainer.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":735 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -19643,7 +12464,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":736 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":736 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -19651,13 +12472,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ * cdef inline object PyArray_MultiIterNew2(a, b): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 736, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":735 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":735 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -19676,7 +12497,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":738 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":738 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -19693,7 +12514,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":739 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":739 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -19701,13 +12522,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ * cdef inline object PyArray_MultiIterNew3(a, b, c): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 739, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":738 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":738 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -19726,7 +12547,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":741 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":741 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -19743,7 +12564,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":742 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":742 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -19751,13 +12572,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ * cdef inline object PyArray_MultiIterNew4(a, b, c, d): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 742, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":741 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":741 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -19776,7 +12597,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":744 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":744 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -19793,7 +12614,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":745 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":745 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -19801,13 +12622,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 745, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 745, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":744 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":744 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -19826,7 +12647,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":747 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":747 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -19843,7 +12664,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":748 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":748 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -19851,13 +12672,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ * cdef inline tuple PyDataType_SHAPE(dtype d): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 748, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 748, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":747 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":747 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -19876,7 +12697,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":750 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":750 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -19890,7 +12711,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ int __pyx_t_1; __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":751 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":751 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -19900,7 +12721,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0); if (__pyx_t_1) { - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":752 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":752 * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): * return d.subarray.shape # <<<<<<<<<<<<<< @@ -19912,7 +12733,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape); goto __pyx_L0; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":751 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":751 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -19921,7 +12742,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ */ } - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":754 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":754 * return d.subarray.shape * else: * return () # <<<<<<<<<<<<<< @@ -19935,7 +12756,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ goto __pyx_L0; } - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":750 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":750 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -19950,7 +12771,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ return __pyx_r; } -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":929 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":929 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -19962,7 +12783,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_array_base", 0); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":930 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":930 * * cdef inline void set_array_base(ndarray arr, object base): * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<< @@ -19971,7 +12792,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":931 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":931 * cdef inline void set_array_base(ndarray arr, object base): * Py_INCREF(base) # important to do this before stealing the reference below! * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<< @@ -19980,7 +12801,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base)); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":929 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":929 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -19992,7 +12813,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":933 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":933 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -20007,7 +12828,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":934 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":934 * * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) # <<<<<<<<<<<<<< @@ -20016,7 +12837,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ __pyx_v_base = PyArray_BASE(__pyx_v_arr); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":935 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":935 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -20026,7 +12847,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_base == NULL) != 0); if (__pyx_t_1) { - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":936 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":936 * base = PyArray_BASE(arr) * if base is NULL: * return None # <<<<<<<<<<<<<< @@ -20037,7 +12858,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":935 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":935 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -20046,7 +12867,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ } - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":937 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":937 * if base is NULL: * return None * return base # <<<<<<<<<<<<<< @@ -20058,7 +12879,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = ((PyObject *)__pyx_v_base); goto __pyx_L0; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":933 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":933 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -20073,7 +12894,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py return __pyx_r; } -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":941 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":941 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -20097,7 +12918,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_array", 0); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":942 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":942 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -20113,16 +12934,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":943 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":943 * cdef inline int import_array() except -1: * try: * __pyx_import_array() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy.core.multiarray failed to import") */ - __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(5, 943, __pyx_L3_error) + __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(3, 943, __pyx_L3_error) - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":942 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":942 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -20136,7 +12957,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":944 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":944 * try: * __pyx_import_array() * except Exception: # <<<<<<<<<<<<<< @@ -20146,28 +12967,28 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(5, 944, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(3, 944, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":945 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":945 * __pyx_import_array() * except Exception: * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_umath() except -1: */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 945, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 945, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(5, 945, __pyx_L5_except_error) + __PYX_ERR(3, 945, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":942 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":942 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -20182,7 +13003,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_L8_try_end:; } - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":941 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":941 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -20205,7 +13026,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { return __pyx_r; } -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":947 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":947 * raise ImportError("numpy.core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -20229,7 +13050,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_umath", 0); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":948 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":948 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -20245,16 +13066,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":949 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":949 * cdef inline int import_umath() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy.core.umath failed to import") */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(5, 949, __pyx_L3_error) + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(3, 949, __pyx_L3_error) - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":948 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":948 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -20268,7 +13089,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":950 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":950 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -20278,28 +13099,28 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(5, 950, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(3, 950, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":951 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":951 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_ufunc() except -1: */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 951, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 951, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(5, 951, __pyx_L5_except_error) + __PYX_ERR(3, 951, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":948 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":948 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -20314,7 +13135,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_L8_try_end:; } - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":947 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":947 * raise ImportError("numpy.core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -20337,7 +13158,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { return __pyx_r; } -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":953 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":953 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -20361,7 +13182,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_ufunc", 0); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":954 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":954 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -20377,16 +13198,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":955 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":955 * cdef inline int import_ufunc() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy.core.umath failed to import") */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(5, 955, __pyx_L3_error) + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(3, 955, __pyx_L3_error) - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":954 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":954 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -20400,7 +13221,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":956 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":956 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -20410,28 +13231,28 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(5, 956, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(3, 956, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":957 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":957 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< * * cdef extern from *: */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 957, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 957, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(5, 957, __pyx_L5_except_error) + __PYX_ERR(3, 957, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":954 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":954 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -20446,7 +13267,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_L8_try_end:; } - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":953 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":953 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -20469,7 +13290,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { return __pyx_r; } -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":967 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":967 * * * cdef inline bint is_timedelta64_object(object obj): # <<<<<<<<<<<<<< @@ -20482,7 +13303,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("is_timedelta64_object", 0); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":979 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":979 * bool * """ * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<< @@ -20492,7 +13313,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyTimedeltaArrType_Type)); goto __pyx_L0; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":967 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":967 * * * cdef inline bint is_timedelta64_object(object obj): # <<<<<<<<<<<<<< @@ -20506,7 +13327,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ return __pyx_r; } -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":982 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":982 * * * cdef inline bint is_datetime64_object(object obj): # <<<<<<<<<<<<<< @@ -20519,7 +13340,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("is_datetime64_object", 0); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":994 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":994 * bool * """ * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<< @@ -20529,7 +13350,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyDatetimeArrType_Type)); goto __pyx_L0; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":982 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":982 * * * cdef inline bint is_datetime64_object(object obj): # <<<<<<<<<<<<<< @@ -20543,7 +13364,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o return __pyx_r; } -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":997 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":997 * * * cdef inline npy_datetime get_datetime64_value(object obj) nogil: # <<<<<<<<<<<<<< @@ -20554,7 +13375,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) { npy_datetime __pyx_r; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":1004 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1004 * also needed. That can be found using `get_datetime64_unit`. * """ * return (obj).obval # <<<<<<<<<<<<<< @@ -20564,7 +13385,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * __pyx_r = ((PyDatetimeScalarObject *)__pyx_v_obj)->obval; goto __pyx_L0; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":997 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":997 * * * cdef inline npy_datetime get_datetime64_value(object obj) nogil: # <<<<<<<<<<<<<< @@ -20577,7 +13398,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * return __pyx_r; } -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":1007 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1007 * * * cdef inline npy_timedelta get_timedelta64_value(object obj) nogil: # <<<<<<<<<<<<<< @@ -20588,7 +13409,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) { npy_timedelta __pyx_r; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":1011 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1011 * returns the int64 value underlying scalar numpy timedelta64 object * """ * return (obj).obval # <<<<<<<<<<<<<< @@ -20598,7 +13419,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject __pyx_r = ((PyTimedeltaScalarObject *)__pyx_v_obj)->obval; goto __pyx_L0; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":1007 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1007 * * * cdef inline npy_timedelta get_timedelta64_value(object obj) nogil: # <<<<<<<<<<<<<< @@ -20611,7 +13432,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject return __pyx_r; } -/* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":1014 +/* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1014 * * * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<< @@ -20622,7 +13443,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) { NPY_DATETIMEUNIT __pyx_r; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":1018 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1018 * returns the unit part of the dtype for a numpy datetime64 object. * """ * return (obj).obmeta.base # <<<<<<<<<<<<<< @@ -20630,7 +13451,7 @@ static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObjec __pyx_r = ((NPY_DATETIMEUNIT)((PyDatetimeScalarObject *)__pyx_v_obj)->obmeta.base); goto __pyx_L0; - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":1014 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":1014 * * * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<< @@ -20693,7 +13514,7 @@ static int __pyx_pf_7cpython_5array_5array___getbuffer__(arrayobject *__pyx_v_se * * info.suboffsets = NULL */ - __pyx_t_1 = PyInt_FromSsize_t(Py_SIZE(((PyObject *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 98, __pyx_L1_error) + __pyx_t_1 = PyInt_FromSsize_t(Py_SIZE(((PyObject *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_item_count = __pyx_t_1; __pyx_t_1 = 0; @@ -20752,12 +13573,12 @@ static int __pyx_pf_7cpython_5array_5array___getbuffer__(arrayobject *__pyx_v_se * * info.shape = PyObject_Malloc(sizeof(Py_ssize_t) + 2) */ - __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_info->itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 105, __pyx_L1_error) + __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_info->itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 105, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = PyNumber_Multiply(__pyx_t_1, __pyx_v_item_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 105, __pyx_L1_error) + __pyx_t_4 = PyNumber_Multiply(__pyx_t_1, __pyx_v_item_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 105, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 105, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 105, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_info->len = __pyx_t_5; @@ -20787,7 +13608,7 @@ static int __pyx_pf_7cpython_5array_5array___getbuffer__(arrayobject *__pyx_v_se * info.shape[0] = item_count # constant regardless of resizing * info.strides = &info.itemsize */ - PyErr_NoMemory(); __PYX_ERR(6, 109, __pyx_L1_error) + PyErr_NoMemory(); __PYX_ERR(4, 109, __pyx_L1_error) /* "array.pxd":108 * @@ -20805,7 +13626,7 @@ static int __pyx_pf_7cpython_5array_5array___getbuffer__(arrayobject *__pyx_v_se * info.strides = &info.itemsize * */ - __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_item_count); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(6, 110, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_item_count); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 110, __pyx_L1_error) (__pyx_v_info->shape[0]) = __pyx_t_5; /* "array.pxd":111 @@ -20962,7 +13783,7 @@ static CYTHON_INLINE arrayobject *__pyx_f_7cpython_5array_clone(arrayobject *__p * if zero and op is not None: * memset(op.data.as_chars, 0, length * op.ob_descr.itemsize) */ - __pyx_t_1 = ((PyObject *)newarrayobject(Py_TYPE(((PyObject *)__pyx_v_template)), __pyx_v_length, __pyx_v_template->ob_descr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 134, __pyx_L1_error) + __pyx_t_1 = ((PyObject *)newarrayobject(Py_TYPE(((PyObject *)__pyx_v_template)), __pyx_v_length, __pyx_v_template->ob_descr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 134, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_op = ((arrayobject *)__pyx_t_1); __pyx_t_1 = 0; @@ -21061,7 +13882,7 @@ static CYTHON_INLINE arrayobject *__pyx_f_7cpython_5array_copy(arrayobject *__py * memcpy(op.data.as_chars, self.data.as_chars, Py_SIZE(op) * op.ob_descr.itemsize) * return op */ - __pyx_t_1 = ((PyObject *)newarrayobject(Py_TYPE(((PyObject *)__pyx_v_self)), Py_SIZE(((PyObject *)__pyx_v_self)), __pyx_v_self->ob_descr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 141, __pyx_L1_error) + __pyx_t_1 = ((PyObject *)newarrayobject(Py_TYPE(((PyObject *)__pyx_v_self)), Py_SIZE(((PyObject *)__pyx_v_self)), __pyx_v_self->ob_descr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_op = ((arrayobject *)__pyx_t_1); __pyx_t_1 = 0; @@ -21152,7 +13973,7 @@ static CYTHON_INLINE int __pyx_f_7cpython_5array_extend_buffer(arrayobject *__py * memcpy(self.data.as_chars + origsize * itemsize, stuff, n * itemsize) * return 0 */ - __pyx_t_1 = resize_smart(__pyx_v_self, (__pyx_v_origsize + __pyx_v_n)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 151, __pyx_L1_error) + __pyx_t_1 = resize_smart(__pyx_v_self, (__pyx_v_origsize + __pyx_v_n)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(4, 151, __pyx_L1_error) /* "array.pxd":152 * cdef Py_ssize_t origsize = Py_SIZE(self) @@ -21225,7 +14046,7 @@ static CYTHON_INLINE int __pyx_f_7cpython_5array_extend(arrayobject *__pyx_v_sel * return extend_buffer(self, other.data.as_chars, Py_SIZE(other)) * */ - __pyx_t_2 = PyErr_BadArgument(); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(6, 158, __pyx_L1_error) + __pyx_t_2 = PyErr_BadArgument(); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(4, 158, __pyx_L1_error) /* "array.pxd":157 * cdef inline int extend(array self, array other) except -1: @@ -21243,7 +14064,7 @@ static CYTHON_INLINE int __pyx_f_7cpython_5array_extend(arrayobject *__pyx_v_sel * * cdef inline void zero(array self): */ - __pyx_t_2 = __pyx_f_7cpython_5array_extend_buffer(__pyx_v_self, __pyx_v_other->data.as_chars, Py_SIZE(((PyObject *)__pyx_v_other))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(6, 159, __pyx_L1_error) + __pyx_t_2 = __pyx_f_7cpython_5array_extend_buffer(__pyx_v_self, __pyx_v_other->data.as_chars, Py_SIZE(((PyObject *)__pyx_v_other))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(4, 159, __pyx_L1_error) __pyx_r = __pyx_t_2; goto __pyx_L0; @@ -21297,13 +14118,13 @@ static CYTHON_INLINE void __pyx_f_7cpython_5array_zero(arrayobject *__pyx_v_self /* "carray.to_py":112 * - * @cname("__Pyx_carray_to_py___pyx_t_7_squish_FLOAT_T") - * cdef inline list __Pyx_carray_to_py___pyx_t_7_squish_FLOAT_T(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< + * @cname("__Pyx_carray_to_py___pyx_t_6squish_4core_FLOAT_T") + * cdef inline list __Pyx_carray_to_py___pyx_t_6squish_4core_FLOAT_T(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< * cdef size_t i * cdef object value */ -static CYTHON_INLINE PyObject *__Pyx_carray_to_py___pyx_t_7_squish_FLOAT_T(__pyx_t_7_squish_FLOAT_T *__pyx_v_v, Py_ssize_t __pyx_v_length) { +static CYTHON_INLINE PyObject *__Pyx_carray_to_py___pyx_t_6squish_4core_FLOAT_T(__pyx_t_6squish_4core_FLOAT_T *__pyx_v_v, Py_ssize_t __pyx_v_length) { size_t __pyx_v_i; PyObject *__pyx_v_value = 0; PyObject *__pyx_v_l = NULL; @@ -21316,7 +14137,7 @@ static CYTHON_INLINE PyObject *__Pyx_carray_to_py___pyx_t_7_squish_FLOAT_T(__pyx int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__Pyx_carray_to_py___pyx_t_7_squish_FLOAT_T", 0); + __Pyx_RefNannySetupContext("__Pyx_carray_to_py___pyx_t_6squish_4core_FLOAT_T", 0); /* "carray.to_py":115 * cdef size_t i @@ -21325,7 +14146,7 @@ static CYTHON_INLINE PyObject *__Pyx_carray_to_py___pyx_t_7_squish_FLOAT_T(__pyx * for i in range(length): * value = v[i] */ - __pyx_t_1 = PyList_New(__pyx_v_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 115, __pyx_L1_error) + __pyx_t_1 = PyList_New(__pyx_v_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_l = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; @@ -21349,7 +14170,7 @@ static CYTHON_INLINE PyObject *__Pyx_carray_to_py___pyx_t_7_squish_FLOAT_T(__pyx * Py_INCREF(value) * PyList_SET_ITEM(l, i, value) */ - __pyx_t_1 = PyFloat_FromDouble((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 117, __pyx_L1_error) + __pyx_t_1 = PyFloat_FromDouble((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 117, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1); __pyx_t_1 = 0; @@ -21387,8 +14208,8 @@ static CYTHON_INLINE PyObject *__Pyx_carray_to_py___pyx_t_7_squish_FLOAT_T(__pyx /* "carray.to_py":112 * - * @cname("__Pyx_carray_to_py___pyx_t_7_squish_FLOAT_T") - * cdef inline list __Pyx_carray_to_py___pyx_t_7_squish_FLOAT_T(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< + * @cname("__Pyx_carray_to_py___pyx_t_6squish_4core_FLOAT_T") + * cdef inline list __Pyx_carray_to_py___pyx_t_6squish_4core_FLOAT_T(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< * cdef size_t i * cdef object value */ @@ -21396,7 +14217,7 @@ static CYTHON_INLINE PyObject *__Pyx_carray_to_py___pyx_t_7_squish_FLOAT_T(__pyx /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("carray.to_py.__Pyx_carray_to_py___pyx_t_7_squish_FLOAT_T", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("carray.to_py.__Pyx_carray_to_py___pyx_t_6squish_4core_FLOAT_T", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_value); @@ -21408,13 +14229,13 @@ static CYTHON_INLINE PyObject *__Pyx_carray_to_py___pyx_t_7_squish_FLOAT_T(__pyx /* "carray.to_py":124 * - * @cname("__Pyx_carray_to_tuple___pyx_t_7_squish_FLOAT_T") - * cdef inline tuple __Pyx_carray_to_tuple___pyx_t_7_squish_FLOAT_T(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< + * @cname("__Pyx_carray_to_tuple___pyx_t_6squish_4core_FLOAT_T") + * cdef inline tuple __Pyx_carray_to_tuple___pyx_t_6squish_4core_FLOAT_T(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< * cdef size_t i * cdef object value */ -static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple___pyx_t_7_squish_FLOAT_T(__pyx_t_7_squish_FLOAT_T *__pyx_v_v, Py_ssize_t __pyx_v_length) { +static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple___pyx_t_6squish_4core_FLOAT_T(__pyx_t_6squish_4core_FLOAT_T *__pyx_v_v, Py_ssize_t __pyx_v_length) { size_t __pyx_v_i; PyObject *__pyx_v_value = 0; PyObject *__pyx_v_t = NULL; @@ -21427,7 +14248,7 @@ static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple___pyx_t_7_squish_FLOAT_T(__ int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__Pyx_carray_to_tuple___pyx_t_7_squish_FLOAT_T", 0); + __Pyx_RefNannySetupContext("__Pyx_carray_to_tuple___pyx_t_6squish_4core_FLOAT_T", 0); /* "carray.to_py":127 * cdef size_t i @@ -21436,7 +14257,7 @@ static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple___pyx_t_7_squish_FLOAT_T(__ * for i in range(length): * value = v[i] */ - __pyx_t_1 = PyTuple_New(__pyx_v_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 127, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(__pyx_v_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 127, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_t = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; @@ -21460,7 +14281,7 @@ static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple___pyx_t_7_squish_FLOAT_T(__ * Py_INCREF(value) * PyTuple_SET_ITEM(t, i, value) */ - __pyx_t_1 = PyFloat_FromDouble((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 129, __pyx_L1_error) + __pyx_t_1 = PyFloat_FromDouble((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 129, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1); __pyx_t_1 = 0; @@ -21495,8 +14316,8 @@ static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple___pyx_t_7_squish_FLOAT_T(__ /* "carray.to_py":124 * - * @cname("__Pyx_carray_to_tuple___pyx_t_7_squish_FLOAT_T") - * cdef inline tuple __Pyx_carray_to_tuple___pyx_t_7_squish_FLOAT_T(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< + * @cname("__Pyx_carray_to_tuple___pyx_t_6squish_4core_FLOAT_T") + * cdef inline tuple __Pyx_carray_to_tuple___pyx_t_6squish_4core_FLOAT_T(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< * cdef size_t i * cdef object value */ @@ -21504,7 +14325,7 @@ static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple___pyx_t_7_squish_FLOAT_T(__ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("carray.to_py.__Pyx_carray_to_tuple___pyx_t_7_squish_FLOAT_T", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("carray.to_py.__Pyx_carray_to_tuple___pyx_t_6squish_4core_FLOAT_T", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_value); @@ -21566,13 +14387,13 @@ static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, P case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_itemsize)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 1); __PYX_ERR(2, 122, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 1); __PYX_ERR(1, 122, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_format)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 2); __PYX_ERR(2, 122, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 2); __PYX_ERR(1, 122, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: @@ -21588,7 +14409,7 @@ static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, P } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(2, 122, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(1, 122, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -21604,11 +14425,11 @@ static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, P } } __pyx_v_shape = ((PyObject*)values[0]); - __pyx_v_itemsize = __Pyx_PyIndex_AsSsize_t(values[1]); if (unlikely((__pyx_v_itemsize == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 122, __pyx_L3_error) + __pyx_v_itemsize = __Pyx_PyIndex_AsSsize_t(values[1]); if (unlikely((__pyx_v_itemsize == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 122, __pyx_L3_error) __pyx_v_format = values[2]; __pyx_v_mode = values[3]; if (values[4]) { - __pyx_v_allocate_buffer = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_allocate_buffer == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 123, __pyx_L3_error) + __pyx_v_allocate_buffer = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_allocate_buffer == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 123, __pyx_L3_error) } else { /* "View.MemoryView":123 @@ -21623,15 +14444,15 @@ static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, P } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 122, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 122, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_shape), (&PyTuple_Type), 1, "shape", 1))) __PYX_ERR(2, 122, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_shape), (&PyTuple_Type), 1, "shape", 1))) __PYX_ERR(1, 122, __pyx_L1_error) if (unlikely(((PyObject *)__pyx_v_format) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "format"); __PYX_ERR(2, 122, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "format"); __PYX_ERR(1, 122, __pyx_L1_error) } __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(((struct __pyx_array_obj *)__pyx_v_self), __pyx_v_shape, __pyx_v_itemsize, __pyx_v_format, __pyx_v_mode, __pyx_v_allocate_buffer); @@ -21686,9 +14507,9 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ */ if (unlikely(__pyx_v_shape == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(2, 129, __pyx_L1_error) + __PYX_ERR(1, 129, __pyx_L1_error) } - __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_shape); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(2, 129, __pyx_L1_error) + __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_shape); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(1, 129, __pyx_L1_error) __pyx_v_self->ndim = ((int)__pyx_t_1); /* "View.MemoryView":130 @@ -21717,11 +14538,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ * * if itemsize <= 0: */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 133, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 133, __pyx_L1_error) + __PYX_ERR(1, 133, __pyx_L1_error) /* "View.MemoryView":132 * self.itemsize = itemsize @@ -21749,11 +14570,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ * * if not isinstance(format, bytes): */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 136, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 136, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 136, __pyx_L1_error) + __PYX_ERR(1, 136, __pyx_L1_error) /* "View.MemoryView":135 * raise ValueError("Empty shape tuple for cython.array") @@ -21782,7 +14603,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ * self._format = format # keep a reference to the byte string * self.format = self._format */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 139, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { @@ -21796,7 +14617,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ } __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_n_s_ASCII) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_s_ASCII); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 139, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_3); @@ -21818,7 +14639,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ * self.format = self._format * */ - if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) __PYX_ERR(2, 140, __pyx_L1_error) + if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) __PYX_ERR(1, 140, __pyx_L1_error) __pyx_t_3 = __pyx_v_format; __Pyx_INCREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); @@ -21836,9 +14657,9 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ */ if (unlikely(__pyx_v_self->_format == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(2, 141, __pyx_L1_error) + __PYX_ERR(1, 141, __pyx_L1_error) } - __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(2, 141, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(1, 141, __pyx_L1_error) __pyx_v_self->format = __pyx_t_7; /* "View.MemoryView":144 @@ -21876,11 +14697,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ * * */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 148, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 148, __pyx_L1_error) + __PYX_ERR(1, 148, __pyx_L1_error) /* "View.MemoryView":147 * self._strides = self._shape + self.ndim @@ -21903,12 +14724,12 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ for (;;) { if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(2, 151, __pyx_L1_error) + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 151, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 151, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif - __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 151, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 151, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_dim = __pyx_t_9; __pyx_v_idx = __pyx_t_8; @@ -21931,11 +14752,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ * self._shape[idx] = dim * */ - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 153, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 153, __pyx_L1_error) + __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 153, __pyx_L1_error) + __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5); @@ -21943,15 +14764,15 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6); __pyx_t_5 = 0; __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 153, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 153, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_Raise(__pyx_t_10, 0, 0, 0); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __PYX_ERR(2, 153, __pyx_L1_error) + __PYX_ERR(1, 153, __pyx_L1_error) /* "View.MemoryView":152 * @@ -21988,7 +14809,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ * order = b'F' * self.mode = u'fortran' */ - __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_fortran, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 157, __pyx_L1_error) + __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_fortran, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 157, __pyx_L1_error) if (__pyx_t_4) { /* "View.MemoryView":158 @@ -22030,7 +14851,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ * order = b'C' * self.mode = u'c' */ - __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_c, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(2, 160, __pyx_L1_error) + __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_c, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 160, __pyx_L1_error) if (likely(__pyx_t_4)) { /* "View.MemoryView":161 @@ -22073,14 +14894,14 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ * self.len = fill_contig_strides_array(self._shape, self._strides, */ /*else*/ { - __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 164, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 164, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_10, 0, 0, 0); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __PYX_ERR(2, 164, __pyx_L1_error) + __PYX_ERR(1, 164, __pyx_L1_error) } __pyx_L10:; @@ -22109,8 +14930,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ * if allocate_buffer: * */ - __pyx_t_10 = PyObject_RichCompare(__pyx_v_format, __pyx_n_b_O, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 170, __pyx_L1_error) - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 170, __pyx_L1_error) + __pyx_t_10 = PyObject_RichCompare(__pyx_v_format, __pyx_n_b_O, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 170, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 170, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_v_self->dtype_is_object = __pyx_t_4; @@ -22150,11 +14971,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ * * if self.dtype_is_object: */ - __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 176, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_Raise(__pyx_t_10, 0, 0, 0); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __PYX_ERR(2, 176, __pyx_L1_error) + __PYX_ERR(1, 176, __pyx_L1_error) /* "View.MemoryView":175 * @@ -22193,11 +15014,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ */ if (unlikely(__pyx_v_itemsize == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); - __PYX_ERR(2, 180, __pyx_L1_error) + __PYX_ERR(1, 180, __pyx_L1_error) } else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_v_itemsize == (Py_ssize_t)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_self->len))) { PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); - __PYX_ERR(2, 180, __pyx_L1_error) + __PYX_ERR(1, 180, __pyx_L1_error) } __pyx_t_1 = (__pyx_v_self->len / __pyx_v_itemsize); __pyx_t_9 = __pyx_t_1; @@ -22324,7 +15145,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * elif self.mode == u"fortran": */ - __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_c, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 187, __pyx_L1_error) + __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_c, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 187, __pyx_L1_error) __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { @@ -22354,7 +15175,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS * if not (flags & bufmode): */ - __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_fortran, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 189, __pyx_L1_error) + __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_fortran, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 189, __pyx_L1_error) __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { @@ -22394,11 +15215,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru * info.buf = self.data * info.len = self.len */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 192, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 192, __pyx_L1_error) + __PYX_ERR(1, 192, __pyx_L1_error) /* "View.MemoryView":191 * elif self.mode == u"fortran": @@ -22741,7 +15562,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_5array_7memview___get__(struct _ * @cname('get_memview') */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((struct __pyx_vtabstruct_array *)__pyx_v_self->__pyx_vtab)->get_memview(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 223, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_array *)__pyx_v_self->__pyx_vtab)->get_memview(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 223, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -22803,11 +15624,11 @@ static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self) { * def __len__(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 228, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 228, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 228, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); @@ -22818,7 +15639,7 @@ static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self) { PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 228, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_2; @@ -22935,9 +15756,9 @@ static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__( * def __getitem__(self, item): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 234, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_GetAttr(__pyx_t_1, __pyx_v_attr); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 234, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetAttr(__pyx_t_1, __pyx_v_attr); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; @@ -23003,9 +15824,9 @@ static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__ * def __setitem__(self, item, value): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 237, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_item); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 237, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_item); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; @@ -23069,9 +15890,9 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(struc * * */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 240, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_item, __pyx_v_value) < 0)) __PYX_ERR(2, 240, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_item, __pyx_v_value) < 0)) __PYX_ERR(1, 240, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "View.MemoryView":239 @@ -23128,11 +15949,11 @@ static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __p * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(2, 2, __pyx_L1_error) + __PYX_ERR(1, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< @@ -23184,11 +16005,11 @@ static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(2, 4, __pyx_L1_error) + __PYX_ERR(1, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): @@ -23246,13 +16067,13 @@ static struct __pyx_array_obj *__pyx_array_new(PyObject *__pyx_v_shape, Py_ssize * else: * result = array(shape, itemsize, format, mode.decode('ASCII'), */ - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 249, __pyx_L1_error) + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 249, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_decode_c_string(__pyx_v_mode, 0, strlen(__pyx_v_mode), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 249, __pyx_L1_error) + __pyx_t_4 = __Pyx_decode_c_string(__pyx_v_mode, 0, strlen(__pyx_v_mode), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 249, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_shape); __Pyx_GIVEREF(__pyx_v_shape); @@ -23266,7 +16087,7 @@ static struct __pyx_array_obj *__pyx_array_new(PyObject *__pyx_v_shape, Py_ssize __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_array_type), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 249, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_array_type), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_result = ((struct __pyx_array_obj *)__pyx_t_4); @@ -23290,13 +16111,13 @@ static struct __pyx_array_obj *__pyx_array_new(PyObject *__pyx_v_shape, Py_ssize * result.data = buf */ /*else*/ { - __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 251, __pyx_L1_error) + __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 251, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_mode, 0, strlen(__pyx_v_mode), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 251, __pyx_L1_error) + __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_mode, 0, strlen(__pyx_v_mode), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 251, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_shape); __Pyx_GIVEREF(__pyx_v_shape); @@ -23318,9 +16139,9 @@ static struct __pyx_array_obj *__pyx_array_new(PyObject *__pyx_v_shape, Py_ssize * result.data = buf * */ - __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 252, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 252, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_allocate_buffer, Py_False) < 0) __PYX_ERR(2, 252, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_allocate_buffer, Py_False) < 0) __PYX_ERR(1, 252, __pyx_L1_error) /* "View.MemoryView":251 * result = array(shape, itemsize, format, mode.decode('ASCII')) @@ -23329,7 +16150,7 @@ static struct __pyx_array_obj *__pyx_array_new(PyObject *__pyx_v_shape, Py_ssize * allocate_buffer=False) * result.data = buf */ - __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_array_type), __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 251, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_array_type), __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -23419,7 +16240,7 @@ static int __pyx_MemviewEnum___init__(PyObject *__pyx_v_self, PyObject *__pyx_ar else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(2, 281, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 281, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { goto __pyx_L5_argtuple_error; @@ -23430,7 +16251,7 @@ static int __pyx_MemviewEnum___init__(PyObject *__pyx_v_self, PyObject *__pyx_ar } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 281, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 281, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("View.MemoryView.Enum.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -23570,7 +16391,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi * _dict = getattr(self, '__dict__', None) * if _dict is not None: */ - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_self->name); __Pyx_GIVEREF(__pyx_v_self->name); @@ -23585,7 +16406,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi * if _dict is not None: * state += (_dict,) */ - __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v__dict = __pyx_t_1; __pyx_t_1 = 0; @@ -23608,12 +16429,12 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi * use_setstate = True * else: */ - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 8, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v__dict); __Pyx_GIVEREF(__pyx_v__dict); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict); - __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 8, __pyx_L1_error) + __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4)); @@ -23669,9 +16490,9 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi * return __pyx_unpickle_Enum, (type(self), 0xb068931, state) */ __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 13, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); @@ -23682,7 +16503,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None); - __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); @@ -23715,9 +16536,9 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi */ /*else*/ { __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 15, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 15, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); @@ -23728,7 +16549,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi __Pyx_INCREF(__pyx_v_state); __Pyx_GIVEREF(__pyx_v_state); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 15, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); @@ -23796,8 +16617,8 @@ static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_Me * def __setstate_cython__(self, __pyx_state): * __pyx_unpickle_Enum__set_state(self, __pyx_state) # <<<<<<<<<<<<<< */ - if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(2, 17, __pyx_L1_error) - __pyx_t_1 = __pyx_unpickle_Enum__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 17, __pyx_L1_error) + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error) + __pyx_t_1 = __pyx_unpickle_Enum__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -23949,7 +16770,7 @@ static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_ar case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, 1); __PYX_ERR(2, 345, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, 1); __PYX_ERR(1, 345, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: @@ -23959,7 +16780,7 @@ static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_ar } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(2, 345, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(1, 345, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -23972,16 +16793,16 @@ static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_ar } } __pyx_v_obj = values[0]; - __pyx_v_flags = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 345, __pyx_L3_error) + __pyx_v_flags = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 345, __pyx_L3_error) if (values[2]) { - __pyx_v_dtype_is_object = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_dtype_is_object == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 345, __pyx_L3_error) + __pyx_v_dtype_is_object = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_dtype_is_object == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 345, __pyx_L3_error) } else { __pyx_v_dtype_is_object = ((int)0); } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 345, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 345, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("View.MemoryView.memoryview.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -24055,7 +16876,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ * if self.view.obj == NULL: * (<__pyx_buffer *> &self.view).obj = Py_None */ - __pyx_t_4 = __Pyx_GetBuffer(__pyx_v_obj, (&__pyx_v_self->view), __pyx_v_flags); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 349, __pyx_L1_error) + __pyx_t_4 = __Pyx_GetBuffer(__pyx_v_obj, (&__pyx_v_self->view), __pyx_v_flags); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 349, __pyx_L1_error) /* "View.MemoryView":350 * if type(self) is memoryview or obj is not None: @@ -24176,7 +16997,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ * * if flags & PyBUF_FORMAT: */ - PyErr_NoMemory(); __PYX_ERR(2, 361, __pyx_L1_error) + PyErr_NoMemory(); __PYX_ERR(1, 361, __pyx_L1_error) /* "View.MemoryView":360 * if self.lock is NULL: @@ -24561,26 +17382,26 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py __pyx_t_2 = __pyx_v_index; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 397, __pyx_L1_error) + __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 397, __pyx_L1_error) + __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 397, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(2, 397, __pyx_L1_error) + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 397, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 397, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(2, 397, __pyx_L1_error) + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 397, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 397, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } @@ -24590,7 +17411,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(2, 397, __pyx_L1_error) + else __PYX_ERR(1, 397, __pyx_L1_error) } break; } @@ -24608,8 +17429,8 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py * * return itemp */ - __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 398, __pyx_L1_error) - __pyx_t_7 = __pyx_pybuffer_index((&__pyx_v_self->view), __pyx_v_itemp, __pyx_t_6, __pyx_v_dim); if (unlikely(__pyx_t_7 == ((char *)NULL))) __PYX_ERR(2, 398, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 398, __pyx_L1_error) + __pyx_t_7 = __pyx_pybuffer_index((&__pyx_v_self->view), __pyx_v_itemp, __pyx_t_6, __pyx_v_dim); if (unlikely(__pyx_t_7 == ((char *)NULL))) __PYX_ERR(1, 398, __pyx_L1_error) __pyx_v_itemp = __pyx_t_7; /* "View.MemoryView":397 @@ -24729,7 +17550,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ * * cdef char *itemp */ - __pyx_t_3 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 407, __pyx_L1_error) + __pyx_t_3 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 407, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (likely(__pyx_t_3 != Py_None)) { PyObject* sequence = __pyx_t_3; @@ -24737,7 +17558,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(2, 407, __pyx_L1_error) + __PYX_ERR(1, 407, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); @@ -24745,14 +17566,14 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); #else - __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 407, __pyx_L1_error) + __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 407, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 407, __pyx_L1_error) + __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 407, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(2, 407, __pyx_L1_error) + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 407, __pyx_L1_error) } __pyx_v_have_slices = __pyx_t_4; __pyx_t_4 = 0; @@ -24766,7 +17587,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ * return memview_slice(self, indices) * else: */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(2, 410, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 410, __pyx_L1_error) if (__pyx_t_2) { /* "View.MemoryView":411 @@ -24777,7 +17598,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ * itemp = self.get_item_pointer(indices) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = ((PyObject *)__pyx_memview_slice(__pyx_v_self, __pyx_v_indices)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 411, __pyx_L1_error) + __pyx_t_3 = ((PyObject *)__pyx_memview_slice(__pyx_v_self, __pyx_v_indices)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; @@ -24800,7 +17621,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ * */ /*else*/ { - __pyx_t_6 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_indices); if (unlikely(__pyx_t_6 == ((char *)NULL))) __PYX_ERR(2, 413, __pyx_L1_error) + __pyx_t_6 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_indices); if (unlikely(__pyx_t_6 == ((char *)NULL))) __PYX_ERR(1, 413, __pyx_L1_error) __pyx_v_itemp = __pyx_t_6; /* "View.MemoryView":414 @@ -24811,7 +17632,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ * def __setitem__(memoryview self, object index, object value): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->convert_item_to_object(__pyx_v_self, __pyx_v_itemp); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 414, __pyx_L1_error) + __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->convert_item_to_object(__pyx_v_self, __pyx_v_itemp); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; @@ -24894,11 +17715,11 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit * * have_slices, index = _unellipsify(index, self.view.ndim) */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 418, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(2, 418, __pyx_L1_error) + __PYX_ERR(1, 418, __pyx_L1_error) /* "View.MemoryView":417 * @@ -24916,7 +17737,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit * * if have_slices: */ - __pyx_t_2 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 420, __pyx_L1_error) + __pyx_t_2 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (likely(__pyx_t_2 != Py_None)) { PyObject* sequence = __pyx_t_2; @@ -24924,7 +17745,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(2, 420, __pyx_L1_error) + __PYX_ERR(1, 420, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); @@ -24932,14 +17753,14 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); #else - __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 420, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 420, __pyx_L1_error) + __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(2, 420, __pyx_L1_error) + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 420, __pyx_L1_error) } __pyx_v_have_slices = __pyx_t_3; __pyx_t_3 = 0; @@ -24953,7 +17774,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit * obj = self.is_slice(value) * if obj: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 422, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 422, __pyx_L1_error) if (__pyx_t_1) { /* "View.MemoryView":423 @@ -24963,7 +17784,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit * if obj: * self.setitem_slice_assignment(self[index], obj) */ - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->is_slice(__pyx_v_self, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 423, __pyx_L1_error) + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->is_slice(__pyx_v_self, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 423, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_obj = __pyx_t_2; __pyx_t_2 = 0; @@ -24975,7 +17796,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit * self.setitem_slice_assignment(self[index], obj) * else: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 424, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 424, __pyx_L1_error) if (__pyx_t_1) { /* "View.MemoryView":425 @@ -24985,9 +17806,9 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit * else: * self.setitem_slice_assign_scalar(self[index], value) */ - __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 425, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assignment(__pyx_v_self, __pyx_t_2, __pyx_v_obj); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 425, __pyx_L1_error) + __pyx_t_4 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assignment(__pyx_v_self, __pyx_t_2, __pyx_v_obj); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; @@ -25010,10 +17831,10 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit * self.setitem_indexed(index, value) */ /*else*/ { - __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 427, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 427, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_memoryview_type))))) __PYX_ERR(2, 427, __pyx_L1_error) - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assign_scalar(__pyx_v_self, ((struct __pyx_memoryview_obj *)__pyx_t_4), __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 427, __pyx_L1_error) + if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_memoryview_type))))) __PYX_ERR(1, 427, __pyx_L1_error) + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assign_scalar(__pyx_v_self, ((struct __pyx_memoryview_obj *)__pyx_t_4), __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 427, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -25038,7 +17859,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit * cdef is_slice(self, obj): */ /*else*/ { - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_indexed(__pyx_v_self, __pyx_v_index, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 429, __pyx_L1_error) + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_indexed(__pyx_v_self, __pyx_v_index, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } @@ -25129,7 +17950,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ * self.dtype_is_object) * except TypeError: */ - __pyx_t_6 = __Pyx_PyInt_From_int(((__pyx_v_self->flags & (~PyBUF_WRITABLE)) | PyBUF_ANY_CONTIGUOUS)); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 434, __pyx_L4_error) + __pyx_t_6 = __Pyx_PyInt_From_int(((__pyx_v_self->flags & (~PyBUF_WRITABLE)) | PyBUF_ANY_CONTIGUOUS)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 434, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); /* "View.MemoryView":435 @@ -25139,7 +17960,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ * except TypeError: * return None */ - __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 435, __pyx_L4_error) + __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 435, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); /* "View.MemoryView":434 @@ -25149,7 +17970,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ * self.dtype_is_object) * except TypeError: */ - __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 434, __pyx_L4_error) + __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 434, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_obj); __Pyx_GIVEREF(__pyx_v_obj); @@ -25160,7 +17981,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_7); __pyx_t_6 = 0; __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 434, __pyx_L4_error) + __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 434, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_7); @@ -25193,7 +18014,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError); if (__pyx_t_9) { __Pyx_AddTraceback("View.MemoryView.memoryview.is_slice", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_6) < 0) __PYX_ERR(2, 436, __pyx_L6_except_error) + if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_6) < 0) __PYX_ERR(1, 436, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_8); __Pyx_GOTREF(__pyx_t_6); @@ -25310,8 +18131,8 @@ static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryvi * get_slice_from_memview(dst, &dst_slice)[0], * src.ndim, dst.ndim, self.dtype_is_object) */ - if (!(likely(((__pyx_v_src) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_src, __pyx_memoryview_type))))) __PYX_ERR(2, 445, __pyx_L1_error) - __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_src), (&__pyx_v_src_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(2, 445, __pyx_L1_error) + if (!(likely(((__pyx_v_src) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_src, __pyx_memoryview_type))))) __PYX_ERR(1, 445, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_src), (&__pyx_v_src_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 445, __pyx_L1_error) /* "View.MemoryView":446 * @@ -25320,8 +18141,8 @@ static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryvi * src.ndim, dst.ndim, self.dtype_is_object) * */ - if (!(likely(((__pyx_v_dst) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dst, __pyx_memoryview_type))))) __PYX_ERR(2, 446, __pyx_L1_error) - __pyx_t_2 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_dst), (&__pyx_v_dst_slice)); if (unlikely(__pyx_t_2 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(2, 446, __pyx_L1_error) + if (!(likely(((__pyx_v_dst) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dst, __pyx_memoryview_type))))) __PYX_ERR(1, 446, __pyx_L1_error) + __pyx_t_2 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_dst), (&__pyx_v_dst_slice)); if (unlikely(__pyx_t_2 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 446, __pyx_L1_error) /* "View.MemoryView":447 * memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0], @@ -25330,13 +18151,13 @@ static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryvi * * cdef setitem_slice_assign_scalar(self, memoryview dst, value): */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_src, __pyx_n_s_ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 447, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_src, __pyx_n_s_ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 447, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 447, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_dst, __pyx_n_s_ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 447, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_dst, __pyx_n_s_ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 447, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 447, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "View.MemoryView":445 @@ -25346,7 +18167,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryvi * get_slice_from_memview(dst, &dst_slice)[0], * src.ndim, dst.ndim, self.dtype_is_object) */ - __pyx_t_6 = __pyx_memoryview_copy_contents((__pyx_t_1[0]), (__pyx_t_2[0]), __pyx_t_4, __pyx_t_5, __pyx_v_self->dtype_is_object); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 445, __pyx_L1_error) + __pyx_t_6 = __pyx_memoryview_copy_contents((__pyx_t_1[0]), (__pyx_t_2[0]), __pyx_t_4, __pyx_t_5, __pyx_v_self->dtype_is_object); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 445, __pyx_L1_error) /* "View.MemoryView":441 * return obj @@ -25418,7 +18239,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor * * if self.view.itemsize > sizeof(array): */ - __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_dst, (&__pyx_v_tmp_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(2, 456, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_dst, (&__pyx_v_tmp_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 456, __pyx_L1_error) __pyx_v_dst_slice = __pyx_t_1; /* "View.MemoryView":458 @@ -25457,7 +18278,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor * item = tmp * else: */ - PyErr_NoMemory(); __PYX_ERR(2, 461, __pyx_L1_error) + PyErr_NoMemory(); __PYX_ERR(1, 461, __pyx_L1_error) /* "View.MemoryView":460 * if self.view.itemsize > sizeof(array): @@ -25545,7 +18366,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor * */ /*else*/ { - __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, ((char *)__pyx_v_item), __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 470, __pyx_L6_error) + __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, ((char *)__pyx_v_item), __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 470, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } @@ -25568,7 +18389,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, * item, self.dtype_is_object) */ - __pyx_t_3 = assert_direct_dimensions(__pyx_v_self->view.suboffsets, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 475, __pyx_L6_error) + __pyx_t_3 = assert_direct_dimensions(__pyx_v_self->view.suboffsets, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 475, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -25685,7 +18506,7 @@ static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *_ * self.assign_item_from_object(itemp, value) * */ - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_index); if (unlikely(__pyx_t_1 == ((char *)NULL))) __PYX_ERR(2, 482, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_index); if (unlikely(__pyx_t_1 == ((char *)NULL))) __PYX_ERR(1, 482, __pyx_L1_error) __pyx_v_itemp = __pyx_t_1; /* "View.MemoryView":483 @@ -25695,7 +18516,7 @@ static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *_ * * cdef convert_item_to_object(self, char *itemp): */ - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 483, __pyx_L1_error) + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 483, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -25757,7 +18578,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview * cdef bytes bytesitem * */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 488, __pyx_L1_error) + __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_struct = __pyx_t_1; __pyx_t_1 = 0; @@ -25769,7 +18590,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview * try: * result = struct.unpack(self.view.format, bytesitem) */ - __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_itemp + 0, __pyx_v_self->view.itemsize - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 491, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_itemp + 0, __pyx_v_self->view.itemsize - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_bytesitem = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; @@ -25797,9 +18618,9 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview * except struct.error: * raise ValueError("Unable to convert item to object") */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_unpack); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 493, __pyx_L3_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_unpack); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 493, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 493, __pyx_L3_error) + __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 493, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; @@ -25816,7 +18637,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_6, __pyx_v_bytesitem}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 493, __pyx_L3_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 493, __pyx_L3_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; @@ -25825,14 +18646,14 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_6, __pyx_v_bytesitem}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 493, __pyx_L3_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 493, __pyx_L3_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { - __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 493, __pyx_L3_error) + __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 493, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; @@ -25843,7 +18664,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview __Pyx_GIVEREF(__pyx_v_bytesitem); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_v_bytesitem); __pyx_t_6 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 493, __pyx_L3_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 493, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } @@ -25880,7 +18701,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 498, __pyx_L5_except_error) + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 498, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -25922,7 +18743,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview * else: */ __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_5, &__pyx_t_9); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_error); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 494, __pyx_L5_except_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_error); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 494, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; @@ -25930,7 +18751,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_9 = 0; if (__pyx_t_8) { __Pyx_AddTraceback("View.MemoryView.memoryview.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_5, &__pyx_t_1) < 0) __PYX_ERR(2, 494, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_5, &__pyx_t_1) < 0) __PYX_ERR(1, 494, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_1); @@ -25942,11 +18763,11 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview * else: * if len(self.view.format) == 1: */ - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 495, __pyx_L5_except_error) + __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 495, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __PYX_ERR(2, 495, __pyx_L5_except_error) + __PYX_ERR(1, 495, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:; @@ -26038,7 +18859,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie * cdef char c * cdef bytes bytesvalue */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 504, __pyx_L1_error) + __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_struct = __pyx_t_1; __pyx_t_1 = 0; @@ -26061,26 +18882,26 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie * else: * bytesvalue = struct.pack(self.view.format, value) */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 510, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 510, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 510, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 510, __pyx_L1_error) + __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 510, __pyx_L1_error) + __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 510, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(2, 510, __pyx_L1_error) + if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(1, 510, __pyx_L1_error) __pyx_v_bytesvalue = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; @@ -26102,9 +18923,9 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie * for i, c in enumerate(bytesvalue): */ /*else*/ { - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 512, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 512, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 512, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 512, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = NULL; __pyx_t_7 = 0; @@ -26121,7 +18942,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_1, __pyx_v_value}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 512, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 512, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -26130,14 +18951,14 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_1, __pyx_v_value}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 512, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 512, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { - __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 512, __pyx_L1_error) + __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 512, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL; @@ -26148,12 +18969,12 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie __Pyx_GIVEREF(__pyx_v_value); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_value); __pyx_t_1 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 512, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 512, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(2, 512, __pyx_L1_error) + if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(1, 512, __pyx_L1_error) __pyx_v_bytesvalue = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; } @@ -26169,7 +18990,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie __pyx_t_9 = 0; if (unlikely(__pyx_v_bytesvalue == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' is not iterable"); - __PYX_ERR(2, 514, __pyx_L1_error) + __PYX_ERR(1, 514, __pyx_L1_error) } __Pyx_INCREF(__pyx_v_bytesvalue); __pyx_t_10 = __pyx_v_bytesvalue; @@ -26304,11 +19125,11 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu * * if flags & PyBUF_ND: */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 520, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 520, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 520, __pyx_L1_error) + __PYX_ERR(1, 520, __pyx_L1_error) /* "View.MemoryView":519 * @cname('getbuffer') @@ -26619,9 +19440,9 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct _ * transpose_memslice(&result.from_slice) * return result */ - __pyx_t_1 = __pyx_memoryview_copy_object(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 554, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_copy_object(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 554, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_memoryviewslice_type))))) __PYX_ERR(2, 554, __pyx_L1_error) + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_memoryviewslice_type))))) __PYX_ERR(1, 554, __pyx_L1_error) __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_1); __pyx_t_1 = 0; @@ -26632,7 +19453,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct _ * return result * */ - __pyx_t_2 = __pyx_memslice_transpose((&__pyx_v_result->from_slice)); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(2, 555, __pyx_L1_error) + __pyx_t_2 = __pyx_memslice_transpose((&__pyx_v_result->from_slice)); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(1, 555, __pyx_L1_error) /* "View.MemoryView":556 * cdef _memoryviewslice result = memoryview_copy(self) @@ -26762,18 +19583,18 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(stru * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 564, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim); for (__pyx_t_4 = __pyx_v_self->view.shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) { __pyx_t_2 = __pyx_t_4; __pyx_v_length = (__pyx_t_2[0]); - __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 564, __pyx_L1_error) + __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(2, 564, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 564, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } - __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 564, __pyx_L1_error) + __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_5; @@ -26853,11 +19674,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st * * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 570, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(2, 570, __pyx_L1_error) + __PYX_ERR(1, 570, __pyx_L1_error) /* "View.MemoryView":568 * @property @@ -26876,18 +19697,18 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 572, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = (__pyx_v_self->view.strides + __pyx_v_self->view.ndim); for (__pyx_t_5 = __pyx_v_self->view.strides; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) { __pyx_t_3 = __pyx_t_5; __pyx_v_stride = (__pyx_t_3[0]); - __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_stride); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 572, __pyx_L1_error) + __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_stride); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(2, 572, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(1, 572, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } - __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 572, __pyx_L1_error) + __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_6; @@ -26968,9 +19789,9 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 577, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 577, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__25, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 577, __pyx_L1_error) + __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__19, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 577, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; @@ -26994,18 +19815,18 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 579, __pyx_L1_error) + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = (__pyx_v_self->view.suboffsets + __pyx_v_self->view.ndim); for (__pyx_t_6 = __pyx_v_self->view.suboffsets; __pyx_t_6 < __pyx_t_5; __pyx_t_6++) { __pyx_t_4 = __pyx_t_6; __pyx_v_suboffset = (__pyx_t_4[0]); - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_suboffset); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 579, __pyx_L1_error) + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_suboffset); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_2))) __PYX_ERR(2, 579, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_2))) __PYX_ERR(1, 579, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } - __pyx_t_2 = PyList_AsTuple(((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 579, __pyx_L1_error) + __pyx_t_2 = PyList_AsTuple(((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 579, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_2; @@ -27070,7 +19891,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struc * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 583, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -27133,7 +19954,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(s * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 587, __pyx_L1_error) + __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 587, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -27198,11 +20019,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(str * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 591, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 591, __pyx_L1_error) + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 591, __pyx_L1_error) + __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -27299,7 +20120,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc __pyx_t_4 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim); for (__pyx_t_5 = __pyx_v_self->view.shape; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) { __pyx_t_3 = __pyx_t_5; - __pyx_t_6 = PyInt_FromSsize_t((__pyx_t_3[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 598, __pyx_L1_error) + __pyx_t_6 = PyInt_FromSsize_t((__pyx_t_3[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_6); __pyx_t_6 = 0; @@ -27311,7 +20132,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc * * self._size = result */ - __pyx_t_6 = PyNumber_InPlaceMultiply(__pyx_v_result, __pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 599, __pyx_L1_error) + __pyx_t_6 = PyNumber_InPlaceMultiply(__pyx_v_result, __pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_6); __pyx_t_6 = 0; @@ -27492,12 +20313,12 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 612, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 612, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 612, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -27508,7 +20329,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 * * def __str__(self): */ - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 613, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); /* "View.MemoryView":612 @@ -27518,7 +20339,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 * id(self)) * */ - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 612, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); @@ -27526,7 +20347,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 612, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_2; @@ -27593,20 +20414,20 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 616, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 616, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 616, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 616, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_object, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 616, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_object, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; @@ -27673,7 +20494,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16 * return slice_is_contig(mslice[0], 'C', self.view.ndim) * */ - __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(2, 622, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 622, __pyx_L1_error) __pyx_v_mslice = __pyx_t_1; /* "View.MemoryView":623 @@ -27684,7 +20505,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16 * def is_f_contig(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'C', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 623, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'C', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; @@ -27749,7 +20570,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18 * return slice_is_contig(mslice[0], 'F', self.view.ndim) * */ - __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(2, 628, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 628, __pyx_L1_error) __pyx_v_mslice = __pyx_t_1; /* "View.MemoryView":629 @@ -27760,7 +20581,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18 * def copy(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'F', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 629, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'F', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; @@ -27843,7 +20664,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 * self.view.itemsize, * flags|PyBUF_C_CONTIGUOUS, */ - __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_mslice), ((char *)"c"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_C_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 636, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_mslice), ((char *)"c"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_C_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 636, __pyx_L1_error) __pyx_v_mslice = __pyx_t_1; /* "View.MemoryView":641 @@ -27854,7 +20675,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 * def copy_fortran(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_mslice)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 641, __pyx_L1_error) + __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_mslice)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; @@ -27938,7 +20759,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22 * self.view.itemsize, * flags|PyBUF_F_CONTIGUOUS, */ - __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_src), ((char *)"fortran"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_F_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 648, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_src), ((char *)"fortran"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_F_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 648, __pyx_L1_error) __pyx_v_dst = __pyx_t_1; /* "View.MemoryView":653 @@ -27949,7 +20770,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_dst)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 653, __pyx_L1_error) + __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_dst)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; @@ -28008,11 +20829,11 @@ static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struc * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(2, 2, __pyx_L1_error) + __PYX_ERR(1, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< @@ -28064,11 +20885,11 @@ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED st * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(2, 4, __pyx_L1_error) + __PYX_ERR(1, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): @@ -28114,11 +20935,11 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in * result.typeinfo = typeinfo * return result */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 658, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 658, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 658, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_o); __Pyx_GIVEREF(__pyx_v_o); @@ -28129,7 +20950,7 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 658, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_result = ((struct __pyx_memoryview_obj *)__pyx_t_2); @@ -28269,7 +21090,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { * else: * tup = index */ - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 672, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_index); __Pyx_GIVEREF(__pyx_v_index); @@ -28307,7 +21128,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { * have_slices = False * seen_ellipsis = False */ - __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 676, __pyx_L1_error) + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 676, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_result = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; @@ -28343,26 +21164,26 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_4 = __pyx_v_tup; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; __pyx_t_6 = NULL; } else { - __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_tup); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 679, __pyx_L1_error) + __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_tup); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 679, __pyx_L1_error) + __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 679, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_6)) { if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(2, 679, __pyx_L1_error) + __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 679, __pyx_L1_error) #else - __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 679, __pyx_L1_error) + __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } else { if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(2, 679, __pyx_L1_error) + __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 679, __pyx_L1_error) #else - __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 679, __pyx_L1_error) + __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } @@ -28372,7 +21193,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(2, 679, __pyx_L1_error) + else __PYX_ERR(1, 679, __pyx_L1_error) } break; } @@ -28382,7 +21203,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_7 = 0; __Pyx_INCREF(__pyx_t_3); __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_3); - __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 679, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = __pyx_t_7; @@ -28416,8 +21237,8 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { * seen_ellipsis = True * else: */ - __pyx_t_8 = PyObject_Length(__pyx_v_tup); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(2, 682, __pyx_L1_error) - __pyx_t_7 = PyList_New(1 * ((((__pyx_v_ndim - __pyx_t_8) + 1)<0) ? 0:((__pyx_v_ndim - __pyx_t_8) + 1))); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 682, __pyx_L1_error) + __pyx_t_8 = PyObject_Length(__pyx_v_tup); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(1, 682, __pyx_L1_error) + __pyx_t_7 = PyList_New(1 * ((((__pyx_v_ndim - __pyx_t_8) + 1)<0) ? 0:((__pyx_v_ndim - __pyx_t_8) + 1))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) { @@ -28426,7 +21247,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__2); } } - __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 682, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 682, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "View.MemoryView":683 @@ -28456,7 +21277,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { * else: */ /*else*/ { - __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__2); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 685, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__2); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 685, __pyx_L1_error) } __pyx_L7:; @@ -28506,14 +21327,14 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { * * have_slices = have_slices or isinstance(item, slice) */ - __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 689, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 689, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_Raise(__pyx_t_11, 0, 0, 0); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __PYX_ERR(2, 689, __pyx_L1_error) + __PYX_ERR(1, 689, __pyx_L1_error) /* "View.MemoryView":688 * have_slices = True @@ -28550,7 +21371,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { * * nslices = ndim - len(result) */ - __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_item); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 692, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_item); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 692, __pyx_L1_error) } __pyx_L6:; @@ -28572,7 +21393,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { * if nslices: * result.extend([slice(None)] * nslices) */ - __pyx_t_5 = PyList_GET_SIZE(__pyx_v_result); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(2, 694, __pyx_L1_error) + __pyx_t_5 = PyList_GET_SIZE(__pyx_v_result); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 694, __pyx_L1_error) __pyx_v_nslices = (__pyx_v_ndim - __pyx_t_5); /* "View.MemoryView":695 @@ -28592,7 +21413,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { * * return have_slices or nslices, tuple(result) */ - __pyx_t_3 = PyList_New(1 * ((__pyx_v_nslices<0) ? 0:__pyx_v_nslices)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 696, __pyx_L1_error) + __pyx_t_3 = PyList_New(1 * ((__pyx_v_nslices<0) ? 0:__pyx_v_nslices)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) { @@ -28601,7 +21422,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__2); } } - __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 696, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 696, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "View.MemoryView":695 @@ -28623,20 +21444,20 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __Pyx_XDECREF(__pyx_r); if (!__pyx_v_have_slices) { } else { - __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_have_slices); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 698, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_have_slices); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L14_bool_binop_done; } - __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_nslices); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 698, __pyx_L1_error) + __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_nslices); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; __pyx_L14_bool_binop_done:; - __pyx_t_4 = PyList_AsTuple(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 698, __pyx_L1_error) + __pyx_t_4 = PyList_AsTuple(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 698, __pyx_L1_error) + __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3); @@ -28725,11 +21546,11 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __ * * */ - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 703, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_Raise(__pyx_t_5, 0, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_ERR(2, 703, __pyx_L1_error) + __PYX_ERR(1, 703, __pyx_L1_error) /* "View.MemoryView":702 * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim): @@ -28836,7 +21657,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!((__pyx_v_memview->view.ndim > 0) != 0))) { PyErr_SetNone(PyExc_AssertionError); - __PYX_ERR(2, 722, __pyx_L1_error) + __PYX_ERR(1, 722, __pyx_L1_error) } } #endif @@ -28859,7 +21680,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * p_src = &memviewsliceobj.from_slice * else: */ - if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(2, 725, __pyx_L1_error) + if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(1, 725, __pyx_L1_error) __pyx_t_3 = ((PyObject *)__pyx_v_memview); __Pyx_INCREF(__pyx_t_3); __pyx_v_memviewsliceobj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_3); @@ -28955,26 +21776,26 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_3 = __pyx_v_indices; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0; __pyx_t_8 = NULL; } else { - __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_indices); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 746, __pyx_L1_error) + __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_indices); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 746, __pyx_L1_error) + __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 746, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_8)) { if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_9 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(2, 746, __pyx_L1_error) + __pyx_t_9 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(1, 746, __pyx_L1_error) #else - __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 746, __pyx_L1_error) + __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif } else { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(2, 746, __pyx_L1_error) + __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(1, 746, __pyx_L1_error) #else - __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 746, __pyx_L1_error) + __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif } @@ -28984,7 +21805,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(2, 746, __pyx_L1_error) + else __PYX_ERR(1, 746, __pyx_L1_error) } break; } @@ -29012,7 +21833,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * 0, 0, 0, # have_{start,stop,step} * False) */ - __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 751, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 751, __pyx_L1_error) /* "View.MemoryView":748 * for dim, index in enumerate(indices): @@ -29021,7 +21842,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], * dim, new_ndim, p_suboffset_dim, */ - __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_t_10, 0, 0, 0, 0, 0, 0); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(2, 748, __pyx_L1_error) + __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_t_10, 0, 0, 0, 0, 0, 0); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 748, __pyx_L1_error) /* "View.MemoryView":747 * @@ -29098,13 +21919,13 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * step = index.step or 0 */ /*else*/ { - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 760, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 760, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 760, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 760, __pyx_L1_error) if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else { - __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 760, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 760, __pyx_L1_error) __pyx_t_10 = __pyx_t_12; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L7_bool_binop_done; @@ -29120,13 +21941,13 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * step = index.step or 0 * */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 761, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 761, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 761, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 761, __pyx_L1_error) if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else { - __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 761, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 761, __pyx_L1_error) __pyx_t_10 = __pyx_t_12; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L9_bool_binop_done; @@ -29142,13 +21963,13 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * * have_start = index.start is not None */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 762, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(2, 762, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 762, __pyx_L1_error) if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else { - __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 762, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 762, __pyx_L1_error) __pyx_t_10 = __pyx_t_12; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L11_bool_binop_done; @@ -29164,7 +21985,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * have_stop = index.stop is not None * have_step = index.step is not None */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 764, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = (__pyx_t_9 != Py_None); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; @@ -29177,7 +21998,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * have_step = index.step is not None * */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 765, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 765, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = (__pyx_t_9 != Py_None); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; @@ -29190,7 +22011,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * * slice_memviewslice( */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 766, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = (__pyx_t_9 != Py_None); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; @@ -29203,7 +22024,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], * dim, new_ndim, p_suboffset_dim, */ - __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_start, __pyx_v_stop, __pyx_v_step, __pyx_v_have_start, __pyx_v_have_stop, __pyx_v_have_step, 1); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(2, 768, __pyx_L1_error) + __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_start, __pyx_v_stop, __pyx_v_step, __pyx_v_have_start, __pyx_v_have_stop, __pyx_v_have_step, 1); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 768, __pyx_L1_error) /* "View.MemoryView":774 * have_start, have_stop, have_step, @@ -29253,7 +22074,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * memviewsliceobj.to_dtype_func, * memview.dtype_is_object) */ - if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(2, 778, __pyx_L1_error) } + if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 778, __pyx_L1_error) } /* "View.MemoryView":779 * return memoryview_fromslice(dst, new_ndim, @@ -29262,7 +22083,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * memview.dtype_is_object) * else: */ - if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(2, 779, __pyx_L1_error) } + if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 779, __pyx_L1_error) } /* "View.MemoryView":777 * @@ -29271,9 +22092,9 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * memviewsliceobj.to_object_func, * memviewsliceobj.to_dtype_func, */ - __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, __pyx_v_memviewsliceobj->to_object_func, __pyx_v_memviewsliceobj->to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 777, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, __pyx_v_memviewsliceobj->to_object_func, __pyx_v_memviewsliceobj->to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) __PYX_ERR(2, 777, __pyx_L1_error) + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) __PYX_ERR(1, 777, __pyx_L1_error) __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0; @@ -29304,7 +22125,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * * */ - __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, NULL, NULL, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 782, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, NULL, NULL, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); /* "View.MemoryView":782 @@ -29314,7 +22135,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * memview.dtype_is_object) * */ - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) __PYX_ERR(2, 782, __pyx_L1_error) + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) __PYX_ERR(1, 782, __pyx_L1_error) __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0; @@ -29420,7 +22241,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, * else: * */ - __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, ((char *)"Index out of bounds (axis %d)"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(2, 832, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, ((char *)"Index out of bounds (axis %d)"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 832, __pyx_L1_error) /* "View.MemoryView":831 * if start < 0: @@ -29485,7 +22306,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, * * */ - __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, ((char *)"Step may not be zero (axis %d)"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(2, 838, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, ((char *)"Step may not be zero (axis %d)"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 838, __pyx_L1_error) /* "View.MemoryView":837 * negative_step = have_step != 0 and step < 0 @@ -30057,7 +22878,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, * else: * suboffset_dim[0] = new_ndim */ - __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, ((char *)"All dimensions preceding dimension %d must be indexed and not sliced"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(2, 899, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, ((char *)"All dimensions preceding dimension %d must be indexed and not sliced"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 899, __pyx_L1_error) } __pyx_L26:; @@ -30189,11 +23010,11 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ if (unlikely(__pyx_v_itemsize == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); - __PYX_ERR(2, 917, __pyx_L1_error) + __PYX_ERR(1, 917, __pyx_L1_error) } else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_v_itemsize == (Py_ssize_t)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_view->len))) { PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); - __PYX_ERR(2, 917, __pyx_L1_error) + __PYX_ERR(1, 917, __pyx_L1_error) } __pyx_v_shape = (__pyx_v_view->len / __pyx_v_itemsize); @@ -30301,17 +23122,17 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P * * if index >= shape: */ - __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 928, __pyx_L1_error) + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 928, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IndexError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 928, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IndexError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 928, __pyx_L1_error) + __PYX_ERR(1, 928, __pyx_L1_error) /* "View.MemoryView":927 * if index < 0: @@ -30348,17 +23169,17 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P * * resultp = bufp + index * stride */ - __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 931, __pyx_L1_error) + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 931, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 931, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 931, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IndexError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 931, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IndexError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 931, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 931, __pyx_L1_error) + __PYX_ERR(1, 931, __pyx_L1_error) /* "View.MemoryView":930 * raise IndexError("Out of bounds on buffer access (axis %d)" % dim) @@ -30563,7 +23384,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { * * return 1 */ - __pyx_t_9 = __pyx_memoryview_err(__pyx_builtin_ValueError, ((char *)"Cannot transpose memoryview with indirect dimensions")); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 957, __pyx_L1_error) + __pyx_t_9 = __pyx_memoryview_err(__pyx_builtin_ValueError, ((char *)"Cannot transpose memoryview with indirect dimensions")); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 957, __pyx_L1_error) /* "View.MemoryView":956 * shape[i], shape[j] = shape[j], shape[i] @@ -30689,7 +23510,7 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor * return memoryview.convert_item_to_object(self, itemp) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_v_self->to_object_func(__pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 981, __pyx_L1_error) + __pyx_t_2 = __pyx_v_self->to_object_func(__pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 981, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; @@ -30713,7 +23534,7 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor */ /*else*/ { __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_memoryview_convert_item_to_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 983, __pyx_L1_error) + __pyx_t_2 = __pyx_memoryview_convert_item_to_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; @@ -30775,7 +23596,7 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo * else: * memoryview.assign_item_from_object(self, itemp, value) */ - __pyx_t_2 = __pyx_v_self->to_dtype_func(__pyx_v_itemp, __pyx_v_value); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(2, 987, __pyx_L1_error) + __pyx_t_2 = __pyx_v_self->to_dtype_func(__pyx_v_itemp, __pyx_v_value); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(1, 987, __pyx_L1_error) /* "View.MemoryView":986 * @@ -30795,7 +23616,7 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo * @property */ /*else*/ { - __pyx_t_3 = __pyx_memoryview_assign_item_from_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 989, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_assign_item_from_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } @@ -30909,11 +23730,11 @@ static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(2, 2, __pyx_L1_error) + __PYX_ERR(1, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< @@ -30965,11 +23786,11 @@ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUS * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(2, 4, __pyx_L1_error) + __PYX_ERR(1, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): @@ -31053,9 +23874,9 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl * * result.from_slice = memviewslice */ - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1013, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1013, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); @@ -31066,7 +23887,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryviewslice_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1013, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryviewslice_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_2); @@ -31097,7 +23918,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl * result.typeinfo = memviewslice.memview.typeinfo * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_memviewslice.memview), __pyx_n_s_base); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1018, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_memviewslice.memview), __pyx_n_s_base); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_result->from_object); @@ -31300,7 +24121,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_7 = (__pyx_v_result->__pyx_base.view.shape + __pyx_v_ndim); for (__pyx_t_8 = __pyx_v_result->__pyx_base.view.shape; __pyx_t_8 < __pyx_t_7; __pyx_t_8++) { __pyx_t_6 = __pyx_t_8; - __pyx_t_2 = PyInt_FromSsize_t((__pyx_t_6[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1043, __pyx_L1_error) + __pyx_t_2 = PyInt_FromSsize_t((__pyx_t_6[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1043, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_2); __pyx_t_2 = 0; @@ -31312,12 +24133,12 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl * * result.to_object_func = to_object_func */ - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_result->__pyx_base.view.len); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1044, __pyx_L1_error) + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_result->__pyx_base.view.len); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_2, __pyx_v_length); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1044, __pyx_L1_error) + __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_2, __pyx_v_length); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 1044, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 1044, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_result->__pyx_base.view.len = __pyx_t_9; } @@ -31412,7 +24233,7 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p * return &obj.from_slice * else: */ - if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(2, 1056, __pyx_L1_error) + if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(1, 1056, __pyx_L1_error) __pyx_t_3 = ((PyObject *)__pyx_v_memview); __Pyx_INCREF(__pyx_t_3); __pyx_v_obj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_3); @@ -31638,7 +24459,7 @@ static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx * @cname('__pyx_memoryview_copy_object_from_slice') */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_memoryview_copy_object_from_slice(__pyx_v_memview, (&__pyx_v_memviewslice)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1084, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_copy_object_from_slice(__pyx_v_memview, (&__pyx_v_memviewslice)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1084, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -31764,7 +24585,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview * * */ - __pyx_t_5 = __pyx_memoryview_fromslice((__pyx_v_memviewslice[0]), __pyx_v_memview->view.ndim, __pyx_v_to_object_func, __pyx_v_to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1101, __pyx_L1_error) + __pyx_t_5 = __pyx_memoryview_fromslice((__pyx_v_memviewslice[0]), __pyx_v_memview->view.ndim, __pyx_v_to_object_func, __pyx_v_to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_r = __pyx_t_5; __pyx_t_5 = 0; @@ -32575,7 +25396,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, * * */ - __pyx_t_3 = __pyx_memoryview_err(__pyx_builtin_MemoryError, NULL); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(2, 1224, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_err(__pyx_builtin_MemoryError, NULL); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 1224, __pyx_L1_error) /* "View.MemoryView":1223 * @@ -32791,13 +25612,13 @@ static int __pyx_memoryview_err_extents(int __pyx_v_i, Py_ssize_t __pyx_v_extent * * @cname('__pyx_memoryview_err_dim') */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_extent1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1254, __pyx_L1_error) + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_extent1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_extent2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1254, __pyx_L1_error) + __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_extent2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1254, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); @@ -32816,15 +25637,15 @@ static int __pyx_memoryview_err_extents(int __pyx_v_i, Py_ssize_t __pyx_v_extent * (i, extent1, extent2)) * */ - __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_got_differing_extents_in_dimensi, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1253, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_got_differing_extents_in_dimensi, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1253, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(2, 1253, __pyx_L1_error) + __PYX_ERR(1, 1253, __pyx_L1_error) /* "View.MemoryView":1251 * @@ -32880,11 +25701,11 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg, * * @cname('__pyx_memoryview_err') */ - __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1258, __pyx_L1_error) + __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1258, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyUnicode_Format(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1258, __pyx_L1_error) + __pyx_t_4 = PyUnicode_Format(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -32902,12 +25723,12 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg, __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1258, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(2, 1258, __pyx_L1_error) + __PYX_ERR(1, 1258, __pyx_L1_error) /* "View.MemoryView":1257 * @@ -32975,7 +25796,7 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) { * else: * raise error */ - __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1263, __pyx_L1_error) + __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_error); __pyx_t_4 = __pyx_v_error; __pyx_t_5 = NULL; @@ -32991,12 +25812,12 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) { __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1263, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(2, 1263, __pyx_L1_error) + __PYX_ERR(1, 1263, __pyx_L1_error) /* "View.MemoryView":1262 * @cname('__pyx_memoryview_err') @@ -33016,7 +25837,7 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) { */ /*else*/ { __Pyx_Raise(__pyx_v_error, 0, 0, 0); - __PYX_ERR(2, 1265, __pyx_L1_error) + __PYX_ERR(1, 1265, __pyx_L1_error) } /* "View.MemoryView":1261 @@ -33261,7 +26082,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ * if src.suboffsets[i] >= 0: */ /*else*/ { - __pyx_t_6 = __pyx_memoryview_err_extents(__pyx_v_i, (__pyx_v_dst.shape[__pyx_v_i]), (__pyx_v_src.shape[__pyx_v_i])); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 1297, __pyx_L1_error) + __pyx_t_6 = __pyx_memoryview_err_extents(__pyx_v_i, (__pyx_v_dst.shape[__pyx_v_i]), (__pyx_v_src.shape[__pyx_v_i])); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1297, __pyx_L1_error) } __pyx_L7:; @@ -33291,7 +26112,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ * * if slices_overlap(&src, &dst, ndim, itemsize): */ - __pyx_t_6 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, ((char *)"Dimension %d is not direct"), __pyx_v_i); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 1300, __pyx_L1_error) + __pyx_t_6 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, ((char *)"Dimension %d is not direct"), __pyx_v_i); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1300, __pyx_L1_error) /* "View.MemoryView":1299 * _err_extents(i, dst.shape[i], src.shape[i]) @@ -33348,7 +26169,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ * src = tmp * */ - __pyx_t_7 = __pyx_memoryview_copy_data_to_temp((&__pyx_v_src), (&__pyx_v_tmp), __pyx_v_order, __pyx_v_ndim); if (unlikely(__pyx_t_7 == ((void *)NULL))) __PYX_ERR(2, 1307, __pyx_L1_error) + __pyx_t_7 = __pyx_memoryview_copy_data_to_temp((&__pyx_v_src), (&__pyx_v_tmp), __pyx_v_order, __pyx_v_ndim); if (unlikely(__pyx_t_7 == ((void *)NULL))) __PYX_ERR(1, 1307, __pyx_L1_error) __pyx_v_tmpdata = __pyx_t_7; /* "View.MemoryView":1308 @@ -33532,7 +26353,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ * transpose_memslice(&dst) * */ - __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_src)); if (unlikely(__pyx_t_5 == ((int)0))) __PYX_ERR(2, 1329, __pyx_L1_error) + __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_src)); if (unlikely(__pyx_t_5 == ((int)0))) __PYX_ERR(1, 1329, __pyx_L1_error) /* "View.MemoryView":1330 * @@ -33541,7 +26362,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ * * refcount_copying(&dst, dtype_is_object, ndim, False) */ - __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_dst)); if (unlikely(__pyx_t_5 == ((int)0))) __PYX_ERR(2, 1330, __pyx_L1_error) + __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_dst)); if (unlikely(__pyx_t_5 == ((int)0))) __PYX_ERR(1, 1330, __pyx_L1_error) /* "View.MemoryView":1326 * return 0 @@ -34179,17 +27000,17 @@ static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *_ case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, 1); __PYX_ERR(2, 1, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, 2); __PYX_ERR(2, 1, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Enum") < 0)) __PYX_ERR(2, 1, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Enum") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -34199,12 +27020,12 @@ static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *_ values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v___pyx_type = values[0]; - __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(2, 1, __pyx_L3_error) + __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) __pyx_v___pyx_state = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -34250,15 +27071,15 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE * raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum) * __pyx_result = Enum.__new__(__pyx_type) */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error) + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_PickleError); __Pyx_GIVEREF(__pyx_n_s_PickleError); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError); - __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error) + __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error) + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_2); __pyx_v___pyx_PickleError = __pyx_t_2; @@ -34272,9 +27093,9 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE * __pyx_result = Enum.__new__(__pyx_type) * if __pyx_state is not None: */ - __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 6, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xb0, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xb0, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_INCREF(__pyx_v___pyx_PickleError); @@ -34291,12 +27112,12 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(2, 6, __pyx_L1_error) + __PYX_ERR(1, 6, __pyx_L1_error) /* "(tree fragment)":4 * cdef object __pyx_PickleError @@ -34314,7 +27135,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE * if __pyx_state is not None: * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 7, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -34328,7 +27149,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE } __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 7, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v___pyx_result = __pyx_t_3; @@ -34352,8 +27173,8 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE * return __pyx_result * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): */ - if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(2, 9, __pyx_L1_error) - __pyx_t_3 = __pyx_unpickle_Enum__set_state(((struct __pyx_MemviewEnum_obj *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 9, __pyx_L1_error) + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error) + __pyx_t_3 = __pyx_unpickle_Enum__set_state(((struct __pyx_MemviewEnum_obj *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -34433,9 +27254,9 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ */ if (unlikely(__pyx_v___pyx_state == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(2, 12, __pyx_L1_error) + __PYX_ERR(1, 12, __pyx_L1_error) } - __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v___pyx_result->name); @@ -34451,16 +27272,16 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ */ if (unlikely(__pyx_v___pyx_state == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(2, 13, __pyx_L1_error) + __PYX_ERR(1, 13, __pyx_L1_error) } - __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) __pyx_t_4 = ((__pyx_t_3 > 1) != 0); if (__pyx_t_4) { } else { __pyx_t_2 = __pyx_t_4; goto __pyx_L4_bool_binop_done; } - __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 13, __pyx_L1_error) + __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) __pyx_t_5 = (__pyx_t_4 != 0); __pyx_t_2 = __pyx_t_5; __pyx_L4_bool_binop_done:; @@ -34471,16 +27292,16 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): * __pyx_result.__dict__.update(__pyx_state[1]) # <<<<<<<<<<<<<< */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 14, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 14, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(__pyx_v___pyx_state == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(2, 14, __pyx_L1_error) + __PYX_ERR(1, 14, __pyx_L1_error) } - __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 14, __pyx_L1_error) + __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { @@ -34495,7 +27316,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 14, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -34531,10 +27352,10 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static struct __pyx_vtabstruct_7_squish_VoronoiContainer __pyx_vtable_7_squish_VoronoiContainer; +static struct __pyx_vtabstruct_6squish_7voronoi_VoronoiContainer __pyx_vtable_6squish_7voronoi_VoronoiContainer; -static PyObject *__pyx_tp_new_7_squish_VoronoiContainer(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_7_squish_VoronoiContainer *p; +static PyObject *__pyx_tp_new_6squish_7voronoi_VoronoiContainer(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_6squish_7voronoi_VoronoiContainer *p; PyObject *o; if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { o = (*t->tp_alloc)(t, 0); @@ -34542,8 +27363,8 @@ static PyObject *__pyx_tp_new_7_squish_VoronoiContainer(PyTypeObject *t, CYTHON_ o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); } if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_7_squish_VoronoiContainer *)o); - p->__pyx_vtab = __pyx_vtabptr_7_squish_VoronoiContainer; + p = ((struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)o); + p->__pyx_vtab = __pyx_vtabptr_6squish_7voronoi_VoronoiContainer; p->__dict__ = PyDict_New(); if (unlikely(!p->__dict__)) goto bad;p->points.data = NULL; p->points.memview = NULL; p->vertices.data = NULL; @@ -34564,8 +27385,8 @@ static PyObject *__pyx_tp_new_7_squish_VoronoiContainer(PyTypeObject *t, CYTHON_ return NULL; } -static void __pyx_tp_dealloc_7_squish_VoronoiContainer(PyObject *o) { - struct __pyx_obj_7_squish_VoronoiContainer *p = (struct __pyx_obj_7_squish_VoronoiContainer *)o; +static void __pyx_tp_dealloc_6squish_7voronoi_VoronoiContainer(PyObject *o) { + struct __pyx_obj_6squish_7voronoi_VoronoiContainer *p = (struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { if (PyObject_CallFinalizerFromDealloc(o)) return; @@ -34584,26 +27405,26 @@ static void __pyx_tp_dealloc_7_squish_VoronoiContainer(PyObject *o) { (*Py_TYPE(o)->tp_free)(o); } -static int __pyx_tp_traverse_7_squish_VoronoiContainer(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_6squish_7voronoi_VoronoiContainer(PyObject *o, visitproc v, void *a) { int e; - struct __pyx_obj_7_squish_VoronoiContainer *p = (struct __pyx_obj_7_squish_VoronoiContainer *)o; + struct __pyx_obj_6squish_7voronoi_VoronoiContainer *p = (struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)o; if (p->__dict__) { e = (*v)(p->__dict__, a); if (e) return e; } return 0; } -static int __pyx_tp_clear_7_squish_VoronoiContainer(PyObject *o) { +static int __pyx_tp_clear_6squish_7voronoi_VoronoiContainer(PyObject *o) { PyObject* tmp; - struct __pyx_obj_7_squish_VoronoiContainer *p = (struct __pyx_obj_7_squish_VoronoiContainer *)o; + struct __pyx_obj_6squish_7voronoi_VoronoiContainer *p = (struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)o; tmp = ((PyObject*)p->__dict__); p->__dict__ = ((PyObject*)Py_None); Py_INCREF(Py_None); Py_XDECREF(tmp); return 0; } -static PyObject *__pyx___dict__getter_7_squish_VoronoiContainer(PyObject *o, CYTHON_UNUSED void *x) { - struct __pyx_obj_7_squish_VoronoiContainer *p = (struct __pyx_obj_7_squish_VoronoiContainer *)o; +static PyObject *__pyx___dict__getter_6squish_7voronoi_VoronoiContainer(PyObject *o, CYTHON_UNUSED void *x) { + struct __pyx_obj_6squish_7voronoi_VoronoiContainer *p = (struct __pyx_obj_6squish_7voronoi_VoronoiContainer *)o; if (unlikely(!p->__dict__)){ p->__dict__ = PyDict_New(); } @@ -34611,66 +27432,67 @@ static PyObject *__pyx___dict__getter_7_squish_VoronoiContainer(PyObject *o, CYT return p->__dict__; } -static PyObject *__pyx_getprop_7_squish_16VoronoiContainer_site_arr(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_7_squish_16VoronoiContainer_8site_arr_1__get__(o); +static PyObject *__pyx_getprop_6squish_7voronoi_16VoronoiContainer_site_arr(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6squish_7voronoi_16VoronoiContainer_8site_arr_1__get__(o); } -static PyObject *__pyx_getprop_7_squish_16VoronoiContainer_vor_data(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_7_squish_16VoronoiContainer_8vor_data_1__get__(o); +static PyObject *__pyx_getprop_6squish_7voronoi_16VoronoiContainer_vor_data(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6squish_7voronoi_16VoronoiContainer_8vor_data_1__get__(o); } -static PyObject *__pyx_getprop_7_squish_16VoronoiContainer_gradient(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_7_squish_16VoronoiContainer_8gradient_1__get__(o); +static PyObject *__pyx_getprop_6squish_7voronoi_16VoronoiContainer_gradient(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6squish_7voronoi_16VoronoiContainer_8gradient_1__get__(o); } -static PyObject *__pyx_getprop_7_squish_16VoronoiContainer_n(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_7_squish_16VoronoiContainer_1n_1__get__(o); +static PyObject *__pyx_getprop_6squish_7voronoi_16VoronoiContainer_n(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6squish_7voronoi_16VoronoiContainer_1n_1__get__(o); } -static PyObject *__pyx_getprop_7_squish_16VoronoiContainer_w(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_7_squish_16VoronoiContainer_1w_1__get__(o); +static PyObject *__pyx_getprop_6squish_7voronoi_16VoronoiContainer_w(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6squish_7voronoi_16VoronoiContainer_1w_1__get__(o); } -static PyObject *__pyx_getprop_7_squish_16VoronoiContainer_h(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_7_squish_16VoronoiContainer_1h_1__get__(o); +static PyObject *__pyx_getprop_6squish_7voronoi_16VoronoiContainer_h(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6squish_7voronoi_16VoronoiContainer_1h_1__get__(o); } -static PyObject *__pyx_getprop_7_squish_16VoronoiContainer_r(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_7_squish_16VoronoiContainer_1r_1__get__(o); +static PyObject *__pyx_getprop_6squish_7voronoi_16VoronoiContainer_r(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6squish_7voronoi_16VoronoiContainer_1r_1__get__(o); } -static PyObject *__pyx_getprop_7_squish_16VoronoiContainer_energy(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_7_squish_16VoronoiContainer_6energy_1__get__(o); +static PyObject *__pyx_getprop_6squish_7voronoi_16VoronoiContainer_energy(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_6squish_7voronoi_16VoronoiContainer_6energy_1__get__(o); } -static PyMethodDef __pyx_methods_7_squish_VoronoiContainer[] = { - {"add_sites", (PyCFunction)__pyx_pw_7_squish_16VoronoiContainer_3add_sites, METH_O, 0}, - {"iterate", (PyCFunction)__pyx_pw_7_squish_16VoronoiContainer_5iterate, METH_O, 0}, - {"hessian", (PyCFunction)__pyx_pw_7_squish_16VoronoiContainer_7hessian, METH_O, __pyx_doc_7_squish_16VoronoiContainer_6hessian}, - {"__reduce_cython__", (PyCFunction)__pyx_pw_7_squish_16VoronoiContainer_9__reduce_cython__, METH_NOARGS, 0}, - {"__setstate_cython__", (PyCFunction)__pyx_pw_7_squish_16VoronoiContainer_11__setstate_cython__, METH_O, 0}, +static PyMethodDef __pyx_methods_6squish_7voronoi_VoronoiContainer[] = { + {"add_sites", (PyCFunction)__pyx_pw_6squish_7voronoi_16VoronoiContainer_3add_sites, METH_O, 0}, + {"iterate", (PyCFunction)__pyx_pw_6squish_7voronoi_16VoronoiContainer_5iterate, METH_O, 0}, + {"hessian", (PyCFunction)__pyx_pw_6squish_7voronoi_16VoronoiContainer_7hessian, METH_O, __pyx_doc_6squish_7voronoi_16VoronoiContainer_6hessian}, + {"site_vert_arr", (PyCFunction)__pyx_pw_6squish_7voronoi_16VoronoiContainer_9site_vert_arr, METH_NOARGS, 0}, + {"__reduce_cython__", (PyCFunction)__pyx_pw_6squish_7voronoi_16VoronoiContainer_11__reduce_cython__, METH_NOARGS, 0}, + {"__setstate_cython__", (PyCFunction)__pyx_pw_6squish_7voronoi_16VoronoiContainer_13__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; -static struct PyGetSetDef __pyx_getsets_7_squish_VoronoiContainer[] = { - {(char *)"__dict__", __pyx___dict__getter_7_squish_VoronoiContainer, 0, (char *)0, 0}, - {(char *)"site_arr", __pyx_getprop_7_squish_16VoronoiContainer_site_arr, 0, (char *)0, 0}, - {(char *)"vor_data", __pyx_getprop_7_squish_16VoronoiContainer_vor_data, 0, (char *)0, 0}, - {(char *)"gradient", __pyx_getprop_7_squish_16VoronoiContainer_gradient, 0, (char *)0, 0}, - {(char *)"n", __pyx_getprop_7_squish_16VoronoiContainer_n, 0, (char *)0, 0}, - {(char *)"w", __pyx_getprop_7_squish_16VoronoiContainer_w, 0, (char *)0, 0}, - {(char *)"h", __pyx_getprop_7_squish_16VoronoiContainer_h, 0, (char *)0, 0}, - {(char *)"r", __pyx_getprop_7_squish_16VoronoiContainer_r, 0, (char *)0, 0}, - {(char *)"energy", __pyx_getprop_7_squish_16VoronoiContainer_energy, 0, (char *)0, 0}, +static struct PyGetSetDef __pyx_getsets_6squish_7voronoi_VoronoiContainer[] = { + {(char *)"__dict__", __pyx___dict__getter_6squish_7voronoi_VoronoiContainer, 0, (char *)0, 0}, + {(char *)"site_arr", __pyx_getprop_6squish_7voronoi_16VoronoiContainer_site_arr, 0, (char *)0, 0}, + {(char *)"vor_data", __pyx_getprop_6squish_7voronoi_16VoronoiContainer_vor_data, 0, (char *)0, 0}, + {(char *)"gradient", __pyx_getprop_6squish_7voronoi_16VoronoiContainer_gradient, 0, (char *)0, 0}, + {(char *)"n", __pyx_getprop_6squish_7voronoi_16VoronoiContainer_n, 0, (char *)0, 0}, + {(char *)"w", __pyx_getprop_6squish_7voronoi_16VoronoiContainer_w, 0, (char *)0, 0}, + {(char *)"h", __pyx_getprop_6squish_7voronoi_16VoronoiContainer_h, 0, (char *)0, 0}, + {(char *)"r", __pyx_getprop_6squish_7voronoi_16VoronoiContainer_r, 0, (char *)0, 0}, + {(char *)"energy", __pyx_getprop_6squish_7voronoi_16VoronoiContainer_energy, 0, (char *)0, 0}, {0, 0, 0, 0, 0} }; -static PyTypeObject __pyx_type_7_squish_VoronoiContainer = { +static PyTypeObject __pyx_type_6squish_7voronoi_VoronoiContainer = { PyVarObject_HEAD_INIT(0, 0) - "_squish.VoronoiContainer", /*tp_name*/ - sizeof(struct __pyx_obj_7_squish_VoronoiContainer), /*tp_basicsize*/ + "squish.voronoi.VoronoiContainer", /*tp_name*/ + sizeof(struct __pyx_obj_6squish_7voronoi_VoronoiContainer), /*tp_basicsize*/ 0, /*tp_itemsize*/ - __pyx_tp_dealloc_7_squish_VoronoiContainer, /*tp_dealloc*/ + __pyx_tp_dealloc_6squish_7voronoi_VoronoiContainer, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif @@ -34696,425 +27518,24 @@ static PyTypeObject __pyx_type_7_squish_VoronoiContainer = { 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "\n\tClass for Voronoi diagrams, stored in a modified DCEL.\n\t:param n: [int] how many sites to generate.\n\t:param w: [float] width of the bounding domain.\n\t:param h: [float] height of the bounding domain.\n\t:param r: [float] radius of zero energy circle.\n\t:param sites: np.ndarray collection of sites.\n\t", /*tp_doc*/ - __pyx_tp_traverse_7_squish_VoronoiContainer, /*tp_traverse*/ - __pyx_tp_clear_7_squish_VoronoiContainer, /*tp_clear*/ + "\n Class for Voronoi diagrams, stored in a modified DCEL.\n :param n: [int] how many sites to generate.\n :param w: [float] width of the bounding domain.\n :param h: [float] height of the bounding domain.\n :param r: [float] radius of zero energy circle.\n :param sites: np.ndarray collection of sites.\n ", /*tp_doc*/ + __pyx_tp_traverse_6squish_7voronoi_VoronoiContainer, /*tp_traverse*/ + __pyx_tp_clear_6squish_7voronoi_VoronoiContainer, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ - __pyx_methods_7_squish_VoronoiContainer, /*tp_methods*/ + __pyx_methods_6squish_7voronoi_VoronoiContainer, /*tp_methods*/ 0, /*tp_members*/ - __pyx_getsets_7_squish_VoronoiContainer, /*tp_getset*/ + __pyx_getsets_6squish_7voronoi_VoronoiContainer, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ - offsetof(struct __pyx_obj_7_squish_VoronoiContainer, __dict__), /*tp_dictoffset*/ - __pyx_pw_7_squish_16VoronoiContainer_1__init__, /*tp_init*/ + offsetof(struct __pyx_obj_6squish_7voronoi_VoronoiContainer, __dict__), /*tp_dictoffset*/ + __pyx_pw_6squish_7voronoi_16VoronoiContainer_1__init__, /*tp_init*/ 0, /*tp_alloc*/ - __pyx_tp_new_7_squish_VoronoiContainer, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif - #if PY_VERSION_HEX >= 0x030800b1 - 0, /*tp_vectorcall*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 - 0, /*tp_print*/ - #endif -}; -static struct __pyx_vtabstruct_7_squish_AreaEnergy __pyx_vtable_7_squish_AreaEnergy; - -static PyObject *__pyx_tp_new_7_squish_AreaEnergy(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_7_squish_AreaEnergy *p; - PyObject *o = __pyx_tp_new_7_squish_VoronoiContainer(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_7_squish_AreaEnergy *)o); - p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_squish_VoronoiContainer*)__pyx_vtabptr_7_squish_AreaEnergy; - return o; -} - -static PyObject *__pyx___dict__getter_7_squish_AreaEnergy(PyObject *o, CYTHON_UNUSED void *x) { - struct __pyx_obj_7_squish_AreaEnergy *p = (struct __pyx_obj_7_squish_AreaEnergy *)o; - if (unlikely(!p->__pyx_base.__dict__)){ - p->__pyx_base.__dict__ = PyDict_New(); - } - Py_XINCREF(p->__pyx_base.__dict__); - return p->__pyx_base.__dict__; -} - -static PyObject *__pyx_getprop_7_squish_10AreaEnergy_minimum(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_7_squish_10AreaEnergy_7minimum_1__get__(o); -} - -static PyMethodDef __pyx_methods_7_squish_AreaEnergy[] = { - {"__reduce_cython__", (PyCFunction)__pyx_pw_7_squish_10AreaEnergy_3__reduce_cython__, METH_NOARGS, 0}, - {"__setstate_cython__", (PyCFunction)__pyx_pw_7_squish_10AreaEnergy_5__setstate_cython__, METH_O, 0}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_7_squish_AreaEnergy[] = { - {(char *)"__dict__", __pyx___dict__getter_7_squish_AreaEnergy, 0, (char *)0, 0}, - {(char *)"minimum", __pyx_getprop_7_squish_10AreaEnergy_minimum, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_7_squish_AreaEnergy = { - PyVarObject_HEAD_INIT(0, 0) - "_squish.AreaEnergy", /*tp_name*/ - sizeof(struct __pyx_obj_7_squish_AreaEnergy), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_7_squish_VoronoiContainer, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "\n\tClass for formulas relevant to the Area energy.\n\t:param n: [int] how many sites to generate.\n\t:param w: [float] width of the bounding domain.\n\t:param h: [float] height of the bounding domain.\n\t:param r: [float] radius of zero energy circle.\n\t:param sites: [np.ndarray] collection of sites.\n\t", /*tp_doc*/ - __pyx_tp_traverse_7_squish_VoronoiContainer, /*tp_traverse*/ - __pyx_tp_clear_7_squish_VoronoiContainer, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_7_squish_AreaEnergy, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_7_squish_AreaEnergy, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - offsetof(struct __pyx_obj_7_squish_AreaEnergy, __pyx_base.__dict__), /*tp_dictoffset*/ - __pyx_pw_7_squish_10AreaEnergy_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_7_squish_AreaEnergy, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif - #if PY_VERSION_HEX >= 0x030800b1 - 0, /*tp_vectorcall*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 - 0, /*tp_print*/ - #endif -}; -static struct __pyx_vtabstruct_7_squish_RadialALEnergy __pyx_vtable_7_squish_RadialALEnergy; - -static PyObject *__pyx_tp_new_7_squish_RadialALEnergy(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_7_squish_RadialALEnergy *p; - PyObject *o = __pyx_tp_new_7_squish_VoronoiContainer(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_7_squish_RadialALEnergy *)o); - p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_squish_VoronoiContainer*)__pyx_vtabptr_7_squish_RadialALEnergy; - return o; -} - -static PyObject *__pyx___dict__getter_7_squish_RadialALEnergy(PyObject *o, CYTHON_UNUSED void *x) { - struct __pyx_obj_7_squish_RadialALEnergy *p = (struct __pyx_obj_7_squish_RadialALEnergy *)o; - if (unlikely(!p->__pyx_base.__dict__)){ - p->__pyx_base.__dict__ = PyDict_New(); - } - Py_XINCREF(p->__pyx_base.__dict__); - return p->__pyx_base.__dict__; -} - -static PyMethodDef __pyx_methods_7_squish_RadialALEnergy[] = { - {"__reduce_cython__", (PyCFunction)__pyx_pw_7_squish_14RadialALEnergy_3__reduce_cython__, METH_NOARGS, 0}, - {"__setstate_cython__", (PyCFunction)__pyx_pw_7_squish_14RadialALEnergy_5__setstate_cython__, METH_O, 0}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_7_squish_RadialALEnergy[] = { - {(char *)"__dict__", __pyx___dict__getter_7_squish_RadialALEnergy, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_7_squish_RadialALEnergy = { - PyVarObject_HEAD_INIT(0, 0) - "_squish.RadialALEnergy", /*tp_name*/ - sizeof(struct __pyx_obj_7_squish_RadialALEnergy), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_7_squish_VoronoiContainer, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "\n\tClass for formulas relevant to the Area energy.\n\t:param n: [int] how many sites to generate.\n\t:param w: [float] width of the bounding domain.\n\t:param h: [float] height of the bounding domain.\n\t:param r: [float] radius of zero energy circle.\n\t:param sites: [np.ndarray] collection of sites.\n\t", /*tp_doc*/ - __pyx_tp_traverse_7_squish_VoronoiContainer, /*tp_traverse*/ - __pyx_tp_clear_7_squish_VoronoiContainer, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_7_squish_RadialALEnergy, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_7_squish_RadialALEnergy, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - offsetof(struct __pyx_obj_7_squish_RadialALEnergy, __pyx_base.__dict__), /*tp_dictoffset*/ - __pyx_pw_7_squish_14RadialALEnergy_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_7_squish_RadialALEnergy, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif - #if PY_VERSION_HEX >= 0x030800b1 - 0, /*tp_vectorcall*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 - 0, /*tp_print*/ - #endif -}; -static struct __pyx_vtabstruct_7_squish_RadialTEnergy __pyx_vtable_7_squish_RadialTEnergy; - -static PyObject *__pyx_tp_new_7_squish_RadialTEnergy(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_7_squish_RadialTEnergy *p; - PyObject *o = __pyx_tp_new_7_squish_VoronoiContainer(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_7_squish_RadialTEnergy *)o); - p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_squish_VoronoiContainer*)__pyx_vtabptr_7_squish_RadialTEnergy; - return o; -} - -static PyObject *__pyx___dict__getter_7_squish_RadialTEnergy(PyObject *o, CYTHON_UNUSED void *x) { - struct __pyx_obj_7_squish_RadialTEnergy *p = (struct __pyx_obj_7_squish_RadialTEnergy *)o; - if (unlikely(!p->__pyx_base.__dict__)){ - p->__pyx_base.__dict__ = PyDict_New(); - } - Py_XINCREF(p->__pyx_base.__dict__); - return p->__pyx_base.__dict__; -} - -static PyMethodDef __pyx_methods_7_squish_RadialTEnergy[] = { - {"__reduce_cython__", (PyCFunction)__pyx_pw_7_squish_13RadialTEnergy_3__reduce_cython__, METH_NOARGS, 0}, - {"__setstate_cython__", (PyCFunction)__pyx_pw_7_squish_13RadialTEnergy_5__setstate_cython__, METH_O, 0}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_7_squish_RadialTEnergy[] = { - {(char *)"__dict__", __pyx___dict__getter_7_squish_RadialTEnergy, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_7_squish_RadialTEnergy = { - PyVarObject_HEAD_INIT(0, 0) - "_squish.RadialTEnergy", /*tp_name*/ - sizeof(struct __pyx_obj_7_squish_RadialTEnergy), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_7_squish_VoronoiContainer, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - "\n\tClass for formulas relevant to the Area energy.\n\t:param n: [int] how many sites to generate.\n\t:param w: [float] width of the bounding domain.\n\t:param h: [float] height of the bounding domain.\n\t:param r: [float] radius of zero energy circle.\n\t:param sites: [np.ndarray] collection of sites.\n\t", /*tp_doc*/ - __pyx_tp_traverse_7_squish_VoronoiContainer, /*tp_traverse*/ - __pyx_tp_clear_7_squish_VoronoiContainer, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_7_squish_RadialTEnergy, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_7_squish_RadialTEnergy, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - offsetof(struct __pyx_obj_7_squish_RadialTEnergy, __pyx_base.__dict__), /*tp_dictoffset*/ - __pyx_pw_7_squish_13RadialTEnergy_1__init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_7_squish_RadialTEnergy, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif - #if PY_VERSION_HEX >= 0x030800b1 - 0, /*tp_vectorcall*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 - 0, /*tp_print*/ - #endif -}; -static struct __pyx_vtabstruct_7_squish_Calc __pyx_vtable_7_squish_Calc; - -static PyObject *__pyx_tp_new_7_squish_Calc(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_7_squish_Calc *p; - PyObject *o; - if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_7_squish_Calc *)o); - p->__pyx_vtab = __pyx_vtabptr_7_squish_Calc; - return o; -} - -static void __pyx_tp_dealloc_7_squish_Calc(PyObject *o) { - #if CYTHON_USE_TP_FINALIZE - if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - #endif - (*Py_TYPE(o)->tp_free)(o); -} - -static PyMethodDef __pyx_methods_7_squish_Calc[] = { - {"__reduce_cython__", (PyCFunction)__pyx_pw_7_squish_4Calc_1__reduce_cython__, METH_NOARGS, 0}, - {"__setstate_cython__", (PyCFunction)__pyx_pw_7_squish_4Calc_3__setstate_cython__, METH_O, 0}, - {0, 0, 0, 0} -}; - -static PyTypeObject __pyx_type_7_squish_Calc = { - PyVarObject_HEAD_INIT(0, 0) - "_squish.Calc", /*tp_name*/ - sizeof(struct __pyx_obj_7_squish_Calc), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_7_squish_Calc, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_7_squish_Calc, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_7_squish_Calc, /*tp_new*/ + __pyx_tp_new_6squish_7voronoi_VoronoiContainer, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ @@ -35257,7 +27678,7 @@ static PyBufferProcs __pyx_tp_as_buffer_array = { static PyTypeObject __pyx_type___pyx_array = { PyVarObject_HEAD_INIT(0, 0) - "_squish.array", /*tp_name*/ + "squish.voronoi.array", /*tp_name*/ sizeof(struct __pyx_array_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_array, /*tp_dealloc*/ @@ -35376,7 +27797,7 @@ static PyMethodDef __pyx_methods_Enum[] = { static PyTypeObject __pyx_type___pyx_MemviewEnum = { PyVarObject_HEAD_INIT(0, 0) - "_squish.Enum", /*tp_name*/ + "squish.voronoi.Enum", /*tp_name*/ sizeof(struct __pyx_MemviewEnum_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_Enum, /*tp_dealloc*/ @@ -35637,7 +28058,7 @@ static PyBufferProcs __pyx_tp_as_buffer_memoryview = { static PyTypeObject __pyx_type___pyx_memoryview = { PyVarObject_HEAD_INIT(0, 0) - "_squish.memoryview", /*tp_name*/ + "squish.voronoi.memoryview", /*tp_name*/ sizeof(struct __pyx_memoryview_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_memoryview, /*tp_dealloc*/ @@ -35775,7 +28196,7 @@ static struct PyGetSetDef __pyx_getsets__memoryviewslice[] = { static PyTypeObject __pyx_type___pyx_memoryviewslice = { PyVarObject_HEAD_INIT(0, 0) - "_squish._memoryviewslice", /*tp_name*/ + "squish.voronoi._memoryviewslice", /*tp_name*/ sizeof(struct __pyx_memoryviewslice_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc__memoryviewslice, /*tp_dealloc*/ @@ -35857,17 +28278,17 @@ static PyMethodDef __pyx_methods[] = { #if PY_MAJOR_VERSION >= 3 #if CYTHON_PEP489_MULTI_PHASE_INIT static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec__squish(PyObject* module); /*proto*/ +static int __pyx_pymod_exec_voronoi(PyObject* module); /*proto*/ static PyModuleDef_Slot __pyx_moduledef_slots[] = { {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec__squish}, + {Py_mod_exec, (void*)__pyx_pymod_exec_voronoi}, {0, NULL} }; #endif static struct PyModuleDef __pyx_moduledef = { PyModuleDef_HEAD_INIT, - "_squish", + "voronoi", 0, /* m_doc */ #if CYTHON_PEP489_MULTI_PHASE_INIT 0, /* m_size */ @@ -35897,10 +28318,7 @@ static struct PyModuleDef __pyx_moduledef = { static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_ASCII, __pyx_k_ASCII, sizeof(__pyx_k_ASCII), 0, 0, 1, 1}, - {&__pyx_n_u_Area, __pyx_k_Area, sizeof(__pyx_k_Area), 0, 1, 0, 1}, - {&__pyx_n_s_AreaEnergy, __pyx_k_AreaEnergy, sizeof(__pyx_k_AreaEnergy), 0, 0, 1, 1}, {&__pyx_kp_s_Buffer_view_does_not_expose_stri, __pyx_k_Buffer_view_does_not_expose_stri, sizeof(__pyx_k_Buffer_view_does_not_expose_stri), 0, 0, 1, 0}, - {&__pyx_n_s_Calc, __pyx_k_Calc, sizeof(__pyx_k_Calc), 0, 0, 1, 1}, {&__pyx_kp_s_Can_only_create_a_buffer_that_is, __pyx_k_Can_only_create_a_buffer_that_is, sizeof(__pyx_k_Can_only_create_a_buffer_that_is), 0, 0, 1, 0}, {&__pyx_kp_s_Cannot_assign_to_read_only_memor, __pyx_k_Cannot_assign_to_read_only_memor, sizeof(__pyx_k_Cannot_assign_to_read_only_memor), 0, 0, 1, 0}, {&__pyx_kp_s_Cannot_create_writable_memory_vi, __pyx_k_Cannot_create_writable_memory_vi, sizeof(__pyx_k_Cannot_create_writable_memory_vi), 0, 0, 1, 0}, @@ -35908,26 +28326,24 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_Ellipsis, __pyx_k_Ellipsis, sizeof(__pyx_k_Ellipsis), 0, 0, 1, 1}, {&__pyx_kp_s_Empty_shape_tuple_for_cython_arr, __pyx_k_Empty_shape_tuple_for_cython_arr, sizeof(__pyx_k_Empty_shape_tuple_for_cython_arr), 0, 0, 1, 0}, {&__pyx_n_s_FLOAT, __pyx_k_FLOAT, sizeof(__pyx_k_FLOAT), 0, 0, 1, 1}, + {&__pyx_kp_u_Get, __pyx_k_Get, sizeof(__pyx_k_Get), 0, 1, 0, 0}, {&__pyx_n_s_INT, __pyx_k_INT, sizeof(__pyx_k_INT), 0, 0, 1, 1}, {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1}, {&__pyx_kp_s_Incompatible_checksums_s_vs_0xb0, __pyx_k_Incompatible_checksums_s_vs_0xb0, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xb0), 0, 0, 1, 0}, - {&__pyx_kp_s_Incompatible_checksums_s_vs_0xd4, __pyx_k_Incompatible_checksums_s_vs_0xd4, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xd4), 0, 0, 1, 0}, {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1}, - {&__pyx_kp_u_Index_out_of_range_for_FArray_wi, __pyx_k_Index_out_of_range_for_FArray_wi, sizeof(__pyx_k_Index_out_of_range_for_FArray_wi), 0, 1, 0, 0}, - {&__pyx_kp_u_Index_out_of_range_for_IArray_wi, __pyx_k_Index_out_of_range_for_IArray_wi, sizeof(__pyx_k_Index_out_of_range_for_IArray_wi), 0, 1, 0, 0}, {&__pyx_kp_s_Indirect_dimensions_not_supporte, __pyx_k_Indirect_dimensions_not_supporte, sizeof(__pyx_k_Indirect_dimensions_not_supporte), 0, 0, 1, 0}, {&__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_k_Invalid_mode_expected_c_or_fortr, sizeof(__pyx_k_Invalid_mode_expected_c_or_fortr), 0, 0, 1, 0}, {&__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_k_Invalid_shape_in_axis_d_d, sizeof(__pyx_k_Invalid_shape_in_axis_d_d), 0, 0, 1, 0}, {&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1}, {&__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_k_MemoryView_of_r_at_0x_x, sizeof(__pyx_k_MemoryView_of_r_at_0x_x), 0, 0, 1, 0}, {&__pyx_kp_s_MemoryView_of_r_object, __pyx_k_MemoryView_of_r_object, sizeof(__pyx_k_MemoryView_of_r_object), 0, 0, 1, 0}, + {&__pyx_n_s_NAN_MATRIX, __pyx_k_NAN_MATRIX, sizeof(__pyx_k_NAN_MATRIX), 0, 0, 1, 1}, + {&__pyx_n_s_NAN_VECTOR, __pyx_k_NAN_VECTOR, sizeof(__pyx_k_NAN_VECTOR), 0, 0, 1, 1}, + {&__pyx_kp_u_New, __pyx_k_New, sizeof(__pyx_k_New), 0, 1, 0, 0}, {&__pyx_n_b_O, __pyx_k_O, sizeof(__pyx_k_O), 0, 0, 0, 1}, {&__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_k_Out_of_bounds_on_buffer_access_a, sizeof(__pyx_k_Out_of_bounds_on_buffer_access_a), 0, 0, 1, 0}, {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1}, - {&__pyx_n_s_RadialALEnergy, __pyx_k_RadialALEnergy, sizeof(__pyx_k_RadialALEnergy), 0, 0, 1, 1}, - {&__pyx_n_s_RadialTEnergy, __pyx_k_RadialTEnergy, sizeof(__pyx_k_RadialTEnergy), 0, 0, 1, 1}, - {&__pyx_kp_u_Radial_AL, __pyx_k_Radial_AL, sizeof(__pyx_k_Radial_AL), 0, 1, 0, 0}, - {&__pyx_kp_u_Radial_T, __pyx_k_Radial_T, sizeof(__pyx_k_Radial_T), 0, 1, 0, 0}, + {&__pyx_n_s_R, __pyx_k_R, sizeof(__pyx_k_R), 0, 0, 1, 1}, {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, {&__pyx_kp_s_Unable_to_convert_item_to_object, __pyx_k_Unable_to_convert_item_to_object, sizeof(__pyx_k_Unable_to_convert_item_to_object), 0, 0, 1, 0}, {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, @@ -35937,20 +28353,20 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_add_sites, __pyx_k_add_sites, sizeof(__pyx_k_add_sites), 0, 0, 1, 1}, {&__pyx_n_s_allocate_buffer, __pyx_k_allocate_buffer, sizeof(__pyx_k_allocate_buffer), 0, 0, 1, 1}, {&__pyx_n_s_arange, __pyx_k_arange, sizeof(__pyx_k_arange), 0, 0, 1, 1}, - {&__pyx_n_u_area, __pyx_k_area, sizeof(__pyx_k_area), 0, 1, 0, 1}, {&__pyx_n_s_array, __pyx_k_array, sizeof(__pyx_k_array), 0, 0, 1, 1}, {&__pyx_n_s_asarray, __pyx_k_asarray, sizeof(__pyx_k_asarray), 0, 0, 1, 1}, {&__pyx_n_s_astype, __pyx_k_astype, sizeof(__pyx_k_astype), 0, 0, 1, 1}, - {&__pyx_n_s_attr_str, __pyx_k_attr_str, sizeof(__pyx_k_attr_str), 0, 0, 1, 1}, {&__pyx_n_u_avg_radius, __pyx_k_avg_radius, sizeof(__pyx_k_avg_radius), 0, 1, 0, 1}, {&__pyx_n_s_base, __pyx_k_base, sizeof(__pyx_k_base), 0, 0, 1, 1}, {&__pyx_n_s_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 0, 1, 1}, {&__pyx_n_u_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 1, 0, 1}, + {&__pyx_n_u_centroids, __pyx_k_centroids, sizeof(__pyx_k_centroids), 0, 1, 0, 1}, {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1}, {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, {&__pyx_kp_s_contiguous_and_direct, __pyx_k_contiguous_and_direct, sizeof(__pyx_k_contiguous_and_direct), 0, 0, 1, 0}, {&__pyx_kp_s_contiguous_and_indirect, __pyx_k_contiguous_and_indirect, sizeof(__pyx_k_contiguous_and_indirect), 0, 0, 1, 0}, {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1}, + {&__pyx_n_s_default_timer, __pyx_k_default_timer, sizeof(__pyx_k_default_timer), 0, 0, 1, 1}, {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, {&__pyx_n_s_dtype, __pyx_k_dtype, sizeof(__pyx_k_dtype), 0, 0, 1, 1}, {&__pyx_n_s_dtype_is_object, __pyx_k_dtype_is_object, sizeof(__pyx_k_dtype_is_object), 0, 0, 1, 1}, @@ -35967,7 +28383,6 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1}, {&__pyx_n_s_fortran, __pyx_k_fortran, sizeof(__pyx_k_fortran), 0, 0, 1, 1}, {&__pyx_n_u_fortran, __pyx_k_fortran, sizeof(__pyx_k_fortran), 0, 1, 0, 1}, - {&__pyx_n_s_full, __pyx_k_full, sizeof(__pyx_k_full), 0, 0, 1, 1}, {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1}, {&__pyx_kp_s_got_differing_extents_in_dimensi, __pyx_k_got_differing_extents_in_dimensi, sizeof(__pyx_k_got_differing_extents_in_dimensi), 0, 0, 1, 0}, @@ -35975,7 +28390,6 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_h, __pyx_k_h, sizeof(__pyx_k_h), 0, 0, 1, 1}, {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, {&__pyx_n_s_int64, __pyx_k_int64, sizeof(__pyx_k_int64), 0, 0, 1, 1}, {&__pyx_n_s_isin, __pyx_k_isin, sizeof(__pyx_k_isin), 0, 0, 1, 1}, {&__pyx_n_u_isoparam_avg, __pyx_k_isoparam_avg, sizeof(__pyx_k_isoparam_avg), 0, 1, 0, 1}, @@ -36000,19 +28414,18 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1}, {&__pyx_n_s_point_region, __pyx_k_point_region, sizeof(__pyx_k_point_region), 0, 0, 1, 1}, {&__pyx_n_s_points, __pyx_k_points, sizeof(__pyx_k_points), 0, 0, 1, 1}, + {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1}, {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1}, + {&__pyx_n_s_pyx_capi, __pyx_k_pyx_capi, sizeof(__pyx_k_pyx_capi), 0, 0, 1, 1}, {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1}, {&__pyx_n_s_pyx_getbuffer, __pyx_k_pyx_getbuffer, sizeof(__pyx_k_pyx_getbuffer), 0, 0, 1, 1}, {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1}, {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1}, {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_unpickle_Calc, __pyx_k_pyx_unpickle_Calc, sizeof(__pyx_k_pyx_unpickle_Calc), 0, 0, 1, 1}, {&__pyx_n_s_pyx_unpickle_Enum, __pyx_k_pyx_unpickle_Enum, sizeof(__pyx_k_pyx_unpickle_Enum), 0, 0, 1, 1}, {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, {&__pyx_n_u_q, __pyx_k_q, sizeof(__pyx_k_q), 0, 1, 0, 1}, {&__pyx_n_s_r, __pyx_k_r, sizeof(__pyx_k_r), 0, 0, 1, 1}, - {&__pyx_kp_u_radial_al, __pyx_k_radial_al, sizeof(__pyx_k_radial_al), 0, 1, 0, 0}, - {&__pyx_kp_u_radial_t, __pyx_k_radial_t, sizeof(__pyx_k_radial_t), 0, 1, 0, 0}, {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1}, {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1}, @@ -36036,7 +28449,6 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_u_site_isos, __pyx_k_site_isos, sizeof(__pyx_k_site_isos), 0, 1, 0, 1}, {&__pyx_n_s_size, __pyx_k_size, sizeof(__pyx_k_size), 0, 0, 1, 1}, {&__pyx_n_s_spatial, __pyx_k_spatial, sizeof(__pyx_k_spatial), 0, 0, 1, 1}, - {&__pyx_n_s_squish, __pyx_k_squish, sizeof(__pyx_k_squish), 0, 0, 1, 1}, {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1}, {&__pyx_n_s_stats, __pyx_k_stats, sizeof(__pyx_k_stats), 0, 0, 1, 1}, {&__pyx_n_s_step, __pyx_k_step, sizeof(__pyx_k_step), 0, 0, 1, 1}, @@ -36046,9 +28458,9 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_s_strided_and_indirect, __pyx_k_strided_and_indirect, sizeof(__pyx_k_strided_and_indirect), 0, 0, 1, 0}, {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0}, {&__pyx_n_s_struct, __pyx_k_struct, sizeof(__pyx_k_struct), 0, 0, 1, 1}, - {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1}, {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_title_str, __pyx_k_title_str, sizeof(__pyx_k_title_str), 0, 0, 1, 1}, + {&__pyx_n_s_timeit, __pyx_k_timeit, sizeof(__pyx_k_timeit), 0, 0, 1, 1}, + {&__pyx_n_s_timer, __pyx_k_timer, sizeof(__pyx_k_timer), 0, 0, 1, 1}, {&__pyx_kp_s_unable_to_allocate_array_data, __pyx_k_unable_to_allocate_array_data, sizeof(__pyx_k_unable_to_allocate_array_data), 0, 0, 1, 0}, {&__pyx_kp_s_unable_to_allocate_shape_and_str, __pyx_k_unable_to_allocate_shape_and_str, sizeof(__pyx_k_unable_to_allocate_shape_and_str), 0, 0, 1, 0}, {&__pyx_n_s_unique, __pyx_k_unique, sizeof(__pyx_k_unique), 0, 0, 1, 1}, @@ -36060,16 +28472,16 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {0, 0, 0, 0, 0, 0, 0} }; static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(0, 72, __pyx_L1_error) - __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(1, 381, __pyx_L1_error) - __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(2, 2, __pyx_L1_error) - __pyx_builtin_super = __Pyx_GetBuiltinName(__pyx_n_s_super); if (!__pyx_builtin_super) __PYX_ERR(3, 19, __pyx_L1_error) - __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(5, 945, __pyx_L1_error) - __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(6, 109, __pyx_L1_error) - __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(2, 133, __pyx_L1_error) - __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(2, 151, __pyx_L1_error) - __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(2, 404, __pyx_L1_error) - __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(2, 613, __pyx_L1_error) + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 389, __pyx_L1_error) + __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 679, __pyx_L1_error) + __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error) + __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(3, 945, __pyx_L1_error) + __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(4, 109, __pyx_L1_error) + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(1, 133, __pyx_L1_error) + __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(1, 151, __pyx_L1_error) + __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(1, 404, __pyx_L1_error) + __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(1, 613, __pyx_L1_error) + __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(1, 832, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; @@ -36079,36 +28491,36 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - /* "squish/_squish/voronoi_dcel.pyx":418 - * """ - * global SYMM - * cdef np.ndarray[FLOAT_T, ndim=2] symm = np.asarray(SYMM).reshape(9,2) # <<<<<<<<<<<<<< - * cdef np.ndarray[FLOAT_T, ndim=1] dim = np.asarray(self.dim) - * cdef np.ndarray[FLOAT_T, ndim=2] full_site_arr = np.empty((self.n*9+8, 2), dtype=FLOAT) + /* "squish/voronoi.pyx":426 + * """ + * global SYMM + * cdef np.ndarray[FLOAT_T, ndim=2] symm = np.asarray(SYMM).reshape(9,2) # <<<<<<<<<<<<<< + * cdef np.ndarray[FLOAT_T, ndim=1] dim = np.asarray(self.dim) + * cdef np.ndarray[FLOAT_T, ndim=2] full_site_arr = np.empty( */ - __pyx_tuple_ = PyTuple_Pack(2, __pyx_int_9, __pyx_int_2); if (unlikely(!__pyx_tuple_)) __PYX_ERR(1, 418, __pyx_L1_error) + __pyx_tuple_ = PyTuple_Pack(2, __pyx_int_9, __pyx_int_2); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 426, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); - /* "squish/_squish/voronoi_dcel.pyx":619 - * cache = self.site_cache[:self.n, :] + /* "squish/voronoi.pyx":637 + * cache = self.site_cache[:self.n, :] * - * self.stats["site_areas"] = np.asarray(cache[:, SITE_CACHE_MAP.iarea]) # <<<<<<<<<<<<<< - * self.stats["site_edge_count"] = np.asarray(self.sites[:self.n, 2]) + * self.stats["site_areas"] = np.asarray(cache[:, SITE_CACHE_MAP.iarea]) # <<<<<<<<<<<<<< + * self.stats["site_edge_count"] = np.asarray(self.sites[:self.n, 2]) * */ - __pyx_slice__2 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__2)) __PYX_ERR(1, 619, __pyx_L1_error) + __pyx_slice__2 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__2)) __PYX_ERR(0, 637, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); - /* "squish/_squish/voronoi_dcel.pyx":631 - * edges = np.asarray(self.edges) + /* "squish/voronoi.pyx":652 + * edges = np.asarray(self.edges) * - * mask = np.nonzero(edges[:, 0] != -1)[0] # <<<<<<<<<<<<<< - * all_edges = mask[(mask % 2 == 0)] - * caches = edges[all_edges, 4] + * mask = np.nonzero(edges[:, 0] != -1)[0] # <<<<<<<<<<<<<< + * all_edges = mask[(mask % 2 == 0)] + * caches = edges[all_edges, 4] */ - __pyx_tuple__3 = PyTuple_Pack(2, __pyx_slice__2, __pyx_int_0); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(1, 631, __pyx_L1_error) + __pyx_tuple__3 = PyTuple_Pack(2, __pyx_slice__2, __pyx_int_0); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 652, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); @@ -36118,7 +28530,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * def __setstate_cython__(self, __pyx_state): * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") */ - __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_self_edge_cache_map_cannot_be_co); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(2, 2, __pyx_L1_error) + __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_self_edge_cache_map_cannot_be_co); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(1, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); @@ -36127,88 +28539,31 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * def __setstate_cython__(self, __pyx_state): * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< */ - __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_self_edge_cache_map_cannot_be_co); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(2, 4, __pyx_L1_error) + __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_self_edge_cache_map_cannot_be_co); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(1, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - */ - __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_self_edge_cache_map_cannot_be_co); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(2, 2, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__6); - __Pyx_GIVEREF(__pyx_tuple__6); - - /* "(tree fragment)":4 - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - */ - __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_self_edge_cache_map_cannot_be_co); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(2, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__7); - __Pyx_GIVEREF(__pyx_tuple__7); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - */ - __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_self_edge_cache_map_cannot_be_co); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(2, 2, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__8); - __Pyx_GIVEREF(__pyx_tuple__8); - - /* "(tree fragment)":4 - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - */ - __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_self_edge_cache_map_cannot_be_co); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(2, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__9); - __Pyx_GIVEREF(__pyx_tuple__9); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - */ - __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_self_edge_cache_map_cannot_be_co); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(2, 2, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__10); - __Pyx_GIVEREF(__pyx_tuple__10); - - /* "(tree fragment)":4 - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") - * def __setstate_cython__(self, __pyx_state): - * raise TypeError("self.edge_cache_map cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< - */ - __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_self_edge_cache_map_cannot_be_co); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(2, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__11); - __Pyx_GIVEREF(__pyx_tuple__11); - - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":945 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":945 * __pyx_import_array() * except Exception: * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_umath() except -1: */ - __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(5, 945, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__12); - __Pyx_GIVEREF(__pyx_tuple__12); + __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(3, 945, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__6); + __Pyx_GIVEREF(__pyx_tuple__6); - /* ".venv/lib/python3.8/site-packages/numpy/__init__.pxd":951 + /* "../../../../../.venv2/lib/python3.8/site-packages/numpy/__init__.pxd":951 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< * * cdef inline int import_ufunc() except -1: */ - __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(5, 951, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__13); - __Pyx_GIVEREF(__pyx_tuple__13); + __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(3, 951, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__7); + __Pyx_GIVEREF(__pyx_tuple__7); /* "View.MemoryView":133 * @@ -36217,9 +28572,9 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * * if itemsize <= 0: */ - __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(2, 133, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__14); - __Pyx_GIVEREF(__pyx_tuple__14); + __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__8); + __Pyx_GIVEREF(__pyx_tuple__8); /* "View.MemoryView":136 * @@ -36228,9 +28583,9 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * * if not isinstance(format, bytes): */ - __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(2, 136, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__15); - __Pyx_GIVEREF(__pyx_tuple__15); + __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 136, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__9); + __Pyx_GIVEREF(__pyx_tuple__9); /* "View.MemoryView":148 * @@ -36239,9 +28594,9 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * * */ - __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(2, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__16); - __Pyx_GIVEREF(__pyx_tuple__16); + __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(1, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__10); + __Pyx_GIVEREF(__pyx_tuple__10); /* "View.MemoryView":176 * self.data = malloc(self.len) @@ -36250,9 +28605,9 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * * if self.dtype_is_object: */ - __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(2, 176, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__17); - __Pyx_GIVEREF(__pyx_tuple__17); + __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__11); + __Pyx_GIVEREF(__pyx_tuple__11); /* "View.MemoryView":192 * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS @@ -36261,9 +28616,9 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * info.buf = self.data * info.len = self.len */ - __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(2, 192, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__18); - __Pyx_GIVEREF(__pyx_tuple__18); + __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 192, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__12); + __Pyx_GIVEREF(__pyx_tuple__12); /* "(tree fragment)":2 * def __reduce_cython__(self): @@ -36271,18 +28626,18 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ - __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(2, 2, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__19); - __Pyx_GIVEREF(__pyx_tuple__19); + __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__13); + __Pyx_GIVEREF(__pyx_tuple__13); /* "(tree fragment)":4 * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ - __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(2, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__20); - __Pyx_GIVEREF(__pyx_tuple__20); + __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__14); + __Pyx_GIVEREF(__pyx_tuple__14); /* "View.MemoryView":418 * def __setitem__(memoryview self, object index, object value): @@ -36291,9 +28646,9 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * * have_slices, index = _unellipsify(index, self.view.ndim) */ - __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(2, 418, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__21); - __Pyx_GIVEREF(__pyx_tuple__21); + __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 418, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__15); + __Pyx_GIVEREF(__pyx_tuple__15); /* "View.MemoryView":495 * result = struct.unpack(self.view.format, bytesitem) @@ -36302,9 +28657,9 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * else: * if len(self.view.format) == 1: */ - __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(2, 495, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__22); - __Pyx_GIVEREF(__pyx_tuple__22); + __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 495, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__16); + __Pyx_GIVEREF(__pyx_tuple__16); /* "View.MemoryView":520 * def __getbuffer__(self, Py_buffer *info, int flags): @@ -36313,9 +28668,9 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * * if flags & PyBUF_ND: */ - __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(2, 520, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__23); - __Pyx_GIVEREF(__pyx_tuple__23); + __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 520, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__17); + __Pyx_GIVEREF(__pyx_tuple__17); /* "View.MemoryView":570 * if self.view.strides == NULL: @@ -36324,9 +28679,9 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) */ - __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(2, 570, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__24); - __Pyx_GIVEREF(__pyx_tuple__24); + __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 570, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__18); + __Pyx_GIVEREF(__pyx_tuple__18); /* "View.MemoryView":577 * def suboffsets(self): @@ -36335,12 +28690,12 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) */ - __pyx_tuple__25 = PyTuple_New(1); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(2, 577, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__25); + __pyx_tuple__19 = PyTuple_New(1); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 577, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__19); __Pyx_INCREF(__pyx_int_neg_1); __Pyx_GIVEREF(__pyx_int_neg_1); - PyTuple_SET_ITEM(__pyx_tuple__25, 0, __pyx_int_neg_1); - __Pyx_GIVEREF(__pyx_tuple__25); + PyTuple_SET_ITEM(__pyx_tuple__19, 0, __pyx_int_neg_1); + __Pyx_GIVEREF(__pyx_tuple__19); /* "(tree fragment)":2 * def __reduce_cython__(self): @@ -36348,18 +28703,18 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ - __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(2, 2, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__26); - __Pyx_GIVEREF(__pyx_tuple__26); + __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__20); + __Pyx_GIVEREF(__pyx_tuple__20); /* "(tree fragment)":4 * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ - __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(2, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__27); - __Pyx_GIVEREF(__pyx_tuple__27); + __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__21); + __Pyx_GIVEREF(__pyx_tuple__21); /* "View.MemoryView":703 * for suboffset in suboffsets[:ndim]: @@ -36368,9 +28723,9 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * * */ - __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(2, 703, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__28); - __Pyx_GIVEREF(__pyx_tuple__28); + __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 703, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__22); + __Pyx_GIVEREF(__pyx_tuple__22); /* "(tree fragment)":2 * def __reduce_cython__(self): @@ -36378,28 +28733,18 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") */ - __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(2, 2, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__29); - __Pyx_GIVEREF(__pyx_tuple__29); + __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__23); + __Pyx_GIVEREF(__pyx_tuple__23); /* "(tree fragment)":4 * raise TypeError("no default __reduce__ due to non-trivial __cinit__") * def __setstate_cython__(self, __pyx_state): * raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<< */ - __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(2, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__30); - __Pyx_GIVEREF(__pyx_tuple__30); - - /* "(tree fragment)":1 - * def __pyx_unpickle_Calc(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError - * cdef object __pyx_result - */ - __pyx_tuple__31 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(2, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__31); - __Pyx_GIVEREF(__pyx_tuple__31); - __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Calc, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(2, 1, __pyx_L1_error) + __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__24); + __Pyx_GIVEREF(__pyx_tuple__24); /* "View.MemoryView":286 * return self.name @@ -36408,9 +28753,9 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * cdef strided = Enum("") # default * cdef indirect = Enum("") */ - __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(2, 286, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__33); - __Pyx_GIVEREF(__pyx_tuple__33); + __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 286, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__25); + __Pyx_GIVEREF(__pyx_tuple__25); /* "View.MemoryView":287 * @@ -36419,9 +28764,9 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * cdef indirect = Enum("") * */ - __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(2, 287, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__34); - __Pyx_GIVEREF(__pyx_tuple__34); + __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(1, 287, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__26); + __Pyx_GIVEREF(__pyx_tuple__26); /* "View.MemoryView":288 * cdef generic = Enum("") @@ -36430,9 +28775,9 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * * */ - __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(2, 288, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__35); - __Pyx_GIVEREF(__pyx_tuple__35); + __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(1, 288, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__27); + __Pyx_GIVEREF(__pyx_tuple__27); /* "View.MemoryView":291 * @@ -36441,9 +28786,9 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * cdef indirect_contiguous = Enum("") * */ - __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(2, 291, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__36); - __Pyx_GIVEREF(__pyx_tuple__36); + __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 291, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__28); + __Pyx_GIVEREF(__pyx_tuple__28); /* "View.MemoryView":292 * @@ -36452,19 +28797,19 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { * * */ - __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(2, 292, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__37); - __Pyx_GIVEREF(__pyx_tuple__37); + __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(1, 292, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__29); + __Pyx_GIVEREF(__pyx_tuple__29); /* "(tree fragment)":1 * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< * cdef object __pyx_PickleError * cdef object __pyx_result */ - __pyx_tuple__38 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(2, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__38); - __Pyx_GIVEREF(__pyx_tuple__38); - __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(2, 1, __pyx_L1_error) + __pyx_tuple__30 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__30); + __Pyx_GIVEREF(__pyx_tuple__30); + __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(1, 1, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; @@ -36478,20 +28823,20 @@ static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { PyEval_InitThreads(); #endif -if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 1, __pyx_L1_error) +if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_umethod_PyDict_Type_get.type = (PyObject*)&PyDict_Type; - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(7, 1, __pyx_L1_error); - __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(7, 1, __pyx_L1_error) - __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(7, 1, __pyx_L1_error) - __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(7, 1, __pyx_L1_error) - __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(7, 1, __pyx_L1_error) - __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) __PYX_ERR(7, 1, __pyx_L1_error) - __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) __PYX_ERR(7, 1, __pyx_L1_error) - __pyx_int_9 = PyInt_FromLong(9); if (unlikely(!__pyx_int_9)) __PYX_ERR(7, 1, __pyx_L1_error) - __pyx_int_184977713 = PyInt_FromLong(184977713L); if (unlikely(!__pyx_int_184977713)) __PYX_ERR(7, 1, __pyx_L1_error) - __pyx_int_222419149 = PyInt_FromLong(222419149L); if (unlikely(!__pyx_int_222419149)) __PYX_ERR(7, 1, __pyx_L1_error) - __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(7, 1, __pyx_L1_error) + if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_7 = PyInt_FromLong(7); if (unlikely(!__pyx_int_7)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_9 = PyInt_FromLong(9); if (unlikely(!__pyx_int_9)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_184977713 = PyInt_FromLong(184977713L); if (unlikely(!__pyx_int_184977713)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; @@ -36520,18 +28865,38 @@ static int __Pyx_modinit_global_init_code(void) { static int __Pyx_modinit_variable_export_code(void) { __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); /*--- Variable export code ---*/ + if (__Pyx_ExportVoidPtr(__pyx_n_s_NAN_VECTOR, (void *)&__pyx_v_6squish_7voronoi_NAN_VECTOR, "__pyx_t_6squish_4core_Vector2D") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportVoidPtr(__pyx_n_s_R, (void *)&__pyx_v_6squish_7voronoi_R, "__pyx_t_6squish_4core_Matrix2x2") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportVoidPtr(__pyx_n_s_NAN_MATRIX, (void *)&__pyx_v_6squish_7voronoi_NAN_MATRIX, "__pyx_t_6squish_4core_Matrix2x2") < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; } static int __Pyx_modinit_function_export_code(void) { __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); /*--- Function export code ---*/ + if (__Pyx_ExportFunction("_SiteCacheMap", (void (*)(void))__pyx_f_6squish_7voronoi__SiteCacheMap, "__pyx_t_6squish_7voronoi_SiteCacheMap (__pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("_EdgeCacheMap", (void (*)(void))__pyx_f_6squish_7voronoi__EdgeCacheMap, "__pyx_t_6squish_7voronoi_EdgeCacheMap (__pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T, __pyx_t_6squish_4core_INT_T)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("_VoronoiInfo", (void (*)(void))__pyx_f_6squish_7voronoi__VoronoiInfo, "__pyx_t_6squish_7voronoi_VoronoiInfo (__Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __pyx_t_6squish_7voronoi_EdgeCacheMap *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("_Site", (void (*)(void))__pyx_f_6squish_7voronoi__Site, "__pyx_t_6squish_7voronoi_Site (__pyx_t_6squish_4core_INT_T, __pyx_t_6squish_7voronoi_VoronoiInfo *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("_HalfEdge", (void (*)(void))__pyx_f_6squish_7voronoi__HalfEdge, "__pyx_t_6squish_7voronoi_HalfEdge (__pyx_t_6squish_4core_INT_T, __pyx_t_6squish_7voronoi_VoronoiInfo *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; } static int __Pyx_modinit_type_init_code(void) { @@ -36541,94 +28906,40 @@ static int __Pyx_modinit_type_init_code(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); /*--- Type init code ---*/ - __pyx_vtabptr_7_squish_VoronoiContainer = &__pyx_vtable_7_squish_VoronoiContainer; - __pyx_vtable_7_squish_VoronoiContainer.calculate_voronoi = (void (*)(struct __pyx_obj_7_squish_VoronoiContainer *, PyArrayObject *))__pyx_f_7_squish_16VoronoiContainer_calculate_voronoi; - __pyx_vtable_7_squish_VoronoiContainer.generate_dcel = (void (*)(struct __pyx_obj_7_squish_VoronoiContainer *))__pyx_f_7_squish_16VoronoiContainer_generate_dcel; - __pyx_vtable_7_squish_VoronoiContainer.common_cache = (void (*)(struct __pyx_obj_7_squish_VoronoiContainer *))__pyx_f_7_squish_16VoronoiContainer_common_cache; - __pyx_vtable_7_squish_VoronoiContainer.precompute = (void (*)(struct __pyx_obj_7_squish_VoronoiContainer *))__pyx_f_7_squish_16VoronoiContainer_precompute; - __pyx_vtable_7_squish_VoronoiContainer.calc_grad = (void (*)(struct __pyx_obj_7_squish_VoronoiContainer *))__pyx_f_7_squish_16VoronoiContainer_calc_grad; - __pyx_vtable_7_squish_VoronoiContainer.get_statistics = (void (*)(struct __pyx_obj_7_squish_VoronoiContainer *))__pyx_f_7_squish_16VoronoiContainer_get_statistics; - __pyx_vtable_7_squish_VoronoiContainer.calc_H = (__pyx_t_7_squish_Matrix2x2 (*)(__pyx_t_7_squish_HalfEdge, __pyx_t_7_squish_HalfEdge))__pyx_f_7_squish_16VoronoiContainer_calc_H; - __pyx_vtable_7_squish_VoronoiContainer.sign = (int (*)(__Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice))__pyx_f_7_squish_16VoronoiContainer_sign; - if (PyType_Ready(&__pyx_type_7_squish_VoronoiContainer) < 0) __PYX_ERR(1, 388, __pyx_L1_error) + __pyx_vtabptr_6squish_7voronoi_VoronoiContainer = &__pyx_vtable_6squish_7voronoi_VoronoiContainer; + __pyx_vtable_6squish_7voronoi_VoronoiContainer.calculate_voronoi = (void (*)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *, PyArrayObject *))__pyx_f_6squish_7voronoi_16VoronoiContainer_calculate_voronoi; + __pyx_vtable_6squish_7voronoi_VoronoiContainer.generate_dcel = (void (*)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *))__pyx_f_6squish_7voronoi_16VoronoiContainer_generate_dcel; + __pyx_vtable_6squish_7voronoi_VoronoiContainer.common_cache = (void (*)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *))__pyx_f_6squish_7voronoi_16VoronoiContainer_common_cache; + __pyx_vtable_6squish_7voronoi_VoronoiContainer.precompute = (void (*)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *))__pyx_f_6squish_7voronoi_16VoronoiContainer_precompute; + __pyx_vtable_6squish_7voronoi_VoronoiContainer.calc_grad = (void (*)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *))__pyx_f_6squish_7voronoi_16VoronoiContainer_calc_grad; + __pyx_vtable_6squish_7voronoi_VoronoiContainer.get_statistics = (void (*)(struct __pyx_obj_6squish_7voronoi_VoronoiContainer *))__pyx_f_6squish_7voronoi_16VoronoiContainer_get_statistics; + __pyx_vtable_6squish_7voronoi_VoronoiContainer.calc_H = (__pyx_t_6squish_4core_Matrix2x2 (*)(__pyx_t_6squish_7voronoi_HalfEdge, __pyx_t_6squish_7voronoi_HalfEdge))__pyx_f_6squish_7voronoi_16VoronoiContainer_calc_H; + __pyx_vtable_6squish_7voronoi_VoronoiContainer.sign = (int (*)(__Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice))__pyx_f_6squish_7voronoi_16VoronoiContainer_sign; + if (PyType_Ready(&__pyx_type_6squish_7voronoi_VoronoiContainer) < 0) __PYX_ERR(0, 396, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 - __pyx_type_7_squish_VoronoiContainer.tp_print = 0; + __pyx_type_6squish_7voronoi_VoronoiContainer.tp_print = 0; #endif - if (__Pyx_SetVtable(__pyx_type_7_squish_VoronoiContainer.tp_dict, __pyx_vtabptr_7_squish_VoronoiContainer) < 0) __PYX_ERR(1, 388, __pyx_L1_error) - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_VoronoiContainer, (PyObject *)&__pyx_type_7_squish_VoronoiContainer) < 0) __PYX_ERR(1, 388, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject*)&__pyx_type_7_squish_VoronoiContainer) < 0) __PYX_ERR(1, 388, __pyx_L1_error) - __pyx_ptype_7_squish_VoronoiContainer = &__pyx_type_7_squish_VoronoiContainer; - __pyx_vtabptr_7_squish_AreaEnergy = &__pyx_vtable_7_squish_AreaEnergy; - __pyx_vtable_7_squish_AreaEnergy.__pyx_base = *__pyx_vtabptr_7_squish_VoronoiContainer; - __pyx_vtable_7_squish_AreaEnergy.__pyx_base.precompute = (void (*)(struct __pyx_obj_7_squish_VoronoiContainer *))__pyx_f_7_squish_10AreaEnergy_precompute; - __pyx_vtable_7_squish_AreaEnergy.__pyx_base.calc_grad = (void (*)(struct __pyx_obj_7_squish_VoronoiContainer *))__pyx_f_7_squish_10AreaEnergy_calc_grad; - __pyx_type_7_squish_AreaEnergy.tp_base = __pyx_ptype_7_squish_VoronoiContainer; - if (PyType_Ready(&__pyx_type_7_squish_AreaEnergy) < 0) __PYX_ERR(3, 1, __pyx_L1_error) - #if PY_VERSION_HEX < 0x030800B1 - __pyx_type_7_squish_AreaEnergy.tp_print = 0; - #endif - if (__Pyx_SetVtable(__pyx_type_7_squish_AreaEnergy.tp_dict, __pyx_vtabptr_7_squish_AreaEnergy) < 0) __PYX_ERR(3, 1, __pyx_L1_error) - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AreaEnergy, (PyObject *)&__pyx_type_7_squish_AreaEnergy) < 0) __PYX_ERR(3, 1, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject*)&__pyx_type_7_squish_AreaEnergy) < 0) __PYX_ERR(3, 1, __pyx_L1_error) - __pyx_ptype_7_squish_AreaEnergy = &__pyx_type_7_squish_AreaEnergy; - __pyx_vtabptr_7_squish_RadialALEnergy = &__pyx_vtable_7_squish_RadialALEnergy; - __pyx_vtable_7_squish_RadialALEnergy.__pyx_base = *__pyx_vtabptr_7_squish_VoronoiContainer; - __pyx_vtable_7_squish_RadialALEnergy.__pyx_base.precompute = (void (*)(struct __pyx_obj_7_squish_VoronoiContainer *))__pyx_f_7_squish_14RadialALEnergy_precompute; - __pyx_vtable_7_squish_RadialALEnergy.__pyx_base.calc_grad = (void (*)(struct __pyx_obj_7_squish_VoronoiContainer *))__pyx_f_7_squish_14RadialALEnergy_calc_grad; - __pyx_type_7_squish_RadialALEnergy.tp_base = __pyx_ptype_7_squish_VoronoiContainer; - if (PyType_Ready(&__pyx_type_7_squish_RadialALEnergy) < 0) __PYX_ERR(3, 95, __pyx_L1_error) - #if PY_VERSION_HEX < 0x030800B1 - __pyx_type_7_squish_RadialALEnergy.tp_print = 0; - #endif - if (__Pyx_SetVtable(__pyx_type_7_squish_RadialALEnergy.tp_dict, __pyx_vtabptr_7_squish_RadialALEnergy) < 0) __PYX_ERR(3, 95, __pyx_L1_error) - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RadialALEnergy, (PyObject *)&__pyx_type_7_squish_RadialALEnergy) < 0) __PYX_ERR(3, 95, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject*)&__pyx_type_7_squish_RadialALEnergy) < 0) __PYX_ERR(3, 95, __pyx_L1_error) - __pyx_ptype_7_squish_RadialALEnergy = &__pyx_type_7_squish_RadialALEnergy; - __pyx_vtabptr_7_squish_RadialTEnergy = &__pyx_vtable_7_squish_RadialTEnergy; - __pyx_vtable_7_squish_RadialTEnergy.__pyx_base = *__pyx_vtabptr_7_squish_VoronoiContainer; - __pyx_vtable_7_squish_RadialTEnergy.__pyx_base.precompute = (void (*)(struct __pyx_obj_7_squish_VoronoiContainer *))__pyx_f_7_squish_13RadialTEnergy_precompute; - __pyx_vtable_7_squish_RadialTEnergy.__pyx_base.calc_grad = (void (*)(struct __pyx_obj_7_squish_VoronoiContainer *))__pyx_f_7_squish_13RadialTEnergy_calc_grad; - __pyx_type_7_squish_RadialTEnergy.tp_base = __pyx_ptype_7_squish_VoronoiContainer; - if (PyType_Ready(&__pyx_type_7_squish_RadialTEnergy) < 0) __PYX_ERR(3, 131, __pyx_L1_error) - #if PY_VERSION_HEX < 0x030800B1 - __pyx_type_7_squish_RadialTEnergy.tp_print = 0; - #endif - if (__Pyx_SetVtable(__pyx_type_7_squish_RadialTEnergy.tp_dict, __pyx_vtabptr_7_squish_RadialTEnergy) < 0) __PYX_ERR(3, 131, __pyx_L1_error) - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RadialTEnergy, (PyObject *)&__pyx_type_7_squish_RadialTEnergy) < 0) __PYX_ERR(3, 131, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject*)&__pyx_type_7_squish_RadialTEnergy) < 0) __PYX_ERR(3, 131, __pyx_L1_error) - __pyx_ptype_7_squish_RadialTEnergy = &__pyx_type_7_squish_RadialTEnergy; - __pyx_vtabptr_7_squish_Calc = &__pyx_vtable_7_squish_Calc; - __pyx_vtable_7_squish_Calc.phi = (__pyx_t_7_squish_FLOAT_T (*)(__pyx_t_7_squish_HalfEdge))__pyx_f_7_squish_4Calc_phi; - __pyx_vtable_7_squish_Calc.I2 = (__pyx_t_7_squish_Vector2D (*)(__pyx_t_7_squish_HalfEdge, __pyx_t_7_squish_FLOAT_T, __pyx_t_7_squish_FLOAT_T))__pyx_f_7_squish_4Calc_I2; - __pyx_vtable_7_squish_Calc.radialt_edge_grad = (__pyx_t_7_squish_Vector2D (*)(__pyx_t_7_squish_HalfEdge, __pyx_t_7_squish_Site, __pyx_t_7_squish_FLOAT_T))__pyx_f_7_squish_4Calc_radialt_edge_grad; - if (PyType_Ready(&__pyx_type_7_squish_Calc) < 0) __PYX_ERR(3, 263, __pyx_L1_error) - #if PY_VERSION_HEX < 0x030800B1 - __pyx_type_7_squish_Calc.tp_print = 0; - #endif - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_7_squish_Calc.tp_dictoffset && __pyx_type_7_squish_Calc.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_7_squish_Calc.tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - if (__Pyx_SetVtable(__pyx_type_7_squish_Calc.tp_dict, __pyx_vtabptr_7_squish_Calc) < 0) __PYX_ERR(3, 263, __pyx_L1_error) - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Calc, (PyObject *)&__pyx_type_7_squish_Calc) < 0) __PYX_ERR(3, 263, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject*)&__pyx_type_7_squish_Calc) < 0) __PYX_ERR(3, 263, __pyx_L1_error) - __pyx_ptype_7_squish_Calc = &__pyx_type_7_squish_Calc; + if (__Pyx_SetVtable(__pyx_type_6squish_7voronoi_VoronoiContainer.tp_dict, __pyx_vtabptr_6squish_7voronoi_VoronoiContainer) < 0) __PYX_ERR(0, 396, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_VoronoiContainer, (PyObject *)&__pyx_type_6squish_7voronoi_VoronoiContainer) < 0) __PYX_ERR(0, 396, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6squish_7voronoi_VoronoiContainer) < 0) __PYX_ERR(0, 396, __pyx_L1_error) + __pyx_ptype_6squish_7voronoi_VoronoiContainer = &__pyx_type_6squish_7voronoi_VoronoiContainer; __pyx_vtabptr_array = &__pyx_vtable_array; __pyx_vtable_array.get_memview = (PyObject *(*)(struct __pyx_array_obj *))__pyx_array_get_memview; - if (PyType_Ready(&__pyx_type___pyx_array) < 0) __PYX_ERR(2, 105, __pyx_L1_error) + if (PyType_Ready(&__pyx_type___pyx_array) < 0) __PYX_ERR(1, 105, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type___pyx_array.tp_print = 0; #endif - if (__Pyx_SetVtable(__pyx_type___pyx_array.tp_dict, __pyx_vtabptr_array) < 0) __PYX_ERR(2, 105, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_array) < 0) __PYX_ERR(2, 105, __pyx_L1_error) + if (__Pyx_SetVtable(__pyx_type___pyx_array.tp_dict, __pyx_vtabptr_array) < 0) __PYX_ERR(1, 105, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_array) < 0) __PYX_ERR(1, 105, __pyx_L1_error) __pyx_array_type = &__pyx_type___pyx_array; - if (PyType_Ready(&__pyx_type___pyx_MemviewEnum) < 0) __PYX_ERR(2, 279, __pyx_L1_error) + if (PyType_Ready(&__pyx_type___pyx_MemviewEnum) < 0) __PYX_ERR(1, 279, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type___pyx_MemviewEnum.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type___pyx_MemviewEnum.tp_dictoffset && __pyx_type___pyx_MemviewEnum.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type___pyx_MemviewEnum.tp_getattro = __Pyx_PyObject_GenericGetAttr; } - if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_MemviewEnum) < 0) __PYX_ERR(2, 279, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_MemviewEnum) < 0) __PYX_ERR(1, 279, __pyx_L1_error) __pyx_MemviewEnum_type = &__pyx_type___pyx_MemviewEnum; __pyx_vtabptr_memoryview = &__pyx_vtable_memoryview; __pyx_vtable_memoryview.get_item_pointer = (char *(*)(struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_get_item_pointer; @@ -36638,30 +28949,30 @@ static int __Pyx_modinit_type_init_code(void) { __pyx_vtable_memoryview.setitem_indexed = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *, PyObject *))__pyx_memoryview_setitem_indexed; __pyx_vtable_memoryview.convert_item_to_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *))__pyx_memoryview_convert_item_to_object; __pyx_vtable_memoryview.assign_item_from_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *, PyObject *))__pyx_memoryview_assign_item_from_object; - if (PyType_Ready(&__pyx_type___pyx_memoryview) < 0) __PYX_ERR(2, 330, __pyx_L1_error) + if (PyType_Ready(&__pyx_type___pyx_memoryview) < 0) __PYX_ERR(1, 330, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type___pyx_memoryview.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type___pyx_memoryview.tp_dictoffset && __pyx_type___pyx_memoryview.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type___pyx_memoryview.tp_getattro = __Pyx_PyObject_GenericGetAttr; } - if (__Pyx_SetVtable(__pyx_type___pyx_memoryview.tp_dict, __pyx_vtabptr_memoryview) < 0) __PYX_ERR(2, 330, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_memoryview) < 0) __PYX_ERR(2, 330, __pyx_L1_error) + if (__Pyx_SetVtable(__pyx_type___pyx_memoryview.tp_dict, __pyx_vtabptr_memoryview) < 0) __PYX_ERR(1, 330, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_memoryview) < 0) __PYX_ERR(1, 330, __pyx_L1_error) __pyx_memoryview_type = &__pyx_type___pyx_memoryview; __pyx_vtabptr__memoryviewslice = &__pyx_vtable__memoryviewslice; __pyx_vtable__memoryviewslice.__pyx_base = *__pyx_vtabptr_memoryview; __pyx_vtable__memoryviewslice.__pyx_base.convert_item_to_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *))__pyx_memoryviewslice_convert_item_to_object; __pyx_vtable__memoryviewslice.__pyx_base.assign_item_from_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *, PyObject *))__pyx_memoryviewslice_assign_item_from_object; __pyx_type___pyx_memoryviewslice.tp_base = __pyx_memoryview_type; - if (PyType_Ready(&__pyx_type___pyx_memoryviewslice) < 0) __PYX_ERR(2, 965, __pyx_L1_error) + if (PyType_Ready(&__pyx_type___pyx_memoryviewslice) < 0) __PYX_ERR(1, 965, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type___pyx_memoryviewslice.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type___pyx_memoryviewslice.tp_dictoffset && __pyx_type___pyx_memoryviewslice.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type___pyx_memoryviewslice.tp_getattro = __Pyx_PyObject_GenericGetAttr; } - if (__Pyx_SetVtable(__pyx_type___pyx_memoryviewslice.tp_dict, __pyx_vtabptr__memoryviewslice) < 0) __PYX_ERR(2, 965, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_memoryviewslice) < 0) __PYX_ERR(2, 965, __pyx_L1_error) + if (__Pyx_SetVtable(__pyx_type___pyx_memoryviewslice.tp_dict, __pyx_vtabptr__memoryviewslice) < 0) __PYX_ERR(1, 965, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_memoryviewslice) < 0) __PYX_ERR(1, 965, __pyx_L1_error) __pyx_memoryviewslice_type = &__pyx_type___pyx_memoryviewslice; __Pyx_RefNannyFinishContext(); return 0; @@ -36678,7 +28989,7 @@ static int __Pyx_modinit_type_import_code(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); /*--- Type import code ---*/ - __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 9, __pyx_L1_error) + __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 @@ -36687,55 +28998,55 @@ static int __Pyx_modinit_type_import_code(void) { sizeof(PyHeapTypeObject), #endif __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(8, 9, __pyx_L1_error) + if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(5, 9, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 8, __pyx_L1_error) + __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_ptype_7cpython_4bool_bool = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "bool", sizeof(PyBoolObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_7cpython_4bool_bool) __PYX_ERR(9, 8, __pyx_L1_error) + if (!__pyx_ptype_7cpython_4bool_bool) __PYX_ERR(6, 8, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 15, __pyx_L1_error) + __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_ptype_7cpython_7complex_complex = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "complex", sizeof(PyComplexObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_7cpython_7complex_complex) __PYX_ERR(10, 15, __pyx_L1_error) + if (!__pyx_ptype_7cpython_7complex_complex) __PYX_ERR(7, 15, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 200, __pyx_L1_error) + __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_ptype_5numpy_dtype = __Pyx_ImportType(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(5, 200, __pyx_L1_error) + if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(3, 200, __pyx_L1_error) __pyx_ptype_5numpy_flatiter = __Pyx_ImportType(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(5, 223, __pyx_L1_error) + if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(3, 223, __pyx_L1_error) __pyx_ptype_5numpy_broadcast = __Pyx_ImportType(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(5, 227, __pyx_L1_error) + if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(3, 227, __pyx_L1_error) __pyx_ptype_5numpy_ndarray = __Pyx_ImportType(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(5, 239, __pyx_L1_error) + if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(3, 239, __pyx_L1_error) __pyx_ptype_5numpy_generic = __Pyx_ImportType(__pyx_t_1, "numpy", "generic", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_generic) __PYX_ERR(5, 771, __pyx_L1_error) + if (!__pyx_ptype_5numpy_generic) __PYX_ERR(3, 771, __pyx_L1_error) __pyx_ptype_5numpy_number = __Pyx_ImportType(__pyx_t_1, "numpy", "number", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_number) __PYX_ERR(5, 773, __pyx_L1_error) + if (!__pyx_ptype_5numpy_number) __PYX_ERR(3, 773, __pyx_L1_error) __pyx_ptype_5numpy_integer = __Pyx_ImportType(__pyx_t_1, "numpy", "integer", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_integer) __PYX_ERR(5, 775, __pyx_L1_error) + if (!__pyx_ptype_5numpy_integer) __PYX_ERR(3, 775, __pyx_L1_error) __pyx_ptype_5numpy_signedinteger = __Pyx_ImportType(__pyx_t_1, "numpy", "signedinteger", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_signedinteger) __PYX_ERR(5, 777, __pyx_L1_error) + if (!__pyx_ptype_5numpy_signedinteger) __PYX_ERR(3, 777, __pyx_L1_error) __pyx_ptype_5numpy_unsignedinteger = __Pyx_ImportType(__pyx_t_1, "numpy", "unsignedinteger", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_unsignedinteger) __PYX_ERR(5, 779, __pyx_L1_error) + if (!__pyx_ptype_5numpy_unsignedinteger) __PYX_ERR(3, 779, __pyx_L1_error) __pyx_ptype_5numpy_inexact = __Pyx_ImportType(__pyx_t_1, "numpy", "inexact", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_inexact) __PYX_ERR(5, 781, __pyx_L1_error) + if (!__pyx_ptype_5numpy_inexact) __PYX_ERR(3, 781, __pyx_L1_error) __pyx_ptype_5numpy_floating = __Pyx_ImportType(__pyx_t_1, "numpy", "floating", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_floating) __PYX_ERR(5, 783, __pyx_L1_error) + if (!__pyx_ptype_5numpy_floating) __PYX_ERR(3, 783, __pyx_L1_error) __pyx_ptype_5numpy_complexfloating = __Pyx_ImportType(__pyx_t_1, "numpy", "complexfloating", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_complexfloating) __PYX_ERR(5, 785, __pyx_L1_error) + if (!__pyx_ptype_5numpy_complexfloating) __PYX_ERR(3, 785, __pyx_L1_error) __pyx_ptype_5numpy_flexible = __Pyx_ImportType(__pyx_t_1, "numpy", "flexible", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_flexible) __PYX_ERR(5, 787, __pyx_L1_error) + if (!__pyx_ptype_5numpy_flexible) __PYX_ERR(3, 787, __pyx_L1_error) __pyx_ptype_5numpy_character = __Pyx_ImportType(__pyx_t_1, "numpy", "character", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_character) __PYX_ERR(5, 789, __pyx_L1_error) + if (!__pyx_ptype_5numpy_character) __PYX_ERR(3, 789, __pyx_L1_error) __pyx_ptype_5numpy_ufunc = __Pyx_ImportType(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(5, 827, __pyx_L1_error) + if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(3, 827, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyImport_ImportModule("array"); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 58, __pyx_L1_error) + __pyx_t_1 = PyImport_ImportModule("array"); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 58, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_ptype_7cpython_5array_array = __Pyx_ImportType(__pyx_t_1, "array", "array", sizeof(arrayobject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_7cpython_5array_array) __PYX_ERR(6, 58, __pyx_L1_error) + if (!__pyx_ptype_7cpython_5array_array) __PYX_ERR(4, 58, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_RefNannyFinishContext(); return 0; @@ -36755,10 +29066,25 @@ static int __Pyx_modinit_variable_import_code(void) { static int __Pyx_modinit_function_import_code(void) { __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); /*--- Function import code ---*/ + __pyx_t_1 = PyImport_ImportModule("squish.core"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_ImportFunction(__pyx_t_1, "_IArray", (void (**)(void))&__pyx_f_6squish_4core__IArray, "struct __pyx_t_6squish_4core_IArray (__pyx_t_6squish_4core_INT_T *, __pyx_t_6squish_4core_Pair)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ImportFunction(__pyx_t_1, "_FArray", (void (**)(void))&__pyx_f_6squish_4core__FArray, "__pyx_t_6squish_4core_FArray (__pyx_t_6squish_4core_FLOAT_T *, __pyx_t_6squish_4core_Pair)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ImportFunction(__pyx_t_1, "_Vector2D", (void (**)(void))&__pyx_f_6squish_4core__Vector2D, "__pyx_t_6squish_4core_Vector2D (__pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ImportFunction(__pyx_t_1, "_Matrix2x2", (void (**)(void))&__pyx_f_6squish_4core__Matrix2x2, "__pyx_t_6squish_4core_Matrix2x2 (__pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T, __pyx_t_6squish_4core_FLOAT_T)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_RefNannyFinishContext(); return 0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_RefNannyFinishContext(); + return -1; } @@ -36780,11 +29106,11 @@ static int __Pyx_modinit_function_import_code(void) { #if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC init_squish(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC init_squish(void) +__Pyx_PyMODINIT_FUNC initvoronoi(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC initvoronoi(void) #else -__Pyx_PyMODINIT_FUNC PyInit__squish(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit__squish(void) +__Pyx_PyMODINIT_FUNC PyInit_voronoi(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_voronoi(void) #if CYTHON_PEP489_MULTI_PHASE_INIT { return PyModuleDef_Init(&__pyx_moduledef); @@ -36851,60 +29177,14 @@ bad: } -static CYTHON_SMALL_CODE int __pyx_pymod_exec__squish(PyObject *__pyx_pyinit_module) +static CYTHON_SMALL_CODE int __pyx_pymod_exec_voronoi(PyObject *__pyx_pyinit_module) #endif #endif { PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; - struct __pyx_t_7_squish_IArray (*__pyx_t_3)(__pyx_t_7_squish_INT_T *, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T); - __pyx_t_7_squish_FArray (*__pyx_t_4)(__pyx_t_7_squish_FLOAT_T *, __pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T); - __pyx_t_7_squish_BitSet (*__pyx_t_5)(__pyx_t_7_squish_INT_T); - __pyx_t_7_squish_Vector2D (*__pyx_t_6)(__pyx_t_7_squish_FLOAT_T, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_Matrix2x2 (*__pyx_t_7)(__pyx_t_7_squish_FLOAT_T, __pyx_t_7_squish_FLOAT_T, __pyx_t_7_squish_FLOAT_T, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_Vector2D *(*__pyx_t_8)(__pyx_t_7_squish_Vector2D *); - __pyx_t_7_squish_Vector2D *(*__pyx_t_9)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_Vector2D *(*__pyx_t_10)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_Vector2D *(*__pyx_t_11)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_Vector2D *(*__pyx_t_12)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_Vector2D *(*__pyx_t_13)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_Vector2D *(*__pyx_t_14)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_Vector2D *(*__pyx_t_15)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_Vector2D *(*__pyx_t_16)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_Vector2D (*__pyx_t_17)(__pyx_t_7_squish_Vector2D *); - __pyx_t_7_squish_Vector2D (*__pyx_t_18)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_Vector2D (*__pyx_t_19)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_Vector2D (*__pyx_t_20)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_Vector2D (*__pyx_t_21)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_Vector2D); - __pyx_t_7_squish_Vector2D (*__pyx_t_22)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_Vector2D (*__pyx_t_23)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_Vector2D (*__pyx_t_24)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_Vector2D (*__pyx_t_25)(__pyx_t_7_squish_Vector2D *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_Matrix2x2 *(*__pyx_t_26)(__pyx_t_7_squish_Matrix2x2 *); - __pyx_t_7_squish_Matrix2x2 *(*__pyx_t_27)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); - __pyx_t_7_squish_Matrix2x2 *(*__pyx_t_28)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); - __pyx_t_7_squish_Matrix2x2 *(*__pyx_t_29)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); - __pyx_t_7_squish_Matrix2x2 *(*__pyx_t_30)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); - __pyx_t_7_squish_Matrix2x2 *(*__pyx_t_31)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_Matrix2x2 *(*__pyx_t_32)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_Matrix2x2 *(*__pyx_t_33)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_Matrix2x2 *(*__pyx_t_34)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_Matrix2x2 (*__pyx_t_35)(__pyx_t_7_squish_Matrix2x2 *); - __pyx_t_7_squish_Matrix2x2 (*__pyx_t_36)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); - __pyx_t_7_squish_Matrix2x2 (*__pyx_t_37)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); - __pyx_t_7_squish_Matrix2x2 (*__pyx_t_38)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); - __pyx_t_7_squish_Matrix2x2 (*__pyx_t_39)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_Matrix2x2); - __pyx_t_7_squish_Matrix2x2 (*__pyx_t_40)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_Matrix2x2 (*__pyx_t_41)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_Matrix2x2 (*__pyx_t_42)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_FLOAT_T); - __pyx_t_7_squish_Matrix2x2 (*__pyx_t_43)(__pyx_t_7_squish_Matrix2x2 *, __pyx_t_7_squish_FLOAT_T); - static __pyx_t_7_squish_FLOAT_T __pyx_t_44[18]; - __pyx_t_7_squish_SiteCacheMap (*__pyx_t_45)(__pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T); - __pyx_t_7_squish_EdgeCacheMap (*__pyx_t_46)(__pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T, __pyx_t_7_squish_INT_T); - __pyx_t_7_squish_VoronoiInfo (*__pyx_t_47)(__Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __pyx_t_7_squish_EdgeCacheMap *); - __pyx_t_7_squish_Site (*__pyx_t_48)(__pyx_t_7_squish_INT_T, __pyx_t_7_squish_VoronoiInfo *); - __pyx_t_7_squish_HalfEdge (*__pyx_t_49)(__pyx_t_7_squish_INT_T, __pyx_t_7_squish_VoronoiInfo *); - static PyThread_type_lock __pyx_t_50[8]; + static __pyx_t_6squish_4core_FLOAT_T __pyx_t_3[18]; + static PyThread_type_lock __pyx_t_4[8]; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -36912,7 +29192,7 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec__squish(PyObject *__pyx_pyinit_mod #if CYTHON_PEP489_MULTI_PHASE_INIT if (__pyx_m) { if (__pyx_m == __pyx_pyinit_module) return 0; - PyErr_SetString(PyExc_RuntimeError, "Module '_squish' has already been imported. Re-initialisation is not supported."); + PyErr_SetString(PyExc_RuntimeError, "Module 'voronoi' has already been imported. Re-initialisation is not supported."); return -1; } #elif PY_MAJOR_VERSION >= 3 @@ -36927,31 +29207,31 @@ if (!__Pyx_RefNanny) { Py_FatalError("failed to import 'refnanny' module"); } #endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit__squish(void)", 0); - if (__Pyx_check_binary_version() < 0) __PYX_ERR(7, 1, __pyx_L1_error) + __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_voronoi(void)", 0); + if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #ifdef __Pxy_PyFrame_Initialize_Offsets __Pxy_PyFrame_Initialize_Offsets(); #endif - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(7, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(7, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(7, 1, __pyx_L1_error) + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) __PYX_ERR(7, 1, __pyx_L1_error) + if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) __PYX_ERR(7, 1, __pyx_L1_error) + if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) __PYX_ERR(7, 1, __pyx_L1_error) + if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) __PYX_ERR(7, 1, __pyx_L1_error) + if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init() < 0) __PYX_ERR(7, 1, __pyx_L1_error) + if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(7, 1, __pyx_L1_error) + if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /*--- Library function declarations ---*/ /*--- Threads initialization code ---*/ @@ -36964,56 +29244,56 @@ if (!__Pyx_RefNanny) { Py_INCREF(__pyx_m); #else #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("_squish", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + __pyx_m = Py_InitModule4("voronoi", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); #else __pyx_m = PyModule_Create(&__pyx_moduledef); #endif - if (unlikely(!__pyx_m)) __PYX_ERR(7, 1, __pyx_L1_error) + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) #endif - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(7, 1, __pyx_L1_error) + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_d); - __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(7, 1, __pyx_L1_error) + __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_b); - __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(7, 1, __pyx_L1_error) + __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_cython_runtime); - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(7, 1, __pyx_L1_error); + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) __PYX_ERR(7, 1, __pyx_L1_error) + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(7, 1, __pyx_L1_error) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif - if (__pyx_module_is_main__squish) { - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(7, 1, __pyx_L1_error) + if (__pyx_module_is_main_squish__voronoi) { + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) } #if PY_MAJOR_VERSION >= 3 { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(7, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "_squish")) { - if (unlikely(PyDict_SetItemString(modules, "_squish", __pyx_m) < 0)) __PYX_ERR(7, 1, __pyx_L1_error) + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "squish.voronoi")) { + if (unlikely(PyDict_SetItemString(modules, "squish.voronoi", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) } } #endif /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(7, 1, __pyx_L1_error) + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(7, 1, __pyx_L1_error) + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Global type/function init code ---*/ (void)__Pyx_modinit_global_init_code(); - (void)__Pyx_modinit_variable_export_code(); - (void)__Pyx_modinit_function_export_code(); - if (unlikely(__Pyx_modinit_type_init_code() < 0)) __PYX_ERR(7, 1, __pyx_L1_error) - if (unlikely(__Pyx_modinit_type_import_code() < 0)) __PYX_ERR(7, 1, __pyx_L1_error) + if (unlikely(__Pyx_modinit_variable_export_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (unlikely(__Pyx_modinit_function_export_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (unlikely(__Pyx_modinit_type_init_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (unlikely(__Pyx_modinit_type_import_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) (void)__Pyx_modinit_variable_import_code(); - (void)__Pyx_modinit_function_import_code(); + if (unlikely(__Pyx_modinit_function_import_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Execution code ---*/ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(7, 1, __pyx_L1_error) + if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif - /* "squish/_squish/core.pyx":1 + /* "squish/voronoi.pyx":1 * import array, scipy.spatial, numpy as np # <<<<<<<<<<<<<< + * from timeit import default_timer as timer * from cython.parallel import parallel, prange - * */ __pyx_t_1 = __Pyx_Import(__pyx_n_s_array, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); @@ -37028,438 +29308,128 @@ if (!__Pyx_RefNanny) { if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "squish/_squish/core.pyx":15 + /* "squish/voronoi.pyx":2 + * import array, scipy.spatial, numpy as np + * from timeit import default_timer as timer # <<<<<<<<<<<<<< + * from cython.parallel import parallel, prange + * + */ + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_n_s_default_timer); + __Pyx_GIVEREF(__pyx_n_s_default_timer); + PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_default_timer); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_timeit, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_default_timer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_timer, __pyx_t_1) < 0) __PYX_ERR(0, 2, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "squish/voronoi.pyx":17 * #### Constants #### * * INT = np.int64 # <<<<<<<<<<<<<< * FLOAT = np.float64 * */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_INT, __pyx_t_2) < 0) __PYX_ERR(0, 15, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_INT, __pyx_t_1) < 0) __PYX_ERR(0, 17, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "squish/_squish/core.pyx":16 + /* "squish/voronoi.pyx":18 * * INT = np.int64 * FLOAT = np.float64 # <<<<<<<<<<<<<< * - * cdef FLOAT_T TAU = 2*PI + * cdef Vector2D NAN_VECTOR = _Vector2D(NAN, NAN) */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_FLOAT, __pyx_t_1) < 0) __PYX_ERR(0, 16, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_FLOAT, __pyx_t_2) < 0) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "squish/_squish/core.pyx":18 + /* "squish/voronoi.pyx":20 * FLOAT = np.float64 * - * cdef FLOAT_T TAU = 2*PI # <<<<<<<<<<<<<< - * # In most cases, the amount of edges relevant to a gradient will - * # not exceed this number. However, we assign a growth rate of 8 edges, - */ - __pyx_v_7_squish_TAU = (2.0 * M_PI); - - /* "squish/_squish/core.pyx":22 - * # not exceed this number. However, we assign a growth rate of 8 edges, - * # when dynamically allocating. - * cdef INT_T EDGE_ARR_SIZE = 32 # <<<<<<<<<<<<<< - * - * cdef Init init - */ - __pyx_v_7_squish_EDGE_ARR_SIZE = 32; - - /* "squish/_squish/core.pyx":26 - * cdef Init init - * init.IArray, init.FArray, init.BitSet, init.Vector2D, init.Matrix2x2 = \ - * init_iarray, init_farray, init_bitset, init_vector2d, init_matrix2x2 # <<<<<<<<<<<<<< - * - * cdef VectorSelfOps VSO - */ - __pyx_t_3 = __pyx_f_7_squish_init_iarray; - __pyx_t_4 = __pyx_f_7_squish_init_farray; - __pyx_t_5 = __pyx_f_7_squish_init_bitset; - __pyx_t_6 = __pyx_f_7_squish_init_vector2d; - __pyx_t_7 = __pyx_f_7_squish_init_matrix2x2; - - /* "squish/_squish/core.pyx":25 - * - * cdef Init init - * init.IArray, init.FArray, init.BitSet, init.Vector2D, init.Matrix2x2 = \ # <<<<<<<<<<<<<< - * init_iarray, init_farray, init_bitset, init_vector2d, init_matrix2x2 + * cdef Vector2D NAN_VECTOR = _Vector2D(NAN, NAN) # <<<<<<<<<<<<<< + * cdef Matrix2x2 NAN_MATRIX = _Matrix2x2(NAN, NAN, NAN, NAN) * */ - __pyx_v_7_squish_init.IArray = __pyx_t_3; - __pyx_v_7_squish_init.FArray = __pyx_t_4; - __pyx_v_7_squish_init.BitSet = __pyx_t_5; - __pyx_v_7_squish_init.Vector2D = __pyx_t_6; - __pyx_v_7_squish_init.Matrix2x2 = __pyx_t_7; + __pyx_v_6squish_7voronoi_NAN_VECTOR = __pyx_f_6squish_4core__Vector2D(NAN, NAN); - /* "squish/_squish/core.pyx":34 + /* "squish/voronoi.pyx":21 * - * VSO.neg, VSO.vadd, VSO.vsub, VSO.vmul, VSO.vdiv, VSO.sadd, VSO.ssub, VSO.smul, VSO.sdiv = \ - * v_neg_s, v_vadd_s, v_vsub_s, v_vmul_s, v_vdiv_s, v_sadd_s, v_ssub_s, v_smul_s, v_sdiv_s # <<<<<<<<<<<<<< - * VSO.matmul = v_matmul_s - * - */ - __pyx_t_8 = __pyx_f_7_squish_v_neg_s; - __pyx_t_9 = __pyx_f_7_squish_v_vadd_s; - __pyx_t_10 = __pyx_f_7_squish_v_vsub_s; - __pyx_t_11 = __pyx_f_7_squish_v_vmul_s; - __pyx_t_12 = __pyx_f_7_squish_v_vdiv_s; - __pyx_t_13 = __pyx_f_7_squish_v_sadd_s; - __pyx_t_14 = __pyx_f_7_squish_v_ssub_s; - __pyx_t_15 = __pyx_f_7_squish_v_smul_s; - __pyx_t_16 = __pyx_f_7_squish_v_sdiv_s; - - /* "squish/_squish/core.pyx":33 - * cdef MatrixCopyOps MCO - * - * VSO.neg, VSO.vadd, VSO.vsub, VSO.vmul, VSO.vdiv, VSO.sadd, VSO.ssub, VSO.smul, VSO.sdiv = \ # <<<<<<<<<<<<<< - * v_neg_s, v_vadd_s, v_vsub_s, v_vmul_s, v_vdiv_s, v_sadd_s, v_ssub_s, v_smul_s, v_sdiv_s - * VSO.matmul = v_matmul_s - */ - __pyx_v_7_squish_VSO.neg = __pyx_t_8; - __pyx_v_7_squish_VSO.vadd = __pyx_t_9; - __pyx_v_7_squish_VSO.vsub = __pyx_t_10; - __pyx_v_7_squish_VSO.vmul = __pyx_t_11; - __pyx_v_7_squish_VSO.vdiv = __pyx_t_12; - __pyx_v_7_squish_VSO.sadd = __pyx_t_13; - __pyx_v_7_squish_VSO.ssub = __pyx_t_14; - __pyx_v_7_squish_VSO.smul = __pyx_t_15; - __pyx_v_7_squish_VSO.sdiv = __pyx_t_16; - - /* "squish/_squish/core.pyx":35 - * VSO.neg, VSO.vadd, VSO.vsub, VSO.vmul, VSO.vdiv, VSO.sadd, VSO.ssub, VSO.smul, VSO.sdiv = \ - * v_neg_s, v_vadd_s, v_vsub_s, v_vmul_s, v_vdiv_s, v_sadd_s, v_ssub_s, v_smul_s, v_sdiv_s - * VSO.matmul = v_matmul_s # <<<<<<<<<<<<<< - * - * VCO.neg, VCO.vadd, VCO.vsub, VCO.vmul, VCO.vdiv, VCO.sadd, VCO.ssub, VCO.smul, VCO.sdiv = \ - */ - __pyx_v_7_squish_VSO.matmul = __pyx_f_7_squish_v_matmul_s; - - /* "squish/_squish/core.pyx":38 - * - * VCO.neg, VCO.vadd, VCO.vsub, VCO.vmul, VCO.vdiv, VCO.sadd, VCO.ssub, VCO.smul, VCO.sdiv = \ - * v_neg_c, v_vadd_c, v_vsub_c, v_vmul_c, v_vdiv_c, v_sadd_c, v_ssub_c, v_smul_c, v_sdiv_c # <<<<<<<<<<<<<< - * VCO.matmul = v_matmul_c - * - */ - __pyx_t_17 = __pyx_f_7_squish_v_neg_c; - __pyx_t_18 = __pyx_f_7_squish_v_vadd_c; - __pyx_t_19 = __pyx_f_7_squish_v_vsub_c; - __pyx_t_20 = __pyx_f_7_squish_v_vmul_c; - __pyx_t_21 = __pyx_f_7_squish_v_vdiv_c; - __pyx_t_22 = __pyx_f_7_squish_v_sadd_c; - __pyx_t_23 = __pyx_f_7_squish_v_ssub_c; - __pyx_t_24 = __pyx_f_7_squish_v_smul_c; - __pyx_t_25 = __pyx_f_7_squish_v_sdiv_c; - - /* "squish/_squish/core.pyx":37 - * VSO.matmul = v_matmul_s - * - * VCO.neg, VCO.vadd, VCO.vsub, VCO.vmul, VCO.vdiv, VCO.sadd, VCO.ssub, VCO.smul, VCO.sdiv = \ # <<<<<<<<<<<<<< - * v_neg_c, v_vadd_c, v_vsub_c, v_vmul_c, v_vdiv_c, v_sadd_c, v_ssub_c, v_smul_c, v_sdiv_c - * VCO.matmul = v_matmul_c - */ - __pyx_v_7_squish_VCO.neg = __pyx_t_17; - __pyx_v_7_squish_VCO.vadd = __pyx_t_18; - __pyx_v_7_squish_VCO.vsub = __pyx_t_19; - __pyx_v_7_squish_VCO.vmul = __pyx_t_20; - __pyx_v_7_squish_VCO.vdiv = __pyx_t_21; - __pyx_v_7_squish_VCO.sadd = __pyx_t_22; - __pyx_v_7_squish_VCO.ssub = __pyx_t_23; - __pyx_v_7_squish_VCO.smul = __pyx_t_24; - __pyx_v_7_squish_VCO.sdiv = __pyx_t_25; - - /* "squish/_squish/core.pyx":39 - * VCO.neg, VCO.vadd, VCO.vsub, VCO.vmul, VCO.vdiv, VCO.sadd, VCO.ssub, VCO.smul, VCO.sdiv = \ - * v_neg_c, v_vadd_c, v_vsub_c, v_vmul_c, v_vdiv_c, v_sadd_c, v_ssub_c, v_smul_c, v_sdiv_c - * VCO.matmul = v_matmul_c # <<<<<<<<<<<<<< - * - * MSO.neg, MSO.madd, MSO.msub, MSO.mmul, MSO.mdiv, MSO.sadd, MSO.ssub, MSO.smul, MSO.sdiv = \ - */ - __pyx_v_7_squish_VCO.matmul = __pyx_f_7_squish_v_matmul_c; - - /* "squish/_squish/core.pyx":42 - * - * MSO.neg, MSO.madd, MSO.msub, MSO.mmul, MSO.mdiv, MSO.sadd, MSO.ssub, MSO.smul, MSO.sdiv = \ - * m_neg_s, m_madd_s, m_msub_s, m_mmul_s, m_mdiv_s, m_sadd_s, m_ssub_s, m_smul_s, m_sdiv_s # <<<<<<<<<<<<<< - * MSO.matmul = m_matmul_s - * - */ - __pyx_t_26 = __pyx_f_7_squish_m_neg_s; - __pyx_t_27 = __pyx_f_7_squish_m_madd_s; - __pyx_t_28 = __pyx_f_7_squish_m_msub_s; - __pyx_t_29 = __pyx_f_7_squish_m_mmul_s; - __pyx_t_30 = __pyx_f_7_squish_m_mdiv_s; - __pyx_t_31 = __pyx_f_7_squish_m_sadd_s; - __pyx_t_32 = __pyx_f_7_squish_m_ssub_s; - __pyx_t_33 = __pyx_f_7_squish_m_smul_s; - __pyx_t_34 = __pyx_f_7_squish_m_sdiv_s; - - /* "squish/_squish/core.pyx":41 - * VCO.matmul = v_matmul_c - * - * MSO.neg, MSO.madd, MSO.msub, MSO.mmul, MSO.mdiv, MSO.sadd, MSO.ssub, MSO.smul, MSO.sdiv = \ # <<<<<<<<<<<<<< - * m_neg_s, m_madd_s, m_msub_s, m_mmul_s, m_mdiv_s, m_sadd_s, m_ssub_s, m_smul_s, m_sdiv_s - * MSO.matmul = m_matmul_s - */ - __pyx_v_7_squish_MSO.neg = __pyx_t_26; - __pyx_v_7_squish_MSO.madd = __pyx_t_27; - __pyx_v_7_squish_MSO.msub = __pyx_t_28; - __pyx_v_7_squish_MSO.mmul = __pyx_t_29; - __pyx_v_7_squish_MSO.mdiv = __pyx_t_30; - __pyx_v_7_squish_MSO.sadd = __pyx_t_31; - __pyx_v_7_squish_MSO.ssub = __pyx_t_32; - __pyx_v_7_squish_MSO.smul = __pyx_t_33; - __pyx_v_7_squish_MSO.sdiv = __pyx_t_34; - - /* "squish/_squish/core.pyx":43 - * MSO.neg, MSO.madd, MSO.msub, MSO.mmul, MSO.mdiv, MSO.sadd, MSO.ssub, MSO.smul, MSO.sdiv = \ - * m_neg_s, m_madd_s, m_msub_s, m_mmul_s, m_mdiv_s, m_sadd_s, m_ssub_s, m_smul_s, m_sdiv_s - * MSO.matmul = m_matmul_s # <<<<<<<<<<<<<< - * - * MCO.neg, MCO.madd, MCO.msub, MCO.mmul, MCO.mdiv, MCO.sadd, MCO.ssub, MCO.smul, MCO.sdiv = \ - */ - __pyx_v_7_squish_MSO.matmul = __pyx_f_7_squish_m_matmul_s; - - /* "squish/_squish/core.pyx":46 - * - * MCO.neg, MCO.madd, MCO.msub, MCO.mmul, MCO.mdiv, MCO.sadd, MCO.ssub, MCO.smul, MCO.sdiv = \ - * m_neg_c, m_madd_c, m_msub_c, m_mmul_c, m_mdiv_c, m_sadd_c, m_ssub_c, m_smul_c, m_sdiv_c # <<<<<<<<<<<<<< - * MCO.matmul = m_matmul_c - * - */ - __pyx_t_35 = __pyx_f_7_squish_m_neg_c; - __pyx_t_36 = __pyx_f_7_squish_m_madd_c; - __pyx_t_37 = __pyx_f_7_squish_m_msub_c; - __pyx_t_38 = __pyx_f_7_squish_m_mmul_c; - __pyx_t_39 = __pyx_f_7_squish_m_mdiv_c; - __pyx_t_40 = __pyx_f_7_squish_m_sadd_c; - __pyx_t_41 = __pyx_f_7_squish_m_ssub_c; - __pyx_t_42 = __pyx_f_7_squish_m_smul_c; - __pyx_t_43 = __pyx_f_7_squish_m_sdiv_c; - - /* "squish/_squish/core.pyx":45 - * MSO.matmul = m_matmul_s - * - * MCO.neg, MCO.madd, MCO.msub, MCO.mmul, MCO.mdiv, MCO.sadd, MCO.ssub, MCO.smul, MCO.sdiv = \ # <<<<<<<<<<<<<< - * m_neg_c, m_madd_c, m_msub_c, m_mmul_c, m_mdiv_c, m_sadd_c, m_ssub_c, m_smul_c, m_sdiv_c - * MCO.matmul = m_matmul_c - */ - __pyx_v_7_squish_MCO.neg = __pyx_t_35; - __pyx_v_7_squish_MCO.madd = __pyx_t_36; - __pyx_v_7_squish_MCO.msub = __pyx_t_37; - __pyx_v_7_squish_MCO.mmul = __pyx_t_38; - __pyx_v_7_squish_MCO.mdiv = __pyx_t_39; - __pyx_v_7_squish_MCO.sadd = __pyx_t_40; - __pyx_v_7_squish_MCO.ssub = __pyx_t_41; - __pyx_v_7_squish_MCO.smul = __pyx_t_42; - __pyx_v_7_squish_MCO.sdiv = __pyx_t_43; - - /* "squish/_squish/core.pyx":47 - * MCO.neg, MCO.madd, MCO.msub, MCO.mmul, MCO.mdiv, MCO.sadd, MCO.ssub, MCO.smul, MCO.sdiv = \ - * m_neg_c, m_madd_c, m_msub_c, m_mmul_c, m_mdiv_c, m_sadd_c, m_ssub_c, m_smul_c, m_sdiv_c - * MCO.matmul = m_matmul_c # <<<<<<<<<<<<<< - * - * cdef Vector2D NAN_VECTOR = init.Vector2D(NAN, NAN) - */ - __pyx_v_7_squish_MCO.matmul = __pyx_f_7_squish_m_matmul_c; - - /* "squish/_squish/core.pyx":49 - * MCO.matmul = m_matmul_c - * - * cdef Vector2D NAN_VECTOR = init.Vector2D(NAN, NAN) # <<<<<<<<<<<<<< - * cdef Matrix2x2 NAN_MATRIX = init.Matrix2x2(NAN, NAN, NAN, NAN) - * - */ - __pyx_v_7_squish_NAN_VECTOR = __pyx_v_7_squish_init.Vector2D(NAN, NAN); - - /* "squish/_squish/core.pyx":50 - * - * cdef Vector2D NAN_VECTOR = init.Vector2D(NAN, NAN) - * cdef Matrix2x2 NAN_MATRIX = init.Matrix2x2(NAN, NAN, NAN, NAN) # <<<<<<<<<<<<<< + * cdef Vector2D NAN_VECTOR = _Vector2D(NAN, NAN) + * cdef Matrix2x2 NAN_MATRIX = _Matrix2x2(NAN, NAN, NAN, NAN) # <<<<<<<<<<<<<< * * cdef FLOAT_T[18] SYMM = [0,0, 1,0, 1,1, 0,1, -1,1, -1,0, -1,-1, 0,-1, 1,-1] */ - __pyx_v_7_squish_NAN_MATRIX = __pyx_v_7_squish_init.Matrix2x2(NAN, NAN, NAN, NAN); + __pyx_v_6squish_7voronoi_NAN_MATRIX = __pyx_f_6squish_4core__Matrix2x2(NAN, NAN, NAN, NAN); - /* "squish/_squish/core.pyx":52 - * cdef Matrix2x2 NAN_MATRIX = init.Matrix2x2(NAN, NAN, NAN, NAN) + /* "squish/voronoi.pyx":23 + * cdef Matrix2x2 NAN_MATRIX = _Matrix2x2(NAN, NAN, NAN, NAN) * * cdef FLOAT_T[18] SYMM = [0,0, 1,0, 1,1, 0,1, -1,1, -1,0, -1,-1, 0,-1, 1,-1] # <<<<<<<<<<<<<< - * cdef Matrix2x2 R = init.Matrix2x2(0, -1, 1, 0) + * cdef Matrix2x2 R = _Matrix2x2(0, -1, 1, 0) * */ - __pyx_t_44[0] = 0.0; - __pyx_t_44[1] = 0.0; - __pyx_t_44[2] = 1.0; - __pyx_t_44[3] = 0.0; - __pyx_t_44[4] = 1.0; - __pyx_t_44[5] = 1.0; - __pyx_t_44[6] = 0.0; - __pyx_t_44[7] = 1.0; - __pyx_t_44[8] = -1.0; - __pyx_t_44[9] = 1.0; - __pyx_t_44[10] = -1.0; - __pyx_t_44[11] = 0.0; - __pyx_t_44[12] = -1.0; - __pyx_t_44[13] = -1.0; - __pyx_t_44[14] = 0.0; - __pyx_t_44[15] = -1.0; - __pyx_t_44[16] = 1.0; - __pyx_t_44[17] = -1.0; - memcpy(&(__pyx_v_7_squish_SYMM[0]), __pyx_t_44, sizeof(__pyx_v_7_squish_SYMM[0]) * (18)); + __pyx_t_3[0] = 0.0; + __pyx_t_3[1] = 0.0; + __pyx_t_3[2] = 1.0; + __pyx_t_3[3] = 0.0; + __pyx_t_3[4] = 1.0; + __pyx_t_3[5] = 1.0; + __pyx_t_3[6] = 0.0; + __pyx_t_3[7] = 1.0; + __pyx_t_3[8] = -1.0; + __pyx_t_3[9] = 1.0; + __pyx_t_3[10] = -1.0; + __pyx_t_3[11] = 0.0; + __pyx_t_3[12] = -1.0; + __pyx_t_3[13] = -1.0; + __pyx_t_3[14] = 0.0; + __pyx_t_3[15] = -1.0; + __pyx_t_3[16] = 1.0; + __pyx_t_3[17] = -1.0; + memcpy(&(__pyx_v_6squish_7voronoi_SYMM[0]), __pyx_t_3, sizeof(__pyx_v_6squish_7voronoi_SYMM[0]) * (18)); - /* "squish/_squish/core.pyx":53 + /* "squish/voronoi.pyx":24 * * cdef FLOAT_T[18] SYMM = [0,0, 1,0, 1,1, 0,1, -1,1, -1,0, -1,-1, 0,-1, 1,-1] - * cdef Matrix2x2 R = init.Matrix2x2(0, -1, 1, 0) # <<<<<<<<<<<<<< + * cdef Matrix2x2 R = _Matrix2x2(0, -1, 1, 0) # <<<<<<<<<<<<<< * - * """ + * cdef SiteCacheMap SITE_CACHE_MAP = _SiteCacheMap(0, 1, 2, 3, 4, 5, -1) */ - __pyx_v_7_squish_R = __pyx_v_7_squish_init.Matrix2x2(0.0, -1.0, 1.0, 0.0); + __pyx_v_6squish_7voronoi_R = __pyx_f_6squish_4core__Matrix2x2(0.0, -1.0, 1.0, 0.0); - /* "squish/_squish/voronoi_dcel.pyx":6 + /* "squish/voronoi.pyx":26 + * cdef Matrix2x2 R = _Matrix2x2(0, -1, 1, 0) * - * init.SiteCacheMap, init.EdgeCacheMap, init.VoronoiInfo, init.Site, init.HalfEdge = \ - * init_sitecachemap, init_edgecachemap, init_voronoiinfo, init_site, init_halfedge # <<<<<<<<<<<<<< + * cdef SiteCacheMap SITE_CACHE_MAP = _SiteCacheMap(0, 1, 2, 3, 4, 5, -1) # <<<<<<<<<<<<<< * - * cdef SiteCacheMap SITE_CACHE_MAP = init.SiteCacheMap(0, 1, 2, 3, 4) + * #### SiteCacheMap Methods #### */ - __pyx_t_45 = __pyx_f_7_squish_init_sitecachemap; - __pyx_t_46 = __pyx_f_7_squish_init_edgecachemap; - __pyx_t_47 = __pyx_f_7_squish_init_voronoiinfo; - __pyx_t_48 = __pyx_f_7_squish_init_site; - __pyx_t_49 = __pyx_f_7_squish_init_halfedge; + __pyx_v_6squish_7voronoi_SITE_CACHE_MAP = __pyx_f_6squish_7voronoi__SiteCacheMap(0, 1, 2, 3, 4, 5, -1LL); - /* "squish/_squish/voronoi_dcel.pyx":5 - * #### Constants #### - * - * init.SiteCacheMap, init.EdgeCacheMap, init.VoronoiInfo, init.Site, init.HalfEdge = \ # <<<<<<<<<<<<<< - * init_sitecachemap, init_edgecachemap, init_voronoiinfo, init_site, init_halfedge - * + /* "squish/voronoi.pyx":1 + * import array, scipy.spatial, numpy as np # <<<<<<<<<<<<<< + * from timeit import default_timer as timer + * from cython.parallel import parallel, prange */ - __pyx_v_7_squish_init.SiteCacheMap = __pyx_t_45; - __pyx_v_7_squish_init.EdgeCacheMap = __pyx_t_46; - __pyx_v_7_squish_init.VoronoiInfo = __pyx_t_47; - __pyx_v_7_squish_init.Site = __pyx_t_48; - __pyx_v_7_squish_init.HalfEdge = __pyx_t_49; - - /* "squish/_squish/voronoi_dcel.pyx":8 - * init_sitecachemap, init_edgecachemap, init_voronoiinfo, init_site, init_halfedge - * - * cdef SiteCacheMap SITE_CACHE_MAP = init.SiteCacheMap(0, 1, 2, 3, 4) # <<<<<<<<<<<<<< - * - * cdef EdgeCacheMap AREA_EDGE_CACHE_MAP = init.EdgeCacheMap(0, 4, 6, 8, 10, -1, 12, 13, - */ - __pyx_v_7_squish_SITE_CACHE_MAP = __pyx_v_7_squish_init.SiteCacheMap(0, 1, 2, 3, 4); - - /* "squish/_squish/voronoi_dcel.pyx":10 - * cdef SiteCacheMap SITE_CACHE_MAP = init.SiteCacheMap(0, 1, 2, 3, 4) - * - * cdef EdgeCacheMap AREA_EDGE_CACHE_MAP = init.EdgeCacheMap(0, 4, 6, 8, 10, -1, 12, 13, # <<<<<<<<<<<<<< - * -1, -1, -1, -1, -1, 14) - * cdef EdgeCacheMap RADIALT_EDGE_CACHE_MAP = init.EdgeCacheMap(0, 4, 6, 8, -1, 10, 12, 13, - */ - __pyx_v_7_squish_AREA_EDGE_CACHE_MAP = __pyx_v_7_squish_init.EdgeCacheMap(0, 4, 6, 8, 10, -1LL, 12, 13, -1LL, -1LL, -1LL, -1LL, -1LL, 14); - - /* "squish/_squish/voronoi_dcel.pyx":12 - * cdef EdgeCacheMap AREA_EDGE_CACHE_MAP = init.EdgeCacheMap(0, 4, 6, 8, 10, -1, 12, 13, - * -1, -1, -1, -1, -1, 14) - * cdef EdgeCacheMap RADIALT_EDGE_CACHE_MAP = init.EdgeCacheMap(0, 4, 6, 8, -1, 10, 12, 13, # <<<<<<<<<<<<<< - * 14, 15, 16, 17, 18, 19) - * - */ - __pyx_v_7_squish_RADIALT_EDGE_CACHE_MAP = __pyx_v_7_squish_init.EdgeCacheMap(0, 4, 6, 8, -1LL, 10, 12, 13, 14, 15, 16, 17, 18, 19); - - /* "squish/_squish/energy.pyx":11 - * """ - * - * attr_str = "area" # <<<<<<<<<<<<<< - * title_str = "Area" - * - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_7_squish_AreaEnergy->tp_dict, __pyx_n_s_attr_str, __pyx_n_u_area) < 0) __PYX_ERR(3, 11, __pyx_L1_error) - PyType_Modified(__pyx_ptype_7_squish_AreaEnergy); - - /* "squish/_squish/energy.pyx":12 - * - * attr_str = "area" - * title_str = "Area" # <<<<<<<<<<<<<< - * - * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_7_squish_AreaEnergy->tp_dict, __pyx_n_s_title_str, __pyx_n_u_Area) < 0) __PYX_ERR(3, 12, __pyx_L1_error) - PyType_Modified(__pyx_ptype_7_squish_AreaEnergy); - - /* "squish/_squish/energy.pyx":105 - * """ - * - * attr_str = "radial-al" # <<<<<<<<<<<<<< - * title_str = "Radial[AL]" - * - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_7_squish_RadialALEnergy->tp_dict, __pyx_n_s_attr_str, __pyx_kp_u_radial_al) < 0) __PYX_ERR(3, 105, __pyx_L1_error) - PyType_Modified(__pyx_ptype_7_squish_RadialALEnergy); - - /* "squish/_squish/energy.pyx":106 - * - * attr_str = "radial-al" - * title_str = "Radial[AL]" # <<<<<<<<<<<<<< - * - * - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_7_squish_RadialALEnergy->tp_dict, __pyx_n_s_title_str, __pyx_kp_u_Radial_AL) < 0) __PYX_ERR(3, 106, __pyx_L1_error) - PyType_Modified(__pyx_ptype_7_squish_RadialALEnergy); - - /* "squish/_squish/energy.pyx":141 - * """ - * - * attr_str = "radial-t" # <<<<<<<<<<<<<< - * title_str = "Radial[T]" - * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_7_squish_RadialTEnergy->tp_dict, __pyx_n_s_attr_str, __pyx_kp_u_radial_t) < 0) __PYX_ERR(3, 141, __pyx_L1_error) - PyType_Modified(__pyx_ptype_7_squish_RadialTEnergy); - - /* "squish/_squish/energy.pyx":142 - * - * attr_str = "radial-t" - * title_str = "Radial[T]" # <<<<<<<<<<<<<< - * def __init__(AreaEnergy self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, - * np.ndarray[FLOAT_T, ndim=2] site_arr): - */ - if (PyDict_SetItem((PyObject *)__pyx_ptype_7_squish_RadialTEnergy->tp_dict, __pyx_n_s_title_str, __pyx_kp_u_Radial_T) < 0) __PYX_ERR(3, 142, __pyx_L1_error) - PyType_Modified(__pyx_ptype_7_squish_RadialTEnergy); - - /* "(tree fragment)":1 - * def __pyx_unpickle_Calc(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError - * cdef object __pyx_result - */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_7_squish_1__pyx_unpickle_Calc, NULL, __pyx_n_s_squish); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Calc, __pyx_t_1) < 0) __PYX_ERR(2, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "_squish.pyx":1 - * include "core.pyx" # <<<<<<<<<<<<<< - * include "voronoi_dcel.pyx" - * include "energy.pyx" - */ - __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(7, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "View.MemoryView":209 * info.obj = self @@ -37468,10 +29438,10 @@ if (!__Pyx_RefNanny) { * * def __dealloc__(array self): */ - __pyx_t_1 = __pyx_capsule_create(((void *)(&__pyx_array_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 209, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem((PyObject *)__pyx_array_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_1) < 0) __PYX_ERR(2, 209, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_2 = __pyx_capsule_create(((void *)(&__pyx_array_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem((PyObject *)__pyx_array_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_2) < 0) __PYX_ERR(1, 209, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_array_type); /* "View.MemoryView":286 @@ -37481,12 +29451,12 @@ if (!__Pyx_RefNanny) { * cdef strided = Enum("") # default * cdef indirect = Enum("") */ - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 286, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 286, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); __Pyx_XGOTREF(generic); - __Pyx_DECREF_SET(generic, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; + __Pyx_DECREF_SET(generic, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; /* "View.MemoryView":287 * @@ -37495,12 +29465,12 @@ if (!__Pyx_RefNanny) { * cdef indirect = Enum("") * */ - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 287, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 287, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); __Pyx_XGOTREF(strided); - __Pyx_DECREF_SET(strided, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; + __Pyx_DECREF_SET(strided, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; /* "View.MemoryView":288 * cdef generic = Enum("") @@ -37509,12 +29479,12 @@ if (!__Pyx_RefNanny) { * * */ - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 288, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 288, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); __Pyx_XGOTREF(indirect); - __Pyx_DECREF_SET(indirect, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; + __Pyx_DECREF_SET(indirect, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; /* "View.MemoryView":291 * @@ -37523,12 +29493,12 @@ if (!__Pyx_RefNanny) { * cdef indirect_contiguous = Enum("") * */ - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 291, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 291, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); __Pyx_XGOTREF(contiguous); - __Pyx_DECREF_SET(contiguous, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; + __Pyx_DECREF_SET(contiguous, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; /* "View.MemoryView":292 * @@ -37537,12 +29507,12 @@ if (!__Pyx_RefNanny) { * * */ - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 292, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 292, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); __Pyx_XGOTREF(indirect_contiguous); - __Pyx_DECREF_SET(indirect_contiguous, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __pyx_t_1 = 0; + __Pyx_DECREF_SET(indirect_contiguous, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_2); + __pyx_t_2 = 0; /* "View.MemoryView":316 * @@ -37560,15 +29530,15 @@ if (!__Pyx_RefNanny) { * PyThread_allocate_lock(), * PyThread_allocate_lock(), */ - __pyx_t_50[0] = PyThread_allocate_lock(); - __pyx_t_50[1] = PyThread_allocate_lock(); - __pyx_t_50[2] = PyThread_allocate_lock(); - __pyx_t_50[3] = PyThread_allocate_lock(); - __pyx_t_50[4] = PyThread_allocate_lock(); - __pyx_t_50[5] = PyThread_allocate_lock(); - __pyx_t_50[6] = PyThread_allocate_lock(); - __pyx_t_50[7] = PyThread_allocate_lock(); - memcpy(&(__pyx_memoryview_thread_locks[0]), __pyx_t_50, sizeof(__pyx_memoryview_thread_locks[0]) * (8)); + __pyx_t_4[0] = PyThread_allocate_lock(); + __pyx_t_4[1] = PyThread_allocate_lock(); + __pyx_t_4[2] = PyThread_allocate_lock(); + __pyx_t_4[3] = PyThread_allocate_lock(); + __pyx_t_4[4] = PyThread_allocate_lock(); + __pyx_t_4[5] = PyThread_allocate_lock(); + __pyx_t_4[6] = PyThread_allocate_lock(); + __pyx_t_4[7] = PyThread_allocate_lock(); + memcpy(&(__pyx_memoryview_thread_locks[0]), __pyx_t_4, sizeof(__pyx_memoryview_thread_locks[0]) * (8)); /* "View.MemoryView":549 * info.obj = self @@ -37577,10 +29547,10 @@ if (!__Pyx_RefNanny) { * * */ - __pyx_t_1 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 549, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem((PyObject *)__pyx_memoryview_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_1) < 0) __PYX_ERR(2, 549, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_2 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 549, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem((PyObject *)__pyx_memoryview_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_2) < 0) __PYX_ERR(1, 549, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_memoryview_type); /* "View.MemoryView":995 @@ -37590,10 +29560,10 @@ if (!__Pyx_RefNanny) { * * */ - __pyx_t_1 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 995, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem((PyObject *)__pyx_memoryviewslice_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_1) < 0) __PYX_ERR(2, 995, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_2 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 995, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem((PyObject *)__pyx_memoryviewslice_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_2) < 0) __PYX_ERR(1, 995, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; PyType_Modified(__pyx_memoryviewslice_type); /* "(tree fragment)":1 @@ -37601,10 +29571,10 @@ if (!__Pyx_RefNanny) { * cdef object __pyx_PickleError * cdef object __pyx_result */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum, NULL, __pyx_n_s_View_MemoryView); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Enum, __pyx_t_1) < 0) __PYX_ERR(2, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum, NULL, __pyx_n_s_View_MemoryView); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Enum, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "(tree fragment)":11 * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) @@ -37622,11 +29592,11 @@ if (!__Pyx_RefNanny) { __Pyx_XDECREF(__pyx_t_2); if (__pyx_m) { if (__pyx_d) { - __Pyx_AddTraceback("init _squish", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("init squish.voronoi", __pyx_clineno, __pyx_lineno, __pyx_filename); } Py_CLEAR(__pyx_m); } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init _squish"); + PyErr_SetString(PyExc_ImportError, "init squish.voronoi"); } __pyx_L0:; __Pyx_RefNannyFinishContext(); @@ -37685,453 +29655,6 @@ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { return result; } -/* PyCFunctionFastCall */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs); - } -} -#endif - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = __Pyx_PyFrame_GetLocalsplus(f); - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, (int)nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, (int)nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif -#endif - -/* PyObjectCall */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = Py_TYPE(func)->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallMethO */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (__Pyx_PyFastCFunction_Check(func)) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* PyErrFetchRestore */ -#if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -} -#endif - -/* RaiseException */ -#if PY_MAJOR_VERSION < 3 -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - CYTHON_UNUSED PyObject *cause) { - __Pyx_PyThreadState_declare - Py_XINCREF(type); - if (!value || value == Py_None) - value = NULL; - else - Py_INCREF(value); - if (!tb || tb == Py_None) - tb = NULL; - else { - Py_INCREF(tb); - if (!PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto raise_error; - } - } - if (PyType_Check(type)) { -#if CYTHON_COMPILING_IN_PYPY - if (!value) { - Py_INCREF(Py_None); - value = Py_None; - } -#endif - PyErr_NormalizeException(&type, &value, &tb); - } else { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto raise_error; - } - value = type; - type = (PyObject*) Py_TYPE(type); - Py_INCREF(type); - if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto raise_error; - } - } - __Pyx_PyThreadState_assign - __Pyx_ErrRestore(type, value, tb); - return; -raise_error: - Py_XDECREF(value); - Py_XDECREF(type); - Py_XDECREF(tb); - return; -} -#else -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - PyObject* owned_instance = NULL; - if (tb == Py_None) { - tb = 0; - } else if (tb && !PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto bad; - } - if (value == Py_None) - value = 0; - if (PyExceptionInstance_Check(type)) { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto bad; - } - value = type; - type = (PyObject*) Py_TYPE(value); - } else if (PyExceptionClass_Check(type)) { - PyObject *instance_class = NULL; - if (value && PyExceptionInstance_Check(value)) { - instance_class = (PyObject*) Py_TYPE(value); - if (instance_class != type) { - int is_subclass = PyObject_IsSubclass(instance_class, type); - if (!is_subclass) { - instance_class = NULL; - } else if (unlikely(is_subclass == -1)) { - goto bad; - } else { - type = instance_class; - } - } - } - if (!instance_class) { - PyObject *args; - if (!value) - args = PyTuple_New(0); - else if (PyTuple_Check(value)) { - Py_INCREF(value); - args = value; - } else - args = PyTuple_Pack(1, value); - if (!args) - goto bad; - owned_instance = PyObject_Call(type, args, NULL); - Py_DECREF(args); - if (!owned_instance) - goto bad; - value = owned_instance; - if (!PyExceptionInstance_Check(value)) { - PyErr_Format(PyExc_TypeError, - "calling %R should have returned an instance of " - "BaseException, not %R", - type, Py_TYPE(value)); - goto bad; - } - } - } else { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto bad; - } - if (cause) { - PyObject *fixed_cause; - if (cause == Py_None) { - fixed_cause = NULL; - } else if (PyExceptionClass_Check(cause)) { - fixed_cause = PyObject_CallObject(cause, NULL); - if (fixed_cause == NULL) - goto bad; - } else if (PyExceptionInstance_Check(cause)) { - fixed_cause = cause; - Py_INCREF(fixed_cause); - } else { - PyErr_SetString(PyExc_TypeError, - "exception causes must derive from " - "BaseException"); - goto bad; - } - PyException_SetCause(value, fixed_cause); - } - PyErr_SetObject(type, value); - if (tb) { -#if CYTHON_COMPILING_IN_PYPY - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); - Py_INCREF(tb); - PyErr_Restore(tmp_type, tmp_value, tb); - Py_XDECREF(tmp_tb); -#else - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* tmp_tb = tstate->curexc_traceback; - if (tb != tmp_tb) { - Py_INCREF(tb); - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_tb); - } -#endif - } -bad: - Py_XDECREF(owned_instance); - return; -} -#endif - -/* WriteUnraisableException */ -static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, - CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, - int full_traceback, CYTHON_UNUSED int nogil) { - PyObject *old_exc, *old_val, *old_tb; - PyObject *ctx; - __Pyx_PyThreadState_declare -#ifdef WITH_THREAD - PyGILState_STATE state; - if (nogil) - state = PyGILState_Ensure(); -#ifdef _MSC_VER - else state = (PyGILState_STATE)-1; -#endif -#endif - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); - if (full_traceback) { - Py_XINCREF(old_exc); - Py_XINCREF(old_val); - Py_XINCREF(old_tb); - __Pyx_ErrRestore(old_exc, old_val, old_tb); - PyErr_PrintEx(1); - } - #if PY_MAJOR_VERSION < 3 - ctx = PyString_FromString(name); - #else - ctx = PyUnicode_FromString(name); - #endif - __Pyx_ErrRestore(old_exc, old_val, old_tb); - if (!ctx) { - PyErr_WriteUnraisable(Py_None); - } else { - PyErr_WriteUnraisable(ctx); - Py_DECREF(ctx); - } -#ifdef WITH_THREAD - if (nogil) - PyGILState_Release(state); -#endif -} - /* RaiseArgTupleInvalid */ static void __Pyx_RaiseArgtupleInvalid( const char* func_name, @@ -38335,6 +29858,168 @@ static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) return __Pyx_GetBuiltinName(name); } +/* PyCFunctionFastCall */ +#if CYTHON_FAST_PYCCALL +static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { + PyCFunctionObject *func = (PyCFunctionObject*)func_obj; + PyCFunction meth = PyCFunction_GET_FUNCTION(func); + PyObject *self = PyCFunction_GET_SELF(func); + int flags = PyCFunction_GET_FLAGS(func); + assert(PyCFunction_Check(func)); + assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))); + assert(nargs >= 0); + assert(nargs == 0 || args != NULL); + /* _PyCFunction_FastCallDict() must not be called with an exception set, + because it may clear it (directly or indirectly) and so the + caller loses its exception */ + assert(!PyErr_Occurred()); + if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { + return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL); + } else { + return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs); + } +} +#endif + +/* PyFunctionFastCall */ +#if CYTHON_FAST_PYCALL +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = __Pyx_PyFrame_GetLocalsplus(f); + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +#if 1 || PY_VERSION_HEX < 0x030600B1 +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { + return NULL; + } + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif +#endif + +/* PyObjectCall */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = Py_TYPE(func)->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + /* PyObjectCall2Args */ static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { PyObject *args, *result = NULL; @@ -38364,6 +30049,66 @@ done: return result; } +/* PyObjectCallMethO */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = PyCFunction_GET_FUNCTION(func); + self = PyCFunction_GET_SELF(func); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallOneArg */ +#if CYTHON_COMPILING_IN_CPYTHON +static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_New(1); + if (unlikely(!args)) return NULL; + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 0, arg); + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { +#if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCall(func, &arg, 1); + } +#endif + if (likely(PyCFunction_Check(func))) { + if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { + return __Pyx_PyObject_CallMethO(func, arg); +#if CYTHON_FAST_PYCCALL + } else if (__Pyx_PyFastCFunction_Check(func)) { + return __Pyx_PyCFunction_FastCall(func, &arg, 1); +#endif + } + } + return __Pyx__PyObject_CallOneArg(func, arg); +} +#else +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_Pack(1, arg); + if (unlikely(!args)) return NULL; + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +#endif + /* ExtTypeTest */ static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { if (unlikely(!type)) { @@ -39219,6 +30964,30 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice, } } +/* PyErrFetchRestore */ + #if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +} +#endif + /* ObjectGetItem */ #if CYTHON_USE_TYPE_SLOTS static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) { @@ -39941,176 +31710,164 @@ static PyObject* __Pyx_PyInt_TrueDivideObjC(PyObject *op1, PyObject *op2, CYTHON } #endif -/* ArgTypeTest */ - static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) -{ - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - else if (exact) { - #if PY_MAJOR_VERSION == 2 - if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; - #endif - } - else { - if (likely(__Pyx_TypeCheck(obj, type))) return 1; - } - PyErr_Format(PyExc_TypeError, - "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", - name, type->tp_name, Py_TYPE(obj)->tp_name); - return 0; -} - -/* PyErrExceptionMatches */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; icurexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; - if (unlikely(PyTuple_Check(err))) - return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); -} -#endif - -/* GetAttr */ - static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { -#if CYTHON_USE_TYPE_SLOTS -#if PY_MAJOR_VERSION >= 3 - if (likely(PyUnicode_Check(n))) -#else - if (likely(PyString_Check(n))) -#endif - return __Pyx_PyObject_GetAttrStr(o, n); -#endif - return PyObject_GetAttr(o, n); -} - -/* GetAttr3 */ - static PyObject *__Pyx_GetAttr3Default(PyObject *d) { +/* RaiseException */ + #if PY_MAJOR_VERSION < 3 +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, + CYTHON_UNUSED PyObject *cause) { __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - return NULL; - __Pyx_PyErr_Clear(); - Py_INCREF(d); - return d; -} -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { - PyObject *r = __Pyx_GetAttr(o, n); - return (likely(r)) ? r : __Pyx_GetAttr3Default(d); -} - -/* Import */ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_MAJOR_VERSION < 3 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; + Py_XINCREF(type); + if (!value || value == Py_None) + value = NULL; + else + Py_INCREF(value); + if (!tb || tb == Py_None) + tb = NULL; else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; + Py_INCREF(tb); + if (!PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto raise_error; + } } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) + if (PyType_Check(type)) { +#if CYTHON_COMPILING_IN_PYPY + if (!value) { + Py_INCREF(Py_None); + value = Py_None; + } +#endif + PyErr_NormalizeException(&type, &value, &tb); + } else { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto raise_error; + } + value = type; + type = (PyObject*) Py_TYPE(type); + Py_INCREF(type); + if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto raise_error; + } + } + __Pyx_PyThreadState_assign + __Pyx_ErrRestore(type, value, tb); + return; +raise_error: + Py_XDECREF(value); + Py_XDECREF(type); + Py_XDECREF(tb); + return; +} +#else +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + PyObject* owned_instance = NULL; + if (tb == Py_None) { + tb = 0; + } else if (tb && !PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) { - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); + } + if (value == Py_None) + value = 0; + if (PyExceptionInstance_Check(type)) { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto bad; + } + value = type; + type = (PyObject*) Py_TYPE(value); + } else if (PyExceptionClass_Check(type)) { + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; } } - level = 0; } - #endif - if (!module) { - #if PY_MAJOR_VERSION < 3 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, (PyObject *)NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } } + } else { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto bad; + } + if (cause) { + PyObject *fixed_cause; + if (cause == Py_None) { + fixed_cause = NULL; + } else if (PyExceptionClass_Check(cause)) { + fixed_cause = PyObject_CallObject(cause, NULL); + if (fixed_cause == NULL) + goto bad; + } else if (PyExceptionInstance_Check(cause)) { + fixed_cause = cause; + Py_INCREF(fixed_cause); + } else { + PyErr_SetString(PyExc_TypeError, + "exception causes must derive from " + "BaseException"); + goto bad; + } + PyException_SetCause(value, fixed_cause); + } + PyErr_SetObject(type, value); + if (tb) { +#if CYTHON_COMPILING_IN_PYPY + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#else + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject* tmp_tb = tstate->curexc_traceback; + if (tb != tmp_tb) { + Py_INCREF(tb); + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_tb); + } +#endif } bad: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; -} - -/* ImportFrom */ - static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Format(PyExc_ImportError, - #if PY_MAJOR_VERSION < 3 - "cannot import name %.230s", PyString_AS_STRING(name)); - #else - "cannot import name %S", name); - #endif - } - return value; -} - -/* HasAttr */ - static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { - PyObject *r; - if (unlikely(!__Pyx_PyBaseString_Check(n))) { - PyErr_SetString(PyExc_TypeError, - "hasattr(): attribute name must be string"); - return -1; - } - r = __Pyx_GetAttr(o, n); - if (unlikely(!r)) { - PyErr_Clear(); - return 0; - } else { - Py_DECREF(r); - return 1; - } + Py_XDECREF(owned_instance); + return; } +#endif /* GetTopmostException */ #if CYTHON_USE_EXC_INFO_STACK @@ -40168,6 +31925,31 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject } #endif +/* PyErrExceptionMatches */ + #if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; icurexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; + if (unlikely(PyTuple_Check(err))) + return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); +} +#endif + /* GetException */ #if CYTHON_FAST_THREAD_STATE static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) @@ -40242,6 +32024,27 @@ bad: return -1; } +/* ArgTypeTest */ + static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) +{ + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + else if (exact) { + #if PY_MAJOR_VERSION == 2 + if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; + #endif + } + else { + if (likely(__Pyx_TypeCheck(obj, type))) return 1; + } + PyErr_Format(PyExc_TypeError, + "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", + name, type->tp_name, Py_TYPE(obj)->tp_name); + return 0; +} + /* BytesEquals */ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY @@ -40391,6 +32194,19 @@ return_ne: #endif } +/* GetAttr */ + static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { +#if CYTHON_USE_TYPE_SLOTS +#if PY_MAJOR_VERSION >= 3 + if (likely(PyUnicode_Check(n))) +#else + if (likely(PyString_Check(n))) +#endif + return __Pyx_PyObject_GetAttrStr(o, n); +#endif + return PyObject_GetAttr(o, n); +} + /* decode_c_string */ static CYTHON_INLINE PyObject* __Pyx_decode_c_string( const char* cstring, Py_ssize_t start, Py_ssize_t stop, @@ -40424,6 +32240,21 @@ return_ne: } } +/* GetAttr3 */ + static PyObject *__Pyx_GetAttr3Default(PyObject *d) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + return NULL; + __Pyx_PyErr_Clear(); + Py_INCREF(d); + return d; +} +static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { + PyObject *r = __Pyx_GetAttr(o, n); + return (likely(r)) ? r : __Pyx_GetAttr3Default(d); +} + /* RaiseTooManyValuesToUnpack */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { PyErr_Format(PyExc_ValueError, @@ -40477,6 +32308,71 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, } #endif +/* Import */ + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *empty_list = 0; + PyObject *module = 0; + PyObject *global_dict = 0; + PyObject *empty_dict = 0; + PyObject *list; + #if PY_MAJOR_VERSION < 3 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); + if (!py_import) + goto bad; + #endif + if (from_list) + list = from_list; + else { + empty_list = PyList_New(0); + if (!empty_list) + goto bad; + list = empty_list; + } + global_dict = PyModule_GetDict(__pyx_m); + if (!global_dict) + goto bad; + empty_dict = PyDict_New(); + if (!empty_dict) + goto bad; + { + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { + if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) { + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, 1); + if (!module) { + if (!PyErr_ExceptionMatches(PyExc_ImportError)) + goto bad; + PyErr_Clear(); + } + } + level = 0; + } + #endif + if (!module) { + #if PY_MAJOR_VERSION < 3 + PyObject *py_level = PyInt_FromLong(level); + if (!py_level) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, global_dict, empty_dict, list, py_level, (PyObject *)NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, level); + #endif + } + } +bad: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_import); + #endif + Py_XDECREF(empty_list); + Py_XDECREF(empty_dict); + return module; +} + /* FastTypeChecks */ #if CYTHON_COMPILING_IN_CPYTHON static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { @@ -40706,6 +32602,38 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); } +/* ImportFrom */ + static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Format(PyExc_ImportError, + #if PY_MAJOR_VERSION < 3 + "cannot import name %.230s", PyString_AS_STRING(name)); + #else + "cannot import name %S", name); + #endif + } + return value; +} + +/* HasAttr */ + static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { + PyObject *r; + if (unlikely(!__Pyx_PyBaseString_Check(n))) { + PyErr_SetString(PyExc_TypeError, + "hasattr(): attribute name must be string"); + return -1; + } + r = __Pyx_GetAttr(o, n); + if (unlikely(!r)) { + PyErr_Clear(); + return 0; + } else { + Py_DECREF(r); + return 1; + } +} + /* PyObject_GenericGetAttrNoDict */ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { @@ -41265,24 +33193,6 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig) return (target_type) value;\ } -/* ToPyCTupleUtility */ - static PyObject* __pyx_convert__to_py___pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T(__pyx_ctuple___dunderpyx_t_7_squish_INT_T__and___dunderpyx_t_7_squish_INT_T value) { - PyObject* item = NULL; - PyObject* result = PyTuple_New(2); - if (!result) goto bad; - item = __Pyx_PyInt_From_npy_int64(value.f0); - if (!item) goto bad; - PyTuple_SET_ITEM(result, 0, item); - item = __Pyx_PyInt_From_npy_int64(value.f1); - if (!item) goto bad; - PyTuple_SET_ITEM(result, 1, item); - return result; -bad: - Py_XDECREF(item); - Py_XDECREF(result); - return NULL; -} - /* TypeInfoCompare */ static int __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b) @@ -41506,7 +33416,7 @@ no_fail: } /* ObjectToMemviewSlice */ - static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_7_squish_FLOAT_T(PyObject *obj, int writable_flag) { + static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_6squish_4core_FLOAT_T(PyObject *obj, int writable_flag) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; @@ -41517,7 +33427,7 @@ no_fail: } retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 2, - &__Pyx_TypeInfo_nn___pyx_t_7_squish_FLOAT_T, stack, + &__Pyx_TypeInfo_nn___pyx_t_6squish_4core_FLOAT_T, stack, &result, obj); if (unlikely(retcode == -1)) goto __pyx_fail; @@ -41529,7 +33439,7 @@ __pyx_fail: } /* ObjectToMemviewSlice */ - static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_7_squish_INT_T(PyObject *obj, int writable_flag) { + static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_6squish_4core_INT_T(PyObject *obj, int writable_flag) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; @@ -41540,7 +33450,7 @@ __pyx_fail: } retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 2, - &__Pyx_TypeInfo_nn___pyx_t_7_squish_INT_T, stack, + &__Pyx_TypeInfo_nn___pyx_t_6squish_4core_INT_T, stack, &result, obj); if (unlikely(retcode == -1)) goto __pyx_fail; @@ -41552,19 +33462,19 @@ __pyx_fail: } /* MemviewDtypeToObject */ - static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_7_squish_INT_T(const char *itemp) { - return (PyObject *) __Pyx_PyInt_From_npy_int64(*(__pyx_t_7_squish_INT_T *) itemp); + static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_6squish_4core_INT_T(const char *itemp) { + return (PyObject *) __Pyx_PyInt_From_npy_int64(*(__pyx_t_6squish_4core_INT_T *) itemp); } -static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_7_squish_INT_T(const char *itemp, PyObject *obj) { - __pyx_t_7_squish_INT_T value = __Pyx_PyInt_As_npy_int64(obj); +static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_6squish_4core_INT_T(const char *itemp, PyObject *obj) { + __pyx_t_6squish_4core_INT_T value = __Pyx_PyInt_As_npy_int64(obj); if ((value == ((npy_int64)-1)) && PyErr_Occurred()) return 0; - *(__pyx_t_7_squish_INT_T *) itemp = value; + *(__pyx_t_6squish_4core_INT_T *) itemp = value; return 1; } /* ObjectToMemviewSlice */ - static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_7_squish_FLOAT_T(PyObject *obj, int writable_flag) { + static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_6squish_4core_FLOAT_T(PyObject *obj, int writable_flag) { __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_BufFmt_StackElem stack[1]; int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) }; @@ -41575,7 +33485,7 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_7_squish_INT_T(const char } retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0, PyBUF_RECORDS_RO | writable_flag, 1, - &__Pyx_TypeInfo_nn___pyx_t_7_squish_FLOAT_T, stack, + &__Pyx_TypeInfo_nn___pyx_t_6squish_4core_FLOAT_T, stack, &result, obj); if (unlikely(retcode == -1)) goto __pyx_fail; @@ -41587,14 +33497,14 @@ __pyx_fail: } /* MemviewDtypeToObject */ - static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_7_squish_FLOAT_T(const char *itemp) { - return (PyObject *) PyFloat_FromDouble(*(__pyx_t_7_squish_FLOAT_T *) itemp); + static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_6squish_4core_FLOAT_T(const char *itemp) { + return (PyObject *) PyFloat_FromDouble(*(__pyx_t_6squish_4core_FLOAT_T *) itemp); } -static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_7_squish_FLOAT_T(const char *itemp, PyObject *obj) { - __pyx_t_7_squish_FLOAT_T value = __pyx_PyFloat_AsDouble(obj); +static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_6squish_4core_FLOAT_T(const char *itemp, PyObject *obj) { + __pyx_t_6squish_4core_FLOAT_T value = __pyx_PyFloat_AsDouble(obj); if ((value == ((npy_float64)-1)) && PyErr_Occurred()) return 0; - *(__pyx_t_7_squish_FLOAT_T *) itemp = value; + *(__pyx_t_6squish_4core_FLOAT_T *) itemp = value; return 1; } @@ -42169,202 +34079,6 @@ raise_neg_overflow: return (npy_int64) -1; } -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const long neg_one = (long) -1, const_zero = (long) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(long) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } -#endif - if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int64(npy_int64 value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC @@ -42833,6 +34547,202 @@ raise_neg_overflow: return (int) -1; } +/* CIntFromPy */ + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(long) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (long) 0; + case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) + case 2: + if (8 * sizeof(long) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(long) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(long) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(long) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (long) 0; + case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) + case -2: + if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(long) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(long) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(long) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } +#endif + if (sizeof(long) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + long val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (long) -1; + } + } else { + long val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (long) -1; + val = __Pyx_PyInt_As_long(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC @@ -43083,6 +34993,128 @@ raise_neg_overflow: return 0; } +/* VoidPtrExport */ + static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig) { + PyObject *d; + PyObject *cobj = 0; + d = PyDict_GetItem(__pyx_d, __pyx_n_s_pyx_capi); + Py_XINCREF(d); + if (!d) { + d = PyDict_New(); + if (!d) + goto bad; + if (__Pyx_PyObject_SetAttrStr(__pyx_m, __pyx_n_s_pyx_capi, d) < 0) + goto bad; + } +#if PY_VERSION_HEX >= 0x02070000 + cobj = PyCapsule_New(p, sig, 0); +#else + cobj = PyCObject_FromVoidPtrAndDesc(p, (void *)sig, 0); +#endif + if (!cobj) + goto bad; + if (PyDict_SetItem(d, name, cobj) < 0) + goto bad; + Py_DECREF(cobj); + Py_DECREF(d); + return 0; +bad: + Py_XDECREF(cobj); + Py_XDECREF(d); + return -1; +} + +/* FunctionExport */ + static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) { + PyObject *d = 0; + PyObject *cobj = 0; + union { + void (*fp)(void); + void *p; + } tmp; + d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__"); + if (!d) { + PyErr_Clear(); + d = PyDict_New(); + if (!d) + goto bad; + Py_INCREF(d); + if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0) + goto bad; + } + tmp.fp = f; +#if PY_VERSION_HEX >= 0x02070000 + cobj = PyCapsule_New(tmp.p, sig, 0); +#else + cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0); +#endif + if (!cobj) + goto bad; + if (PyDict_SetItemString(d, name, cobj) < 0) + goto bad; + Py_DECREF(cobj); + Py_DECREF(d); + return 0; +bad: + Py_XDECREF(cobj); + Py_XDECREF(d); + return -1; +} + +/* FunctionImport */ + #ifndef __PYX_HAVE_RT_ImportFunction +#define __PYX_HAVE_RT_ImportFunction +static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) { + PyObject *d = 0; + PyObject *cobj = 0; + union { + void (*fp)(void); + void *p; + } tmp; + d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); + if (!d) + goto bad; + cobj = PyDict_GetItemString(d, funcname); + if (!cobj) { + PyErr_Format(PyExc_ImportError, + "%.200s does not export expected C function %.200s", + PyModule_GetName(module), funcname); + goto bad; + } +#if PY_VERSION_HEX >= 0x02070000 + if (!PyCapsule_IsValid(cobj, sig)) { + PyErr_Format(PyExc_TypeError, + "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", + PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj)); + goto bad; + } + tmp.p = PyCapsule_GetPointer(cobj, sig); +#else + {const char *desc, *s1, *s2; + desc = (const char *)PyCObject_GetDesc(cobj); + if (!desc) + goto bad; + s1 = desc; s2 = sig; + while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } + if (*s1 != *s2) { + PyErr_Format(PyExc_TypeError, + "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", + PyModule_GetName(module), funcname, sig, desc); + goto bad; + } + tmp.p = PyCObject_AsVoidPtr(cobj);} +#endif + *f = tmp.fp; + if (!(*f)) + goto bad; + Py_DECREF(d); + return 0; +bad: + Py_XDECREF(d); + return -1; +} +#endif + /* InitStrings */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { diff --git a/squish/voronoi.pxd b/squish/voronoi.pxd new file mode 100644 index 0000000..b6b7a5d --- /dev/null +++ b/squish/voronoi.pxd @@ -0,0 +1,99 @@ +cimport numpy as np +from squish.core cimport INT_T, FLOAT_T, IArray, FArray, Vector2D, Matrix2x2 + +# Psuedo-class that handles caching for sites. +ctypedef struct SiteCacheMap: + INT_T iarea, iperim, iisoparam, ienergy, iavg_radius, icentroid, imaxcenter + + FLOAT_T (*area)(Site*, FLOAT_T) nogil + FLOAT_T (*perim)(Site*, FLOAT_T) nogil + FLOAT_T (*isoparam)(Site*, FLOAT_T) nogil + FLOAT_T (*energy)(Site*, FLOAT_T) nogil + FLOAT_T (*avg_radius)(Site*, FLOAT_T) nogil + + Vector2D (*centroid)(Site*, Vector2D) nogil + Vector2D (*maxcenter)(Site*, Vector2D) nogil + +# Psuedo-class that handles caching for edges. +ctypedef struct EdgeCacheMap: + INT_T iH, ila, ida, ixij, idVdv, ila_mag, ida_mag, iarea_p, icalI, size + + Matrix2x2 (*H)(HalfEdge*, Matrix2x2) nogil + + Vector2D (*la)(HalfEdge*, Vector2D) nogil + Vector2D (*da)(HalfEdge*, Vector2D) nogil + Vector2D (*xij)(HalfEdge*, Vector2D) nogil + Vector2D (*dVdv)(HalfEdge*, Vector2D) nogil + + FLOAT_T (*la_mag)(HalfEdge*, FLOAT_T) nogil + FLOAT_T (*da_mag)(HalfEdge*, FLOAT_T) nogil + FLOAT_T (*area_p)(HalfEdge*, FLOAT_T) nogil + FLOAT_T (*calI)(HalfEdge*, FLOAT_T) nogil + +# Psuedo-class to just contain all pertaining info for sites and edges. +ctypedef struct VoronoiInfo: + IArray sites, edges + FArray points, vertices, site_cache, edge_cache + EdgeCacheMap* edge_cache_map + +# Psuedo-class for a Site. +ctypedef struct Site: + INT_T arr_index + VoronoiInfo* info + SiteCacheMap* cache + + INT_T (*index)(Site*) nogil + Vector2D (*vec)(Site*) nogil + HalfEdge (*edge)(Site*) nogil + INT_T (*edge_num)(Site*) nogil + +# Psuedo-class for an HalfEdge. +ctypedef struct HalfEdge: + INT_T orig_arr_index, arr_index + VoronoiInfo* info + EdgeCacheMap* cache + + INT_T (*origin_index)(HalfEdge*) nogil + Vector2D (*origin)(HalfEdge*) nogil + Site (*face)(HalfEdge*) nogil + HalfEdge (*next)(HalfEdge*) nogil + HalfEdge (*prev)(HalfEdge*) nogil + HalfEdge (*twin)(HalfEdge*) nogil + Matrix2x2 (*get_H)(HalfEdge*, Site) nogil + + +cdef class VoronoiContainer: + cdef readonly INT_T n + cdef readonly FLOAT_T w, h, r, energy + cdef FLOAT_T [2] dim + cdef FLOAT_T [:, ::1] points, vertices, site_cache, edge_cache, grad + cdef INT_T [:, ::1] sites, edges + cdef EdgeCacheMap* edge_cache_map + cdef dict __dict__ + + cdef void calculate_voronoi(VoronoiContainer self, + np.ndarray[FLOAT_T, ndim=2] site_arr) except * + cdef void generate_dcel(VoronoiContainer self) except * + cdef void common_cache(VoronoiContainer self) except * + cdef void precompute(self) except * + cdef void calc_grad(self) except * + cdef void get_statistics(VoronoiContainer self) except * + + @staticmethod + cdef inline Matrix2x2 calc_H(HalfEdge, HalfEdge) nogil + @staticmethod + cdef inline bint sign(FLOAT_T [::1], FLOAT_T [::1], FLOAT_T [::1]) + + + +cdef SiteCacheMap _SiteCacheMap(INT_T, INT_T, INT_T, INT_T, INT_T, INT_T, INT_T) nogil +cdef EdgeCacheMap _EdgeCacheMap(INT_T, INT_T, INT_T, INT_T, INT_T, INT_T, INT_T, + INT_T, INT_T, INT_T) nogil +cdef VoronoiInfo _VoronoiInfo(INT_T [:, ::1], INT_T[:, ::1], FLOAT_T[:, ::1], + FLOAT_T[:, ::1], FLOAT_T[:, ::1], FLOAT_T[:, ::1], + EdgeCacheMap*) nogil +cdef Site _Site(INT_T, VoronoiInfo*) nogil +cdef HalfEdge _HalfEdge(INT_T, VoronoiInfo*) nogil + +cdef Vector2D NAN_VECTOR +cdef Matrix2x2 R, NAN_MATRIX diff --git a/squish/voronoi.pyx b/squish/voronoi.pyx new file mode 100644 index 0000000..2c203bf --- /dev/null +++ b/squish/voronoi.pyx @@ -0,0 +1,736 @@ +import array, scipy.spatial, numpy as np +from timeit import default_timer as timer +from cython.parallel import parallel, prange + +cimport numpy as np +from cpython cimport array +from libc.math cimport isnan, NAN, pi as PI + +from squish.core cimport INT_T, FLOAT_T, \ + IArray, FArray, Vector2D, Matrix2x2, \ + _IArray, _FArray, _Vector2D, _Matrix2x2 + +from squish.voronoi cimport SiteCacheMap, EdgeCacheMap, VoronoiInfo, Site, HalfEdge + +#### Constants #### + +INT = np.int64 +FLOAT = np.float64 + +cdef Vector2D NAN_VECTOR = _Vector2D(NAN, NAN) +cdef Matrix2x2 NAN_MATRIX = _Matrix2x2(NAN, NAN, NAN, NAN) + +cdef FLOAT_T[18] SYMM = [0,0, 1,0, 1,1, 0,1, -1,1, -1,0, -1,-1, 0,-1, 1,-1] +cdef Matrix2x2 R = _Matrix2x2(0, -1, 1, 0) + +cdef SiteCacheMap SITE_CACHE_MAP = _SiteCacheMap(0, 1, 2, 3, 4, 5, -1) + +#### SiteCacheMap Methods #### + +cdef inline SiteCacheMap _SiteCacheMap(INT_T iarea, INT_T iperim, INT_T iisoparam, + INT_T ienergy, INT_T iavg_radius, + INT_T icentroid, INT_T imaxcenter) nogil: + cdef SiteCacheMap sc + sc.iarea, sc.iperim, sc.iisoparam, sc.ienergy, sc.iavg_radius = ( + iarea, iperim, iisoparam, ienergy, iavg_radius + ) + sc.icentroid, sc.imaxcenter = icentroid, imaxcenter + + sc.area, sc.perim, sc.isoparam, sc.energy, sc.avg_radius = ( + area, perim, isoparam, energy, avg_radius + ) + sc.centroid, sc.maxcenter = centroid, maxcenter + + return sc + +cdef inline FLOAT_T area(Site* self, FLOAT_T val) nogil: + if isnan(val): + return self.info.site_cache.get(&self.info.site_cache, + (self.arr_index, self.cache.iarea) + ) + else: + self.info.site_cache.set(&self.info.site_cache, + (self.arr_index, self.cache.iarea), val) + return val + +cdef inline FLOAT_T perim(Site* self, FLOAT_T val) nogil: + if isnan(val): + return self.info.site_cache.get(&self.info.site_cache, + (self.arr_index, self.cache.iperim) + ) + else: + self.info.site_cache.set(&self.info.site_cache, + (self.arr_index, self.cache.iperim), val) + return val + +cdef inline FLOAT_T isoparam(Site* self, FLOAT_T val) nogil: + if isnan(val): + return self.info.site_cache.get(&self.info.site_cache, + (self.arr_index, self.cache.iisoparam) + ) + else: + self.info.site_cache.set(&self.info.site_cache, + (self.arr_index, self.cache.iisoparam), val) + return val + +cdef inline FLOAT_T energy(Site* self, FLOAT_T val) nogil: + if isnan(val): + return self.info.site_cache.get(&self.info.site_cache, + (self.arr_index, self.cache.ienergy) + ) + else: + self.info.site_cache.set(&self.info.site_cache, + (self.arr_index, self.cache.ienergy), val) + return val + +cdef inline FLOAT_T avg_radius(Site* self, FLOAT_T val) nogil: + if isnan(val): + return self.info.site_cache.get(&self.info.site_cache, + (self.arr_index, self.cache.iavg_radius) + ) + else: + self.info.site_cache.set(&self.info.site_cache, + (self.arr_index, self.cache.iavg_radius), val) + return val + +cdef inline Vector2D centroid(Site* self, Vector2D val) nogil: + if isnan(val.x): + return _Vector2D( + self.info.site_cache.get(&self.info.site_cache, + (self.arr_index, self.cache.icentroid) + ), + self.info.site_cache.get(&self.info.site_cache, + (self.arr_index, self.cache.icentroid+1) + ) + ) + else: + self.info.site_cache.set(&self.info.site_cache, + (self.arr_index, self.cache.icentroid), val.x) + self.info.site_cache.set(&self.info.site_cache, + (self.arr_index, self.cache.icentroid+1), val.y) + return val + +cdef inline Vector2D maxcenter(Site* self, Vector2D val) nogil: + if isnan(val.x): + return _Vector2D( + self.info.site_cache.get(&self.info.site_cache, + (self.arr_index, self.cache.imaxcenter) + ), + self.info.site_cache.get(&self.info.site_cache, + (self.arr_index, self.cache.imaxcenter+1) + ) + ) + else: + self.info.site_cache.set(&self.info.site_cache, + (self.arr_index, self.cache.imaxcenter), val.x) + self.info.site_cache.set(&self.info.site_cache, + (self.arr_index, self.cache.imaxcenter+1), val.y) + return val + + +#### EdgeCacheMap Methods #### + +cdef inline EdgeCacheMap _EdgeCacheMap(INT_T iH, INT_T ila, INT_T ida, INT_T ixij, + INT_T idVdv, INT_T ila_mag, INT_T ida_mag, + INT_T iarea_p, INT_T icalI, INT_T size) nogil: + cdef EdgeCacheMap ec + ec.iH, ec.ila, ec.ida, ec.ixij, ec.idVdv = iH, ila, ida, ixij, idVdv + ec.ila_mag, ec.ida_mag, ec.iarea_p, ec.icalI = ila_mag, ida_mag, iarea_p, icalI + ec.size = size + + ec.H, ec.la, ec.da, ec.xij, ec.dVdv = H, la, da, xij, dVdv + ec.la_mag, ec.da_mag, ec.area_p, ec.calI = la_mag, da_mag, area_p, calI + + return ec + +cdef inline Matrix2x2 H(HalfEdge* self, Matrix2x2 val) nogil: + if isnan(val.a): + return _Matrix2x2( + self.info.edge_cache.get(&self.info.edge_cache, + (self.arr_index, self.cache.iH) + ), + self.info.edge_cache.get(&self.info.edge_cache, + (self.arr_index, self.cache.iH+1) + ), + self.info.edge_cache.get(&self.info.edge_cache, + (self.arr_index, self.cache.iH+2) + ), + self.info.edge_cache.get(&self.info.edge_cache, + (self.arr_index, self.cache.iH+3) + ), + ) + else: + self.info.edge_cache.set(&self.info.edge_cache, + (self.arr_index, self.cache.iH), val.a) + self.info.edge_cache.set(&self.info.edge_cache, + (self.arr_index, self.cache.iH+1), val.b) + self.info.edge_cache.set(&self.info.edge_cache, + (self.arr_index, self.cache.iH+2), val.c) + self.info.edge_cache.set(&self.info.edge_cache, + (self.arr_index, self.cache.iH+3), val.d) + return val + +cdef inline Vector2D la(HalfEdge* self, Vector2D val) nogil: + if isnan(val.x): + return _Vector2D( + self.info.edge_cache.get(&self.info.edge_cache, + (self.arr_index, self.cache.ila) + ), + self.info.edge_cache.get(&self.info.edge_cache, + (self.arr_index, self.cache.ila+1) + ) + ) + else: + self.info.edge_cache.set(&self.info.edge_cache, + (self.arr_index, self.cache.ila), val.x) + self.info.edge_cache.set(&self.info.edge_cache, + (self.arr_index, self.cache.ila+1), val.y) + return val + +cdef inline Vector2D da(HalfEdge* self, Vector2D val) nogil: + if isnan(val.x): + return _Vector2D( + self.info.edge_cache.get(&self.info.edge_cache, + (self.arr_index, self.cache.ida) + ), + self.info.edge_cache.get(&self.info.edge_cache, + (self.arr_index, self.cache.ida+1) + ) + ) + else: + self.info.edge_cache.set(&self.info.edge_cache, + (self.arr_index, self.cache.ida), val.x) + self.info.edge_cache.set(&self.info.edge_cache, + (self.arr_index, self.cache.ida+1), val.y) + return val + +cdef inline Vector2D xij(HalfEdge* self, Vector2D val) nogil: + if isnan(val.x): + return _Vector2D( + self.info.edge_cache.get(&self.info.edge_cache, + (self.arr_index, self.cache.ixij) + ), + self.info.edge_cache.get(&self.info.edge_cache, + (self.arr_index, self.cache.ixij+1) + ) + ) + else: + self.info.edge_cache.set(&self.info.edge_cache, + (self.arr_index, self.cache.ixij), val.x) + self.info.edge_cache.set(&self.info.edge_cache, + (self.arr_index, self.cache.ixij+1), val.y) + return val + +cdef inline Vector2D dVdv(HalfEdge* self, Vector2D val) nogil: + if isnan(val.x): + return _Vector2D( + self.info.edge_cache.get(&self.info.edge_cache, + (self.arr_index, self.cache.idVdv) + ), + self.info.edge_cache.get(&self.info.edge_cache, + (self.arr_index, self.cache.idVdv+1) + ) + ) + else: + self.info.edge_cache.set(&self.info.edge_cache, + (self.arr_index, self.cache.idVdv), val.x) + self.info.edge_cache.set(&self.info.edge_cache, + (self.arr_index, self.cache.idVdv+1), val.y) + return val + +cdef inline FLOAT_T la_mag(HalfEdge* self, FLOAT_T val) nogil: + if isnan(val): + return self.info.edge_cache.get(&self.info.edge_cache, + (self.arr_index, self.cache.ila_mag) + ) + else: + self.info.edge_cache.set(&self.info.edge_cache, + (self.arr_index, self.cache.ila_mag), val) + return val + +cdef inline FLOAT_T da_mag(HalfEdge* self, FLOAT_T val) nogil: + if isnan(val): + return self.info.edge_cache.get(&self.info.edge_cache, + (self.arr_index, self.cache.ida_mag) + ) + else: + self.info.edge_cache.set(&self.info.edge_cache, + (self.arr_index, self.cache.ida_mag), val) + return val + +cdef inline FLOAT_T area_p(HalfEdge* self, FLOAT_T val) nogil: + if isnan(val): + return self.info.edge_cache.get(&self.info.edge_cache, + (self.arr_index, self.cache.iarea_p) + ) + else: + self.info.edge_cache.set(&self.info.edge_cache, + (self.arr_index, self.cache.iarea_p), val) + return val + +cdef inline FLOAT_T calI(HalfEdge* self, FLOAT_T val) nogil: + if isnan(val): + return self.info.edge_cache.get(&self.info.edge_cache, + (self.arr_index, self.cache.icalI) + ) + else: + self.info.edge_cache.set(&self.info.edge_cache, + (self.arr_index, self.cache.icalI), val) + return val + +#### VoronoiInfo Methods #### + +cdef inline VoronoiInfo _VoronoiInfo(INT_T [:, ::1] sites, INT_T [:, ::1] edges, + FLOAT_T [:, ::1] points, FLOAT_T [:, ::1] vertices, + FLOAT_T [:, ::1] site_cache, + FLOAT_T [:, ::1] edge_cache, + EdgeCacheMap* edge_cache_map) nogil: + cdef VoronoiInfo info + info.sites = _IArray(&sites[0,0], (sites.shape[0], sites.shape[1])) + info.edges = _IArray(&edges[0,0], (edges.shape[0], edges.shape[1])) + info.points = _FArray( + &points[0,0], + (points.shape[0], points.shape[1]) + ) + info.vertices = _FArray( + &vertices[0,0], + (vertices.shape[0], vertices.shape[1]) + ) + info.site_cache = _FArray( + &site_cache[0,0], + (site_cache.shape[0], site_cache.shape[1]) + ) + info.edge_cache = _FArray( + &edge_cache[0,0], + (edge_cache.shape[0], edge_cache.shape[1]) + ) + info.edge_cache_map = edge_cache_map + + return info + + +#### Site Methods #### + +cdef inline Site _Site(INT_T arr_index, VoronoiInfo* info) nogil: + cdef Site site + site.arr_index, site.info, site.cache = arr_index, info, &SITE_CACHE_MAP + + site.index, site.vec, site.edge, site.edge_num = index, vec, edge, edge_num + + return site + + +cdef inline INT_T index(Site* self) nogil: + return self.info.sites.get(&self.info.sites, (self.arr_index, 0)) + +cdef inline Vector2D vec(Site* self) nogil: + return _Vector2D( + self.info.points.get(&self.info.points, (self.index(self), 0)), + self.info.points.get(&self.info.points, (self.index(self), 1)) + ) + +cdef inline HalfEdge edge(Site* self) nogil: + return _HalfEdge( + self.info.sites.get(&self.info.sites, (self.arr_index, 1)), self.info + ) + +cdef inline INT_T edge_num(Site* self) nogil: + return self.info.sites.get(&self.info.sites, (self.arr_index, 2)) + + +#### HalfEdge Methods #### + +cdef inline HalfEdge _HalfEdge(INT_T arr_index, VoronoiInfo* info) nogil: + cdef HalfEdge e + e.arr_index, e.info, e.cache = arr_index, info, info.edge_cache_map + e.orig_arr_index = arr_index + + e.origin_index, e.origin, e.face, e.next, e.prev, e.twin, e.get_H = ( + origin_index, origin, face, edge_next, prev, twin, get_H + ) + + return e + + +cdef inline INT_T origin_index(HalfEdge* self) nogil: + return self.info.edges.get(&self.info.edges, (self.arr_index, 0)) + +cdef inline Vector2D origin(HalfEdge* self) nogil: + return _Vector2D( + self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 0)), + self.info.vertices.get(&self.info.vertices, (self.origin_index(self), 1)) + ) + +cdef inline Site face(HalfEdge* self) nogil: + return _Site( + self.info.edges.get(&self.info.edges, (self.arr_index, 1)), self.info + ) + +cdef inline HalfEdge edge_next(HalfEdge* self) nogil: + + return _HalfEdge( + self.info.edges.get(&self.info.edges, (self.arr_index, 2)), self.info + ) + +cdef inline HalfEdge prev(HalfEdge* self) nogil: + return _HalfEdge( + self.info.edges.get(&self.info.edges, (self.arr_index, 3)), self.info + ) + +cdef inline HalfEdge twin(HalfEdge* self) nogil: + return _HalfEdge( + self.info.edges.get(&self.info.edges, (self.arr_index, 4)), self.info + ) + +cdef inline Matrix2x2 get_H(HalfEdge* self, Site xi) nogil: + cdef INT_T this_e = self.origin_index(self) + cdef HalfEdge s_e = xi.edge(&xi) + + for _ in range(xi.edge_num(&xi)): + if s_e.origin_index(&s_e) == this_e: + return s_e.cache.H(&s_e, NAN_MATRIX) + s_e = s_e.next(&s_e) + return _Matrix2x2(0.0, 0.0, 0.0, 0.0) + + +cdef class VoronoiContainer: + """ + Class for Voronoi diagrams, stored in a modified DCEL. + :param n: [int] how many sites to generate. + :param w: [float] width of the bounding domain. + :param h: [float] height of the bounding domain. + :param r: [float] radius of zero energy circle. + :param sites: np.ndarray collection of sites. + """ + + def __init__(VoronoiContainer self, INT_T n, FLOAT_T w, FLOAT_T h, FLOAT_T r, + object site_arr): + self.n, self.w, self.h, self.r = n, w, h, r + self.dim = [w, h] + + self.calculate_voronoi(site_arr.astype(FLOAT)) + self.generate_dcel() + + self.common_cache() + self.precompute() + self.calc_grad() + self.get_statistics() + + cdef void calculate_voronoi(VoronoiContainer self, + np.ndarray[FLOAT_T, ndim=2] site_arr) except *: + """ + Does all necessary computation and caching once points are set. + :param site_arr: initial points for this container. + """ + global SYMM + cdef np.ndarray[FLOAT_T, ndim=2] symm = np.asarray(SYMM).reshape(9,2) + cdef np.ndarray[FLOAT_T, ndim=1] dim = np.asarray(self.dim) + cdef np.ndarray[FLOAT_T, ndim=2] full_site_arr = np.empty( + (self.n*9+8, 2), + dtype=FLOAT + ) + + # Generate periodic sites and sites that bound periodic sites. + cdef INT_T i + for i in range(9): + full_site_arr[self.n*i:self.n*(i+1)] = site_arr + symm[i]*dim + if i > 0: + full_site_arr[9*self.n+i-1] = dim/2 + 2*dim*symm[i] + + # Use SciPy to compute the Voronoi set. + self.scipy_vor = scipy.spatial.Voronoi(full_site_arr) + self.points = self.scipy_vor.points + self.vertices = self.scipy_vor.vertices + + + cdef void generate_dcel(VoronoiContainer self) except *: + cdef array.array int_tmplt = array.array('q', []) + + cdef np.ndarray[INT_T, ndim=1] offsets = np.zeros(self.n*9+1, dtype=INT) + cdef array.array vert_indices = array.clone(int_tmplt, 0, False) + + # Flatten regions into array, so it can be used later. + cdef INT_T i + for i in range(self.n*9): + verts = self.scipy_vor.regions[self.scipy_vor.point_region[i]] + offsets[i+1] = offsets[i] + len(verts) # Build offsets. + vert_indices.extend(array.array('q', verts)) # Flatten + + # Get vertices of original N sites. + cdef np.ndarray[INT_T, ndim=1] vert_indices_np = np.asarray(vert_indices) + cdef np.ndarray[INT_T, ndim=1] border_sites = np.unique(np.searchsorted( + np.asarray(offsets), # Check indices where below matches would be inserted + np.nonzero(np.isin( # Indices of other verts being in bound verts. + vert_indices_np[offsets[self.n]:], # Rest of the verts to check. + np.unique(vert_indices_np[:offsets[self.n]]) # Bound verts + ))[0] + offsets[self.n], + side='right' # If on index == offset_number, should be part of the next site. + ) - 1) # Subtract by one to get actual site number. + + cdef INT_T border_num = len(border_sites) + + # Build sites array. + # [Site Index, Edge Index/Offset, Edge Count] + self.sites = np.empty((self.n+border_num, 3), dtype=INT) + self.sites.base[:self.n, 0] = np.arange(self.n, dtype=INT) + self.sites.base[self.n:, 0] = border_sites + self.sites.base[:self.n+1, 1] = offsets[:self.n+1] + for i in range(self.n): + self.sites[i, 2] = self.sites[i+1, 1] - self.sites[i, 1] + + cdef INT_T edge_count = offsets[self.n] + cdef INT_T diff + for i in range(border_num): + diff = offsets[border_sites[i]+1] - offsets[border_sites[i]] + edge_count += diff + self.sites[self.n+i, 2] = diff + if i < border_num - 1: + self.sites[self.n+i+1, 1] = self.sites[self.n+i, 1] + diff + + # Build edges array + # [Origin Index, Site Index, Next Index, Prev Index, Twin Index] + self.edges = np.empty((edge_count, 5), dtype=INT) + cdef np.ndarray[INT_T, ndim=1] site_verts + cdef INT_T j, site_i, edge_i, edge_offset, vert_num, twin_index + + edge_indices = dict() + + for i in range(self.n + border_num): + site_i = self.sites[i, 0] + edge_offset = self.sites[i, 1] + site_verts = vert_indices_np[offsets[site_i]:offsets[site_i+1]] + + # Scipy outputs sorted vertices, but reverse if not counterclockwise. + if not VoronoiContainer.sign(self.points[site_i], + self.vertices[site_verts[0]], self.vertices[site_verts[1]]): + site_verts = np.flip(site_verts) + + vert_num = offsets[site_i+1] - offsets[site_i] + + for j in range(vert_num): + edge_i = edge_offset+j + self.edges[edge_i, 0] = site_verts[j] + self.edges[edge_i, 1] = i + # Add vert_num because of C modulo to get always positive. + self.edges[edge_i, 2] = (j+vert_num+1) % vert_num + edge_offset + self.edges[edge_i, 3] = (j+vert_num-1) % vert_num + edge_offset + + # Get reversed tuple to theck for twin. + twin_index = edge_indices.get( + (site_verts[(j+1) % vert_num], site_verts[j] + ), -1) + + self.edges[edge_i, 4] = twin_index + if twin_index == -1: + edge_indices[(site_verts[j], site_verts[(j+1) % vert_num])] = \ + j + edge_offset + else: + self.edges[twin_index, 4] = j + edge_offset + + self.site_cache = np.empty((self.n + border_num, 7), dtype=FLOAT) + self.edge_cache = np.empty((edge_count, self.edge_cache_map.size), dtype=FLOAT) + + + cdef void common_cache(VoronoiContainer self) except *: + cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + + cdef Site xi + cdef HalfEdge em, ep + cdef Vector2D p, q, la, da, Rla, centroid, cent_part + + cdef FLOAT_T [:] area = np.zeros(self.sites.shape[0], dtype=FLOAT) + cdef FLOAT_T [:] perim = np.zeros(self.sites.shape[0], dtype=FLOAT) + + cdef INT_T i, j + cdef FLOAT_T area_p, la_mag + for i in prange(self.sites.shape[0], nogil=True): + xi = _Site(i, &info) + centroid = _Vector2D(0, 0) + em = xi.edge(&xi) + j = 0 + while j < xi.edge_num(&xi): + ep = em.next(&em) + p, q = em.origin(&em), ep.origin(&ep) + # vp - vm, vm - xi + la, da = q.copy.vsub(&q, p), p.copy.vsub(&p, xi.vec(&xi)) + la_mag = la.mag(&la) + area_p = la.dot(&la, da.rot(&da)) + Rla = la.rot(&la) + + # Calculating centroid. + cent_part = p.copy.vadd(&p, q) + cent_part.self.vadd(¢_part, xi.vec(&xi)) + centroid.self.vadd(¢roid, cent_part.copy.smul(¢_part, area_p)) + + # Caching + em.cache.la(&em, la) + em.cache.la_mag(&em, la_mag) + em.cache.da(&em, da) + em.cache.da_mag(&em, da.mag(&da)) + em.cache.area_p(&em, area_p) + em.cache.xij(&em, Rla.copy.smul(&Rla, -area_p/la.dot(&la, la))) + + area[i] += area_p + perim[i] += la_mag + + em = em.next(&em) + j = j + 1 + + xi.cache.area(&xi, area[i]/2) + xi.cache.perim(&xi, perim[i]) + xi.cache.isoparam(&xi, 2*PI*area[i]/(perim[i]**2)) + xi.cache.centroid(&xi, centroid.copy.sdiv(¢roid, 3*area[i])) + + + @staticmethod + cdef inline Matrix2x2 calc_H(HalfEdge em, HalfEdge ep) nogil: + cdef Vector2D xmv, xpv, im, mp, right, Rpm, Rim, f + cdef Matrix2x2 h + cdef FLOAT_T im2, mp2 + + # Vectors from xi to xm and xp. + xmv, xpv = em.cache.xij(&em, NAN_VECTOR), ep.cache.xij(&ep, NAN_VECTOR) + im, mp = xmv.copy.neg(&xmv), xmv.copy.vsub(&xmv, xpv) # -xmv, xmv - xpv + im2, mp2 = -(xmv.dot(&xmv, xmv)), xmv.dot(&xmv, xmv) - xpv.dot(&xpv, xpv) + # (-xmv*xmv, xmv*xmv - xpv*xpv) + right = _Vector2D(im2, mp2) + Rpm, Rim = R.vecmul(&R, mp.copy.neg(&mp)), im.rot(&im) # R*-mp, R*im + + h = _Matrix2x2(Rpm.x, Rim.x, Rpm.y, Rim.y) # [Rpm | Rim], h is temporary. + f = h.vecmul(&h, right) # [Rpm | Rim]*right + h = R.copy.smul(&R, mp2*(2*mp.dot(&mp, Rim))) # fp*g, g is a scalar. + # (fp*g - f*gp)/(g**2). f is a column vector, gp = 2*Rpm is a row vector. + h.self.msub(&h, _Matrix2x2( + f.x*2*Rpm.x, f.x*2*Rpm.y, f.y*2*Rpm.x, f.y*2*Rpm.y + )) + h.self.sdiv(&h, (2*mp.dot(&mp, Rim))**2) + + return h + + + @staticmethod + cdef inline bint sign(FLOAT_T [::1] ref, FLOAT_T [::1] p, FLOAT_T [::1] q): + """ + Outputs if p2 - self is counterclockwise of p1 - self. + :param p1: [List[float]] first vector + :param p2: [List[float]] second vector + :return: [bool] returns if counterclockwise. + """ + return ((q[0] - ref[0])*-(p[1] - ref[1]) + \ + (q[1] - ref[1])*(p[0] - ref[0])) >= 0 + + # global ROT + # cdef np.ndarray[FLOAT_T, ndim=2] rot = np.asarray(ROT).reshape(2,2) + # return (q - ref).dot(rot.dot(p - ref)) >= 0 + + cdef void precompute(self) except *: + pass + + cdef void calc_grad(self) except *: + pass + + cdef void get_statistics(self) except *: + self.stats = {} + cache = self.site_cache[:self.n, :] + + self.stats["site_areas"] = np.asarray(cache[:, SITE_CACHE_MAP.iarea]) + self.stats["site_edge_count"] = np.asarray(self.sites[:self.n, 2]) + + self.stats["site_isos"] = np.asarray(cache[:, SITE_CACHE_MAP.iisoparam]) + self.stats["site_energies"] = np.asarray(cache[:, SITE_CACHE_MAP.ienergy]) + self.stats["avg_radius"] = np.asarray(cache[:, SITE_CACHE_MAP.iavg_radius]) + self.stats["centroids"] = np.asarray( + cache[:, SITE_CACHE_MAP.icentroid:SITE_CACHE_MAP.icentroid+2] + ) + + self.stats["isoparam_avg"] = self.stats["site_areas"] / \ + (PI*self.stats["avg_radius"]**2) + + edges = np.asarray(self.edges) + + mask = np.nonzero(edges[:, 0] != -1)[0] + all_edges = mask[(mask % 2 == 0)] + caches = edges[all_edges, 4] + + edge_cache = np.asarray(self.edge_cache) + + self.stats["edge_lengths"] = edge_cache[caches, self.edge_cache_map.ila_mag] + + @property + def site_arr(self): + return np.asarray(self.points[:self.n], dtype=FLOAT) + + @property + def vor_data(self): + return self.scipy_vor + + @property + def gradient(self): + return np.asarray(self.grad, dtype=FLOAT) + + def add_sites(self, add): + return (self.site_arr + add) % np.asarray(self.dim, dtype=FLOAT) + + def iterate(self, FLOAT_T step): + k1 = self.gradient + k2 = self.__class__(self.n, self.w, self.h, self.r, + self.add_sites(step*k1) + ).gradient + + return (step/2)*(k1+k2), k1 + + + def hessian(self, d: float) -> np.ndarray: + """ + Obtains the approximate Hessian. + :param d: [float] small d for approximation. + :return: 2Nx2N array that represents Hessian. + """ + HE = np.zeros((2*self.n, 2*self.n)) + new_sites = np.copy(self.site_arr) # Maintain one copy for speed. + for i in range(self.n): + for j in range(2): + mod = self.w if j == 0 else self.h + new_sites[i][j] = (new_sites[i][j] + d) % mod + Ep = self.__class__(self.n, self.w, self.h, self.r, new_sites) + new_sites[i][j] = (new_sites[i][j] - 2*d) % mod + Em = self.__class__(self.n, self.w, self.h, self.r, new_sites) + new_sites[i][j] = (new_sites[i][j] + d) % mod + + HE[:, 2*i+j] = ((Ep.gradient - Em.gradient)/(2*d)).flatten() + + # Average out discrepencies, since it should be symmetric. + for i in range(2*self.n): + for j in range(i, 2*self.n): + HE[i][j] = (HE[i][j] + HE[j][i])/2 + HE[j][i] = HE[i][j] + + return HE + + + def site_vert_arr(self): # -> List[np.ndarray] + cdef VoronoiInfo info = _VoronoiInfo(self.sites, self.edges, self.points, + self.vertices, self.site_cache, self.edge_cache, self.edge_cache_map) + + cdef INT_T i, j + cdef Site xi + cdef HalfEdge e + cdef Vector2D v + + sites, site_verts = [], [] + + for i in range(self.n): + xi = _Site(i, &info) + v = xi.vec(&xi) + sites.append(np.array([v.x, v.y])) + verts = np.empty((xi.edge_num(&xi), 2)) + e = xi.edge(&xi) + for j in range(xi.edge_num(&xi)): + v = e.origin(&e) + verts[j, 0], verts[j, 1] = v.x, v.y + e = e.next(&e) + + site_verts.append(verts) + + return sites, site_verts