pyvale 2026.1.1__cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (860) hide show
  1. include/eigen3/Eigen/Cholesky +45 -0
  2. include/eigen3/Eigen/CholmodSupport +48 -0
  3. include/eigen3/Eigen/Core +384 -0
  4. include/eigen3/Eigen/Dense +7 -0
  5. include/eigen3/Eigen/Eigen +2 -0
  6. include/eigen3/Eigen/Eigenvalues +60 -0
  7. include/eigen3/Eigen/Geometry +59 -0
  8. include/eigen3/Eigen/Householder +29 -0
  9. include/eigen3/Eigen/IterativeLinearSolvers +48 -0
  10. include/eigen3/Eigen/Jacobi +32 -0
  11. include/eigen3/Eigen/KLUSupport +41 -0
  12. include/eigen3/Eigen/LU +47 -0
  13. include/eigen3/Eigen/MetisSupport +35 -0
  14. include/eigen3/Eigen/OrderingMethods +70 -0
  15. include/eigen3/Eigen/PaStiXSupport +49 -0
  16. include/eigen3/Eigen/PardisoSupport +35 -0
  17. include/eigen3/Eigen/QR +50 -0
  18. include/eigen3/Eigen/QtAlignedMalloc +39 -0
  19. include/eigen3/Eigen/SPQRSupport +34 -0
  20. include/eigen3/Eigen/SVD +50 -0
  21. include/eigen3/Eigen/Sparse +34 -0
  22. include/eigen3/Eigen/SparseCholesky +37 -0
  23. include/eigen3/Eigen/SparseCore +69 -0
  24. include/eigen3/Eigen/SparseLU +50 -0
  25. include/eigen3/Eigen/SparseQR +36 -0
  26. include/eigen3/Eigen/StdDeque +27 -0
  27. include/eigen3/Eigen/StdList +26 -0
  28. include/eigen3/Eigen/StdVector +27 -0
  29. include/eigen3/Eigen/SuperLUSupport +64 -0
  30. include/eigen3/Eigen/UmfPackSupport +40 -0
  31. include/eigen3/Eigen/src/Cholesky/LDLT.h +688 -0
  32. include/eigen3/Eigen/src/Cholesky/LLT.h +558 -0
  33. include/eigen3/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
  34. include/eigen3/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
  35. include/eigen3/Eigen/src/Core/ArithmeticSequence.h +413 -0
  36. include/eigen3/Eigen/src/Core/Array.h +417 -0
  37. include/eigen3/Eigen/src/Core/ArrayBase.h +226 -0
  38. include/eigen3/Eigen/src/Core/ArrayWrapper.h +209 -0
  39. include/eigen3/Eigen/src/Core/Assign.h +90 -0
  40. include/eigen3/Eigen/src/Core/AssignEvaluator.h +1010 -0
  41. include/eigen3/Eigen/src/Core/Assign_MKL.h +178 -0
  42. include/eigen3/Eigen/src/Core/BandMatrix.h +353 -0
  43. include/eigen3/Eigen/src/Core/Block.h +448 -0
  44. include/eigen3/Eigen/src/Core/BooleanRedux.h +162 -0
  45. include/eigen3/Eigen/src/Core/CommaInitializer.h +164 -0
  46. include/eigen3/Eigen/src/Core/ConditionEstimator.h +175 -0
  47. include/eigen3/Eigen/src/Core/CoreEvaluators.h +1741 -0
  48. include/eigen3/Eigen/src/Core/CoreIterators.h +132 -0
  49. include/eigen3/Eigen/src/Core/CwiseBinaryOp.h +183 -0
  50. include/eigen3/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
  51. include/eigen3/Eigen/src/Core/CwiseTernaryOp.h +197 -0
  52. include/eigen3/Eigen/src/Core/CwiseUnaryOp.h +103 -0
  53. include/eigen3/Eigen/src/Core/CwiseUnaryView.h +132 -0
  54. include/eigen3/Eigen/src/Core/DenseBase.h +701 -0
  55. include/eigen3/Eigen/src/Core/DenseCoeffsBase.h +685 -0
  56. include/eigen3/Eigen/src/Core/DenseStorage.h +652 -0
  57. include/eigen3/Eigen/src/Core/Diagonal.h +258 -0
  58. include/eigen3/Eigen/src/Core/DiagonalMatrix.h +391 -0
  59. include/eigen3/Eigen/src/Core/DiagonalProduct.h +28 -0
  60. include/eigen3/Eigen/src/Core/Dot.h +318 -0
  61. include/eigen3/Eigen/src/Core/EigenBase.h +160 -0
  62. include/eigen3/Eigen/src/Core/ForceAlignedAccess.h +150 -0
  63. include/eigen3/Eigen/src/Core/Fuzzy.h +155 -0
  64. include/eigen3/Eigen/src/Core/GeneralProduct.h +465 -0
  65. include/eigen3/Eigen/src/Core/GenericPacketMath.h +1040 -0
  66. include/eigen3/Eigen/src/Core/GlobalFunctions.h +194 -0
  67. include/eigen3/Eigen/src/Core/IO.h +258 -0
  68. include/eigen3/Eigen/src/Core/IndexedView.h +237 -0
  69. include/eigen3/Eigen/src/Core/Inverse.h +117 -0
  70. include/eigen3/Eigen/src/Core/Map.h +171 -0
  71. include/eigen3/Eigen/src/Core/MapBase.h +310 -0
  72. include/eigen3/Eigen/src/Core/MathFunctions.h +2057 -0
  73. include/eigen3/Eigen/src/Core/MathFunctionsImpl.h +200 -0
  74. include/eigen3/Eigen/src/Core/Matrix.h +565 -0
  75. include/eigen3/Eigen/src/Core/MatrixBase.h +547 -0
  76. include/eigen3/Eigen/src/Core/NestByValue.h +85 -0
  77. include/eigen3/Eigen/src/Core/NoAlias.h +109 -0
  78. include/eigen3/Eigen/src/Core/NumTraits.h +335 -0
  79. include/eigen3/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  80. include/eigen3/Eigen/src/Core/PermutationMatrix.h +605 -0
  81. include/eigen3/Eigen/src/Core/PlainObjectBase.h +1128 -0
  82. include/eigen3/Eigen/src/Core/Product.h +191 -0
  83. include/eigen3/Eigen/src/Core/ProductEvaluators.h +1179 -0
  84. include/eigen3/Eigen/src/Core/Random.h +218 -0
  85. include/eigen3/Eigen/src/Core/Redux.h +515 -0
  86. include/eigen3/Eigen/src/Core/Ref.h +381 -0
  87. include/eigen3/Eigen/src/Core/Replicate.h +142 -0
  88. include/eigen3/Eigen/src/Core/Reshaped.h +454 -0
  89. include/eigen3/Eigen/src/Core/ReturnByValue.h +119 -0
  90. include/eigen3/Eigen/src/Core/Reverse.h +217 -0
  91. include/eigen3/Eigen/src/Core/Select.h +164 -0
  92. include/eigen3/Eigen/src/Core/SelfAdjointView.h +365 -0
  93. include/eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
  94. include/eigen3/Eigen/src/Core/Solve.h +188 -0
  95. include/eigen3/Eigen/src/Core/SolveTriangular.h +235 -0
  96. include/eigen3/Eigen/src/Core/SolverBase.h +168 -0
  97. include/eigen3/Eigen/src/Core/StableNorm.h +251 -0
  98. include/eigen3/Eigen/src/Core/StlIterators.h +463 -0
  99. include/eigen3/Eigen/src/Core/Stride.h +116 -0
  100. include/eigen3/Eigen/src/Core/Swap.h +68 -0
  101. include/eigen3/Eigen/src/Core/Transpose.h +464 -0
  102. include/eigen3/Eigen/src/Core/Transpositions.h +386 -0
  103. include/eigen3/Eigen/src/Core/TriangularMatrix.h +1001 -0
  104. include/eigen3/Eigen/src/Core/VectorBlock.h +96 -0
  105. include/eigen3/Eigen/src/Core/VectorwiseOp.h +784 -0
  106. include/eigen3/Eigen/src/Core/Visitor.h +381 -0
  107. include/eigen3/Eigen/src/Core/arch/AVX/Complex.h +372 -0
  108. include/eigen3/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
  109. include/eigen3/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
  110. include/eigen3/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
  111. include/eigen3/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  112. include/eigen3/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
  113. include/eigen3/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
  114. include/eigen3/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  115. include/eigen3/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
  116. include/eigen3/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
  117. include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  118. include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  119. include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  120. include/eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
  121. include/eigen3/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
  122. include/eigen3/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  123. include/eigen3/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
  124. include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  125. include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  126. include/eigen3/Eigen/src/Core/arch/Default/Half.h +942 -0
  127. include/eigen3/Eigen/src/Core/arch/Default/Settings.h +49 -0
  128. include/eigen3/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  129. include/eigen3/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
  130. include/eigen3/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  131. include/eigen3/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  132. include/eigen3/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  133. include/eigen3/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  134. include/eigen3/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  135. include/eigen3/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  136. include/eigen3/Eigen/src/Core/arch/NEON/Complex.h +584 -0
  137. include/eigen3/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  138. include/eigen3/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
  139. include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
  140. include/eigen3/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  141. include/eigen3/Eigen/src/Core/arch/SSE/Complex.h +351 -0
  142. include/eigen3/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
  143. include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
  144. include/eigen3/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
  145. include/eigen3/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  146. include/eigen3/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  147. include/eigen3/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  148. include/eigen3/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  149. include/eigen3/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  150. include/eigen3/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  151. include/eigen3/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  152. include/eigen3/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  153. include/eigen3/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
  154. include/eigen3/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
  155. include/eigen3/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
  156. include/eigen3/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
  157. include/eigen3/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
  158. include/eigen3/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
  159. include/eigen3/Eigen/src/Core/functors/StlFunctors.h +166 -0
  160. include/eigen3/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
  161. include/eigen3/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
  162. include/eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
  163. include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
  164. include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
  165. include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
  166. include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
  167. include/eigen3/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
  168. include/eigen3/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
  169. include/eigen3/Eigen/src/Core/products/Parallelizer.h +180 -0
  170. include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
  171. include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
  172. include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
  173. include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
  174. include/eigen3/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
  175. include/eigen3/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
  176. include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
  177. include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
  178. include/eigen3/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
  179. include/eigen3/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
  180. include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
  181. include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
  182. include/eigen3/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
  183. include/eigen3/Eigen/src/Core/util/BlasUtil.h +583 -0
  184. include/eigen3/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  185. include/eigen3/Eigen/src/Core/util/Constants.h +563 -0
  186. include/eigen3/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
  187. include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
  188. include/eigen3/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  189. include/eigen3/Eigen/src/Core/util/IntegralConstant.h +272 -0
  190. include/eigen3/Eigen/src/Core/util/MKL_support.h +137 -0
  191. include/eigen3/Eigen/src/Core/util/Macros.h +1464 -0
  192. include/eigen3/Eigen/src/Core/util/Memory.h +1163 -0
  193. include/eigen3/Eigen/src/Core/util/Meta.h +812 -0
  194. include/eigen3/Eigen/src/Core/util/NonMPL2.h +3 -0
  195. include/eigen3/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
  196. include/eigen3/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  197. include/eigen3/Eigen/src/Core/util/StaticAssert.h +221 -0
  198. include/eigen3/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  199. include/eigen3/Eigen/src/Core/util/XprHelper.h +856 -0
  200. include/eigen3/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
  201. include/eigen3/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
  202. include/eigen3/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
  203. include/eigen3/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
  204. include/eigen3/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
  205. include/eigen3/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
  206. include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
  207. include/eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
  208. include/eigen3/Eigen/src/Eigenvalues/RealQZ.h +657 -0
  209. include/eigen3/Eigen/src/Eigenvalues/RealSchur.h +558 -0
  210. include/eigen3/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
  211. include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
  212. include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
  213. include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
  214. include/eigen3/Eigen/src/Geometry/AlignedBox.h +486 -0
  215. include/eigen3/Eigen/src/Geometry/AngleAxis.h +247 -0
  216. include/eigen3/Eigen/src/Geometry/EulerAngles.h +114 -0
  217. include/eigen3/Eigen/src/Geometry/Homogeneous.h +501 -0
  218. include/eigen3/Eigen/src/Geometry/Hyperplane.h +282 -0
  219. include/eigen3/Eigen/src/Geometry/OrthoMethods.h +235 -0
  220. include/eigen3/Eigen/src/Geometry/ParametrizedLine.h +232 -0
  221. include/eigen3/Eigen/src/Geometry/Quaternion.h +870 -0
  222. include/eigen3/Eigen/src/Geometry/Rotation2D.h +199 -0
  223. include/eigen3/Eigen/src/Geometry/RotationBase.h +206 -0
  224. include/eigen3/Eigen/src/Geometry/Scaling.h +188 -0
  225. include/eigen3/Eigen/src/Geometry/Transform.h +1563 -0
  226. include/eigen3/Eigen/src/Geometry/Translation.h +202 -0
  227. include/eigen3/Eigen/src/Geometry/Umeyama.h +166 -0
  228. include/eigen3/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  229. include/eigen3/Eigen/src/Householder/BlockHouseholder.h +110 -0
  230. include/eigen3/Eigen/src/Householder/Householder.h +176 -0
  231. include/eigen3/Eigen/src/Householder/HouseholderSequence.h +545 -0
  232. include/eigen3/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
  233. include/eigen3/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
  234. include/eigen3/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +229 -0
  235. include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
  236. include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
  237. include/eigen3/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
  238. include/eigen3/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
  239. include/eigen3/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
  240. include/eigen3/Eigen/src/Jacobi/Jacobi.h +483 -0
  241. include/eigen3/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  242. include/eigen3/Eigen/src/LU/Determinant.h +117 -0
  243. include/eigen3/Eigen/src/LU/FullPivLU.h +877 -0
  244. include/eigen3/Eigen/src/LU/InverseImpl.h +432 -0
  245. include/eigen3/Eigen/src/LU/PartialPivLU.h +624 -0
  246. include/eigen3/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
  247. include/eigen3/Eigen/src/LU/arch/InverseSize4.h +351 -0
  248. include/eigen3/Eigen/src/MetisSupport/MetisSupport.h +137 -0
  249. include/eigen3/Eigen/src/OrderingMethods/Amd.h +435 -0
  250. include/eigen3/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
  251. include/eigen3/Eigen/src/OrderingMethods/Ordering.h +153 -0
  252. include/eigen3/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
  253. include/eigen3/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
  254. include/eigen3/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
  255. include/eigen3/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
  256. include/eigen3/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
  257. include/eigen3/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
  258. include/eigen3/Eigen/src/QR/HouseholderQR.h +434 -0
  259. include/eigen3/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
  260. include/eigen3/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
  261. include/eigen3/Eigen/src/SVD/BDCSVD.h +1366 -0
  262. include/eigen3/Eigen/src/SVD/JacobiSVD.h +812 -0
  263. include/eigen3/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
  264. include/eigen3/Eigen/src/SVD/SVDBase.h +376 -0
  265. include/eigen3/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
  266. include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
  267. include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
  268. include/eigen3/Eigen/src/SparseCore/AmbiVector.h +378 -0
  269. include/eigen3/Eigen/src/SparseCore/CompressedStorage.h +274 -0
  270. include/eigen3/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
  271. include/eigen3/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
  272. include/eigen3/Eigen/src/SparseCore/SparseAssign.h +270 -0
  273. include/eigen3/Eigen/src/SparseCore/SparseBlock.h +571 -0
  274. include/eigen3/Eigen/src/SparseCore/SparseColEtree.h +206 -0
  275. include/eigen3/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
  276. include/eigen3/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
  277. include/eigen3/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
  278. include/eigen3/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
  279. include/eigen3/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
  280. include/eigen3/Eigen/src/SparseCore/SparseDot.h +98 -0
  281. include/eigen3/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
  282. include/eigen3/Eigen/src/SparseCore/SparseMap.h +305 -0
  283. include/eigen3/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
  284. include/eigen3/Eigen/src/SparseCore/SparseMatrixBase.h +398 -0
  285. include/eigen3/Eigen/src/SparseCore/SparsePermutation.h +178 -0
  286. include/eigen3/Eigen/src/SparseCore/SparseProduct.h +181 -0
  287. include/eigen3/Eigen/src/SparseCore/SparseRedux.h +49 -0
  288. include/eigen3/Eigen/src/SparseCore/SparseRef.h +397 -0
  289. include/eigen3/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
  290. include/eigen3/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
  291. include/eigen3/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
  292. include/eigen3/Eigen/src/SparseCore/SparseTranspose.h +92 -0
  293. include/eigen3/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
  294. include/eigen3/Eigen/src/SparseCore/SparseUtil.h +186 -0
  295. include/eigen3/Eigen/src/SparseCore/SparseVector.h +478 -0
  296. include/eigen3/Eigen/src/SparseCore/SparseView.h +254 -0
  297. include/eigen3/Eigen/src/SparseCore/TriangularSolver.h +315 -0
  298. include/eigen3/Eigen/src/SparseLU/SparseLU.h +923 -0
  299. include/eigen3/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
  300. include/eigen3/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
  301. include/eigen3/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
  302. include/eigen3/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +375 -0
  303. include/eigen3/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
  304. include/eigen3/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
  305. include/eigen3/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
  306. include/eigen3/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
  307. include/eigen3/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
  308. include/eigen3/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
  309. include/eigen3/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
  310. include/eigen3/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
  311. include/eigen3/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
  312. include/eigen3/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
  313. include/eigen3/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
  314. include/eigen3/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
  315. include/eigen3/Eigen/src/SparseQR/SparseQR.h +758 -0
  316. include/eigen3/Eigen/src/StlSupport/StdDeque.h +116 -0
  317. include/eigen3/Eigen/src/StlSupport/StdList.h +106 -0
  318. include/eigen3/Eigen/src/StlSupport/StdVector.h +131 -0
  319. include/eigen3/Eigen/src/StlSupport/details.h +84 -0
  320. include/eigen3/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
  321. include/eigen3/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
  322. include/eigen3/Eigen/src/misc/Image.h +82 -0
  323. include/eigen3/Eigen/src/misc/Kernel.h +79 -0
  324. include/eigen3/Eigen/src/misc/RealSvd2x2.h +55 -0
  325. include/eigen3/Eigen/src/misc/blas.h +440 -0
  326. include/eigen3/Eigen/src/misc/lapack.h +152 -0
  327. include/eigen3/Eigen/src/misc/lapacke.h +16292 -0
  328. include/eigen3/Eigen/src/misc/lapacke_mangling.h +17 -0
  329. include/eigen3/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
  330. include/eigen3/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
  331. include/eigen3/Eigen/src/plugins/BlockMethods.h +1442 -0
  332. include/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
  333. include/eigen3/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
  334. include/eigen3/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  335. include/eigen3/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
  336. include/eigen3/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
  337. include/eigen3/Eigen/src/plugins/ReshapedMethods.h +149 -0
  338. include/eigen3/signature_of_eigen3_matrix_library +1 -0
  339. include/eigen3/unsupported/Eigen/AdolcForward +159 -0
  340. include/eigen3/unsupported/Eigen/AlignedVector3 +234 -0
  341. include/eigen3/unsupported/Eigen/ArpackSupport +30 -0
  342. include/eigen3/unsupported/Eigen/AutoDiff +46 -0
  343. include/eigen3/unsupported/Eigen/BVH +95 -0
  344. include/eigen3/unsupported/Eigen/CXX11/Tensor +137 -0
  345. include/eigen3/unsupported/Eigen/CXX11/TensorSymmetry +42 -0
  346. include/eigen3/unsupported/Eigen/CXX11/ThreadPool +74 -0
  347. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/Tensor.h +554 -0
  348. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h +329 -0
  349. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h +247 -0
  350. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h +1176 -0
  351. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h +1559 -0
  352. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBroadcasting.h +1093 -0
  353. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorChipping.h +518 -0
  354. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h +377 -0
  355. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h +1023 -0
  356. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h +73 -0
  357. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h +6 -0
  358. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionGpu.h +1413 -0
  359. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h +575 -0
  360. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h +1650 -0
  361. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h +1679 -0
  362. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h +456 -0
  363. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h +1132 -0
  364. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolutionSycl.h +544 -0
  365. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h +214 -0
  366. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCustomOp.h +347 -0
  367. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h +137 -0
  368. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h +6 -0
  369. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h +104 -0
  370. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceGpu.h +389 -0
  371. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h +1048 -0
  372. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h +409 -0
  373. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h +236 -0
  374. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h +490 -0
  375. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvalTo.h +236 -0
  376. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h +983 -0
  377. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h +703 -0
  378. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h +388 -0
  379. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h +669 -0
  380. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h +379 -0
  381. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForcedEval.h +237 -0
  382. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h +191 -0
  383. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h +488 -0
  384. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h +302 -0
  385. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h +33 -0
  386. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaDefines.h +99 -0
  387. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaUndefines.h +44 -0
  388. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h +79 -0
  389. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h +603 -0
  390. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h +738 -0
  391. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h +247 -0
  392. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h +82 -0
  393. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h +263 -0
  394. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorLayoutSwap.h +216 -0
  395. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h +98 -0
  396. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h +327 -0
  397. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h +311 -0
  398. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h +1102 -0
  399. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h +708 -0
  400. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h +291 -0
  401. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h +322 -0
  402. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h +998 -0
  403. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h +6 -0
  404. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionGpu.h +966 -0
  405. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionSycl.h +582 -0
  406. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRef.h +454 -0
  407. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h +465 -0
  408. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScan.h +528 -0
  409. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScanSycl.h +513 -0
  410. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorShuffling.h +471 -0
  411. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h +161 -0
  412. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStriding.h +346 -0
  413. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTrace.h +303 -0
  414. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h +264 -0
  415. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h +249 -0
  416. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h +629 -0
  417. include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/DynamicSymmetry.h +293 -0
  418. include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/StaticSymmetry.h +236 -0
  419. include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/Symmetry.h +338 -0
  420. include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/util/TemplateGroupTheory.h +669 -0
  421. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/Barrier.h +67 -0
  422. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/EventCount.h +249 -0
  423. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h +486 -0
  424. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/RunQueue.h +236 -0
  425. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadCancel.h +23 -0
  426. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadEnvironment.h +40 -0
  427. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadLocal.h +301 -0
  428. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadPoolInterface.h +48 -0
  429. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadYield.h +20 -0
  430. include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Meta.h +537 -0
  431. include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Workarounds.h +88 -0
  432. include/eigen3/unsupported/Eigen/CXX11/src/util/EmulateArray.h +261 -0
  433. include/eigen3/unsupported/Eigen/CXX11/src/util/MaxSizeVector.h +158 -0
  434. include/eigen3/unsupported/Eigen/EulerAngles +43 -0
  435. include/eigen3/unsupported/Eigen/FFT +419 -0
  436. include/eigen3/unsupported/Eigen/IterativeSolvers +51 -0
  437. include/eigen3/unsupported/Eigen/KroneckerProduct +36 -0
  438. include/eigen3/unsupported/Eigen/LevenbergMarquardt +49 -0
  439. include/eigen3/unsupported/Eigen/MPRealSupport +213 -0
  440. include/eigen3/unsupported/Eigen/MatrixFunctions +504 -0
  441. include/eigen3/unsupported/Eigen/MoreVectorization +24 -0
  442. include/eigen3/unsupported/Eigen/NonLinearOptimization +140 -0
  443. include/eigen3/unsupported/Eigen/NumericalDiff +56 -0
  444. include/eigen3/unsupported/Eigen/OpenGLSupport +322 -0
  445. include/eigen3/unsupported/Eigen/Polynomials +137 -0
  446. include/eigen3/unsupported/Eigen/Skyline +39 -0
  447. include/eigen3/unsupported/Eigen/SparseExtra +54 -0
  448. include/eigen3/unsupported/Eigen/SpecialFunctions +103 -0
  449. include/eigen3/unsupported/Eigen/Splines +35 -0
  450. include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h +108 -0
  451. include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h +730 -0
  452. include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h +220 -0
  453. include/eigen3/unsupported/Eigen/src/BVH/BVAlgorithms.h +293 -0
  454. include/eigen3/unsupported/Eigen/src/BVH/KdBVH.h +223 -0
  455. include/eigen3/unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h +790 -0
  456. include/eigen3/unsupported/Eigen/src/EulerAngles/EulerAngles.h +355 -0
  457. include/eigen3/unsupported/Eigen/src/EulerAngles/EulerSystem.h +305 -0
  458. include/eigen3/unsupported/Eigen/src/FFT/ei_fftw_impl.h +261 -0
  459. include/eigen3/unsupported/Eigen/src/FFT/ei_kissfft_impl.h +449 -0
  460. include/eigen3/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h +187 -0
  461. include/eigen3/unsupported/Eigen/src/IterativeSolvers/DGMRES.h +511 -0
  462. include/eigen3/unsupported/Eigen/src/IterativeSolvers/GMRES.h +335 -0
  463. include/eigen3/unsupported/Eigen/src/IterativeSolvers/IDRS.h +436 -0
  464. include/eigen3/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h +90 -0
  465. include/eigen3/unsupported/Eigen/src/IterativeSolvers/IterationController.h +154 -0
  466. include/eigen3/unsupported/Eigen/src/IterativeSolvers/MINRES.h +267 -0
  467. include/eigen3/unsupported/Eigen/src/IterativeSolvers/Scaling.h +193 -0
  468. include/eigen3/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h +305 -0
  469. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h +84 -0
  470. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h +202 -0
  471. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h +160 -0
  472. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h +188 -0
  473. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h +396 -0
  474. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h +441 -0
  475. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h +569 -0
  476. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h +373 -0
  477. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h +705 -0
  478. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h +368 -0
  479. include/eigen3/unsupported/Eigen/src/MatrixFunctions/StemFunction.h +117 -0
  480. include/eigen3/unsupported/Eigen/src/MoreVectorization/MathFunctions.h +95 -0
  481. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h +601 -0
  482. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h +657 -0
  483. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/chkder.h +66 -0
  484. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/covar.h +70 -0
  485. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/dogleg.h +107 -0
  486. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h +79 -0
  487. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/lmpar.h +298 -0
  488. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h +91 -0
  489. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h +30 -0
  490. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1updt.h +99 -0
  491. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h +49 -0
  492. include/eigen3/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h +130 -0
  493. include/eigen3/unsupported/Eigen/src/Polynomials/Companion.h +280 -0
  494. include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialSolver.h +428 -0
  495. include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialUtils.h +143 -0
  496. include/eigen3/unsupported/Eigen/src/Skyline/SkylineInplaceLU.h +352 -0
  497. include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrix.h +862 -0
  498. include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h +212 -0
  499. include/eigen3/unsupported/Eigen/src/Skyline/SkylineProduct.h +295 -0
  500. include/eigen3/unsupported/Eigen/src/Skyline/SkylineStorage.h +259 -0
  501. include/eigen3/unsupported/Eigen/src/Skyline/SkylineUtil.h +89 -0
  502. include/eigen3/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h +122 -0
  503. include/eigen3/unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h +1079 -0
  504. include/eigen3/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h +404 -0
  505. include/eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h +282 -0
  506. include/eigen3/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h +247 -0
  507. include/eigen3/unsupported/Eigen/src/SparseExtra/RandomSetter.h +349 -0
  508. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsArrayAPI.h +286 -0
  509. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h +68 -0
  510. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h +357 -0
  511. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h +66 -0
  512. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h +1959 -0
  513. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsPacketMath.h +118 -0
  514. include/eigen3/unsupported/Eigen/src/SpecialFunctions/HipVectorCompatibility.h +67 -0
  515. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h +167 -0
  516. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h +58 -0
  517. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h +330 -0
  518. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h +58 -0
  519. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h +2045 -0
  520. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h +79 -0
  521. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/BesselFunctions.h +46 -0
  522. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/SpecialFunctions.h +16 -0
  523. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/BesselFunctions.h +46 -0
  524. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/SpecialFunctions.h +16 -0
  525. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/GPU/SpecialFunctions.h +369 -0
  526. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/BesselFunctions.h +54 -0
  527. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/SpecialFunctions.h +34 -0
  528. include/eigen3/unsupported/Eigen/src/Splines/Spline.h +507 -0
  529. include/eigen3/unsupported/Eigen/src/Splines/SplineFitting.h +431 -0
  530. include/eigen3/unsupported/Eigen/src/Splines/SplineFwd.h +93 -0
  531. pyvale/__init__.py +23 -0
  532. pyvale/blender/__init__.py +23 -0
  533. pyvale/blender/blendercalibrationdata.py +17 -0
  534. pyvale/blender/blenderexceptions.py +8 -0
  535. pyvale/blender/blenderlightdata.py +26 -0
  536. pyvale/blender/blendermaterialdata.py +15 -0
  537. pyvale/blender/blenderrenderdata.py +35 -0
  538. pyvale/blender/blenderscene.py +493 -0
  539. pyvale/blender/blendertools.py +449 -0
  540. pyvale/calib/__init__.py +11 -0
  541. pyvale/calib/calibcpp.cpython-311-i386-linux-gnu.so +0 -0
  542. pyvale/calib/calibdotdetect.py +510 -0
  543. pyvale/calib/calibparams.py +47 -0
  544. pyvale/calib/calibstereo.py +441 -0
  545. pyvale/calib/cpp/bindings.cpp +22 -0
  546. pyvale/calib/cpp/calibdotdetect.cpp +16 -0
  547. pyvale/calib/cpp/calibdotdetect.hpp +20 -0
  548. pyvale/calib/cpp/calibopt.cpp +347 -0
  549. pyvale/calib/cpp/calibopt.hpp +84 -0
  550. pyvale/calib/cpp/calibstereo.cpp +95 -0
  551. pyvale/calib/cpp/calibstereo.hpp +27 -0
  552. pyvale/common_cpp/__init__.py +5 -0
  553. pyvale/common_cpp/bindings.cpp +33 -0
  554. pyvale/common_cpp/common_cpp.cpython-311-i386-linux-gnu.so +0 -0
  555. pyvale/common_cpp/defines.hpp +39 -0
  556. pyvale/common_cpp/dicsignalhandler.cpp +16 -0
  557. pyvale/common_cpp/dicsignalhandler.hpp +11 -0
  558. pyvale/common_cpp/pocketfft_hdronly.h +3744 -0
  559. pyvale/common_cpp/progressbar.hpp +107 -0
  560. pyvale/common_cpp/util.cpp +19 -0
  561. pyvale/common_cpp/util.hpp +72 -0
  562. pyvale/common_py/util.py +63 -0
  563. pyvale/data/DIC_Challenge_Star_Noise_Def.tiff +0 -0
  564. pyvale/data/DIC_Challenge_Star_Noise_Ref.tiff +0 -0
  565. pyvale/data/__init__.py +5 -0
  566. pyvale/data/cal_target.tiff +0 -0
  567. pyvale/data/calib.caldat +26 -0
  568. pyvale/data/case00_HEX20_out.e +0 -0
  569. pyvale/data/case00_HEX27_out.e +0 -0
  570. pyvale/data/case00_HEX8_out.e +0 -0
  571. pyvale/data/case00_TET10_out.e +0 -0
  572. pyvale/data/case00_TET14_out.e +0 -0
  573. pyvale/data/case00_TET4_out.e +0 -0
  574. pyvale/data/case16_d_out.e +0 -0
  575. pyvale/data/case16_out.e +0 -0
  576. pyvale/data/case17_out.e +0 -0
  577. pyvale/data/case18_d_out.e +0 -0
  578. pyvale/data/case18_out.e +0 -0
  579. pyvale/data/case26_out.e +0 -0
  580. pyvale/data/optspeckle_2464x2056px_spec5px_8bit_gblur1px.tiff +0 -0
  581. pyvale/data/plate_hole_def0000.tiff +0 -0
  582. pyvale/data/plate_hole_def0001.tiff +0 -0
  583. pyvale/data/plate_hole_ref0000.tiff +0 -0
  584. pyvale/data/plate_rigid_def0000.tiff +0 -0
  585. pyvale/data/plate_rigid_def0001.tiff +0 -0
  586. pyvale/data/plate_rigid_def_25px.tiff +0 -0
  587. pyvale/data/plate_rigid_def_50px.tiff +0 -0
  588. pyvale/data/plate_rigid_ref0000.tiff +0 -0
  589. pyvale/dataset/__init__.py +7 -0
  590. pyvale/dataset/dataset.py +483 -0
  591. pyvale/dic/__init__.py +15 -0
  592. pyvale/dic/cpp/bindings.cpp +52 -0
  593. pyvale/dic/cpp/dicfourier.cpp +705 -0
  594. pyvale/dic/cpp/dicfourier.hpp +410 -0
  595. pyvale/dic/cpp/dicinterpolator.cpp +633 -0
  596. pyvale/dic/cpp/dicinterpolator.hpp +162 -0
  597. pyvale/dic/cpp/dicmain.cpp +214 -0
  598. pyvale/dic/cpp/dicmain.hpp +61 -0
  599. pyvale/dic/cpp/dicoptimizer.cpp +564 -0
  600. pyvale/dic/cpp/dicoptimizer.hpp +279 -0
  601. pyvale/dic/cpp/dicresults.cpp +239 -0
  602. pyvale/dic/cpp/dicresults.hpp +64 -0
  603. pyvale/dic/cpp/dicrg.cpp +55 -0
  604. pyvale/dic/cpp/dicrg.hpp +52 -0
  605. pyvale/dic/cpp/dicscanmethod.cpp +819 -0
  606. pyvale/dic/cpp/dicscanmethod.hpp +119 -0
  607. pyvale/dic/cpp/dicshapefunc.cpp +117 -0
  608. pyvale/dic/cpp/dicshapefunc.hpp +40 -0
  609. pyvale/dic/cpp/dicsubset.cpp +325 -0
  610. pyvale/dic/cpp/dicsubset.hpp +122 -0
  611. pyvale/dic/cpp/dicutil.cpp +108 -0
  612. pyvale/dic/cpp/dicutil.hpp +96 -0
  613. pyvale/dic/cuda/malloc.cu +99 -0
  614. pyvale/dic/cuda/malloc.hpp +17 -0
  615. pyvale/dic/dic2d.py +190 -0
  616. pyvale/dic/dic2dconv.py +6 -0
  617. pyvale/dic/dic2dcpp.cpython-311-i386-linux-gnu.so +0 -0
  618. pyvale/dic/dicchecks.py +455 -0
  619. pyvale/dic/dicdataimport.py +402 -0
  620. pyvale/dic/dicregionofinterest.py +1163 -0
  621. pyvale/dic/dicresults.py +58 -0
  622. pyvale/examples/__init__.py +5 -0
  623. pyvale/examples/basicsensorsim/README.md +2 -0
  624. pyvale/examples/basicsensorsim/ex0_quickstart.py +139 -0
  625. pyvale/examples/basicsensorsim/ex1_scalar_sensors.py +240 -0
  626. pyvale/examples/basicsensorsim/ex2_vector_tensor_sensors.py +280 -0
  627. pyvale/examples/basicsensorsim/ex3_experiment_simulator.py +397 -0
  628. pyvale/examples/blenderimagedef/README.md +2 -0
  629. pyvale/examples/blenderimagedef/ex1_blender_scene2d.py +176 -0
  630. pyvale/examples/blenderimagedef/ex2_blender_imagedef2d.py +177 -0
  631. pyvale/examples/blenderimagedef/ex3_blender_scenestereo.py +205 -0
  632. pyvale/examples/blenderimagedef/ex4_blender_imagedefstereo.py +213 -0
  633. pyvale/examples/blenderimagedef/ex5_blender_calibstereo.py +190 -0
  634. pyvale/examples/dic/README.md +2 -0
  635. pyvale/examples/dic/ex1_region_of_interest.py +101 -0
  636. pyvale/examples/dic/ex2_plate_with_hole.py +155 -0
  637. pyvale/examples/dic/ex3_plate_with_hole_strain.py +99 -0
  638. pyvale/examples/dic/ex4_dic_blender.py +97 -0
  639. pyvale/examples/dic/ex5_dic_challenge.py +107 -0
  640. pyvale/examples/extsensorsim/README.md +2 -0
  641. pyvale/examples/extsensorsim/ex1_byosimdata.py +211 -0
  642. pyvale/examples/extsensorsim/ex2_meshfreesensors.py +174 -0
  643. pyvale/examples/extsensorsim/ex3a_scal2d.py +151 -0
  644. pyvale/examples/extsensorsim/ex3b_scal3d.py +150 -0
  645. pyvale/examples/extsensorsim/ex3c_vec2d.py +163 -0
  646. pyvale/examples/extsensorsim/ex3d_vec3d.py +169 -0
  647. pyvale/examples/extsensorsim/ex3e_tens2d.py +170 -0
  648. pyvale/examples/extsensorsim/ex3f_tens3d.py +198 -0
  649. pyvale/examples/extsensorsim/ex4a_basicerrs_scal2d.py +201 -0
  650. pyvale/examples/extsensorsim/ex4b_fielderrs_scal3d.py +197 -0
  651. pyvale/examples/extsensorsim/ex4c_angleerrs_vec2d.py +215 -0
  652. pyvale/examples/extsensorsim/ex4d_fieldlockerrs_vec3d.py +184 -0
  653. pyvale/examples/extsensorsim/ex4e_chainfielderrs_vec2d.py +233 -0
  654. pyvale/examples/extsensorsim/ex4f_caliberrs_scal2d.py +167 -0
  655. pyvale/examples/extsensorsim/ex4g_spatavgerrs_scal2d.py +146 -0
  656. pyvale/examples/extsensorsim/ex5a_expsim_thermmech2d.py +350 -0
  657. pyvale/examples/extsensorsim/ex5b_expsim_thermmech3d.py +358 -0
  658. pyvale/examples/genanalyticdata/ex1_1_scalarvisualisation.py +41 -0
  659. pyvale/examples/genanalyticdata/ex1_2_scalarcasebuild.py +43 -0
  660. pyvale/examples/genanalyticdata/ex2_1_analyticsensors.py +86 -0
  661. pyvale/examples/genanalyticdata/ex2_2_analyticsensors_nomesh.py +89 -0
  662. pyvale/examples/imagedef2d/ex_imagedef2d_todisk.py +84 -0
  663. pyvale/examples/mooseherder/README.md +2 -0
  664. pyvale/examples/mooseherder/ex0_create_moose_config.py +65 -0
  665. pyvale/examples/mooseherder/ex1a_modify_moose_input.py +71 -0
  666. pyvale/examples/mooseherder/ex1b_modify_gmsh_input.py +69 -0
  667. pyvale/examples/mooseherder/ex2a_run_moose_once.py +80 -0
  668. pyvale/examples/mooseherder/ex2b_run_gmsh_once.py +64 -0
  669. pyvale/examples/mooseherder/ex2c_run_both_once.py +114 -0
  670. pyvale/examples/mooseherder/ex3_run_moose_seq_para.py +157 -0
  671. pyvale/examples/mooseherder/ex4_run_gmsh-moose_seq_para.py +176 -0
  672. pyvale/examples/mooseherder/ex5_run_moose_paramulti.py +136 -0
  673. pyvale/examples/mooseherder/ex6_read_moose_exodus.py +163 -0
  674. pyvale/examples/mooseherder/ex7a_read_moose_herd_results.py +153 -0
  675. pyvale/examples/mooseherder/ex7b_read_multi_herd_results.py +116 -0
  676. pyvale/examples/mooseherder/ex7c_read_multi_gmshmoose_results.py +127 -0
  677. pyvale/examples/mooseherder/ex7d_readconfig_multi_gmshmoose_results.py +143 -0
  678. pyvale/examples/mooseherder/ex8_read_existing_sweep_output.py +72 -0
  679. pyvale/examples/rasterimagedef/ex_rastenp.py +194 -0
  680. pyvale/examples/rasterimagedef/ex_rastercyth_oneframe.py +206 -0
  681. pyvale/examples/rasterimagedef/ex_rastercyth_static_cypara.py +189 -0
  682. pyvale/examples/rasterimagedef/ex_rastercyth_static_pypara.py +219 -0
  683. pyvale/examples/visualisation/ex1_visualisation_options.py +111 -0
  684. pyvale/mooseherder/__init__.py +55 -0
  685. pyvale/mooseherder/directorymanager.py +408 -0
  686. pyvale/mooseherder/exceptions.py +10 -0
  687. pyvale/mooseherder/exodusloader.py +762 -0
  688. pyvale/mooseherder/gmshrunner.py +158 -0
  689. pyvale/mooseherder/inputmodifier.py +240 -0
  690. pyvale/mooseherder/mooseconfig.py +212 -0
  691. pyvale/mooseherder/mooseherd.py +539 -0
  692. pyvale/mooseherder/mooserunner.py +307 -0
  693. pyvale/mooseherder/outputloader.py +17 -0
  694. pyvale/mooseherder/simdata.py +93 -0
  695. pyvale/mooseherder/simloaderbyfield.py +211 -0
  696. pyvale/mooseherder/simloaderbytime.py +193 -0
  697. pyvale/mooseherder/simloadopts.py +55 -0
  698. pyvale/mooseherder/simloadtools.py +465 -0
  699. pyvale/mooseherder/simrunner.py +31 -0
  700. pyvale/mooseherder/simsaver.py +401 -0
  701. pyvale/mooseherder/sweeploader.py +358 -0
  702. pyvale/mooseherder/sweeptools.py +76 -0
  703. pyvale/sensorsim/__init__.py +86 -0
  704. pyvale/sensorsim/camera.py +147 -0
  705. pyvale/sensorsim/cameradata.py +72 -0
  706. pyvale/sensorsim/cameradata2d.py +84 -0
  707. pyvale/sensorsim/camerasensor.py +147 -0
  708. pyvale/sensorsim/camerastereo.py +217 -0
  709. pyvale/sensorsim/cameratools.py +484 -0
  710. pyvale/sensorsim/cython/rastercyth.c +32404 -0
  711. pyvale/sensorsim/cython/rastercyth.html +3392 -0
  712. pyvale/sensorsim/cython/rastercyth.py +684 -0
  713. pyvale/sensorsim/enums.py +16 -0
  714. pyvale/sensorsim/errordriftcalc.py +104 -0
  715. pyvale/sensorsim/errorintegrator.py +359 -0
  716. pyvale/sensorsim/errorrand.py +105 -0
  717. pyvale/sensorsim/errorsimulator.py +137 -0
  718. pyvale/sensorsim/errorsyscalib.py +93 -0
  719. pyvale/sensorsim/errorsysdep.py +197 -0
  720. pyvale/sensorsim/errorsysfield.py +383 -0
  721. pyvale/sensorsim/errorsysindep.py +209 -0
  722. pyvale/sensorsim/exceptions.py +14 -0
  723. pyvale/sensorsim/experimentsimio.py +94 -0
  724. pyvale/sensorsim/experimentsimulator.py +615 -0
  725. pyvale/sensorsim/experimentstats.py +115 -0
  726. pyvale/sensorsim/field.py +127 -0
  727. pyvale/sensorsim/fieldconverter.py +378 -0
  728. pyvale/sensorsim/fieldinterp.py +89 -0
  729. pyvale/sensorsim/fieldinterpmesh.py +119 -0
  730. pyvale/sensorsim/fieldinterppoints.py +93 -0
  731. pyvale/sensorsim/fieldsampler.py +110 -0
  732. pyvale/sensorsim/fieldscalar.py +94 -0
  733. pyvale/sensorsim/fieldtensor.py +150 -0
  734. pyvale/sensorsim/fieldtransform.py +388 -0
  735. pyvale/sensorsim/fieldvector.py +136 -0
  736. pyvale/sensorsim/generatorsrandom.py +420 -0
  737. pyvale/sensorsim/imagedef2d.py +577 -0
  738. pyvale/sensorsim/imagetools.py +137 -0
  739. pyvale/sensorsim/integratorfactory.py +240 -0
  740. pyvale/sensorsim/integratorquadrature.py +217 -0
  741. pyvale/sensorsim/integratorrectangle.py +165 -0
  742. pyvale/sensorsim/integratorspatial.py +89 -0
  743. pyvale/sensorsim/integratortype.py +43 -0
  744. pyvale/sensorsim/logger.py +23 -0
  745. pyvale/sensorsim/plotting_logs.py +22 -0
  746. pyvale/sensorsim/raster.py +31 -0
  747. pyvale/sensorsim/rastercy.py +107 -0
  748. pyvale/sensorsim/rasternp.py +627 -0
  749. pyvale/sensorsim/rasteropts.py +58 -0
  750. pyvale/sensorsim/renderer.py +47 -0
  751. pyvale/sensorsim/rendermesh.py +137 -0
  752. pyvale/sensorsim/renderscene.py +51 -0
  753. pyvale/sensorsim/sensorarray.py +178 -0
  754. pyvale/sensorsim/sensordata.py +74 -0
  755. pyvale/sensorsim/sensordescriptor.py +275 -0
  756. pyvale/sensorsim/sensorfactory.py +179 -0
  757. pyvale/sensorsim/sensorspoint.py +308 -0
  758. pyvale/sensorsim/sensortools.py +113 -0
  759. pyvale/sensorsim/simtools.py +300 -0
  760. pyvale/sensorsim/visualexpplotter.py +201 -0
  761. pyvale/sensorsim/visualimagedef.py +74 -0
  762. pyvale/sensorsim/visualimages.py +76 -0
  763. pyvale/sensorsim/visualopts.py +507 -0
  764. pyvale/sensorsim/visualsimanimator.py +111 -0
  765. pyvale/sensorsim/visualsimplotter.py +180 -0
  766. pyvale/sensorsim/visualsimsensors.py +343 -0
  767. pyvale/sensorsim/visualtools.py +136 -0
  768. pyvale/sensorsim/visualtraceanimator.py +77 -0
  769. pyvale/sensorsim/visualtraceplotter.py +296 -0
  770. pyvale/simcases/case00_HEX20.i +242 -0
  771. pyvale/simcases/case00_HEX27.i +242 -0
  772. pyvale/simcases/case00_HEX8.i +242 -0
  773. pyvale/simcases/case00_TET10.i +242 -0
  774. pyvale/simcases/case00_TET14.i +242 -0
  775. pyvale/simcases/case00_TET4.i +242 -0
  776. pyvale/simcases/case01.i +101 -0
  777. pyvale/simcases/case02.i +156 -0
  778. pyvale/simcases/case03.i +136 -0
  779. pyvale/simcases/case04.i +181 -0
  780. pyvale/simcases/case05.i +234 -0
  781. pyvale/simcases/case06.i +305 -0
  782. pyvale/simcases/case07.geo +135 -0
  783. pyvale/simcases/case07.i +87 -0
  784. pyvale/simcases/case08.geo +144 -0
  785. pyvale/simcases/case08.i +153 -0
  786. pyvale/simcases/case09.geo +204 -0
  787. pyvale/simcases/case09.i +87 -0
  788. pyvale/simcases/case10.geo +204 -0
  789. pyvale/simcases/case10.i +257 -0
  790. pyvale/simcases/case11.geo +337 -0
  791. pyvale/simcases/case11.i +147 -0
  792. pyvale/simcases/case12.geo +388 -0
  793. pyvale/simcases/case12.i +329 -0
  794. pyvale/simcases/case13.i +140 -0
  795. pyvale/simcases/case14.i +159 -0
  796. pyvale/simcases/case15.geo +337 -0
  797. pyvale/simcases/case15.i +150 -0
  798. pyvale/simcases/case16.geo +391 -0
  799. pyvale/simcases/case16.i +357 -0
  800. pyvale/simcases/case16_d.i +360 -0
  801. pyvale/simcases/case16_u.i +360 -0
  802. pyvale/simcases/case17.geo +138 -0
  803. pyvale/simcases/case17.i +144 -0
  804. pyvale/simcases/case18.i +271 -0
  805. pyvale/simcases/case18_d.i +271 -0
  806. pyvale/simcases/case18_u.i +271 -0
  807. pyvale/simcases/case19.geo +252 -0
  808. pyvale/simcases/case19.i +99 -0
  809. pyvale/simcases/case20.geo +252 -0
  810. pyvale/simcases/case20.i +250 -0
  811. pyvale/simcases/case21.geo +74 -0
  812. pyvale/simcases/case21.i +155 -0
  813. pyvale/simcases/case22.geo +82 -0
  814. pyvale/simcases/case22.i +140 -0
  815. pyvale/simcases/case23.geo +164 -0
  816. pyvale/simcases/case23.i +140 -0
  817. pyvale/simcases/case24.geo +79 -0
  818. pyvale/simcases/case24.i +123 -0
  819. pyvale/simcases/case25.geo +82 -0
  820. pyvale/simcases/case25.i +140 -0
  821. pyvale/simcases/case26.geo +166 -0
  822. pyvale/simcases/case26.i +140 -0
  823. pyvale/simcases/cases_dictionary.yaml +336 -0
  824. pyvale/simcases/run_1case.py +60 -0
  825. pyvale/simcases/run_all_cases.py +69 -0
  826. pyvale/simcases/run_build_case.py +64 -0
  827. pyvale/simcases/run_example_cases.py +69 -0
  828. pyvale/strain/__init__.py +13 -0
  829. pyvale/strain/cpp/bindings.cpp +25 -0
  830. pyvale/strain/cpp/smooth.cpp +140 -0
  831. pyvale/strain/cpp/smooth.hpp +53 -0
  832. pyvale/strain/cpp/strain.cpp +390 -0
  833. pyvale/strain/cpp/strain.hpp +177 -0
  834. pyvale/strain/strain.py +117 -0
  835. pyvale/strain/strain_cpp.cpython-311-i386-linux-gnu.so +0 -0
  836. pyvale/strain/strainchecks.py +47 -0
  837. pyvale/strain/strainimport.py +303 -0
  838. pyvale/strain/strainresults.py +55 -0
  839. pyvale/verif/__init__.py +15 -0
  840. pyvale/verif/analyticmeshgen.py +102 -0
  841. pyvale/verif/analyticsimdatafactory.py +125 -0
  842. pyvale/verif/analyticsimdatagenerator.py +368 -0
  843. pyvale/verif/matchsimdata.py +113 -0
  844. pyvale/verif/pointsens.py +120 -0
  845. pyvale/verif/pointsensconst.py +19 -0
  846. pyvale/verif/pointsensmech.py +270 -0
  847. pyvale/verif/pointsensmultiphys.py +184 -0
  848. pyvale/verif/pointsensscalar.py +383 -0
  849. pyvale/verif/pointsenstensor.py +159 -0
  850. pyvale/verif/pointsensvector.py +157 -0
  851. pyvale-2026.1.1.dist-info/METADATA +98 -0
  852. pyvale-2026.1.1.dist-info/RECORD +860 -0
  853. pyvale-2026.1.1.dist-info/WHEEL +6 -0
  854. pyvale-2026.1.1.dist-info/licenses/LICENSE +21 -0
  855. pyvale.libs/libgomp-65f46eca.so.1.0.0 +0 -0
  856. share/eigen3/cmake/Eigen3Config.cmake +37 -0
  857. share/eigen3/cmake/Eigen3ConfigVersion.cmake +65 -0
  858. share/eigen3/cmake/Eigen3Targets.cmake +106 -0
  859. share/eigen3/cmake/UseEigen3.cmake +6 -0
  860. share/pkgconfig/eigen3.pc +9 -0
@@ -0,0 +1,3392 @@
1
+ <!DOCTYPE html>
2
+ <!-- Generated by Cython 3.2.1 -->
3
+ <html>
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>Cython: rastercyth.py</title>
7
+ <style type="text/css">
8
+
9
+ body.cython { font-family: courier; font-size: 12; }
10
+
11
+ .cython.tag { }
12
+ .cython.line { color: #000000; margin: 0em }
13
+ .cython.code { font-size: 9; color: #444444; display: none; margin: 0px 0px 0px 8px; border-left: 8px none; }
14
+
15
+ .cython.line .run { background-color: #B0FFB0; }
16
+ .cython.line .mis { background-color: #FFB0B0; }
17
+ .cython.code.run { border-left: 8px solid #B0FFB0; }
18
+ .cython.code.mis { border-left: 8px solid #FFB0B0; }
19
+
20
+ .cython.code .py_c_api { color: red; }
21
+ .cython.code .py_macro_api { color: #FF7000; }
22
+ .cython.code .pyx_c_api { color: #FF3000; }
23
+ .cython.code .pyx_macro_api { color: #FF7000; }
24
+ .cython.code .refnanny { color: #FFA000; }
25
+ .cython.code .trace { color: #FFA000; }
26
+ .cython.code .error_goto { color: #FFA000; }
27
+
28
+ .cython.code .coerce { color: #008000; border: 1px dotted #008000 }
29
+ .cython.code .py_attr { color: #FF0000; font-weight: bold; }
30
+ .cython.code .c_attr { color: #0000FF; }
31
+ .cython.code .py_call { color: #FF0000; font-weight: bold; }
32
+ .cython.code .c_call { color: #0000FF; }
33
+
34
+ .cython.score-0 {background-color: #FFFFff;}
35
+ .cython.score-1 {background-color: #FFFFe7;}
36
+ .cython.score-2 {background-color: #FFFFd4;}
37
+ .cython.score-3 {background-color: #FFFFc4;}
38
+ .cython.score-4 {background-color: #FFFFb6;}
39
+ .cython.score-5 {background-color: #FFFFaa;}
40
+ .cython.score-6 {background-color: #FFFF9f;}
41
+ .cython.score-7 {background-color: #FFFF96;}
42
+ .cython.score-8 {background-color: #FFFF8d;}
43
+ .cython.score-9 {background-color: #FFFF86;}
44
+ .cython.score-10 {background-color: #FFFF7f;}
45
+ .cython.score-11 {background-color: #FFFF79;}
46
+ .cython.score-12 {background-color: #FFFF73;}
47
+ .cython.score-13 {background-color: #FFFF6e;}
48
+ .cython.score-14 {background-color: #FFFF6a;}
49
+ .cython.score-15 {background-color: #FFFF66;}
50
+ .cython.score-16 {background-color: #FFFF62;}
51
+ .cython.score-17 {background-color: #FFFF5e;}
52
+ .cython.score-18 {background-color: #FFFF5b;}
53
+ .cython.score-19 {background-color: #FFFF57;}
54
+ .cython.score-20 {background-color: #FFFF55;}
55
+ .cython.score-21 {background-color: #FFFF52;}
56
+ .cython.score-22 {background-color: #FFFF4f;}
57
+ .cython.score-23 {background-color: #FFFF4d;}
58
+ .cython.score-24 {background-color: #FFFF4b;}
59
+ .cython.score-25 {background-color: #FFFF48;}
60
+ .cython.score-26 {background-color: #FFFF46;}
61
+ .cython.score-27 {background-color: #FFFF44;}
62
+ .cython.score-28 {background-color: #FFFF43;}
63
+ .cython.score-29 {background-color: #FFFF41;}
64
+ .cython.score-30 {background-color: #FFFF3f;}
65
+ .cython.score-31 {background-color: #FFFF3e;}
66
+ .cython.score-32 {background-color: #FFFF3c;}
67
+ .cython.score-33 {background-color: #FFFF3b;}
68
+ .cython.score-34 {background-color: #FFFF39;}
69
+ .cython.score-35 {background-color: #FFFF38;}
70
+ .cython.score-36 {background-color: #FFFF37;}
71
+ .cython.score-37 {background-color: #FFFF36;}
72
+ .cython.score-38 {background-color: #FFFF35;}
73
+ .cython.score-39 {background-color: #FFFF34;}
74
+ .cython.score-40 {background-color: #FFFF33;}
75
+ .cython.score-41 {background-color: #FFFF32;}
76
+ .cython.score-42 {background-color: #FFFF31;}
77
+ .cython.score-43 {background-color: #FFFF30;}
78
+ .cython.score-44 {background-color: #FFFF2f;}
79
+ .cython.score-45 {background-color: #FFFF2e;}
80
+ .cython.score-46 {background-color: #FFFF2d;}
81
+ .cython.score-47 {background-color: #FFFF2c;}
82
+ .cython.score-48 {background-color: #FFFF2b;}
83
+ .cython.score-49 {background-color: #FFFF2b;}
84
+ .cython.score-50 {background-color: #FFFF2a;}
85
+ .cython.score-51 {background-color: #FFFF29;}
86
+ .cython.score-52 {background-color: #FFFF29;}
87
+ .cython.score-53 {background-color: #FFFF28;}
88
+ .cython.score-54 {background-color: #FFFF27;}
89
+ .cython.score-55 {background-color: #FFFF27;}
90
+ .cython.score-56 {background-color: #FFFF26;}
91
+ .cython.score-57 {background-color: #FFFF26;}
92
+ .cython.score-58 {background-color: #FFFF25;}
93
+ .cython.score-59 {background-color: #FFFF24;}
94
+ .cython.score-60 {background-color: #FFFF24;}
95
+ .cython.score-61 {background-color: #FFFF23;}
96
+ .cython.score-62 {background-color: #FFFF23;}
97
+ .cython.score-63 {background-color: #FFFF22;}
98
+ .cython.score-64 {background-color: #FFFF22;}
99
+ .cython.score-65 {background-color: #FFFF22;}
100
+ .cython.score-66 {background-color: #FFFF21;}
101
+ .cython.score-67 {background-color: #FFFF21;}
102
+ .cython.score-68 {background-color: #FFFF20;}
103
+ .cython.score-69 {background-color: #FFFF20;}
104
+ .cython.score-70 {background-color: #FFFF1f;}
105
+ .cython.score-71 {background-color: #FFFF1f;}
106
+ .cython.score-72 {background-color: #FFFF1f;}
107
+ .cython.score-73 {background-color: #FFFF1e;}
108
+ .cython.score-74 {background-color: #FFFF1e;}
109
+ .cython.score-75 {background-color: #FFFF1e;}
110
+ .cython.score-76 {background-color: #FFFF1d;}
111
+ .cython.score-77 {background-color: #FFFF1d;}
112
+ .cython.score-78 {background-color: #FFFF1c;}
113
+ .cython.score-79 {background-color: #FFFF1c;}
114
+ .cython.score-80 {background-color: #FFFF1c;}
115
+ .cython.score-81 {background-color: #FFFF1c;}
116
+ .cython.score-82 {background-color: #FFFF1b;}
117
+ .cython.score-83 {background-color: #FFFF1b;}
118
+ .cython.score-84 {background-color: #FFFF1b;}
119
+ .cython.score-85 {background-color: #FFFF1a;}
120
+ .cython.score-86 {background-color: #FFFF1a;}
121
+ .cython.score-87 {background-color: #FFFF1a;}
122
+ .cython.score-88 {background-color: #FFFF1a;}
123
+ .cython.score-89 {background-color: #FFFF19;}
124
+ .cython.score-90 {background-color: #FFFF19;}
125
+ .cython.score-91 {background-color: #FFFF19;}
126
+ .cython.score-92 {background-color: #FFFF19;}
127
+ .cython.score-93 {background-color: #FFFF18;}
128
+ .cython.score-94 {background-color: #FFFF18;}
129
+ .cython.score-95 {background-color: #FFFF18;}
130
+ .cython.score-96 {background-color: #FFFF18;}
131
+ .cython.score-97 {background-color: #FFFF17;}
132
+ .cython.score-98 {background-color: #FFFF17;}
133
+ .cython.score-99 {background-color: #FFFF17;}
134
+ .cython.score-100 {background-color: #FFFF17;}
135
+ .cython.score-101 {background-color: #FFFF16;}
136
+ .cython.score-102 {background-color: #FFFF16;}
137
+ .cython.score-103 {background-color: #FFFF16;}
138
+ .cython.score-104 {background-color: #FFFF16;}
139
+ .cython.score-105 {background-color: #FFFF16;}
140
+ .cython.score-106 {background-color: #FFFF15;}
141
+ .cython.score-107 {background-color: #FFFF15;}
142
+ .cython.score-108 {background-color: #FFFF15;}
143
+ .cython.score-109 {background-color: #FFFF15;}
144
+ .cython.score-110 {background-color: #FFFF15;}
145
+ .cython.score-111 {background-color: #FFFF15;}
146
+ .cython.score-112 {background-color: #FFFF14;}
147
+ .cython.score-113 {background-color: #FFFF14;}
148
+ .cython.score-114 {background-color: #FFFF14;}
149
+ .cython.score-115 {background-color: #FFFF14;}
150
+ .cython.score-116 {background-color: #FFFF14;}
151
+ .cython.score-117 {background-color: #FFFF14;}
152
+ .cython.score-118 {background-color: #FFFF13;}
153
+ .cython.score-119 {background-color: #FFFF13;}
154
+ .cython.score-120 {background-color: #FFFF13;}
155
+ .cython.score-121 {background-color: #FFFF13;}
156
+ .cython.score-122 {background-color: #FFFF13;}
157
+ .cython.score-123 {background-color: #FFFF13;}
158
+ .cython.score-124 {background-color: #FFFF13;}
159
+ .cython.score-125 {background-color: #FFFF12;}
160
+ .cython.score-126 {background-color: #FFFF12;}
161
+ .cython.score-127 {background-color: #FFFF12;}
162
+ .cython.score-128 {background-color: #FFFF12;}
163
+ .cython.score-129 {background-color: #FFFF12;}
164
+ .cython.score-130 {background-color: #FFFF12;}
165
+ .cython.score-131 {background-color: #FFFF12;}
166
+ .cython.score-132 {background-color: #FFFF11;}
167
+ .cython.score-133 {background-color: #FFFF11;}
168
+ .cython.score-134 {background-color: #FFFF11;}
169
+ .cython.score-135 {background-color: #FFFF11;}
170
+ .cython.score-136 {background-color: #FFFF11;}
171
+ .cython.score-137 {background-color: #FFFF11;}
172
+ .cython.score-138 {background-color: #FFFF11;}
173
+ .cython.score-139 {background-color: #FFFF11;}
174
+ .cython.score-140 {background-color: #FFFF11;}
175
+ .cython.score-141 {background-color: #FFFF10;}
176
+ .cython.score-142 {background-color: #FFFF10;}
177
+ .cython.score-143 {background-color: #FFFF10;}
178
+ .cython.score-144 {background-color: #FFFF10;}
179
+ .cython.score-145 {background-color: #FFFF10;}
180
+ .cython.score-146 {background-color: #FFFF10;}
181
+ .cython.score-147 {background-color: #FFFF10;}
182
+ .cython.score-148 {background-color: #FFFF10;}
183
+ .cython.score-149 {background-color: #FFFF10;}
184
+ .cython.score-150 {background-color: #FFFF0f;}
185
+ .cython.score-151 {background-color: #FFFF0f;}
186
+ .cython.score-152 {background-color: #FFFF0f;}
187
+ .cython.score-153 {background-color: #FFFF0f;}
188
+ .cython.score-154 {background-color: #FFFF0f;}
189
+ .cython.score-155 {background-color: #FFFF0f;}
190
+ .cython.score-156 {background-color: #FFFF0f;}
191
+ .cython.score-157 {background-color: #FFFF0f;}
192
+ .cython.score-158 {background-color: #FFFF0f;}
193
+ .cython.score-159 {background-color: #FFFF0f;}
194
+ .cython.score-160 {background-color: #FFFF0f;}
195
+ .cython.score-161 {background-color: #FFFF0e;}
196
+ .cython.score-162 {background-color: #FFFF0e;}
197
+ .cython.score-163 {background-color: #FFFF0e;}
198
+ .cython.score-164 {background-color: #FFFF0e;}
199
+ .cython.score-165 {background-color: #FFFF0e;}
200
+ .cython.score-166 {background-color: #FFFF0e;}
201
+ .cython.score-167 {background-color: #FFFF0e;}
202
+ .cython.score-168 {background-color: #FFFF0e;}
203
+ .cython.score-169 {background-color: #FFFF0e;}
204
+ .cython.score-170 {background-color: #FFFF0e;}
205
+ .cython.score-171 {background-color: #FFFF0e;}
206
+ .cython.score-172 {background-color: #FFFF0e;}
207
+ .cython.score-173 {background-color: #FFFF0d;}
208
+ .cython.score-174 {background-color: #FFFF0d;}
209
+ .cython.score-175 {background-color: #FFFF0d;}
210
+ .cython.score-176 {background-color: #FFFF0d;}
211
+ .cython.score-177 {background-color: #FFFF0d;}
212
+ .cython.score-178 {background-color: #FFFF0d;}
213
+ .cython.score-179 {background-color: #FFFF0d;}
214
+ .cython.score-180 {background-color: #FFFF0d;}
215
+ .cython.score-181 {background-color: #FFFF0d;}
216
+ .cython.score-182 {background-color: #FFFF0d;}
217
+ .cython.score-183 {background-color: #FFFF0d;}
218
+ .cython.score-184 {background-color: #FFFF0d;}
219
+ .cython.score-185 {background-color: #FFFF0d;}
220
+ .cython.score-186 {background-color: #FFFF0d;}
221
+ .cython.score-187 {background-color: #FFFF0c;}
222
+ .cython.score-188 {background-color: #FFFF0c;}
223
+ .cython.score-189 {background-color: #FFFF0c;}
224
+ .cython.score-190 {background-color: #FFFF0c;}
225
+ .cython.score-191 {background-color: #FFFF0c;}
226
+ .cython.score-192 {background-color: #FFFF0c;}
227
+ .cython.score-193 {background-color: #FFFF0c;}
228
+ .cython.score-194 {background-color: #FFFF0c;}
229
+ .cython.score-195 {background-color: #FFFF0c;}
230
+ .cython.score-196 {background-color: #FFFF0c;}
231
+ .cython.score-197 {background-color: #FFFF0c;}
232
+ .cython.score-198 {background-color: #FFFF0c;}
233
+ .cython.score-199 {background-color: #FFFF0c;}
234
+ .cython.score-200 {background-color: #FFFF0c;}
235
+ .cython.score-201 {background-color: #FFFF0c;}
236
+ .cython.score-202 {background-color: #FFFF0c;}
237
+ .cython.score-203 {background-color: #FFFF0b;}
238
+ .cython.score-204 {background-color: #FFFF0b;}
239
+ .cython.score-205 {background-color: #FFFF0b;}
240
+ .cython.score-206 {background-color: #FFFF0b;}
241
+ .cython.score-207 {background-color: #FFFF0b;}
242
+ .cython.score-208 {background-color: #FFFF0b;}
243
+ .cython.score-209 {background-color: #FFFF0b;}
244
+ .cython.score-210 {background-color: #FFFF0b;}
245
+ .cython.score-211 {background-color: #FFFF0b;}
246
+ .cython.score-212 {background-color: #FFFF0b;}
247
+ .cython.score-213 {background-color: #FFFF0b;}
248
+ .cython.score-214 {background-color: #FFFF0b;}
249
+ .cython.score-215 {background-color: #FFFF0b;}
250
+ .cython.score-216 {background-color: #FFFF0b;}
251
+ .cython.score-217 {background-color: #FFFF0b;}
252
+ .cython.score-218 {background-color: #FFFF0b;}
253
+ .cython.score-219 {background-color: #FFFF0b;}
254
+ .cython.score-220 {background-color: #FFFF0b;}
255
+ .cython.score-221 {background-color: #FFFF0b;}
256
+ .cython.score-222 {background-color: #FFFF0a;}
257
+ .cython.score-223 {background-color: #FFFF0a;}
258
+ .cython.score-224 {background-color: #FFFF0a;}
259
+ .cython.score-225 {background-color: #FFFF0a;}
260
+ .cython.score-226 {background-color: #FFFF0a;}
261
+ .cython.score-227 {background-color: #FFFF0a;}
262
+ .cython.score-228 {background-color: #FFFF0a;}
263
+ .cython.score-229 {background-color: #FFFF0a;}
264
+ .cython.score-230 {background-color: #FFFF0a;}
265
+ .cython.score-231 {background-color: #FFFF0a;}
266
+ .cython.score-232 {background-color: #FFFF0a;}
267
+ .cython.score-233 {background-color: #FFFF0a;}
268
+ .cython.score-234 {background-color: #FFFF0a;}
269
+ .cython.score-235 {background-color: #FFFF0a;}
270
+ .cython.score-236 {background-color: #FFFF0a;}
271
+ .cython.score-237 {background-color: #FFFF0a;}
272
+ .cython.score-238 {background-color: #FFFF0a;}
273
+ .cython.score-239 {background-color: #FFFF0a;}
274
+ .cython.score-240 {background-color: #FFFF0a;}
275
+ .cython.score-241 {background-color: #FFFF0a;}
276
+ .cython.score-242 {background-color: #FFFF0a;}
277
+ .cython.score-243 {background-color: #FFFF0a;}
278
+ .cython.score-244 {background-color: #FFFF0a;}
279
+ .cython.score-245 {background-color: #FFFF0a;}
280
+ .cython.score-246 {background-color: #FFFF09;}
281
+ .cython.score-247 {background-color: #FFFF09;}
282
+ .cython.score-248 {background-color: #FFFF09;}
283
+ .cython.score-249 {background-color: #FFFF09;}
284
+ .cython.score-250 {background-color: #FFFF09;}
285
+ .cython.score-251 {background-color: #FFFF09;}
286
+ .cython.score-252 {background-color: #FFFF09;}
287
+ .cython.score-253 {background-color: #FFFF09;}
288
+ .cython.score-254 {background-color: #FFFF09;}
289
+ </style>
290
+ </head>
291
+ <body class="cython">
292
+ <p><span style="border-bottom: solid 1px grey;">Generated by Cython 3.2.1</span></p>
293
+ <p>
294
+ <span style="background-color: #FFFF00">Yellow lines</span> hint at Python interaction.<br />
295
+ Click on a line that starts with a "<code>+</code>" to see the C code that Cython generated for it.
296
+ </p>
297
+ <p>Raw output: <a href="rastercyth.c">rastercyth.c</a></p>
298
+ <div class="cython"><pre class="cython line score-8" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">001</span>: # ==============================================================================</pre>
299
+ <pre class='cython code score-8 '> __pyx_t_5 = <span class='pyx_c_api'>__Pyx_PyDict_NewPresized</span>(0);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1, __pyx_L1_error)</span>
300
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
301
+ if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_mstate_global-&gt;__pyx_d, __pyx_mstate_global-&gt;__pyx_n_u_test, __pyx_t_5) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 1, __pyx_L1_error)</span>
302
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
303
+ </pre><pre class="cython line score-0">&#xA0;<span class="">002</span>: # pyvale: the python validation engine</pre>
304
+ <pre class="cython line score-0">&#xA0;<span class="">003</span>: # License: MIT</pre>
305
+ <pre class="cython line score-0">&#xA0;<span class="">004</span>: # Copyright (C) 2025 The Computer Aided Validation Team</pre>
306
+ <pre class="cython line score-0">&#xA0;<span class="">005</span>: # ==============================================================================</pre>
307
+ <pre class="cython line score-0">&#xA0;<span class="">006</span>: </pre>
308
+ <pre class="cython line score-0">&#xA0;<span class="">007</span>: """</pre>
309
+ <pre class="cython line score-0">&#xA0;<span class="">008</span>: NOTE: this module is a feature under developement.</pre>
310
+ <pre class="cython line score-0">&#xA0;<span class="">009</span>: """</pre>
311
+ <pre class="cython line score-0">&#xA0;<span class="">010</span>: </pre>
312
+ <pre class="cython line score-8" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">011</span>: import numpy as np</pre>
313
+ <pre class='cython code score-8 '> __pyx_t_1 = <span class='pyx_c_api'>__Pyx_Import</span>(__pyx_mstate_global-&gt;__pyx_n_u_numpy, 0, 0, NULL, 0);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11, __pyx_L1_error)</span>
314
+ __pyx_t_4 = __pyx_t_1;
315
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
316
+ if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_mstate_global-&gt;__pyx_d, __pyx_mstate_global-&gt;__pyx_n_u_np, __pyx_t_4) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 11, __pyx_L1_error)</span>
317
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
318
+ </pre><pre class="cython line score-0">&#xA0;<span class="">012</span>: import cython</pre>
319
+ <pre class="cython line score-0">&#xA0;<span class="">013</span>: #from cython.parallel import prange, parallel, threadid</pre>
320
+ <pre class="cython line score-0">&#xA0;<span class="">014</span>: from cython.cimports.libc.math import floor, ceil</pre>
321
+ <pre class="cython line score-11" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">015</span>: from pyvale.sensorsim.cameradata import CameraData</pre>
322
+ <pre class='cython code score-11 '> {
323
+ PyObject* const __pyx_imported_names[] = {__pyx_mstate_global-&gt;__pyx_n_u_CameraData};
324
+ __pyx_t_1 = <span class='pyx_c_api'>__Pyx_Import</span>(__pyx_mstate_global-&gt;__pyx_n_u_pyvale_sensorsim_cameradata, __pyx_imported_names, 1, NULL, 0);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error)</span>
325
+ }
326
+ __pyx_t_4 = __pyx_t_1;
327
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
328
+ {
329
+ PyObject* const __pyx_imported_names[] = {__pyx_mstate_global-&gt;__pyx_n_u_CameraData};
330
+ __pyx_t_9 = 0; {
331
+ __pyx_t_5 = <span class='pyx_c_api'>__Pyx_ImportFrom</span>(__pyx_t_4, __pyx_imported_names[__pyx_t_9]);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 15, __pyx_L1_error)</span>
332
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
333
+ if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_mstate_global-&gt;__pyx_d, __pyx_imported_names[__pyx_t_9], __pyx_t_5) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 15, __pyx_L1_error)</span>
334
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
335
+ }
336
+ }
337
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
338
+ </pre><pre class="cython line score-0">&#xA0;<span class="">016</span>: </pre>
339
+ <pre class="cython line score-0">&#xA0;<span class="">017</span>: # NOTE: This module is a feature under developement.</pre>
340
+ <pre class="cython line score-0">&#xA0;<span class="">018</span>: </pre>
341
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">019</span>: @cython.nogil</pre>
342
+ <pre class='cython code score-0 '>static CYTHON_INLINE size_t __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_range_len_double(double __pyx_v_start, double __pyx_v_stop, double __pyx_v_step) {
343
+ size_t __pyx_r;
344
+ /* … */
345
+ /* function exit code */
346
+ __pyx_L0:;
347
+ return __pyx_r;
348
+ }
349
+ </pre><pre class="cython line score-0">&#xA0;<span class="">020</span>: @cython.cfunc # python+C or cython.cfunc for C only</pre>
350
+ <pre class="cython line score-0">&#xA0;<span class="">021</span>: @cython.boundscheck(False) # Turn off array bounds checking</pre>
351
+ <pre class="cython line score-0">&#xA0;<span class="">022</span>: @cython.wraparound(False) # Turn off negative indexing</pre>
352
+ <pre class="cython line score-0">&#xA0;<span class="">023</span>: @cython.cdivision(True) # Turn off divide by zero check</pre>
353
+ <pre class="cython line score-0">&#xA0;<span class="">024</span>: @cython.inline</pre>
354
+ <pre class="cython line score-0">&#xA0;<span class="">025</span>: @cython.exceptval(check=False)</pre>
355
+ <pre class="cython line score-0">&#xA0;<span class="">026</span>: def range_len_double(start: cython.double,</pre>
356
+ <pre class="cython line score-0">&#xA0;<span class="">027</span>: stop: cython.double,</pre>
357
+ <pre class="cython line score-0">&#xA0;<span class="">028</span>: step: cython.double) -&gt; cython.size_t:</pre>
358
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">029</span>: return int(ceil((stop - start) / step))</pre>
359
+ <pre class='cython code score-0 '> __pyx_r = ((size_t)ceil(((__pyx_v_stop - __pyx_v_start) / __pyx_v_step)));
360
+ goto __pyx_L0;
361
+ </pre><pre class="cython line score-0">&#xA0;<span class="">030</span>: </pre>
362
+ <pre class="cython line score-0">&#xA0;<span class="">031</span>: </pre>
363
+ <pre class="cython line score-15" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">032</span>: @cython.nogil</pre>
364
+ <pre class='cython code score-15 '>static CYTHON_INLINE __Pyx_memviewslice __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_vec_range_int(int __pyx_v_start, int __pyx_v_stop, int __pyx_v_step, __Pyx_memviewslice __pyx_v_vec_buffer) {
365
+ size_t __pyx_v_num_vals;
366
+ size_t __pyx_v_ii;
367
+ __Pyx_memviewslice __pyx_r = { 0, 0, { 0 }, { 0 }, { 0 } };
368
+ /* … */
369
+ /* function exit code */
370
+ __pyx_L1_error:;
371
+ __pyx_gilstate_save = <span class='pyx_c_api'>__Pyx_PyGILState_Ensure</span>();
372
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_7, 1);
373
+ __pyx_r.data = NULL;
374
+ __pyx_r.memview = NULL;
375
+ <span class='pyx_c_api'>__Pyx_AddTraceback</span>("pyvale.sensorsim.cython.rastercyth.vec_range_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
376
+ goto __pyx_L2;
377
+ __pyx_L0:;
378
+ if (unlikely(!__pyx_r.memview)) {
379
+ PyGILState_STATE __pyx_gilstate_save = <span class='pyx_c_api'>__Pyx_PyGILState_Ensure</span>();
380
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "Memoryview return value is not initialized");
381
+ <span class='pyx_c_api'>__Pyx_PyGILState_Release</span>(__pyx_gilstate_save);
382
+ }
383
+ <span class='pyx_c_api'>__Pyx_PyGILState_Release</span>(__pyx_gilstate_save);
384
+ __pyx_L2:;
385
+ return __pyx_r;
386
+ }
387
+ </pre><pre class="cython line score-0">&#xA0;<span class="">033</span>: @cython.cfunc # python+C or cython.cfunc for C only</pre>
388
+ <pre class="cython line score-0">&#xA0;<span class="">034</span>: @cython.boundscheck(False) # Turn off array bounds checking</pre>
389
+ <pre class="cython line score-0">&#xA0;<span class="">035</span>: @cython.wraparound(False) # Turn off negative indexing</pre>
390
+ <pre class="cython line score-0">&#xA0;<span class="">036</span>: @cython.cdivision(True) # Turn off divide by zero check</pre>
391
+ <pre class="cython line score-0">&#xA0;<span class="">037</span>: @cython.inline</pre>
392
+ <pre class="cython line score-0">&#xA0;<span class="">038</span>: @cython.exceptval(check=False)</pre>
393
+ <pre class="cython line score-0">&#xA0;<span class="">039</span>: def vec_range_int(start: cython.int,</pre>
394
+ <pre class="cython line score-0">&#xA0;<span class="">040</span>: stop: cython.int,</pre>
395
+ <pre class="cython line score-0">&#xA0;<span class="">041</span>: step: cython.int,</pre>
396
+ <pre class="cython line score-0">&#xA0;<span class="">042</span>: vec_buffer: cython.long[:]) -&gt; cython.long[:]:</pre>
397
+ <pre class="cython line score-0">&#xA0;<span class="">043</span>: </pre>
398
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">044</span>: num_vals: cython.size_t = int(ceil((stop - start) / step))</pre>
399
+ <pre class='cython code score-0 '> __pyx_v_num_vals = ((size_t)ceil(((__pyx_v_stop - __pyx_v_start) / __pyx_v_step)));
400
+ </pre><pre class="cython line score-0">&#xA0;<span class="">045</span>: </pre>
401
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">046</span>: vec_buffer[0] = start</pre>
402
+ <pre class='cython code score-0 '> __pyx_t_1 = 0;
403
+ *((long *) ( /* dim=0 */ (__pyx_v_vec_buffer.data + __pyx_t_1 * __pyx_v_vec_buffer.strides[0]) )) = __pyx_v_start;
404
+ </pre><pre class="cython line score-0">&#xA0;<span class="">047</span>: ii: cython.size_t</pre>
405
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">048</span>: for ii in range(1,num_vals):</pre>
406
+ <pre class='cython code score-0 '> __pyx_t_2 = __pyx_v_num_vals;
407
+ __pyx_t_3 = __pyx_t_2;
408
+ for (__pyx_t_4 = 1; __pyx_t_4 &lt; __pyx_t_3; __pyx_t_4+=1) {
409
+ __pyx_v_ii = __pyx_t_4;
410
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">049</span>: vec_buffer[ii] = vec_buffer[ii-1] + step</pre>
411
+ <pre class='cython code score-0 '> __pyx_t_5 = (__pyx_v_ii - 1);
412
+ __pyx_t_6 = __pyx_v_ii;
413
+ *((long *) ( /* dim=0 */ (__pyx_v_vec_buffer.data + __pyx_t_6 * __pyx_v_vec_buffer.strides[0]) )) = ((*((long *) ( /* dim=0 */ (__pyx_v_vec_buffer.data + __pyx_t_5 * __pyx_v_vec_buffer.strides[0]) ))) + __pyx_v_step);
414
+ }
415
+ </pre><pre class="cython line score-0">&#xA0;<span class="">050</span>: </pre>
416
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">051</span>: return vec_buffer[0:num_vals]</pre>
417
+ <pre class='cython code score-0 '> __pyx_t_7.data = __pyx_v_vec_buffer.data;
418
+ __pyx_t_7.memview = __pyx_v_vec_buffer.memview;
419
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_7, 0);
420
+ __pyx_t_8 = -1;
421
+ if (unlikely(__pyx_memoryview_slice_memviewslice(
422
+ &amp;__pyx_t_7,
423
+ __pyx_v_vec_buffer.shape[0], __pyx_v_vec_buffer.strides[0], __pyx_v_vec_buffer.suboffsets[0],
424
+ 0,
425
+ 0,
426
+ &amp;__pyx_t_8,
427
+ 0,
428
+ __pyx_v_num_vals,
429
+ 0,
430
+ 1,
431
+ 1,
432
+ 0,
433
+ 1) &lt; 0))
434
+ {
435
+ <span class='error_goto'>__PYX_ERR(0, 51, __pyx_L1_error)</span>
436
+ }
437
+
438
+ __pyx_r = __pyx_t_7;
439
+ __pyx_t_7.memview = NULL;
440
+ __pyx_t_7.data = NULL;
441
+ goto __pyx_L0;
442
+ </pre><pre class="cython line score-0">&#xA0;<span class="">052</span>: </pre>
443
+ <pre class="cython line score-0">&#xA0;<span class="">053</span>: </pre>
444
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">054</span>: @cython.nogil</pre>
445
+ <pre class='cython code score-0 '>static CYTHON_INLINE double __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_vec_max_double(__Pyx_memviewslice __pyx_v_vals) {
446
+ size_t __pyx_v_num_vals;
447
+ size_t __pyx_v_ii;
448
+ double __pyx_v_max_val;
449
+ double __pyx_r;
450
+ /* … */
451
+ /* function exit code */
452
+ __pyx_L0:;
453
+ return __pyx_r;
454
+ }
455
+ </pre><pre class="cython line score-0">&#xA0;<span class="">055</span>: @cython.cfunc # python+C or cython.cfunc for C only</pre>
456
+ <pre class="cython line score-0">&#xA0;<span class="">056</span>: @cython.boundscheck(False) # Turn off array bounds checking</pre>
457
+ <pre class="cython line score-0">&#xA0;<span class="">057</span>: @cython.wraparound(False) # Turn off negative indexing</pre>
458
+ <pre class="cython line score-0">&#xA0;<span class="">058</span>: @cython.cdivision(True) # Turn off divide by zero check</pre>
459
+ <pre class="cython line score-0">&#xA0;<span class="">059</span>: @cython.inline</pre>
460
+ <pre class="cython line score-0">&#xA0;<span class="">060</span>: @cython.exceptval(check=False)</pre>
461
+ <pre class="cython line score-0">&#xA0;<span class="">061</span>: def vec_max_double(vals: cython.double[:]) -&gt; cython.double:</pre>
462
+ <pre class="cython line score-0">&#xA0;<span class="">062</span>: </pre>
463
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">063</span>: num_vals: cython.size_t = vals.shape[0]</pre>
464
+ <pre class='cython code score-0 '> __pyx_v_num_vals = (__pyx_v_vals.shape[0]);
465
+ </pre><pre class="cython line score-0">&#xA0;<span class="">064</span>: </pre>
466
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">065</span>: ii: cython.size_t = 0</pre>
467
+ <pre class='cython code score-0 '> __pyx_v_ii = 0;
468
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">066</span>: max_val: cython.double = vals[ii]</pre>
469
+ <pre class='cython code score-0 '> __pyx_t_1 = __pyx_v_ii;
470
+ __pyx_v_max_val = (*((double *) ( /* dim=0 */ (__pyx_v_vals.data + __pyx_t_1 * __pyx_v_vals.strides[0]) )));
471
+ </pre><pre class="cython line score-0">&#xA0;<span class="">067</span>: </pre>
472
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">068</span>: for ii in range(1,num_vals):</pre>
473
+ <pre class='cython code score-0 '> __pyx_t_1 = __pyx_v_num_vals;
474
+ __pyx_t_2 = __pyx_t_1;
475
+ for (__pyx_t_3 = 1; __pyx_t_3 &lt; __pyx_t_2; __pyx_t_3+=1) {
476
+ __pyx_v_ii = __pyx_t_3;
477
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">069</span>: if vals[ii] &gt; max_val:</pre>
478
+ <pre class='cython code score-0 '> __pyx_t_4 = __pyx_v_ii;
479
+ __pyx_t_5 = ((*((double *) ( /* dim=0 */ (__pyx_v_vals.data + __pyx_t_4 * __pyx_v_vals.strides[0]) ))) &gt; __pyx_v_max_val);
480
+ if (__pyx_t_5) {
481
+ /* … */
482
+ }
483
+ }
484
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">070</span>: max_val = vals[ii]</pre>
485
+ <pre class='cython code score-0 '> __pyx_t_4 = __pyx_v_ii;
486
+ __pyx_v_max_val = (*((double *) ( /* dim=0 */ (__pyx_v_vals.data + __pyx_t_4 * __pyx_v_vals.strides[0]) )));
487
+ </pre><pre class="cython line score-0">&#xA0;<span class="">071</span>: </pre>
488
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">072</span>: return max_val</pre>
489
+ <pre class='cython code score-0 '> __pyx_r = __pyx_v_max_val;
490
+ goto __pyx_L0;
491
+ </pre><pre class="cython line score-0">&#xA0;<span class="">073</span>: </pre>
492
+ <pre class="cython line score-0">&#xA0;<span class="">074</span>: </pre>
493
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">075</span>: @cython.nogil</pre>
494
+ <pre class='cython code score-0 '>static CYTHON_INLINE double __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_vec_min_double(__Pyx_memviewslice __pyx_v_vals) {
495
+ size_t __pyx_v_num_vals;
496
+ size_t __pyx_v_ii;
497
+ double __pyx_v_min_val;
498
+ double __pyx_r;
499
+ /* … */
500
+ /* function exit code */
501
+ __pyx_L0:;
502
+ return __pyx_r;
503
+ }
504
+ </pre><pre class="cython line score-0">&#xA0;<span class="">076</span>: @cython.cfunc # python+C or cython.cfunc for C only</pre>
505
+ <pre class="cython line score-0">&#xA0;<span class="">077</span>: @cython.boundscheck(False) # Turn off array bounds checking</pre>
506
+ <pre class="cython line score-0">&#xA0;<span class="">078</span>: @cython.wraparound(False) # Turn off negative indexing</pre>
507
+ <pre class="cython line score-0">&#xA0;<span class="">079</span>: @cython.cdivision(True) # Turn off divide by zero check</pre>
508
+ <pre class="cython line score-0">&#xA0;<span class="">080</span>: @cython.inline</pre>
509
+ <pre class="cython line score-0">&#xA0;<span class="">081</span>: @cython.exceptval(check=False)</pre>
510
+ <pre class="cython line score-0">&#xA0;<span class="">082</span>: def vec_min_double(vals: cython.double[:]) -&gt; cython.double:</pre>
511
+ <pre class="cython line score-0">&#xA0;<span class="">083</span>: </pre>
512
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">084</span>: num_vals: cython.size_t = vals.shape[0]</pre>
513
+ <pre class='cython code score-0 '> __pyx_v_num_vals = (__pyx_v_vals.shape[0]);
514
+ </pre><pre class="cython line score-0">&#xA0;<span class="">085</span>: </pre>
515
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">086</span>: ii: cython.size_t = 0</pre>
516
+ <pre class='cython code score-0 '> __pyx_v_ii = 0;
517
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">087</span>: min_val: cython.double = vals[ii]</pre>
518
+ <pre class='cython code score-0 '> __pyx_t_1 = __pyx_v_ii;
519
+ __pyx_v_min_val = (*((double *) ( /* dim=0 */ (__pyx_v_vals.data + __pyx_t_1 * __pyx_v_vals.strides[0]) )));
520
+ </pre><pre class="cython line score-0">&#xA0;<span class="">088</span>: </pre>
521
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">089</span>: for ii in range(1,num_vals):</pre>
522
+ <pre class='cython code score-0 '> __pyx_t_1 = __pyx_v_num_vals;
523
+ __pyx_t_2 = __pyx_t_1;
524
+ for (__pyx_t_3 = 1; __pyx_t_3 &lt; __pyx_t_2; __pyx_t_3+=1) {
525
+ __pyx_v_ii = __pyx_t_3;
526
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">090</span>: if vals[ii] &lt; min_val:</pre>
527
+ <pre class='cython code score-0 '> __pyx_t_4 = __pyx_v_ii;
528
+ __pyx_t_5 = ((*((double *) ( /* dim=0 */ (__pyx_v_vals.data + __pyx_t_4 * __pyx_v_vals.strides[0]) ))) &lt; __pyx_v_min_val);
529
+ if (__pyx_t_5) {
530
+ /* … */
531
+ }
532
+ }
533
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">091</span>: min_val = vals[ii]</pre>
534
+ <pre class='cython code score-0 '> __pyx_t_4 = __pyx_v_ii;
535
+ __pyx_v_min_val = (*((double *) ( /* dim=0 */ (__pyx_v_vals.data + __pyx_t_4 * __pyx_v_vals.strides[0]) )));
536
+ </pre><pre class="cython line score-0">&#xA0;<span class="">092</span>: </pre>
537
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">093</span>: return min_val</pre>
538
+ <pre class='cython code score-0 '> __pyx_r = __pyx_v_min_val;
539
+ goto __pyx_L0;
540
+ </pre><pre class="cython line score-0">&#xA0;<span class="">094</span>: </pre>
541
+ <pre class="cython line score-0">&#xA0;<span class="">095</span>: </pre>
542
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">096</span>: @cython.nogil</pre>
543
+ <pre class='cython code score-0 '>static CYTHON_INLINE double __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_vec_dot_double(__Pyx_memviewslice __pyx_v_vec0, __Pyx_memviewslice __pyx_v_vec1) {
544
+ size_t __pyx_v_vec0_len;
545
+ size_t __pyx_v_vec1_len;
546
+ size_t __pyx_v_ii;
547
+ double __pyx_v_dot;
548
+ double __pyx_r;
549
+ /* … */
550
+ /* function exit code */
551
+ __pyx_L0:;
552
+ return __pyx_r;
553
+ }
554
+ </pre><pre class="cython line score-0">&#xA0;<span class="">097</span>: @cython.cfunc # python+C or cython.cfunc for C only</pre>
555
+ <pre class="cython line score-0">&#xA0;<span class="">098</span>: @cython.boundscheck(False) # Turn off array bounds checking</pre>
556
+ <pre class="cython line score-0">&#xA0;<span class="">099</span>: @cython.wraparound(False) # Turn off negative indexing</pre>
557
+ <pre class="cython line score-0">&#xA0;<span class="">100</span>: @cython.cdivision(True) # Turn off divide by zero check</pre>
558
+ <pre class="cython line score-0">&#xA0;<span class="">101</span>: @cython.inline</pre>
559
+ <pre class="cython line score-0">&#xA0;<span class="">102</span>: @cython.exceptval(check=False)</pre>
560
+ <pre class="cython line score-0">&#xA0;<span class="">103</span>: def vec_dot_double(vec0: cython.double[:], vec1: cython.double[:]</pre>
561
+ <pre class="cython line score-0">&#xA0;<span class="">104</span>: ) -&gt; cython.double:</pre>
562
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">105</span>: vec0_len: cython.size_t = vec0.shape[0]</pre>
563
+ <pre class='cython code score-0 '> __pyx_v_vec0_len = (__pyx_v_vec0.shape[0]);
564
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">106</span>: vec1_len: cython.size_t = vec1.shape[0]</pre>
565
+ <pre class='cython code score-0 '> __pyx_v_vec1_len = (__pyx_v_vec1.shape[0]);
566
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">107</span>: if vec0_len != vec1_len:</pre>
567
+ <pre class='cython code score-0 '> __pyx_t_1 = (__pyx_v_vec0_len != __pyx_v_vec1_len);
568
+ if (__pyx_t_1) {
569
+ /* … */
570
+ }
571
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">108</span>: return 0.0</pre>
572
+ <pre class='cython code score-0 '> __pyx_r = 0.0;
573
+ goto __pyx_L0;
574
+ </pre><pre class="cython line score-0">&#xA0;<span class="">109</span>: </pre>
575
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">110</span>: ii: cython.size_t = 0</pre>
576
+ <pre class='cython code score-0 '> __pyx_v_ii = 0;
577
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">111</span>: dot: cython.double = 0.0</pre>
578
+ <pre class='cython code score-0 '> __pyx_v_dot = 0.0;
579
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">112</span>: for ii in range(vec0_len):</pre>
580
+ <pre class='cython code score-0 '> __pyx_t_2 = __pyx_v_vec0_len;
581
+ __pyx_t_3 = __pyx_t_2;
582
+ for (__pyx_t_4 = 0; __pyx_t_4 &lt; __pyx_t_3; __pyx_t_4+=1) {
583
+ __pyx_v_ii = __pyx_t_4;
584
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">113</span>: dot += vec0[ii]*vec1[ii]</pre>
585
+ <pre class='cython code score-0 '> __pyx_t_5 = __pyx_v_ii;
586
+ __pyx_t_6 = __pyx_v_ii;
587
+ __pyx_v_dot = (__pyx_v_dot + ((*((double *) ( /* dim=0 */ (__pyx_v_vec0.data + __pyx_t_5 * __pyx_v_vec0.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_vec1.data + __pyx_t_6 * __pyx_v_vec1.strides[0]) )))));
588
+ }
589
+ </pre><pre class="cython line score-0">&#xA0;<span class="">114</span>: </pre>
590
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">115</span>: return dot</pre>
591
+ <pre class='cython code score-0 '> __pyx_r = __pyx_v_dot;
592
+ goto __pyx_L0;
593
+ </pre><pre class="cython line score-0">&#xA0;<span class="">116</span>: </pre>
594
+ <pre class="cython line score-0">&#xA0;<span class="">117</span>: </pre>
595
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">118</span>: @cython.nogil</pre>
596
+ <pre class='cython code score-0 '>static CYTHON_INLINE int __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_bound_index_min(double __pyx_v_min_val) {
597
+ int __pyx_v_min_ind;
598
+ int __pyx_r;
599
+ /* … */
600
+ /* function exit code */
601
+ __pyx_L0:;
602
+ return __pyx_r;
603
+ }
604
+ </pre><pre class="cython line score-0">&#xA0;<span class="">119</span>: @cython.cfunc # python+C or cython.cfunc for C only</pre>
605
+ <pre class="cython line score-0">&#xA0;<span class="">120</span>: @cython.boundscheck(False) # Turn off array bounds checking</pre>
606
+ <pre class="cython line score-0">&#xA0;<span class="">121</span>: @cython.wraparound(False) # Turn off negative indexing</pre>
607
+ <pre class="cython line score-0">&#xA0;<span class="">122</span>: @cython.cdivision(True) # Turn off divide by zero check</pre>
608
+ <pre class="cython line score-0">&#xA0;<span class="">123</span>: @cython.inline</pre>
609
+ <pre class="cython line score-0">&#xA0;<span class="">124</span>: @cython.exceptval(check=False)</pre>
610
+ <pre class="cython line score-0">&#xA0;<span class="">125</span>: def bound_index_min(min_val: cython.double) -&gt; cython.int:</pre>
611
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">126</span>: min_ind: cython.int = int(floor(min_val))</pre>
612
+ <pre class='cython code score-0 '> __pyx_v_min_ind = ((int)floor(__pyx_v_min_val));
613
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">127</span>: if min_ind &lt; 0:</pre>
614
+ <pre class='cython code score-0 '> __pyx_t_1 = (__pyx_v_min_ind &lt; 0);
615
+ if (__pyx_t_1) {
616
+ /* … */
617
+ }
618
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">128</span>: min_ind = 0</pre>
619
+ <pre class='cython code score-0 '> __pyx_v_min_ind = 0;
620
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">129</span>: return min_ind</pre>
621
+ <pre class='cython code score-0 '> __pyx_r = __pyx_v_min_ind;
622
+ goto __pyx_L0;
623
+ </pre><pre class="cython line score-0">&#xA0;<span class="">130</span>: </pre>
624
+ <pre class="cython line score-0">&#xA0;<span class="">131</span>: </pre>
625
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">132</span>: @cython.nogil</pre>
626
+ <pre class='cython code score-0 '>static CYTHON_INLINE int __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_bound_index_max(double __pyx_v_max_val, int __pyx_v_num_pixels) {
627
+ int __pyx_v_max_ind;
628
+ int __pyx_r;
629
+ /* … */
630
+ /* function exit code */
631
+ __pyx_L0:;
632
+ return __pyx_r;
633
+ }
634
+ </pre><pre class="cython line score-0">&#xA0;<span class="">133</span>: @cython.cfunc # python+C or cython.cfunc for C only</pre>
635
+ <pre class="cython line score-0">&#xA0;<span class="">134</span>: @cython.boundscheck(False) # Turn off array bounds checking</pre>
636
+ <pre class="cython line score-0">&#xA0;<span class="">135</span>: @cython.wraparound(False) # Turn off negative indexing</pre>
637
+ <pre class="cython line score-0">&#xA0;<span class="">136</span>: @cython.cdivision(True) # Turn off divide by zero check</pre>
638
+ <pre class="cython line score-0">&#xA0;<span class="">137</span>: @cython.inline</pre>
639
+ <pre class="cython line score-0">&#xA0;<span class="">138</span>: @cython.exceptval(check=False)</pre>
640
+ <pre class="cython line score-0">&#xA0;<span class="">139</span>: def bound_index_max(max_val: cython.double,</pre>
641
+ <pre class="cython line score-0">&#xA0;<span class="">140</span>: num_pixels: cython.int) -&gt; cython.int:</pre>
642
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">141</span>: max_ind: cython.int = int(ceil(max_val))</pre>
643
+ <pre class='cython code score-0 '> __pyx_v_max_ind = ((int)ceil(__pyx_v_max_val));
644
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">142</span>: if max_ind &gt; (num_pixels-1):</pre>
645
+ <pre class='cython code score-0 '> __pyx_t_1 = (__pyx_v_max_ind &gt; (__pyx_v_num_pixels - 1));
646
+ if (__pyx_t_1) {
647
+ /* … */
648
+ }
649
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">143</span>: max_ind = (num_pixels-1)</pre>
650
+ <pre class='cython code score-0 '> __pyx_v_max_ind = (__pyx_v_num_pixels - 1);
651
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">144</span>: return max_ind</pre>
652
+ <pre class='cython code score-0 '> __pyx_r = __pyx_v_max_ind;
653
+ goto __pyx_L0;
654
+ </pre><pre class="cython line score-0">&#xA0;<span class="">145</span>: </pre>
655
+ <pre class="cython line score-0">&#xA0;<span class="">146</span>: </pre>
656
+ <pre class="cython line score-9" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">147</span>: @cython.nogil</pre>
657
+ <pre class='cython code score-9 '>static CYTHON_INLINE __Pyx_memviewslice __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_mult_mat44_by_vec3(__Pyx_memviewslice __pyx_v_mat44, __Pyx_memviewslice __pyx_v_vec3_in, __Pyx_memviewslice __pyx_v_vec3_out) {
658
+ __Pyx_memviewslice __pyx_r = { 0, 0, { 0 }, { 0 }, { 0 } };
659
+ /* … */
660
+ /* function exit code */
661
+ __pyx_L0:;
662
+ if (unlikely(!__pyx_r.memview)) {
663
+ PyGILState_STATE __pyx_gilstate_save = <span class='pyx_c_api'>__Pyx_PyGILState_Ensure</span>();
664
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "Memoryview return value is not initialized");
665
+ <span class='pyx_c_api'>__Pyx_PyGILState_Release</span>(__pyx_gilstate_save);
666
+ }
667
+ return __pyx_r;
668
+ }
669
+ </pre><pre class="cython line score-0">&#xA0;<span class="">148</span>: @cython.cfunc # python+C or cython.cfunc for C only</pre>
670
+ <pre class="cython line score-0">&#xA0;<span class="">149</span>: @cython.boundscheck(False) # Turn off array bounds checking</pre>
671
+ <pre class="cython line score-0">&#xA0;<span class="">150</span>: @cython.wraparound(False) # Turn off negative indexing</pre>
672
+ <pre class="cython line score-0">&#xA0;<span class="">151</span>: @cython.cdivision(True) # Turn off divide by zero check</pre>
673
+ <pre class="cython line score-0">&#xA0;<span class="">152</span>: @cython.inline</pre>
674
+ <pre class="cython line score-0">&#xA0;<span class="">153</span>: @cython.exceptval(check=False)</pre>
675
+ <pre class="cython line score-0">&#xA0;<span class="">154</span>: def mult_mat44_by_vec3(mat44: cython.double[:,:], vec3_in: cython.double[:],</pre>
676
+ <pre class="cython line score-0">&#xA0;<span class="">155</span>: vec3_out: cython.double[:]) -&gt; cython.double[:]:</pre>
677
+ <pre class="cython line score-0">&#xA0;<span class="">156</span>: </pre>
678
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">157</span>: vec3_out[0] = (mat44[0,0]*vec3_in[0]</pre>
679
+ <pre class='cython code score-0 '> __pyx_t_1 = 0;
680
+ __pyx_t_2 = 0;
681
+ __pyx_t_3 = 0;
682
+ /* … */
683
+ __pyx_t_12 = 0;
684
+ *((double *) ( /* dim=0 */ (__pyx_v_vec3_out.data + __pyx_t_12 * __pyx_v_vec3_out.strides[0]) )) = (((((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mat44.data + __pyx_t_1 * __pyx_v_mat44.strides[0]) ) + __pyx_t_2 * __pyx_v_mat44.strides[1]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_vec3_in.data + __pyx_t_3 * __pyx_v_vec3_in.strides[0]) )))) + ((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mat44.data + __pyx_t_4 * __pyx_v_mat44.strides[0]) ) + __pyx_t_5 * __pyx_v_mat44.strides[1]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_vec3_in.data + __pyx_t_6 * __pyx_v_vec3_in.strides[0]) ))))) + ((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mat44.data + __pyx_t_7 * __pyx_v_mat44.strides[0]) ) + __pyx_t_8 * __pyx_v_mat44.strides[1]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_vec3_in.data + __pyx_t_9 * __pyx_v_vec3_in.strides[0]) ))))) + (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mat44.data + __pyx_t_10 * __pyx_v_mat44.strides[0]) ) + __pyx_t_11 * __pyx_v_mat44.strides[1]) ))));
685
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">158</span>: + mat44[0,1]*vec3_in[1]</pre>
686
+ <pre class='cython code score-0 '> __pyx_t_4 = 0;
687
+ __pyx_t_5 = 1;
688
+ __pyx_t_6 = 1;
689
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">159</span>: + mat44[0,2]*vec3_in[2]</pre>
690
+ <pre class='cython code score-0 '> __pyx_t_7 = 0;
691
+ __pyx_t_8 = 2;
692
+ __pyx_t_9 = 2;
693
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">160</span>: + mat44[0,3])</pre>
694
+ <pre class='cython code score-0 '> __pyx_t_10 = 0;
695
+ __pyx_t_11 = 3;
696
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">161</span>: vec3_out[1] = (mat44[1,0]*vec3_in[0]</pre>
697
+ <pre class='cython code score-0 '> __pyx_t_11 = 1;
698
+ __pyx_t_10 = 0;
699
+ __pyx_t_9 = 0;
700
+ /* … */
701
+ __pyx_t_12 = 1;
702
+ *((double *) ( /* dim=0 */ (__pyx_v_vec3_out.data + __pyx_t_12 * __pyx_v_vec3_out.strides[0]) )) = (((((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mat44.data + __pyx_t_11 * __pyx_v_mat44.strides[0]) ) + __pyx_t_10 * __pyx_v_mat44.strides[1]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_vec3_in.data + __pyx_t_9 * __pyx_v_vec3_in.strides[0]) )))) + ((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mat44.data + __pyx_t_8 * __pyx_v_mat44.strides[0]) ) + __pyx_t_7 * __pyx_v_mat44.strides[1]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_vec3_in.data + __pyx_t_6 * __pyx_v_vec3_in.strides[0]) ))))) + ((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mat44.data + __pyx_t_5 * __pyx_v_mat44.strides[0]) ) + __pyx_t_4 * __pyx_v_mat44.strides[1]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_vec3_in.data + __pyx_t_3 * __pyx_v_vec3_in.strides[0]) ))))) + (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mat44.data + __pyx_t_2 * __pyx_v_mat44.strides[0]) ) + __pyx_t_1 * __pyx_v_mat44.strides[1]) ))));
703
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">162</span>: + mat44[1,1]*vec3_in[1]</pre>
704
+ <pre class='cython code score-0 '> __pyx_t_8 = 1;
705
+ __pyx_t_7 = 1;
706
+ __pyx_t_6 = 1;
707
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">163</span>: + mat44[1,2]*vec3_in[2]</pre>
708
+ <pre class='cython code score-0 '> __pyx_t_5 = 1;
709
+ __pyx_t_4 = 2;
710
+ __pyx_t_3 = 2;
711
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">164</span>: + mat44[1,3])</pre>
712
+ <pre class='cython code score-0 '> __pyx_t_2 = 1;
713
+ __pyx_t_1 = 3;
714
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">165</span>: vec3_out[2] = (mat44[2,0]*vec3_in[0]</pre>
715
+ <pre class='cython code score-0 '> __pyx_t_1 = 2;
716
+ __pyx_t_2 = 0;
717
+ __pyx_t_3 = 0;
718
+ /* … */
719
+ __pyx_t_12 = 2;
720
+ *((double *) ( /* dim=0 */ (__pyx_v_vec3_out.data + __pyx_t_12 * __pyx_v_vec3_out.strides[0]) )) = (((((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mat44.data + __pyx_t_1 * __pyx_v_mat44.strides[0]) ) + __pyx_t_2 * __pyx_v_mat44.strides[1]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_vec3_in.data + __pyx_t_3 * __pyx_v_vec3_in.strides[0]) )))) + ((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mat44.data + __pyx_t_4 * __pyx_v_mat44.strides[0]) ) + __pyx_t_5 * __pyx_v_mat44.strides[1]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_vec3_in.data + __pyx_t_6 * __pyx_v_vec3_in.strides[0]) ))))) + ((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mat44.data + __pyx_t_7 * __pyx_v_mat44.strides[0]) ) + __pyx_t_8 * __pyx_v_mat44.strides[1]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_vec3_in.data + __pyx_t_9 * __pyx_v_vec3_in.strides[0]) ))))) + (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mat44.data + __pyx_t_10 * __pyx_v_mat44.strides[0]) ) + __pyx_t_11 * __pyx_v_mat44.strides[1]) ))));
721
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">166</span>: + mat44[2,1]*vec3_in[1]</pre>
722
+ <pre class='cython code score-0 '> __pyx_t_4 = 2;
723
+ __pyx_t_5 = 1;
724
+ __pyx_t_6 = 1;
725
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">167</span>: + mat44[2,2]*vec3_in[2]</pre>
726
+ <pre class='cython code score-0 '> __pyx_t_7 = 2;
727
+ __pyx_t_8 = 2;
728
+ __pyx_t_9 = 2;
729
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">168</span>: + mat44[2,3])</pre>
730
+ <pre class='cython code score-0 '> __pyx_t_10 = 2;
731
+ __pyx_t_11 = 3;
732
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">169</span>: vec3_out[3] = (mat44[3,0]*vec3_in[0]</pre>
733
+ <pre class='cython code score-0 '> __pyx_t_11 = 3;
734
+ __pyx_t_10 = 0;
735
+ __pyx_t_9 = 0;
736
+ /* … */
737
+ __pyx_t_12 = 3;
738
+ *((double *) ( /* dim=0 */ (__pyx_v_vec3_out.data + __pyx_t_12 * __pyx_v_vec3_out.strides[0]) )) = (((((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mat44.data + __pyx_t_11 * __pyx_v_mat44.strides[0]) ) + __pyx_t_10 * __pyx_v_mat44.strides[1]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_vec3_in.data + __pyx_t_9 * __pyx_v_vec3_in.strides[0]) )))) + ((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mat44.data + __pyx_t_8 * __pyx_v_mat44.strides[0]) ) + __pyx_t_7 * __pyx_v_mat44.strides[1]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_vec3_in.data + __pyx_t_6 * __pyx_v_vec3_in.strides[0]) ))))) + ((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mat44.data + __pyx_t_5 * __pyx_v_mat44.strides[0]) ) + __pyx_t_4 * __pyx_v_mat44.strides[1]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_vec3_in.data + __pyx_t_3 * __pyx_v_vec3_in.strides[0]) ))))) + (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_mat44.data + __pyx_t_2 * __pyx_v_mat44.strides[0]) ) + __pyx_t_1 * __pyx_v_mat44.strides[1]) ))));
739
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">170</span>: + mat44[3,1]*vec3_in[1]</pre>
740
+ <pre class='cython code score-0 '> __pyx_t_8 = 3;
741
+ __pyx_t_7 = 1;
742
+ __pyx_t_6 = 1;
743
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">171</span>: + mat44[3,2]*vec3_in[2]</pre>
744
+ <pre class='cython code score-0 '> __pyx_t_5 = 3;
745
+ __pyx_t_4 = 2;
746
+ __pyx_t_3 = 2;
747
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">172</span>: + mat44[3,3])</pre>
748
+ <pre class='cython code score-0 '> __pyx_t_2 = 3;
749
+ __pyx_t_1 = 3;
750
+ </pre><pre class="cython line score-0">&#xA0;<span class="">173</span>: </pre>
751
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">174</span>: return vec3_out</pre>
752
+ <pre class='cython code score-0 '> __PYX_INC_MEMVIEW(&amp;__pyx_v_vec3_out, 0);
753
+ __pyx_r = __pyx_v_vec3_out;
754
+ goto __pyx_L0;
755
+ </pre><pre class="cython line score-0">&#xA0;<span class="">175</span>: </pre>
756
+ <pre class="cython line score-0">&#xA0;<span class="">176</span>: </pre>
757
+ <pre class="cython line score-15" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">177</span>: @cython.nogil</pre>
758
+ <pre class='cython code score-15 '>static __Pyx_memviewslice __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_world_to_raster_coords(__Pyx_memviewslice __pyx_v_coords_world, __Pyx_memviewslice __pyx_v_world_to_cam_mat, double __pyx_v_image_dist, __Pyx_memviewslice __pyx_v_image_dims, __Pyx_memviewslice __pyx_v_num_pixels, __Pyx_memviewslice __pyx_v_coords_raster) {
759
+ size_t __pyx_v_xx;
760
+ size_t __pyx_v_yy;
761
+ size_t __pyx_v_zz;
762
+ size_t __pyx_v_ww;
763
+ __Pyx_memviewslice __pyx_r = { 0, 0, { 0 }, { 0 }, { 0 } };
764
+ __PYX_INC_MEMVIEW(&amp;__pyx_v_coords_raster, 0);
765
+ /* … */
766
+ /* function exit code */
767
+ __pyx_L1_error:;
768
+ __pyx_gilstate_save = <span class='pyx_c_api'>__Pyx_PyGILState_Ensure</span>();
769
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_1, 1);
770
+ __pyx_r.data = NULL;
771
+ __pyx_r.memview = NULL;
772
+ <span class='pyx_c_api'>__Pyx_AddTraceback</span>("pyvale.sensorsim.cython.rastercyth.world_to_raster_coords", __pyx_clineno, __pyx_lineno, __pyx_filename);
773
+ goto __pyx_L2;
774
+ __pyx_L0:;
775
+ if (unlikely(!__pyx_r.memview)) {
776
+ PyGILState_STATE __pyx_gilstate_save = <span class='pyx_c_api'>__Pyx_PyGILState_Ensure</span>();
777
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "Memoryview return value is not initialized");
778
+ <span class='pyx_c_api'>__Pyx_PyGILState_Release</span>(__pyx_gilstate_save);
779
+ }
780
+ <span class='pyx_c_api'>__Pyx_PyGILState_Release</span>(__pyx_gilstate_save);
781
+ __pyx_L2:;
782
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_coords_raster, 0);
783
+ return __pyx_r;
784
+ }
785
+ </pre><pre class="cython line score-0">&#xA0;<span class="">178</span>: @cython.cfunc # python+C or cython.cfunc for C only</pre>
786
+ <pre class="cython line score-0">&#xA0;<span class="">179</span>: @cython.boundscheck(False) # Turn off array bounds checking</pre>
787
+ <pre class="cython line score-0">&#xA0;<span class="">180</span>: @cython.wraparound(False) # Turn off negative indexing</pre>
788
+ <pre class="cython line score-0">&#xA0;<span class="">181</span>: @cython.cdivision(True) # Turn off divide by zero check</pre>
789
+ <pre class="cython line score-0">&#xA0;<span class="">182</span>: @cython.exceptval(check=False)</pre>
790
+ <pre class="cython line score-0">&#xA0;<span class="">183</span>: def world_to_raster_coords(coords_world: cython.double[:],</pre>
791
+ <pre class="cython line score-0">&#xA0;<span class="">184</span>: world_to_cam_mat: cython.double[:,:],</pre>
792
+ <pre class="cython line score-0">&#xA0;<span class="">185</span>: image_dist: cython.double,</pre>
793
+ <pre class="cython line score-0">&#xA0;<span class="">186</span>: image_dims: cython.double[:],</pre>
794
+ <pre class="cython line score-0">&#xA0;<span class="">187</span>: num_pixels: cython.int[:],</pre>
795
+ <pre class="cython line score-0">&#xA0;<span class="">188</span>: coords_raster: cython.double[:]</pre>
796
+ <pre class="cython line score-0">&#xA0;<span class="">189</span>: ) -&gt; cython.double[:]:</pre>
797
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">190</span>: xx: cython.size_t = 0</pre>
798
+ <pre class='cython code score-0 '> __pyx_v_xx = 0;
799
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">191</span>: yy: cython.size_t = 1</pre>
800
+ <pre class='cython code score-0 '> __pyx_v_yy = 1;
801
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">192</span>: zz: cython.size_t = 2</pre>
802
+ <pre class='cython code score-0 '> __pyx_v_zz = 2;
803
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">193</span>: ww: cython.size_t = 3</pre>
804
+ <pre class='cython code score-0 '> __pyx_v_ww = 3;
805
+ </pre><pre class="cython line score-0">&#xA0;<span class="">194</span>: </pre>
806
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">195</span>: coords_raster = mult_mat44_by_vec3(world_to_cam_mat,</pre>
807
+ <pre class='cython code score-0 '> __pyx_t_1 = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_mult_mat44_by_vec3(__pyx_v_world_to_cam_mat, __pyx_v_coords_world, __pyx_v_coords_raster);<span class='error_goto'> if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 195, __pyx_L1_error)</span>
808
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_coords_raster, 0);
809
+ __pyx_v_coords_raster = __pyx_t_1;
810
+ __pyx_t_1.memview = NULL;
811
+ __pyx_t_1.data = NULL;
812
+ </pre><pre class="cython line score-0">&#xA0;<span class="">196</span>: coords_world,</pre>
813
+ <pre class="cython line score-0">&#xA0;<span class="">197</span>: coords_raster)</pre>
814
+ <pre class="cython line score-0">&#xA0;<span class="">198</span>: </pre>
815
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">199</span>: coords_raster[xx] = coords_raster[xx] / coords_raster[ww]</pre>
816
+ <pre class='cython code score-0 '> __pyx_t_2 = __pyx_v_xx;
817
+ __pyx_t_3 = __pyx_v_ww;
818
+ __pyx_t_4 = __pyx_v_xx;
819
+ *((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_4 * __pyx_v_coords_raster.strides[0]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_2 * __pyx_v_coords_raster.strides[0]) ))) / (*((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_3 * __pyx_v_coords_raster.strides[0]) ))));
820
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">200</span>: coords_raster[yy] = coords_raster[yy] / coords_raster[ww]</pre>
821
+ <pre class='cython code score-0 '> __pyx_t_3 = __pyx_v_yy;
822
+ __pyx_t_2 = __pyx_v_ww;
823
+ __pyx_t_4 = __pyx_v_yy;
824
+ *((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_4 * __pyx_v_coords_raster.strides[0]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_3 * __pyx_v_coords_raster.strides[0]) ))) / (*((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_2 * __pyx_v_coords_raster.strides[0]) ))));
825
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">201</span>: coords_raster[zz] = coords_raster[zz] / coords_raster[ww]</pre>
826
+ <pre class='cython code score-0 '> __pyx_t_2 = __pyx_v_zz;
827
+ __pyx_t_3 = __pyx_v_ww;
828
+ __pyx_t_4 = __pyx_v_zz;
829
+ *((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_4 * __pyx_v_coords_raster.strides[0]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_2 * __pyx_v_coords_raster.strides[0]) ))) / (*((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_3 * __pyx_v_coords_raster.strides[0]) ))));
830
+ </pre><pre class="cython line score-0">&#xA0;<span class="">202</span>: </pre>
831
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">203</span>: coords_raster[xx] = (image_dist * coords_raster[xx]</pre>
832
+ <pre class='cython code score-0 '> __pyx_t_3 = __pyx_v_xx;
833
+ /* … */
834
+ __pyx_t_4 = __pyx_v_xx;
835
+ *((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_4 * __pyx_v_coords_raster.strides[0]) )) = ((__pyx_v_image_dist * (*((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_3 * __pyx_v_coords_raster.strides[0]) )))) / (-(*((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_2 * __pyx_v_coords_raster.strides[0]) )))));
836
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">204</span>: / -coords_raster[zz])</pre>
837
+ <pre class='cython code score-0 '> __pyx_t_2 = __pyx_v_zz;
838
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">205</span>: coords_raster[yy] = (image_dist * coords_raster[yy]</pre>
839
+ <pre class='cython code score-0 '> __pyx_t_2 = __pyx_v_yy;
840
+ /* … */
841
+ __pyx_t_4 = __pyx_v_yy;
842
+ *((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_4 * __pyx_v_coords_raster.strides[0]) )) = ((__pyx_v_image_dist * (*((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_2 * __pyx_v_coords_raster.strides[0]) )))) / (-(*((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_3 * __pyx_v_coords_raster.strides[0]) )))));
843
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">206</span>: / -coords_raster[zz])</pre>
844
+ <pre class='cython code score-0 '> __pyx_t_3 = __pyx_v_zz;
845
+ </pre><pre class="cython line score-0">&#xA0;<span class="">207</span>: </pre>
846
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">208</span>: coords_raster[xx] = 2*coords_raster[xx] / image_dims[xx]</pre>
847
+ <pre class='cython code score-0 '> __pyx_t_3 = __pyx_v_xx;
848
+ __pyx_t_2 = __pyx_v_xx;
849
+ __pyx_t_4 = __pyx_v_xx;
850
+ *((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_4 * __pyx_v_coords_raster.strides[0]) )) = ((2.0 * (*((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_3 * __pyx_v_coords_raster.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_image_dims.data + __pyx_t_2 * __pyx_v_image_dims.strides[0]) ))));
851
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">209</span>: coords_raster[yy] = 2*coords_raster[yy] / image_dims[yy]</pre>
852
+ <pre class='cython code score-0 '> __pyx_t_2 = __pyx_v_yy;
853
+ __pyx_t_3 = __pyx_v_yy;
854
+ __pyx_t_4 = __pyx_v_yy;
855
+ *((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_4 * __pyx_v_coords_raster.strides[0]) )) = ((2.0 * (*((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_2 * __pyx_v_coords_raster.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_image_dims.data + __pyx_t_3 * __pyx_v_image_dims.strides[0]) ))));
856
+ </pre><pre class="cython line score-0">&#xA0;<span class="">210</span>: </pre>
857
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">211</span>: coords_raster[xx] = (coords_raster[xx] + 1)/2 * num_pixels[xx]</pre>
858
+ <pre class='cython code score-0 '> __pyx_t_3 = __pyx_v_xx;
859
+ __pyx_t_2 = __pyx_v_xx;
860
+ __pyx_t_4 = __pyx_v_xx;
861
+ *((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_4 * __pyx_v_coords_raster.strides[0]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_3 * __pyx_v_coords_raster.strides[0]) ))) + 1.0) / 2.0) * (*((int *) ( /* dim=0 */ (__pyx_v_num_pixels.data + __pyx_t_2 * __pyx_v_num_pixels.strides[0]) ))));
862
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">212</span>: coords_raster[yy] = (1-coords_raster[yy])/2 * num_pixels[yy]</pre>
863
+ <pre class='cython code score-0 '> __pyx_t_2 = __pyx_v_yy;
864
+ __pyx_t_3 = __pyx_v_yy;
865
+ __pyx_t_4 = __pyx_v_yy;
866
+ *((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_4 * __pyx_v_coords_raster.strides[0]) )) = (((1.0 - (*((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_2 * __pyx_v_coords_raster.strides[0]) )))) / 2.0) * (*((int *) ( /* dim=0 */ (__pyx_v_num_pixels.data + __pyx_t_3 * __pyx_v_num_pixels.strides[0]) ))));
867
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">213</span>: coords_raster[zz] = -coords_raster[zz]</pre>
868
+ <pre class='cython code score-0 '> __pyx_t_3 = __pyx_v_zz;
869
+ __pyx_t_2 = __pyx_v_zz;
870
+ *((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_2 * __pyx_v_coords_raster.strides[0]) )) = (-(*((double *) ( /* dim=0 */ (__pyx_v_coords_raster.data + __pyx_t_3 * __pyx_v_coords_raster.strides[0]) ))));
871
+ </pre><pre class="cython line score-0">&#xA0;<span class="">214</span>: </pre>
872
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">215</span>: return coords_raster</pre>
873
+ <pre class='cython code score-0 '> __PYX_INC_MEMVIEW(&amp;__pyx_v_coords_raster, 0);
874
+ __pyx_r = __pyx_v_coords_raster;
875
+ goto __pyx_L0;
876
+ </pre><pre class="cython line score-0">&#xA0;<span class="">216</span>: </pre>
877
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">217</span>: @cython.cfunc</pre>
878
+ <pre class='cython code score-0 '>static CYTHON_INLINE double __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_edge_function(__Pyx_memviewslice __pyx_v_vert_0, __Pyx_memviewslice __pyx_v_vert_1, __Pyx_memviewslice __pyx_v_vert_2) {
879
+ double __pyx_v_edge_fun;
880
+ double __pyx_r;
881
+ /* … */
882
+ /* function exit code */
883
+ __pyx_L0:;
884
+ return __pyx_r;
885
+ }
886
+ </pre><pre class="cython line score-0">&#xA0;<span class="">218</span>: @cython.nogil</pre>
887
+ <pre class="cython line score-0">&#xA0;<span class="">219</span>: @cython.boundscheck(False)</pre>
888
+ <pre class="cython line score-0">&#xA0;<span class="">220</span>: @cython.wraparound(False)</pre>
889
+ <pre class="cython line score-0">&#xA0;<span class="">221</span>: @cython.inline</pre>
890
+ <pre class="cython line score-0">&#xA0;<span class="">222</span>: @cython.exceptval(check=False)</pre>
891
+ <pre class="cython line score-0">&#xA0;<span class="">223</span>: def edge_function(vert_0: cython.double[:],</pre>
892
+ <pre class="cython line score-0">&#xA0;<span class="">224</span>: vert_1: cython.double[:],</pre>
893
+ <pre class="cython line score-0">&#xA0;<span class="">225</span>: vert_2: cython.double[:]) -&gt; cython.double:</pre>
894
+ <pre class="cython line score-0">&#xA0;<span class="">226</span>: edge_fun: cython.double = (</pre>
895
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">227</span>: (vert_2[0] - vert_0[0]) * (vert_1[1] - vert_0[1])</pre>
896
+ <pre class='cython code score-0 '> __pyx_t_1 = 0;
897
+ __pyx_t_2 = 0;
898
+ __pyx_t_3 = 1;
899
+ __pyx_t_4 = 1;
900
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">228</span>: - (vert_2[1] - vert_0[1]) * (vert_1[0] - vert_0[0]))</pre>
901
+ <pre class='cython code score-0 '> __pyx_t_5 = 1;
902
+ __pyx_t_6 = 1;
903
+ __pyx_t_7 = 0;
904
+ __pyx_t_8 = 0;
905
+ __pyx_v_edge_fun = ((((*((double *) ( /* dim=0 */ (__pyx_v_vert_2.data + __pyx_t_1 * __pyx_v_vert_2.strides[0]) ))) - (*((double *) ( /* dim=0 */ (__pyx_v_vert_0.data + __pyx_t_2 * __pyx_v_vert_0.strides[0]) )))) * ((*((double *) ( /* dim=0 */ (__pyx_v_vert_1.data + __pyx_t_3 * __pyx_v_vert_1.strides[0]) ))) - (*((double *) ( /* dim=0 */ (__pyx_v_vert_0.data + __pyx_t_4 * __pyx_v_vert_0.strides[0]) ))))) - (((*((double *) ( /* dim=0 */ (__pyx_v_vert_2.data + __pyx_t_5 * __pyx_v_vert_2.strides[0]) ))) - (*((double *) ( /* dim=0 */ (__pyx_v_vert_0.data + __pyx_t_6 * __pyx_v_vert_0.strides[0]) )))) * ((*((double *) ( /* dim=0 */ (__pyx_v_vert_1.data + __pyx_t_7 * __pyx_v_vert_1.strides[0]) ))) - (*((double *) ( /* dim=0 */ (__pyx_v_vert_0.data + __pyx_t_8 * __pyx_v_vert_0.strides[0]) ))))));
906
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">229</span>: return edge_fun</pre>
907
+ <pre class='cython code score-0 '> __pyx_r = __pyx_v_edge_fun;
908
+ goto __pyx_L0;
909
+ </pre><pre class="cython line score-0">&#xA0;<span class="">230</span>: </pre>
910
+ <pre class="cython line score-0">&#xA0;<span class="">231</span>: </pre>
911
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">232</span>: @cython.cfunc</pre>
912
+ <pre class='cython code score-0 '>static CYTHON_INLINE double __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_edge_function_pt(__Pyx_memviewslice __pyx_v_vert_0, __Pyx_memviewslice __pyx_v_vert_1, double __pyx_v_vert_2_x, double __pyx_v_vert_2_y) {
913
+ double __pyx_v_edge_fun;
914
+ double __pyx_r;
915
+ /* … */
916
+ /* function exit code */
917
+ __pyx_L0:;
918
+ return __pyx_r;
919
+ }
920
+ </pre><pre class="cython line score-0">&#xA0;<span class="">233</span>: @cython.nogil</pre>
921
+ <pre class="cython line score-0">&#xA0;<span class="">234</span>: @cython.boundscheck(False)</pre>
922
+ <pre class="cython line score-0">&#xA0;<span class="">235</span>: @cython.wraparound(False)</pre>
923
+ <pre class="cython line score-0">&#xA0;<span class="">236</span>: @cython.inline</pre>
924
+ <pre class="cython line score-0">&#xA0;<span class="">237</span>: @cython.exceptval(check=False)</pre>
925
+ <pre class="cython line score-0">&#xA0;<span class="">238</span>: def edge_function_pt(vert_0: cython.double[:],</pre>
926
+ <pre class="cython line score-0">&#xA0;<span class="">239</span>: vert_1: cython.double[:],</pre>
927
+ <pre class="cython line score-0">&#xA0;<span class="">240</span>: vert_2_x: cython.double,</pre>
928
+ <pre class="cython line score-0">&#xA0;<span class="">241</span>: vert_2_y: cython.double) -&gt; cython.double:</pre>
929
+ <pre class="cython line score-0">&#xA0;<span class="">242</span>: edge_fun: cython.double = (</pre>
930
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">243</span>: (vert_2_x - vert_0[0]) * (vert_1[1] - vert_0[1])</pre>
931
+ <pre class='cython code score-0 '> __pyx_t_1 = 0;
932
+ __pyx_t_2 = 1;
933
+ __pyx_t_3 = 1;
934
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">244</span>: - (vert_2_y - vert_0[1]) * (vert_1[0] - vert_0[0]))</pre>
935
+ <pre class='cython code score-0 '> __pyx_t_4 = 1;
936
+ __pyx_t_5 = 0;
937
+ __pyx_t_6 = 0;
938
+ __pyx_v_edge_fun = (((__pyx_v_vert_2_x - (*((double *) ( /* dim=0 */ (__pyx_v_vert_0.data + __pyx_t_1 * __pyx_v_vert_0.strides[0]) )))) * ((*((double *) ( /* dim=0 */ (__pyx_v_vert_1.data + __pyx_t_2 * __pyx_v_vert_1.strides[0]) ))) - (*((double *) ( /* dim=0 */ (__pyx_v_vert_0.data + __pyx_t_3 * __pyx_v_vert_0.strides[0]) ))))) - ((__pyx_v_vert_2_y - (*((double *) ( /* dim=0 */ (__pyx_v_vert_0.data + __pyx_t_4 * __pyx_v_vert_0.strides[0]) )))) * ((*((double *) ( /* dim=0 */ (__pyx_v_vert_1.data + __pyx_t_5 * __pyx_v_vert_1.strides[0]) ))) - (*((double *) ( /* dim=0 */ (__pyx_v_vert_0.data + __pyx_t_6 * __pyx_v_vert_0.strides[0]) ))))));
939
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">245</span>: return edge_fun</pre>
940
+ <pre class='cython code score-0 '> __pyx_r = __pyx_v_edge_fun;
941
+ goto __pyx_L0;
942
+ </pre><pre class="cython line score-0">&#xA0;<span class="">246</span>: </pre>
943
+ <pre class="cython line score-0">&#xA0;<span class="">247</span>: </pre>
944
+ <pre class="cython line score-93" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">248</span>: @cython.ccall</pre>
945
+ <pre class='cython code score-93 '>static PyObject *__pyx_pw_6pyvale_9sensorsim_6cython_10rastercyth_1average_image(PyObject *__pyx_self,
946
+ #if CYTHON_METH_FASTCALL
947
+ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
948
+ #else
949
+ PyObject *__pyx_args, PyObject *__pyx_kwds
950
+ #endif
951
+ ); /*proto*/
952
+ static __Pyx_memviewslice __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_average_image(__Pyx_memviewslice __pyx_v_image_subpx, int __pyx_v_sub_samp, CYTHON_UNUSED int __pyx_skip_dispatch) {
953
+ size_t __pyx_v_px_num_y;
954
+ size_t __pyx_v_px_num_x;
955
+ PyObject *__pyx_v_image_buff_avg_np = NULL;
956
+ __Pyx_memviewslice __pyx_v_image_buff_avg = { 0, 0, { 0 }, { 0 }, { 0 } };
957
+ size_t __pyx_v_num_subpx_y;
958
+ size_t __pyx_v_num_subpx_x;
959
+ double __pyx_v_subpx_per_px;
960
+ size_t __pyx_v_ss_size;
961
+ size_t __pyx_v_num_px_y;
962
+ size_t __pyx_v_num_px_x;
963
+ double __pyx_v_px_sum;
964
+ size_t __pyx_v_ix;
965
+ size_t __pyx_v_iy;
966
+ size_t __pyx_v_sx;
967
+ size_t __pyx_v_sy;
968
+ __Pyx_memviewslice __pyx_r = { 0, 0, { 0 }, { 0 }, { 0 } };
969
+ /* … */
970
+ /* function exit code */
971
+ __pyx_L1_error:;
972
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2);
973
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3);
974
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_4);
975
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5);
976
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_7, 1);
977
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_8);
978
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_9);
979
+ __pyx_r.data = NULL;
980
+ __pyx_r.memview = NULL;
981
+ <span class='pyx_c_api'>__Pyx_AddTraceback</span>("pyvale.sensorsim.cython.rastercyth.average_image", __pyx_clineno, __pyx_lineno, __pyx_filename);
982
+ goto __pyx_L2;
983
+ __pyx_L0:;
984
+ if (unlikely(!__pyx_r.memview)) {
985
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "Memoryview return value is not initialized");
986
+ }
987
+ __pyx_L2:;
988
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_image_buff_avg_np);
989
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_image_buff_avg, 1);
990
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
991
+ return __pyx_r;
992
+ }
993
+
994
+ /* Python wrapper */
995
+ static PyObject *__pyx_pw_6pyvale_9sensorsim_6cython_10rastercyth_1average_image(PyObject *__pyx_self,
996
+ #if CYTHON_METH_FASTCALL
997
+ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
998
+ #else
999
+ PyObject *__pyx_args, PyObject *__pyx_kwds
1000
+ #endif
1001
+ ); /*proto*/
1002
+ static PyMethodDef __pyx_mdef_6pyvale_9sensorsim_6cython_10rastercyth_1average_image = {"average_image", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6pyvale_9sensorsim_6cython_10rastercyth_1average_image, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
1003
+ static PyObject *__pyx_pw_6pyvale_9sensorsim_6cython_10rastercyth_1average_image(PyObject *__pyx_self,
1004
+ #if CYTHON_METH_FASTCALL
1005
+ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
1006
+ #else
1007
+ PyObject *__pyx_args, PyObject *__pyx_kwds
1008
+ #endif
1009
+ ) {
1010
+ __Pyx_memviewslice __pyx_v_image_subpx = { 0, 0, { 0 }, { 0 }, { 0 } };
1011
+ int __pyx_v_sub_samp;
1012
+ #if !CYTHON_METH_FASTCALL
1013
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
1014
+ #endif
1015
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
1016
+ PyObject *__pyx_r = 0;
1017
+ <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
1018
+ <span class='refnanny'>__Pyx_RefNannySetupContext</span>("average_image (wrapper)", 0);
1019
+ #if !CYTHON_METH_FASTCALL
1020
+ #if CYTHON_ASSUME_SAFE_SIZE
1021
+ __pyx_nargs = <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args);
1022
+ #else
1023
+ __pyx_nargs = <span class='py_c_api'>PyTuple_Size</span>(__pyx_args); if (unlikely(__pyx_nargs &lt; 0)) return NULL;
1024
+ #endif
1025
+ #endif
1026
+ __pyx_kwvalues = <span class='pyx_c_api'>__Pyx_KwValues_FASTCALL</span>(__pyx_args, __pyx_nargs);
1027
+ {
1028
+ PyObject ** const __pyx_pyargnames[] = {&amp;__pyx_mstate_global-&gt;__pyx_n_u_image_subpx,&amp;__pyx_mstate_global-&gt;__pyx_n_u_sub_samp,0};
1029
+ PyObject* values[2] = {0,0};
1030
+ const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? <span class='pyx_c_api'>__Pyx_NumKwargs_FASTCALL</span>(__pyx_kwds) : 0;
1031
+ if (unlikely(__pyx_kwds_len) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 248, __pyx_L3_error)</span>
1032
+ if (__pyx_kwds_len &gt; 0) {
1033
+ switch (__pyx_nargs) {
1034
+ case 2:
1035
+ values[1] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 1);
1036
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[1])) <span class='error_goto'>__PYX_ERR(0, 248, __pyx_L3_error)</span>
1037
+ CYTHON_FALLTHROUGH;
1038
+ case 1:
1039
+ values[0] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 0);
1040
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[0])) <span class='error_goto'>__PYX_ERR(0, 248, __pyx_L3_error)</span>
1041
+ CYTHON_FALLTHROUGH;
1042
+ case 0: break;
1043
+ default: goto __pyx_L5_argtuple_error;
1044
+ }
1045
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
1046
+ if (<span class='pyx_c_api'>__Pyx_ParseKeywords</span>(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "average_image", 0) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 248, __pyx_L3_error)</span>
1047
+ for (Py_ssize_t i = __pyx_nargs; i &lt; 2; i++) {
1048
+ if (unlikely(!values[i])) { <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("average_image", 1, 2, 2, i); <span class='error_goto'>__PYX_ERR(0, 248, __pyx_L3_error)</span> }
1049
+ }
1050
+ } else if (unlikely(__pyx_nargs != 2)) {
1051
+ goto __pyx_L5_argtuple_error;
1052
+ } else {
1053
+ values[0] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 0);
1054
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[0])) <span class='error_goto'>__PYX_ERR(0, 248, __pyx_L3_error)</span>
1055
+ values[1] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 1);
1056
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[1])) <span class='error_goto'>__PYX_ERR(0, 248, __pyx_L3_error)</span>
1057
+ }
1058
+ __pyx_v_image_subpx = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_dsds_double</span>(values[0], PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_v_image_subpx.memview)) __PYX_ERR(0, 252, __pyx_L3_error)</span>
1059
+ __pyx_v_sub_samp = <span class='pyx_c_api'>__Pyx_PyLong_As_int</span>(values[1]); if (unlikely((__pyx_v_sub_samp == (int)-1) &amp;&amp; <span class='py_c_api'>PyErr_Occurred</span>())) <span class='error_goto'>__PYX_ERR(0, 253, __pyx_L3_error)</span>
1060
+ }
1061
+ goto __pyx_L6_skip;
1062
+ __pyx_L5_argtuple_error:;
1063
+ <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("average_image", 1, 2, 2, __pyx_nargs); <span class='error_goto'>__PYX_ERR(0, 248, __pyx_L3_error)</span>
1064
+ __pyx_L6_skip:;
1065
+ goto __pyx_L4_argument_unpacking_done;
1066
+ __pyx_L3_error:;
1067
+ for (Py_ssize_t __pyx_temp=0; __pyx_temp &lt; (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
1068
+ Py_XDECREF(values[__pyx_temp]);
1069
+ }
1070
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_image_subpx, 1);
1071
+ <span class='pyx_c_api'>__Pyx_AddTraceback</span>("pyvale.sensorsim.cython.rastercyth.average_image", __pyx_clineno, __pyx_lineno, __pyx_filename);
1072
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
1073
+ return NULL;
1074
+ __pyx_L4_argument_unpacking_done:;
1075
+ if (unlikely(((PyObject *)__pyx_v_image_subpx.memview) == Py_None)) {
1076
+ <span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Argument '%.200s' must not be None", "image_subpx"); <span class='error_goto'>__PYX_ERR(0, 252, __pyx_L1_error)</span>
1077
+ }
1078
+ __pyx_r = __pyx_pf_6pyvale_9sensorsim_6cython_10rastercyth_average_image(__pyx_self, __pyx_v_image_subpx, __pyx_v_sub_samp);
1079
+ int __pyx_lineno = 0;
1080
+ const char *__pyx_filename = NULL;
1081
+ int __pyx_clineno = 0;
1082
+
1083
+ /* function exit code */
1084
+ goto __pyx_L0;
1085
+ __pyx_L1_error:;
1086
+ __pyx_r = NULL;
1087
+ for (Py_ssize_t __pyx_temp=0; __pyx_temp &lt; (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
1088
+ Py_XDECREF(values[__pyx_temp]);
1089
+ }
1090
+ goto __pyx_L7_cleaned_up;
1091
+ __pyx_L0:;
1092
+ for (Py_ssize_t __pyx_temp=0; __pyx_temp &lt; (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
1093
+ Py_XDECREF(values[__pyx_temp]);
1094
+ }
1095
+ __pyx_L7_cleaned_up:;
1096
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_image_subpx, 1);
1097
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
1098
+ return __pyx_r;
1099
+ }
1100
+
1101
+ static PyObject *__pyx_pf_6pyvale_9sensorsim_6cython_10rastercyth_average_image(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_image_subpx, int __pyx_v_sub_samp) {
1102
+ PyObject *__pyx_r = NULL;
1103
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
1104
+ if (unlikely(!__pyx_v_image_subpx.memview)) { <span class='pyx_c_api'>__Pyx_RaiseUnboundLocalError</span>("image_subpx"); <span class='error_goto'>__PYX_ERR(0, 248, __pyx_L1_error)</span> }
1105
+ if (unlikely(((PyObject *) __pyx_v_image_subpx.memview) == Py_None)) {
1106
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
1107
+ <span class='error_goto'>__PYX_ERR(0, 248, __pyx_L1_error)</span>
1108
+ }
1109
+ __pyx_t_1 = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_average_image(__pyx_v_image_subpx, __pyx_v_sub_samp, 1);<span class='error_goto'> if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 248, __pyx_L1_error)</span>
1110
+ __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_t_1, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);;<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 248, __pyx_L1_error)</span>
1111
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
1112
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_1, 1);
1113
+ __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
1114
+ __pyx_r = __pyx_t_2;
1115
+ __pyx_t_2 = 0;
1116
+ goto __pyx_L0;
1117
+
1118
+ /* function exit code */
1119
+ __pyx_L1_error:;
1120
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_1, 1);
1121
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2);
1122
+ <span class='pyx_c_api'>__Pyx_AddTraceback</span>("pyvale.sensorsim.cython.rastercyth.average_image", __pyx_clineno, __pyx_lineno, __pyx_filename);
1123
+ __pyx_r = NULL;
1124
+ __pyx_L0:;
1125
+ <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
1126
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
1127
+ return __pyx_r;
1128
+ }
1129
+ /* … */
1130
+ __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyDict_NewPresized</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 248, __pyx_L1_error)</span>
1131
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
1132
+ if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_t_4, __pyx_mstate_global-&gt;__pyx_n_u_image_subpx, __pyx_mstate_global-&gt;__pyx_kp_u_cython_double) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 248, __pyx_L1_error)</span>
1133
+ if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_t_4, __pyx_mstate_global-&gt;__pyx_n_u_sub_samp, __pyx_mstate_global-&gt;__pyx_kp_u_cython_int) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 248, __pyx_L1_error)</span>
1134
+ __pyx_t_5 = <span class='pyx_c_api'>__Pyx_CyFunction_New</span>(&amp;__pyx_mdef_6pyvale_9sensorsim_6cython_10rastercyth_1average_image, 0, __pyx_mstate_global-&gt;__pyx_n_u_average_image, NULL, __pyx_mstate_global-&gt;__pyx_n_u_pyvale_sensorsim_cython_rastercy, __pyx_mstate_global-&gt;__pyx_d, ((PyObject *)__pyx_mstate_global-&gt;__pyx_codeobj_tab[0]));<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 248, __pyx_L1_error)</span>
1135
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
1136
+ #if CYTHON_COMPILING_IN_CPYTHON &amp;&amp; PY_VERSION_HEX &gt;= 0x030E0000
1137
+ <span class='py_c_api'>PyUnstable_Object_EnableDeferredRefcount</span>(__pyx_t_5);
1138
+ #endif
1139
+ <span class='pyx_c_api'>__Pyx_CyFunction_SetAnnotationsDict</span>(__pyx_t_5, __pyx_t_4);
1140
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
1141
+ if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_mstate_global-&gt;__pyx_d, __pyx_mstate_global-&gt;__pyx_n_u_average_image, __pyx_t_5) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 248, __pyx_L1_error)</span>
1142
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
1143
+ </pre><pre class="cython line score-0">&#xA0;<span class="">249</span>: @cython.boundscheck(False)</pre>
1144
+ <pre class="cython line score-0">&#xA0;<span class="">250</span>: @cython.wraparound(False)</pre>
1145
+ <pre class="cython line score-0">&#xA0;<span class="">251</span>: @cython.cdivision(True)</pre>
1146
+ <pre class="cython line score-0">&#xA0;<span class="">252</span>: def average_image(image_subpx: cython.double[:,:],</pre>
1147
+ <pre class="cython line score-0">&#xA0;<span class="">253</span>: sub_samp: cython.int,</pre>
1148
+ <pre class="cython line score-0">&#xA0;<span class="">254</span>: ) -&gt; cython.double[:,:]:</pre>
1149
+ <pre class="cython line score-0">&#xA0;<span class="">255</span>: </pre>
1150
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">256</span>: if sub_samp &lt;= 1:</pre>
1151
+ <pre class='cython code score-0 '> __pyx_t_1 = (__pyx_v_sub_samp &lt;= 1);
1152
+ if (__pyx_t_1) {
1153
+ /* … */
1154
+ }
1155
+ </pre><pre class="cython line score-23" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">257</span>: return np.asarray(image_subpx[:,:])</pre>
1156
+ <pre class='cython code score-23 '> __pyx_t_3 = NULL;
1157
+ <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_4, __pyx_mstate_global-&gt;__pyx_n_u_np);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 257, __pyx_L1_error)</span>
1158
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
1159
+ __pyx_t_5 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_4, __pyx_mstate_global-&gt;__pyx_n_u_asarray);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 257, __pyx_L1_error)</span>
1160
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
1161
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
1162
+ __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_image_subpx, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);;<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 257, __pyx_L1_error)</span>
1163
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
1164
+ __pyx_t_6 = 1;
1165
+ #if CYTHON_UNPACK_METHODS
1166
+ if (unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_5))) {
1167
+ __pyx_t_3 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_5);
1168
+ assert(__pyx_t_3);
1169
+ PyObject* __pyx__function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_5);
1170
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3);
1171
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx__function);
1172
+ <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_5, __pyx__function);
1173
+ __pyx_t_6 = 0;
1174
+ }
1175
+ #endif
1176
+ {
1177
+ PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
1178
+ __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_FastCall</span>((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
1179
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
1180
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
1181
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
1182
+ if (unlikely(!__pyx_t_2)) <span class='error_goto'>__PYX_ERR(0, 257, __pyx_L1_error)</span>
1183
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
1184
+ }
1185
+ __pyx_t_7 = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_dsds_double</span>(__pyx_t_2, PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 257, __pyx_L1_error)</span>
1186
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
1187
+ __pyx_r = __pyx_t_7;
1188
+ __pyx_t_7.memview = NULL;
1189
+ __pyx_t_7.data = NULL;
1190
+ goto __pyx_L0;
1191
+ </pre><pre class="cython line score-0">&#xA0;<span class="">258</span>: </pre>
1192
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">259</span>: px_num_y: cython.size_t = int(ceil(image_subpx.shape[0]/sub_samp))</pre>
1193
+ <pre class='cython code score-0 '> __pyx_v_px_num_y = ((size_t)ceil(((__pyx_v_image_subpx.shape[0]) / ((Py_ssize_t)__pyx_v_sub_samp))));
1194
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">260</span>: px_num_x: cython.size_t = int(ceil(image_subpx.shape[1]/sub_samp))</pre>
1195
+ <pre class='cython code score-0 '> __pyx_v_px_num_x = ((size_t)ceil(((__pyx_v_image_subpx.shape[1]) / ((Py_ssize_t)__pyx_v_sub_samp))));
1196
+ </pre><pre class="cython line score-0">&#xA0;<span class="">261</span>: </pre>
1197
+ <pre class="cython line score-44" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">262</span>: image_buff_avg_np = np.full((px_num_y,px_num_x),0.0,dtype=np.float64)</pre>
1198
+ <pre class='cython code score-44 '> __pyx_t_5 = NULL;
1199
+ <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_4, __pyx_mstate_global-&gt;__pyx_n_u_np);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 262, __pyx_L1_error)</span>
1200
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
1201
+ __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_4, __pyx_mstate_global-&gt;__pyx_n_u_full);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 262, __pyx_L1_error)</span>
1202
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
1203
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
1204
+ __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyLong_FromSize_t</span>(__pyx_v_px_num_y);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 262, __pyx_L1_error)</span>
1205
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
1206
+ __pyx_t_8 = <span class='pyx_c_api'>__Pyx_PyLong_FromSize_t</span>(__pyx_v_px_num_x);<span class='error_goto'> if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 262, __pyx_L1_error)</span>
1207
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_8);
1208
+ __pyx_t_9 = <span class='py_c_api'>PyTuple_New</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 262, __pyx_L1_error)</span>
1209
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_9);
1210
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_4);
1211
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_9, 0, __pyx_t_4) != (0)) <span class='error_goto'>__PYX_ERR(0, 262, __pyx_L1_error)</span>;
1212
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_8);
1213
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_9, 1, __pyx_t_8) != (0)) <span class='error_goto'>__PYX_ERR(0, 262, __pyx_L1_error)</span>;
1214
+ __pyx_t_4 = 0;
1215
+ __pyx_t_8 = 0;
1216
+ <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_8, __pyx_mstate_global-&gt;__pyx_n_u_np);<span class='error_goto'> if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 262, __pyx_L1_error)</span>
1217
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_8);
1218
+ __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_8, __pyx_mstate_global-&gt;__pyx_n_u_float64);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 262, __pyx_L1_error)</span>
1219
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
1220
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_8); __pyx_t_8 = 0;
1221
+ __pyx_t_6 = 1;
1222
+ #if CYTHON_UNPACK_METHODS
1223
+ if (unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_3))) {
1224
+ __pyx_t_5 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_3);
1225
+ assert(__pyx_t_5);
1226
+ PyObject* __pyx__function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_3);
1227
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_5);
1228
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx__function);
1229
+ <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_3, __pyx__function);
1230
+ __pyx_t_6 = 0;
1231
+ }
1232
+ #endif
1233
+ {
1234
+ PyObject *__pyx_callargs[3 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_9, __pyx_mstate_global-&gt;__pyx_float_0_0};
1235
+ __pyx_t_8 = <span class='pyx_c_api'>__Pyx_MakeVectorcallBuilderKwds</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 262, __pyx_L1_error)</span>
1236
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_8);
1237
+ if (<span class='pyx_c_api'>__Pyx_VectorcallBuilder_AddArg</span>(__pyx_mstate_global-&gt;__pyx_n_u_dtype, __pyx_t_4, __pyx_t_8, __pyx_callargs+3, 0) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 262, __pyx_L1_error)</span>
1238
+ __pyx_t_2 = <span class='pyx_c_api'>__Pyx_Object_Vectorcall_CallFromBuilder</span>((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
1239
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
1240
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_9); __pyx_t_9 = 0;
1241
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
1242
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_8); __pyx_t_8 = 0;
1243
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
1244
+ if (unlikely(!__pyx_t_2)) <span class='error_goto'>__PYX_ERR(0, 262, __pyx_L1_error)</span>
1245
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
1246
+ }
1247
+ __pyx_v_image_buff_avg_np = __pyx_t_2;
1248
+ __pyx_t_2 = 0;
1249
+ </pre><pre class="cython line score-2" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">263</span>: image_buff_avg: cython.double[:,:] = image_buff_avg_np</pre>
1250
+ <pre class='cython code score-2 '> __pyx_t_7 = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_dsds_double</span>(__pyx_v_image_buff_avg_np, PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 263, __pyx_L1_error)</span>
1251
+ __pyx_v_image_buff_avg = __pyx_t_7;
1252
+ __pyx_t_7.memview = NULL;
1253
+ __pyx_t_7.data = NULL;
1254
+ </pre><pre class="cython line score-0">&#xA0;<span class="">264</span>: </pre>
1255
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">265</span>: num_subpx_y: cython.size_t = image_subpx.shape[0]</pre>
1256
+ <pre class='cython code score-0 '> __pyx_v_num_subpx_y = (__pyx_v_image_subpx.shape[0]);
1257
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">266</span>: num_subpx_x: cython.size_t = image_subpx.shape[1]</pre>
1258
+ <pre class='cython code score-0 '> __pyx_v_num_subpx_x = (__pyx_v_image_subpx.shape[1]);
1259
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">267</span>: subpx_per_px: cython.double = float(sub_samp*sub_samp)</pre>
1260
+ <pre class='cython code score-0 '> __pyx_v_subpx_per_px = ((double)(__pyx_v_sub_samp * __pyx_v_sub_samp));
1261
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">268</span>: ss_size: cython.size_t = sub_samp</pre>
1262
+ <pre class='cython code score-0 '> __pyx_v_ss_size = __pyx_v_sub_samp;
1263
+ </pre><pre class="cython line score-0">&#xA0;<span class="">269</span>: </pre>
1264
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">270</span>: num_px_y: cython.size_t = int(num_subpx_y/sub_samp)</pre>
1265
+ <pre class='cython code score-0 '> __pyx_v_num_px_y = (__pyx_v_num_subpx_y / ((size_t)__pyx_v_sub_samp));
1266
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">271</span>: num_px_x: cython.size_t = int(num_subpx_x/sub_samp)</pre>
1267
+ <pre class='cython code score-0 '> __pyx_v_num_px_x = (__pyx_v_num_subpx_x / ((size_t)__pyx_v_sub_samp));
1268
+ </pre><pre class="cython line score-0">&#xA0;<span class="">272</span>: </pre>
1269
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">273</span>: px_sum: cython.double = 0.0</pre>
1270
+ <pre class='cython code score-0 '> __pyx_v_px_sum = 0.0;
1271
+ </pre><pre class="cython line score-0">&#xA0;<span class="">274</span>: </pre>
1272
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">275</span>: ix: cython.size_t = 0</pre>
1273
+ <pre class='cython code score-0 '> __pyx_v_ix = 0;
1274
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">276</span>: iy: cython.size_t = 0</pre>
1275
+ <pre class='cython code score-0 '> __pyx_v_iy = 0;
1276
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">277</span>: sx: cython.size_t = 0</pre>
1277
+ <pre class='cython code score-0 '> __pyx_v_sx = 0;
1278
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">278</span>: sy: cython.size_t = 0</pre>
1279
+ <pre class='cython code score-0 '> __pyx_v_sy = 0;
1280
+ </pre><pre class="cython line score-0">&#xA0;<span class="">279</span>: </pre>
1281
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">280</span>: for iy in range(num_px_y):</pre>
1282
+ <pre class='cython code score-0 '> __pyx_t_6 = __pyx_v_num_px_y;
1283
+ __pyx_t_10 = __pyx_t_6;
1284
+ for (__pyx_t_11 = 0; __pyx_t_11 &lt; __pyx_t_10; __pyx_t_11+=1) {
1285
+ __pyx_v_iy = __pyx_t_11;
1286
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">281</span>: for ix in range(num_px_x):</pre>
1287
+ <pre class='cython code score-0 '> __pyx_t_12 = __pyx_v_num_px_x;
1288
+ __pyx_t_13 = __pyx_t_12;
1289
+ for (__pyx_t_14 = 0; __pyx_t_14 &lt; __pyx_t_13; __pyx_t_14+=1) {
1290
+ __pyx_v_ix = __pyx_t_14;
1291
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">282</span>: px_sum = 0.0</pre>
1292
+ <pre class='cython code score-0 '> __pyx_v_px_sum = 0.0;
1293
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">283</span>: for sy in range(ss_size):</pre>
1294
+ <pre class='cython code score-0 '> __pyx_t_15 = __pyx_v_ss_size;
1295
+ __pyx_t_16 = __pyx_t_15;
1296
+ for (__pyx_t_17 = 0; __pyx_t_17 &lt; __pyx_t_16; __pyx_t_17+=1) {
1297
+ __pyx_v_sy = __pyx_t_17;
1298
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">284</span>: for sx in range(ss_size):</pre>
1299
+ <pre class='cython code score-0 '> __pyx_t_18 = __pyx_v_ss_size;
1300
+ __pyx_t_19 = __pyx_t_18;
1301
+ for (__pyx_t_20 = 0; __pyx_t_20 &lt; __pyx_t_19; __pyx_t_20+=1) {
1302
+ __pyx_v_sx = __pyx_t_20;
1303
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">285</span>: px_sum += image_subpx[ss_size*iy+sy,ss_size*ix+sx]</pre>
1304
+ <pre class='cython code score-0 '> __pyx_t_21 = ((__pyx_v_ss_size * __pyx_v_iy) + __pyx_v_sy);
1305
+ __pyx_t_22 = ((__pyx_v_ss_size * __pyx_v_ix) + __pyx_v_sx);
1306
+ __pyx_v_px_sum = (__pyx_v_px_sum + (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_image_subpx.data + __pyx_t_21 * __pyx_v_image_subpx.strides[0]) ) + __pyx_t_22 * __pyx_v_image_subpx.strides[1]) ))));
1307
+ }
1308
+ }
1309
+ </pre><pre class="cython line score-0">&#xA0;<span class="">286</span>: </pre>
1310
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">287</span>: image_buff_avg[iy,ix] = px_sum / subpx_per_px</pre>
1311
+ <pre class='cython code score-0 '> __pyx_t_15 = __pyx_v_iy;
1312
+ __pyx_t_16 = __pyx_v_ix;
1313
+ *((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_image_buff_avg.data + __pyx_t_15 * __pyx_v_image_buff_avg.strides[0]) ) + __pyx_t_16 * __pyx_v_image_buff_avg.strides[1]) )) = (__pyx_v_px_sum / __pyx_v_subpx_per_px);
1314
+ }
1315
+ }
1316
+ </pre><pre class="cython line score-0">&#xA0;<span class="">288</span>: </pre>
1317
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">289</span>: return image_buff_avg</pre>
1318
+ <pre class='cython code score-0 '> __PYX_INC_MEMVIEW(&amp;__pyx_v_image_buff_avg, 1);
1319
+ __pyx_r = __pyx_v_image_buff_avg;
1320
+ goto __pyx_L0;
1321
+ </pre><pre class="cython line score-0">&#xA0;<span class="">290</span>: </pre>
1322
+ <pre class="cython line score-0">&#xA0;<span class="">291</span>: </pre>
1323
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">292</span>: @cython.nogil</pre>
1324
+ <pre class='cython code score-0 '>static int __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth__average_image(__Pyx_memviewslice __pyx_v_image_buff_subpx_in, int __pyx_v_sub_samp, __Pyx_memviewslice __pyx_v_image_buff_avg_out) {
1325
+ size_t __pyx_v_num_subpx_y;
1326
+ size_t __pyx_v_num_subpx_x;
1327
+ double __pyx_v_subpx_per_px;
1328
+ size_t __pyx_v_ss_size;
1329
+ size_t __pyx_v_num_px_y;
1330
+ size_t __pyx_v_num_px_x;
1331
+ double __pyx_v_px_sum;
1332
+ size_t __pyx_v_ix;
1333
+ size_t __pyx_v_iy;
1334
+ size_t __pyx_v_sx;
1335
+ size_t __pyx_v_sy;
1336
+ int __pyx_r;
1337
+ /* … */
1338
+ /* function exit code */
1339
+ __pyx_L0:;
1340
+ return __pyx_r;
1341
+ }
1342
+ </pre><pre class="cython line score-0">&#xA0;<span class="">293</span>: @cython.cfunc</pre>
1343
+ <pre class="cython line score-0">&#xA0;<span class="">294</span>: @cython.boundscheck(False)</pre>
1344
+ <pre class="cython line score-0">&#xA0;<span class="">295</span>: @cython.wraparound(False)</pre>
1345
+ <pre class="cython line score-0">&#xA0;<span class="">296</span>: @cython.cdivision(True)</pre>
1346
+ <pre class="cython line score-0">&#xA0;<span class="">297</span>: @cython.exceptval(check=False)</pre>
1347
+ <pre class="cython line score-0">&#xA0;<span class="">298</span>: def _average_image(image_buff_subpx_in: cython.double[:,:],</pre>
1348
+ <pre class="cython line score-0">&#xA0;<span class="">299</span>: sub_samp: cython.int,</pre>
1349
+ <pre class="cython line score-0">&#xA0;<span class="">300</span>: image_buff_avg_out: cython.double[:,:]</pre>
1350
+ <pre class="cython line score-0">&#xA0;<span class="">301</span>: ) -&gt; cython.int:</pre>
1351
+ <pre class="cython line score-0">&#xA0;<span class="">302</span>: </pre>
1352
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">303</span>: num_subpx_y: cython.size_t = image_buff_subpx_in.shape[0]</pre>
1353
+ <pre class='cython code score-0 '> __pyx_v_num_subpx_y = (__pyx_v_image_buff_subpx_in.shape[0]);
1354
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">304</span>: num_subpx_x: cython.size_t = image_buff_subpx_in.shape[1]</pre>
1355
+ <pre class='cython code score-0 '> __pyx_v_num_subpx_x = (__pyx_v_image_buff_subpx_in.shape[1]);
1356
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">305</span>: subpx_per_px: cython.double = float(sub_samp*sub_samp)</pre>
1357
+ <pre class='cython code score-0 '> __pyx_v_subpx_per_px = ((double)(__pyx_v_sub_samp * __pyx_v_sub_samp));
1358
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">306</span>: ss_size: cython.size_t = sub_samp</pre>
1359
+ <pre class='cython code score-0 '> __pyx_v_ss_size = __pyx_v_sub_samp;
1360
+ </pre><pre class="cython line score-0">&#xA0;<span class="">307</span>: </pre>
1361
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">308</span>: num_px_y: cython.size_t = int(num_subpx_y/sub_samp)</pre>
1362
+ <pre class='cython code score-0 '> __pyx_v_num_px_y = (__pyx_v_num_subpx_y / ((size_t)__pyx_v_sub_samp));
1363
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">309</span>: num_px_x: cython.size_t = int(num_subpx_x/sub_samp)</pre>
1364
+ <pre class='cython code score-0 '> __pyx_v_num_px_x = (__pyx_v_num_subpx_x / ((size_t)__pyx_v_sub_samp));
1365
+ </pre><pre class="cython line score-0">&#xA0;<span class="">310</span>: </pre>
1366
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">311</span>: px_sum: cython.double = 0.0</pre>
1367
+ <pre class='cython code score-0 '> __pyx_v_px_sum = 0.0;
1368
+ </pre><pre class="cython line score-0">&#xA0;<span class="">312</span>: </pre>
1369
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">313</span>: ix: cython.size_t = 0</pre>
1370
+ <pre class='cython code score-0 '> __pyx_v_ix = 0;
1371
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">314</span>: iy: cython.size_t = 0</pre>
1372
+ <pre class='cython code score-0 '> __pyx_v_iy = 0;
1373
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">315</span>: sx: cython.size_t = 0</pre>
1374
+ <pre class='cython code score-0 '> __pyx_v_sx = 0;
1375
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">316</span>: sy: cython.size_t = 0</pre>
1376
+ <pre class='cython code score-0 '> __pyx_v_sy = 0;
1377
+ </pre><pre class="cython line score-0">&#xA0;<span class="">317</span>: </pre>
1378
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">318</span>: for iy in range(num_px_y):</pre>
1379
+ <pre class='cython code score-0 '> __pyx_t_1 = __pyx_v_num_px_y;
1380
+ __pyx_t_2 = __pyx_t_1;
1381
+ for (__pyx_t_3 = 0; __pyx_t_3 &lt; __pyx_t_2; __pyx_t_3+=1) {
1382
+ __pyx_v_iy = __pyx_t_3;
1383
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">319</span>: for ix in range(num_px_x):</pre>
1384
+ <pre class='cython code score-0 '> __pyx_t_4 = __pyx_v_num_px_x;
1385
+ __pyx_t_5 = __pyx_t_4;
1386
+ for (__pyx_t_6 = 0; __pyx_t_6 &lt; __pyx_t_5; __pyx_t_6+=1) {
1387
+ __pyx_v_ix = __pyx_t_6;
1388
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">320</span>: px_sum = 0.0</pre>
1389
+ <pre class='cython code score-0 '> __pyx_v_px_sum = 0.0;
1390
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">321</span>: for sy in range(ss_size):</pre>
1391
+ <pre class='cython code score-0 '> __pyx_t_7 = __pyx_v_ss_size;
1392
+ __pyx_t_8 = __pyx_t_7;
1393
+ for (__pyx_t_9 = 0; __pyx_t_9 &lt; __pyx_t_8; __pyx_t_9+=1) {
1394
+ __pyx_v_sy = __pyx_t_9;
1395
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">322</span>: for sx in range(ss_size):</pre>
1396
+ <pre class='cython code score-0 '> __pyx_t_10 = __pyx_v_ss_size;
1397
+ __pyx_t_11 = __pyx_t_10;
1398
+ for (__pyx_t_12 = 0; __pyx_t_12 &lt; __pyx_t_11; __pyx_t_12+=1) {
1399
+ __pyx_v_sx = __pyx_t_12;
1400
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">323</span>: px_sum += image_buff_subpx_in[ss_size*iy+sy,ss_size*ix+sx]</pre>
1401
+ <pre class='cython code score-0 '> __pyx_t_13 = ((__pyx_v_ss_size * __pyx_v_iy) + __pyx_v_sy);
1402
+ __pyx_t_14 = ((__pyx_v_ss_size * __pyx_v_ix) + __pyx_v_sx);
1403
+ __pyx_v_px_sum = (__pyx_v_px_sum + (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_image_buff_subpx_in.data + __pyx_t_13 * __pyx_v_image_buff_subpx_in.strides[0]) ) + __pyx_t_14 * __pyx_v_image_buff_subpx_in.strides[1]) ))));
1404
+ }
1405
+ }
1406
+ </pre><pre class="cython line score-0">&#xA0;<span class="">324</span>: </pre>
1407
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">325</span>: image_buff_avg_out[iy,ix] = px_sum / subpx_per_px</pre>
1408
+ <pre class='cython code score-0 '> __pyx_t_7 = __pyx_v_iy;
1409
+ __pyx_t_8 = __pyx_v_ix;
1410
+ *((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_image_buff_avg_out.data + __pyx_t_7 * __pyx_v_image_buff_avg_out.strides[0]) ) + __pyx_t_8 * __pyx_v_image_buff_avg_out.strides[1]) )) = (__pyx_v_px_sum / __pyx_v_subpx_per_px);
1411
+ }
1412
+ }
1413
+ </pre><pre class="cython line score-0">&#xA0;<span class="">326</span>: </pre>
1414
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">327</span>: return 0</pre>
1415
+ <pre class='cython code score-0 '> __pyx_r = 0;
1416
+ goto __pyx_L0;
1417
+ </pre><pre class="cython line score-0">&#xA0;<span class="">328</span>: </pre>
1418
+ <pre class="cython line score-0">&#xA0;<span class="">329</span>: </pre>
1419
+ <pre class="cython line score-0">&#xA0;<span class="">330</span>: #///////////////////////////////////////////////////////////////////////////////</pre>
1420
+ <pre class="cython line score-135" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">331</span>: @cython.ccall # python+C or cython.cfunc for C only</pre>
1421
+ <pre class='cython code score-135 '>static PyObject *__pyx_pw_6pyvale_9sensorsim_6cython_10rastercyth_3raster_static_frame(PyObject *__pyx_self,
1422
+ #if CYTHON_METH_FASTCALL
1423
+ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
1424
+ #else
1425
+ PyObject *__pyx_args, PyObject *__pyx_kwds
1426
+ #endif
1427
+ ); /*proto*/
1428
+ static PyObject *__pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_raster_static_frame(__Pyx_memviewslice __pyx_v_coords, __Pyx_memviewslice __pyx_v_connect, __Pyx_memviewslice __pyx_v_fields_to_render, PyObject *__pyx_v_cam_data, CYTHON_UNUSED int __pyx_skip_dispatch) {
1429
+ __Pyx_memviewslice __pyx_v_world_to_cam_mat = { 0, 0, { 0 }, { 0 }, { 0 } };
1430
+ __Pyx_memviewslice __pyx_v_pixels_num = { 0, 0, { 0 }, { 0 }, { 0 } };
1431
+ __Pyx_memviewslice __pyx_v_image_dims = { 0, 0, { 0 }, { 0 }, { 0 } };
1432
+ double __pyx_v_image_dist;
1433
+ int __pyx_v_sub_samp;
1434
+ size_t __pyx_v_nodes_per_elem;
1435
+ size_t __pyx_v_fields_num;
1436
+ int __pyx_v_sub_pix_x;
1437
+ int __pyx_v_sub_pix_y;
1438
+ PyObject *__pyx_v_image_buff_avg_np = NULL;
1439
+ __Pyx_memviewslice __pyx_v_image_buff_avg = { 0, 0, { 0 }, { 0 }, { 0 } };
1440
+ PyObject *__pyx_v_depth_buff_avg_np = NULL;
1441
+ __Pyx_memviewslice __pyx_v_depth_buff_avg = { 0, 0, { 0 }, { 0 }, { 0 } };
1442
+ PyObject *__pyx_v_depth_buffer_np = NULL;
1443
+ __Pyx_memviewslice __pyx_v_depth_buff_subpx = { 0, 0, { 0 }, { 0 }, { 0 } };
1444
+ PyObject *__pyx_v_image_buffer_np = NULL;
1445
+ __Pyx_memviewslice __pyx_v_image_buff_subpx = { 0, 0, { 0 }, { 0 }, { 0 } };
1446
+ PyObject *__pyx_v_nodes_raster_np = NULL;
1447
+ __Pyx_memviewslice __pyx_v_nodes_raster_buff = { 0, 0, { 0 }, { 0 }, { 0 } };
1448
+ PyObject *__pyx_v_field_raster_np = NULL;
1449
+ __Pyx_memviewslice __pyx_v_field_raster_buff = { 0, 0, { 0 }, { 0 }, { 0 } };
1450
+ PyObject *__pyx_v_weights_np = NULL;
1451
+ __Pyx_memviewslice __pyx_v_weights_buff = { 0, 0, { 0 }, { 0 }, { 0 } };
1452
+ PyObject *__pyx_v_px_coord_np = NULL;
1453
+ __Pyx_memviewslice __pyx_v_px_coord_buff = { 0, 0, { 0 }, { 0 }, { 0 } };
1454
+ size_t __pyx_v_elems_in_image;
1455
+ PyObject *__pyx_r = NULL;
1456
+ /* … */
1457
+ /* function exit code */
1458
+ __pyx_L1_error:;
1459
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
1460
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_2, 1);
1461
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_3, 1);
1462
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_4, 1);
1463
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_8);
1464
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_9);
1465
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_10);
1466
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_11);
1467
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_12);
1468
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_13);
1469
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_15, 1);
1470
+ <span class='pyx_c_api'>__Pyx_AddTraceback</span>("pyvale.sensorsim.cython.rastercyth.raster_static_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
1471
+ __pyx_r = 0;
1472
+ __pyx_L0:;
1473
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_world_to_cam_mat, 1);
1474
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_pixels_num, 1);
1475
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_image_dims, 1);
1476
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_image_buff_avg_np);
1477
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_image_buff_avg, 1);
1478
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_depth_buff_avg_np);
1479
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_depth_buff_avg, 1);
1480
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_depth_buffer_np);
1481
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_depth_buff_subpx, 1);
1482
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_image_buffer_np);
1483
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_image_buff_subpx, 1);
1484
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_nodes_raster_np);
1485
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_nodes_raster_buff, 1);
1486
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_field_raster_np);
1487
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_field_raster_buff, 1);
1488
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_weights_np);
1489
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_weights_buff, 1);
1490
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_px_coord_np);
1491
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_px_coord_buff, 1);
1492
+ <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
1493
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
1494
+ return __pyx_r;
1495
+ }
1496
+
1497
+ /* Python wrapper */
1498
+ static PyObject *__pyx_pw_6pyvale_9sensorsim_6cython_10rastercyth_3raster_static_frame(PyObject *__pyx_self,
1499
+ #if CYTHON_METH_FASTCALL
1500
+ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
1501
+ #else
1502
+ PyObject *__pyx_args, PyObject *__pyx_kwds
1503
+ #endif
1504
+ ); /*proto*/
1505
+ static PyMethodDef __pyx_mdef_6pyvale_9sensorsim_6cython_10rastercyth_3raster_static_frame = {"raster_static_frame", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6pyvale_9sensorsim_6cython_10rastercyth_3raster_static_frame, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
1506
+ static PyObject *__pyx_pw_6pyvale_9sensorsim_6cython_10rastercyth_3raster_static_frame(PyObject *__pyx_self,
1507
+ #if CYTHON_METH_FASTCALL
1508
+ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
1509
+ #else
1510
+ PyObject *__pyx_args, PyObject *__pyx_kwds
1511
+ #endif
1512
+ ) {
1513
+ __Pyx_memviewslice __pyx_v_coords = { 0, 0, { 0 }, { 0 }, { 0 } };
1514
+ __Pyx_memviewslice __pyx_v_connect = { 0, 0, { 0 }, { 0 }, { 0 } };
1515
+ __Pyx_memviewslice __pyx_v_fields_to_render = { 0, 0, { 0 }, { 0 }, { 0 } };
1516
+ PyObject *__pyx_v_cam_data = 0;
1517
+ #if !CYTHON_METH_FASTCALL
1518
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
1519
+ #endif
1520
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
1521
+ PyObject *__pyx_r = 0;
1522
+ <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
1523
+ <span class='refnanny'>__Pyx_RefNannySetupContext</span>("raster_static_frame (wrapper)", 0);
1524
+ #if !CYTHON_METH_FASTCALL
1525
+ #if CYTHON_ASSUME_SAFE_SIZE
1526
+ __pyx_nargs = <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args);
1527
+ #else
1528
+ __pyx_nargs = <span class='py_c_api'>PyTuple_Size</span>(__pyx_args); if (unlikely(__pyx_nargs &lt; 0)) return NULL;
1529
+ #endif
1530
+ #endif
1531
+ __pyx_kwvalues = <span class='pyx_c_api'>__Pyx_KwValues_FASTCALL</span>(__pyx_args, __pyx_nargs);
1532
+ {
1533
+ PyObject ** const __pyx_pyargnames[] = {&amp;__pyx_mstate_global-&gt;__pyx_n_u_coords,&amp;__pyx_mstate_global-&gt;__pyx_n_u_connect,&amp;__pyx_mstate_global-&gt;__pyx_n_u_fields_to_render,&amp;__pyx_mstate_global-&gt;__pyx_n_u_cam_data,0};
1534
+ PyObject* values[4] = {0,0,0,0};
1535
+ const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? <span class='pyx_c_api'>__Pyx_NumKwargs_FASTCALL</span>(__pyx_kwds) : 0;
1536
+ if (unlikely(__pyx_kwds_len) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L3_error)</span>
1537
+ if (__pyx_kwds_len &gt; 0) {
1538
+ switch (__pyx_nargs) {
1539
+ case 4:
1540
+ values[3] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 3);
1541
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[3])) <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L3_error)</span>
1542
+ CYTHON_FALLTHROUGH;
1543
+ case 3:
1544
+ values[2] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 2);
1545
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[2])) <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L3_error)</span>
1546
+ CYTHON_FALLTHROUGH;
1547
+ case 2:
1548
+ values[1] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 1);
1549
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[1])) <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L3_error)</span>
1550
+ CYTHON_FALLTHROUGH;
1551
+ case 1:
1552
+ values[0] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 0);
1553
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[0])) <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L3_error)</span>
1554
+ CYTHON_FALLTHROUGH;
1555
+ case 0: break;
1556
+ default: goto __pyx_L5_argtuple_error;
1557
+ }
1558
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
1559
+ if (<span class='pyx_c_api'>__Pyx_ParseKeywords</span>(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "raster_static_frame", 0) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L3_error)</span>
1560
+ for (Py_ssize_t i = __pyx_nargs; i &lt; 4; i++) {
1561
+ if (unlikely(!values[i])) { <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("raster_static_frame", 1, 4, 4, i); <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L3_error)</span> }
1562
+ }
1563
+ } else if (unlikely(__pyx_nargs != 4)) {
1564
+ goto __pyx_L5_argtuple_error;
1565
+ } else {
1566
+ values[0] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 0);
1567
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[0])) <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L3_error)</span>
1568
+ values[1] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 1);
1569
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[1])) <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L3_error)</span>
1570
+ values[2] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 2);
1571
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[2])) <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L3_error)</span>
1572
+ values[3] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 3);
1573
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[3])) <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L3_error)</span>
1574
+ }
1575
+ __pyx_v_coords = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_dsds_double</span>(values[0], PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_v_coords.memview)) __PYX_ERR(0, 335, __pyx_L3_error)</span>
1576
+ __pyx_v_connect = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_dsds_size_t</span>(values[1], PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_v_connect.memview)) __PYX_ERR(0, 336, __pyx_L3_error)</span>
1577
+ __pyx_v_fields_to_render = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_dsds_double</span>(values[2], PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_v_fields_to_render.memview)) __PYX_ERR(0, 337, __pyx_L3_error)</span>
1578
+ __pyx_v_cam_data = values[3];
1579
+ }
1580
+ goto __pyx_L6_skip;
1581
+ __pyx_L5_argtuple_error:;
1582
+ <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("raster_static_frame", 1, 4, 4, __pyx_nargs); <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L3_error)</span>
1583
+ __pyx_L6_skip:;
1584
+ goto __pyx_L4_argument_unpacking_done;
1585
+ __pyx_L3_error:;
1586
+ for (Py_ssize_t __pyx_temp=0; __pyx_temp &lt; (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
1587
+ Py_XDECREF(values[__pyx_temp]);
1588
+ }
1589
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_coords, 1);
1590
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_connect, 1);
1591
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_fields_to_render, 1);
1592
+ <span class='pyx_c_api'>__Pyx_AddTraceback</span>("pyvale.sensorsim.cython.rastercyth.raster_static_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
1593
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
1594
+ return NULL;
1595
+ __pyx_L4_argument_unpacking_done:;
1596
+ if (unlikely(((PyObject *)__pyx_v_coords.memview) == Py_None)) {
1597
+ <span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Argument '%.200s' must not be None", "coords"); <span class='error_goto'>__PYX_ERR(0, 335, __pyx_L1_error)</span>
1598
+ }
1599
+ if (unlikely(((PyObject *)__pyx_v_connect.memview) == Py_None)) {
1600
+ <span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Argument '%.200s' must not be None", "connect"); <span class='error_goto'>__PYX_ERR(0, 336, __pyx_L1_error)</span>
1601
+ }
1602
+ if (unlikely(((PyObject *)__pyx_v_fields_to_render.memview) == Py_None)) {
1603
+ <span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Argument '%.200s' must not be None", "fields_to_render"); <span class='error_goto'>__PYX_ERR(0, 337, __pyx_L1_error)</span>
1604
+ }
1605
+ __pyx_r = __pyx_pf_6pyvale_9sensorsim_6cython_10rastercyth_2raster_static_frame(__pyx_self, __pyx_v_coords, __pyx_v_connect, __pyx_v_fields_to_render, __pyx_v_cam_data);
1606
+ int __pyx_lineno = 0;
1607
+ const char *__pyx_filename = NULL;
1608
+ int __pyx_clineno = 0;
1609
+
1610
+ /* function exit code */
1611
+ goto __pyx_L0;
1612
+ __pyx_L1_error:;
1613
+ __pyx_r = NULL;
1614
+ for (Py_ssize_t __pyx_temp=0; __pyx_temp &lt; (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
1615
+ Py_XDECREF(values[__pyx_temp]);
1616
+ }
1617
+ goto __pyx_L7_cleaned_up;
1618
+ __pyx_L0:;
1619
+ for (Py_ssize_t __pyx_temp=0; __pyx_temp &lt; (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
1620
+ Py_XDECREF(values[__pyx_temp]);
1621
+ }
1622
+ __pyx_L7_cleaned_up:;
1623
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_coords, 1);
1624
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_connect, 1);
1625
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_fields_to_render, 1);
1626
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
1627
+ return __pyx_r;
1628
+ }
1629
+
1630
+ static PyObject *__pyx_pf_6pyvale_9sensorsim_6cython_10rastercyth_2raster_static_frame(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_coords, __Pyx_memviewslice __pyx_v_connect, __Pyx_memviewslice __pyx_v_fields_to_render, PyObject *__pyx_v_cam_data) {
1631
+ PyObject *__pyx_r = NULL;
1632
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
1633
+ if (unlikely(!__pyx_v_coords.memview)) { <span class='pyx_c_api'>__Pyx_RaiseUnboundLocalError</span>("coords"); <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L1_error)</span> }
1634
+ if (unlikely(((PyObject *) __pyx_v_coords.memview) == Py_None)) {
1635
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
1636
+ <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L1_error)</span>
1637
+ }
1638
+ if (unlikely(!__pyx_v_connect.memview)) { <span class='pyx_c_api'>__Pyx_RaiseUnboundLocalError</span>("connect"); <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L1_error)</span> }
1639
+ if (unlikely(((PyObject *) __pyx_v_connect.memview) == Py_None)) {
1640
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
1641
+ <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L1_error)</span>
1642
+ }
1643
+ if (unlikely(!__pyx_v_fields_to_render.memview)) { <span class='pyx_c_api'>__Pyx_RaiseUnboundLocalError</span>("fields_to_render"); <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L1_error)</span> }
1644
+ if (unlikely(((PyObject *) __pyx_v_fields_to_render.memview) == Py_None)) {
1645
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
1646
+ <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L1_error)</span>
1647
+ }
1648
+ __pyx_t_1 = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_raster_static_frame(__pyx_v_coords, __pyx_v_connect, __pyx_v_fields_to_render, __pyx_v_cam_data, 1);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 331, __pyx_L1_error)</span>
1649
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
1650
+ __pyx_r = __pyx_t_1;
1651
+ __pyx_t_1 = 0;
1652
+ goto __pyx_L0;
1653
+
1654
+ /* function exit code */
1655
+ __pyx_L1_error:;
1656
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
1657
+ <span class='pyx_c_api'>__Pyx_AddTraceback</span>("pyvale.sensorsim.cython.rastercyth.raster_static_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
1658
+ __pyx_r = NULL;
1659
+ __pyx_L0:;
1660
+ <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
1661
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
1662
+ return __pyx_r;
1663
+ }
1664
+ /* … */
1665
+ __pyx_t_5 = <span class='pyx_c_api'>__Pyx_PyDict_NewPresized</span>(4);<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 331, __pyx_L1_error)</span>
1666
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
1667
+ if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_t_5, __pyx_mstate_global-&gt;__pyx_n_u_coords, __pyx_mstate_global-&gt;__pyx_kp_u_cython_double) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L1_error)</span>
1668
+ if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_t_5, __pyx_mstate_global-&gt;__pyx_n_u_connect, __pyx_mstate_global-&gt;__pyx_kp_u_cython_size_t) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L1_error)</span>
1669
+ if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_t_5, __pyx_mstate_global-&gt;__pyx_n_u_fields_to_render, __pyx_mstate_global-&gt;__pyx_kp_u_cython_double) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L1_error)</span>
1670
+ if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_t_5, __pyx_mstate_global-&gt;__pyx_n_u_cam_data, __pyx_mstate_global-&gt;__pyx_n_u_CameraData) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L1_error)</span>
1671
+ __pyx_t_4 = <span class='pyx_c_api'>__Pyx_CyFunction_New</span>(&amp;__pyx_mdef_6pyvale_9sensorsim_6cython_10rastercyth_3raster_static_frame, 0, __pyx_mstate_global-&gt;__pyx_n_u_raster_static_frame, NULL, __pyx_mstate_global-&gt;__pyx_n_u_pyvale_sensorsim_cython_rastercy, __pyx_mstate_global-&gt;__pyx_d, ((PyObject *)__pyx_mstate_global-&gt;__pyx_codeobj_tab[1]));<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 331, __pyx_L1_error)</span>
1672
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
1673
+ #if CYTHON_COMPILING_IN_CPYTHON &amp;&amp; PY_VERSION_HEX &gt;= 0x030E0000
1674
+ <span class='py_c_api'>PyUnstable_Object_EnableDeferredRefcount</span>(__pyx_t_4);
1675
+ #endif
1676
+ <span class='pyx_c_api'>__Pyx_CyFunction_SetAnnotationsDict</span>(__pyx_t_4, __pyx_t_5);
1677
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
1678
+ if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_mstate_global-&gt;__pyx_d, __pyx_mstate_global-&gt;__pyx_n_u_raster_static_frame, __pyx_t_4) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 331, __pyx_L1_error)</span>
1679
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
1680
+ </pre><pre class="cython line score-0">&#xA0;<span class="">332</span>: @cython.boundscheck(False) # Turn off array bounds checking</pre>
1681
+ <pre class="cython line score-0">&#xA0;<span class="">333</span>: @cython.wraparound(False) # Turn off negative indexing</pre>
1682
+ <pre class="cython line score-0">&#xA0;<span class="">334</span>: @cython.cdivision(True) # Turn off divide by zero check</pre>
1683
+ <pre class="cython line score-0">&#xA0;<span class="">335</span>: def raster_static_frame(coords: cython.double[:,:],</pre>
1684
+ <pre class="cython line score-0">&#xA0;<span class="">336</span>: connect: cython.size_t[:,:],</pre>
1685
+ <pre class="cython line score-0">&#xA0;<span class="">337</span>: fields_to_render: cython.double[:,:],</pre>
1686
+ <pre class="cython line score-0">&#xA0;<span class="">338</span>: cam_data: CameraData,</pre>
1687
+ <pre class="cython line score-0">&#xA0;<span class="">339</span>: ) -&gt; tuple[np.ndarray,np.ndarray,int]:</pre>
1688
+ <pre class="cython line score-0">&#xA0;<span class="">340</span>: </pre>
1689
+ <pre class="cython line score-0">&#xA0;<span class="">341</span>: </pre>
1690
+ <pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">342</span>: world_to_cam_mat: cython.double[:,:] = cam_data.world_to_cam_mat</pre>
1691
+ <pre class='cython code score-5 '> __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_v_cam_data, __pyx_mstate_global-&gt;__pyx_n_u_world_to_cam_mat);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error)</span>
1692
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
1693
+ __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_dsds_double</span>(__pyx_t_1, PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 342, __pyx_L1_error)</span>
1694
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
1695
+ __pyx_v_world_to_cam_mat = __pyx_t_2;
1696
+ __pyx_t_2.memview = NULL;
1697
+ __pyx_t_2.data = NULL;
1698
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">343</span>: pixels_num: cython.int[:] = cam_data.pixels_num</pre>
1699
+ <pre class='cython code score-5 '> __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_v_cam_data, __pyx_mstate_global-&gt;__pyx_n_u_pixels_num);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 343, __pyx_L1_error)</span>
1700
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
1701
+ __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_ds_int</span>(__pyx_t_1, PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 343, __pyx_L1_error)</span>
1702
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
1703
+ __pyx_v_pixels_num = __pyx_t_3;
1704
+ __pyx_t_3.memview = NULL;
1705
+ __pyx_t_3.data = NULL;
1706
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">344</span>: image_dims: cython.double[:] = cam_data.image_dims</pre>
1707
+ <pre class='cython code score-5 '> __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_v_cam_data, __pyx_mstate_global-&gt;__pyx_n_u_image_dims);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error)</span>
1708
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
1709
+ __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_ds_double</span>(__pyx_t_1, PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 344, __pyx_L1_error)</span>
1710
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
1711
+ __pyx_v_image_dims = __pyx_t_4;
1712
+ __pyx_t_4.memview = NULL;
1713
+ __pyx_t_4.data = NULL;
1714
+ </pre><pre class="cython line score-10" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">345</span>: image_dist: cython.double = cam_data.image_dist</pre>
1715
+ <pre class='cython code score-10 '> __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_v_cam_data, __pyx_mstate_global-&gt;__pyx_n_u_image_dist);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 345, __pyx_L1_error)</span>
1716
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
1717
+ __pyx_t_5 = <span class='pyx_c_api'>__Pyx_PyFloat_AsDouble</span>(__pyx_t_1); if (unlikely((__pyx_t_5 == (double)-1) &amp;&amp; <span class='py_c_api'>PyErr_Occurred</span>())) <span class='error_goto'>__PYX_ERR(0, 345, __pyx_L1_error)</span>
1718
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
1719
+ __pyx_v_image_dist = __pyx_t_5;
1720
+ </pre><pre class="cython line score-10" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">346</span>: sub_samp: cython.int = cam_data.sub_samp</pre>
1721
+ <pre class='cython code score-10 '> __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_v_cam_data, __pyx_mstate_global-&gt;__pyx_n_u_sub_samp);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 346, __pyx_L1_error)</span>
1722
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
1723
+ __pyx_t_6 = <span class='pyx_c_api'>__Pyx_PyLong_As_int</span>(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) &amp;&amp; <span class='py_c_api'>PyErr_Occurred</span>())) <span class='error_goto'>__PYX_ERR(0, 346, __pyx_L1_error)</span>
1724
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
1725
+ __pyx_v_sub_samp = __pyx_t_6;
1726
+ </pre><pre class="cython line score-0">&#xA0;<span class="">347</span>: </pre>
1727
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">348</span>: nodes_per_elem: cython.size_t = connect.shape[1]</pre>
1728
+ <pre class='cython code score-0 '> __pyx_v_nodes_per_elem = (__pyx_v_connect.shape[1]);
1729
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">349</span>: fields_num: cython.size_t = fields_to_render.shape[1]</pre>
1730
+ <pre class='cython code score-0 '> __pyx_v_fields_num = (__pyx_v_fields_to_render.shape[1]);
1731
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">350</span>: sub_pix_x: cython.int = pixels_num[0]*sub_samp</pre>
1732
+ <pre class='cython code score-0 '> __pyx_t_7 = 0;
1733
+ __pyx_v_sub_pix_x = ((*((int *) ( /* dim=0 */ (__pyx_v_pixels_num.data + __pyx_t_7 * __pyx_v_pixels_num.strides[0]) ))) * __pyx_v_sub_samp);
1734
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">351</span>: sub_pix_y: cython.int = pixels_num[1]*sub_samp</pre>
1735
+ <pre class='cython code score-0 '> __pyx_t_7 = 1;
1736
+ __pyx_v_sub_pix_y = ((*((int *) ( /* dim=0 */ (__pyx_v_pixels_num.data + __pyx_t_7 * __pyx_v_pixels_num.strides[0]) ))) * __pyx_v_sub_samp);
1737
+ </pre><pre class="cython line score-0">&#xA0;<span class="">352</span>: </pre>
1738
+ <pre class="cython line score-0">&#xA0;<span class="">353</span>: #---------------------------------------------------------------------------</pre>
1739
+ <pre class="cython line score-0">&#xA0;<span class="">354</span>: # Final image buffer memory allocation</pre>
1740
+ <pre class="cython line score-48" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">355</span>: image_buff_avg_np = np.full((pixels_num[1],pixels_num[0],fields_num),0.0,dtype=np.float64)</pre>
1741
+ <pre class='cython code score-48 '> __pyx_t_8 = NULL;
1742
+ <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_9, __pyx_mstate_global-&gt;__pyx_n_u_np);<span class='error_goto'> if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 355, __pyx_L1_error)</span>
1743
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_9);
1744
+ __pyx_t_10 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_9, __pyx_mstate_global-&gt;__pyx_n_u_full);<span class='error_goto'> if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 355, __pyx_L1_error)</span>
1745
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_10);
1746
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_9); __pyx_t_9 = 0;
1747
+ __pyx_t_7 = 1;
1748
+ __pyx_t_9 = <span class='pyx_c_api'>__Pyx_PyLong_From_int</span>((*((int *) ( /* dim=0 */ (__pyx_v_pixels_num.data + __pyx_t_7 * __pyx_v_pixels_num.strides[0]) ))));<span class='error_goto'> if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 355, __pyx_L1_error)</span>
1749
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_9);
1750
+ __pyx_t_7 = 0;
1751
+ __pyx_t_11 = <span class='pyx_c_api'>__Pyx_PyLong_From_int</span>((*((int *) ( /* dim=0 */ (__pyx_v_pixels_num.data + __pyx_t_7 * __pyx_v_pixels_num.strides[0]) ))));<span class='error_goto'> if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 355, __pyx_L1_error)</span>
1752
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_11);
1753
+ __pyx_t_12 = <span class='pyx_c_api'>__Pyx_PyLong_FromSize_t</span>(__pyx_v_fields_num);<span class='error_goto'> if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 355, __pyx_L1_error)</span>
1754
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_12);
1755
+ __pyx_t_13 = <span class='py_c_api'>PyTuple_New</span>(3);<span class='error_goto'> if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 355, __pyx_L1_error)</span>
1756
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_13);
1757
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_9);
1758
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_13, 0, __pyx_t_9) != (0)) <span class='error_goto'>__PYX_ERR(0, 355, __pyx_L1_error)</span>;
1759
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_11);
1760
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_13, 1, __pyx_t_11) != (0)) <span class='error_goto'>__PYX_ERR(0, 355, __pyx_L1_error)</span>;
1761
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_12);
1762
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_13, 2, __pyx_t_12) != (0)) <span class='error_goto'>__PYX_ERR(0, 355, __pyx_L1_error)</span>;
1763
+ __pyx_t_9 = 0;
1764
+ __pyx_t_11 = 0;
1765
+ __pyx_t_12 = 0;
1766
+ <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_12, __pyx_mstate_global-&gt;__pyx_n_u_np);<span class='error_goto'> if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 355, __pyx_L1_error)</span>
1767
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_12);
1768
+ __pyx_t_11 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_12, __pyx_mstate_global-&gt;__pyx_n_u_float64);<span class='error_goto'> if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 355, __pyx_L1_error)</span>
1769
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_11);
1770
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_12); __pyx_t_12 = 0;
1771
+ __pyx_t_14 = 1;
1772
+ #if CYTHON_UNPACK_METHODS
1773
+ if (unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_10))) {
1774
+ __pyx_t_8 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_10);
1775
+ assert(__pyx_t_8);
1776
+ PyObject* __pyx__function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_10);
1777
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_8);
1778
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx__function);
1779
+ <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_10, __pyx__function);
1780
+ __pyx_t_14 = 0;
1781
+ }
1782
+ #endif
1783
+ {
1784
+ PyObject *__pyx_callargs[3 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_8, __pyx_t_13, __pyx_mstate_global-&gt;__pyx_float_0_0};
1785
+ __pyx_t_12 = <span class='pyx_c_api'>__Pyx_MakeVectorcallBuilderKwds</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 355, __pyx_L1_error)</span>
1786
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_12);
1787
+ if (<span class='pyx_c_api'>__Pyx_VectorcallBuilder_AddArg</span>(__pyx_mstate_global-&gt;__pyx_n_u_dtype, __pyx_t_11, __pyx_t_12, __pyx_callargs+3, 0) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 355, __pyx_L1_error)</span>
1788
+ __pyx_t_1 = <span class='pyx_c_api'>__Pyx_Object_Vectorcall_CallFromBuilder</span>((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_14, (3-__pyx_t_14) | (__pyx_t_14*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_12);
1789
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_8); __pyx_t_8 = 0;
1790
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_13); __pyx_t_13 = 0;
1791
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_11); __pyx_t_11 = 0;
1792
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_12); __pyx_t_12 = 0;
1793
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_10); __pyx_t_10 = 0;
1794
+ if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(0, 355, __pyx_L1_error)</span>
1795
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
1796
+ }
1797
+ __pyx_v_image_buff_avg_np = __pyx_t_1;
1798
+ __pyx_t_1 = 0;
1799
+ </pre><pre class="cython line score-2" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">356</span>: image_buff_avg: cython.double[:,:,:] = image_buff_avg_np</pre>
1800
+ <pre class='cython code score-2 '> __pyx_t_15 = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_dsdsds_double</span>(__pyx_v_image_buff_avg_np, PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_t_15.memview)) __PYX_ERR(0, 356, __pyx_L1_error)</span>
1801
+ __pyx_v_image_buff_avg = __pyx_t_15;
1802
+ __pyx_t_15.memview = NULL;
1803
+ __pyx_t_15.data = NULL;
1804
+ </pre><pre class="cython line score-0">&#xA0;<span class="">357</span>: </pre>
1805
+ <pre class="cython line score-44" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">358</span>: depth_buff_avg_np = np.full((pixels_num[1],pixels_num[0]),0.0,dtype=np.float64)</pre>
1806
+ <pre class='cython code score-44 '> __pyx_t_10 = NULL;
1807
+ <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_12, __pyx_mstate_global-&gt;__pyx_n_u_np);<span class='error_goto'> if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 358, __pyx_L1_error)</span>
1808
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_12);
1809
+ __pyx_t_11 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_12, __pyx_mstate_global-&gt;__pyx_n_u_full);<span class='error_goto'> if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 358, __pyx_L1_error)</span>
1810
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_11);
1811
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_12); __pyx_t_12 = 0;
1812
+ __pyx_t_7 = 1;
1813
+ __pyx_t_12 = <span class='pyx_c_api'>__Pyx_PyLong_From_int</span>((*((int *) ( /* dim=0 */ (__pyx_v_pixels_num.data + __pyx_t_7 * __pyx_v_pixels_num.strides[0]) ))));<span class='error_goto'> if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 358, __pyx_L1_error)</span>
1814
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_12);
1815
+ __pyx_t_7 = 0;
1816
+ __pyx_t_13 = <span class='pyx_c_api'>__Pyx_PyLong_From_int</span>((*((int *) ( /* dim=0 */ (__pyx_v_pixels_num.data + __pyx_t_7 * __pyx_v_pixels_num.strides[0]) ))));<span class='error_goto'> if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 358, __pyx_L1_error)</span>
1817
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_13);
1818
+ __pyx_t_8 = <span class='py_c_api'>PyTuple_New</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 358, __pyx_L1_error)</span>
1819
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_8);
1820
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_12);
1821
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_8, 0, __pyx_t_12) != (0)) <span class='error_goto'>__PYX_ERR(0, 358, __pyx_L1_error)</span>;
1822
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_13);
1823
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_8, 1, __pyx_t_13) != (0)) <span class='error_goto'>__PYX_ERR(0, 358, __pyx_L1_error)</span>;
1824
+ __pyx_t_12 = 0;
1825
+ __pyx_t_13 = 0;
1826
+ <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_13, __pyx_mstate_global-&gt;__pyx_n_u_np);<span class='error_goto'> if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 358, __pyx_L1_error)</span>
1827
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_13);
1828
+ __pyx_t_12 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_13, __pyx_mstate_global-&gt;__pyx_n_u_float64);<span class='error_goto'> if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 358, __pyx_L1_error)</span>
1829
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_12);
1830
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_13); __pyx_t_13 = 0;
1831
+ __pyx_t_14 = 1;
1832
+ #if CYTHON_UNPACK_METHODS
1833
+ if (unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_11))) {
1834
+ __pyx_t_10 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_11);
1835
+ assert(__pyx_t_10);
1836
+ PyObject* __pyx__function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_11);
1837
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_10);
1838
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx__function);
1839
+ <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_11, __pyx__function);
1840
+ __pyx_t_14 = 0;
1841
+ }
1842
+ #endif
1843
+ {
1844
+ PyObject *__pyx_callargs[3 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_10, __pyx_t_8, __pyx_mstate_global-&gt;__pyx_float_0_0};
1845
+ __pyx_t_13 = <span class='pyx_c_api'>__Pyx_MakeVectorcallBuilderKwds</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 358, __pyx_L1_error)</span>
1846
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_13);
1847
+ if (<span class='pyx_c_api'>__Pyx_VectorcallBuilder_AddArg</span>(__pyx_mstate_global-&gt;__pyx_n_u_dtype, __pyx_t_12, __pyx_t_13, __pyx_callargs+3, 0) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 358, __pyx_L1_error)</span>
1848
+ __pyx_t_1 = <span class='pyx_c_api'>__Pyx_Object_Vectorcall_CallFromBuilder</span>((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_14, (3-__pyx_t_14) | (__pyx_t_14*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_13);
1849
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_10); __pyx_t_10 = 0;
1850
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_8); __pyx_t_8 = 0;
1851
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_12); __pyx_t_12 = 0;
1852
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_13); __pyx_t_13 = 0;
1853
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_11); __pyx_t_11 = 0;
1854
+ if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(0, 358, __pyx_L1_error)</span>
1855
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
1856
+ }
1857
+ __pyx_v_depth_buff_avg_np = __pyx_t_1;
1858
+ __pyx_t_1 = 0;
1859
+ </pre><pre class="cython line score-2" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">359</span>: depth_buff_avg: cython.double[:,:] = depth_buff_avg_np</pre>
1860
+ <pre class='cython code score-2 '> __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_dsds_double</span>(__pyx_v_depth_buff_avg_np, PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 359, __pyx_L1_error)</span>
1861
+ __pyx_v_depth_buff_avg = __pyx_t_2;
1862
+ __pyx_t_2.memview = NULL;
1863
+ __pyx_t_2.data = NULL;
1864
+ </pre><pre class="cython line score-0">&#xA0;<span class="">360</span>: </pre>
1865
+ <pre class="cython line score-0">&#xA0;<span class="">361</span>: #---------------------------------------------------------------------------</pre>
1866
+ <pre class="cython line score-0">&#xA0;<span class="">362</span>: # Per-thread scratch memory allocations</pre>
1867
+ <pre class="cython line score-44" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">363</span>: depth_buffer_np = np.full((sub_pix_y,sub_pix_x),1.0e6,dtype=np.float64)</pre>
1868
+ <pre class='cython code score-44 '> __pyx_t_11 = NULL;
1869
+ <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_13, __pyx_mstate_global-&gt;__pyx_n_u_np);<span class='error_goto'> if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 363, __pyx_L1_error)</span>
1870
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_13);
1871
+ __pyx_t_12 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_13, __pyx_mstate_global-&gt;__pyx_n_u_full);<span class='error_goto'> if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 363, __pyx_L1_error)</span>
1872
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_12);
1873
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_13); __pyx_t_13 = 0;
1874
+ __pyx_t_13 = <span class='pyx_c_api'>__Pyx_PyLong_From_int</span>(__pyx_v_sub_pix_y);<span class='error_goto'> if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 363, __pyx_L1_error)</span>
1875
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_13);
1876
+ __pyx_t_8 = <span class='pyx_c_api'>__Pyx_PyLong_From_int</span>(__pyx_v_sub_pix_x);<span class='error_goto'> if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 363, __pyx_L1_error)</span>
1877
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_8);
1878
+ __pyx_t_10 = <span class='py_c_api'>PyTuple_New</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 363, __pyx_L1_error)</span>
1879
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_10);
1880
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_13);
1881
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_10, 0, __pyx_t_13) != (0)) <span class='error_goto'>__PYX_ERR(0, 363, __pyx_L1_error)</span>;
1882
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_8);
1883
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_10, 1, __pyx_t_8) != (0)) <span class='error_goto'>__PYX_ERR(0, 363, __pyx_L1_error)</span>;
1884
+ __pyx_t_13 = 0;
1885
+ __pyx_t_8 = 0;
1886
+ <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_8, __pyx_mstate_global-&gt;__pyx_n_u_np);<span class='error_goto'> if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 363, __pyx_L1_error)</span>
1887
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_8);
1888
+ __pyx_t_13 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_8, __pyx_mstate_global-&gt;__pyx_n_u_float64);<span class='error_goto'> if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 363, __pyx_L1_error)</span>
1889
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_13);
1890
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_8); __pyx_t_8 = 0;
1891
+ __pyx_t_14 = 1;
1892
+ #if CYTHON_UNPACK_METHODS
1893
+ if (unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_12))) {
1894
+ __pyx_t_11 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_12);
1895
+ assert(__pyx_t_11);
1896
+ PyObject* __pyx__function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_12);
1897
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_11);
1898
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx__function);
1899
+ <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_12, __pyx__function);
1900
+ __pyx_t_14 = 0;
1901
+ }
1902
+ #endif
1903
+ {
1904
+ PyObject *__pyx_callargs[3 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_11, __pyx_t_10, __pyx_mstate_global-&gt;__pyx_float_1_0e6};
1905
+ __pyx_t_8 = <span class='pyx_c_api'>__Pyx_MakeVectorcallBuilderKwds</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 363, __pyx_L1_error)</span>
1906
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_8);
1907
+ if (<span class='pyx_c_api'>__Pyx_VectorcallBuilder_AddArg</span>(__pyx_mstate_global-&gt;__pyx_n_u_dtype, __pyx_t_13, __pyx_t_8, __pyx_callargs+3, 0) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 363, __pyx_L1_error)</span>
1908
+ __pyx_t_1 = <span class='pyx_c_api'>__Pyx_Object_Vectorcall_CallFromBuilder</span>((PyObject*)__pyx_t_12, __pyx_callargs+__pyx_t_14, (3-__pyx_t_14) | (__pyx_t_14*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
1909
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_11); __pyx_t_11 = 0;
1910
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_10); __pyx_t_10 = 0;
1911
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_13); __pyx_t_13 = 0;
1912
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_8); __pyx_t_8 = 0;
1913
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_12); __pyx_t_12 = 0;
1914
+ if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(0, 363, __pyx_L1_error)</span>
1915
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
1916
+ }
1917
+ __pyx_v_depth_buffer_np = __pyx_t_1;
1918
+ __pyx_t_1 = 0;
1919
+ </pre><pre class="cython line score-2" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">364</span>: depth_buff_subpx: cython.double[:,:] = depth_buffer_np</pre>
1920
+ <pre class='cython code score-2 '> __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_dsds_double</span>(__pyx_v_depth_buffer_np, PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 364, __pyx_L1_error)</span>
1921
+ __pyx_v_depth_buff_subpx = __pyx_t_2;
1922
+ __pyx_t_2.memview = NULL;
1923
+ __pyx_t_2.data = NULL;
1924
+ </pre><pre class="cython line score-0">&#xA0;<span class="">365</span>: </pre>
1925
+ <pre class="cython line score-48" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">366</span>: image_buffer_np = np.full((sub_pix_y,sub_pix_x,fields_num),0.0,dtype=np.float64)</pre>
1926
+ <pre class='cython code score-48 '> __pyx_t_12 = NULL;
1927
+ <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_8, __pyx_mstate_global-&gt;__pyx_n_u_np);<span class='error_goto'> if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 366, __pyx_L1_error)</span>
1928
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_8);
1929
+ __pyx_t_13 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_8, __pyx_mstate_global-&gt;__pyx_n_u_full);<span class='error_goto'> if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 366, __pyx_L1_error)</span>
1930
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_13);
1931
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_8); __pyx_t_8 = 0;
1932
+ __pyx_t_8 = <span class='pyx_c_api'>__Pyx_PyLong_From_int</span>(__pyx_v_sub_pix_y);<span class='error_goto'> if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 366, __pyx_L1_error)</span>
1933
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_8);
1934
+ __pyx_t_10 = <span class='pyx_c_api'>__Pyx_PyLong_From_int</span>(__pyx_v_sub_pix_x);<span class='error_goto'> if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 366, __pyx_L1_error)</span>
1935
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_10);
1936
+ __pyx_t_11 = <span class='pyx_c_api'>__Pyx_PyLong_FromSize_t</span>(__pyx_v_fields_num);<span class='error_goto'> if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 366, __pyx_L1_error)</span>
1937
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_11);
1938
+ __pyx_t_9 = <span class='py_c_api'>PyTuple_New</span>(3);<span class='error_goto'> if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 366, __pyx_L1_error)</span>
1939
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_9);
1940
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_8);
1941
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_9, 0, __pyx_t_8) != (0)) <span class='error_goto'>__PYX_ERR(0, 366, __pyx_L1_error)</span>;
1942
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_10);
1943
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_9, 1, __pyx_t_10) != (0)) <span class='error_goto'>__PYX_ERR(0, 366, __pyx_L1_error)</span>;
1944
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_11);
1945
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_9, 2, __pyx_t_11) != (0)) <span class='error_goto'>__PYX_ERR(0, 366, __pyx_L1_error)</span>;
1946
+ __pyx_t_8 = 0;
1947
+ __pyx_t_10 = 0;
1948
+ __pyx_t_11 = 0;
1949
+ <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_11, __pyx_mstate_global-&gt;__pyx_n_u_np);<span class='error_goto'> if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 366, __pyx_L1_error)</span>
1950
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_11);
1951
+ __pyx_t_10 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_11, __pyx_mstate_global-&gt;__pyx_n_u_float64);<span class='error_goto'> if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 366, __pyx_L1_error)</span>
1952
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_10);
1953
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_11); __pyx_t_11 = 0;
1954
+ __pyx_t_14 = 1;
1955
+ #if CYTHON_UNPACK_METHODS
1956
+ if (unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_13))) {
1957
+ __pyx_t_12 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_13);
1958
+ assert(__pyx_t_12);
1959
+ PyObject* __pyx__function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_13);
1960
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_12);
1961
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx__function);
1962
+ <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_13, __pyx__function);
1963
+ __pyx_t_14 = 0;
1964
+ }
1965
+ #endif
1966
+ {
1967
+ PyObject *__pyx_callargs[3 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_12, __pyx_t_9, __pyx_mstate_global-&gt;__pyx_float_0_0};
1968
+ __pyx_t_11 = <span class='pyx_c_api'>__Pyx_MakeVectorcallBuilderKwds</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 366, __pyx_L1_error)</span>
1969
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_11);
1970
+ if (<span class='pyx_c_api'>__Pyx_VectorcallBuilder_AddArg</span>(__pyx_mstate_global-&gt;__pyx_n_u_dtype, __pyx_t_10, __pyx_t_11, __pyx_callargs+3, 0) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 366, __pyx_L1_error)</span>
1971
+ __pyx_t_1 = <span class='pyx_c_api'>__Pyx_Object_Vectorcall_CallFromBuilder</span>((PyObject*)__pyx_t_13, __pyx_callargs+__pyx_t_14, (3-__pyx_t_14) | (__pyx_t_14*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_11);
1972
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_12); __pyx_t_12 = 0;
1973
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_9); __pyx_t_9 = 0;
1974
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_10); __pyx_t_10 = 0;
1975
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_11); __pyx_t_11 = 0;
1976
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_13); __pyx_t_13 = 0;
1977
+ if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(0, 366, __pyx_L1_error)</span>
1978
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
1979
+ }
1980
+ __pyx_v_image_buffer_np = __pyx_t_1;
1981
+ __pyx_t_1 = 0;
1982
+ </pre><pre class="cython line score-2" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">367</span>: image_buff_subpx: cython.double[:,:,:] = image_buffer_np</pre>
1983
+ <pre class='cython code score-2 '> __pyx_t_15 = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_dsdsds_double</span>(__pyx_v_image_buffer_np, PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_t_15.memview)) __PYX_ERR(0, 367, __pyx_L1_error)</span>
1984
+ __pyx_v_image_buff_subpx = __pyx_t_15;
1985
+ __pyx_t_15.memview = NULL;
1986
+ __pyx_t_15.data = NULL;
1987
+ </pre><pre class="cython line score-0">&#xA0;<span class="">368</span>: </pre>
1988
+ <pre class="cython line score-0">&#xA0;<span class="">369</span>: # shape=(nodes_per_elem, coord[X,Y,Z,W])</pre>
1989
+ <pre class="cython line score-43" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">370</span>: nodes_raster_np = np.empty((nodes_per_elem,4),dtype=np.float64)</pre>
1990
+ <pre class='cython code score-43 '> __pyx_t_13 = NULL;
1991
+ <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_11, __pyx_mstate_global-&gt;__pyx_n_u_np);<span class='error_goto'> if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 370, __pyx_L1_error)</span>
1992
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_11);
1993
+ __pyx_t_10 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_11, __pyx_mstate_global-&gt;__pyx_n_u_empty);<span class='error_goto'> if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 370, __pyx_L1_error)</span>
1994
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_10);
1995
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_11); __pyx_t_11 = 0;
1996
+ __pyx_t_11 = <span class='pyx_c_api'>__Pyx_PyLong_FromSize_t</span>(__pyx_v_nodes_per_elem);<span class='error_goto'> if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 370, __pyx_L1_error)</span>
1997
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_11);
1998
+ __pyx_t_9 = <span class='py_c_api'>PyTuple_New</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 370, __pyx_L1_error)</span>
1999
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_9);
2000
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_11);
2001
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_9, 0, __pyx_t_11) != (0)) <span class='error_goto'>__PYX_ERR(0, 370, __pyx_L1_error)</span>;
2002
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_mstate_global-&gt;__pyx_int_4);
2003
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_mstate_global-&gt;__pyx_int_4);
2004
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_9, 1, __pyx_mstate_global-&gt;__pyx_int_4) != (0)) <span class='error_goto'>__PYX_ERR(0, 370, __pyx_L1_error)</span>;
2005
+ __pyx_t_11 = 0;
2006
+ <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_11, __pyx_mstate_global-&gt;__pyx_n_u_np);<span class='error_goto'> if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 370, __pyx_L1_error)</span>
2007
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_11);
2008
+ __pyx_t_12 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_11, __pyx_mstate_global-&gt;__pyx_n_u_float64);<span class='error_goto'> if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 370, __pyx_L1_error)</span>
2009
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_12);
2010
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_11); __pyx_t_11 = 0;
2011
+ __pyx_t_14 = 1;
2012
+ #if CYTHON_UNPACK_METHODS
2013
+ if (unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_10))) {
2014
+ __pyx_t_13 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_10);
2015
+ assert(__pyx_t_13);
2016
+ PyObject* __pyx__function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_10);
2017
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_13);
2018
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx__function);
2019
+ <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_10, __pyx__function);
2020
+ __pyx_t_14 = 0;
2021
+ }
2022
+ #endif
2023
+ {
2024
+ PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_13, __pyx_t_9};
2025
+ __pyx_t_11 = <span class='pyx_c_api'>__Pyx_MakeVectorcallBuilderKwds</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 370, __pyx_L1_error)</span>
2026
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_11);
2027
+ if (<span class='pyx_c_api'>__Pyx_VectorcallBuilder_AddArg</span>(__pyx_mstate_global-&gt;__pyx_n_u_dtype, __pyx_t_12, __pyx_t_11, __pyx_callargs+2, 0) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 370, __pyx_L1_error)</span>
2028
+ __pyx_t_1 = <span class='pyx_c_api'>__Pyx_Object_Vectorcall_CallFromBuilder</span>((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_14, (2-__pyx_t_14) | (__pyx_t_14*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_11);
2029
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_13); __pyx_t_13 = 0;
2030
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_9); __pyx_t_9 = 0;
2031
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_12); __pyx_t_12 = 0;
2032
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_11); __pyx_t_11 = 0;
2033
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_10); __pyx_t_10 = 0;
2034
+ if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(0, 370, __pyx_L1_error)</span>
2035
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
2036
+ }
2037
+ __pyx_v_nodes_raster_np = __pyx_t_1;
2038
+ __pyx_t_1 = 0;
2039
+ </pre><pre class="cython line score-2" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">371</span>: nodes_raster_buff: cython.double[:,:] = nodes_raster_np</pre>
2040
+ <pre class='cython code score-2 '> __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_dsds_double</span>(__pyx_v_nodes_raster_np, PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 371, __pyx_L1_error)</span>
2041
+ __pyx_v_nodes_raster_buff = __pyx_t_2;
2042
+ __pyx_t_2.memview = NULL;
2043
+ __pyx_t_2.data = NULL;
2044
+ </pre><pre class="cython line score-0">&#xA0;<span class="">372</span>: </pre>
2045
+ <pre class="cython line score-40" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">373</span>: field_raster_np = np.empty((nodes_per_elem,),dtype=np.float64)</pre>
2046
+ <pre class='cython code score-40 '> __pyx_t_10 = NULL;
2047
+ <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_11, __pyx_mstate_global-&gt;__pyx_n_u_np);<span class='error_goto'> if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 373, __pyx_L1_error)</span>
2048
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_11);
2049
+ __pyx_t_12 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_11, __pyx_mstate_global-&gt;__pyx_n_u_empty);<span class='error_goto'> if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 373, __pyx_L1_error)</span>
2050
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_12);
2051
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_11); __pyx_t_11 = 0;
2052
+ __pyx_t_11 = <span class='pyx_c_api'>__Pyx_PyLong_FromSize_t</span>(__pyx_v_nodes_per_elem);<span class='error_goto'> if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 373, __pyx_L1_error)</span>
2053
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_11);
2054
+ __pyx_t_9 = <span class='py_c_api'>PyTuple_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 373, __pyx_L1_error)</span>
2055
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_9);
2056
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_11);
2057
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_9, 0, __pyx_t_11) != (0)) <span class='error_goto'>__PYX_ERR(0, 373, __pyx_L1_error)</span>;
2058
+ __pyx_t_11 = 0;
2059
+ <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_11, __pyx_mstate_global-&gt;__pyx_n_u_np);<span class='error_goto'> if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 373, __pyx_L1_error)</span>
2060
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_11);
2061
+ __pyx_t_13 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_11, __pyx_mstate_global-&gt;__pyx_n_u_float64);<span class='error_goto'> if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 373, __pyx_L1_error)</span>
2062
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_13);
2063
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_11); __pyx_t_11 = 0;
2064
+ __pyx_t_14 = 1;
2065
+ #if CYTHON_UNPACK_METHODS
2066
+ if (unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_12))) {
2067
+ __pyx_t_10 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_12);
2068
+ assert(__pyx_t_10);
2069
+ PyObject* __pyx__function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_12);
2070
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_10);
2071
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx__function);
2072
+ <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_12, __pyx__function);
2073
+ __pyx_t_14 = 0;
2074
+ }
2075
+ #endif
2076
+ {
2077
+ PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_10, __pyx_t_9};
2078
+ __pyx_t_11 = <span class='pyx_c_api'>__Pyx_MakeVectorcallBuilderKwds</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 373, __pyx_L1_error)</span>
2079
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_11);
2080
+ if (<span class='pyx_c_api'>__Pyx_VectorcallBuilder_AddArg</span>(__pyx_mstate_global-&gt;__pyx_n_u_dtype, __pyx_t_13, __pyx_t_11, __pyx_callargs+2, 0) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 373, __pyx_L1_error)</span>
2081
+ __pyx_t_1 = <span class='pyx_c_api'>__Pyx_Object_Vectorcall_CallFromBuilder</span>((PyObject*)__pyx_t_12, __pyx_callargs+__pyx_t_14, (2-__pyx_t_14) | (__pyx_t_14*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_11);
2082
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_10); __pyx_t_10 = 0;
2083
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_9); __pyx_t_9 = 0;
2084
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_13); __pyx_t_13 = 0;
2085
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_11); __pyx_t_11 = 0;
2086
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_12); __pyx_t_12 = 0;
2087
+ if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(0, 373, __pyx_L1_error)</span>
2088
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
2089
+ }
2090
+ __pyx_v_field_raster_np = __pyx_t_1;
2091
+ __pyx_t_1 = 0;
2092
+ </pre><pre class="cython line score-2" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">374</span>: field_raster_buff: cython.double[:] = field_raster_np</pre>
2093
+ <pre class='cython code score-2 '> __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_ds_double</span>(__pyx_v_field_raster_np, PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 374, __pyx_L1_error)</span>
2094
+ __pyx_v_field_raster_buff = __pyx_t_4;
2095
+ __pyx_t_4.memview = NULL;
2096
+ __pyx_t_4.data = NULL;
2097
+ </pre><pre class="cython line score-0">&#xA0;<span class="">375</span>: </pre>
2098
+ <pre class="cython line score-35" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">376</span>: weights_np = np.zeros((nodes_per_elem,),np.float64)</pre>
2099
+ <pre class='cython code score-35 '> __pyx_t_12 = NULL;
2100
+ <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_11, __pyx_mstate_global-&gt;__pyx_n_u_np);<span class='error_goto'> if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 376, __pyx_L1_error)</span>
2101
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_11);
2102
+ __pyx_t_13 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_11, __pyx_mstate_global-&gt;__pyx_n_u_zeros);<span class='error_goto'> if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 376, __pyx_L1_error)</span>
2103
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_13);
2104
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_11); __pyx_t_11 = 0;
2105
+ __pyx_t_11 = <span class='pyx_c_api'>__Pyx_PyLong_FromSize_t</span>(__pyx_v_nodes_per_elem);<span class='error_goto'> if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 376, __pyx_L1_error)</span>
2106
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_11);
2107
+ __pyx_t_9 = <span class='py_c_api'>PyTuple_New</span>(1);<span class='error_goto'> if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 376, __pyx_L1_error)</span>
2108
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_9);
2109
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_11);
2110
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_9, 0, __pyx_t_11) != (0)) <span class='error_goto'>__PYX_ERR(0, 376, __pyx_L1_error)</span>;
2111
+ __pyx_t_11 = 0;
2112
+ <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_11, __pyx_mstate_global-&gt;__pyx_n_u_np);<span class='error_goto'> if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 376, __pyx_L1_error)</span>
2113
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_11);
2114
+ __pyx_t_10 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_11, __pyx_mstate_global-&gt;__pyx_n_u_float64);<span class='error_goto'> if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 376, __pyx_L1_error)</span>
2115
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_10);
2116
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_11); __pyx_t_11 = 0;
2117
+ __pyx_t_14 = 1;
2118
+ #if CYTHON_UNPACK_METHODS
2119
+ if (unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_13))) {
2120
+ __pyx_t_12 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_13);
2121
+ assert(__pyx_t_12);
2122
+ PyObject* __pyx__function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_13);
2123
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_12);
2124
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx__function);
2125
+ <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_13, __pyx__function);
2126
+ __pyx_t_14 = 0;
2127
+ }
2128
+ #endif
2129
+ {
2130
+ PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_9, __pyx_t_10};
2131
+ __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_FastCall</span>((PyObject*)__pyx_t_13, __pyx_callargs+__pyx_t_14, (3-__pyx_t_14) | (__pyx_t_14*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
2132
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_12); __pyx_t_12 = 0;
2133
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_9); __pyx_t_9 = 0;
2134
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_10); __pyx_t_10 = 0;
2135
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_13); __pyx_t_13 = 0;
2136
+ if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(0, 376, __pyx_L1_error)</span>
2137
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
2138
+ }
2139
+ __pyx_v_weights_np = __pyx_t_1;
2140
+ __pyx_t_1 = 0;
2141
+ </pre><pre class="cython line score-2" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">377</span>: weights_buff: cython.double[:] = weights_np</pre>
2142
+ <pre class='cython code score-2 '> __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_ds_double</span>(__pyx_v_weights_np, PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 377, __pyx_L1_error)</span>
2143
+ __pyx_v_weights_buff = __pyx_t_4;
2144
+ __pyx_t_4.memview = NULL;
2145
+ __pyx_t_4.data = NULL;
2146
+ </pre><pre class="cython line score-0">&#xA0;<span class="">378</span>: </pre>
2147
+ <pre class="cython line score-0">&#xA0;<span class="">379</span>: # Only used for edge function in raster coords - need x,y</pre>
2148
+ <pre class="cython line score-25" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">380</span>: px_coord_np = np.zeros((2,),np.float64)</pre>
2149
+ <pre class='cython code score-25 '> __pyx_t_13 = NULL;
2150
+ <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_10, __pyx_mstate_global-&gt;__pyx_n_u_np);<span class='error_goto'> if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 380, __pyx_L1_error)</span>
2151
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_10);
2152
+ __pyx_t_9 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_10, __pyx_mstate_global-&gt;__pyx_n_u_zeros);<span class='error_goto'> if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 380, __pyx_L1_error)</span>
2153
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_9);
2154
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_10); __pyx_t_10 = 0;
2155
+ <span class='pyx_c_api'>__Pyx_GetModuleGlobalName</span>(__pyx_t_10, __pyx_mstate_global-&gt;__pyx_n_u_np);<span class='error_goto'> if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 380, __pyx_L1_error)</span>
2156
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_10);
2157
+ __pyx_t_12 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_10, __pyx_mstate_global-&gt;__pyx_n_u_float64);<span class='error_goto'> if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 380, __pyx_L1_error)</span>
2158
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_12);
2159
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_10); __pyx_t_10 = 0;
2160
+ __pyx_t_14 = 1;
2161
+ #if CYTHON_UNPACK_METHODS
2162
+ if (unlikely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_9))) {
2163
+ __pyx_t_13 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_9);
2164
+ assert(__pyx_t_13);
2165
+ PyObject* __pyx__function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_9);
2166
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_13);
2167
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx__function);
2168
+ <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_9, __pyx__function);
2169
+ __pyx_t_14 = 0;
2170
+ }
2171
+ #endif
2172
+ {
2173
+ PyObject *__pyx_callargs[3] = {__pyx_t_13, __pyx_mstate_global-&gt;__pyx_tuple[2], __pyx_t_12};
2174
+ __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_FastCall</span>((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_14, (3-__pyx_t_14) | (__pyx_t_14*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
2175
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_13); __pyx_t_13 = 0;
2176
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_12); __pyx_t_12 = 0;
2177
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_9); __pyx_t_9 = 0;
2178
+ if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(0, 380, __pyx_L1_error)</span>
2179
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
2180
+ }
2181
+ __pyx_v_px_coord_np = __pyx_t_1;
2182
+ __pyx_t_1 = 0;
2183
+ </pre><pre class="cython line score-2" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">381</span>: px_coord_buff: cython.double[:] = px_coord_np</pre>
2184
+ <pre class='cython code score-2 '> __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_ds_double</span>(__pyx_v_px_coord_np, PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 381, __pyx_L1_error)</span>
2185
+ __pyx_v_px_coord_buff = __pyx_t_4;
2186
+ __pyx_t_4.memview = NULL;
2187
+ __pyx_t_4.data = NULL;
2188
+ </pre><pre class="cython line score-0">&#xA0;<span class="">382</span>: </pre>
2189
+ <pre class="cython line score-0">&#xA0;<span class="">383</span>: </pre>
2190
+ <pre class="cython line score-0">&#xA0;<span class="">384</span>: #---------------------------------------------------------------------------</pre>
2191
+ <pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">385</span>: elems_in_image: cython.size_t = _raster_frame(coords[:,:],</pre>
2192
+ <pre class='cython code score-5 '> if (unlikely(((PyObject *) __pyx_v_coords.memview) == Py_None)) {
2193
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2194
+ <span class='error_goto'>__PYX_ERR(0, 385, __pyx_L1_error)</span>
2195
+ }
2196
+ /* … */
2197
+ __pyx_v_elems_in_image = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth__raster_frame(__pyx_v_coords, __pyx_v_connect, __pyx_v_fields_to_render, __pyx_v_world_to_cam_mat, __pyx_v_pixels_num, __pyx_v_image_dims, __pyx_v_image_dist, __pyx_v_sub_samp, __pyx_v_image_buff_avg, __pyx_v_depth_buff_avg, __pyx_v_image_buff_subpx, __pyx_v_depth_buff_subpx, __pyx_v_nodes_raster_buff, __pyx_v_field_raster_buff, __pyx_v_px_coord_buff, __pyx_v_weights_buff);
2198
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">386</span>: connect[:,:],</pre>
2199
+ <pre class='cython code score-5 '> if (unlikely(((PyObject *) __pyx_v_connect.memview) == Py_None)) {
2200
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2201
+ <span class='error_goto'>__PYX_ERR(0, 386, __pyx_L1_error)</span>
2202
+ }
2203
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">387</span>: fields_to_render[:,:],</pre>
2204
+ <pre class='cython code score-5 '> if (unlikely(((PyObject *) __pyx_v_fields_to_render.memview) == Py_None)) {
2205
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2206
+ <span class='error_goto'>__PYX_ERR(0, 387, __pyx_L1_error)</span>
2207
+ }
2208
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">388</span>: world_to_cam_mat[:,:],</pre>
2209
+ <pre class='cython code score-5 '> if (unlikely(((PyObject *) __pyx_v_world_to_cam_mat.memview) == Py_None)) {
2210
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2211
+ <span class='error_goto'>__PYX_ERR(0, 388, __pyx_L1_error)</span>
2212
+ }
2213
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">389</span>: pixels_num[:],</pre>
2214
+ <pre class='cython code score-5 '> if (unlikely(((PyObject *) __pyx_v_pixels_num.memview) == Py_None)) {
2215
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2216
+ <span class='error_goto'>__PYX_ERR(0, 389, __pyx_L1_error)</span>
2217
+ }
2218
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">390</span>: image_dims[:],</pre>
2219
+ <pre class='cython code score-5 '> if (unlikely(((PyObject *) __pyx_v_image_dims.memview) == Py_None)) {
2220
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2221
+ <span class='error_goto'>__PYX_ERR(0, 390, __pyx_L1_error)</span>
2222
+ }
2223
+ </pre><pre class="cython line score-0">&#xA0;<span class="">391</span>: image_dist,</pre>
2224
+ <pre class="cython line score-0">&#xA0;<span class="">392</span>: sub_samp,</pre>
2225
+ <pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">393</span>: image_buff_avg[:,:,:],</pre>
2226
+ <pre class='cython code score-5 '> if (unlikely(((PyObject *) __pyx_v_image_buff_avg.memview) == Py_None)) {
2227
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2228
+ <span class='error_goto'>__PYX_ERR(0, 393, __pyx_L1_error)</span>
2229
+ }
2230
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">394</span>: depth_buff_avg[:,:],</pre>
2231
+ <pre class='cython code score-5 '> if (unlikely(((PyObject *) __pyx_v_depth_buff_avg.memview) == Py_None)) {
2232
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2233
+ <span class='error_goto'>__PYX_ERR(0, 394, __pyx_L1_error)</span>
2234
+ }
2235
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">395</span>: image_buff_subpx[:,:,:],</pre>
2236
+ <pre class='cython code score-5 '> if (unlikely(((PyObject *) __pyx_v_image_buff_subpx.memview) == Py_None)) {
2237
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2238
+ <span class='error_goto'>__PYX_ERR(0, 395, __pyx_L1_error)</span>
2239
+ }
2240
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">396</span>: depth_buff_subpx[:,:],</pre>
2241
+ <pre class='cython code score-5 '> if (unlikely(((PyObject *) __pyx_v_depth_buff_subpx.memview) == Py_None)) {
2242
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2243
+ <span class='error_goto'>__PYX_ERR(0, 396, __pyx_L1_error)</span>
2244
+ }
2245
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">397</span>: nodes_raster_buff[:,:],</pre>
2246
+ <pre class='cython code score-5 '> if (unlikely(((PyObject *) __pyx_v_nodes_raster_buff.memview) == Py_None)) {
2247
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2248
+ <span class='error_goto'>__PYX_ERR(0, 397, __pyx_L1_error)</span>
2249
+ }
2250
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">398</span>: field_raster_buff[:],</pre>
2251
+ <pre class='cython code score-5 '> if (unlikely(((PyObject *) __pyx_v_field_raster_buff.memview) == Py_None)) {
2252
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2253
+ <span class='error_goto'>__PYX_ERR(0, 398, __pyx_L1_error)</span>
2254
+ }
2255
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">399</span>: px_coord_buff[:],</pre>
2256
+ <pre class='cython code score-5 '> if (unlikely(((PyObject *) __pyx_v_px_coord_buff.memview) == Py_None)) {
2257
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2258
+ <span class='error_goto'>__PYX_ERR(0, 399, __pyx_L1_error)</span>
2259
+ }
2260
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">400</span>: weights_buff[:])</pre>
2261
+ <pre class='cython code score-5 '> if (unlikely(((PyObject *) __pyx_v_weights_buff.memview) == Py_None)) {
2262
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2263
+ <span class='error_goto'>__PYX_ERR(0, 400, __pyx_L1_error)</span>
2264
+ }
2265
+ </pre><pre class="cython line score-0">&#xA0;<span class="">401</span>: </pre>
2266
+ <pre class="cython line score-16" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">402</span>: return (image_buff_avg_np,depth_buff_avg_np,elems_in_image)</pre>
2267
+ <pre class='cython code score-16 '> <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
2268
+ __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyLong_FromSize_t</span>(__pyx_v_elems_in_image);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 402, __pyx_L1_error)</span>
2269
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
2270
+ __pyx_t_9 = <span class='py_c_api'>PyTuple_New</span>(3);<span class='error_goto'> if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 402, __pyx_L1_error)</span>
2271
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_9);
2272
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_image_buff_avg_np);
2273
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_image_buff_avg_np);
2274
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_9, 0, __pyx_v_image_buff_avg_np) != (0)) <span class='error_goto'>__PYX_ERR(0, 402, __pyx_L1_error)</span>;
2275
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_v_depth_buff_avg_np);
2276
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_v_depth_buff_avg_np);
2277
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_9, 1, __pyx_v_depth_buff_avg_np) != (0)) <span class='error_goto'>__PYX_ERR(0, 402, __pyx_L1_error)</span>;
2278
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_1);
2279
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_9, 2, __pyx_t_1) != (0)) <span class='error_goto'>__PYX_ERR(0, 402, __pyx_L1_error)</span>;
2280
+ __pyx_t_1 = 0;
2281
+ __pyx_r = ((PyObject*)__pyx_t_9);
2282
+ __pyx_t_9 = 0;
2283
+ goto __pyx_L0;
2284
+ </pre><pre class="cython line score-0">&#xA0;<span class="">403</span>: </pre>
2285
+ <pre class="cython line score-0">&#xA0;<span class="">404</span>: #///////////////////////////////////////////////////////////////////////////////</pre>
2286
+ <pre class="cython line score-142" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">405</span>: @cython.ccall # python+C or cython.cfunc for C only</pre>
2287
+ <pre class='cython code score-142 '>static PyObject *__pyx_pw_6pyvale_9sensorsim_6cython_10rastercyth_5raster_deform_frame(PyObject *__pyx_self,
2288
+ #if CYTHON_METH_FASTCALL
2289
+ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
2290
+ #else
2291
+ PyObject *__pyx_args, PyObject *__pyx_kwds
2292
+ #endif
2293
+ ); /*proto*/
2294
+ static PyObject *__pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_raster_deform_frame(CYTHON_UNUSED __Pyx_memviewslice __pyx_v_coords, CYTHON_UNUSED __Pyx_memviewslice __pyx_v_connect, CYTHON_UNUSED __Pyx_memviewslice __pyx_v_fields_to_render, CYTHON_UNUSED PyObject *__pyx_v_cam_data, CYTHON_UNUSED __Pyx_memviewslice __pyx_v_field_disp, CYTHON_UNUSED int __pyx_skip_dispatch) {
2295
+ PyObject *__pyx_r = NULL;
2296
+ /* … */
2297
+ /* function exit code */
2298
+ __pyx_r = ((PyObject*)Py_None); <span class='pyx_macro_api'>__Pyx_INCREF</span>(Py_None);
2299
+ <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
2300
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
2301
+ return __pyx_r;
2302
+ }
2303
+ /* … */
2304
+ /* Python wrapper */
2305
+ static PyObject *__pyx_pw_6pyvale_9sensorsim_6cython_10rastercyth_5raster_deform_frame(PyObject *__pyx_self,
2306
+ #if CYTHON_METH_FASTCALL
2307
+ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
2308
+ #else
2309
+ PyObject *__pyx_args, PyObject *__pyx_kwds
2310
+ #endif
2311
+ ); /*proto*/
2312
+ static PyMethodDef __pyx_mdef_6pyvale_9sensorsim_6cython_10rastercyth_5raster_deform_frame = {"raster_deform_frame", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6pyvale_9sensorsim_6cython_10rastercyth_5raster_deform_frame, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
2313
+ static PyObject *__pyx_pw_6pyvale_9sensorsim_6cython_10rastercyth_5raster_deform_frame(PyObject *__pyx_self,
2314
+ #if CYTHON_METH_FASTCALL
2315
+ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
2316
+ #else
2317
+ PyObject *__pyx_args, PyObject *__pyx_kwds
2318
+ #endif
2319
+ ) {
2320
+ __Pyx_memviewslice __pyx_v_coords = { 0, 0, { 0 }, { 0 }, { 0 } };
2321
+ __Pyx_memviewslice __pyx_v_connect = { 0, 0, { 0 }, { 0 }, { 0 } };
2322
+ __Pyx_memviewslice __pyx_v_fields_to_render = { 0, 0, { 0 }, { 0 }, { 0 } };
2323
+ PyObject *__pyx_v_cam_data = 0;
2324
+ __Pyx_memviewslice __pyx_v_field_disp = { 0, 0, { 0 }, { 0 }, { 0 } };
2325
+ #if !CYTHON_METH_FASTCALL
2326
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
2327
+ #endif
2328
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
2329
+ PyObject *__pyx_r = 0;
2330
+ <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
2331
+ <span class='refnanny'>__Pyx_RefNannySetupContext</span>("raster_deform_frame (wrapper)", 0);
2332
+ #if !CYTHON_METH_FASTCALL
2333
+ #if CYTHON_ASSUME_SAFE_SIZE
2334
+ __pyx_nargs = <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args);
2335
+ #else
2336
+ __pyx_nargs = <span class='py_c_api'>PyTuple_Size</span>(__pyx_args); if (unlikely(__pyx_nargs &lt; 0)) return NULL;
2337
+ #endif
2338
+ #endif
2339
+ __pyx_kwvalues = <span class='pyx_c_api'>__Pyx_KwValues_FASTCALL</span>(__pyx_args, __pyx_nargs);
2340
+ {
2341
+ PyObject ** const __pyx_pyargnames[] = {&amp;__pyx_mstate_global-&gt;__pyx_n_u_coords,&amp;__pyx_mstate_global-&gt;__pyx_n_u_connect,&amp;__pyx_mstate_global-&gt;__pyx_n_u_fields_to_render,&amp;__pyx_mstate_global-&gt;__pyx_n_u_cam_data,&amp;__pyx_mstate_global-&gt;__pyx_n_u_field_disp,0};
2342
+ PyObject* values[5] = {0,0,0,0,0};
2343
+ const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? <span class='pyx_c_api'>__Pyx_NumKwargs_FASTCALL</span>(__pyx_kwds) : 0;
2344
+ if (unlikely(__pyx_kwds_len) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L3_error)</span>
2345
+ if (__pyx_kwds_len &gt; 0) {
2346
+ switch (__pyx_nargs) {
2347
+ case 5:
2348
+ values[4] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 4);
2349
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[4])) <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L3_error)</span>
2350
+ CYTHON_FALLTHROUGH;
2351
+ case 4:
2352
+ values[3] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 3);
2353
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[3])) <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L3_error)</span>
2354
+ CYTHON_FALLTHROUGH;
2355
+ case 3:
2356
+ values[2] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 2);
2357
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[2])) <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L3_error)</span>
2358
+ CYTHON_FALLTHROUGH;
2359
+ case 2:
2360
+ values[1] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 1);
2361
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[1])) <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L3_error)</span>
2362
+ CYTHON_FALLTHROUGH;
2363
+ case 1:
2364
+ values[0] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 0);
2365
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[0])) <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L3_error)</span>
2366
+ CYTHON_FALLTHROUGH;
2367
+ case 0: break;
2368
+ default: goto __pyx_L5_argtuple_error;
2369
+ }
2370
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
2371
+ if (<span class='pyx_c_api'>__Pyx_ParseKeywords</span>(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "raster_deform_frame", 0) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L3_error)</span>
2372
+ for (Py_ssize_t i = __pyx_nargs; i &lt; 5; i++) {
2373
+ if (unlikely(!values[i])) { <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("raster_deform_frame", 1, 5, 5, i); <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L3_error)</span> }
2374
+ }
2375
+ } else if (unlikely(__pyx_nargs != 5)) {
2376
+ goto __pyx_L5_argtuple_error;
2377
+ } else {
2378
+ values[0] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 0);
2379
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[0])) <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L3_error)</span>
2380
+ values[1] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 1);
2381
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[1])) <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L3_error)</span>
2382
+ values[2] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 2);
2383
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[2])) <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L3_error)</span>
2384
+ values[3] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 3);
2385
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[3])) <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L3_error)</span>
2386
+ values[4] = <span class='pyx_c_api'>__Pyx_ArgRef_FASTCALL</span>(__pyx_args, 4);
2387
+ if (!CYTHON_ASSUME_SAFE_MACROS &amp;&amp; unlikely(!values[4])) <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L3_error)</span>
2388
+ }
2389
+ __pyx_v_coords = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_dsds_double</span>(values[0], PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_v_coords.memview)) __PYX_ERR(0, 409, __pyx_L3_error)</span>
2390
+ __pyx_v_connect = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_dsds_size_t</span>(values[1], PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_v_connect.memview)) __PYX_ERR(0, 410, __pyx_L3_error)</span>
2391
+ __pyx_v_fields_to_render = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_dsds_double</span>(values[2], PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_v_fields_to_render.memview)) __PYX_ERR(0, 411, __pyx_L3_error)</span>
2392
+ __pyx_v_cam_data = values[3];
2393
+ __pyx_v_field_disp = <span class='pyx_c_api'>__Pyx_PyObject_to_MemoryviewSlice_dsds_double</span>(values[4], PyBUF_WRITABLE);<span class='error_goto'> if (unlikely(!__pyx_v_field_disp.memview)) __PYX_ERR(0, 413, __pyx_L3_error)</span>
2394
+ }
2395
+ goto __pyx_L6_skip;
2396
+ __pyx_L5_argtuple_error:;
2397
+ <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("raster_deform_frame", 1, 5, 5, __pyx_nargs); <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L3_error)</span>
2398
+ __pyx_L6_skip:;
2399
+ goto __pyx_L4_argument_unpacking_done;
2400
+ __pyx_L3_error:;
2401
+ for (Py_ssize_t __pyx_temp=0; __pyx_temp &lt; (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
2402
+ Py_XDECREF(values[__pyx_temp]);
2403
+ }
2404
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_coords, 1);
2405
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_connect, 1);
2406
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_fields_to_render, 1);
2407
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_field_disp, 1);
2408
+ <span class='pyx_c_api'>__Pyx_AddTraceback</span>("pyvale.sensorsim.cython.rastercyth.raster_deform_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
2409
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
2410
+ return NULL;
2411
+ __pyx_L4_argument_unpacking_done:;
2412
+ if (unlikely(((PyObject *)__pyx_v_coords.memview) == Py_None)) {
2413
+ <span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Argument '%.200s' must not be None", "coords"); <span class='error_goto'>__PYX_ERR(0, 409, __pyx_L1_error)</span>
2414
+ }
2415
+ if (unlikely(((PyObject *)__pyx_v_connect.memview) == Py_None)) {
2416
+ <span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Argument '%.200s' must not be None", "connect"); <span class='error_goto'>__PYX_ERR(0, 410, __pyx_L1_error)</span>
2417
+ }
2418
+ if (unlikely(((PyObject *)__pyx_v_fields_to_render.memview) == Py_None)) {
2419
+ <span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Argument '%.200s' must not be None", "fields_to_render"); <span class='error_goto'>__PYX_ERR(0, 411, __pyx_L1_error)</span>
2420
+ }
2421
+ if (unlikely(((PyObject *)__pyx_v_field_disp.memview) == Py_None)) {
2422
+ <span class='py_c_api'>PyErr_Format</span>(PyExc_TypeError, "Argument '%.200s' must not be None", "field_disp"); <span class='error_goto'>__PYX_ERR(0, 413, __pyx_L1_error)</span>
2423
+ }
2424
+ __pyx_r = __pyx_pf_6pyvale_9sensorsim_6cython_10rastercyth_4raster_deform_frame(__pyx_self, __pyx_v_coords, __pyx_v_connect, __pyx_v_fields_to_render, __pyx_v_cam_data, __pyx_v_field_disp);
2425
+ int __pyx_lineno = 0;
2426
+ const char *__pyx_filename = NULL;
2427
+ int __pyx_clineno = 0;
2428
+
2429
+ /* function exit code */
2430
+ goto __pyx_L0;
2431
+ __pyx_L1_error:;
2432
+ __pyx_r = NULL;
2433
+ for (Py_ssize_t __pyx_temp=0; __pyx_temp &lt; (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
2434
+ Py_XDECREF(values[__pyx_temp]);
2435
+ }
2436
+ goto __pyx_L7_cleaned_up;
2437
+ __pyx_L0:;
2438
+ for (Py_ssize_t __pyx_temp=0; __pyx_temp &lt; (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
2439
+ Py_XDECREF(values[__pyx_temp]);
2440
+ }
2441
+ __pyx_L7_cleaned_up:;
2442
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_coords, 1);
2443
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_connect, 1);
2444
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_fields_to_render, 1);
2445
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_v_field_disp, 1);
2446
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
2447
+ return __pyx_r;
2448
+ }
2449
+
2450
+ static PyObject *__pyx_pf_6pyvale_9sensorsim_6cython_10rastercyth_4raster_deform_frame(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_coords, __Pyx_memviewslice __pyx_v_connect, __Pyx_memviewslice __pyx_v_fields_to_render, PyObject *__pyx_v_cam_data, __Pyx_memviewslice __pyx_v_field_disp) {
2451
+ PyObject *__pyx_r = NULL;
2452
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
2453
+ if (unlikely(!__pyx_v_coords.memview)) { <span class='pyx_c_api'>__Pyx_RaiseUnboundLocalError</span>("coords"); <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L1_error)</span> }
2454
+ if (unlikely(((PyObject *) __pyx_v_coords.memview) == Py_None)) {
2455
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2456
+ <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L1_error)</span>
2457
+ }
2458
+ if (unlikely(!__pyx_v_connect.memview)) { <span class='pyx_c_api'>__Pyx_RaiseUnboundLocalError</span>("connect"); <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L1_error)</span> }
2459
+ if (unlikely(((PyObject *) __pyx_v_connect.memview) == Py_None)) {
2460
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2461
+ <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L1_error)</span>
2462
+ }
2463
+ if (unlikely(!__pyx_v_fields_to_render.memview)) { <span class='pyx_c_api'>__Pyx_RaiseUnboundLocalError</span>("fields_to_render"); <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L1_error)</span> }
2464
+ if (unlikely(((PyObject *) __pyx_v_fields_to_render.memview) == Py_None)) {
2465
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2466
+ <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L1_error)</span>
2467
+ }
2468
+ if (unlikely(!__pyx_v_field_disp.memview)) { <span class='pyx_c_api'>__Pyx_RaiseUnboundLocalError</span>("field_disp"); <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L1_error)</span> }
2469
+ if (unlikely(((PyObject *) __pyx_v_field_disp.memview) == Py_None)) {
2470
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2471
+ <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L1_error)</span>
2472
+ }
2473
+ __pyx_t_1 = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_raster_deform_frame(__pyx_v_coords, __pyx_v_connect, __pyx_v_fields_to_render, __pyx_v_cam_data, __pyx_v_field_disp, 1);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 405, __pyx_L1_error)</span>
2474
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
2475
+ __pyx_r = __pyx_t_1;
2476
+ __pyx_t_1 = 0;
2477
+ goto __pyx_L0;
2478
+
2479
+ /* function exit code */
2480
+ __pyx_L1_error:;
2481
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
2482
+ <span class='pyx_c_api'>__Pyx_AddTraceback</span>("pyvale.sensorsim.cython.rastercyth.raster_deform_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
2483
+ __pyx_r = NULL;
2484
+ __pyx_L0:;
2485
+ <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
2486
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
2487
+ return __pyx_r;
2488
+ }
2489
+ /* … */
2490
+ __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyDict_NewPresized</span>(5);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 405, __pyx_L1_error)</span>
2491
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
2492
+ if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_t_4, __pyx_mstate_global-&gt;__pyx_n_u_coords, __pyx_mstate_global-&gt;__pyx_kp_u_cython_double) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L1_error)</span>
2493
+ if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_t_4, __pyx_mstate_global-&gt;__pyx_n_u_connect, __pyx_mstate_global-&gt;__pyx_kp_u_cython_size_t) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L1_error)</span>
2494
+ if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_t_4, __pyx_mstate_global-&gt;__pyx_n_u_fields_to_render, __pyx_mstate_global-&gt;__pyx_kp_u_cython_double) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L1_error)</span>
2495
+ if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_t_4, __pyx_mstate_global-&gt;__pyx_n_u_cam_data, __pyx_mstate_global-&gt;__pyx_n_u_CameraData) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L1_error)</span>
2496
+ if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_t_4, __pyx_mstate_global-&gt;__pyx_n_u_field_disp, __pyx_mstate_global-&gt;__pyx_kp_u_cython_double) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L1_error)</span>
2497
+ __pyx_t_5 = <span class='pyx_c_api'>__Pyx_CyFunction_New</span>(&amp;__pyx_mdef_6pyvale_9sensorsim_6cython_10rastercyth_5raster_deform_frame, 0, __pyx_mstate_global-&gt;__pyx_n_u_raster_deform_frame, NULL, __pyx_mstate_global-&gt;__pyx_n_u_pyvale_sensorsim_cython_rastercy, __pyx_mstate_global-&gt;__pyx_d, ((PyObject *)__pyx_mstate_global-&gt;__pyx_codeobj_tab[2]));<span class='error_goto'> if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 405, __pyx_L1_error)</span>
2498
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_5);
2499
+ #if CYTHON_COMPILING_IN_CPYTHON &amp;&amp; PY_VERSION_HEX &gt;= 0x030E0000
2500
+ <span class='py_c_api'>PyUnstable_Object_EnableDeferredRefcount</span>(__pyx_t_5);
2501
+ #endif
2502
+ <span class='pyx_c_api'>__Pyx_CyFunction_SetAnnotationsDict</span>(__pyx_t_5, __pyx_t_4);
2503
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
2504
+ if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_mstate_global-&gt;__pyx_d, __pyx_mstate_global-&gt;__pyx_n_u_raster_deform_frame, __pyx_t_5) &lt; (0)) <span class='error_goto'>__PYX_ERR(0, 405, __pyx_L1_error)</span>
2505
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_5); __pyx_t_5 = 0;
2506
+ </pre><pre class="cython line score-0">&#xA0;<span class="">406</span>: @cython.boundscheck(False) # Turn off array bounds checking</pre>
2507
+ <pre class="cython line score-0">&#xA0;<span class="">407</span>: @cython.wraparound(False) # Turn off negative indexing</pre>
2508
+ <pre class="cython line score-0">&#xA0;<span class="">408</span>: @cython.cdivision(True) # Turn off divide by zero check</pre>
2509
+ <pre class="cython line score-0">&#xA0;<span class="">409</span>: def raster_deform_frame(coords: cython.double[:,:],</pre>
2510
+ <pre class="cython line score-0">&#xA0;<span class="">410</span>: connect: cython.size_t[:,:],</pre>
2511
+ <pre class="cython line score-0">&#xA0;<span class="">411</span>: fields_to_render: cython.double[:,:],</pre>
2512
+ <pre class="cython line score-0">&#xA0;<span class="">412</span>: cam_data: CameraData,</pre>
2513
+ <pre class="cython line score-0">&#xA0;<span class="">413</span>: field_disp: cython.double[:,:],</pre>
2514
+ <pre class="cython line score-0">&#xA0;<span class="">414</span>: ) -&gt; tuple[np.ndarray,np.ndarray,int]:</pre>
2515
+ <pre class="cython line score-0">&#xA0;<span class="">415</span>: pass</pre>
2516
+ <pre class="cython line score-0">&#xA0;<span class="">416</span>: </pre>
2517
+ <pre class="cython line score-0">&#xA0;<span class="">417</span>: #///////////////////////////////////////////////////////////////////////////////</pre>
2518
+ <pre class="cython line score-0">&#xA0;<span class="">418</span>: #@cython.nogil</pre>
2519
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">419</span>: @cython.cfunc # python+C or cython.cfunc for C only</pre>
2520
+ <pre class='cython code score-0 '>static size_t __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth__raster_frame(__Pyx_memviewslice __pyx_v_coords, __Pyx_memviewslice __pyx_v_connect, __Pyx_memviewslice __pyx_v_fields_to_render, __Pyx_memviewslice __pyx_v_world_to_cam_mat, __Pyx_memviewslice __pyx_v_num_pixels, __Pyx_memviewslice __pyx_v_image_dims, double __pyx_v_image_dist, int __pyx_v_sub_samp, __Pyx_memviewslice __pyx_v_image_buff_avg, __Pyx_memviewslice __pyx_v_depth_buff_avg, __Pyx_memviewslice __pyx_v_image_buff_subpx, __Pyx_memviewslice __pyx_v_depth_buff_subpx, __Pyx_memviewslice __pyx_v_nodes_raster_buff, __Pyx_memviewslice __pyx_v_field_raster_buff, __Pyx_memviewslice __pyx_v_px_coord_buff, __Pyx_memviewslice __pyx_v_weights_buff) {
2521
+ size_t __pyx_v_xx;
2522
+ size_t __pyx_v_yy;
2523
+ size_t __pyx_v_zz;
2524
+ size_t __pyx_v_elem_count;
2525
+ size_t __pyx_v_nodes_per_elem;
2526
+ size_t __pyx_v_fields_num;
2527
+ double __pyx_v_tol;
2528
+ size_t __pyx_v_elems_in_image;
2529
+ double __pyx_v_coord_step;
2530
+ double __pyx_v_coord_offset;
2531
+ size_t __pyx_v_ee;
2532
+ size_t __pyx_v_nn;
2533
+ CYTHON_UNUSED size_t __pyx_v_ii;
2534
+ CYTHON_UNUSED size_t __pyx_v_jj;
2535
+ size_t __pyx_v_ww;
2536
+ size_t __pyx_v_ff;
2537
+ double __pyx_v_elem_area;
2538
+ double __pyx_v_x_min;
2539
+ double __pyx_v_x_max;
2540
+ double __pyx_v_y_min;
2541
+ double __pyx_v_y_max;
2542
+ size_t __pyx_v_xi_min;
2543
+ size_t __pyx_v_xi_max;
2544
+ size_t __pyx_v_yi_min;
2545
+ size_t __pyx_v_yi_max;
2546
+ size_t __pyx_v_num_bound_x;
2547
+ size_t __pyx_v_num_bound_y;
2548
+ double __pyx_v_bound_coord_x;
2549
+ double __pyx_v_bound_coord_y;
2550
+ size_t __pyx_v_bound_ind_x;
2551
+ size_t __pyx_v_bound_ind_y;
2552
+ double __pyx_v_weight_dot_nodes;
2553
+ double __pyx_v_px_coord_z;
2554
+ double __pyx_v_px_field;
2555
+ size_t __pyx_r;
2556
+ </pre><pre class="cython line score-0">&#xA0;<span class="">420</span>: @cython.boundscheck(False) # Turn off array bounds checking</pre>
2557
+ <pre class="cython line score-0">&#xA0;<span class="">421</span>: @cython.wraparound(False) # Turn off negative indexing</pre>
2558
+ <pre class="cython line score-0">&#xA0;<span class="">422</span>: @cython.cdivision(True) # Turn off divide by zero check</pre>
2559
+ <pre class="cython line score-0">&#xA0;<span class="">423</span>: @cython.exceptval(check=False) # Turn off exceptions</pre>
2560
+ <pre class="cython line score-0">&#xA0;<span class="">424</span>: def _raster_frame(coords: cython.double[:,:],</pre>
2561
+ <pre class="cython line score-0">&#xA0;<span class="">425</span>: connect: cython.size_t[:,:],</pre>
2562
+ <pre class="cython line score-0">&#xA0;<span class="">426</span>: fields_to_render: cython.double[:,:],</pre>
2563
+ <pre class="cython line score-0">&#xA0;<span class="">427</span>: world_to_cam_mat: cython.double[:,:],</pre>
2564
+ <pre class="cython line score-0">&#xA0;<span class="">428</span>: num_pixels: cython.int[:],</pre>
2565
+ <pre class="cython line score-0">&#xA0;<span class="">429</span>: image_dims: cython.double[:],</pre>
2566
+ <pre class="cython line score-0">&#xA0;<span class="">430</span>: image_dist: cython.double,</pre>
2567
+ <pre class="cython line score-0">&#xA0;<span class="">431</span>: sub_samp: cython.int,</pre>
2568
+ <pre class="cython line score-0">&#xA0;<span class="">432</span>: # From here these are memory buffers that will be written into</pre>
2569
+ <pre class="cython line score-0">&#xA0;<span class="">433</span>: image_buff_avg: cython.double[:,:,:],</pre>
2570
+ <pre class="cython line score-0">&#xA0;<span class="">434</span>: depth_buff_avg: cython.double[:,:],</pre>
2571
+ <pre class="cython line score-0">&#xA0;<span class="">435</span>: image_buff_subpx: cython.double[:,:,:],</pre>
2572
+ <pre class="cython line score-0">&#xA0;<span class="">436</span>: depth_buff_subpx: cython.double[:,:],</pre>
2573
+ <pre class="cython line score-0">&#xA0;<span class="">437</span>: nodes_raster_buff: cython.double[:,:],</pre>
2574
+ <pre class="cython line score-0">&#xA0;<span class="">438</span>: field_raster_buff: cython.double[:],</pre>
2575
+ <pre class="cython line score-0">&#xA0;<span class="">439</span>: px_coord_buff: cython.double[:],</pre>
2576
+ <pre class="cython line score-0">&#xA0;<span class="">440</span>: weights_buff: cython.double[:],</pre>
2577
+ <pre class="cython line score-0">&#xA0;<span class="">441</span>: ) -&gt; cython.size_t:</pre>
2578
+ <pre class="cython line score-0">&#xA0;<span class="">442</span>: """Rasters a single frame and all associated fields into the image and depth</pre>
2579
+ <pre class="cython line score-0">&#xA0;<span class="">443</span>: buffer provided as inputs to the function. This is a pure cython function</pre>
2580
+ <pre class="cython line score-0">&#xA0;<span class="">444</span>: with the GIL released for parallelisation. All fields (textures) are</pre>
2581
+ <pre class="cython line score-0">&#xA0;<span class="">445</span>: rendered in a sub-loop so that the depth buffer and inside/outside test is</pre>
2582
+ <pre class="cython line score-0">&#xA0;<span class="">446</span>: only performed once for all fields to be rendered.</pre>
2583
+ <pre class="cython line score-0">&#xA0;<span class="">447</span>: </pre>
2584
+ <pre class="cython line score-0">&#xA0;<span class="">448</span>: Parameters</pre>
2585
+ <pre class="cython line score-0">&#xA0;<span class="">449</span>: ----------</pre>
2586
+ <pre class="cython line score-0">&#xA0;<span class="">450</span>: coords : cython.double[:,:]</pre>
2587
+ <pre class="cython line score-0">&#xA0;<span class="">451</span>: Input. shape=(num_nodes,coords[x,y,z,w])</pre>
2588
+ <pre class="cython line score-0">&#xA0;<span class="">452</span>: connect : cython.size_t[:,:]</pre>
2589
+ <pre class="cython line score-0">&#xA0;<span class="">453</span>: Input. shape=(num_elems,nodes_per_elem)</pre>
2590
+ <pre class="cython line score-0">&#xA0;<span class="">454</span>: fields_to_render : cython.double[:,:]</pre>
2591
+ <pre class="cython line score-0">&#xA0;<span class="">455</span>: Input. shape=(num_nodes,num_fields)</pre>
2592
+ <pre class="cython line score-0">&#xA0;<span class="">456</span>: world_to_cam_mat : cython.double[:,:]</pre>
2593
+ <pre class="cython line score-0">&#xA0;<span class="">457</span>: Input. Homogeneous coordinate transformation matrix from world to camera</pre>
2594
+ <pre class="cython line score-0">&#xA0;<span class="">458</span>: coordinates. shape=(4,4).</pre>
2595
+ <pre class="cython line score-0">&#xA0;<span class="">459</span>: num_pixels : cython.int[:]</pre>
2596
+ <pre class="cython line score-0">&#xA0;<span class="">460</span>: Input. shape=(2 [num_px_x,num_px_y],)</pre>
2597
+ <pre class="cython line score-0">&#xA0;<span class="">461</span>: image_dims : cython.double[:]</pre>
2598
+ <pre class="cython line score-0">&#xA0;<span class="">462</span>: Input. shape=(2 [fov_size_x,fov_size_y],)</pre>
2599
+ <pre class="cython line score-0">&#xA0;<span class="">463</span>: image_dist : cython.double</pre>
2600
+ <pre class="cython line score-0">&#xA0;<span class="">464</span>: Input.</pre>
2601
+ <pre class="cython line score-0">&#xA0;<span class="">465</span>: sub_samp : cython.int</pre>
2602
+ <pre class="cython line score-0">&#xA0;<span class="">466</span>: Number of subsamples per pixel for anti-aliasing.</pre>
2603
+ <pre class="cython line score-0">&#xA0;<span class="">467</span>: image_buff_avg : cython.double[:,:,:]</pre>
2604
+ <pre class="cython line score-0">&#xA0;<span class="">468</span>: Output buffer. shape=(num_px_y,num_px_x,num_fields)</pre>
2605
+ <pre class="cython line score-0">&#xA0;<span class="">469</span>: depth_buff_avg : cython.double[:,:]</pre>
2606
+ <pre class="cython line score-0">&#xA0;<span class="">470</span>: Output buffer. shape=(num_px_y,num_px_x)</pre>
2607
+ <pre class="cython line score-0">&#xA0;<span class="">471</span>: image_buff_subpx : cython.double[:,:,:]</pre>
2608
+ <pre class="cython line score-0">&#xA0;<span class="">472</span>: Processing buffer (output). shape=(num_subpx_y,num_subpx_x,num_fields)</pre>
2609
+ <pre class="cython line score-0">&#xA0;<span class="">473</span>: depth_buff_subpx : cython.double[:,:]</pre>
2610
+ <pre class="cython line score-0">&#xA0;<span class="">474</span>: Processing buffer (output). shape=(num_subpx_y,num_subpx_x)</pre>
2611
+ <pre class="cython line score-0">&#xA0;<span class="">475</span>: nodes_raster_buff : cython.double[:,:]</pre>
2612
+ <pre class="cython line score-0">&#xA0;<span class="">476</span>: Processing buffer. shape=(nodes_per_elem, 4 coord[x,y,z,w])</pre>
2613
+ <pre class="cython line score-0">&#xA0;<span class="">477</span>: field_raster_buff : cython.double[:]</pre>
2614
+ <pre class="cython line score-0">&#xA0;<span class="">478</span>: Processing buffer. shape=(nodes_per_elem,)</pre>
2615
+ <pre class="cython line score-0">&#xA0;<span class="">479</span>: px_coord_buff : cython.double[:]</pre>
2616
+ <pre class="cython line score-0">&#xA0;<span class="">480</span>: Processing buffer. shape=(2,)</pre>
2617
+ <pre class="cython line score-0">&#xA0;<span class="">481</span>: weights_buff : cython.double[:]</pre>
2618
+ <pre class="cython line score-0">&#xA0;<span class="">482</span>: Processing buffer. shape=(nodes_per_elem,)</pre>
2619
+ <pre class="cython line score-0">&#xA0;<span class="">483</span>: </pre>
2620
+ <pre class="cython line score-0">&#xA0;<span class="">484</span>: Returns</pre>
2621
+ <pre class="cython line score-0">&#xA0;<span class="">485</span>: -------</pre>
2622
+ <pre class="cython line score-0">&#xA0;<span class="">486</span>: cython.size_t</pre>
2623
+ <pre class="cython line score-0">&#xA0;<span class="">487</span>: Number of rendered elements after backface culling and cropping.</pre>
2624
+ <pre class="cython line score-0">&#xA0;<span class="">488</span>: """</pre>
2625
+ <pre class="cython line score-0">&#xA0;<span class="">489</span>: </pre>
2626
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">490</span>: xx: cython.size_t = 0</pre>
2627
+ <pre class='cython code score-0 '> __pyx_v_xx = 0;
2628
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">491</span>: yy: cython.size_t = 1</pre>
2629
+ <pre class='cython code score-0 '> __pyx_v_yy = 1;
2630
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">492</span>: zz: cython.size_t = 2</pre>
2631
+ <pre class='cython code score-0 '> __pyx_v_zz = 2;
2632
+ </pre><pre class="cython line score-0">&#xA0;<span class="">493</span>: </pre>
2633
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">494</span>: elem_count: cython.size_t = connect.shape[0]</pre>
2634
+ <pre class='cython code score-0 '> __pyx_v_elem_count = (__pyx_v_connect.shape[0]);
2635
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">495</span>: nodes_per_elem: cython.size_t = connect.shape[1]</pre>
2636
+ <pre class='cython code score-0 '> __pyx_v_nodes_per_elem = (__pyx_v_connect.shape[1]);
2637
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">496</span>: fields_num: cython.size_t = fields_to_render.shape[1]</pre>
2638
+ <pre class='cython code score-0 '> __pyx_v_fields_num = (__pyx_v_fields_to_render.shape[1]);
2639
+ </pre><pre class="cython line score-0">&#xA0;<span class="">497</span>: </pre>
2640
+ <pre class="cython line score-0">&#xA0;<span class="">498</span>: # tolerance for floating point zero dot product</pre>
2641
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">499</span>: tol: cython.double = 1e-12</pre>
2642
+ <pre class='cython code score-0 '> __pyx_v_tol = 1e-12;
2643
+ </pre><pre class="cython line score-0">&#xA0;<span class="">500</span>: </pre>
2644
+ <pre class="cython line score-0">&#xA0;<span class="">501</span>: #elem_count: cython.size_t = 1</pre>
2645
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">502</span>: elems_in_image: cython.size_t = 0</pre>
2646
+ <pre class='cython code score-0 '> __pyx_v_elems_in_image = 0;
2647
+ </pre><pre class="cython line score-0">&#xA0;<span class="">503</span>: </pre>
2648
+ <pre class="cython line score-0">&#xA0;<span class="">504</span>: # Lifted constants</pre>
2649
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">505</span>: coord_step: cython.double = 1.0/float(sub_samp)</pre>
2650
+ <pre class='cython code score-0 '> __pyx_v_coord_step = (1.0 / ((double)__pyx_v_sub_samp));
2651
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">506</span>: coord_offset: cython.double = 1.0/(2.0*float(sub_samp))</pre>
2652
+ <pre class='cython code score-0 '> __pyx_v_coord_offset = (1.0 / (2.0 * ((double)__pyx_v_sub_samp)));
2653
+ </pre><pre class="cython line score-0">&#xA0;<span class="">507</span>: </pre>
2654
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">508</span>: ee: cython.size_t = 0</pre>
2655
+ <pre class='cython code score-0 '> __pyx_v_ee = 0;
2656
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">509</span>: nn: cython.size_t = 0</pre>
2657
+ <pre class='cython code score-0 '> __pyx_v_nn = 0;
2658
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">510</span>: ii: cython.size_t = 0</pre>
2659
+ <pre class='cython code score-0 '> __pyx_v_ii = 0;
2660
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">511</span>: jj: cython.size_t = 0</pre>
2661
+ <pre class='cython code score-0 '> __pyx_v_jj = 0;
2662
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">512</span>: ww: cython.size_t = 0</pre>
2663
+ <pre class='cython code score-0 '> __pyx_v_ww = 0;
2664
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">513</span>: ff: cython.size_t = 0</pre>
2665
+ <pre class='cython code score-0 '> __pyx_v_ff = 0;
2666
+ </pre><pre class="cython line score-0">&#xA0;<span class="">514</span>: </pre>
2667
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">515</span>: for ee in range(elem_count):</pre>
2668
+ <pre class='cython code score-0 '> __pyx_t_1 = __pyx_v_elem_count;
2669
+ __pyx_t_2 = __pyx_t_1;
2670
+ for (__pyx_t_3 = 0; __pyx_t_3 &lt; __pyx_t_2; __pyx_t_3+=1) {
2671
+ __pyx_v_ee = __pyx_t_3;
2672
+ </pre><pre class="cython line score-0">&#xA0;<span class="">516</span>: </pre>
2673
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">517</span>: for nn in range(nodes_per_elem):</pre>
2674
+ <pre class='cython code score-0 '> __pyx_t_4 = __pyx_v_nodes_per_elem;
2675
+ __pyx_t_5 = __pyx_t_4;
2676
+ for (__pyx_t_6 = 0; __pyx_t_6 &lt; __pyx_t_5; __pyx_t_6+=1) {
2677
+ __pyx_v_nn = __pyx_t_6;
2678
+ </pre><pre class="cython line score-0">&#xA0;<span class="">518</span>: # shape=(nodes_per_elem, coord[X,Y,Z,W])</pre>
2679
+ <pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">519</span>: nodes_raster_buff[nn,:] = world_to_raster_coords(coords[connect[ee,nn],:],</pre>
2680
+ <pre class='cython code score-5 '> __pyx_t_7 = __pyx_v_ee;
2681
+ __pyx_t_8 = __pyx_v_nn;
2682
+ __pyx_t_9.data = __pyx_v_coords.data;
2683
+ __pyx_t_9.memview = __pyx_v_coords.memview;
2684
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_9, 1);
2685
+ {
2686
+ Py_ssize_t __pyx_tmp_idx = (*((size_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_connect.data + __pyx_t_7 * __pyx_v_connect.strides[0]) ) + __pyx_t_8 * __pyx_v_connect.strides[1]) )));
2687
+ Py_ssize_t __pyx_tmp_stride = __pyx_v_coords.strides[0];
2688
+ __pyx_t_9.data += __pyx_tmp_idx * __pyx_tmp_stride;
2689
+ }
2690
+
2691
+ __pyx_t_9.shape[0] = __pyx_v_coords.shape[1];
2692
+ __pyx_t_9.strides[0] = __pyx_v_coords.strides[1];
2693
+ __pyx_t_9.suboffsets[0] = -1;
2694
+
2695
+ if (unlikely(((PyObject *) __pyx_t_9.memview) == Py_None)) {
2696
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2697
+ <span class='error_goto'>__PYX_ERR(0, 519, __pyx_L1_error)</span>
2698
+ }
2699
+ /* … */
2700
+ __pyx_t_11 = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_world_to_raster_coords(__pyx_t_9, __pyx_v_world_to_cam_mat, __pyx_v_image_dist, __pyx_v_image_dims, __pyx_v_num_pixels, __pyx_t_10);<span class='error_goto'> if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 519, __pyx_L1_error)</span>
2701
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_9, 1);
2702
+ __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL;
2703
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_10, 1);
2704
+ __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL;
2705
+ __pyx_t_10.data = __pyx_v_nodes_raster_buff.data;
2706
+ __pyx_t_10.memview = __pyx_v_nodes_raster_buff.memview;
2707
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_10, 1);
2708
+ {
2709
+ Py_ssize_t __pyx_tmp_idx = __pyx_v_nn;
2710
+ Py_ssize_t __pyx_tmp_stride = __pyx_v_nodes_raster_buff.strides[0];
2711
+ __pyx_t_10.data += __pyx_tmp_idx * __pyx_tmp_stride;
2712
+ }
2713
+
2714
+ __pyx_t_10.shape[0] = __pyx_v_nodes_raster_buff.shape[1];
2715
+ __pyx_t_10.strides[0] = __pyx_v_nodes_raster_buff.strides[1];
2716
+ __pyx_t_10.suboffsets[0] = -1;
2717
+
2718
+ if (unlikely((__pyx_memoryview_copy_contents(__pyx_t_11, __pyx_t_10, 1, 1, 0) &lt; 0))) <span class='error_goto'>__PYX_ERR(0, 519, __pyx_L1_error)</span>
2719
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_10, 1);
2720
+ __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL;
2721
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_11, 1);
2722
+ __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
2723
+ }
2724
+ </pre><pre class="cython line score-0">&#xA0;<span class="">520</span>: world_to_cam_mat,</pre>
2725
+ <pre class="cython line score-0">&#xA0;<span class="">521</span>: image_dist,</pre>
2726
+ <pre class="cython line score-0">&#xA0;<span class="">522</span>: image_dims,</pre>
2727
+ <pre class="cython line score-0">&#xA0;<span class="">523</span>: num_pixels,</pre>
2728
+ <pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">524</span>: nodes_raster_buff[nn,:])</pre>
2729
+ <pre class='cython code score-5 '> __pyx_t_10.data = __pyx_v_nodes_raster_buff.data;
2730
+ __pyx_t_10.memview = __pyx_v_nodes_raster_buff.memview;
2731
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_10, 1);
2732
+ {
2733
+ Py_ssize_t __pyx_tmp_idx = __pyx_v_nn;
2734
+ Py_ssize_t __pyx_tmp_stride = __pyx_v_nodes_raster_buff.strides[0];
2735
+ __pyx_t_10.data += __pyx_tmp_idx * __pyx_tmp_stride;
2736
+ }
2737
+
2738
+ __pyx_t_10.shape[0] = __pyx_v_nodes_raster_buff.shape[1];
2739
+ __pyx_t_10.strides[0] = __pyx_v_nodes_raster_buff.strides[1];
2740
+ __pyx_t_10.suboffsets[0] = -1;
2741
+
2742
+ if (unlikely(((PyObject *) __pyx_t_10.memview) == Py_None)) {
2743
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2744
+ <span class='error_goto'>__PYX_ERR(0, 524, __pyx_L1_error)</span>
2745
+ }
2746
+ </pre><pre class="cython line score-0">&#xA0;<span class="">525</span>: </pre>
2747
+ <pre class="cython line score-0">&#xA0;<span class="">526</span>: </pre>
2748
+ <pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">527</span>: elem_area: cython.double = edge_function(nodes_raster_buff[0,:],</pre>
2749
+ <pre class='cython code score-5 '> __pyx_t_11.data = __pyx_v_nodes_raster_buff.data;
2750
+ __pyx_t_11.memview = __pyx_v_nodes_raster_buff.memview;
2751
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_11, 1);
2752
+ {
2753
+ Py_ssize_t __pyx_tmp_idx = 0;
2754
+ Py_ssize_t __pyx_tmp_stride = __pyx_v_nodes_raster_buff.strides[0];
2755
+ __pyx_t_11.data += __pyx_tmp_idx * __pyx_tmp_stride;
2756
+ }
2757
+
2758
+ __pyx_t_11.shape[0] = __pyx_v_nodes_raster_buff.shape[1];
2759
+ __pyx_t_11.strides[0] = __pyx_v_nodes_raster_buff.strides[1];
2760
+ __pyx_t_11.suboffsets[0] = -1;
2761
+
2762
+ if (unlikely(((PyObject *) __pyx_t_11.memview) == Py_None)) {
2763
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2764
+ <span class='error_goto'>__PYX_ERR(0, 527, __pyx_L1_error)</span>
2765
+ }
2766
+ /* … */
2767
+ __pyx_v_elem_area = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_edge_function(__pyx_t_11, __pyx_t_10, __pyx_t_9);
2768
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_11, 1);
2769
+ __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
2770
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_10, 1);
2771
+ __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL;
2772
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_9, 1);
2773
+ __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL;
2774
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">528</span>: nodes_raster_buff[1,:],</pre>
2775
+ <pre class='cython code score-5 '> __pyx_t_10.data = __pyx_v_nodes_raster_buff.data;
2776
+ __pyx_t_10.memview = __pyx_v_nodes_raster_buff.memview;
2777
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_10, 1);
2778
+ {
2779
+ Py_ssize_t __pyx_tmp_idx = 1;
2780
+ Py_ssize_t __pyx_tmp_stride = __pyx_v_nodes_raster_buff.strides[0];
2781
+ __pyx_t_10.data += __pyx_tmp_idx * __pyx_tmp_stride;
2782
+ }
2783
+
2784
+ __pyx_t_10.shape[0] = __pyx_v_nodes_raster_buff.shape[1];
2785
+ __pyx_t_10.strides[0] = __pyx_v_nodes_raster_buff.strides[1];
2786
+ __pyx_t_10.suboffsets[0] = -1;
2787
+
2788
+ if (unlikely(((PyObject *) __pyx_t_10.memview) == Py_None)) {
2789
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2790
+ <span class='error_goto'>__PYX_ERR(0, 528, __pyx_L1_error)</span>
2791
+ }
2792
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">529</span>: nodes_raster_buff[2,:])</pre>
2793
+ <pre class='cython code score-5 '> __pyx_t_9.data = __pyx_v_nodes_raster_buff.data;
2794
+ __pyx_t_9.memview = __pyx_v_nodes_raster_buff.memview;
2795
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_9, 1);
2796
+ {
2797
+ Py_ssize_t __pyx_tmp_idx = 2;
2798
+ Py_ssize_t __pyx_tmp_stride = __pyx_v_nodes_raster_buff.strides[0];
2799
+ __pyx_t_9.data += __pyx_tmp_idx * __pyx_tmp_stride;
2800
+ }
2801
+
2802
+ __pyx_t_9.shape[0] = __pyx_v_nodes_raster_buff.shape[1];
2803
+ __pyx_t_9.strides[0] = __pyx_v_nodes_raster_buff.strides[1];
2804
+ __pyx_t_9.suboffsets[0] = -1;
2805
+
2806
+ if (unlikely(((PyObject *) __pyx_t_9.memview) == Py_None)) {
2807
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2808
+ <span class='error_goto'>__PYX_ERR(0, 529, __pyx_L1_error)</span>
2809
+ }
2810
+ </pre><pre class="cython line score-0">&#xA0;<span class="">530</span>: </pre>
2811
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">531</span>: if elem_area &lt; -tol: # Backface culling</pre>
2812
+ <pre class='cython code score-0 '> __pyx_t_12 = (__pyx_v_elem_area &lt; (-__pyx_v_tol));
2813
+ if (__pyx_t_12) {
2814
+ /* … */
2815
+ }
2816
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">532</span>: continue</pre>
2817
+ <pre class='cython code score-0 '> goto __pyx_L3_continue;
2818
+ </pre><pre class="cython line score-0">&#xA0;<span class="">533</span>: </pre>
2819
+ <pre class="cython line score-0">&#xA0;<span class="">534</span>: # print(f"{nodes_raster_buff[0,0]},{nodes_raster_buff[0,1]},{nodes_raster_buff[0,2]}")</pre>
2820
+ <pre class="cython line score-0">&#xA0;<span class="">535</span>: # print(f"{nodes_raster_buff[1,0]},{nodes_raster_buff[1,1]},{nodes_raster_buff[1,2]}")</pre>
2821
+ <pre class="cython line score-0">&#xA0;<span class="">536</span>: # print(f"{nodes_raster_buff[2,0]},{nodes_raster_buff[2,1]},{nodes_raster_buff[2,2]}")</pre>
2822
+ <pre class="cython line score-0">&#xA0;<span class="">537</span>: # print(f"{ee} ELEM AREA : {elem_area}")</pre>
2823
+ <pre class="cython line score-0">&#xA0;<span class="">538</span>: # print()</pre>
2824
+ <pre class="cython line score-0">&#xA0;<span class="">539</span>: </pre>
2825
+ <pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">540</span>: x_min: cython.double = vec_min_double(nodes_raster_buff[:,xx])</pre>
2826
+ <pre class='cython code score-5 '> __pyx_t_9.data = __pyx_v_nodes_raster_buff.data;
2827
+ __pyx_t_9.memview = __pyx_v_nodes_raster_buff.memview;
2828
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_9, 1);
2829
+ __pyx_t_9.shape[0] = __pyx_v_nodes_raster_buff.shape[0];
2830
+ __pyx_t_9.strides[0] = __pyx_v_nodes_raster_buff.strides[0];
2831
+ __pyx_t_9.suboffsets[0] = -1;
2832
+
2833
+ {
2834
+ Py_ssize_t __pyx_tmp_idx = __pyx_v_xx;
2835
+ Py_ssize_t __pyx_tmp_stride = __pyx_v_nodes_raster_buff.strides[1];
2836
+ __pyx_t_9.data += __pyx_tmp_idx * __pyx_tmp_stride;
2837
+ }
2838
+
2839
+ if (unlikely(((PyObject *) __pyx_t_9.memview) == Py_None)) {
2840
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2841
+ <span class='error_goto'>__PYX_ERR(0, 540, __pyx_L1_error)</span>
2842
+ }
2843
+ __pyx_v_x_min = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_vec_min_double(__pyx_t_9);
2844
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_9, 1);
2845
+ __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL;
2846
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">541</span>: x_max: cython.double = vec_max_double(nodes_raster_buff[:,xx])</pre>
2847
+ <pre class='cython code score-5 '> __pyx_t_9.data = __pyx_v_nodes_raster_buff.data;
2848
+ __pyx_t_9.memview = __pyx_v_nodes_raster_buff.memview;
2849
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_9, 1);
2850
+ __pyx_t_9.shape[0] = __pyx_v_nodes_raster_buff.shape[0];
2851
+ __pyx_t_9.strides[0] = __pyx_v_nodes_raster_buff.strides[0];
2852
+ __pyx_t_9.suboffsets[0] = -1;
2853
+
2854
+ {
2855
+ Py_ssize_t __pyx_tmp_idx = __pyx_v_xx;
2856
+ Py_ssize_t __pyx_tmp_stride = __pyx_v_nodes_raster_buff.strides[1];
2857
+ __pyx_t_9.data += __pyx_tmp_idx * __pyx_tmp_stride;
2858
+ }
2859
+
2860
+ if (unlikely(((PyObject *) __pyx_t_9.memview) == Py_None)) {
2861
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2862
+ <span class='error_goto'>__PYX_ERR(0, 541, __pyx_L1_error)</span>
2863
+ }
2864
+ __pyx_v_x_max = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_vec_max_double(__pyx_t_9);
2865
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_9, 1);
2866
+ __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL;
2867
+ </pre><pre class="cython line score-0">&#xA0;<span class="">542</span>: </pre>
2868
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">543</span>: if ((x_min &gt; num_pixels[xx]-1) or (x_max &lt; 0)): # x crop</pre>
2869
+ <pre class='cython code score-0 '> __pyx_t_4 = __pyx_v_xx;
2870
+ __pyx_t_13 = (__pyx_v_x_min &gt; ((*((int *) ( /* dim=0 */ (__pyx_v_num_pixels.data + __pyx_t_4 * __pyx_v_num_pixels.strides[0]) ))) - 1));
2871
+ if (!__pyx_t_13) {
2872
+ } else {
2873
+ __pyx_t_12 = __pyx_t_13;
2874
+ goto __pyx_L9_bool_binop_done;
2875
+ }
2876
+ __pyx_t_13 = (__pyx_v_x_max &lt; 0.0);
2877
+ __pyx_t_12 = __pyx_t_13;
2878
+ __pyx_L9_bool_binop_done:;
2879
+ if (__pyx_t_12) {
2880
+ /* … */
2881
+ }
2882
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">544</span>: continue</pre>
2883
+ <pre class='cython code score-0 '> goto __pyx_L3_continue;
2884
+ </pre><pre class="cython line score-0">&#xA0;<span class="">545</span>: </pre>
2885
+ <pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">546</span>: y_min: cython.double = vec_min_double(nodes_raster_buff[:,yy])</pre>
2886
+ <pre class='cython code score-5 '> __pyx_t_9.data = __pyx_v_nodes_raster_buff.data;
2887
+ __pyx_t_9.memview = __pyx_v_nodes_raster_buff.memview;
2888
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_9, 1);
2889
+ __pyx_t_9.shape[0] = __pyx_v_nodes_raster_buff.shape[0];
2890
+ __pyx_t_9.strides[0] = __pyx_v_nodes_raster_buff.strides[0];
2891
+ __pyx_t_9.suboffsets[0] = -1;
2892
+
2893
+ {
2894
+ Py_ssize_t __pyx_tmp_idx = __pyx_v_yy;
2895
+ Py_ssize_t __pyx_tmp_stride = __pyx_v_nodes_raster_buff.strides[1];
2896
+ __pyx_t_9.data += __pyx_tmp_idx * __pyx_tmp_stride;
2897
+ }
2898
+
2899
+ if (unlikely(((PyObject *) __pyx_t_9.memview) == Py_None)) {
2900
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2901
+ <span class='error_goto'>__PYX_ERR(0, 546, __pyx_L1_error)</span>
2902
+ }
2903
+ __pyx_v_y_min = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_vec_min_double(__pyx_t_9);
2904
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_9, 1);
2905
+ __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL;
2906
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">547</span>: y_max: cython.double = vec_max_double(nodes_raster_buff[:,yy])</pre>
2907
+ <pre class='cython code score-5 '> __pyx_t_9.data = __pyx_v_nodes_raster_buff.data;
2908
+ __pyx_t_9.memview = __pyx_v_nodes_raster_buff.memview;
2909
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_9, 1);
2910
+ __pyx_t_9.shape[0] = __pyx_v_nodes_raster_buff.shape[0];
2911
+ __pyx_t_9.strides[0] = __pyx_v_nodes_raster_buff.strides[0];
2912
+ __pyx_t_9.suboffsets[0] = -1;
2913
+
2914
+ {
2915
+ Py_ssize_t __pyx_tmp_idx = __pyx_v_yy;
2916
+ Py_ssize_t __pyx_tmp_stride = __pyx_v_nodes_raster_buff.strides[1];
2917
+ __pyx_t_9.data += __pyx_tmp_idx * __pyx_tmp_stride;
2918
+ }
2919
+
2920
+ if (unlikely(((PyObject *) __pyx_t_9.memview) == Py_None)) {
2921
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
2922
+ <span class='error_goto'>__PYX_ERR(0, 547, __pyx_L1_error)</span>
2923
+ }
2924
+ __pyx_v_y_max = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_vec_max_double(__pyx_t_9);
2925
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_9, 1);
2926
+ __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL;
2927
+ </pre><pre class="cython line score-0">&#xA0;<span class="">548</span>: </pre>
2928
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">549</span>: if ((y_min &gt; num_pixels[yy]-1) or (y_max &lt; 0)): # y crop</pre>
2929
+ <pre class='cython code score-0 '> __pyx_t_4 = __pyx_v_yy;
2930
+ __pyx_t_13 = (__pyx_v_y_min &gt; ((*((int *) ( /* dim=0 */ (__pyx_v_num_pixels.data + __pyx_t_4 * __pyx_v_num_pixels.strides[0]) ))) - 1));
2931
+ if (!__pyx_t_13) {
2932
+ } else {
2933
+ __pyx_t_12 = __pyx_t_13;
2934
+ goto __pyx_L12_bool_binop_done;
2935
+ }
2936
+ __pyx_t_13 = (__pyx_v_y_max &lt; 0.0);
2937
+ __pyx_t_12 = __pyx_t_13;
2938
+ __pyx_L12_bool_binop_done:;
2939
+ if (__pyx_t_12) {
2940
+ /* … */
2941
+ }
2942
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">550</span>: continue</pre>
2943
+ <pre class='cython code score-0 '> goto __pyx_L3_continue;
2944
+ </pre><pre class="cython line score-0">&#xA0;<span class="">551</span>: </pre>
2945
+ <pre class="cython line score-0">&#xA0;<span class="">552</span>: # print(f"Elem {ee}: x, min {x_min}")</pre>
2946
+ <pre class="cython line score-0">&#xA0;<span class="">553</span>: # print(f"Elem {ee}: x, max {x_max}")</pre>
2947
+ <pre class="cython line score-0">&#xA0;<span class="">554</span>: # print(f"Elem {ee}: y, min {y_min}")</pre>
2948
+ <pre class="cython line score-0">&#xA0;<span class="">555</span>: # print(f"Elem {ee}: y, max {y_max}\n")</pre>
2949
+ <pre class="cython line score-0">&#xA0;<span class="">556</span>: </pre>
2950
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">557</span>: elems_in_image += 1</pre>
2951
+ <pre class='cython code score-0 '> __pyx_v_elems_in_image = (__pyx_v_elems_in_image + 1);
2952
+ </pre><pre class="cython line score-0">&#xA0;<span class="">558</span>: </pre>
2953
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">559</span>: xi_min: cython.size_t = bound_index_min(x_min)</pre>
2954
+ <pre class='cython code score-0 '> __pyx_v_xi_min = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_bound_index_min(__pyx_v_x_min);
2955
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">560</span>: xi_max: cython.size_t = bound_index_max(x_max,num_pixels[xx])</pre>
2956
+ <pre class='cython code score-0 '> __pyx_t_4 = __pyx_v_xx;
2957
+ __pyx_v_xi_max = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_bound_index_max(__pyx_v_x_max, (*((int *) ( /* dim=0 */ (__pyx_v_num_pixels.data + __pyx_t_4 * __pyx_v_num_pixels.strides[0]) ))));
2958
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">561</span>: yi_min: cython.size_t = bound_index_min(y_min)</pre>
2959
+ <pre class='cython code score-0 '> __pyx_v_yi_min = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_bound_index_min(__pyx_v_y_min);
2960
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">562</span>: yi_max: cython.size_t = bound_index_max(y_max,num_pixels[yy])</pre>
2961
+ <pre class='cython code score-0 '> __pyx_t_4 = __pyx_v_yy;
2962
+ __pyx_v_yi_max = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_bound_index_max(__pyx_v_y_max, (*((int *) ( /* dim=0 */ (__pyx_v_num_pixels.data + __pyx_t_4 * __pyx_v_num_pixels.strides[0]) ))));
2963
+ </pre><pre class="cython line score-0">&#xA0;<span class="">563</span>: </pre>
2964
+ <pre class="cython line score-0">&#xA0;<span class="">564</span>: # print(f"Elem {ee}: xi, min {xi_min}")</pre>
2965
+ <pre class="cython line score-0">&#xA0;<span class="">565</span>: # print(f"Elem {ee}: xi, max {xi_max}")</pre>
2966
+ <pre class="cython line score-0">&#xA0;<span class="">566</span>: # print(f"Elem {ee}: yi, min {yi_min}")</pre>
2967
+ <pre class="cython line score-0">&#xA0;<span class="">567</span>: # print(f"Elem {ee}: yi, max {yi_max}\n")</pre>
2968
+ <pre class="cython line score-0">&#xA0;<span class="">568</span>: </pre>
2969
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">569</span>: for nn in range(nodes_per_elem):</pre>
2970
+ <pre class='cython code score-0 '> __pyx_t_4 = __pyx_v_nodes_per_elem;
2971
+ __pyx_t_5 = __pyx_t_4;
2972
+ for (__pyx_t_6 = 0; __pyx_t_6 &lt; __pyx_t_5; __pyx_t_6+=1) {
2973
+ __pyx_v_nn = __pyx_t_6;
2974
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">570</span>: nodes_raster_buff[nn,zz] = 1/nodes_raster_buff[nn,zz]</pre>
2975
+ <pre class='cython code score-0 '> __pyx_t_8 = __pyx_v_nn;
2976
+ __pyx_t_7 = __pyx_v_zz;
2977
+ __pyx_t_14 = __pyx_v_nn;
2978
+ __pyx_t_15 = __pyx_v_zz;
2979
+ *((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_nodes_raster_buff.data + __pyx_t_14 * __pyx_v_nodes_raster_buff.strides[0]) ) + __pyx_t_15 * __pyx_v_nodes_raster_buff.strides[1]) )) = (1.0 / (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_nodes_raster_buff.data + __pyx_t_8 * __pyx_v_nodes_raster_buff.strides[0]) ) + __pyx_t_7 * __pyx_v_nodes_raster_buff.strides[1]) ))));
2980
+ }
2981
+ </pre><pre class="cython line score-0">&#xA0;<span class="">571</span>: </pre>
2982
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">572</span>: num_bound_x: cython.size_t = range_len_double(float(xi_min),</pre>
2983
+ <pre class='cython code score-0 '> __pyx_v_num_bound_x = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_range_len_double(((double)__pyx_v_xi_min), ((double)__pyx_v_xi_max), __pyx_v_coord_step);
2984
+ </pre><pre class="cython line score-0">&#xA0;<span class="">573</span>: float(xi_max),</pre>
2985
+ <pre class="cython line score-0">&#xA0;<span class="">574</span>: coord_step)</pre>
2986
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">575</span>: num_bound_y: cython.size_t = range_len_double(float(yi_min),</pre>
2987
+ <pre class='cython code score-0 '> __pyx_v_num_bound_y = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_range_len_double(((double)__pyx_v_yi_min), ((double)__pyx_v_yi_max), __pyx_v_coord_step);
2988
+ </pre><pre class="cython line score-0">&#xA0;<span class="">576</span>: float(yi_max),</pre>
2989
+ <pre class="cython line score-0">&#xA0;<span class="">577</span>: coord_step)</pre>
2990
+ <pre class="cython line score-0">&#xA0;<span class="">578</span>: </pre>
2991
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">579</span>: bound_coord_x: cython.double = float(xi_min) + coord_offset</pre>
2992
+ <pre class='cython code score-0 '> __pyx_v_bound_coord_x = (((double)__pyx_v_xi_min) + __pyx_v_coord_offset);
2993
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">580</span>: bound_coord_y: cython.double = float(yi_min) + coord_offset</pre>
2994
+ <pre class='cython code score-0 '> __pyx_v_bound_coord_y = (((double)__pyx_v_yi_min) + __pyx_v_coord_offset);
2995
+ </pre><pre class="cython line score-0">&#xA0;<span class="">581</span>: </pre>
2996
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">582</span>: bound_ind_x: cython.size_t = sub_samp*xi_min</pre>
2997
+ <pre class='cython code score-0 '> __pyx_v_bound_ind_x = (__pyx_v_sub_samp * __pyx_v_xi_min);
2998
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">583</span>: bound_ind_y: cython.size_t = sub_samp*yi_min</pre>
2999
+ <pre class='cython code score-0 '> __pyx_v_bound_ind_y = (__pyx_v_sub_samp * __pyx_v_yi_min);
3000
+ </pre><pre class="cython line score-0">&#xA0;<span class="">584</span>: </pre>
3001
+ <pre class="cython line score-0">&#xA0;<span class="">585</span>: # print(f"Elem {ee}: bound_coord_x={bound_coord_x}")</pre>
3002
+ <pre class="cython line score-0">&#xA0;<span class="">586</span>: # print(f"Elem {ee}: bound_coord_y={bound_coord_y}")</pre>
3003
+ <pre class="cython line score-0">&#xA0;<span class="">587</span>: # print(f"Elem {ee}: bound_ind_x={bound_ind_x}")</pre>
3004
+ <pre class="cython line score-0">&#xA0;<span class="">588</span>: # print(f"Elem {ee}: bound_ind_y={bound_ind_y}")</pre>
3005
+ <pre class="cython line score-0">&#xA0;<span class="">589</span>: # print(f"Elem {ee}: coord_step={coord_step}")</pre>
3006
+ <pre class="cython line score-0">&#xA0;<span class="">590</span>: # print(f"Elem {ee}: num_bound_x={num_bound_x}")</pre>
3007
+ <pre class="cython line score-0">&#xA0;<span class="">591</span>: # print(f"Elem {ee}: num_bound_x={num_bound_y}")</pre>
3008
+ <pre class="cython line score-0">&#xA0;<span class="">592</span>: # print()</pre>
3009
+ <pre class="cython line score-0">&#xA0;<span class="">593</span>: </pre>
3010
+ <pre class="cython line score-0">&#xA0;<span class="">594</span>: </pre>
3011
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">595</span>: for jj in range(num_bound_y):</pre>
3012
+ <pre class='cython code score-0 '> __pyx_t_4 = __pyx_v_num_bound_y;
3013
+ __pyx_t_5 = __pyx_t_4;
3014
+ for (__pyx_t_6 = 0; __pyx_t_6 &lt; __pyx_t_5; __pyx_t_6+=1) {
3015
+ __pyx_v_jj = __pyx_t_6;
3016
+ </pre><pre class="cython line score-0">&#xA0;<span class="">596</span>: </pre>
3017
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">597</span>: bound_coord_x = float(xi_min) + coord_offset</pre>
3018
+ <pre class='cython code score-0 '> __pyx_v_bound_coord_x = (((double)__pyx_v_xi_min) + __pyx_v_coord_offset);
3019
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">598</span>: bound_ind_x: cython.size_t = sub_samp*xi_min</pre>
3020
+ <pre class='cython code score-0 '> __pyx_v_bound_ind_x = (__pyx_v_sub_samp * __pyx_v_xi_min);
3021
+ </pre><pre class="cython line score-0">&#xA0;<span class="">599</span>: </pre>
3022
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">600</span>: for ii in range(num_bound_x):</pre>
3023
+ <pre class='cython code score-0 '> __pyx_t_7 = __pyx_v_num_bound_x;
3024
+ __pyx_t_8 = __pyx_t_7;
3025
+ for (__pyx_t_15 = 0; __pyx_t_15 &lt; __pyx_t_8; __pyx_t_15+=1) {
3026
+ __pyx_v_ii = __pyx_t_15;
3027
+ </pre><pre class="cython line score-0">&#xA0;<span class="">601</span>: </pre>
3028
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">602</span>: px_coord_buff[xx] = bound_coord_x</pre>
3029
+ <pre class='cython code score-0 '> __pyx_t_14 = __pyx_v_xx;
3030
+ *((double *) ( /* dim=0 */ (__pyx_v_px_coord_buff.data + __pyx_t_14 * __pyx_v_px_coord_buff.strides[0]) )) = __pyx_v_bound_coord_x;
3031
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">603</span>: px_coord_buff[yy] = bound_coord_y</pre>
3032
+ <pre class='cython code score-0 '> __pyx_t_14 = __pyx_v_yy;
3033
+ *((double *) ( /* dim=0 */ (__pyx_v_px_coord_buff.data + __pyx_t_14 * __pyx_v_px_coord_buff.strides[0]) )) = __pyx_v_bound_coord_y;
3034
+ </pre><pre class="cython line score-0">&#xA0;<span class="">604</span>: </pre>
3035
+ <pre class="cython line score-0">&#xA0;<span class="">605</span>: # Check the edge functions for each edge one at a time, as soon</pre>
3036
+ <pre class="cython line score-0">&#xA0;<span class="">606</span>: # as one is outside we don't need to do anymore work</pre>
3037
+ <pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">607</span>: weights_buff[0] = edge_function(nodes_raster_buff[1,:],</pre>
3038
+ <pre class='cython code score-5 '> __pyx_t_9.data = __pyx_v_nodes_raster_buff.data;
3039
+ __pyx_t_9.memview = __pyx_v_nodes_raster_buff.memview;
3040
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_9, 1);
3041
+ {
3042
+ Py_ssize_t __pyx_tmp_idx = 1;
3043
+ Py_ssize_t __pyx_tmp_stride = __pyx_v_nodes_raster_buff.strides[0];
3044
+ __pyx_t_9.data += __pyx_tmp_idx * __pyx_tmp_stride;
3045
+ }
3046
+
3047
+ __pyx_t_9.shape[0] = __pyx_v_nodes_raster_buff.shape[1];
3048
+ __pyx_t_9.strides[0] = __pyx_v_nodes_raster_buff.strides[1];
3049
+ __pyx_t_9.suboffsets[0] = -1;
3050
+
3051
+ if (unlikely(((PyObject *) __pyx_t_9.memview) == Py_None)) {
3052
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
3053
+ <span class='error_goto'>__PYX_ERR(0, 607, __pyx_L1_error)</span>
3054
+ }
3055
+ /* … */
3056
+ __pyx_t_16 = 0;
3057
+ *((double *) ( /* dim=0 */ (__pyx_v_weights_buff.data + __pyx_t_16 * __pyx_v_weights_buff.strides[0]) )) = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_edge_function(__pyx_t_9, __pyx_t_10, __pyx_v_px_coord_buff);
3058
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_9, 1);
3059
+ __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL;
3060
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_10, 1);
3061
+ __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL;
3062
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">608</span>: nodes_raster_buff[2,:],</pre>
3063
+ <pre class='cython code score-5 '> __pyx_t_10.data = __pyx_v_nodes_raster_buff.data;
3064
+ __pyx_t_10.memview = __pyx_v_nodes_raster_buff.memview;
3065
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_10, 1);
3066
+ {
3067
+ Py_ssize_t __pyx_tmp_idx = 2;
3068
+ Py_ssize_t __pyx_tmp_stride = __pyx_v_nodes_raster_buff.strides[0];
3069
+ __pyx_t_10.data += __pyx_tmp_idx * __pyx_tmp_stride;
3070
+ }
3071
+
3072
+ __pyx_t_10.shape[0] = __pyx_v_nodes_raster_buff.shape[1];
3073
+ __pyx_t_10.strides[0] = __pyx_v_nodes_raster_buff.strides[1];
3074
+ __pyx_t_10.suboffsets[0] = -1;
3075
+
3076
+ if (unlikely(((PyObject *) __pyx_t_10.memview) == Py_None)) {
3077
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
3078
+ <span class='error_goto'>__PYX_ERR(0, 608, __pyx_L1_error)</span>
3079
+ }
3080
+ </pre><pre class="cython line score-0">&#xA0;<span class="">609</span>: px_coord_buff)</pre>
3081
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">610</span>: if (weights_buff[0] &lt; -tol):</pre>
3082
+ <pre class='cython code score-0 '> __pyx_t_16 = 0;
3083
+ __pyx_t_12 = ((*((double *) ( /* dim=0 */ (__pyx_v_weights_buff.data + __pyx_t_16 * __pyx_v_weights_buff.strides[0]) ))) &lt; (-__pyx_v_tol));
3084
+ if (__pyx_t_12) {
3085
+ /* … */
3086
+ }
3087
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">611</span>: bound_coord_x += coord_step</pre>
3088
+ <pre class='cython code score-0 '> __pyx_v_bound_coord_x = (__pyx_v_bound_coord_x + __pyx_v_coord_step);
3089
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">612</span>: bound_ind_x += 1</pre>
3090
+ <pre class='cython code score-0 '> __pyx_v_bound_ind_x = (__pyx_v_bound_ind_x + 1);
3091
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">613</span>: continue</pre>
3092
+ <pre class='cython code score-0 '> goto __pyx_L18_continue;
3093
+ </pre><pre class="cython line score-0">&#xA0;<span class="">614</span>: </pre>
3094
+ <pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">615</span>: weights_buff[1] = edge_function(nodes_raster_buff[2,:],</pre>
3095
+ <pre class='cython code score-5 '> __pyx_t_10.data = __pyx_v_nodes_raster_buff.data;
3096
+ __pyx_t_10.memview = __pyx_v_nodes_raster_buff.memview;
3097
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_10, 1);
3098
+ {
3099
+ Py_ssize_t __pyx_tmp_idx = 2;
3100
+ Py_ssize_t __pyx_tmp_stride = __pyx_v_nodes_raster_buff.strides[0];
3101
+ __pyx_t_10.data += __pyx_tmp_idx * __pyx_tmp_stride;
3102
+ }
3103
+
3104
+ __pyx_t_10.shape[0] = __pyx_v_nodes_raster_buff.shape[1];
3105
+ __pyx_t_10.strides[0] = __pyx_v_nodes_raster_buff.strides[1];
3106
+ __pyx_t_10.suboffsets[0] = -1;
3107
+
3108
+ if (unlikely(((PyObject *) __pyx_t_10.memview) == Py_None)) {
3109
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
3110
+ <span class='error_goto'>__PYX_ERR(0, 615, __pyx_L1_error)</span>
3111
+ }
3112
+ /* … */
3113
+ __pyx_t_16 = 1;
3114
+ *((double *) ( /* dim=0 */ (__pyx_v_weights_buff.data + __pyx_t_16 * __pyx_v_weights_buff.strides[0]) )) = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_edge_function(__pyx_t_10, __pyx_t_9, __pyx_v_px_coord_buff);
3115
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_10, 1);
3116
+ __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL;
3117
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_9, 1);
3118
+ __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL;
3119
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">616</span>: nodes_raster_buff[0,:],</pre>
3120
+ <pre class='cython code score-5 '> __pyx_t_9.data = __pyx_v_nodes_raster_buff.data;
3121
+ __pyx_t_9.memview = __pyx_v_nodes_raster_buff.memview;
3122
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_9, 1);
3123
+ {
3124
+ Py_ssize_t __pyx_tmp_idx = 0;
3125
+ Py_ssize_t __pyx_tmp_stride = __pyx_v_nodes_raster_buff.strides[0];
3126
+ __pyx_t_9.data += __pyx_tmp_idx * __pyx_tmp_stride;
3127
+ }
3128
+
3129
+ __pyx_t_9.shape[0] = __pyx_v_nodes_raster_buff.shape[1];
3130
+ __pyx_t_9.strides[0] = __pyx_v_nodes_raster_buff.strides[1];
3131
+ __pyx_t_9.suboffsets[0] = -1;
3132
+
3133
+ if (unlikely(((PyObject *) __pyx_t_9.memview) == Py_None)) {
3134
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
3135
+ <span class='error_goto'>__PYX_ERR(0, 616, __pyx_L1_error)</span>
3136
+ }
3137
+ </pre><pre class="cython line score-0">&#xA0;<span class="">617</span>: px_coord_buff)</pre>
3138
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">618</span>: if (weights_buff[1] &lt; -tol):</pre>
3139
+ <pre class='cython code score-0 '> __pyx_t_16 = 1;
3140
+ __pyx_t_12 = ((*((double *) ( /* dim=0 */ (__pyx_v_weights_buff.data + __pyx_t_16 * __pyx_v_weights_buff.strides[0]) ))) &lt; (-__pyx_v_tol));
3141
+ if (__pyx_t_12) {
3142
+ /* … */
3143
+ }
3144
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">619</span>: bound_coord_x += coord_step</pre>
3145
+ <pre class='cython code score-0 '> __pyx_v_bound_coord_x = (__pyx_v_bound_coord_x + __pyx_v_coord_step);
3146
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">620</span>: bound_ind_x += 1</pre>
3147
+ <pre class='cython code score-0 '> __pyx_v_bound_ind_x = (__pyx_v_bound_ind_x + 1);
3148
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">621</span>: continue</pre>
3149
+ <pre class='cython code score-0 '> goto __pyx_L18_continue;
3150
+ </pre><pre class="cython line score-0">&#xA0;<span class="">622</span>: </pre>
3151
+ <pre class="cython line score-0">&#xA0;<span class="">623</span>: </pre>
3152
+ <pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">624</span>: weights_buff[2] = edge_function(nodes_raster_buff[0,:],</pre>
3153
+ <pre class='cython code score-5 '> __pyx_t_9.data = __pyx_v_nodes_raster_buff.data;
3154
+ __pyx_t_9.memview = __pyx_v_nodes_raster_buff.memview;
3155
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_9, 1);
3156
+ {
3157
+ Py_ssize_t __pyx_tmp_idx = 0;
3158
+ Py_ssize_t __pyx_tmp_stride = __pyx_v_nodes_raster_buff.strides[0];
3159
+ __pyx_t_9.data += __pyx_tmp_idx * __pyx_tmp_stride;
3160
+ }
3161
+
3162
+ __pyx_t_9.shape[0] = __pyx_v_nodes_raster_buff.shape[1];
3163
+ __pyx_t_9.strides[0] = __pyx_v_nodes_raster_buff.strides[1];
3164
+ __pyx_t_9.suboffsets[0] = -1;
3165
+
3166
+ if (unlikely(((PyObject *) __pyx_t_9.memview) == Py_None)) {
3167
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
3168
+ <span class='error_goto'>__PYX_ERR(0, 624, __pyx_L1_error)</span>
3169
+ }
3170
+ /* … */
3171
+ __pyx_t_16 = 2;
3172
+ *((double *) ( /* dim=0 */ (__pyx_v_weights_buff.data + __pyx_t_16 * __pyx_v_weights_buff.strides[0]) )) = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_edge_function(__pyx_t_9, __pyx_t_10, __pyx_v_px_coord_buff);
3173
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_9, 1);
3174
+ __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL;
3175
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_10, 1);
3176
+ __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL;
3177
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">625</span>: nodes_raster_buff[1,:],</pre>
3178
+ <pre class='cython code score-5 '> __pyx_t_10.data = __pyx_v_nodes_raster_buff.data;
3179
+ __pyx_t_10.memview = __pyx_v_nodes_raster_buff.memview;
3180
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_10, 1);
3181
+ {
3182
+ Py_ssize_t __pyx_tmp_idx = 1;
3183
+ Py_ssize_t __pyx_tmp_stride = __pyx_v_nodes_raster_buff.strides[0];
3184
+ __pyx_t_10.data += __pyx_tmp_idx * __pyx_tmp_stride;
3185
+ }
3186
+
3187
+ __pyx_t_10.shape[0] = __pyx_v_nodes_raster_buff.shape[1];
3188
+ __pyx_t_10.strides[0] = __pyx_v_nodes_raster_buff.strides[1];
3189
+ __pyx_t_10.suboffsets[0] = -1;
3190
+
3191
+ if (unlikely(((PyObject *) __pyx_t_10.memview) == Py_None)) {
3192
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
3193
+ <span class='error_goto'>__PYX_ERR(0, 625, __pyx_L1_error)</span>
3194
+ }
3195
+ </pre><pre class="cython line score-0">&#xA0;<span class="">626</span>: px_coord_buff)</pre>
3196
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">627</span>: if (weights_buff[2] &lt; -tol):</pre>
3197
+ <pre class='cython code score-0 '> __pyx_t_16 = 2;
3198
+ __pyx_t_12 = ((*((double *) ( /* dim=0 */ (__pyx_v_weights_buff.data + __pyx_t_16 * __pyx_v_weights_buff.strides[0]) ))) &lt; (-__pyx_v_tol));
3199
+ if (__pyx_t_12) {
3200
+ /* … */
3201
+ }
3202
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">628</span>: bound_coord_x += coord_step</pre>
3203
+ <pre class='cython code score-0 '> __pyx_v_bound_coord_x = (__pyx_v_bound_coord_x + __pyx_v_coord_step);
3204
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">629</span>: bound_ind_x += 1</pre>
3205
+ <pre class='cython code score-0 '> __pyx_v_bound_ind_x = (__pyx_v_bound_ind_x + 1);
3206
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">630</span>: continue</pre>
3207
+ <pre class='cython code score-0 '> goto __pyx_L18_continue;
3208
+ </pre><pre class="cython line score-0">&#xA0;<span class="">631</span>: </pre>
3209
+ <pre class="cython line score-0">&#xA0;<span class="">632</span>: # if (ee%6) == 0:</pre>
3210
+ <pre class="cython line score-0">&#xA0;<span class="">633</span>: # print(f"Elem: {ee}")</pre>
3211
+ <pre class="cython line score-0">&#xA0;<span class="">634</span>: # print(f"x bound ind={bound_ind_x}, coord={bound_coord_x}")</pre>
3212
+ <pre class="cython line score-0">&#xA0;<span class="">635</span>: # print(f"y bound ind={bound_ind_y}, coord={bound_coord_y}")</pre>
3213
+ <pre class="cython line score-0">&#xA0;<span class="">636</span>: # print(f"weights=[{weights_buff[0]},{weights_buff[1]},{weights_buff[2]}]")</pre>
3214
+ <pre class="cython line score-0">&#xA0;<span class="">637</span>: # print()</pre>
3215
+ <pre class="cython line score-0">&#xA0;<span class="">638</span>: </pre>
3216
+ <pre class="cython line score-0">&#xA0;<span class="">639</span>: </pre>
3217
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">640</span>: for ww in range(nodes_per_elem):</pre>
3218
+ <pre class='cython code score-0 '> __pyx_t_14 = __pyx_v_nodes_per_elem;
3219
+ __pyx_t_17 = __pyx_t_14;
3220
+ for (__pyx_t_18 = 0; __pyx_t_18 &lt; __pyx_t_17; __pyx_t_18+=1) {
3221
+ __pyx_v_ww = __pyx_t_18;
3222
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">641</span>: weights_buff[ww] = weights_buff[ww] / elem_area</pre>
3223
+ <pre class='cython code score-0 '> __pyx_t_19 = __pyx_v_ww;
3224
+ __pyx_t_20 = __pyx_v_ww;
3225
+ *((double *) ( /* dim=0 */ (__pyx_v_weights_buff.data + __pyx_t_20 * __pyx_v_weights_buff.strides[0]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_weights_buff.data + __pyx_t_19 * __pyx_v_weights_buff.strides[0]) ))) / __pyx_v_elem_area);
3226
+ }
3227
+ </pre><pre class="cython line score-0">&#xA0;<span class="">642</span>: </pre>
3228
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">643</span>: weight_dot_nodes: cython.double = vec_dot_double(</pre>
3229
+ <pre class='cython code score-0 '> __pyx_v_weight_dot_nodes = __pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_vec_dot_double(__pyx_v_weights_buff, __pyx_t_10);
3230
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_10, 1);
3231
+ __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL;
3232
+ </pre><pre class="cython line score-0">&#xA0;<span class="">644</span>: weights_buff,</pre>
3233
+ <pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">645</span>: nodes_raster_buff[:,zz])</pre>
3234
+ <pre class='cython code score-5 '> __pyx_t_10.data = __pyx_v_nodes_raster_buff.data;
3235
+ __pyx_t_10.memview = __pyx_v_nodes_raster_buff.memview;
3236
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_10, 1);
3237
+ __pyx_t_10.shape[0] = __pyx_v_nodes_raster_buff.shape[0];
3238
+ __pyx_t_10.strides[0] = __pyx_v_nodes_raster_buff.strides[0];
3239
+ __pyx_t_10.suboffsets[0] = -1;
3240
+
3241
+ {
3242
+ Py_ssize_t __pyx_tmp_idx = __pyx_v_zz;
3243
+ Py_ssize_t __pyx_tmp_stride = __pyx_v_nodes_raster_buff.strides[1];
3244
+ __pyx_t_10.data += __pyx_tmp_idx * __pyx_tmp_stride;
3245
+ }
3246
+
3247
+ if (unlikely(((PyObject *) __pyx_t_10.memview) == Py_None)) {
3248
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
3249
+ <span class='error_goto'>__PYX_ERR(0, 645, __pyx_L1_error)</span>
3250
+ }
3251
+ </pre><pre class="cython line score-0">&#xA0;<span class="">646</span>: </pre>
3252
+ <pre class="cython line score-0">&#xA0;<span class="">647</span>: # Check the depth buffer, if the element is behind move on</pre>
3253
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">648</span>: px_coord_z: cython.double = 1/weight_dot_nodes</pre>
3254
+ <pre class='cython code score-0 '> __pyx_v_px_coord_z = (1.0 / __pyx_v_weight_dot_nodes);
3255
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">649</span>: if px_coord_z &gt;= depth_buff_subpx[bound_ind_y,bound_ind_x]:</pre>
3256
+ <pre class='cython code score-0 '> __pyx_t_14 = __pyx_v_bound_ind_y;
3257
+ __pyx_t_17 = __pyx_v_bound_ind_x;
3258
+ __pyx_t_12 = (__pyx_v_px_coord_z &gt;= (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_depth_buff_subpx.data + __pyx_t_14 * __pyx_v_depth_buff_subpx.strides[0]) ) + __pyx_t_17 * __pyx_v_depth_buff_subpx.strides[1]) ))));
3259
+ if (__pyx_t_12) {
3260
+ /* … */
3261
+ }
3262
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">650</span>: bound_coord_x += coord_step</pre>
3263
+ <pre class='cython code score-0 '> __pyx_v_bound_coord_x = (__pyx_v_bound_coord_x + __pyx_v_coord_step);
3264
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">651</span>: bound_ind_x += 1</pre>
3265
+ <pre class='cython code score-0 '> __pyx_v_bound_ind_x = (__pyx_v_bound_ind_x + 1);
3266
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">652</span>: continue</pre>
3267
+ <pre class='cython code score-0 '> goto __pyx_L18_continue;
3268
+ </pre><pre class="cython line score-0">&#xA0;<span class="">653</span>: </pre>
3269
+ <pre class="cython line score-0">&#xA0;<span class="">654</span>: # We only need one depth buffer for all fields</pre>
3270
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">655</span>: depth_buff_subpx[bound_ind_y,bound_ind_x] = px_coord_z</pre>
3271
+ <pre class='cython code score-0 '> __pyx_t_17 = __pyx_v_bound_ind_y;
3272
+ __pyx_t_14 = __pyx_v_bound_ind_x;
3273
+ *((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_depth_buff_subpx.data + __pyx_t_17 * __pyx_v_depth_buff_subpx.strides[0]) ) + __pyx_t_14 * __pyx_v_depth_buff_subpx.strides[1]) )) = __pyx_v_px_coord_z;
3274
+ </pre><pre class="cython line score-0">&#xA0;<span class="">656</span>: </pre>
3275
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">657</span>: for ff in range(fields_num):</pre>
3276
+ <pre class='cython code score-0 '> __pyx_t_14 = __pyx_v_fields_num;
3277
+ __pyx_t_17 = __pyx_t_14;
3278
+ for (__pyx_t_18 = 0; __pyx_t_18 &lt; __pyx_t_17; __pyx_t_18+=1) {
3279
+ __pyx_v_ff = __pyx_t_18;
3280
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">658</span>: for nn in range(nodes_per_elem):</pre>
3281
+ <pre class='cython code score-0 '> __pyx_t_19 = __pyx_v_nodes_per_elem;
3282
+ __pyx_t_20 = __pyx_t_19;
3283
+ for (__pyx_t_21 = 0; __pyx_t_21 &lt; __pyx_t_20; __pyx_t_21+=1) {
3284
+ __pyx_v_nn = __pyx_t_21;
3285
+ </pre><pre class="cython line score-0">&#xA0;<span class="">659</span>: </pre>
3286
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">660</span>: field_raster_buff[nn] = (fields_to_render[connect[ee,nn],ff]</pre>
3287
+ <pre class='cython code score-0 '> __pyx_t_22 = __pyx_v_ee;
3288
+ __pyx_t_23 = __pyx_v_nn;
3289
+ __pyx_t_24 = (*((size_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_connect.data + __pyx_t_22 * __pyx_v_connect.strides[0]) ) + __pyx_t_23 * __pyx_v_connect.strides[1]) )));
3290
+ __pyx_t_25 = __pyx_v_ff;
3291
+ /* … */
3292
+ __pyx_t_28 = __pyx_v_nn;
3293
+ *((double *) ( /* dim=0 */ (__pyx_v_field_raster_buff.data + __pyx_t_28 * __pyx_v_field_raster_buff.strides[0]) )) = ((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_fields_to_render.data + __pyx_t_24 * __pyx_v_fields_to_render.strides[0]) ) + __pyx_t_25 * __pyx_v_fields_to_render.strides[1]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_nodes_raster_buff.data + __pyx_t_26 * __pyx_v_nodes_raster_buff.strides[0]) ) + __pyx_t_27 * __pyx_v_nodes_raster_buff.strides[1]) ))));
3294
+ }
3295
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">661</span>: *nodes_raster_buff[nn,zz])</pre>
3296
+ <pre class='cython code score-0 '> __pyx_t_26 = __pyx_v_nn;
3297
+ __pyx_t_27 = __pyx_v_zz;
3298
+ </pre><pre class="cython line score-0">&#xA0;<span class="">662</span>: </pre>
3299
+ <pre class="cython line score-0">&#xA0;<span class="">663</span>: px_field: cython.double = (vec_dot_double(field_raster_buff,</pre>
3300
+ <pre class="cython line score-0">&#xA0;<span class="">664</span>: weights_buff)</pre>
3301
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">665</span>: *px_coord_z)</pre>
3302
+ <pre class='cython code score-0 '> __pyx_v_px_field = (__pyx_f_6pyvale_9sensorsim_6cython_10rastercyth_vec_dot_double(__pyx_v_field_raster_buff, __pyx_v_weights_buff) * __pyx_v_px_coord_z);
3303
+ </pre><pre class="cython line score-0">&#xA0;<span class="">666</span>: </pre>
3304
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">667</span>: image_buff_subpx[bound_ind_y,bound_ind_x,ff] = px_field</pre>
3305
+ <pre class='cython code score-0 '> __pyx_t_19 = __pyx_v_bound_ind_y;
3306
+ __pyx_t_20 = __pyx_v_bound_ind_x;
3307
+ __pyx_t_21 = __pyx_v_ff;
3308
+ *((double *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_image_buff_subpx.data + __pyx_t_19 * __pyx_v_image_buff_subpx.strides[0]) ) + __pyx_t_20 * __pyx_v_image_buff_subpx.strides[1]) ) + __pyx_t_21 * __pyx_v_image_buff_subpx.strides[2]) )) = __pyx_v_px_field;
3309
+ }
3310
+ </pre><pre class="cython line score-0">&#xA0;<span class="">668</span>: </pre>
3311
+ <pre class="cython line score-0">&#xA0;<span class="">669</span>: # end for(x) - increment the x coords</pre>
3312
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">670</span>: bound_coord_x += coord_step</pre>
3313
+ <pre class='cython code score-0 '> __pyx_v_bound_coord_x = (__pyx_v_bound_coord_x + __pyx_v_coord_step);
3314
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">671</span>: bound_ind_x += 1</pre>
3315
+ <pre class='cython code score-0 '> __pyx_v_bound_ind_x = (__pyx_v_bound_ind_x + 1);
3316
+ __pyx_L18_continue:;
3317
+ }
3318
+ </pre><pre class="cython line score-0">&#xA0;<span class="">672</span>: </pre>
3319
+ <pre class="cython line score-0">&#xA0;<span class="">673</span>: # end for(y) - increment the y coords</pre>
3320
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">674</span>: bound_coord_y += coord_step</pre>
3321
+ <pre class='cython code score-0 '> __pyx_v_bound_coord_y = (__pyx_v_bound_coord_y + __pyx_v_coord_step);
3322
+ </pre><pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">675</span>: bound_ind_y += 1</pre>
3323
+ <pre class='cython code score-0 '> __pyx_v_bound_ind_y = (__pyx_v_bound_ind_y + 1);
3324
+ }
3325
+ __pyx_L3_continue:;
3326
+ }
3327
+ </pre><pre class="cython line score-0">&#xA0;<span class="">676</span>: </pre>
3328
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">677</span>: _average_image(depth_buff_subpx,sub_samp,depth_buff_avg)</pre>
3329
+ <pre class='cython code score-0 '> (void)(__pyx_f_6pyvale_9sensorsim_6cython_10rastercyth__average_image(__pyx_v_depth_buff_subpx, __pyx_v_sub_samp, __pyx_v_depth_buff_avg));
3330
+ </pre><pre class="cython line score-0">&#xA0;<span class="">678</span>: </pre>
3331
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">679</span>: for ff in range(fields_num):</pre>
3332
+ <pre class='cython code score-0 '> __pyx_t_1 = __pyx_v_fields_num;
3333
+ __pyx_t_2 = __pyx_t_1;
3334
+ for (__pyx_t_3 = 0; __pyx_t_3 &lt; __pyx_t_2; __pyx_t_3+=1) {
3335
+ __pyx_v_ff = __pyx_t_3;
3336
+ </pre><pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">680</span>: _average_image(image_buff_subpx[:,:,ff],</pre>
3337
+ <pre class='cython code score-5 '> __pyx_t_29.data = __pyx_v_image_buff_subpx.data;
3338
+ __pyx_t_29.memview = __pyx_v_image_buff_subpx.memview;
3339
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_29, 1);
3340
+ __pyx_t_29.shape[0] = __pyx_v_image_buff_subpx.shape[0];
3341
+ __pyx_t_29.strides[0] = __pyx_v_image_buff_subpx.strides[0];
3342
+ __pyx_t_29.suboffsets[0] = -1;
3343
+
3344
+ __pyx_t_29.shape[1] = __pyx_v_image_buff_subpx.shape[1];
3345
+ __pyx_t_29.strides[1] = __pyx_v_image_buff_subpx.strides[1];
3346
+ __pyx_t_29.suboffsets[1] = -1;
3347
+
3348
+ {
3349
+ Py_ssize_t __pyx_tmp_idx = __pyx_v_ff;
3350
+ Py_ssize_t __pyx_tmp_stride = __pyx_v_image_buff_subpx.strides[2];
3351
+ __pyx_t_29.data += __pyx_tmp_idx * __pyx_tmp_stride;
3352
+ }
3353
+
3354
+ if (unlikely(((PyObject *) __pyx_t_29.memview) == Py_None)) {
3355
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
3356
+ <span class='error_goto'>__PYX_ERR(0, 680, __pyx_L1_error)</span>
3357
+ }
3358
+ /* … */
3359
+ (void)(__pyx_f_6pyvale_9sensorsim_6cython_10rastercyth__average_image(__pyx_t_29, __pyx_v_sub_samp, __pyx_t_30));
3360
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_29, 1);
3361
+ __pyx_t_29.memview = NULL; __pyx_t_29.data = NULL;
3362
+ __PYX_XCLEAR_MEMVIEW(&amp;__pyx_t_30, 1);
3363
+ __pyx_t_30.memview = NULL; __pyx_t_30.data = NULL;
3364
+ }
3365
+ </pre><pre class="cython line score-0">&#xA0;<span class="">681</span>: sub_samp,</pre>
3366
+ <pre class="cython line score-5" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">682</span>: image_buff_avg[:,:,ff])</pre>
3367
+ <pre class='cython code score-5 '> __pyx_t_30.data = __pyx_v_image_buff_avg.data;
3368
+ __pyx_t_30.memview = __pyx_v_image_buff_avg.memview;
3369
+ __PYX_INC_MEMVIEW(&amp;__pyx_t_30, 1);
3370
+ __pyx_t_30.shape[0] = __pyx_v_image_buff_avg.shape[0];
3371
+ __pyx_t_30.strides[0] = __pyx_v_image_buff_avg.strides[0];
3372
+ __pyx_t_30.suboffsets[0] = -1;
3373
+
3374
+ __pyx_t_30.shape[1] = __pyx_v_image_buff_avg.shape[1];
3375
+ __pyx_t_30.strides[1] = __pyx_v_image_buff_avg.strides[1];
3376
+ __pyx_t_30.suboffsets[1] = -1;
3377
+
3378
+ {
3379
+ Py_ssize_t __pyx_tmp_idx = __pyx_v_ff;
3380
+ Py_ssize_t __pyx_tmp_stride = __pyx_v_image_buff_avg.strides[2];
3381
+ __pyx_t_30.data += __pyx_tmp_idx * __pyx_tmp_stride;
3382
+ }
3383
+
3384
+ if (unlikely(((PyObject *) __pyx_t_30.memview) == Py_None)) {
3385
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
3386
+ <span class='error_goto'>__PYX_ERR(0, 682, __pyx_L1_error)</span>
3387
+ }
3388
+ </pre><pre class="cython line score-0">&#xA0;<span class="">683</span>: </pre>
3389
+ <pre class="cython line score-0" onclick="(function(f,s,c){c=f.nodeValue=='+';s.display=c?'block':'none';f.nodeValue=c?'−':'+'})(this.firstChild,this.nextElementSibling.style)">+<span class="">684</span>: return elems_in_image</pre>
3390
+ <pre class='cython code score-0 '> __pyx_r = __pyx_v_elems_in_image;
3391
+ goto __pyx_L0;
3392
+ </pre></div></body></html>