{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Cython, que no CPython" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "No, no nos hemos equivocado en el título, hoy vamos a hablar de Cython.\n", "\n", "¿Qué es Cython?\n", "\n", "Cython son dos cosas:\n", "\n", "* Por una parte, Cython es un lenguaje de programación (un superconjunto de Python) que une Python con el sistema de tipado estático de C y C++.\n", "* Por otra parte, `cython` es un compilador que traduce codigo fuente escrito en Cython en eficiente código C o C++. El código resultante se podría usar como una extensión Python o como un ejecutable." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "¡Guau! ¿Cómo os habéis quedado?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lo que se pretende es, básicamente, aprovechar las fortalezas de Python y C, combinar una sintaxis sencilla con el poder y la velocidad." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Salvando algunas [excepciones](http://docs.cython.org/src/userguide/limitations.html#cython-limitations), el código Python (tanto Python 2 como Python 3) es código Cython válido. Además, Cython añade una serie de palabras clave para poder usar el sistema de tipado de C con Python y que el compilador `cython` pueda generar código C eficiente." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pero, ¿quién usa Cython?\n", "\n", "Pues mira, igual no lo sabes pero seguramente estés usando Cython todos los días. Sage tiene casi medio millón de líneas de Cython (que se dice pronto), Scipy y Pandas más de 20000, scikit-learn unas 15000,..." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# ¿Nos empezamos a meter en harina?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La idea principal de este primer acercamiento a Cython será empezar con un código Python que sea nuestro cuello de botella e iremos creando versiones que sean cada vez más rápidas, o eso intentaremos." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Por ejemplo, imaginemos que tenemos que detectar valores mínimos locales dentro de una malla. Los valores mínimos deberán ser simplemente valores más bajos que los que haya en los 8 nodos de su entorno inmediato. En el siguiente gráfico, el nodo en verde será un nodo con un mínimo y en su entorno son todo valores superiores:\n", "\n", "
(2, 0) | \n", "(2, 1) | \n", "(2, 2) | \n", "
(1, 0) | \n", "(1. 1) | \n", "(1, 2) | \n", "
(0, 0) | \n", "(0, 1) | \n", "(0, 2) | \n", "
Generated by Cython 0.22
\n", "+01: import numpy as np\n", "
__pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", "
02:\n", "
+03: cdef tuple cbusca_min_cython3(malla):\n", "
static PyObject *__pyx_f_46_cython_magic_b76d9f95ffc9db5b7e97e92e04623490_cbusca_min_cython3(PyObject *__pyx_v_malla) {\n", " PyObject *__pyx_v_minimosx = 0;\n", " PyObject *__pyx_v_minimosy = 0;\n", " unsigned int __pyx_v_i;\n", " unsigned int __pyx_v_j;\n", " unsigned int __pyx_v_ii;\n", " unsigned int __pyx_v_jj;\n", " unsigned int __pyx_v_start;\n", " PyObject *__pyx_r = NULL;\n", " __Pyx_RefNannyDeclarations\n", " __Pyx_RefNannySetupContext(\"cbusca_min_cython3\", 0);\n", "/* … */\n", " /* function exit code */\n", " __pyx_L1_error:;\n", " __Pyx_XDECREF(__pyx_t_1);\n", " __Pyx_XDECREF(__pyx_t_2);\n", " __Pyx_XDECREF(__pyx_t_8);\n", " __Pyx_XDECREF(__pyx_t_9);\n", " __Pyx_XDECREF(__pyx_t_12);\n", " __Pyx_AddTraceback(\"_cython_magic_b76d9f95ffc9db5b7e97e92e04623490.cbusca_min_cython3\", __pyx_clineno, __pyx_lineno, __pyx_filename);\n", " __pyx_r = 0;\n", " __pyx_L0:;\n", " __Pyx_XDECREF(__pyx_v_minimosx);\n", " __Pyx_XDECREF(__pyx_v_minimosy);\n", " __Pyx_XGIVEREF(__pyx_r);\n", " __Pyx_RefNannyFinishContext();\n", " return __pyx_r;\n", "}\n", "
04: cdef list minimosx, minimosy\n", "
05: cdef unsigned int i, j\n", "
+06: cdef unsigned int ii = malla.shape[1]-1\n", "
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_malla, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;};\n", " __Pyx_GOTREF(__pyx_t_2);\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", " __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;\n", " __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", " __pyx_v_ii = __pyx_t_3;\n", "
+07: cdef unsigned int jj = malla.shape[0]-1\n", "
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_malla, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;};\n", " __Pyx_GOTREF(__pyx_t_2);\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", " __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;\n", " __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", " __pyx_v_jj = __pyx_t_3;\n", "
+08: cdef unsigned int start = 1\n", "
__pyx_v_start = 1;\n", "
+09: minimosx = []\n", "
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_v_minimosx = ((PyObject*)__pyx_t_1);\n", " __pyx_t_1 = 0;\n", "
+10: minimosy = []\n", "
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_v_minimosy = ((PyObject*)__pyx_t_1);\n", " __pyx_t_1 = 0;\n", "
+11: for i in range(start, ii):\n", "
__pyx_t_3 = __pyx_v_ii;\n", " for (__pyx_t_4 = __pyx_v_start; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {\n", " __pyx_v_i = __pyx_t_4;\n", "
+12: for j in range(start, jj):\n", "
__pyx_t_5 = __pyx_v_jj;\n", " for (__pyx_t_6 = __pyx_v_start; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {\n", " __pyx_v_j = __pyx_t_6;\n", "
+13: if (malla[j, i] < malla[j-1, i-1] and\n", "
__pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_j); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_t_2 = __Pyx_PyInt_From_unsigned_int(__pyx_v_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_2);\n", " __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_8);\n", " PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1);\n", " __Pyx_GIVEREF(__pyx_t_1);\n", " PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_2);\n", " __Pyx_GIVEREF(__pyx_t_2);\n", " __pyx_t_1 = 0;\n", " __pyx_t_2 = 0;\n", " __pyx_t_2 = PyObject_GetItem(__pyx_v_malla, __pyx_t_8); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;};\n", " __Pyx_GOTREF(__pyx_t_2);\n", " __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;\n", " __pyx_t_8 = __Pyx_PyInt_From_long((__pyx_v_j - 1)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_8);\n", " __pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_i - 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_9);\n", " PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8);\n", " __Pyx_GIVEREF(__pyx_t_8);\n", " PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_1);\n", " __Pyx_GIVEREF(__pyx_t_1);\n", " __pyx_t_8 = 0;\n", " __pyx_t_1 = 0;\n", " __pyx_t_1 = PyObject_GetItem(__pyx_v_malla, __pyx_t_9); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;};\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;\n", " __pyx_t_9 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", " __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;\n", " if (__pyx_t_10) {\n", " } else {\n", " __pyx_t_7 = __pyx_t_10;\n", " goto __pyx_L8_bool_binop_done;\n", " }\n", "
+14: malla[j, i] < malla[j-1, i] and\n", "
__pyx_t_9 = __Pyx_PyInt_From_unsigned_int(__pyx_v_j); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_9);\n", " __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_2);\n", " PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_9);\n", " __Pyx_GIVEREF(__pyx_t_9);\n", " PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);\n", " __Pyx_GIVEREF(__pyx_t_1);\n", " __pyx_t_9 = 0;\n", " __pyx_t_1 = 0;\n", " __pyx_t_1 = PyObject_GetItem(__pyx_v_malla, __pyx_t_2); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;};\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;\n", " __pyx_t_2 = __Pyx_PyInt_From_long((__pyx_v_j - 1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_2);\n", " __pyx_t_9 = __Pyx_PyInt_From_unsigned_int(__pyx_v_i); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_9);\n", " __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_8);\n", " PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2);\n", " __Pyx_GIVEREF(__pyx_t_2);\n", " PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_9);\n", " __Pyx_GIVEREF(__pyx_t_9);\n", " __pyx_t_2 = 0;\n", " __pyx_t_9 = 0;\n", " __pyx_t_9 = PyObject_GetItem(__pyx_v_malla, __pyx_t_8); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;};\n", " __Pyx_GOTREF(__pyx_t_9);\n", " __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;\n", " __pyx_t_8 = PyObject_RichCompare(__pyx_t_1, __pyx_t_9, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", " __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;\n", " __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;\n", " if (__pyx_t_10) {\n", " } else {\n", " __pyx_t_7 = __pyx_t_10;\n", " goto __pyx_L8_bool_binop_done;\n", " }\n", "
+15: malla[j, i] < malla[j-1, i+1] and\n", "
__pyx_t_8 = __Pyx_PyInt_From_unsigned_int(__pyx_v_j); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_8);\n", " __pyx_t_9 = __Pyx_PyInt_From_unsigned_int(__pyx_v_i); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_9);\n", " __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8);\n", " __Pyx_GIVEREF(__pyx_t_8);\n", " PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_9);\n", " __Pyx_GIVEREF(__pyx_t_9);\n", " __pyx_t_8 = 0;\n", " __pyx_t_9 = 0;\n", " __pyx_t_9 = PyObject_GetItem(__pyx_v_malla, __pyx_t_1); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;};\n", " __Pyx_GOTREF(__pyx_t_9);\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", " __pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_j - 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_t_8 = __Pyx_PyInt_From_long((__pyx_v_i + 1)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_8);\n", " __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_2);\n", " PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);\n", " __Pyx_GIVEREF(__pyx_t_1);\n", " PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_8);\n", " __Pyx_GIVEREF(__pyx_t_8);\n", " __pyx_t_1 = 0;\n", " __pyx_t_8 = 0;\n", " __pyx_t_8 = PyObject_GetItem(__pyx_v_malla, __pyx_t_2); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;};\n", " __Pyx_GOTREF(__pyx_t_8);\n", " __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;\n", " __pyx_t_2 = PyObject_RichCompare(__pyx_t_9, __pyx_t_8, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;\n", " __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;\n", " __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;\n", " if (__pyx_t_10) {\n", " } else {\n", " __pyx_t_7 = __pyx_t_10;\n", " goto __pyx_L8_bool_binop_done;\n", " }\n", "
+16: malla[j, i] < malla[j, i-1] and\n", "
__pyx_t_2 = __Pyx_PyInt_From_unsigned_int(__pyx_v_j); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_2);\n", " __pyx_t_8 = __Pyx_PyInt_From_unsigned_int(__pyx_v_i); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_8);\n", " __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_9);\n", " PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2);\n", " __Pyx_GIVEREF(__pyx_t_2);\n", " PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8);\n", " __Pyx_GIVEREF(__pyx_t_8);\n", " __pyx_t_2 = 0;\n", " __pyx_t_8 = 0;\n", " __pyx_t_8 = PyObject_GetItem(__pyx_v_malla, __pyx_t_9); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;};\n", " __Pyx_GOTREF(__pyx_t_8);\n", " __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;\n", " __pyx_t_9 = __Pyx_PyInt_From_unsigned_int(__pyx_v_j); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_9);\n", " __pyx_t_2 = __Pyx_PyInt_From_long((__pyx_v_i - 1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_2);\n", " __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_9);\n", " __Pyx_GIVEREF(__pyx_t_9);\n", " PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);\n", " __Pyx_GIVEREF(__pyx_t_2);\n", " __pyx_t_9 = 0;\n", " __pyx_t_2 = 0;\n", " __pyx_t_2 = PyObject_GetItem(__pyx_v_malla, __pyx_t_1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;};\n", " __Pyx_GOTREF(__pyx_t_2);\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", " __pyx_t_1 = PyObject_RichCompare(__pyx_t_8, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;\n", " __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;\n", " __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", " if (__pyx_t_10) {\n", " } else {\n", " __pyx_t_7 = __pyx_t_10;\n", " goto __pyx_L8_bool_binop_done;\n", " }\n", "
+17: malla[j, i] < malla[j, i+1] and\n", "
__pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_j); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_t_2 = __Pyx_PyInt_From_unsigned_int(__pyx_v_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_2);\n", " __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_8);\n", " PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1);\n", " __Pyx_GIVEREF(__pyx_t_1);\n", " PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_2);\n", " __Pyx_GIVEREF(__pyx_t_2);\n", " __pyx_t_1 = 0;\n", " __pyx_t_2 = 0;\n", " __pyx_t_2 = PyObject_GetItem(__pyx_v_malla, __pyx_t_8); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;};\n", " __Pyx_GOTREF(__pyx_t_2);\n", " __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;\n", " __pyx_t_8 = __Pyx_PyInt_From_unsigned_int(__pyx_v_j); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_8);\n", " __pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_i + 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_9);\n", " PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8);\n", " __Pyx_GIVEREF(__pyx_t_8);\n", " PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_1);\n", " __Pyx_GIVEREF(__pyx_t_1);\n", " __pyx_t_8 = 0;\n", " __pyx_t_1 = 0;\n", " __pyx_t_1 = PyObject_GetItem(__pyx_v_malla, __pyx_t_9); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;};\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;\n", " __pyx_t_9 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", " __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;\n", " if (__pyx_t_10) {\n", " } else {\n", " __pyx_t_7 = __pyx_t_10;\n", " goto __pyx_L8_bool_binop_done;\n", " }\n", "
+18: malla[j, i] < malla[j+1, i-1] and\n", "
__pyx_t_9 = __Pyx_PyInt_From_unsigned_int(__pyx_v_j); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_9);\n", " __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_2);\n", " PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_9);\n", " __Pyx_GIVEREF(__pyx_t_9);\n", " PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);\n", " __Pyx_GIVEREF(__pyx_t_1);\n", " __pyx_t_9 = 0;\n", " __pyx_t_1 = 0;\n", " __pyx_t_1 = PyObject_GetItem(__pyx_v_malla, __pyx_t_2); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;};\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;\n", " __pyx_t_2 = __Pyx_PyInt_From_long((__pyx_v_j + 1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_2);\n", " __pyx_t_9 = __Pyx_PyInt_From_long((__pyx_v_i - 1)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_9);\n", " __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_8);\n", " PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2);\n", " __Pyx_GIVEREF(__pyx_t_2);\n", " PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_9);\n", " __Pyx_GIVEREF(__pyx_t_9);\n", " __pyx_t_2 = 0;\n", " __pyx_t_9 = 0;\n", " __pyx_t_9 = PyObject_GetItem(__pyx_v_malla, __pyx_t_8); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;};\n", " __Pyx_GOTREF(__pyx_t_9);\n", " __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;\n", " __pyx_t_8 = PyObject_RichCompare(__pyx_t_1, __pyx_t_9, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", " __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;\n", " __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;\n", " if (__pyx_t_10) {\n", " } else {\n", " __pyx_t_7 = __pyx_t_10;\n", " goto __pyx_L8_bool_binop_done;\n", " }\n", "
+19: malla[j, i] < malla[j+1, i] and\n", "
__pyx_t_8 = __Pyx_PyInt_From_unsigned_int(__pyx_v_j); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_8);\n", " __pyx_t_9 = __Pyx_PyInt_From_unsigned_int(__pyx_v_i); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_9);\n", " __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8);\n", " __Pyx_GIVEREF(__pyx_t_8);\n", " PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_9);\n", " __Pyx_GIVEREF(__pyx_t_9);\n", " __pyx_t_8 = 0;\n", " __pyx_t_9 = 0;\n", " __pyx_t_9 = PyObject_GetItem(__pyx_v_malla, __pyx_t_1); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;};\n", " __Pyx_GOTREF(__pyx_t_9);\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", " __pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_j + 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_t_8 = __Pyx_PyInt_From_unsigned_int(__pyx_v_i); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_8);\n", " __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_2);\n", " PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);\n", " __Pyx_GIVEREF(__pyx_t_1);\n", " PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_8);\n", " __Pyx_GIVEREF(__pyx_t_8);\n", " __pyx_t_1 = 0;\n", " __pyx_t_8 = 0;\n", " __pyx_t_8 = PyObject_GetItem(__pyx_v_malla, __pyx_t_2); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;};\n", " __Pyx_GOTREF(__pyx_t_8);\n", " __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;\n", " __pyx_t_2 = PyObject_RichCompare(__pyx_t_9, __pyx_t_8, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;\n", " __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;\n", " __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;\n", " if (__pyx_t_10) {\n", " } else {\n", " __pyx_t_7 = __pyx_t_10;\n", " goto __pyx_L8_bool_binop_done;\n", " }\n", "
+20: malla[j, i] < malla[j+1, i+1]):\n", "
__pyx_t_2 = __Pyx_PyInt_From_unsigned_int(__pyx_v_j); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_2);\n", " __pyx_t_8 = __Pyx_PyInt_From_unsigned_int(__pyx_v_i); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_8);\n", " __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_9);\n", " PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2);\n", " __Pyx_GIVEREF(__pyx_t_2);\n", " PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8);\n", " __Pyx_GIVEREF(__pyx_t_8);\n", " __pyx_t_2 = 0;\n", " __pyx_t_8 = 0;\n", " __pyx_t_8 = PyObject_GetItem(__pyx_v_malla, __pyx_t_9); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;};\n", " __Pyx_GOTREF(__pyx_t_8);\n", " __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;\n", " __pyx_t_9 = __Pyx_PyInt_From_long((__pyx_v_j + 1)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_9);\n", " __pyx_t_2 = __Pyx_PyInt_From_long((__pyx_v_i + 1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_2);\n", " __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_9);\n", " __Pyx_GIVEREF(__pyx_t_9);\n", " PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);\n", " __Pyx_GIVEREF(__pyx_t_2);\n", " __pyx_t_9 = 0;\n", " __pyx_t_2 = 0;\n", " __pyx_t_2 = PyObject_GetItem(__pyx_v_malla, __pyx_t_1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;};\n", " __Pyx_GOTREF(__pyx_t_2);\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", " __pyx_t_1 = PyObject_RichCompare(__pyx_t_8, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;\n", " __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;\n", " __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", " __pyx_t_7 = __pyx_t_10;\n", " __pyx_L8_bool_binop_done:;\n", " if (__pyx_t_7) {\n", "
+21: minimosx.append(i)\n", "
__pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_minimosx, __pyx_t_1); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", "
+22: minimosy.append(j)\n", "
__pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_j); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_minimosy, __pyx_t_1); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", " goto __pyx_L7;\n", " }\n", " __pyx_L7:;\n", " }\n", " }\n", "
23:\n", "
+24: return np.array(minimosx), np.array(minimosy)\n", "
__Pyx_XDECREF(__pyx_r);\n", " __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_2);\n", " __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_8);\n", " __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;\n", " __pyx_t_2 = NULL;\n", " if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {\n", " __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);\n", " if (likely(__pyx_t_2)) {\n", " PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);\n", " __Pyx_INCREF(__pyx_t_2);\n", " __Pyx_INCREF(function);\n", " __Pyx_DECREF_SET(__pyx_t_8, function);\n", " }\n", " }\n", " if (!__pyx_t_2) {\n", " __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_minimosx); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " } else {\n", " __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_9);\n", " PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;\n", " __Pyx_INCREF(__pyx_v_minimosx);\n", " PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_minimosx);\n", " __Pyx_GIVEREF(__pyx_v_minimosx);\n", " __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;\n", " }\n", " __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;\n", " __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_9);\n", " __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_2);\n", " __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;\n", " __pyx_t_9 = NULL;\n", " if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {\n", " __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2);\n", " if (likely(__pyx_t_9)) {\n", " PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);\n", " __Pyx_INCREF(__pyx_t_9);\n", " __Pyx_INCREF(function);\n", " __Pyx_DECREF_SET(__pyx_t_2, function);\n", " }\n", " }\n", " if (!__pyx_t_9) {\n", " __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_minimosy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_8);\n", " } else {\n", " __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_12);\n", " PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_9); __pyx_t_9 = NULL;\n", " __Pyx_INCREF(__pyx_v_minimosy);\n", " PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_minimosy);\n", " __Pyx_GIVEREF(__pyx_v_minimosy);\n", " __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_8);\n", " __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;\n", " }\n", " __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;\n", " __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_2);\n", " PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);\n", " __Pyx_GIVEREF(__pyx_t_1);\n", " PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_8);\n", " __Pyx_GIVEREF(__pyx_t_8);\n", " __pyx_t_1 = 0;\n", " __pyx_t_8 = 0;\n", " __pyx_r = ((PyObject*)__pyx_t_2);\n", " __pyx_t_2 = 0;\n", " goto __pyx_L0;\n", "
25:\n", "
+26: def busca_min_cython3(malla):\n", "
/* Python wrapper */\n", "static PyObject *__pyx_pw_46_cython_magic_b76d9f95ffc9db5b7e97e92e04623490_1busca_min_cython3(PyObject *__pyx_self, PyObject *__pyx_v_malla); /*proto*/\n", "static PyMethodDef __pyx_mdef_46_cython_magic_b76d9f95ffc9db5b7e97e92e04623490_1busca_min_cython3 = {\"busca_min_cython3\", (PyCFunction)__pyx_pw_46_cython_magic_b76d9f95ffc9db5b7e97e92e04623490_1busca_min_cython3, METH_O, 0};\n", "static PyObject *__pyx_pw_46_cython_magic_b76d9f95ffc9db5b7e97e92e04623490_1busca_min_cython3(PyObject *__pyx_self, PyObject *__pyx_v_malla) {\n", " PyObject *__pyx_r = 0;\n", " __Pyx_RefNannyDeclarations\n", " __Pyx_RefNannySetupContext(\"busca_min_cython3 (wrapper)\", 0);\n", " __pyx_r = __pyx_pf_46_cython_magic_b76d9f95ffc9db5b7e97e92e04623490_busca_min_cython3(__pyx_self, ((PyObject *)__pyx_v_malla));\n", "\n", " /* function exit code */\n", " __Pyx_RefNannyFinishContext();\n", " return __pyx_r;\n", "}\n", "\n", "static PyObject *__pyx_pf_46_cython_magic_b76d9f95ffc9db5b7e97e92e04623490_busca_min_cython3(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_malla) {\n", " PyObject *__pyx_r = NULL;\n", " __Pyx_RefNannyDeclarations\n", " __Pyx_RefNannySetupContext(\"busca_min_cython3\", 0);\n", "/* … */\n", " /* function exit code */\n", " __pyx_L1_error:;\n", " __Pyx_XDECREF(__pyx_t_1);\n", " __Pyx_AddTraceback(\"_cython_magic_b76d9f95ffc9db5b7e97e92e04623490.busca_min_cython3\", __pyx_clineno, __pyx_lineno, __pyx_filename);\n", " __pyx_r = NULL;\n", " __pyx_L0:;\n", " __Pyx_XGIVEREF(__pyx_r);\n", " __Pyx_RefNannyFinishContext();\n", " return __pyx_r;\n", "}\n", "/* … */\n", " __pyx_tuple_ = PyTuple_Pack(1, __pyx_n_s_malla); if (unlikely(!__pyx_tuple_)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_tuple_);\n", " __Pyx_GIVEREF(__pyx_tuple_);\n", "/* … */\n", " __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_46_cython_magic_b76d9f95ffc9db5b7e97e92e04623490_1busca_min_cython3, NULL, __pyx_n_s_cython_magic_b76d9f95ffc9db5b7e); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " if (PyDict_SetItem(__pyx_d, __pyx_n_s_busca_min_cython3, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", "
+27: return cbusca_min_cython3(malla)\n", "
__Pyx_XDECREF(__pyx_r);\n", " __pyx_t_1 = __pyx_f_46_cython_magic_b76d9f95ffc9db5b7e97e92e04623490_cbusca_min_cython3(__pyx_v_malla); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_r = __pyx_t_1;\n", " __pyx_t_1 = 0;\n", " goto __pyx_L0;\n", "
Generated by Cython 0.22
\n", "+01: import numpy as np\n", "
__pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", "/* … */\n", " __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", "
02: cimport numpy as np\n", "
03:\n", "
+04: cpdef tuple busca_min_cython4(np.ndarray[double, ndim = 2] malla):\n", "
static PyObject *__pyx_pw_46_cython_magic_db10c794e43f00f7b90f23a8e05093c1_1busca_min_cython4(PyObject *__pyx_self, PyObject *__pyx_v_malla); /*proto*/\n", "static PyObject *__pyx_f_46_cython_magic_db10c794e43f00f7b90f23a8e05093c1_busca_min_cython4(PyArrayObject *__pyx_v_malla, CYTHON_UNUSED int __pyx_skip_dispatch) {\n", " PyObject *__pyx_v_minimosx = 0;\n", " PyObject *__pyx_v_minimosy = 0;\n", " unsigned int __pyx_v_i;\n", " unsigned int __pyx_v_j;\n", " unsigned int __pyx_v_ii;\n", " unsigned int __pyx_v_jj;\n", " unsigned int __pyx_v_start;\n", " __Pyx_LocalBuf_ND __pyx_pybuffernd_malla;\n", " __Pyx_Buffer __pyx_pybuffer_malla;\n", " PyObject *__pyx_r = NULL;\n", " __Pyx_RefNannyDeclarations\n", " __Pyx_RefNannySetupContext(\"busca_min_cython4\", 0);\n", " __pyx_pybuffer_malla.pybuffer.buf = NULL;\n", " __pyx_pybuffer_malla.refcount = 0;\n", " __pyx_pybuffernd_malla.data = NULL;\n", " __pyx_pybuffernd_malla.rcbuffer = &__pyx_pybuffer_malla;\n", " {\n", " __Pyx_BufFmt_StackElem __pyx_stack[1];\n", " if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_malla.rcbuffer->pybuffer, (PyObject*)__pyx_v_malla, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " }\n", " __pyx_pybuffernd_malla.diminfo[0].strides = __pyx_pybuffernd_malla.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_malla.diminfo[0].shape = __pyx_pybuffernd_malla.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_malla.diminfo[1].strides = __pyx_pybuffernd_malla.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_malla.diminfo[1].shape = __pyx_pybuffernd_malla.rcbuffer->pybuffer.shape[1];\n", "/* … */\n", " /* function exit code */\n", " __pyx_L1_error:;\n", " __Pyx_XDECREF(__pyx_t_1);\n", " __Pyx_XDECREF(__pyx_t_42);\n", " __Pyx_XDECREF(__pyx_t_43);\n", " __Pyx_XDECREF(__pyx_t_44);\n", " __Pyx_XDECREF(__pyx_t_45);\n", " { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;\n", " __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);\n", " __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_malla.rcbuffer->pybuffer);\n", " __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}\n", " __Pyx_AddTraceback(\"_cython_magic_db10c794e43f00f7b90f23a8e05093c1.busca_min_cython4\", __pyx_clineno, __pyx_lineno, __pyx_filename);\n", " __pyx_r = 0;\n", " goto __pyx_L2;\n", " __pyx_L0:;\n", " __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_malla.rcbuffer->pybuffer);\n", " __pyx_L2:;\n", " __Pyx_XDECREF(__pyx_v_minimosx);\n", " __Pyx_XDECREF(__pyx_v_minimosy);\n", " __Pyx_XGIVEREF(__pyx_r);\n", " __Pyx_RefNannyFinishContext();\n", " return __pyx_r;\n", "}\n", "\n", "/* Python wrapper */\n", "static PyObject *__pyx_pw_46_cython_magic_db10c794e43f00f7b90f23a8e05093c1_1busca_min_cython4(PyObject *__pyx_self, PyObject *__pyx_v_malla); /*proto*/\n", "static PyObject *__pyx_pw_46_cython_magic_db10c794e43f00f7b90f23a8e05093c1_1busca_min_cython4(PyObject *__pyx_self, PyObject *__pyx_v_malla) {\n", " PyObject *__pyx_r = 0;\n", " __Pyx_RefNannyDeclarations\n", " __Pyx_RefNannySetupContext(\"busca_min_cython4 (wrapper)\", 0);\n", " if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_malla), __pyx_ptype_5numpy_ndarray, 1, \"malla\", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __pyx_r = __pyx_pf_46_cython_magic_db10c794e43f00f7b90f23a8e05093c1_busca_min_cython4(__pyx_self, ((PyArrayObject *)__pyx_v_malla));\n", " CYTHON_UNUSED int __pyx_lineno = 0;\n", " CYTHON_UNUSED const char *__pyx_filename = NULL;\n", " CYTHON_UNUSED int __pyx_clineno = 0;\n", "\n", " /* function exit code */\n", " goto __pyx_L0;\n", " __pyx_L1_error:;\n", " __pyx_r = NULL;\n", " __pyx_L0:;\n", " __Pyx_RefNannyFinishContext();\n", " return __pyx_r;\n", "}\n", "\n", "static PyObject *__pyx_pf_46_cython_magic_db10c794e43f00f7b90f23a8e05093c1_busca_min_cython4(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_malla) {\n", " __Pyx_LocalBuf_ND __pyx_pybuffernd_malla;\n", " __Pyx_Buffer __pyx_pybuffer_malla;\n", " PyObject *__pyx_r = NULL;\n", " __Pyx_RefNannyDeclarations\n", " __Pyx_RefNannySetupContext(\"busca_min_cython4\", 0);\n", " __pyx_pybuffer_malla.pybuffer.buf = NULL;\n", " __pyx_pybuffer_malla.refcount = 0;\n", " __pyx_pybuffernd_malla.data = NULL;\n", " __pyx_pybuffernd_malla.rcbuffer = &__pyx_pybuffer_malla;\n", " {\n", " __Pyx_BufFmt_StackElem __pyx_stack[1];\n", " if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_malla.rcbuffer->pybuffer, (PyObject*)__pyx_v_malla, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " }\n", " __pyx_pybuffernd_malla.diminfo[0].strides = __pyx_pybuffernd_malla.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_malla.diminfo[0].shape = __pyx_pybuffernd_malla.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_malla.diminfo[1].strides = __pyx_pybuffernd_malla.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_malla.diminfo[1].shape = __pyx_pybuffernd_malla.rcbuffer->pybuffer.shape[1];\n", " __Pyx_XDECREF(__pyx_r);\n", " __pyx_t_1 = __pyx_f_46_cython_magic_db10c794e43f00f7b90f23a8e05093c1_busca_min_cython4(__pyx_v_malla, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_r = __pyx_t_1;\n", " __pyx_t_1 = 0;\n", " goto __pyx_L0;\n", "\n", " /* function exit code */\n", " __pyx_L1_error:;\n", " __Pyx_XDECREF(__pyx_t_1);\n", " { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;\n", " __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);\n", " __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_malla.rcbuffer->pybuffer);\n", " __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}\n", " __Pyx_AddTraceback(\"_cython_magic_db10c794e43f00f7b90f23a8e05093c1.busca_min_cython4\", __pyx_clineno, __pyx_lineno, __pyx_filename);\n", " __pyx_r = NULL;\n", " goto __pyx_L2;\n", " __pyx_L0:;\n", " __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_malla.rcbuffer->pybuffer);\n", " __pyx_L2:;\n", " __Pyx_XGIVEREF(__pyx_r);\n", " __Pyx_RefNannyFinishContext();\n", " return __pyx_r;\n", "}\n", "
05: cdef list minimosx, minimosy\n", "
06: cdef unsigned int i, j\n", "
+07: cdef unsigned int ii = malla.shape[1]-1\n", "
__pyx_v_ii = ((__pyx_v_malla->dimensions[1]) - 1);\n", "
+08: cdef unsigned int jj = malla.shape[0]-1\n", "
__pyx_v_jj = ((__pyx_v_malla->dimensions[0]) - 1);\n", "
+09: cdef unsigned int start = 1\n", "
__pyx_v_start = 1;\n", "
+10: minimosx = []\n", "
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_v_minimosx = ((PyObject*)__pyx_t_1);\n", " __pyx_t_1 = 0;\n", "
+11: minimosy = []\n", "
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_v_minimosy = ((PyObject*)__pyx_t_1);\n", " __pyx_t_1 = 0;\n", "
+12: for i in range(start, ii):\n", "
__pyx_t_2 = __pyx_v_ii;\n", " for (__pyx_t_3 = __pyx_v_start; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {\n", " __pyx_v_i = __pyx_t_3;\n", "
+13: for j in range(start, jj):\n", "
__pyx_t_4 = __pyx_v_jj;\n", " for (__pyx_t_5 = __pyx_v_start; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {\n", " __pyx_v_j = __pyx_t_5;\n", "
+14: if (malla[j, i] < malla[j-1, i-1] and\n", "
__pyx_t_7 = __pyx_v_j;\n", " __pyx_t_8 = __pyx_v_i;\n", " __pyx_t_9 = -1;\n", " if (unlikely(__pyx_t_7 >= (size_t)__pyx_pybuffernd_malla.diminfo[0].shape)) __pyx_t_9 = 0;\n", " if (unlikely(__pyx_t_8 >= (size_t)__pyx_pybuffernd_malla.diminfo[1].shape)) __pyx_t_9 = 1;\n", " if (unlikely(__pyx_t_9 != -1)) {\n", " __Pyx_RaiseBufferIndexError(__pyx_t_9);\n", " {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " }\n", " __pyx_t_10 = (__pyx_v_j - 1);\n", " __pyx_t_11 = (__pyx_v_i - 1);\n", " __pyx_t_9 = -1;\n", " if (__pyx_t_10 < 0) {\n", " __pyx_t_10 += __pyx_pybuffernd_malla.diminfo[0].shape;\n", " if (unlikely(__pyx_t_10 < 0)) __pyx_t_9 = 0;\n", " } else if (unlikely(__pyx_t_10 >= __pyx_pybuffernd_malla.diminfo[0].shape)) __pyx_t_9 = 0;\n", " if (__pyx_t_11 < 0) {\n", " __pyx_t_11 += __pyx_pybuffernd_malla.diminfo[1].shape;\n", " if (unlikely(__pyx_t_11 < 0)) __pyx_t_9 = 1;\n", " } else if (unlikely(__pyx_t_11 >= __pyx_pybuffernd_malla.diminfo[1].shape)) __pyx_t_9 = 1;\n", " if (unlikely(__pyx_t_9 != -1)) {\n", " __Pyx_RaiseBufferIndexError(__pyx_t_9);\n", " {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " }\n", " __pyx_t_12 = (((*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_malla.rcbuffer->pybuffer.buf, __pyx_t_7, __pyx_pybuffernd_malla.diminfo[0].strides, __pyx_t_8, __pyx_pybuffernd_malla.diminfo[1].strides)) < (*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_malla.rcbuffer->pybuffer.buf, __pyx_t_10, __pyx_pybuffernd_malla.diminfo[0].strides, __pyx_t_11, __pyx_pybuffernd_malla.diminfo[1].strides))) != 0);\n", " if (__pyx_t_12) {\n", " } else {\n", " __pyx_t_6 = __pyx_t_12;\n", " goto __pyx_L8_bool_binop_done;\n", " }\n", "
+15: malla[j, i] < malla[j-1, i] and\n", "
__pyx_t_13 = __pyx_v_j;\n", " __pyx_t_14 = __pyx_v_i;\n", " __pyx_t_9 = -1;\n", " if (unlikely(__pyx_t_13 >= (size_t)__pyx_pybuffernd_malla.diminfo[0].shape)) __pyx_t_9 = 0;\n", " if (unlikely(__pyx_t_14 >= (size_t)__pyx_pybuffernd_malla.diminfo[1].shape)) __pyx_t_9 = 1;\n", " if (unlikely(__pyx_t_9 != -1)) {\n", " __Pyx_RaiseBufferIndexError(__pyx_t_9);\n", " {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " }\n", " __pyx_t_15 = (__pyx_v_j - 1);\n", " __pyx_t_16 = __pyx_v_i;\n", " __pyx_t_9 = -1;\n", " if (__pyx_t_15 < 0) {\n", " __pyx_t_15 += __pyx_pybuffernd_malla.diminfo[0].shape;\n", " if (unlikely(__pyx_t_15 < 0)) __pyx_t_9 = 0;\n", " } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_malla.diminfo[0].shape)) __pyx_t_9 = 0;\n", " if (unlikely(__pyx_t_16 >= (size_t)__pyx_pybuffernd_malla.diminfo[1].shape)) __pyx_t_9 = 1;\n", " if (unlikely(__pyx_t_9 != -1)) {\n", " __Pyx_RaiseBufferIndexError(__pyx_t_9);\n", " {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " }\n", " __pyx_t_12 = (((*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_malla.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_malla.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_malla.diminfo[1].strides)) < (*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_malla.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_malla.diminfo[0].strides, __pyx_t_16, __pyx_pybuffernd_malla.diminfo[1].strides))) != 0);\n", " if (__pyx_t_12) {\n", " } else {\n", " __pyx_t_6 = __pyx_t_12;\n", " goto __pyx_L8_bool_binop_done;\n", " }\n", "
+16: malla[j, i] < malla[j-1, i+1] and\n", "
__pyx_t_17 = __pyx_v_j;\n", " __pyx_t_18 = __pyx_v_i;\n", " __pyx_t_9 = -1;\n", " if (unlikely(__pyx_t_17 >= (size_t)__pyx_pybuffernd_malla.diminfo[0].shape)) __pyx_t_9 = 0;\n", " if (unlikely(__pyx_t_18 >= (size_t)__pyx_pybuffernd_malla.diminfo[1].shape)) __pyx_t_9 = 1;\n", " if (unlikely(__pyx_t_9 != -1)) {\n", " __Pyx_RaiseBufferIndexError(__pyx_t_9);\n", " {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " }\n", " __pyx_t_19 = (__pyx_v_j - 1);\n", " __pyx_t_20 = (__pyx_v_i + 1);\n", " __pyx_t_9 = -1;\n", " if (__pyx_t_19 < 0) {\n", " __pyx_t_19 += __pyx_pybuffernd_malla.diminfo[0].shape;\n", " if (unlikely(__pyx_t_19 < 0)) __pyx_t_9 = 0;\n", " } else if (unlikely(__pyx_t_19 >= __pyx_pybuffernd_malla.diminfo[0].shape)) __pyx_t_9 = 0;\n", " if (__pyx_t_20 < 0) {\n", " __pyx_t_20 += __pyx_pybuffernd_malla.diminfo[1].shape;\n", " if (unlikely(__pyx_t_20 < 0)) __pyx_t_9 = 1;\n", " } else if (unlikely(__pyx_t_20 >= __pyx_pybuffernd_malla.diminfo[1].shape)) __pyx_t_9 = 1;\n", " if (unlikely(__pyx_t_9 != -1)) {\n", " __Pyx_RaiseBufferIndexError(__pyx_t_9);\n", " {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " }\n", " __pyx_t_12 = (((*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_malla.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_malla.diminfo[0].strides, __pyx_t_18, __pyx_pybuffernd_malla.diminfo[1].strides)) < (*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_malla.rcbuffer->pybuffer.buf, __pyx_t_19, __pyx_pybuffernd_malla.diminfo[0].strides, __pyx_t_20, __pyx_pybuffernd_malla.diminfo[1].strides))) != 0);\n", " if (__pyx_t_12) {\n", " } else {\n", " __pyx_t_6 = __pyx_t_12;\n", " goto __pyx_L8_bool_binop_done;\n", " }\n", "
+17: malla[j, i] < malla[j, i-1] and\n", "
__pyx_t_21 = __pyx_v_j;\n", " __pyx_t_22 = __pyx_v_i;\n", " __pyx_t_9 = -1;\n", " if (unlikely(__pyx_t_21 >= (size_t)__pyx_pybuffernd_malla.diminfo[0].shape)) __pyx_t_9 = 0;\n", " if (unlikely(__pyx_t_22 >= (size_t)__pyx_pybuffernd_malla.diminfo[1].shape)) __pyx_t_9 = 1;\n", " if (unlikely(__pyx_t_9 != -1)) {\n", " __Pyx_RaiseBufferIndexError(__pyx_t_9);\n", " {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " }\n", " __pyx_t_23 = __pyx_v_j;\n", " __pyx_t_24 = (__pyx_v_i - 1);\n", " __pyx_t_9 = -1;\n", " if (unlikely(__pyx_t_23 >= (size_t)__pyx_pybuffernd_malla.diminfo[0].shape)) __pyx_t_9 = 0;\n", " if (__pyx_t_24 < 0) {\n", " __pyx_t_24 += __pyx_pybuffernd_malla.diminfo[1].shape;\n", " if (unlikely(__pyx_t_24 < 0)) __pyx_t_9 = 1;\n", " } else if (unlikely(__pyx_t_24 >= __pyx_pybuffernd_malla.diminfo[1].shape)) __pyx_t_9 = 1;\n", " if (unlikely(__pyx_t_9 != -1)) {\n", " __Pyx_RaiseBufferIndexError(__pyx_t_9);\n", " {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " }\n", " __pyx_t_12 = (((*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_malla.rcbuffer->pybuffer.buf, __pyx_t_21, __pyx_pybuffernd_malla.diminfo[0].strides, __pyx_t_22, __pyx_pybuffernd_malla.diminfo[1].strides)) < (*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_malla.rcbuffer->pybuffer.buf, __pyx_t_23, __pyx_pybuffernd_malla.diminfo[0].strides, __pyx_t_24, __pyx_pybuffernd_malla.diminfo[1].strides))) != 0);\n", " if (__pyx_t_12) {\n", " } else {\n", " __pyx_t_6 = __pyx_t_12;\n", " goto __pyx_L8_bool_binop_done;\n", " }\n", "
+18: malla[j, i] < malla[j, i+1] and\n", "
__pyx_t_25 = __pyx_v_j;\n", " __pyx_t_26 = __pyx_v_i;\n", " __pyx_t_9 = -1;\n", " if (unlikely(__pyx_t_25 >= (size_t)__pyx_pybuffernd_malla.diminfo[0].shape)) __pyx_t_9 = 0;\n", " if (unlikely(__pyx_t_26 >= (size_t)__pyx_pybuffernd_malla.diminfo[1].shape)) __pyx_t_9 = 1;\n", " if (unlikely(__pyx_t_9 != -1)) {\n", " __Pyx_RaiseBufferIndexError(__pyx_t_9);\n", " {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " }\n", " __pyx_t_27 = __pyx_v_j;\n", " __pyx_t_28 = (__pyx_v_i + 1);\n", " __pyx_t_9 = -1;\n", " if (unlikely(__pyx_t_27 >= (size_t)__pyx_pybuffernd_malla.diminfo[0].shape)) __pyx_t_9 = 0;\n", " if (__pyx_t_28 < 0) {\n", " __pyx_t_28 += __pyx_pybuffernd_malla.diminfo[1].shape;\n", " if (unlikely(__pyx_t_28 < 0)) __pyx_t_9 = 1;\n", " } else if (unlikely(__pyx_t_28 >= __pyx_pybuffernd_malla.diminfo[1].shape)) __pyx_t_9 = 1;\n", " if (unlikely(__pyx_t_9 != -1)) {\n", " __Pyx_RaiseBufferIndexError(__pyx_t_9);\n", " {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " }\n", " __pyx_t_12 = (((*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_malla.rcbuffer->pybuffer.buf, __pyx_t_25, __pyx_pybuffernd_malla.diminfo[0].strides, __pyx_t_26, __pyx_pybuffernd_malla.diminfo[1].strides)) < (*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_malla.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_malla.diminfo[0].strides, __pyx_t_28, __pyx_pybuffernd_malla.diminfo[1].strides))) != 0);\n", " if (__pyx_t_12) {\n", " } else {\n", " __pyx_t_6 = __pyx_t_12;\n", " goto __pyx_L8_bool_binop_done;\n", " }\n", "
+19: malla[j, i] < malla[j+1, i-1] and\n", "
__pyx_t_29 = __pyx_v_j;\n", " __pyx_t_30 = __pyx_v_i;\n", " __pyx_t_9 = -1;\n", " if (unlikely(__pyx_t_29 >= (size_t)__pyx_pybuffernd_malla.diminfo[0].shape)) __pyx_t_9 = 0;\n", " if (unlikely(__pyx_t_30 >= (size_t)__pyx_pybuffernd_malla.diminfo[1].shape)) __pyx_t_9 = 1;\n", " if (unlikely(__pyx_t_9 != -1)) {\n", " __Pyx_RaiseBufferIndexError(__pyx_t_9);\n", " {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " }\n", " __pyx_t_31 = (__pyx_v_j + 1);\n", " __pyx_t_32 = (__pyx_v_i - 1);\n", " __pyx_t_9 = -1;\n", " if (__pyx_t_31 < 0) {\n", " __pyx_t_31 += __pyx_pybuffernd_malla.diminfo[0].shape;\n", " if (unlikely(__pyx_t_31 < 0)) __pyx_t_9 = 0;\n", " } else if (unlikely(__pyx_t_31 >= __pyx_pybuffernd_malla.diminfo[0].shape)) __pyx_t_9 = 0;\n", " if (__pyx_t_32 < 0) {\n", " __pyx_t_32 += __pyx_pybuffernd_malla.diminfo[1].shape;\n", " if (unlikely(__pyx_t_32 < 0)) __pyx_t_9 = 1;\n", " } else if (unlikely(__pyx_t_32 >= __pyx_pybuffernd_malla.diminfo[1].shape)) __pyx_t_9 = 1;\n", " if (unlikely(__pyx_t_9 != -1)) {\n", " __Pyx_RaiseBufferIndexError(__pyx_t_9);\n", " {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " }\n", " __pyx_t_12 = (((*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_malla.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_malla.diminfo[0].strides, __pyx_t_30, __pyx_pybuffernd_malla.diminfo[1].strides)) < (*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_malla.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_malla.diminfo[0].strides, __pyx_t_32, __pyx_pybuffernd_malla.diminfo[1].strides))) != 0);\n", " if (__pyx_t_12) {\n", " } else {\n", " __pyx_t_6 = __pyx_t_12;\n", " goto __pyx_L8_bool_binop_done;\n", " }\n", "
+20: malla[j, i] < malla[j+1, i] and\n", "
__pyx_t_33 = __pyx_v_j;\n", " __pyx_t_34 = __pyx_v_i;\n", " __pyx_t_9 = -1;\n", " if (unlikely(__pyx_t_33 >= (size_t)__pyx_pybuffernd_malla.diminfo[0].shape)) __pyx_t_9 = 0;\n", " if (unlikely(__pyx_t_34 >= (size_t)__pyx_pybuffernd_malla.diminfo[1].shape)) __pyx_t_9 = 1;\n", " if (unlikely(__pyx_t_9 != -1)) {\n", " __Pyx_RaiseBufferIndexError(__pyx_t_9);\n", " {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " }\n", " __pyx_t_35 = (__pyx_v_j + 1);\n", " __pyx_t_36 = __pyx_v_i;\n", " __pyx_t_9 = -1;\n", " if (__pyx_t_35 < 0) {\n", " __pyx_t_35 += __pyx_pybuffernd_malla.diminfo[0].shape;\n", " if (unlikely(__pyx_t_35 < 0)) __pyx_t_9 = 0;\n", " } else if (unlikely(__pyx_t_35 >= __pyx_pybuffernd_malla.diminfo[0].shape)) __pyx_t_9 = 0;\n", " if (unlikely(__pyx_t_36 >= (size_t)__pyx_pybuffernd_malla.diminfo[1].shape)) __pyx_t_9 = 1;\n", " if (unlikely(__pyx_t_9 != -1)) {\n", " __Pyx_RaiseBufferIndexError(__pyx_t_9);\n", " {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " }\n", " __pyx_t_12 = (((*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_malla.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_malla.diminfo[0].strides, __pyx_t_34, __pyx_pybuffernd_malla.diminfo[1].strides)) < (*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_malla.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_malla.diminfo[0].strides, __pyx_t_36, __pyx_pybuffernd_malla.diminfo[1].strides))) != 0);\n", " if (__pyx_t_12) {\n", " } else {\n", " __pyx_t_6 = __pyx_t_12;\n", " goto __pyx_L8_bool_binop_done;\n", " }\n", "
+21: malla[j, i] < malla[j+1, i+1]):\n", "
__pyx_t_37 = __pyx_v_j;\n", " __pyx_t_38 = __pyx_v_i;\n", " __pyx_t_9 = -1;\n", " if (unlikely(__pyx_t_37 >= (size_t)__pyx_pybuffernd_malla.diminfo[0].shape)) __pyx_t_9 = 0;\n", " if (unlikely(__pyx_t_38 >= (size_t)__pyx_pybuffernd_malla.diminfo[1].shape)) __pyx_t_9 = 1;\n", " if (unlikely(__pyx_t_9 != -1)) {\n", " __Pyx_RaiseBufferIndexError(__pyx_t_9);\n", " {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " }\n", " __pyx_t_39 = (__pyx_v_j + 1);\n", " __pyx_t_40 = (__pyx_v_i + 1);\n", " __pyx_t_9 = -1;\n", " if (__pyx_t_39 < 0) {\n", " __pyx_t_39 += __pyx_pybuffernd_malla.diminfo[0].shape;\n", " if (unlikely(__pyx_t_39 < 0)) __pyx_t_9 = 0;\n", " } else if (unlikely(__pyx_t_39 >= __pyx_pybuffernd_malla.diminfo[0].shape)) __pyx_t_9 = 0;\n", " if (__pyx_t_40 < 0) {\n", " __pyx_t_40 += __pyx_pybuffernd_malla.diminfo[1].shape;\n", " if (unlikely(__pyx_t_40 < 0)) __pyx_t_9 = 1;\n", " } else if (unlikely(__pyx_t_40 >= __pyx_pybuffernd_malla.diminfo[1].shape)) __pyx_t_9 = 1;\n", " if (unlikely(__pyx_t_9 != -1)) {\n", " __Pyx_RaiseBufferIndexError(__pyx_t_9);\n", " {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " }\n", " __pyx_t_12 = (((*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_malla.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_malla.diminfo[0].strides, __pyx_t_38, __pyx_pybuffernd_malla.diminfo[1].strides)) < (*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_malla.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_malla.diminfo[0].strides, __pyx_t_40, __pyx_pybuffernd_malla.diminfo[1].strides))) != 0);\n", " __pyx_t_6 = __pyx_t_12;\n", " __pyx_L8_bool_binop_done:;\n", " if (__pyx_t_6) {\n", "
+22: minimosx.append(i)\n", "
__pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_t_41 = __Pyx_PyList_Append(__pyx_v_minimosx, __pyx_t_1); if (unlikely(__pyx_t_41 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", "
+23: minimosy.append(j)\n", "
__pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_j); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __pyx_t_41 = __Pyx_PyList_Append(__pyx_v_minimosy, __pyx_t_1); if (unlikely(__pyx_t_41 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n", " goto __pyx_L7;\n", " }\n", " __pyx_L7:;\n", " }\n", " }\n", "
24:\n", "
+25: return np.array(minimosx), np.array(minimosy)\n", "
__Pyx_XDECREF(__pyx_r);\n", " __pyx_t_42 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_42)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_42);\n", " __pyx_t_43 = __Pyx_PyObject_GetAttrStr(__pyx_t_42, __pyx_n_s_array); if (unlikely(!__pyx_t_43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_43);\n", " __Pyx_DECREF(__pyx_t_42); __pyx_t_42 = 0;\n", " __pyx_t_42 = NULL;\n", " if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_43))) {\n", " __pyx_t_42 = PyMethod_GET_SELF(__pyx_t_43);\n", " if (likely(__pyx_t_42)) {\n", " PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_43);\n", " __Pyx_INCREF(__pyx_t_42);\n", " __Pyx_INCREF(function);\n", " __Pyx_DECREF_SET(__pyx_t_43, function);\n", " }\n", " }\n", " if (!__pyx_t_42) {\n", " __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_43, __pyx_v_minimosx); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " } else {\n", " __pyx_t_44 = PyTuple_New(1+1); if (unlikely(!__pyx_t_44)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_44);\n", " PyTuple_SET_ITEM(__pyx_t_44, 0, __pyx_t_42); __Pyx_GIVEREF(__pyx_t_42); __pyx_t_42 = NULL;\n", " __Pyx_INCREF(__pyx_v_minimosx);\n", " PyTuple_SET_ITEM(__pyx_t_44, 0+1, __pyx_v_minimosx);\n", " __Pyx_GIVEREF(__pyx_v_minimosx);\n", " __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_43, __pyx_t_44, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_1);\n", " __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;\n", " }\n", " __Pyx_DECREF(__pyx_t_43); __pyx_t_43 = 0;\n", " __pyx_t_44 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_44)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_44);\n", " __pyx_t_42 = __Pyx_PyObject_GetAttrStr(__pyx_t_44, __pyx_n_s_array); if (unlikely(!__pyx_t_42)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_42);\n", " __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;\n", " __pyx_t_44 = NULL;\n", " if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_42))) {\n", " __pyx_t_44 = PyMethod_GET_SELF(__pyx_t_42);\n", " if (likely(__pyx_t_44)) {\n", " PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_42);\n", " __Pyx_INCREF(__pyx_t_44);\n", " __Pyx_INCREF(function);\n", " __Pyx_DECREF_SET(__pyx_t_42, function);\n", " }\n", " }\n", " if (!__pyx_t_44) {\n", " __pyx_t_43 = __Pyx_PyObject_CallOneArg(__pyx_t_42, __pyx_v_minimosy); if (unlikely(!__pyx_t_43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_43);\n", " } else {\n", " __pyx_t_45 = PyTuple_New(1+1); if (unlikely(!__pyx_t_45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_45);\n", " PyTuple_SET_ITEM(__pyx_t_45, 0, __pyx_t_44); __Pyx_GIVEREF(__pyx_t_44); __pyx_t_44 = NULL;\n", " __Pyx_INCREF(__pyx_v_minimosy);\n", " PyTuple_SET_ITEM(__pyx_t_45, 0+1, __pyx_v_minimosy);\n", " __Pyx_GIVEREF(__pyx_v_minimosy);\n", " __pyx_t_43 = __Pyx_PyObject_Call(__pyx_t_42, __pyx_t_45, NULL); if (unlikely(!__pyx_t_43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_43);\n", " __Pyx_DECREF(__pyx_t_45); __pyx_t_45 = 0;\n", " }\n", " __Pyx_DECREF(__pyx_t_42); __pyx_t_42 = 0;\n", " __pyx_t_42 = PyTuple_New(2); if (unlikely(!__pyx_t_42)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}\n", " __Pyx_GOTREF(__pyx_t_42);\n", " PyTuple_SET_ITEM(__pyx_t_42, 0, __pyx_t_1);\n", " __Pyx_GIVEREF(__pyx_t_1);\n", " PyTuple_SET_ITEM(__pyx_t_42, 1, __pyx_t_43);\n", " __Pyx_GIVEREF(__pyx_t_43);\n", " __pyx_t_1 = 0;\n", " __pyx_t_43 = 0;\n", " __pyx_r = ((PyObject*)__pyx_t_42);\n", " __pyx_t_42 = 0;\n", " goto __pyx_L0;\n", "