Generated by Cython 0.26
Yellow lines hint at Python interaction.
Click on a line that starts with a "+" to see the C code that Cython generated for it.
Raw output: estimates.cpp
+001: """Computation of outside estimates for best-first or A* parsing.
__pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test_2, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
002:
003: - PCFG A* estimate (Klein & Manning 2003).
004: http://aclweb.org/anthology/N03-1016
005: - PLCFRS LR context-summary estimate (Kallmeyer & Maier 2010).
006: http://aclweb.org/anthology/C10-1061
007:
008: The latter ported almost directly from rparse
009: (except for sign reversal of log probs)."""
010:
011: from __future__ import print_function
+012: from math import exp
__pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_n_s_exp); __Pyx_GIVEREF(__pyx_n_s_exp); PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_exp); __pyx_t_4 = __Pyx_Import(__pyx_n_s_math, __pyx_t_3, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_exp); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_exp, __pyx_t_3) < 0) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+013: import numpy as np
__pyx_t_4 = __Pyx_Import(__pyx_n_s_numpy, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_4) < 0) __PYX_ERR(0, 13, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+014: from .util import PyAgenda
__pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_n_s_PyAgenda); __Pyx_GIVEREF(__pyx_n_s_PyAgenda); PyList_SET_ITEM(__pyx_t_4, 0, __pyx_n_s_PyAgenda); __pyx_t_3 = __Pyx_Import(__pyx_n_s_util, __pyx_t_4, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PyAgenda); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 14, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_PyAgenda, __pyx_t_4) < 0) __PYX_ERR(0, 14, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
015:
016: from cython.operator cimport dereference
017: from libc.stdint cimport uint8_t, uint32_t, uint64_t
018: from libc.math cimport HUGE_VAL as INFINITY
019: from libcpp.utility cimport pair
020: from .bit cimport nextset, nextunset, bitcount, bitlength, testbit
021: from .containers cimport SmallChartItemAgenda, Agenda, Chart, Grammar, \
022: Label, Prob, ProbRule, LexicalRule, SmallChartItem
023:
024: # from libc.math cimport isnan, isfinite # conflicts with C++ std::isfinite
025: cdef extern from "<cmath>" namespace "std" nogil:
026: bint isfinite(double v)
027: bint isnan(double v)
028:
029: include "constants.pxi"
030:
031:
+032: cdef class Item:
struct __pyx_obj_8discodop_9estimates_Item {
PyObject_HEAD
int state;
int length;
int lr;
int gaps;
};
033: """Item class used in agenda for computing the outside LR estimate."""
034: cdef int state, length, lr, gaps
035:
+036: def __hash__(Item self):
/* Python wrapper */
static Py_hash_t __pyx_pw_8discodop_9estimates_4Item_1__hash__(PyObject *__pyx_v_self); /*proto*/
static Py_hash_t __pyx_pw_8discodop_9estimates_4Item_1__hash__(PyObject *__pyx_v_self) {
Py_hash_t __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__hash__ (wrapper)", 0);
__pyx_r = __pyx_pf_8discodop_9estimates_4Item___hash__(((struct __pyx_obj_8discodop_9estimates_Item *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static Py_hash_t __pyx_pf_8discodop_9estimates_4Item___hash__(struct __pyx_obj_8discodop_9estimates_Item *__pyx_v_self) {
Py_hash_t __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__hash__", 0);
/* … */
/* function exit code */
__pyx_L0:;
if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
037: return (self.state * 1021
038: + self.length * 571
039: + self.lr * 311
+040: + self.gaps)
__pyx_r = ((((__pyx_v_self->state * 0x3FD) + (__pyx_v_self->length * 0x23B)) + (__pyx_v_self->lr * 0x137)) + __pyx_v_self->gaps); goto __pyx_L0;
041:
+042: def __richcmp__(Item self, Item other, op):
/* Python wrapper */
static PyObject *__pyx_pw_8discodop_9estimates_4Item_3__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_arg_op); /*proto*/
static PyObject *__pyx_pw_8discodop_9estimates_4Item_3__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_arg_op) {
PyObject *__pyx_v_op = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
__pyx_v_op = __Pyx_PyInt_From_int(__pyx_arg_op); if (unlikely(!__pyx_v_op)) __PYX_ERR(0, 42, __pyx_L3_error)
__Pyx_GOTREF(__pyx_v_op);
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
__Pyx_AddTraceback("discodop.estimates.Item.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_self), __pyx_ptype_8discodop_9estimates_Item, 1, "self", 0))) __PYX_ERR(0, 42, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_8discodop_9estimates_Item, 1, "other", 0))) __PYX_ERR(0, 42, __pyx_L1_error)
__pyx_r = __pyx_pf_8discodop_9estimates_4Item_2__richcmp__(((struct __pyx_obj_8discodop_9estimates_Item *)__pyx_v_self), ((struct __pyx_obj_8discodop_9estimates_Item *)__pyx_v_other), ((PyObject *)__pyx_v_op));
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_op);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_8discodop_9estimates_4Item_2__richcmp__(struct __pyx_obj_8discodop_9estimates_Item *__pyx_v_self, struct __pyx_obj_8discodop_9estimates_Item *__pyx_v_other, PyObject *__pyx_v_op) {
PyObject *__pyx_v_a = NULL;
PyObject *__pyx_v_b = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__richcmp__", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("discodop.estimates.Item.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_a);
__Pyx_XDECREF(__pyx_v_b);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+043: if op == 2:
__pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_op, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ }
+044: return (self.state == other.state and self.length == other.length
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = (__pyx_v_self->state == __pyx_v_other->state); if (__pyx_t_2) { } else { __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 44, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L4_bool_binop_done; } /* … */ __pyx_t_2 = (__pyx_v_self->length == __pyx_v_other->length); if (__pyx_t_2) { } else { /* … */ __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 44, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L4_bool_binop_done; }
+045: and self.lr == other.lr and self.gaps == other.gaps)
__pyx_t_2 = (__pyx_v_self->lr == __pyx_v_other->lr);
if (__pyx_t_2) {
} else {
__pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 45, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = __pyx_t_3;
__pyx_t_3 = 0;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_2 = (__pyx_v_self->gaps == __pyx_v_other->gaps);
__pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 45, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = __pyx_t_3;
__pyx_t_3 = 0;
__pyx_L4_bool_binop_done:;
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
+046: a = (self.state, self.length, self.lr, self.gaps)
__pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 46, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->length); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 46, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->lr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 46, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_self->gaps); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 46, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 46, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_5); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_v_a = __pyx_t_6; __pyx_t_6 = 0;
+047: b = (other.state, other.length, other.lr, other.gaps)
__pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_other->state); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 47, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_other->length); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 47, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_other->lr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 47, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_other->gaps); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 47, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 47, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_3); __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_v_b = __pyx_t_1; __pyx_t_1 = 0;
+048: if op == 0:
__pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_op, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ }
+049: return a < b
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyObject_RichCompare(__pyx_v_a, __pyx_v_b, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 49, __pyx_L1_error) __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+050: elif op == 1:
__pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_op, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 50, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 50, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ }
+051: return a <= b
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyObject_RichCompare(__pyx_v_a, __pyx_v_b, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 51, __pyx_L1_error) __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+052: elif op == 3:
__pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_op, __pyx_int_3, 3, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ }
+053: return a != b
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyObject_RichCompare(__pyx_v_a, __pyx_v_b, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+054: elif op == 4:
__pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_op, __pyx_int_4, 4, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ }
+055: return a > b
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyObject_RichCompare(__pyx_v_a, __pyx_v_b, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+056: elif op == 5:
__pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_op, __pyx_int_5, 5, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 56, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ }
+057: return a >= b
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyObject_RichCompare(__pyx_v_a, __pyx_v_b, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
058:
+059: def __repr__(Item self):
/* Python wrapper */
static PyObject *__pyx_pw_8discodop_9estimates_4Item_5__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8discodop_9estimates_4Item_5__repr__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
__pyx_r = __pyx_pf_8discodop_9estimates_4Item_4__repr__(((struct __pyx_obj_8discodop_9estimates_Item *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_8discodop_9estimates_4Item_4__repr__(struct __pyx_obj_8discodop_9estimates_Item *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__repr__", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("discodop.estimates.Item.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+060: return "%s(%4d, %2d, %2d, %2d)" % (self.__class__.__name__,
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_t_6 = PyTuple_New(5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 4, __pyx_t_5); __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_5 = PyUnicode_Format(__pyx_kp_u_s_4d_2d_2d_2d, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0;
+061: self.state, self.length, self.lr, self.gaps)
__pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->state); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 61, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->length); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 61, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->lr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 61, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_self->gaps); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 61, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5);
062:
063:
+064: cdef inline Item new_Item(int state, int length, int lr, int gaps):
static CYTHON_INLINE struct __pyx_obj_8discodop_9estimates_Item *__pyx_f_8discodop_9estimates_new_Item(int __pyx_v_state, int __pyx_v_length, int __pyx_v_lr, int __pyx_v_gaps) {
struct __pyx_obj_8discodop_9estimates_Item *__pyx_v_item = 0;
struct __pyx_obj_8discodop_9estimates_Item *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("new_Item", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("discodop.estimates.new_Item", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_item);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+065: cdef Item item = Item.__new__(Item)
__pyx_t_1 = __pyx_tp_new_8discodop_9estimates_Item(((PyTypeObject *)__pyx_ptype_8discodop_9estimates_Item), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 65, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_8discodop_9estimates_Item)))) __PYX_ERR(0, 65, __pyx_L1_error) __pyx_v_item = ((struct __pyx_obj_8discodop_9estimates_Item *)__pyx_t_1); __pyx_t_1 = 0;
+066: item.state = state
__pyx_v_item->state = __pyx_v_state;
+067: item.length = length
__pyx_v_item->length = __pyx_v_length;
+068: item.lr = lr
__pyx_v_item->lr = __pyx_v_lr;
+069: item.gaps = gaps
__pyx_v_item->gaps = __pyx_v_gaps;
+070: return item
__Pyx_XDECREF(((PyObject *)__pyx_r)); __Pyx_INCREF(((PyObject *)__pyx_v_item)); __pyx_r = __pyx_v_item; goto __pyx_L0;
071:
072:
+073: cdef inline double getoutside(double [:, :, :, :] outside,
static CYTHON_INLINE double __pyx_f_8discodop_9estimates_getoutside(__Pyx_memviewslice __pyx_v_outside, uint32_t __pyx_v_maxlen, uint32_t __pyx_v_slen, Label __pyx_v_label, uint64_t __pyx_v_vec) {
int __pyx_v_length;
int __pyx_v_left;
int __pyx_v_gaps;
int __pyx_v_right;
int __pyx_v_lr;
double __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("getoutside", 0);
/* … */
/* function exit code */
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
074: uint32_t maxlen, uint32_t slen, Label label, uint64_t vec):
075: """Query for outside estimate.
076:
077: NB: if this would be used, it should be in a .pxd with `inline`.
078: However, passing the numpy array may be slow."""
+079: cdef int length = bitcount(vec)
__pyx_v_length = __pyx_f_8discodop_3bit_bitcount(__pyx_v_vec, 0);
+080: cdef int left = nextset(vec, 0)
__pyx_v_left = __pyx_f_8discodop_3bit_nextset(__pyx_v_vec, 0);
+081: cdef int gaps = bitlength(vec) - length - left
__pyx_v_gaps = ((__pyx_f_8discodop_3bit_bitlength(__pyx_v_vec) - __pyx_v_length) - __pyx_v_left);
+082: cdef int right = slen - length - left - gaps
__pyx_v_right = (((__pyx_v_slen - __pyx_v_length) - __pyx_v_left) - __pyx_v_gaps);
+083: cdef int lr = left + right
__pyx_v_lr = (__pyx_v_left + __pyx_v_right);
+084: if slen > maxlen or length + lr + gaps > maxlen:
__pyx_t_2 = ((__pyx_v_slen > __pyx_v_maxlen) != 0);
if (!__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_2 = ((((__pyx_v_length + __pyx_v_lr) + __pyx_v_gaps) > __pyx_v_maxlen) != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+085: return 0.0
__pyx_r = 0.0;
goto __pyx_L0;
+086: return outside[label, length, lr, gaps]
__pyx_t_3 = __pyx_v_label; __pyx_t_4 = __pyx_v_length; __pyx_t_5 = __pyx_v_lr; __pyx_t_6 = __pyx_v_gaps; __pyx_r = (*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_outside.data + __pyx_t_3 * __pyx_v_outside.strides[0]) ) + __pyx_t_4 * __pyx_v_outside.strides[1]) ) + __pyx_t_5 * __pyx_v_outside.strides[2]) ) + __pyx_t_6 * __pyx_v_outside.strides[3]) ))); goto __pyx_L0;
087:
088:
+089: def simpleinside(Grammar grammar, uint32_t maxlen, double [:, :] insidescores):
/* Python wrapper */
static PyObject *__pyx_pw_8discodop_9estimates_1simpleinside(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8discodop_9estimates_simpleinside[] = "simpleinside(Grammar grammar, uint32_t maxlen, __Pyx_memviewslice insidescores)\nCompute simple inside estimate in bottom-up fashion.\n\tHere vec is actually the length (number of terminals in the yield of\n\tthe constituent)\n\tinsidescores is a 2-dimensional matrix initialized with NaN to indicate\n\tvalues that have yet to be computed.";
static PyMethodDef __pyx_mdef_8discodop_9estimates_1simpleinside = {"simpleinside", (PyCFunction)__pyx_pw_8discodop_9estimates_1simpleinside, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8discodop_9estimates_simpleinside};
static PyObject *__pyx_pw_8discodop_9estimates_1simpleinside(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar = 0;
uint32_t __pyx_v_maxlen;
__Pyx_memviewslice __pyx_v_insidescores = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("simpleinside (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_grammar,&__pyx_n_s_maxlen,&__pyx_n_s_insidescores,0};
PyObject* values[3] = {0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_grammar)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_maxlen)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("simpleinside", 1, 3, 3, 1); __PYX_ERR(0, 89, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_insidescores)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("simpleinside", 1, 3, 3, 2); __PYX_ERR(0, 89, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "simpleinside") < 0)) __PYX_ERR(0, 89, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
}
__pyx_v_grammar = ((struct __pyx_obj_8discodop_10containers_Grammar *)values[0]);
__pyx_v_maxlen = __Pyx_PyInt_As_uint32_t(values[1]); if (unlikely((__pyx_v_maxlen == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 89, __pyx_L3_error)
__pyx_v_insidescores = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(values[2]); if (unlikely(!__pyx_v_insidescores.memview)) __PYX_ERR(0, 89, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("simpleinside", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 89, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("discodop.estimates.simpleinside", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grammar), __pyx_ptype_8discodop_10containers_Grammar, 1, "grammar", 0))) __PYX_ERR(0, 89, __pyx_L1_error)
__pyx_r = __pyx_pf_8discodop_9estimates_simpleinside(__pyx_self, __pyx_v_grammar, __pyx_v_maxlen, __pyx_v_insidescores);
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_8discodop_9estimates_simpleinside(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar, uint32_t __pyx_v_maxlen, __Pyx_memviewslice __pyx_v_insidescores) {
SmallChartItemAgenda<double> __pyx_v_agenda;
std::pair<SmallChartItem,double> __pyx_v_entry;
SmallChartItem __pyx_v_I;
double __pyx_v_x;
ProbRule __pyx_v_rule;
size_t __pyx_v_i;
uint64_t __pyx_v_vec;
std::pair<Label,spp::sparse_hash_map<std::string,uint32_t> > __pyx_v_lhsrules;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("simpleinside", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_37);
__Pyx_XDECREF(__pyx_t_38);
__Pyx_XDECREF(__pyx_t_39);
__Pyx_XDECREF(__pyx_t_40);
__Pyx_XDECREF(__pyx_t_41);
__Pyx_AddTraceback("discodop.estimates.simpleinside", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_insidescores, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__51 = PyTuple_Pack(11, __pyx_n_s_grammar, __pyx_n_s_maxlen, __pyx_n_s_insidescores, __pyx_n_s_agenda, __pyx_n_s_entry, __pyx_n_s_I, __pyx_n_s_x, __pyx_n_s_rule, __pyx_n_s_i, __pyx_n_s_vec, __pyx_n_s_lhsrules); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 89, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__51);
__Pyx_GIVEREF(__pyx_tuple__51);
/* … */
__pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_8discodop_9estimates_1simpleinside, NULL, __pyx_n_s_discodop_estimates); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_d, __pyx_n_s_simpleinside, __pyx_t_3) < 0) __PYX_ERR(0, 89, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(3, 0, 11, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__51, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_discodop_estimates_pyx, __pyx_n_s_simpleinside, 89, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 89, __pyx_L1_error)
090: """Compute simple inside estimate in bottom-up fashion.
091: Here vec is actually the length (number of terminals in the yield of
092: the constituent)
093: insidescores is a 2-dimensional matrix initialized with NaN to indicate
094: values that have yet to be computed."""
095: cdef SmallChartItemAgenda[double] agenda
096: cdef pair[SmallChartItem, double] entry
097: cdef SmallChartItem I
098: cdef double x
099: cdef ProbRule rule
100: cdef size_t i
101: cdef uint64_t vec
+102: for lhsrules in grammar.lexicalbylhs:
__pyx_t_2 = &__pyx_v_grammar->lexicalbylhs;
__pyx_t_1 = __pyx_t_2->begin();
for (;;) {
if (!(__pyx_t_1 != __pyx_t_2->end())) break;
__pyx_t_3 = *__pyx_t_1;
++__pyx_t_1;
__pyx_v_lhsrules = __pyx_t_3;
/* … */
}
+103: agenda.setitem(
__pyx_v_agenda.setitem(SmallChartItem(__pyx_v_lhsrules.first, 1), __pyx_t_9);
104: SmallChartItem(lhsrules.first, 1),
+105: min([grammar.lexical[wordlexrule.second].prob
{ /* enter inner scope */
std::pair<std::string,uint32_t> __pyx_7genexpr__pyx_v_wordlexrule;
__pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 105, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
/* … */
__pyx_t_8 = PyFloat_FromDouble((__pyx_v_grammar->lexical[__pyx_7genexpr__pyx_v_wordlexrule.second]).prob); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 105, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_8))) __PYX_ERR(0, 105, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
__pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 105, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4);
__pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_min, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 105, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 105, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+106: for wordlexrule in lhsrules.second]))
__pyx_t_6 = &__pyx_v_lhsrules.second;
__pyx_t_5 = __pyx_t_6->begin();
for (;;) {
if (!(__pyx_t_5 != __pyx_t_6->end())) break;
__pyx_t_7 = *__pyx_t_5;
++__pyx_t_5;
__pyx_7genexpr__pyx_v_wordlexrule = __pyx_t_7;
/* … */
}
} /* exit inner scope */
107: # for lexruleno in grammar.lexicalbylhs[i].values()]))
+108: while not agenda.empty():
while (1) {
__pyx_t_10 = ((!(__pyx_v_agenda.empty() != 0)) != 0);
if (!__pyx_t_10) break;
+109: entry = agenda.pop()
__pyx_v_entry = __pyx_v_agenda.pop();
+110: I = entry.first
__pyx_t_11 = __pyx_v_entry.first;
__pyx_v_I = __pyx_t_11;
+111: x = entry.second
__pyx_t_9 = __pyx_v_entry.second;
__pyx_v_x = __pyx_t_9;
112:
113: # This comparison catches the case when insidescores has a higher
114: # value than x, but also when it is NaN, because all comparisons
115: # against NaN are false.
116: # if not x >= insidescores[I.label, I.vec]:
117: # Mory explicitly:
+118: if (isnan(insidescores[I.label, I.vec])
__pyx_t_12 = __pyx_v_I.label;
__pyx_t_13 = __pyx_v_I.vec;
__pyx_t_14 = (std::isnan((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_insidescores.data + __pyx_t_12 * __pyx_v_insidescores.strides[0]) ) + __pyx_t_13 * __pyx_v_insidescores.strides[1]) )))) != 0);
if (!__pyx_t_14) {
} else {
__pyx_t_10 = __pyx_t_14;
goto __pyx_L10_bool_binop_done;
}
/* … */
if (__pyx_t_10) {
/* … */
}
+119: or x < insidescores[I.label, I.vec]):
__pyx_t_15 = __pyx_v_I.label;
__pyx_t_16 = __pyx_v_I.vec;
__pyx_t_14 = ((__pyx_v_x < (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_insidescores.data + __pyx_t_15 * __pyx_v_insidescores.strides[0]) ) + __pyx_t_16 * __pyx_v_insidescores.strides[1]) )))) != 0);
__pyx_t_10 = __pyx_t_14;
__pyx_L10_bool_binop_done:;
+120: insidescores[I.label, I.vec] = x
__pyx_t_17 = __pyx_v_I.label;
__pyx_t_18 = __pyx_v_I.vec;
*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_insidescores.data + __pyx_t_17 * __pyx_v_insidescores.strides[0]) ) + __pyx_t_18 * __pyx_v_insidescores.strides[1]) )) = __pyx_v_x;
121:
+122: for i in range(grammar.nonterminals):
__pyx_t_19 = __pyx_v_grammar->nonterminals;
for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_19; __pyx_t_20+=1) {
__pyx_v_i = __pyx_t_20;
+123: rule = grammar.unary[I.label][i]
__pyx_v_rule = ((__pyx_v_grammar->unary[__pyx_v_I.label])[__pyx_v_i]);
+124: if rule.rhs1 != I.label:
__pyx_t_10 = ((__pyx_v_rule.rhs1 != __pyx_v_I.label) != 0);
if (__pyx_t_10) {
/* … */
}
+125: break
goto __pyx_L13_break;
+126: elif isnan(insidescores[rule.lhs, I.vec]):
__pyx_t_21 = __pyx_v_rule.lhs;
__pyx_t_22 = __pyx_v_I.vec;
__pyx_t_10 = (std::isnan((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_insidescores.data + __pyx_t_21 * __pyx_v_insidescores.strides[0]) ) + __pyx_t_22 * __pyx_v_insidescores.strides[1]) )))) != 0);
if (__pyx_t_10) {
/* … */
}
}
__pyx_L13_break:;
+127: agenda.setifbetter(
__pyx_v_agenda.setifbetter(SmallChartItem(__pyx_v_rule.lhs, __pyx_v_I.vec), (__pyx_v_rule.prob + __pyx_v_x));
128: SmallChartItem(rule.lhs, I.vec), rule.prob + x)
129:
+130: for i in range(grammar.nonterminals):
__pyx_t_19 = __pyx_v_grammar->nonterminals;
for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_19; __pyx_t_20+=1) {
__pyx_v_i = __pyx_t_20;
+131: rule = grammar.lbinary[I.label][i]
__pyx_v_rule = ((__pyx_v_grammar->lbinary[__pyx_v_I.label])[__pyx_v_i]);
+132: if rule.rhs1 != I.label:
__pyx_t_10 = ((__pyx_v_rule.rhs1 != __pyx_v_I.label) != 0);
if (__pyx_t_10) {
/* … */
}
+133: break
goto __pyx_L16_break;
+134: for vec in range(1, maxlen - I.vec + 1):
__pyx_t_23 = ((__pyx_v_maxlen - __pyx_v_I.vec) + 1);
for (__pyx_t_24 = 1; __pyx_t_24 < __pyx_t_23; __pyx_t_24+=1) {
__pyx_v_vec = __pyx_t_24;
+135: if (isfinite(insidescores[rule.rhs2, vec])
__pyx_t_25 = __pyx_v_rule.rhs2;
__pyx_t_26 = __pyx_v_vec;
__pyx_t_14 = (std::isfinite((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_insidescores.data + __pyx_t_25 * __pyx_v_insidescores.strides[0]) ) + __pyx_t_26 * __pyx_v_insidescores.strides[1]) )))) != 0);
if (__pyx_t_14) {
} else {
__pyx_t_10 = __pyx_t_14;
goto __pyx_L21_bool_binop_done;
}
/* … */
if (__pyx_t_10) {
/* … */
}
}
}
__pyx_L16_break:;
+136: and isnan(insidescores[rule.lhs, I.vec + vec])):
__pyx_t_27 = __pyx_v_rule.lhs;
__pyx_t_28 = (__pyx_v_I.vec + __pyx_v_vec);
__pyx_t_14 = (std::isnan((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_insidescores.data + __pyx_t_27 * __pyx_v_insidescores.strides[0]) ) + __pyx_t_28 * __pyx_v_insidescores.strides[1]) )))) != 0);
__pyx_t_10 = __pyx_t_14;
__pyx_L21_bool_binop_done:;
+137: agenda.setifbetter(
__pyx_v_agenda.setifbetter(SmallChartItem(__pyx_v_rule.lhs, (__pyx_v_I.vec + __pyx_v_vec)), ((__pyx_v_rule.prob + __pyx_v_x) + (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_insidescores.data + __pyx_t_29 * __pyx_v_insidescores.strides[0]) ) + __pyx_t_30 * __pyx_v_insidescores.strides[1]) )))));
138: SmallChartItem(rule.lhs, I.vec + vec),
+139: rule.prob + x + insidescores[rule.rhs2, vec])
__pyx_t_29 = __pyx_v_rule.rhs2;
__pyx_t_30 = __pyx_v_vec;
140:
+141: for i in range(grammar.nonterminals):
__pyx_t_19 = __pyx_v_grammar->nonterminals;
for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_19; __pyx_t_20+=1) {
__pyx_v_i = __pyx_t_20;
+142: rule = grammar.rbinary[I.label][i]
__pyx_v_rule = ((__pyx_v_grammar->rbinary[__pyx_v_I.label])[__pyx_v_i]);
+143: if rule.rhs2 != I.label:
__pyx_t_10 = ((__pyx_v_rule.rhs2 != __pyx_v_I.label) != 0);
if (__pyx_t_10) {
/* … */
}
+144: break
goto __pyx_L24_break;
+145: for vec in range(1, maxlen - I.vec + 1):
__pyx_t_23 = ((__pyx_v_maxlen - __pyx_v_I.vec) + 1);
for (__pyx_t_24 = 1; __pyx_t_24 < __pyx_t_23; __pyx_t_24+=1) {
__pyx_v_vec = __pyx_t_24;
+146: if (isfinite(insidescores[rule.rhs1, vec])
__pyx_t_31 = __pyx_v_rule.rhs1;
__pyx_t_32 = __pyx_v_vec;
__pyx_t_14 = (std::isfinite((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_insidescores.data + __pyx_t_31 * __pyx_v_insidescores.strides[0]) ) + __pyx_t_32 * __pyx_v_insidescores.strides[1]) )))) != 0);
if (__pyx_t_14) {
} else {
__pyx_t_10 = __pyx_t_14;
goto __pyx_L29_bool_binop_done;
}
/* … */
if (__pyx_t_10) {
/* … */
}
}
}
__pyx_L24_break:;
}
+147: and isnan(insidescores[rule.lhs, vec + I.vec])):
__pyx_t_33 = __pyx_v_rule.lhs;
__pyx_t_34 = (__pyx_v_vec + __pyx_v_I.vec);
__pyx_t_14 = (std::isnan((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_insidescores.data + __pyx_t_33 * __pyx_v_insidescores.strides[0]) ) + __pyx_t_34 * __pyx_v_insidescores.strides[1]) )))) != 0);
__pyx_t_10 = __pyx_t_14;
__pyx_L29_bool_binop_done:;
+148: agenda.setifbetter(
__pyx_v_agenda.setifbetter(SmallChartItem(__pyx_v_rule.lhs, (__pyx_v_vec + __pyx_v_I.vec)), ((__pyx_v_rule.prob + (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_insidescores.data + __pyx_t_35 * __pyx_v_insidescores.strides[0]) ) + __pyx_t_36 * __pyx_v_insidescores.strides[1]) )))) + __pyx_v_x));
149: SmallChartItem(rule.lhs, vec + I.vec),
+150: rule.prob + insidescores[rule.rhs1, vec] + x)
__pyx_t_35 = __pyx_v_rule.rhs1;
__pyx_t_36 = __pyx_v_vec;
151:
152: # anything not reached so far is still NaN and gets probability zero:
+153: insidescores.base[np.isnan(insidescores.base)] = np.inf
__pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_inf); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_insidescores, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_37 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_base); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_37); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_38 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_38); __pyx_t_39 = __Pyx_PyObject_GetAttrStr(__pyx_t_38, __pyx_n_s_isnan); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_39); __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0; __pyx_t_38 = __pyx_memoryview_fromslice(__pyx_v_insidescores, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_38)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_38); __pyx_t_40 = __Pyx_PyObject_GetAttrStr(__pyx_t_38, __pyx_n_s_base); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_40); __Pyx_DECREF(__pyx_t_38); __pyx_t_38 = 0; __pyx_t_38 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_39))) { __pyx_t_38 = PyMethod_GET_SELF(__pyx_t_39); if (likely(__pyx_t_38)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_39); __Pyx_INCREF(__pyx_t_38); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_39, function); } } if (!__pyx_t_38) { __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_39, __pyx_t_40); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0; __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_39)) { PyObject *__pyx_temp[2] = {__pyx_t_38, __pyx_t_40}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_39, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_38); __pyx_t_38 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_39)) { PyObject *__pyx_temp[2] = {__pyx_t_38, __pyx_t_40}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_39, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_38); __pyx_t_38 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0; } else #endif { __pyx_t_41 = PyTuple_New(1+1); if (unlikely(!__pyx_t_41)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_41); __Pyx_GIVEREF(__pyx_t_38); PyTuple_SET_ITEM(__pyx_t_41, 0, __pyx_t_38); __pyx_t_38 = NULL; __Pyx_GIVEREF(__pyx_t_40); PyTuple_SET_ITEM(__pyx_t_41, 0+1, __pyx_t_40); __pyx_t_40 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_39, __pyx_t_41, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_41); __pyx_t_41 = 0; } } __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0; if (unlikely(PyObject_SetItem(__pyx_t_37, __pyx_t_4, __pyx_t_8) < 0)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
154:
155:
+156: def inside(Grammar grammar, uint32_t maxlen, dict insidescores):
/* Python wrapper */
static PyObject *__pyx_pw_8discodop_9estimates_3inside(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8discodop_9estimates_2inside[] = "inside(Grammar grammar, uint32_t maxlen, dict insidescores)\nCompute inside estimate in bottom-up fashion, with full bit vectors.\n\n\t(not used).";
static PyMethodDef __pyx_mdef_8discodop_9estimates_3inside = {"inside", (PyCFunction)__pyx_pw_8discodop_9estimates_3inside, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8discodop_9estimates_2inside};
static PyObject *__pyx_pw_8discodop_9estimates_3inside(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar = 0;
uint32_t __pyx_v_maxlen;
PyObject *__pyx_v_insidescores = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("inside (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_grammar,&__pyx_n_s_maxlen,&__pyx_n_s_insidescores,0};
PyObject* values[3] = {0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_grammar)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_maxlen)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("inside", 1, 3, 3, 1); __PYX_ERR(0, 156, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_insidescores)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("inside", 1, 3, 3, 2); __PYX_ERR(0, 156, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "inside") < 0)) __PYX_ERR(0, 156, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
}
__pyx_v_grammar = ((struct __pyx_obj_8discodop_10containers_Grammar *)values[0]);
__pyx_v_maxlen = __Pyx_PyInt_As_uint32_t(values[1]); if (unlikely((__pyx_v_maxlen == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 156, __pyx_L3_error)
__pyx_v_insidescores = ((PyObject*)values[2]);
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("inside", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 156, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("discodop.estimates.inside", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grammar), __pyx_ptype_8discodop_10containers_Grammar, 1, "grammar", 0))) __PYX_ERR(0, 156, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_insidescores), (&PyDict_Type), 1, "insidescores", 1))) __PYX_ERR(0, 156, __pyx_L1_error)
__pyx_r = __pyx_pf_8discodop_9estimates_2inside(__pyx_self, __pyx_v_grammar, __pyx_v_maxlen, __pyx_v_insidescores);
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_8discodop_9estimates_2inside(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar, uint32_t __pyx_v_maxlen, PyObject *__pyx_v_insidescores) {
SmallChartItem __pyx_v_I;
SmallChartItemAgenda<double> __pyx_v_agenda;
std::pair<SmallChartItem,double> __pyx_v_entry;
size_t __pyx_v_i;
std::pair<Label,spp::sparse_hash_map<std::string,uint32_t> > __pyx_v_lhsrules;
double __pyx_v_x;
ProbRule __pyx_v_rule;
PyObject *__pyx_v_vec = NULL;
uint64_t __pyx_v_left;
uint64_t __pyx_v_right;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("inside", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_XDECREF(__pyx_t_18);
__Pyx_AddTraceback("discodop.estimates.inside", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_vec);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__53 = PyTuple_Pack(13, __pyx_n_s_grammar, __pyx_n_s_maxlen, __pyx_n_s_insidescores, __pyx_n_s_I, __pyx_n_s_agenda, __pyx_n_s_entry, __pyx_n_s_i, __pyx_n_s_lhsrules, __pyx_n_s_x, __pyx_n_s_rule, __pyx_n_s_vec, __pyx_n_s_left, __pyx_n_s_right); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 156, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__53);
__Pyx_GIVEREF(__pyx_tuple__53);
/* … */
__pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_8discodop_9estimates_3inside, NULL, __pyx_n_s_discodop_estimates); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 156, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_d, __pyx_n_s_inside_2, __pyx_t_3) < 0) __PYX_ERR(0, 156, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(3, 0, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_discodop_estimates_pyx, __pyx_n_s_inside_2, 156, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(0, 156, __pyx_L1_error)
157: """Compute inside estimate in bottom-up fashion, with full bit vectors.
158:
159: (not used)."""
160: cdef SmallChartItem I
161: cdef SmallChartItemAgenda[double] agenda
162: cdef pair[SmallChartItem, double] entry
163: cdef size_t i
164:
+165: for lhsrules in grammar.lexicalbylhs:
__pyx_t_2 = &__pyx_v_grammar->lexicalbylhs;
__pyx_t_1 = __pyx_t_2->begin();
for (;;) {
if (!(__pyx_t_1 != __pyx_t_2->end())) break;
__pyx_t_3 = *__pyx_t_1;
++__pyx_t_1;
__pyx_v_lhsrules = __pyx_t_3;
/* … */
}
+166: agenda.setitem(
__pyx_v_agenda.setitem(SmallChartItem(__pyx_v_lhsrules.first, 1), __pyx_t_9);
167: SmallChartItem(lhsrules.first, 1),
+168: min([grammar.lexical[wordlexrule.second].prob
{ /* enter inner scope */
std::pair<std::string,uint32_t> __pyx_8genexpr1__pyx_v_wordlexrule;
__pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 168, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
/* … */
__pyx_t_8 = PyFloat_FromDouble((__pyx_v_grammar->lexical[__pyx_8genexpr1__pyx_v_wordlexrule.second]).prob); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 168, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_8))) __PYX_ERR(0, 168, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
__pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 168, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4);
__pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_min, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 168, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 168, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+169: for wordlexrule in lhsrules.second]))
__pyx_t_6 = &__pyx_v_lhsrules.second;
__pyx_t_5 = __pyx_t_6->begin();
for (;;) {
if (!(__pyx_t_5 != __pyx_t_6->end())) break;
__pyx_t_7 = *__pyx_t_5;
++__pyx_t_5;
__pyx_8genexpr1__pyx_v_wordlexrule = __pyx_t_7;
/* … */
}
} /* exit inner scope */
170:
+171: while not agenda.empty():
while (1) {
__pyx_t_10 = ((!(__pyx_v_agenda.empty() != 0)) != 0);
if (!__pyx_t_10) break;
+172: entry = agenda.pop()
__pyx_v_entry = __pyx_v_agenda.pop();
+173: I = entry.first
__pyx_t_11 = __pyx_v_entry.first;
__pyx_v_I = __pyx_t_11;
+174: x = entry.second
__pyx_t_9 = __pyx_v_entry.second;
__pyx_v_x = __pyx_t_9;
+175: if I.label not in insidescores:
__pyx_t_4 = __Pyx_PyInt_From_uint32_t(__pyx_v_I.label); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
__PYX_ERR(0, 175, __pyx_L1_error)
}
__pyx_t_10 = (__Pyx_PyDict_ContainsTF(__pyx_t_4, __pyx_v_insidescores, Py_NE)); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_12 = (__pyx_t_10 != 0);
if (__pyx_t_12) {
/* … */
}
+176: insidescores[I.label] = {}
__pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(__pyx_v_insidescores == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 176, __pyx_L1_error) } __pyx_t_8 = __Pyx_PyInt_From_uint32_t(__pyx_v_I.label); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (unlikely(PyDict_SetItem(__pyx_v_insidescores, __pyx_t_8, __pyx_t_4) < 0)) __PYX_ERR(0, 176, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+177: if x < insidescores[I.label].get(I.vec, INFINITY):
__pyx_t_4 = PyFloat_FromDouble(__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(__pyx_v_insidescores == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 177, __pyx_L1_error) } __pyx_t_13 = __Pyx_PyInt_From_uint32_t(__pyx_v_I.label); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_14 = __Pyx_PyDict_GetItem(__pyx_v_insidescores, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = __Pyx_PyInt_From_uint64_t(__pyx_v_I.vec); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_15 = PyFloat_FromDouble(HUGE_VAL); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_16 = NULL; __pyx_t_17 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) { __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_16)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_16); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); __pyx_t_17 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_13)) { PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_t_14, __pyx_t_15}; __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) { PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_t_14, __pyx_t_15}; __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_17, 2+__pyx_t_17); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } else #endif { __pyx_t_18 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); if (__pyx_t_16) { __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_16); __pyx_t_16 = NULL; } __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_18, 0+__pyx_t_17, __pyx_t_14); __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_17, __pyx_t_15); __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_18, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = PyObject_RichCompare(__pyx_t_4, __pyx_t_8, Py_LT); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (__pyx_t_12) { /* … */ }
+178: insidescores[I.label][I.vec] = x
__pyx_t_13 = PyFloat_FromDouble(__pyx_v_x); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (unlikely(__pyx_v_insidescores == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 178, __pyx_L1_error) } __pyx_t_8 = __Pyx_PyInt_From_uint32_t(__pyx_v_I.label); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_insidescores, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(__Pyx_SetItemInt(__pyx_t_4, __pyx_v_I.vec, __pyx_t_13, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 0) < 0)) __PYX_ERR(0, 178, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
179:
+180: for i in range(grammar.nonterminals):
__pyx_t_19 = __pyx_v_grammar->nonterminals;
for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_19; __pyx_t_20+=1) {
__pyx_v_i = __pyx_t_20;
+181: rule = grammar.unary[I.label][i]
__pyx_v_rule = ((__pyx_v_grammar->unary[__pyx_v_I.label])[__pyx_v_i]);
+182: if rule.rhs1 != I.label:
__pyx_t_12 = ((__pyx_v_rule.rhs1 != __pyx_v_I.label) != 0);
if (__pyx_t_12) {
/* … */
}
+183: break
goto __pyx_L12_break;
+184: elif (rule.lhs not in insidescores
__pyx_t_13 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.lhs); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 184, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
/* … */
__pyx_t_21 = (__pyx_t_10 != 0);
if (!__pyx_t_21) {
} else {
__pyx_t_12 = __pyx_t_21;
goto __pyx_L14_bool_binop_done;
}
/* … */
if (__pyx_t_12) {
/* … */
}
}
__pyx_L12_break:;
+185: or I.vec not in insidescores[rule.lhs]):
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
__PYX_ERR(0, 185, __pyx_L1_error)
}
__pyx_t_10 = (__Pyx_PyDict_ContainsTF(__pyx_t_13, __pyx_v_insidescores, Py_NE)); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 184, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
/* … */
__pyx_t_13 = __Pyx_PyInt_From_uint64_t(__pyx_v_I.vec); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 185, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 185, __pyx_L1_error)
}
__pyx_t_4 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.lhs); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 185, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_8 = __Pyx_PyDict_GetItem(__pyx_v_insidescores, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 185, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_21 = (__Pyx_PySequence_ContainsTF(__pyx_t_13, __pyx_t_8, Py_NE)); if (unlikely(__pyx_t_21 < 0)) __PYX_ERR(0, 185, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_10 = (__pyx_t_21 != 0);
__pyx_t_12 = __pyx_t_10;
__pyx_L14_bool_binop_done:;
+186: agenda.setifbetter(
__pyx_v_agenda.setifbetter(SmallChartItem(__pyx_v_rule.lhs, __pyx_v_I.vec), (__pyx_v_rule.prob + __pyx_v_x));
187: SmallChartItem(rule.lhs, I.vec), rule.prob + x)
188:
+189: for i in range(grammar.nonterminals):
__pyx_t_19 = __pyx_v_grammar->nonterminals;
for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_19; __pyx_t_20+=1) {
__pyx_v_i = __pyx_t_20;
+190: rule = grammar.lbinary[I.label][i]
__pyx_v_rule = ((__pyx_v_grammar->lbinary[__pyx_v_I.label])[__pyx_v_i]);
+191: if rule.rhs1 != I.label:
__pyx_t_12 = ((__pyx_v_rule.rhs1 != __pyx_v_I.label) != 0);
if (__pyx_t_12) {
/* … */
}
+192: break
goto __pyx_L17_break;
+193: elif rule.rhs2 not in insidescores:
__pyx_t_8 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.rhs2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 193, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
__PYX_ERR(0, 193, __pyx_L1_error)
}
__pyx_t_12 = (__Pyx_PyDict_ContainsTF(__pyx_t_8, __pyx_v_insidescores, Py_NE)); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 193, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_10 = (__pyx_t_12 != 0);
if (__pyx_t_10) {
/* … */
}
+194: continue
goto __pyx_L16_continue;
+195: for vec in insidescores[rule.rhs2]:
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 195, __pyx_L1_error)
}
__pyx_t_8 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.rhs2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 195, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_13 = __Pyx_PyDict_GetItem(__pyx_v_insidescores, __pyx_t_8); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 195, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (likely(PyList_CheckExact(__pyx_t_13)) || PyTuple_CheckExact(__pyx_t_13)) {
__pyx_t_8 = __pyx_t_13; __Pyx_INCREF(__pyx_t_8); __pyx_t_22 = 0;
__pyx_t_23 = NULL;
} else {
__pyx_t_22 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_13); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 195, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_23 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 195, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
for (;;) {
if (likely(!__pyx_t_23)) {
if (likely(PyList_CheckExact(__pyx_t_8))) {
if (__pyx_t_22 >= PyList_GET_SIZE(__pyx_t_8)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_13 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_22); __Pyx_INCREF(__pyx_t_13); __pyx_t_22++; if (unlikely(0 < 0)) __PYX_ERR(0, 195, __pyx_L1_error)
#else
__pyx_t_13 = PySequence_ITEM(__pyx_t_8, __pyx_t_22); __pyx_t_22++; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 195, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
#endif
} else {
if (__pyx_t_22 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_13 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_22); __Pyx_INCREF(__pyx_t_13); __pyx_t_22++; if (unlikely(0 < 0)) __PYX_ERR(0, 195, __pyx_L1_error)
#else
__pyx_t_13 = PySequence_ITEM(__pyx_t_8, __pyx_t_22); __pyx_t_22++; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 195, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
#endif
}
} else {
__pyx_t_13 = __pyx_t_23(__pyx_t_8);
if (unlikely(!__pyx_t_13)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
else __PYX_ERR(0, 195, __pyx_L1_error)
}
break;
}
__Pyx_GOTREF(__pyx_t_13);
}
__Pyx_XDECREF_SET(__pyx_v_vec, __pyx_t_13);
__pyx_t_13 = 0;
/* … */
}
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_L16_continue:;
}
__pyx_L17_break:;
+196: left = insideconcat(I.vec, vec, rule, grammar, maxlen)
__pyx_t_24 = __Pyx_PyInt_As_uint64_t(__pyx_v_vec); if (unlikely((__pyx_t_24 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 196, __pyx_L1_error)
__pyx_v_left = __pyx_f_8discodop_9estimates_insideconcat(__pyx_v_I.vec, __pyx_t_24, __pyx_v_rule, __pyx_v_grammar, __pyx_v_maxlen);
+197: if left and (rule.lhs not in insidescores
__pyx_t_12 = (__pyx_v_left != 0);
if (__pyx_t_12) {
} else {
__pyx_t_10 = __pyx_t_12;
goto __pyx_L22_bool_binop_done;
}
/* … */
__pyx_t_13 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.lhs); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 197, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
/* … */
__pyx_t_21 = (__pyx_t_12 != 0);
if (!__pyx_t_21) {
} else {
__pyx_t_10 = __pyx_t_21;
goto __pyx_L22_bool_binop_done;
}
/* … */
if (__pyx_t_10) {
/* … */
}
+198: or left not in insidescores[rule.lhs]):
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
__PYX_ERR(0, 198, __pyx_L1_error)
}
__pyx_t_12 = (__Pyx_PyDict_ContainsTF(__pyx_t_13, __pyx_v_insidescores, Py_NE)); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 197, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
/* … */
__pyx_t_13 = __Pyx_PyInt_From_uint64_t(__pyx_v_left); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 198, __pyx_L1_error)
}
__pyx_t_4 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.lhs); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_18 = __Pyx_PyDict_GetItem(__pyx_v_insidescores, __pyx_t_4); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_18);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_21 = (__Pyx_PySequence_ContainsTF(__pyx_t_13, __pyx_t_18, Py_NE)); if (unlikely(__pyx_t_21 < 0)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
__pyx_t_12 = (__pyx_t_21 != 0);
__pyx_t_10 = __pyx_t_12;
__pyx_L22_bool_binop_done:;
+199: agenda.setifbetter(SmallChartItem(rule.lhs, left),
__pyx_v_agenda.setifbetter(SmallChartItem(__pyx_v_rule.lhs, __pyx_v_left), __pyx_t_9);
+200: rule.prob + x + insidescores[rule.rhs2][vec])
__pyx_t_18 = PyFloat_FromDouble((__pyx_v_rule.prob + __pyx_v_x)); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); if (unlikely(__pyx_v_insidescores == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 200, __pyx_L1_error) } __pyx_t_13 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.rhs2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_insidescores, __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = PyObject_GetItem(__pyx_t_4, __pyx_v_vec); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyNumber_Add(__pyx_t_18, __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 200, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
201:
+202: for i in range(grammar.nonterminals):
__pyx_t_19 = __pyx_v_grammar->nonterminals;
for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_19; __pyx_t_20+=1) {
__pyx_v_i = __pyx_t_20;
+203: rule = grammar.rbinary[I.label][i]
__pyx_v_rule = ((__pyx_v_grammar->rbinary[__pyx_v_I.label])[__pyx_v_i]);
+204: if rule.rhs2 != I.label:
__pyx_t_10 = ((__pyx_v_rule.rhs2 != __pyx_v_I.label) != 0);
if (__pyx_t_10) {
/* … */
}
+205: break
goto __pyx_L26_break;
+206: elif rule.rhs1 not in insidescores:
__pyx_t_8 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.rhs1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 206, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
__PYX_ERR(0, 206, __pyx_L1_error)
}
__pyx_t_10 = (__Pyx_PyDict_ContainsTF(__pyx_t_8, __pyx_v_insidescores, Py_NE)); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 206, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_12 = (__pyx_t_10 != 0);
if (__pyx_t_12) {
/* … */
}
+207: continue
goto __pyx_L25_continue;
+208: for vec in insidescores[rule.rhs1]:
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 208, __pyx_L1_error)
}
__pyx_t_8 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.rhs1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 208, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_insidescores, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 208, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
__pyx_t_8 = __pyx_t_4; __Pyx_INCREF(__pyx_t_8); __pyx_t_22 = 0;
__pyx_t_23 = NULL;
} else {
__pyx_t_22 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 208, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_23 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 208, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
for (;;) {
if (likely(!__pyx_t_23)) {
if (likely(PyList_CheckExact(__pyx_t_8))) {
if (__pyx_t_22 >= PyList_GET_SIZE(__pyx_t_8)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_4 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_22); __Pyx_INCREF(__pyx_t_4); __pyx_t_22++; if (unlikely(0 < 0)) __PYX_ERR(0, 208, __pyx_L1_error)
#else
__pyx_t_4 = PySequence_ITEM(__pyx_t_8, __pyx_t_22); __pyx_t_22++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 208, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
#endif
} else {
if (__pyx_t_22 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_22); __Pyx_INCREF(__pyx_t_4); __pyx_t_22++; if (unlikely(0 < 0)) __PYX_ERR(0, 208, __pyx_L1_error)
#else
__pyx_t_4 = PySequence_ITEM(__pyx_t_8, __pyx_t_22); __pyx_t_22++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 208, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
#endif
}
} else {
__pyx_t_4 = __pyx_t_23(__pyx_t_8);
if (unlikely(!__pyx_t_4)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
else __PYX_ERR(0, 208, __pyx_L1_error)
}
break;
}
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_XDECREF_SET(__pyx_v_vec, __pyx_t_4);
__pyx_t_4 = 0;
/* … */
}
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_L25_continue:;
}
__pyx_L26_break:;
}
+209: right = insideconcat(vec, I.vec, rule, grammar, maxlen)
__pyx_t_24 = __Pyx_PyInt_As_uint64_t(__pyx_v_vec); if (unlikely((__pyx_t_24 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 209, __pyx_L1_error)
__pyx_v_right = __pyx_f_8discodop_9estimates_insideconcat(__pyx_t_24, __pyx_v_I.vec, __pyx_v_rule, __pyx_v_grammar, __pyx_v_maxlen);
+210: if right and (rule.lhs not in insidescores
__pyx_t_10 = (__pyx_v_right != 0);
if (__pyx_t_10) {
} else {
__pyx_t_12 = __pyx_t_10;
goto __pyx_L31_bool_binop_done;
}
/* … */
__pyx_t_4 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.lhs); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 210, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
/* … */
__pyx_t_21 = (__pyx_t_10 != 0);
if (!__pyx_t_21) {
} else {
__pyx_t_12 = __pyx_t_21;
goto __pyx_L31_bool_binop_done;
}
/* … */
if (__pyx_t_12) {
/* … */
}
+211: or right not in insidescores[rule.lhs]):
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
__PYX_ERR(0, 211, __pyx_L1_error)
}
__pyx_t_10 = (__Pyx_PyDict_ContainsTF(__pyx_t_4, __pyx_v_insidescores, Py_NE)); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 210, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
__pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_right); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 211, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 211, __pyx_L1_error)
}
__pyx_t_13 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.lhs); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 211, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
__pyx_t_18 = __Pyx_PyDict_GetItem(__pyx_v_insidescores, __pyx_t_13); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 211, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_18);
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
__pyx_t_21 = (__Pyx_PySequence_ContainsTF(__pyx_t_4, __pyx_t_18, Py_NE)); if (unlikely(__pyx_t_21 < 0)) __PYX_ERR(0, 211, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
__pyx_t_10 = (__pyx_t_21 != 0);
__pyx_t_12 = __pyx_t_10;
__pyx_L31_bool_binop_done:;
+212: agenda.setifbetter(SmallChartItem(rule.lhs, right),
__pyx_v_agenda.setifbetter(SmallChartItem(__pyx_v_rule.lhs, __pyx_v_right), __pyx_t_9);
+213: rule.prob + insidescores[rule.rhs1][vec] + x)
__pyx_t_18 = PyFloat_FromDouble(__pyx_v_rule.prob); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); if (unlikely(__pyx_v_insidescores == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 213, __pyx_L1_error) } __pyx_t_4 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.rhs1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_13 = __Pyx_PyDict_GetItem(__pyx_v_insidescores, __pyx_t_4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyObject_GetItem(__pyx_t_13, __pyx_v_vec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = PyNumber_Add(__pyx_t_18, __pyx_t_4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_18 = PyNumber_Add(__pyx_t_13, __pyx_t_4); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_18); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 213, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
214:
+215: return insidescores
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_insidescores); __pyx_r = __pyx_v_insidescores; goto __pyx_L0;
216:
217:
+218: cdef inline uint64_t insideconcat(uint64_t a, uint64_t b, ProbRule rule,
static CYTHON_INLINE uint64_t __pyx_f_8discodop_9estimates_insideconcat(uint64_t __pyx_v_a, uint64_t __pyx_v_b, ProbRule __pyx_v_rule, struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar, uint32_t __pyx_v_maxlen) {
int __pyx_v_subarg;
int __pyx_v_resultpos;
uint64_t __pyx_v_result;
PyObject *__pyx_v_l = NULL;
PyObject *__pyx_v_r = NULL;
int __pyx_v_x;
uint64_t __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("insideconcat", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_WriteUnraisable("discodop.estimates.insideconcat", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_l);
__Pyx_XDECREF(__pyx_v_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
219: Grammar grammar, uint32_t maxlen):
220: cdef int subarg, resultpos
221: cdef uint64_t result
+222: if grammar.fanout[rule.lhs] + bitcount(a) + bitcount(b) > maxlen + 1:
__pyx_t_1 = (((((__pyx_v_grammar->fanout[__pyx_v_rule.lhs]) + __pyx_f_8discodop_3bit_bitcount(__pyx_v_a, 0)) + __pyx_f_8discodop_3bit_bitcount(__pyx_v_b, 0)) > (__pyx_v_maxlen + 1)) != 0);
if (__pyx_t_1) {
/* … */
}
+223: return 0
__pyx_r = 0;
goto __pyx_L0;
+224: result = resultpos = l = r = 0
__pyx_v_result = 0; __pyx_v_resultpos = 0; __Pyx_INCREF(__pyx_int_0); __pyx_v_l = __pyx_int_0; __Pyx_INCREF(__pyx_int_0); __pyx_v_r = __pyx_int_0;
+225: for x in range(bitlength(rule.lengths)):
__pyx_t_2 = __pyx_f_8discodop_3bit_bitlength(__pyx_v_rule.lengths);
for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
__pyx_v_x = __pyx_t_3;
+226: if testbit(rule.args, x) == 0:
__pyx_t_1 = ((__pyx_fuse_2__pyx_f_8discodop_3bit_testbit(__pyx_v_rule.args, __pyx_v_x) == 0) != 0);
if (__pyx_t_1) {
/* … */
goto __pyx_L6;
}
+227: subarg = nextunset(a, l) - l
__pyx_t_4 = __Pyx_PyInt_As_uint32_t(__pyx_v_l); if (unlikely((__pyx_t_4 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 227, __pyx_L1_error) __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_f_8discodop_3bit_nextunset(__pyx_v_a, __pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyNumber_Subtract(__pyx_t_5, __pyx_v_l); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_subarg = __pyx_t_7;
+228: result |= (1UL << subarg) - 1UL << resultpos
__pyx_v_result = (__pyx_v_result | (((1UL << __pyx_v_subarg) - 1UL) << __pyx_v_resultpos));
+229: resultpos += subarg
__pyx_v_resultpos = (__pyx_v_resultpos + __pyx_v_subarg);
+230: l = subarg + 1
__pyx_t_6 = __Pyx_PyInt_From_long((__pyx_v_subarg + 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF_SET(__pyx_v_l, __pyx_t_6); __pyx_t_6 = 0;
231: else:
+232: subarg = nextunset(b, r) - r
/*else*/ {
__pyx_t_4 = __Pyx_PyInt_As_uint32_t(__pyx_v_r); if (unlikely((__pyx_t_4 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 232, __pyx_L1_error)
__pyx_t_6 = __Pyx_PyInt_From_int(__pyx_f_8discodop_3bit_nextunset(__pyx_v_b, __pyx_t_4)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 232, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_5 = PyNumber_Subtract(__pyx_t_6, __pyx_v_r); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 232, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 232, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_subarg = __pyx_t_7;
+233: result |= (1UL << subarg) - 1UL << resultpos
__pyx_v_result = (__pyx_v_result | (((1UL << __pyx_v_subarg) - 1UL) << __pyx_v_resultpos));
+234: resultpos += subarg
__pyx_v_resultpos = (__pyx_v_resultpos + __pyx_v_subarg);
+235: r = subarg + 1
__pyx_t_5 = __Pyx_PyInt_From_long((__pyx_v_subarg + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF_SET(__pyx_v_r, __pyx_t_5); __pyx_t_5 = 0; } __pyx_L6:;
+236: if testbit(rule.lengths, x):
__pyx_t_1 = (__pyx_fuse_2__pyx_f_8discodop_3bit_testbit(__pyx_v_rule.lengths, __pyx_v_x) != 0);
if (__pyx_t_1) {
/* … */
}
}
+237: resultpos += 1
__pyx_v_resultpos = (__pyx_v_resultpos + 1);
+238: result &= ~(1UL << resultpos)
__pyx_v_result = (__pyx_v_result & (~(1UL << __pyx_v_resultpos)));
+239: return result
__pyx_r = __pyx_v_result; goto __pyx_L0;
240:
241:
+242: def outsidelr(Grammar grammar, double [:, :] insidescores,
/* Python wrapper */
static PyObject *__pyx_pw_8discodop_9estimates_5outsidelr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8discodop_9estimates_4outsidelr[] = "outsidelr(Grammar grammar, __Pyx_memviewslice insidescores, uint32_t maxlen, Label goal, __Pyx_memviewslice outside)\nCompute the outside SX simple LR estimate in top down fashion.";
static PyMethodDef __pyx_mdef_8discodop_9estimates_5outsidelr = {"outsidelr", (PyCFunction)__pyx_pw_8discodop_9estimates_5outsidelr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8discodop_9estimates_4outsidelr};
static PyObject *__pyx_pw_8discodop_9estimates_5outsidelr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar = 0;
__Pyx_memviewslice __pyx_v_insidescores = { 0, 0, { 0 }, { 0 }, { 0 } };
uint32_t __pyx_v_maxlen;
Label __pyx_v_goal;
__Pyx_memviewslice __pyx_v_outside = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("outsidelr (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_grammar,&__pyx_n_s_insidescores,&__pyx_n_s_maxlen,&__pyx_n_s_goal,&__pyx_n_s_outside,0};
PyObject* values[5] = {0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_grammar)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_insidescores)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("outsidelr", 1, 5, 5, 1); __PYX_ERR(0, 242, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_maxlen)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("outsidelr", 1, 5, 5, 2); __PYX_ERR(0, 242, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_goal)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("outsidelr", 1, 5, 5, 3); __PYX_ERR(0, 242, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_outside)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("outsidelr", 1, 5, 5, 4); __PYX_ERR(0, 242, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "outsidelr") < 0)) __PYX_ERR(0, 242, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
}
__pyx_v_grammar = ((struct __pyx_obj_8discodop_10containers_Grammar *)values[0]);
__pyx_v_insidescores = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(values[1]); if (unlikely(!__pyx_v_insidescores.memview)) __PYX_ERR(0, 242, __pyx_L3_error)
__pyx_v_maxlen = __Pyx_PyInt_As_uint32_t(values[2]); if (unlikely((__pyx_v_maxlen == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 243, __pyx_L3_error)
__pyx_v_goal = __Pyx_PyInt_As_uint32_t(values[3]); if (unlikely((__pyx_v_goal == ((Label)-1)) && PyErr_Occurred())) __PYX_ERR(0, 243, __pyx_L3_error)
__pyx_v_outside = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(values[4]); if (unlikely(!__pyx_v_outside.memview)) __PYX_ERR(0, 243, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("outsidelr", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 242, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("discodop.estimates.outsidelr", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grammar), __pyx_ptype_8discodop_10containers_Grammar, 1, "grammar", 0))) __PYX_ERR(0, 242, __pyx_L1_error)
__pyx_r = __pyx_pf_8discodop_9estimates_4outsidelr(__pyx_self, __pyx_v_grammar, __pyx_v_insidescores, __pyx_v_maxlen, __pyx_v_goal, __pyx_v_outside);
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_8discodop_9estimates_4outsidelr(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar, __Pyx_memviewslice __pyx_v_insidescores, uint32_t __pyx_v_maxlen, Label __pyx_v_goal, __Pyx_memviewslice __pyx_v_outside) {
struct __pyx_obj_8discodop_9estimates_Item *__pyx_v_I = 0;
ProbRule __pyx_v_rule;
double __pyx_v_x;
double __pyx_v_insidescore;
double __pyx_v_current;
double __pyx_v_score;
int __pyx_v_n;
int __pyx_v_totlen;
int __pyx_v_addgaps;
int __pyx_v_addright;
int __pyx_v_leftfanout;
int __pyx_v_rightfanout;
int __pyx_v_lenA;
int __pyx_v_lenB;
int __pyx_v_lr;
int __pyx_v_ga;
size_t __pyx_v_i;
int __pyx_v_stopaddleft;
int __pyx_v_stopaddright;
PyObject *__pyx_v_agenda = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("outsidelr", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_AddTraceback("discodop.estimates.outsidelr", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_I);
__Pyx_XDECREF(__pyx_v_agenda);
__PYX_XDEC_MEMVIEW(&__pyx_v_insidescores, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_outside, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__55 = PyTuple_Pack(25, __pyx_n_s_grammar, __pyx_n_s_insidescores, __pyx_n_s_maxlen, __pyx_n_s_goal, __pyx_n_s_outside, __pyx_n_s_I, __pyx_n_s_rule, __pyx_n_s_x, __pyx_n_s_insidescore, __pyx_n_s_current, __pyx_n_s_score, __pyx_n_s_n, __pyx_n_s_totlen, __pyx_n_s_addgaps, __pyx_n_s_addright, __pyx_n_s_leftfanout, __pyx_n_s_rightfanout, __pyx_n_s_lenA, __pyx_n_s_lenB, __pyx_n_s_lr, __pyx_n_s_ga, __pyx_n_s_i, __pyx_n_s_stopaddleft, __pyx_n_s_stopaddright, __pyx_n_s_agenda); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(0, 242, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__55);
__Pyx_GIVEREF(__pyx_tuple__55);
/* … */
__pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_8discodop_9estimates_5outsidelr, NULL, __pyx_n_s_discodop_estimates); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 242, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_d, __pyx_n_s_outsidelr, __pyx_t_3) < 0) __PYX_ERR(0, 242, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(5, 0, 25, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__55, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_discodop_estimates_pyx, __pyx_n_s_outsidelr, 242, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(0, 242, __pyx_L1_error)
243: uint32_t maxlen, Label goal, double [:, :, :, :] outside):
244: """Compute the outside SX simple LR estimate in top down fashion."""
245: cdef Item I
246: cdef ProbRule rule
247: cdef double x, insidescore, current, score
248: cdef int n, totlen, addgaps, addright, leftfanout, rightfanout
249: cdef int lenA, lenB, lr, ga
250: cdef size_t i
251: cdef bint stopaddleft, stopaddright
+252: agenda = PyAgenda()
__pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PyAgenda); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 252, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 252, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 252, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_agenda = __pyx_t_1; __pyx_t_1 = 0;
253:
+254: for n in range(1, maxlen + 1):
__pyx_t_4 = (__pyx_v_maxlen + 1);
for (__pyx_t_5 = 1; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_n = __pyx_t_5;
+255: agenda[new_Item(goal, n, 0, 0)] = 0.0
__pyx_t_1 = ((PyObject *)__pyx_f_8discodop_9estimates_new_Item(__pyx_v_goal, __pyx_v_n, 0, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 255, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (unlikely(PyObject_SetItem(__pyx_v_agenda, __pyx_t_1, __pyx_float_0_0) < 0)) __PYX_ERR(0, 255, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+256: outside[goal, n, 0, 0] = 0.0
__pyx_t_6 = __pyx_v_goal;
__pyx_t_7 = __pyx_v_n;
__pyx_t_8 = 0;
__pyx_t_9 = 0;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_outside.data + __pyx_t_6 * __pyx_v_outside.strides[0]) ) + __pyx_t_7 * __pyx_v_outside.strides[1]) ) + __pyx_t_8 * __pyx_v_outside.strides[2]) ) + __pyx_t_9 * __pyx_v_outside.strides[3]) )) = 0.0;
}
+257: print("initialized")
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 257, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_tuple_ = PyTuple_Pack(1, __pyx_n_u_initialized); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 257, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_);
258:
+259: while agenda:
while (1) {
__pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_agenda); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 259, __pyx_L1_error)
if (!__pyx_t_10) break;
+260: I, x = agenda.popitem()
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_agenda, __pyx_n_s_popitem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 260, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 260, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 260, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_12 = Py_TYPE(__pyx_t_11)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_2)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_3)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(0, 260, __pyx_L1_error) __pyx_t_12 = NULL; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_12 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 260, __pyx_L1_error) __pyx_L8_unpacking_done:; } if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_8discodop_9estimates_Item))))) __PYX_ERR(0, 260, __pyx_L1_error) __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 260, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_I, ((struct __pyx_obj_8discodop_9estimates_Item *)__pyx_t_2)); __pyx_t_2 = 0; __pyx_v_x = __pyx_t_13;
+261: if len(agenda) % 10000 == 0:
__pyx_t_14 = PyObject_Length(__pyx_v_agenda); if (unlikely(__pyx_t_14 == -1)) __PYX_ERR(0, 261, __pyx_L1_error)
__pyx_t_10 = (((__pyx_t_14 % 0x2710) == 0) != 0);
if (__pyx_t_10) {
/* … */
}
+262: print('agenda size: %dk top: %r, %g %s' % (
__pyx_t_2 = PyUnicode_Format(__pyx_kp_u_agenda_size_dk_top_r_g_s, __pyx_t_16); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 262, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_16 = PyTuple_New(1); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 262, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_16, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 262, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+263: len(agenda) / 1000, I, exp(-x),
__pyx_t_14 = PyObject_Length(__pyx_v_agenda); if (unlikely(__pyx_t_14 == -1)) __PYX_ERR(0, 263, __pyx_L1_error) __pyx_t_1 = PyInt_FromSsize_t((__pyx_t_14 / 0x3E8)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_exp); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_11 = PyFloat_FromDouble((-__pyx_v_x)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_15 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_15) { __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 263, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_11}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 263, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_11}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 263, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif { __pyx_t_16 = PyTuple_New(1+1); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_15); __pyx_t_15 = NULL; __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_16, 0+1, __pyx_t_11); __pyx_t_11 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* … */ __pyx_t_16 = PyTuple_New(4); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_v_I)); __Pyx_GIVEREF(((PyObject *)__pyx_v_I)); PyTuple_SET_ITEM(__pyx_t_16, 1, ((PyObject *)__pyx_v_I)); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_16, 2, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_16, 3, __pyx_t_2); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0;
+264: grammar.tolabel[I.state]))
__pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_grammar->tolabel), __pyx_v_I->state, int, 1, __Pyx_PyInt_From_int, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2);
+265: totlen = I.length + I.lr + I.gaps
__pyx_v_totlen = ((__pyx_v_I->length + __pyx_v_I->lr) + __pyx_v_I->gaps);
+266: i = 0
__pyx_v_i = 0;
+267: rule = grammar.bylhs[I.state][i]
__pyx_v_rule = ((__pyx_v_grammar->bylhs[__pyx_v_I->state])[__pyx_v_i]);
+268: while rule.lhs == I.state:
while (1) {
__pyx_t_10 = ((__pyx_v_rule.lhs == __pyx_v_I->state) != 0);
if (!__pyx_t_10) break;
269: # X -> A
+270: if rule.rhs2 == 0:
__pyx_t_10 = ((__pyx_v_rule.rhs2 == 0) != 0);
if (__pyx_t_10) {
/* … */
}
+271: score = rule.prob + x
__pyx_v_score = (__pyx_v_rule.prob + __pyx_v_x);
+272: if score < outside[rule.rhs1, I.length, I.lr, I.gaps]:
__pyx_t_17 = __pyx_v_rule.rhs1;
__pyx_t_18 = __pyx_v_I->length;
__pyx_t_19 = __pyx_v_I->lr;
__pyx_t_20 = __pyx_v_I->gaps;
__pyx_t_10 = ((__pyx_v_score < (*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_outside.data + __pyx_t_17 * __pyx_v_outside.strides[0]) ) + __pyx_t_18 * __pyx_v_outside.strides[1]) ) + __pyx_t_19 * __pyx_v_outside.strides[2]) ) + __pyx_t_20 * __pyx_v_outside.strides[3]) )))) != 0);
if (__pyx_t_10) {
/* … */
}
+273: agenda[new_Item(rule.rhs1, I.length, I.lr, I.gaps)
__pyx_t_16 = ((PyObject *)__pyx_f_8discodop_9estimates_new_Item(__pyx_v_rule.rhs1, __pyx_v_I->length, __pyx_v_I->lr, __pyx_v_I->gaps)); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 273, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_16);
if (unlikely(PyObject_SetItem(__pyx_v_agenda, __pyx_t_16, __pyx_t_2) < 0)) __PYX_ERR(0, 273, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+274: ] = score
__pyx_t_2 = PyFloat_FromDouble(__pyx_v_score); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2);
+275: outside[rule.rhs1, I.length, I.lr, I.gaps] = score
__pyx_t_21 = __pyx_v_rule.rhs1;
__pyx_t_22 = __pyx_v_I->length;
__pyx_t_23 = __pyx_v_I->lr;
__pyx_t_24 = __pyx_v_I->gaps;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_outside.data + __pyx_t_21 * __pyx_v_outside.strides[0]) ) + __pyx_t_22 * __pyx_v_outside.strides[1]) ) + __pyx_t_23 * __pyx_v_outside.strides[2]) ) + __pyx_t_24 * __pyx_v_outside.strides[3]) )) = __pyx_v_score;
+276: i += 1
__pyx_v_i = (__pyx_v_i + 1);
+277: rule = grammar.bylhs[I.state][i]
__pyx_v_rule = ((__pyx_v_grammar->bylhs[__pyx_v_I->state])[__pyx_v_i]);
+278: continue
goto __pyx_L10_continue;
279: # X -> A B
+280: addgaps = addright = 0
__pyx_v_addgaps = 0;
__pyx_v_addright = 0;
+281: stopaddright = False
__pyx_v_stopaddright = 0;
+282: for n in range(bitlength(rule.lengths) - 1, -1, -1):
for (__pyx_t_5 = (__pyx_f_8discodop_3bit_bitlength(__pyx_v_rule.lengths) - 1); __pyx_t_5 > -1L; __pyx_t_5-=1) {
__pyx_v_n = __pyx_t_5;
+283: if testbit(rule.args, n):
__pyx_t_10 = (__pyx_fuse_2__pyx_f_8discodop_3bit_testbit(__pyx_v_rule.args, __pyx_v_n) != 0);
if (__pyx_t_10) {
/* … */
goto __pyx_L16;
}
+284: if stopaddright:
__pyx_t_10 = (__pyx_v_stopaddright != 0);
if (__pyx_t_10) {
/* … */
goto __pyx_L17;
}
+285: addgaps += 1
__pyx_v_addgaps = (__pyx_v_addgaps + 1);
286: else:
+287: addright += 1
/*else*/ {
__pyx_v_addright = (__pyx_v_addright + 1);
}
__pyx_L17:;
+288: elif not stopaddright:
__pyx_t_10 = ((!(__pyx_v_stopaddright != 0)) != 0);
if (__pyx_t_10) {
/* … */
}
__pyx_L16:;
}
+289: stopaddright = True
__pyx_v_stopaddright = 1;
290:
+291: leftfanout = grammar.fanout[rule.rhs1]
__pyx_v_leftfanout = (__pyx_v_grammar->fanout[__pyx_v_rule.rhs1]);
+292: rightfanout = grammar.fanout[rule.rhs2]
__pyx_v_rightfanout = (__pyx_v_grammar->fanout[__pyx_v_rule.rhs2]);
293:
294: # binary-left (A is left)
+295: for lenA in range(leftfanout, I.length - rightfanout + 1):
__pyx_t_4 = ((__pyx_v_I->length - __pyx_v_rightfanout) + 1);
for (__pyx_t_5 = __pyx_v_leftfanout; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_lenA = __pyx_t_5;
+296: lenB = I.length - lenA
__pyx_v_lenB = (__pyx_v_I->length - __pyx_v_lenA);
+297: insidescore = insidescores[rule.rhs2, lenB]
__pyx_t_25 = __pyx_v_rule.rhs2;
__pyx_t_26 = __pyx_v_lenB;
__pyx_v_insidescore = (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_insidescores.data + __pyx_t_25 * __pyx_v_insidescores.strides[0]) ) + __pyx_t_26 * __pyx_v_insidescores.strides[1]) )));
+298: for lr in range(I.lr, I.lr + lenB + 2): # FIXME: why 2?
__pyx_t_27 = ((__pyx_v_I->lr + __pyx_v_lenB) + 2);
for (__pyx_t_28 = __pyx_v_I->lr; __pyx_t_28 < __pyx_t_27; __pyx_t_28+=1) {
__pyx_v_lr = __pyx_t_28;
+299: if addright == 0 and lr != I.lr:
__pyx_t_29 = ((__pyx_v_addright == 0) != 0);
if (__pyx_t_29) {
} else {
__pyx_t_10 = __pyx_t_29;
goto __pyx_L23_bool_binop_done;
}
__pyx_t_29 = ((__pyx_v_lr != __pyx_v_I->lr) != 0);
__pyx_t_10 = __pyx_t_29;
__pyx_L23_bool_binop_done:;
if (__pyx_t_10) {
/* … */
}
+300: continue
goto __pyx_L20_continue;
+301: for ga in range(leftfanout - 1, totlen + 1):
__pyx_t_30 = (__pyx_v_totlen + 1);
for (__pyx_t_31 = (__pyx_v_leftfanout - 1); __pyx_t_31 < __pyx_t_30; __pyx_t_31+=1) {
__pyx_v_ga = __pyx_t_31;
+302: if (lenA + lr + ga == I.length + I.lr + I.gaps
__pyx_t_29 = ((((__pyx_v_lenA + __pyx_v_lr) + __pyx_v_ga) == ((__pyx_v_I->length + __pyx_v_I->lr) + __pyx_v_I->gaps)) != 0);
if (__pyx_t_29) {
} else {
__pyx_t_10 = __pyx_t_29;
goto __pyx_L28_bool_binop_done;
}
/* … */
if (__pyx_t_10) {
/* … */
}
}
__pyx_L20_continue:;
}
}
+303: and ga >= addgaps):
__pyx_t_29 = ((__pyx_v_ga >= __pyx_v_addgaps) != 0);
__pyx_t_10 = __pyx_t_29;
__pyx_L28_bool_binop_done:;
+304: score = rule.prob + x + insidescore
__pyx_v_score = ((__pyx_v_rule.prob + __pyx_v_x) + __pyx_v_insidescore);
+305: current = outside[rule.rhs1, lenA, lr, ga]
__pyx_t_32 = __pyx_v_rule.rhs1;
__pyx_t_33 = __pyx_v_lenA;
__pyx_t_34 = __pyx_v_lr;
__pyx_t_35 = __pyx_v_ga;
__pyx_v_current = (*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_outside.data + __pyx_t_32 * __pyx_v_outside.strides[0]) ) + __pyx_t_33 * __pyx_v_outside.strides[1]) ) + __pyx_t_34 * __pyx_v_outside.strides[2]) ) + __pyx_t_35 * __pyx_v_outside.strides[3]) )));
+306: if score < current:
__pyx_t_10 = ((__pyx_v_score < __pyx_v_current) != 0);
if (__pyx_t_10) {
/* … */
}
+307: agenda[new_Item(rule.rhs1, lenA, lr, ga)
__pyx_t_16 = ((PyObject *)__pyx_f_8discodop_9estimates_new_Item(__pyx_v_rule.rhs1, __pyx_v_lenA, __pyx_v_lr, __pyx_v_ga)); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 307, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_16);
if (unlikely(PyObject_SetItem(__pyx_v_agenda, __pyx_t_16, __pyx_t_2) < 0)) __PYX_ERR(0, 307, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+308: ] = score
__pyx_t_2 = PyFloat_FromDouble(__pyx_v_score); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2);
+309: outside[rule.rhs1, lenA, lr, ga] = score
__pyx_t_36 = __pyx_v_rule.rhs1;
__pyx_t_37 = __pyx_v_lenA;
__pyx_t_38 = __pyx_v_lr;
__pyx_t_39 = __pyx_v_ga;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_outside.data + __pyx_t_36 * __pyx_v_outside.strides[0]) ) + __pyx_t_37 * __pyx_v_outside.strides[1]) ) + __pyx_t_38 * __pyx_v_outside.strides[2]) ) + __pyx_t_39 * __pyx_v_outside.strides[3]) )) = __pyx_v_score;
310:
311: # X -> B A
+312: addgaps = addright = 0
__pyx_v_addgaps = 0;
__pyx_v_addright = 0;
+313: stopaddleft = False
__pyx_v_stopaddleft = 0;
+314: for n in range(bitlength(rule.lengths)):
__pyx_t_5 = __pyx_f_8discodop_3bit_bitlength(__pyx_v_rule.lengths);
for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_5; __pyx_t_28+=1) {
__pyx_v_n = __pyx_t_28;
+315: if not stopaddleft and testbit(rule.args, n):
__pyx_t_29 = ((!(__pyx_v_stopaddleft != 0)) != 0);
if (__pyx_t_29) {
} else {
__pyx_t_10 = __pyx_t_29;
goto __pyx_L34_bool_binop_done;
}
__pyx_t_29 = (__pyx_fuse_2__pyx_f_8discodop_3bit_testbit(__pyx_v_rule.args, __pyx_v_n) != 0);
__pyx_t_10 = __pyx_t_29;
__pyx_L34_bool_binop_done:;
if (__pyx_t_10) {
/* … */
}
+316: stopaddleft = True
__pyx_v_stopaddleft = 1;
+317: if not testbit(rule.args, n):
__pyx_t_10 = ((!(__pyx_fuse_2__pyx_f_8discodop_3bit_testbit(__pyx_v_rule.args, __pyx_v_n) != 0)) != 0);
if (__pyx_t_10) {
/* … */
}
}
+318: if stopaddleft:
__pyx_t_10 = (__pyx_v_stopaddleft != 0);
if (__pyx_t_10) {
/* … */
}
+319: addgaps += 1
__pyx_v_addgaps = (__pyx_v_addgaps + 1);
320:
+321: stopaddright = False
__pyx_v_stopaddright = 0;
+322: for n in range(bitlength(rule.lengths) - 1, -1, -1):
for (__pyx_t_5 = (__pyx_f_8discodop_3bit_bitlength(__pyx_v_rule.lengths) - 1); __pyx_t_5 > -1L; __pyx_t_5-=1) {
__pyx_v_n = __pyx_t_5;
+323: if not stopaddright and testbit(rule.args, n):
__pyx_t_29 = ((!(__pyx_v_stopaddright != 0)) != 0);
if (__pyx_t_29) {
} else {
__pyx_t_10 = __pyx_t_29;
goto __pyx_L41_bool_binop_done;
}
__pyx_t_29 = (__pyx_fuse_2__pyx_f_8discodop_3bit_testbit(__pyx_v_rule.args, __pyx_v_n) != 0);
__pyx_t_10 = __pyx_t_29;
__pyx_L41_bool_binop_done:;
if (__pyx_t_10) {
/* … */
}
+324: stopaddright = True
__pyx_v_stopaddright = 1;
+325: if not testbit(rule.args, n) and not stopaddright:
__pyx_t_29 = ((!(__pyx_fuse_2__pyx_f_8discodop_3bit_testbit(__pyx_v_rule.args, __pyx_v_n) != 0)) != 0);
if (__pyx_t_29) {
} else {
__pyx_t_10 = __pyx_t_29;
goto __pyx_L44_bool_binop_done;
}
__pyx_t_29 = ((!(__pyx_v_stopaddright != 0)) != 0);
__pyx_t_10 = __pyx_t_29;
__pyx_L44_bool_binop_done:;
if (__pyx_t_10) {
/* … */
}
}
+326: addright += 1
__pyx_v_addright = (__pyx_v_addright + 1);
+327: addgaps -= addright
__pyx_v_addgaps = (__pyx_v_addgaps - __pyx_v_addright);
328:
329: # binary-right (A is right)
+330: for lenA in range(rightfanout, I.length - leftfanout + 1):
__pyx_t_4 = ((__pyx_v_I->length - __pyx_v_leftfanout) + 1);
for (__pyx_t_5 = __pyx_v_rightfanout; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_lenA = __pyx_t_5;
+331: lenB = I.length - lenA
__pyx_v_lenB = (__pyx_v_I->length - __pyx_v_lenA);
+332: insidescore = insidescores[rule.rhs1, lenB]
__pyx_t_40 = __pyx_v_rule.rhs1;
__pyx_t_41 = __pyx_v_lenB;
__pyx_v_insidescore = (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_insidescores.data + __pyx_t_40 * __pyx_v_insidescores.strides[0]) ) + __pyx_t_41 * __pyx_v_insidescores.strides[1]) )));
+333: for lr in range(I.lr, I.lr + lenB + 2): # FIXME: why 2?
__pyx_t_27 = ((__pyx_v_I->lr + __pyx_v_lenB) + 2);
for (__pyx_t_28 = __pyx_v_I->lr; __pyx_t_28 < __pyx_t_27; __pyx_t_28+=1) {
__pyx_v_lr = __pyx_t_28;
+334: for ga in range(rightfanout - 1, totlen + 1):
__pyx_t_30 = (__pyx_v_totlen + 1);
for (__pyx_t_31 = (__pyx_v_rightfanout - 1); __pyx_t_31 < __pyx_t_30; __pyx_t_31+=1) {
__pyx_v_ga = __pyx_t_31;
+335: if (lenA + lr + ga == I.length + I.lr + I.gaps
__pyx_t_29 = ((((__pyx_v_lenA + __pyx_v_lr) + __pyx_v_ga) == ((__pyx_v_I->length + __pyx_v_I->lr) + __pyx_v_I->gaps)) != 0);
if (__pyx_t_29) {
} else {
__pyx_t_10 = __pyx_t_29;
goto __pyx_L53_bool_binop_done;
}
/* … */
if (__pyx_t_10) {
/* … */
}
}
}
}
+336: and ga >= addgaps):
__pyx_t_29 = ((__pyx_v_ga >= __pyx_v_addgaps) != 0);
__pyx_t_10 = __pyx_t_29;
__pyx_L53_bool_binop_done:;
+337: score = rule.prob + insidescore + x
__pyx_v_score = ((__pyx_v_rule.prob + __pyx_v_insidescore) + __pyx_v_x);
+338: current = outside[rule.rhs2, lenA, lr, ga]
__pyx_t_42 = __pyx_v_rule.rhs2;
__pyx_t_43 = __pyx_v_lenA;
__pyx_t_44 = __pyx_v_lr;
__pyx_t_45 = __pyx_v_ga;
__pyx_v_current = (*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_outside.data + __pyx_t_42 * __pyx_v_outside.strides[0]) ) + __pyx_t_43 * __pyx_v_outside.strides[1]) ) + __pyx_t_44 * __pyx_v_outside.strides[2]) ) + __pyx_t_45 * __pyx_v_outside.strides[3]) )));
+339: if score < current:
__pyx_t_10 = ((__pyx_v_score < __pyx_v_current) != 0);
if (__pyx_t_10) {
/* … */
}
+340: agenda[new_Item(rule.rhs2, lenA, lr, ga)
__pyx_t_16 = ((PyObject *)__pyx_f_8discodop_9estimates_new_Item(__pyx_v_rule.rhs2, __pyx_v_lenA, __pyx_v_lr, __pyx_v_ga)); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 340, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_16);
if (unlikely(PyObject_SetItem(__pyx_v_agenda, __pyx_t_16, __pyx_t_2) < 0)) __PYX_ERR(0, 340, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+341: ] = score
__pyx_t_2 = PyFloat_FromDouble(__pyx_v_score); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2);
+342: outside[rule.rhs2, lenA, lr, ga] = score
__pyx_t_46 = __pyx_v_rule.rhs2;
__pyx_t_47 = __pyx_v_lenA;
__pyx_t_48 = __pyx_v_lr;
__pyx_t_49 = __pyx_v_ga;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_outside.data + __pyx_t_46 * __pyx_v_outside.strides[0]) ) + __pyx_t_47 * __pyx_v_outside.strides[1]) ) + __pyx_t_48 * __pyx_v_outside.strides[2]) ) + __pyx_t_49 * __pyx_v_outside.strides[3]) )) = __pyx_v_score;
+343: i += 1
__pyx_v_i = (__pyx_v_i + 1);
+344: rule = grammar.bylhs[I.state][i]
__pyx_v_rule = ((__pyx_v_grammar->bylhs[__pyx_v_I->state])[__pyx_v_i]);
__pyx_L10_continue:;
}
}
345: # end while rule.lhs == I.state:
346: # end while agenda:
347:
348:
+349: def getestimates(Grammar grammar, uint32_t maxlen, str rootlabel):
/* Python wrapper */
static PyObject *__pyx_pw_8discodop_9estimates_7getestimates(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8discodop_9estimates_6getestimates[] = "getestimates(Grammar grammar, uint32_t maxlen, unicode rootlabel)\nCompute table of outside SX simple LR estimates for a PLCFRS.";
static PyMethodDef __pyx_mdef_8discodop_9estimates_7getestimates = {"getestimates", (PyCFunction)__pyx_pw_8discodop_9estimates_7getestimates, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8discodop_9estimates_6getestimates};
static PyObject *__pyx_pw_8discodop_9estimates_7getestimates(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar = 0;
uint32_t __pyx_v_maxlen;
PyObject *__pyx_v_rootlabel = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("getestimates (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_grammar,&__pyx_n_s_maxlen,&__pyx_n_s_rootlabel,0};
PyObject* values[3] = {0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_grammar)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_maxlen)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("getestimates", 1, 3, 3, 1); __PYX_ERR(0, 349, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rootlabel)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("getestimates", 1, 3, 3, 2); __PYX_ERR(0, 349, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getestimates") < 0)) __PYX_ERR(0, 349, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
}
__pyx_v_grammar = ((struct __pyx_obj_8discodop_10containers_Grammar *)values[0]);
__pyx_v_maxlen = __Pyx_PyInt_As_uint32_t(values[1]); if (unlikely((__pyx_v_maxlen == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 349, __pyx_L3_error)
__pyx_v_rootlabel = ((PyObject*)values[2]);
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("getestimates", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 349, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("discodop.estimates.getestimates", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grammar), __pyx_ptype_8discodop_10containers_Grammar, 1, "grammar", 0))) __PYX_ERR(0, 349, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rootlabel), (&PyUnicode_Type), 1, "rootlabel", 1))) __PYX_ERR(0, 349, __pyx_L1_error)
__pyx_r = __pyx_pf_8discodop_9estimates_6getestimates(__pyx_self, __pyx_v_grammar, __pyx_v_maxlen, __pyx_v_rootlabel);
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_8discodop_9estimates_6getestimates(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar, uint32_t __pyx_v_maxlen, PyObject *__pyx_v_rootlabel) {
Label __pyx_v_goal;
PyObject *__pyx_v_insidescores = NULL;
PyObject *__pyx_v_outside = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("getestimates", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("discodop.estimates.getestimates", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_insidescores);
__Pyx_XDECREF(__pyx_v_outside);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__57 = PyTuple_Pack(6, __pyx_n_s_grammar, __pyx_n_s_maxlen, __pyx_n_s_rootlabel, __pyx_n_s_goal, __pyx_n_s_insidescores, __pyx_n_s_outside); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 349, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__57);
__Pyx_GIVEREF(__pyx_tuple__57);
/* … */
__pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_8discodop_9estimates_7getestimates, NULL, __pyx_n_s_discodop_estimates); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 349, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_d, __pyx_n_s_getestimates, __pyx_t_3) < 0) __PYX_ERR(0, 349, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__57, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_discodop_estimates_pyx, __pyx_n_s_getestimates, 349, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(0, 349, __pyx_L1_error)
350: """Compute table of outside SX simple LR estimates for a PLCFRS."""
+351: cdef Label goal = grammar.toid[rootlabel]
__pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_grammar->toid), __pyx_v_rootlabel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_As_uint32_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((Label)-1)) && PyErr_Occurred())) __PYX_ERR(0, 351, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_goal = __pyx_t_2;
+352: print("allocating outside matrix:",
__pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_allocating_outside_matrix); __Pyx_GIVEREF(__pyx_kp_u_allocating_outside_matrix); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_allocating_outside_matrix); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); __Pyx_INCREF(__pyx_n_u_MB); __Pyx_GIVEREF(__pyx_n_u_MB); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_n_u_MB); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
353: (8 * grammar.nonterminals * (maxlen + 1) * (maxlen + 1)
+354: * (maxlen + 1) / 1024 ** 2), 'MB')
__pyx_t_1 = __Pyx_PyInt_FromSize_t((((((8 * __pyx_v_grammar->nonterminals) * (__pyx_v_maxlen + 1)) * (__pyx_v_maxlen + 1)) * (__pyx_v_maxlen + 1)) / 0x100000)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 354, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1);
+355: insidescores = np.empty((grammar.nonterminals, (maxlen + 1)), dtype='d')
__pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_grammar->nonterminals); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyInt_From_long((__pyx_v_maxlen + 1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4); __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_n_u_d) < 0) __PYX_ERR(0, 355, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_insidescores = __pyx_t_1; __pyx_t_1 = 0;
+356: outside = np.empty((grammar.nonterminals, ) + 3 * (maxlen + 1, ), dtype='d')
__pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_grammar->nonterminals); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_maxlen + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyTuple_New(1 * 3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < 3; __pyx_temp++) { __Pyx_INCREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_t_1); } } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_n_u_d) < 0) __PYX_ERR(0, 356, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_outside = __pyx_t_4; __pyx_t_4 = 0;
+357: insidescores[...] = np.NAN
__pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_NAN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(PyObject_SetItem(__pyx_v_insidescores, Py_Ellipsis, __pyx_t_1) < 0)) __PYX_ERR(0, 357, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+358: outside[...] = np.inf
__pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 358, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_inf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 358, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(PyObject_SetItem(__pyx_v_outside, Py_Ellipsis, __pyx_t_4) < 0)) __PYX_ERR(0, 358, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+359: print("getting inside estimates")
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 359, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* … */ __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_u_getting_inside_estimates); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 359, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2);
+360: simpleinside(grammar, maxlen, insidescores)
__pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_simpleinside); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_uint32_t(__pyx_v_maxlen); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_grammar), __pyx_t_3, __pyx_v_insidescores}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 360, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_grammar), __pyx_t_3, __pyx_v_insidescores}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 360, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_grammar)); __Pyx_GIVEREF(((PyObject *)__pyx_v_grammar)); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_grammar)); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_3); __Pyx_INCREF(__pyx_v_insidescores); __Pyx_GIVEREF(__pyx_v_insidescores); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_insidescores); __pyx_t_3 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+361: print("getting outside estimates")
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* … */ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_u_getting_outside_estimates); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 361, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3);
+362: outsidelr(grammar, insidescores, maxlen, goal, outside)
__pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_outsidelr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 362, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyInt_From_uint32_t(__pyx_v_maxlen); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 362, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = __Pyx_PyInt_From_uint32_t(__pyx_v_goal); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 362, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[6] = {__pyx_t_5, ((PyObject *)__pyx_v_grammar), __pyx_v_insidescores, __pyx_t_7, __pyx_t_3, __pyx_v_outside}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 362, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[6] = {__pyx_t_5, ((PyObject *)__pyx_v_grammar), __pyx_v_insidescores, __pyx_t_7, __pyx_t_3, __pyx_v_outside}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 362, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_8 = PyTuple_New(5+__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 362, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_grammar)); __Pyx_GIVEREF(((PyObject *)__pyx_v_grammar)); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_6, ((PyObject *)__pyx_v_grammar)); __Pyx_INCREF(__pyx_v_insidescores); __Pyx_GIVEREF(__pyx_v_insidescores); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_6, __pyx_v_insidescores); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_6, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_6, __pyx_t_3); __Pyx_INCREF(__pyx_v_outside); __Pyx_GIVEREF(__pyx_v_outside); PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_6, __pyx_v_outside); __pyx_t_7 = 0; __pyx_t_3 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 362, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+363: return outside
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_outside); __pyx_r = __pyx_v_outside; goto __pyx_L0;
364:
365:
+366: cdef inline double getpcfgoutside(dict outsidescores,
static CYTHON_INLINE double __pyx_f_8discodop_9estimates_getpcfgoutside(PyObject *__pyx_v_outsidescores, uint32_t __pyx_v_maxlen, uint32_t __pyx_v_slen, Label __pyx_v_label, uint64_t __pyx_v_vec) {
int __pyx_v_length;
int __pyx_v_left;
int __pyx_v_right;
double __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("getpcfgoutside", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_WriteUnraisable("discodop.estimates.getpcfgoutside", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_r = 0;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
367: uint32_t maxlen, uint32_t slen, Label label, uint64_t vec):
368: """Query for a PCFG A* estimate. For documentation purposes."""
+369: cdef int length = bitcount(vec)
__pyx_v_length = __pyx_f_8discodop_3bit_bitcount(__pyx_v_vec, 0);
+370: cdef int left = nextset(vec, 0)
__pyx_v_left = __pyx_f_8discodop_3bit_nextset(__pyx_v_vec, 0);
+371: cdef int right = slen - length - left
__pyx_v_right = ((__pyx_v_slen - __pyx_v_length) - __pyx_v_left);
+372: if slen > maxlen or length + left + right > maxlen:
__pyx_t_2 = ((__pyx_v_slen > __pyx_v_maxlen) != 0);
if (!__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_2 = ((((__pyx_v_length + __pyx_v_left) + __pyx_v_right) > __pyx_v_maxlen) != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+373: return 0.0
__pyx_r = 0.0;
goto __pyx_L0;
+374: return outsidescores[label, left, right]
if (unlikely(__pyx_v_outsidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 374, __pyx_L1_error)
}
__pyx_t_3 = __Pyx_PyInt_From_uint32_t(__pyx_v_label); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 374, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_left); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 374, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_right); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 374, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 374, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_5);
__pyx_t_3 = 0;
__pyx_t_4 = 0;
__pyx_t_5 = 0;
__pyx_t_5 = __Pyx_PyDict_GetItem(__pyx_v_outsidescores, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 374, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 374, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_r = __pyx_t_7;
goto __pyx_L0;
375:
376:
+377: cpdef getpcfgestimates(Grammar grammar, uint32_t maxlen, str rootlabel,
static PyObject *__pyx_pw_8discodop_9estimates_9getpcfgestimates(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_8discodop_9estimates_getpcfgestimates(struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar, uint32_t __pyx_v_maxlen, PyObject *__pyx_v_rootlabel, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_8discodop_9estimates_getpcfgestimates *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_AddTraceback("discodop.estimates.getpcfgestimates", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_insidescores);
__Pyx_XDECREF(__pyx_v_outside);
__Pyx_XDECREF(__pyx_v_k);
__Pyx_XDECREF(__pyx_v_v);
__Pyx_XDECREF(__pyx_v_lspan);
__Pyx_XDECREF(__pyx_v_rspan);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_8discodop_9estimates_9getpcfgestimates(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8discodop_9estimates_8getpcfgestimates[] = "getpcfgestimates(Grammar grammar, uint32_t maxlen, unicode rootlabel, bool debug=False)\nCompute table of outside SX estimates for a PCFG.";
static PyObject *__pyx_pw_8discodop_9estimates_9getpcfgestimates(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar = 0;
uint32_t __pyx_v_maxlen;
PyObject *__pyx_v_rootlabel = 0;
int __pyx_v_debug;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("getpcfgestimates (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_grammar,&__pyx_n_s_maxlen,&__pyx_n_s_rootlabel,&__pyx_n_s_debug,0};
PyObject* values[4] = {0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_grammar)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_maxlen)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("getpcfgestimates", 0, 3, 4, 1); __PYX_ERR(0, 377, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rootlabel)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("getpcfgestimates", 0, 3, 4, 2); __PYX_ERR(0, 377, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_debug);
if (value) { values[3] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getpcfgestimates") < 0)) __PYX_ERR(0, 377, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_grammar = ((struct __pyx_obj_8discodop_10containers_Grammar *)values[0]);
__pyx_v_maxlen = __Pyx_PyInt_As_uint32_t(values[1]); if (unlikely((__pyx_v_maxlen == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 377, __pyx_L3_error)
__pyx_v_rootlabel = ((PyObject*)values[2]);
if (values[3]) {
__pyx_v_debug = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_debug == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 378, __pyx_L3_error)
} else {
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_8discodop_9estimates_8getpcfgestimates(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar, uint32_t __pyx_v_maxlen, PyObject *__pyx_v_rootlabel, int __pyx_v_debug) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("getpcfgestimates", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_2.__pyx_n = 1;
__pyx_t_2.debug = __pyx_v_debug;
__pyx_t_1 = __pyx_f_8discodop_9estimates_getpcfgestimates(__pyx_v_grammar, __pyx_v_maxlen, __pyx_v_rootlabel, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 377, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("discodop.estimates.getpcfgestimates", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_8discodop_9estimates_getpcfgestimates {
int __pyx_n;
int debug;
};
+378: bint debug=False):
int __pyx_v_debug = ((int)0); Label __pyx_v_goal; PyObject *__pyx_v_insidescores = NULL; PyObject *__pyx_v_outside = NULL; long __pyx_v_span; PyObject *__pyx_v_k = NULL; PyObject *__pyx_v_v = NULL; PyObject *__pyx_v_lspan = NULL; PyObject *__pyx_v_rspan = NULL; size_t __pyx_v_lhs; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("getpcfgestimates", 0); if (__pyx_optional_args) { if (__pyx_optional_args->__pyx_n > 0) { __pyx_v_debug = __pyx_optional_args->debug; } } /* … */ __pyx_v_debug = ((int)0); } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("getpcfgestimates", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 377, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("discodop.estimates.getpcfgestimates", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grammar), __pyx_ptype_8discodop_10containers_Grammar, 1, "grammar", 0))) __PYX_ERR(0, 377, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rootlabel), (&PyUnicode_Type), 1, "rootlabel", 1))) __PYX_ERR(0, 377, __pyx_L1_error) __pyx_r = __pyx_pf_8discodop_9estimates_8getpcfgestimates(__pyx_self, __pyx_v_grammar, __pyx_v_maxlen, __pyx_v_rootlabel, __pyx_v_debug);
379: """Compute table of outside SX estimates for a PCFG."""
+380: cdef Label goal = grammar.toid[rootlabel]
__pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_grammar->toid), __pyx_v_rootlabel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 380, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_As_uint32_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((Label)-1)) && PyErr_Occurred())) __PYX_ERR(0, 380, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_goal = __pyx_t_2;
+381: insidescores = pcfginsidesx(grammar, maxlen)
__pyx_t_1 = __pyx_f_8discodop_9estimates_pcfginsidesx(__pyx_v_grammar, __pyx_v_maxlen); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 381, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_insidescores = __pyx_t_1;
__pyx_t_1 = 0;
+382: outside = pcfgoutsidesx(grammar, insidescores, goal, maxlen)
if (!(likely(PyList_CheckExact(__pyx_v_insidescores))||((__pyx_v_insidescores) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_v_insidescores)->tp_name), 0))) __PYX_ERR(0, 382, __pyx_L1_error) __pyx_t_1 = __pyx_f_8discodop_9estimates_pcfgoutsidesx(__pyx_v_grammar, ((PyObject*)__pyx_v_insidescores), __pyx_v_goal, __pyx_v_maxlen); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_outside = __pyx_t_1; __pyx_t_1 = 0;
+383: if debug:
__pyx_t_3 = (__pyx_v_debug != 0);
if (__pyx_t_3) {
/* … */
}
+384: print('inside:')
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_inside); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 384, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4);
+385: for span in range(1, maxlen + 1):
__pyx_t_4 = (__pyx_v_maxlen + 1);
for (__pyx_t_5 = 1; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_span = __pyx_t_5;
+386: for k, v in sorted(insidescores[span].items()):
__pyx_t_7 = __Pyx_GetItemInt(__pyx_v_insidescores, __pyx_v_span, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_items); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } if (__pyx_t_7) { __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 386, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 386, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PySequence_List(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_1 = ((PyObject*)__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 386, __pyx_L1_error) if (unlikely(__pyx_t_1 == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); __PYX_ERR(0, 386, __pyx_L1_error) } __pyx_t_8 = __pyx_t_1; __Pyx_INCREF(__pyx_t_8); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_8)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 386, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_8, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 386, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_12 = Py_TYPE(__pyx_t_11)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_6)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_7 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_7)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(0, 386, __pyx_L1_error) __pyx_t_12 = NULL; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; goto __pyx_L9_unpacking_done; __pyx_L8_unpacking_failed:; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_12 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 386, __pyx_L1_error) __pyx_L9_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_7); __pyx_t_7 = 0; /* … */ } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; }
+387: if v < INFINITY:
__pyx_t_1 = PyFloat_FromDouble(HUGE_VAL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 387, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = PyObject_RichCompare(__pyx_v_v, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 387, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 387, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_3) { /* … */ }
+388: print("%s[%d] %g" % (grammar.tolabel[k],
__pyx_t_7 = PyObject_GetItem(((PyObject *)__pyx_v_grammar->tolabel), __pyx_v_k); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 388, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); /* … */ __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 388, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_6); __pyx_t_7 = 0; __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_s_d_g, __pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 388, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 388, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 388, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+389: span, exp(-v)))
__pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_span); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_exp); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_13 = PyNumber_Negative(__pyx_v_v); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_14 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } if (!__pyx_t_14) { __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 389, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_GOTREF(__pyx_t_6); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_13}; __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 389, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_13}; __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 389, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } else #endif { __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14); __pyx_t_14 = NULL; __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_13); __pyx_t_13 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_15, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+390: print('infinite:', end=' ')
__pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 390, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_end, __pyx_kp_u__6) < 0) __PYX_ERR(0, 390, __pyx_L1_error) __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__5, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 390, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* … */ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_infinite); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 390, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5);
+391: for span in range(1, maxlen + 1):
__pyx_t_4 = (__pyx_v_maxlen + 1);
for (__pyx_t_5 = 1; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_span = __pyx_t_5;
+392: for k, v in sorted(insidescores[span].items()):
__pyx_t_11 = __Pyx_GetItemInt(__pyx_v_insidescores, __pyx_v_span, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 392, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_items); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 392, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } if (__pyx_t_11) { __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 392, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else { __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 392, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PySequence_List(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 392, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_6 = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; __pyx_t_9 = PyList_Sort(__pyx_t_6); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 392, __pyx_L1_error) if (unlikely(__pyx_t_6 == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); __PYX_ERR(0, 392, __pyx_L1_error) } __pyx_t_1 = __pyx_t_6; __Pyx_INCREF(__pyx_t_1); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; for (;;) { if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_6); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 392, __pyx_L1_error) #else __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 392, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) { PyObject* sequence = __pyx_t_6; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 392, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_8 = PyList_GET_ITEM(sequence, 0); __pyx_t_11 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_11); #else __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 392, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 392, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); #endif __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { Py_ssize_t index = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 392, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_12 = Py_TYPE(__pyx_t_7)->tp_iternext; index = 0; __pyx_t_8 = __pyx_t_12(__pyx_t_7); if (unlikely(!__pyx_t_8)) goto __pyx_L15_unpacking_failed; __Pyx_GOTREF(__pyx_t_8); index = 1; __pyx_t_11 = __pyx_t_12(__pyx_t_7); if (unlikely(!__pyx_t_11)) goto __pyx_L15_unpacking_failed; __Pyx_GOTREF(__pyx_t_11); if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_7), 2) < 0) __PYX_ERR(0, 392, __pyx_L1_error) __pyx_t_12 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L16_unpacking_done; __pyx_L15_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_12 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 392, __pyx_L1_error) __pyx_L16_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_11); __pyx_t_11 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; }
+393: if v == INFINITY:
__pyx_t_6 = PyFloat_FromDouble(HUGE_VAL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 393, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_11 = PyObject_RichCompare(__pyx_v_v, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 393, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 393, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (__pyx_t_3) { /* … */ }
+394: print("%s[%d]" % (grammar.tolabel[k],
__pyx_t_11 = PyObject_GetItem(((PyObject *)__pyx_v_grammar->tolabel), __pyx_v_k); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 394, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); /* … */ __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 394, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6); __pyx_t_11 = 0; __pyx_t_6 = 0; __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_s_d, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 394, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 394, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = 0; /* … */ __pyx_t_11 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 394, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+395: span), end=' ')
__pyx_t_6 = __Pyx_PyInt_From_long(__pyx_v_span); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 395, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); /* … */ __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 395, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_end, __pyx_kp_u__6) < 0) __PYX_ERR(0, 395, __pyx_L1_error)
+396: print('\n\noutside:')
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 396, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_outside_2); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 396, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__7); __Pyx_GIVEREF(__pyx_tuple__7);
+397: for lspan in range(maxlen + 1):
__pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_maxlen + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_11 = __pyx_t_1; __Pyx_INCREF(__pyx_t_11); __pyx_t_10 = 0; __pyx_t_16 = NULL; } else { __pyx_t_10 = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_16 = Py_TYPE(__pyx_t_11)->tp_iternext; if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 397, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_16)) { if (likely(PyList_CheckExact(__pyx_t_11))) { if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_11)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 397, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_11, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_11)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_11, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 397, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_11, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_16(__pyx_t_11); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 397, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_lspan, __pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+398: for rspan in range(maxlen - lspan + 1):
__pyx_t_1 = __Pyx_PyInt_From_uint32_t(__pyx_v_maxlen); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 398, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_6 = PyNumber_Subtract(__pyx_t_1, __pyx_v_lspan); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 398, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_6, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 398, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 398, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
__pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 398, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
__pyx_t_6 = __pyx_t_1; __Pyx_INCREF(__pyx_t_6); __pyx_t_17 = 0;
__pyx_t_18 = NULL;
} else {
__pyx_t_17 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 398, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_18 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 398, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
for (;;) {
if (likely(!__pyx_t_18)) {
if (likely(PyList_CheckExact(__pyx_t_6))) {
if (__pyx_t_17 >= PyList_GET_SIZE(__pyx_t_6)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_17); __Pyx_INCREF(__pyx_t_1); __pyx_t_17++; if (unlikely(0 < 0)) __PYX_ERR(0, 398, __pyx_L1_error)
#else
__pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_17); __pyx_t_17++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 398, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
} else {
if (__pyx_t_17 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_17); __Pyx_INCREF(__pyx_t_1); __pyx_t_17++; if (unlikely(0 < 0)) __PYX_ERR(0, 398, __pyx_L1_error)
#else
__pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_17); __pyx_t_17++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 398, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
}
} else {
__pyx_t_1 = __pyx_t_18(__pyx_t_6);
if (unlikely(!__pyx_t_1)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
else __PYX_ERR(0, 398, __pyx_L1_error)
}
break;
}
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_XDECREF_SET(__pyx_v_rspan, __pyx_t_1);
__pyx_t_1 = 0;
/* … */
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+399: for lhs in range(grammar.nonterminals):
__pyx_t_19 = __pyx_v_grammar->nonterminals;
for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_19; __pyx_t_20+=1) {
__pyx_v_lhs = __pyx_t_20;
+400: if outside[lhs, lspan, rspan] < INFINITY:
__pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_lhs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __Pyx_INCREF(__pyx_v_lspan); __Pyx_GIVEREF(__pyx_v_lspan); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_lspan); __Pyx_INCREF(__pyx_v_rspan); __Pyx_GIVEREF(__pyx_v_rspan); PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_rspan); __pyx_t_1 = 0; __pyx_t_1 = PyObject_GetItem(__pyx_v_outside, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyFloat_FromDouble(HUGE_VAL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = PyObject_RichCompare(__pyx_t_1, __pyx_t_8, Py_LT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 400, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 400, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_3) { /* … */ } }
+401: print("%s[%d-%d] %g" % (
__pyx_t_8 = PyUnicode_Format(__pyx_kp_u_s_d_d_g, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 401, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 401, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_1, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 401, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+402: grammar.tolabel[lhs], lspan,
__pyx_t_7 = __Pyx_GetItemInt(((PyObject *)__pyx_v_grammar->tolabel), __pyx_v_lhs, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 402, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); /* … */ __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 402, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __Pyx_INCREF(__pyx_v_lspan); __Pyx_GIVEREF(__pyx_v_lspan); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_lspan); __Pyx_INCREF(__pyx_v_rspan); __Pyx_GIVEREF(__pyx_v_rspan); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_rspan); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_8); __pyx_t_7 = 0; __pyx_t_8 = 0;
+403: rspan, exp(-outside[lhs, lspan, rspan])))
__pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_exp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 403, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_15 = __Pyx_PyInt_FromSize_t(__pyx_v_lhs); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 403, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 403, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_15); __Pyx_INCREF(__pyx_v_lspan); __Pyx_GIVEREF(__pyx_v_lspan); PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_v_lspan); __Pyx_INCREF(__pyx_v_rspan); __Pyx_GIVEREF(__pyx_v_rspan); PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_v_rspan); __pyx_t_15 = 0; __pyx_t_15 = PyObject_GetItem(__pyx_v_outside, __pyx_t_13); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 403, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = PyNumber_Negative(__pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 403, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } if (!__pyx_t_15) { __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_13); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 403, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_GOTREF(__pyx_t_8); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_13}; __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 403, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_13}; __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 403, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } else #endif { __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 403, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_15); __pyx_t_15 = NULL; __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_13); __pyx_t_13 = 0; __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_14, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 403, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+404: return outside
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_outside); __pyx_r = __pyx_v_outside; goto __pyx_L0;
405:
406:
+407: cdef pcfginsidesx(Grammar grammar, uint32_t maxlen):
static PyObject *__pyx_f_8discodop_9estimates_pcfginsidesx(struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar, uint32_t __pyx_v_maxlen) {
uint64_t __pyx_v_vec;
SmallChartItem __pyx_v_I;
SmallChartItemAgenda<double> __pyx_v_agenda;
std::pair<SmallChartItem,double> __pyx_v_entry;
ProbRule __pyx_v_rule;
double __pyx_v_x;
PyObject *__pyx_v_insidescores = 0;
std::pair<Label,spp::sparse_hash_map<std::string,uint32_t> > __pyx_v_lhsrules;
size_t __pyx_v_i;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("pcfginsidesx", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_AddTraceback("discodop.estimates.pcfginsidesx", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_insidescores);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
408: """Compute insideSX estimate for a PCFG using agenda.
409:
410: Adapted from: Klein & Manning (2003), A* parsing: Fast Exact Viterbi Parse
411: Selection."""
412: cdef uint64_t vec
413: cdef SmallChartItem I
414: cdef SmallChartItemAgenda[double] agenda
415: cdef pair[SmallChartItem, double] entry
416: cdef ProbRule rule
417: cdef double x
+418: cdef list insidescores = [{} for _ in range(maxlen + 1)]
{ /* enter inner scope */
CYTHON_UNUSED long __pyx_8genexpr2__pyx_v__;
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 418, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = (__pyx_v_maxlen + 1);
for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
__pyx_8genexpr2__pyx_v__ = __pyx_t_3;
__pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 418, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) __PYX_ERR(0, 418, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
}
} /* exit inner scope */
__pyx_v_insidescores = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
+419: for lhsrules in grammar.lexicalbylhs:
__pyx_t_6 = &__pyx_v_grammar->lexicalbylhs;
__pyx_t_5 = __pyx_t_6->begin();
for (;;) {
if (!(__pyx_t_5 != __pyx_t_6->end())) break;
__pyx_t_7 = *__pyx_t_5;
++__pyx_t_5;
__pyx_v_lhsrules = __pyx_t_7;
/* … */
}
+420: agenda.setitem(
__pyx_v_agenda.setitem(SmallChartItem(__pyx_v_lhsrules.first, 1), __pyx_t_11);
421: SmallChartItem(lhsrules.first, 1),
+422: min([grammar.lexical[wordlexrule.second].prob
{ /* enter inner scope */
std::pair<std::string,uint32_t> __pyx_8genexpr3__pyx_v_wordlexrule;
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 422, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
/* … */
__pyx_t_4 = PyFloat_FromDouble((__pyx_v_grammar->lexical[__pyx_8genexpr3__pyx_v_wordlexrule.second]).prob); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 422, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) __PYX_ERR(0, 422, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
__pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 422, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
__pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_min, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 422, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_11 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_11 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 422, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+423: for wordlexrule in lhsrules.second]))
__pyx_t_9 = &__pyx_v_lhsrules.second;
__pyx_t_8 = __pyx_t_9->begin();
for (;;) {
if (!(__pyx_t_8 != __pyx_t_9->end())) break;
__pyx_t_10 = *__pyx_t_8;
++__pyx_t_8;
__pyx_8genexpr3__pyx_v_wordlexrule = __pyx_t_10;
/* … */
}
} /* exit inner scope */
+424: while not agenda.empty():
while (1) {
__pyx_t_12 = ((!(__pyx_v_agenda.empty() != 0)) != 0);
if (!__pyx_t_12) break;
+425: entry = agenda.pop()
__pyx_v_entry = __pyx_v_agenda.pop();
+426: I = entry.first
__pyx_t_13 = __pyx_v_entry.first;
__pyx_v_I = __pyx_t_13;
+427: x = entry.second
__pyx_t_11 = __pyx_v_entry.second;
__pyx_v_x = __pyx_t_11;
+428: if (I.label not in insidescores[I.vec]
__pyx_t_1 = __Pyx_PyInt_From_uint32_t(__pyx_v_I.label); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 428, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_14 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, PyList_GET_ITEM(__pyx_v_insidescores, __pyx_v_I.vec), Py_NE)); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 428, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_15 = (__pyx_t_14 != 0);
if (!__pyx_t_15) {
} else {
__pyx_t_12 = __pyx_t_15;
goto __pyx_L12_bool_binop_done;
}
/* … */
if (__pyx_t_12) {
/* … */
}
+429: or x < insidescores[I.vec][I.label]):
__pyx_t_1 = PyFloat_FromDouble(__pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_GetItemInt(PyList_GET_ITEM(__pyx_v_insidescores, __pyx_v_I.vec), __pyx_v_I.label, Label, 0, __Pyx_PyInt_From_uint32_t, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_16 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_16); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 429, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_16); if (unlikely(__pyx_t_15 < 0)) __PYX_ERR(0, 429, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_12 = __pyx_t_15; __pyx_L12_bool_binop_done:;
+430: insidescores[I.vec][I.label] = x
__pyx_t_16 = PyFloat_FromDouble(__pyx_v_x); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (unlikely(__Pyx_SetItemInt(PyList_GET_ITEM(__pyx_v_insidescores, __pyx_v_I.vec), __pyx_v_I.label, __pyx_t_16, Label, 0, __Pyx_PyInt_From_uint32_t, 0, 0, 0) < 0)) __PYX_ERR(0, 430, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
431:
+432: for i in range(grammar.nonterminals):
__pyx_t_17 = __pyx_v_grammar->nonterminals;
for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) {
__pyx_v_i = __pyx_t_18;
+433: rule = grammar.unary[I.label][i]
__pyx_v_rule = ((__pyx_v_grammar->unary[__pyx_v_I.label])[__pyx_v_i]);
+434: if rule.rhs1 != I.label:
__pyx_t_12 = ((__pyx_v_rule.rhs1 != __pyx_v_I.label) != 0);
if (__pyx_t_12) {
/* … */
}
+435: break
goto __pyx_L15_break;
+436: elif rule.lhs not in insidescores[I.vec]:
__pyx_t_16 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.lhs); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 436, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_16);
__pyx_t_12 = (__Pyx_PySequence_ContainsTF(__pyx_t_16, PyList_GET_ITEM(__pyx_v_insidescores, __pyx_v_I.vec), Py_NE)); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 436, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
__pyx_t_15 = (__pyx_t_12 != 0);
if (__pyx_t_15) {
/* … */
}
}
__pyx_L15_break:;
+437: agenda.setifbetter(
__pyx_v_agenda.setifbetter(SmallChartItem(__pyx_v_rule.lhs, __pyx_v_I.vec), (__pyx_v_rule.prob + __pyx_v_x));
438: SmallChartItem(rule.lhs, I.vec), rule.prob + x)
439:
+440: for i in range(grammar.nonterminals):
__pyx_t_17 = __pyx_v_grammar->nonterminals;
for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) {
__pyx_v_i = __pyx_t_18;
+441: rule = grammar.lbinary[I.label][i]
__pyx_v_rule = ((__pyx_v_grammar->lbinary[__pyx_v_I.label])[__pyx_v_i]);
+442: if rule.rhs1 != I.label:
__pyx_t_15 = ((__pyx_v_rule.rhs1 != __pyx_v_I.label) != 0);
if (__pyx_t_15) {
/* … */
}
+443: break
goto __pyx_L18_break;
+444: for vec in range(1, maxlen - I.vec + 1):
__pyx_t_19 = ((__pyx_v_maxlen - __pyx_v_I.vec) + 1);
for (__pyx_t_20 = 1; __pyx_t_20 < __pyx_t_19; __pyx_t_20+=1) {
__pyx_v_vec = __pyx_t_20;
+445: if (rule.rhs2 in insidescores[vec]
__pyx_t_16 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.rhs2); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 445, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_16);
__pyx_t_12 = (__Pyx_PySequence_ContainsTF(__pyx_t_16, PyList_GET_ITEM(__pyx_v_insidescores, __pyx_v_vec), Py_EQ)); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 445, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
__pyx_t_14 = (__pyx_t_12 != 0);
if (__pyx_t_14) {
} else {
__pyx_t_15 = __pyx_t_14;
goto __pyx_L23_bool_binop_done;
}
/* … */
if (__pyx_t_15) {
/* … */
}
}
}
__pyx_L18_break:;
+446: and rule.lhs not in insidescores[I.vec + vec]):
__pyx_t_16 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.lhs); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 446, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_16);
__pyx_t_21 = (__pyx_v_I.vec + __pyx_v_vec);
__pyx_t_14 = (__Pyx_PySequence_ContainsTF(__pyx_t_16, PyList_GET_ITEM(__pyx_v_insidescores, __pyx_t_21), Py_NE)); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 446, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
__pyx_t_12 = (__pyx_t_14 != 0);
__pyx_t_15 = __pyx_t_12;
__pyx_L23_bool_binop_done:;
+447: agenda.setifbetter(
__pyx_v_agenda.setifbetter(SmallChartItem(__pyx_v_rule.lhs, (__pyx_v_I.vec + __pyx_v_vec)), __pyx_t_11);
448: SmallChartItem(rule.lhs, I.vec + vec),
+449: rule.prob + x + insidescores[vec][rule.rhs2])
__pyx_t_16 = PyFloat_FromDouble((__pyx_v_rule.prob + __pyx_v_x)); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 449, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_4 = __Pyx_GetItemInt(PyList_GET_ITEM(__pyx_v_insidescores, __pyx_v_vec), __pyx_v_rule.rhs2, Label, 0, __Pyx_PyInt_From_uint32_t, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 449, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = PyNumber_Add(__pyx_t_16, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_11 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_11 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 449, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
450:
+451: for i in range(grammar.nonterminals):
__pyx_t_17 = __pyx_v_grammar->nonterminals;
for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) {
__pyx_v_i = __pyx_t_18;
+452: rule = grammar.rbinary[I.label][i]
__pyx_v_rule = ((__pyx_v_grammar->rbinary[__pyx_v_I.label])[__pyx_v_i]);
+453: if rule.rhs2 != I.label:
__pyx_t_15 = ((__pyx_v_rule.rhs2 != __pyx_v_I.label) != 0);
if (__pyx_t_15) {
/* … */
}
+454: break
goto __pyx_L26_break;
+455: for vec in range(1, maxlen - I.vec + 1):
__pyx_t_19 = ((__pyx_v_maxlen - __pyx_v_I.vec) + 1);
for (__pyx_t_20 = 1; __pyx_t_20 < __pyx_t_19; __pyx_t_20+=1) {
__pyx_v_vec = __pyx_t_20;
+456: if (rule.rhs1 in insidescores[vec]
__pyx_t_1 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.rhs1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 456, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_12 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, PyList_GET_ITEM(__pyx_v_insidescores, __pyx_v_vec), Py_EQ)); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 456, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_14 = (__pyx_t_12 != 0);
if (__pyx_t_14) {
} else {
__pyx_t_15 = __pyx_t_14;
goto __pyx_L31_bool_binop_done;
}
/* … */
if (__pyx_t_15) {
/* … */
}
}
}
__pyx_L26_break:;
}
+457: and rule.lhs not in insidescores[vec + I.vec]):
__pyx_t_1 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.lhs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 457, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_21 = (__pyx_v_vec + __pyx_v_I.vec);
__pyx_t_14 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, PyList_GET_ITEM(__pyx_v_insidescores, __pyx_t_21), Py_NE)); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 457, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_12 = (__pyx_t_14 != 0);
__pyx_t_15 = __pyx_t_12;
__pyx_L31_bool_binop_done:;
+458: agenda.setifbetter(
__pyx_v_agenda.setifbetter(SmallChartItem(__pyx_v_rule.lhs, (__pyx_v_vec + __pyx_v_I.vec)), __pyx_t_11);
459: SmallChartItem(rule.lhs, vec + I.vec),
+460: rule.prob + insidescores[vec][rule.rhs1] + x)
__pyx_t_1 = PyFloat_FromDouble(__pyx_v_rule.prob); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_GetItemInt(PyList_GET_ITEM(__pyx_v_insidescores, __pyx_v_vec), __pyx_v_rule.rhs1, Label, 0, __Pyx_PyInt_From_uint32_t, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_16 = PyNumber_Add(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = PyNumber_Add(__pyx_t_16, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_11 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_11 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 460, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+461: return insidescores
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_insidescores); __pyx_r = __pyx_v_insidescores; goto __pyx_L0;
462:
463:
+464: cdef pcfgoutsidesx(Grammar grammar, list insidescores, Label goal,
static PyObject *__pyx_f_8discodop_9estimates_pcfgoutsidesx(struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar, PyObject *__pyx_v_insidescores, Label __pyx_v_goal, uint32_t __pyx_v_maxlen) {
PyObject *__pyx_v_I = 0;
ProbRule __pyx_v_rule;
double __pyx_v_x;
double __pyx_v_insidescore;
double __pyx_v_current;
double __pyx_v_score;
int __pyx_v_state;
int __pyx_v_left;
int __pyx_v_right;
size_t __pyx_v_i;
size_t __pyx_v_sibsize;
__Pyx_memviewslice __pyx_v_outside = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_v_agenda = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("pcfgoutsidesx", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__Pyx_XDECREF(__pyx_t_18);
__Pyx_AddTraceback("discodop.estimates.pcfgoutsidesx", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_I);
__PYX_XDEC_MEMVIEW(&__pyx_v_outside, 1);
__Pyx_XDECREF(__pyx_v_agenda);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
465: uint32_t maxlen):
466: """outsideSX estimate for a PCFG, agenda-based version."""
467: cdef tuple I
468: cdef ProbRule rule
469: cdef double x, insidescore, current, score
470: cdef int state, left, right
471: cdef size_t i, sibsize
+472: cdef double [:, :, :, :] outside = np.empty(
__pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 472, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 472, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 472, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = 0; /* … */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 472, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(__pyx_t_3); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 472, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_outside = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+473: (grammar.nonterminals, maxlen + 1, maxlen + 1, 1), dtype='d')
__pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_grammar->nonterminals); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_long((__pyx_v_maxlen + 1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_long((__pyx_v_maxlen + 1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_int_1); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; /* … */ __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_n_u_d) < 0) __PYX_ERR(0, 473, __pyx_L1_error)
+474: outside[...] = np.inf
__pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 474, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; { double __pyx_temp_scalar = __pyx_t_7; { Py_ssize_t __pyx_temp_extent_0 = __pyx_v_outside.shape[0]; Py_ssize_t __pyx_temp_stride_0 = __pyx_v_outside.strides[0]; char *__pyx_temp_pointer_0; Py_ssize_t __pyx_temp_idx_0; Py_ssize_t __pyx_temp_extent_1 = __pyx_v_outside.shape[1]; Py_ssize_t __pyx_temp_stride_1 = __pyx_v_outside.strides[1]; char *__pyx_temp_pointer_1; Py_ssize_t __pyx_temp_idx_1; Py_ssize_t __pyx_temp_extent_2 = __pyx_v_outside.shape[2]; Py_ssize_t __pyx_temp_stride_2 = __pyx_v_outside.strides[2]; char *__pyx_temp_pointer_2; Py_ssize_t __pyx_temp_idx_2; Py_ssize_t __pyx_temp_extent_3 = __pyx_v_outside.shape[3]; Py_ssize_t __pyx_temp_stride_3 = __pyx_v_outside.strides[3]; char *__pyx_temp_pointer_3; Py_ssize_t __pyx_temp_idx_3; __pyx_temp_pointer_0 = __pyx_v_outside.data; for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) { __pyx_temp_pointer_1 = __pyx_temp_pointer_0; for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) { __pyx_temp_pointer_2 = __pyx_temp_pointer_1; for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) { __pyx_temp_pointer_3 = __pyx_temp_pointer_2; for (__pyx_temp_idx_3 = 0; __pyx_temp_idx_3 < __pyx_temp_extent_3; __pyx_temp_idx_3++) { *((double *) __pyx_temp_pointer_3) = __pyx_temp_scalar; __pyx_temp_pointer_3 += __pyx_temp_stride_3; } __pyx_temp_pointer_2 += __pyx_temp_stride_2; } __pyx_temp_pointer_1 += __pyx_temp_stride_1; } __pyx_temp_pointer_0 += __pyx_temp_stride_0; } } }
475:
+476: agenda = PyAgenda()
__pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_PyAgenda); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } if (__pyx_t_4) { __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 476, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_agenda = __pyx_t_5; __pyx_t_5 = 0;
+477: agenda[goal, 0, 0] = outside[goal, 0, 0, 0] = 0.0
__pyx_t_5 = __Pyx_PyInt_From_uint32_t(__pyx_v_goal); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 477, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 477, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_0); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_int_0); __pyx_t_5 = 0; if (unlikely(PyObject_SetItem(__pyx_v_agenda, __pyx_t_3, __pyx_float_0_0) < 0)) __PYX_ERR(0, 477, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = __pyx_v_goal; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; *((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_outside.data + __pyx_t_8 * __pyx_v_outside.strides[0]) ) + __pyx_t_9 * __pyx_v_outside.strides[1]) ) + __pyx_t_10 * __pyx_v_outside.strides[2]) ) + __pyx_t_11 * __pyx_v_outside.strides[3]) )) = 0.0;
+478: while agenda:
while (1) {
__pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_agenda); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 478, __pyx_L1_error)
if (!__pyx_t_12) break;
+479: I, x = agenda.popitem()
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_agenda, __pyx_n_s_popitem); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } if (__pyx_t_4) { __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 479, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 479, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 479, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_13 = Py_TYPE(__pyx_t_2)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_13(__pyx_t_2); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_4 = __pyx_t_13(__pyx_t_2); if (unlikely(!__pyx_t_4)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_2), 2) < 0) __PYX_ERR(0, 479, __pyx_L1_error) __pyx_t_13 = NULL; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_13 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 479, __pyx_L1_error) __pyx_L6_unpacking_done:; } if (!(likely(PyTuple_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 479, __pyx_L1_error) __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 479, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF_SET(__pyx_v_I, ((PyObject*)__pyx_t_5)); __pyx_t_5 = 0; __pyx_v_x = __pyx_t_7;
+480: state, left, right = I
if (likely(__pyx_v_I != Py_None)) {
PyObject* sequence = __pyx_v_I;
#if !CYTHON_COMPILING_IN_PYPY
Py_ssize_t size = Py_SIZE(sequence);
#else
Py_ssize_t size = PySequence_Size(sequence);
#endif
if (unlikely(size != 3)) {
if (size > 3) __Pyx_RaiseTooManyValuesError(3);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
__PYX_ERR(0, 480, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
__pyx_t_4 = PyTuple_GET_ITEM(sequence, 1);
__pyx_t_5 = PyTuple_GET_ITEM(sequence, 2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx_t_5);
#else
__pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 480, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 480, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 480, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
} else {
__Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 480, __pyx_L1_error)
}
__pyx_t_14 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 480, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_15 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 480, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_16 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_16 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 480, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_state = __pyx_t_14;
__pyx_v_left = __pyx_t_15;
__pyx_v_right = __pyx_t_16;
+481: if len(agenda) % 10000 == 0:
__pyx_t_17 = PyObject_Length(__pyx_v_agenda); if (unlikely(__pyx_t_17 == -1)) __PYX_ERR(0, 481, __pyx_L1_error)
__pyx_t_12 = (((__pyx_t_17 % 0x2710) == 0) != 0);
if (__pyx_t_12) {
/* … */
}
+482: print('agenda size: %dk top: %r, %g %s' % (
__pyx_t_3 = PyUnicode_Format(__pyx_kp_u_agenda_size_dk_top_r_g_s, __pyx_t_18); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+483: len(agenda) / 1000, I, exp(-x),
__pyx_t_17 = PyObject_Length(__pyx_v_agenda); if (unlikely(__pyx_t_17 == -1)) __PYX_ERR(0, 483, __pyx_L1_error) __pyx_t_5 = PyInt_FromSsize_t((__pyx_t_17 / 0x3E8)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 483, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_exp); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 483, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyFloat_FromDouble((-__pyx_v_x)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 483, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } if (!__pyx_t_1) { __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 483, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_2}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 483, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_2}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 483, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 483, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_1); __pyx_t_1 = NULL; __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_18, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 483, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* … */ __pyx_t_18 = PyTuple_New(4); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 483, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_5); __Pyx_INCREF(__pyx_v_I); __Pyx_GIVEREF(__pyx_v_I); PyTuple_SET_ITEM(__pyx_t_18, 1, __pyx_v_I); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_18, 2, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_18, 3, __pyx_t_3); __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0;
+484: grammar.tolabel[state]))
__pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_grammar->tolabel), __pyx_v_state, int, 1, __Pyx_PyInt_From_int, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3);
+485: i = 0
__pyx_v_i = 0;
+486: rule = grammar.bylhs[state][i]
__pyx_v_rule = ((__pyx_v_grammar->bylhs[__pyx_v_state])[__pyx_v_i]);
+487: while rule.lhs == state:
while (1) {
__pyx_t_12 = ((__pyx_v_rule.lhs == __pyx_v_state) != 0);
if (!__pyx_t_12) break;
488: # X -> A
+489: if rule.rhs2 == 0:
__pyx_t_12 = ((__pyx_v_rule.rhs2 == 0) != 0);
if (__pyx_t_12) {
/* … */
}
+490: score = rule.prob + x
__pyx_v_score = (__pyx_v_rule.prob + __pyx_v_x);
+491: if score < outside[rule.rhs1, left, right, 0]:
__pyx_t_19 = __pyx_v_rule.rhs1;
__pyx_t_20 = __pyx_v_left;
__pyx_t_21 = __pyx_v_right;
__pyx_t_22 = 0;
__pyx_t_12 = ((__pyx_v_score < (*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_outside.data + __pyx_t_19 * __pyx_v_outside.strides[0]) ) + __pyx_t_20 * __pyx_v_outside.strides[1]) ) + __pyx_t_21 * __pyx_v_outside.strides[2]) ) + __pyx_t_22 * __pyx_v_outside.strides[3]) )))) != 0);
if (__pyx_t_12) {
/* … */
}
+492: agenda[(rule.rhs1, left, right)] = score
__pyx_t_3 = PyFloat_FromDouble(__pyx_v_score); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_18 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.rhs1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_left); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_right); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_18); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_18); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_5); __pyx_t_18 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; if (unlikely(PyObject_SetItem(__pyx_v_agenda, __pyx_t_2, __pyx_t_3) < 0)) __PYX_ERR(0, 492, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+493: outside[rule.rhs1, left, right, 0] = score
__pyx_t_23 = __pyx_v_rule.rhs1;
__pyx_t_24 = __pyx_v_left;
__pyx_t_25 = __pyx_v_right;
__pyx_t_26 = 0;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_outside.data + __pyx_t_23 * __pyx_v_outside.strides[0]) ) + __pyx_t_24 * __pyx_v_outside.strides[1]) ) + __pyx_t_25 * __pyx_v_outside.strides[2]) ) + __pyx_t_26 * __pyx_v_outside.strides[3]) )) = __pyx_v_score;
+494: i += 1
__pyx_v_i = (__pyx_v_i + 1);
+495: rule = grammar.bylhs[state][i]
__pyx_v_rule = ((__pyx_v_grammar->bylhs[__pyx_v_state])[__pyx_v_i]);
+496: continue
goto __pyx_L8_continue;
497:
498: # item is on the left: X -> A B.
+499: for sibsize in range(1, maxlen - left - right):
__pyx_t_27 = ((__pyx_v_maxlen - __pyx_v_left) - __pyx_v_right);
for (__pyx_t_28 = 1; __pyx_t_28 < __pyx_t_27; __pyx_t_28+=1) {
__pyx_v_sibsize = __pyx_t_28;
+500: insidescore = insidescores[sibsize].get(rule.rhs2, INFINITY)
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 500, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(PyList_GET_ITEM(__pyx_v_insidescores, __pyx_v_sibsize), __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 500, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_5 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.rhs2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 500, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_4 = PyFloat_FromDouble(HUGE_VAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 500, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_18 = NULL;
__pyx_t_16 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_18 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_18)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_18);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
__pyx_t_16 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[3] = {__pyx_t_18, __pyx_t_5, __pyx_t_4};
__pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 500, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[3] = {__pyx_t_18, __pyx_t_5, __pyx_t_4};
__pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 500, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else
#endif
{
__pyx_t_1 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 500, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (__pyx_t_18) {
__Pyx_GIVEREF(__pyx_t_18); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_18); __pyx_t_18 = NULL;
}
__Pyx_GIVEREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_16, __pyx_t_5);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_16, __pyx_t_4);
__pyx_t_5 = 0;
__pyx_t_4 = 0;
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 500, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 500, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_v_insidescore = __pyx_t_7;
+501: score = rule.prob + x + insidescore
__pyx_v_score = ((__pyx_v_rule.prob + __pyx_v_x) + __pyx_v_insidescore);
+502: current = outside[rule.rhs1, left, right + sibsize, 0]
__pyx_t_29 = __pyx_v_rule.rhs1;
__pyx_t_30 = __pyx_v_left;
__pyx_t_31 = (__pyx_v_right + __pyx_v_sibsize);
__pyx_t_32 = 0;
__pyx_v_current = (*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_outside.data + __pyx_t_29 * __pyx_v_outside.strides[0]) ) + __pyx_t_30 * __pyx_v_outside.strides[1]) ) + __pyx_t_31 * __pyx_v_outside.strides[2]) ) + __pyx_t_32 * __pyx_v_outside.strides[3]) )));
+503: if score < current:
__pyx_t_12 = ((__pyx_v_score < __pyx_v_current) != 0);
if (__pyx_t_12) {
/* … */
}
}
+504: agenda[(rule.rhs1, left, right + sibsize)] = score
__pyx_t_3 = PyFloat_FromDouble(__pyx_v_score); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.rhs1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_left); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyInt_FromSize_t((__pyx_v_right + __pyx_v_sibsize)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4); __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_4 = 0; if (unlikely(PyObject_SetItem(__pyx_v_agenda, __pyx_t_5, __pyx_t_3) < 0)) __PYX_ERR(0, 504, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+505: outside[rule.rhs1, left, right + sibsize, 0] = score
__pyx_t_33 = __pyx_v_rule.rhs1;
__pyx_t_34 = __pyx_v_left;
__pyx_t_35 = (__pyx_v_right + __pyx_v_sibsize);
__pyx_t_36 = 0;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_outside.data + __pyx_t_33 * __pyx_v_outside.strides[0]) ) + __pyx_t_34 * __pyx_v_outside.strides[1]) ) + __pyx_t_35 * __pyx_v_outside.strides[2]) ) + __pyx_t_36 * __pyx_v_outside.strides[3]) )) = __pyx_v_score;
506:
507: # item is on the right: X -> B A
+508: for sibsize in range(1, maxlen - left - right):
__pyx_t_27 = ((__pyx_v_maxlen - __pyx_v_left) - __pyx_v_right);
for (__pyx_t_28 = 1; __pyx_t_28 < __pyx_t_27; __pyx_t_28+=1) {
__pyx_v_sibsize = __pyx_t_28;
+509: insidescore = insidescores[sibsize].get(rule.rhs1, INFINITY)
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 509, __pyx_L1_error)
}
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(PyList_GET_ITEM(__pyx_v_insidescores, __pyx_v_sibsize), __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 509, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_4 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.rhs1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 509, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = PyFloat_FromDouble(HUGE_VAL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 509, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = NULL;
__pyx_t_16 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
__pyx_t_16 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_4, __pyx_t_1};
__pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 509, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_4, __pyx_t_1};
__pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_16, 2+__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 509, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
} else
#endif
{
__pyx_t_18 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 509, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_18);
if (__pyx_t_2) {
__Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_2); __pyx_t_2 = NULL;
}
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_18, 0+__pyx_t_16, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_16, __pyx_t_1);
__pyx_t_4 = 0;
__pyx_t_1 = 0;
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 509, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 509, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_v_insidescore = __pyx_t_7;
+510: score = rule.prob + insidescore + x
__pyx_v_score = ((__pyx_v_rule.prob + __pyx_v_insidescore) + __pyx_v_x);
+511: current = outside[rule.rhs2, left + sibsize, right, 0]
__pyx_t_37 = __pyx_v_rule.rhs2;
__pyx_t_38 = (__pyx_v_left + __pyx_v_sibsize);
__pyx_t_39 = __pyx_v_right;
__pyx_t_40 = 0;
__pyx_v_current = (*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_outside.data + __pyx_t_37 * __pyx_v_outside.strides[0]) ) + __pyx_t_38 * __pyx_v_outside.strides[1]) ) + __pyx_t_39 * __pyx_v_outside.strides[2]) ) + __pyx_t_40 * __pyx_v_outside.strides[3]) )));
+512: if score < current:
__pyx_t_12 = ((__pyx_v_score < __pyx_v_current) != 0);
if (__pyx_t_12) {
/* … */
}
}
+513: agenda[(rule.rhs2, left + sibsize, right)] = score
__pyx_t_3 = PyFloat_FromDouble(__pyx_v_score); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 513, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.rhs2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 513, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_18 = __Pyx_PyInt_FromSize_t((__pyx_v_left + __pyx_v_sibsize)); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 513, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_right); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 513, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 513, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_18); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_18); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1); __pyx_t_5 = 0; __pyx_t_18 = 0; __pyx_t_1 = 0; if (unlikely(PyObject_SetItem(__pyx_v_agenda, __pyx_t_4, __pyx_t_3) < 0)) __PYX_ERR(0, 513, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+514: outside[rule.rhs2, left + sibsize, right, 0] = score
__pyx_t_41 = __pyx_v_rule.rhs2;
__pyx_t_42 = (__pyx_v_left + __pyx_v_sibsize);
__pyx_t_43 = __pyx_v_right;
__pyx_t_44 = 0;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_outside.data + __pyx_t_41 * __pyx_v_outside.strides[0]) ) + __pyx_t_42 * __pyx_v_outside.strides[1]) ) + __pyx_t_43 * __pyx_v_outside.strides[2]) ) + __pyx_t_44 * __pyx_v_outside.strides[3]) )) = __pyx_v_score;
515:
+516: i += 1
__pyx_v_i = (__pyx_v_i + 1);
+517: rule = grammar.bylhs[state][i]
__pyx_v_rule = ((__pyx_v_grammar->bylhs[__pyx_v_state])[__pyx_v_i]);
__pyx_L8_continue:;
}
}
518: # end while rule.lhs == state:
519: # end while agenda:
+520: return outside.base
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_outside, 4, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 520, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_base); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 520, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
521:
522:
+523: cpdef getpcfgestimatesrec(Grammar grammar, uint32_t maxlen, Label goal,
static PyObject *__pyx_pw_8discodop_9estimates_11getpcfgestimatesrec(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_8discodop_9estimates_getpcfgestimatesrec(struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar, uint32_t __pyx_v_maxlen, Label __pyx_v_goal, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_8discodop_9estimates_getpcfgestimatesrec *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_19);
__Pyx_XDECREF(__pyx_t_22);
__Pyx_XDECREF(__pyx_t_23);
__Pyx_XDECREF(__pyx_t_24);
__Pyx_XDECREF(__pyx_t_25);
__Pyx_AddTraceback("discodop.estimates.getpcfgestimatesrec", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_insidescores);
__Pyx_XDECREF(__pyx_v_outsidescores);
__Pyx_XDECREF(__pyx_v_lspan);
__Pyx_XDECREF(__pyx_v_rspan);
__Pyx_XDECREF(__pyx_v_k);
__Pyx_XDECREF(__pyx_v_v);
__Pyx_XDECREF(__pyx_v_outside);
__Pyx_XDECREF(__pyx_v_state);
__Pyx_XDECREF(__pyx_v_prob);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_8discodop_9estimates_11getpcfgestimatesrec(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8discodop_9estimates_10getpcfgestimatesrec[] = "getpcfgestimatesrec(Grammar grammar, uint32_t maxlen, Label goal, bool debug=False)";
static PyObject *__pyx_pw_8discodop_9estimates_11getpcfgestimatesrec(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar = 0;
uint32_t __pyx_v_maxlen;
Label __pyx_v_goal;
int __pyx_v_debug;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("getpcfgestimatesrec (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_grammar,&__pyx_n_s_maxlen,&__pyx_n_s_goal,&__pyx_n_s_debug,0};
PyObject* values[4] = {0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_grammar)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_maxlen)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("getpcfgestimatesrec", 0, 3, 4, 1); __PYX_ERR(0, 523, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_goal)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("getpcfgestimatesrec", 0, 3, 4, 2); __PYX_ERR(0, 523, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_debug);
if (value) { values[3] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "getpcfgestimatesrec") < 0)) __PYX_ERR(0, 523, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_grammar = ((struct __pyx_obj_8discodop_10containers_Grammar *)values[0]);
__pyx_v_maxlen = __Pyx_PyInt_As_uint32_t(values[1]); if (unlikely((__pyx_v_maxlen == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 523, __pyx_L3_error)
__pyx_v_goal = __Pyx_PyInt_As_uint32_t(values[2]); if (unlikely((__pyx_v_goal == ((Label)-1)) && PyErr_Occurred())) __PYX_ERR(0, 523, __pyx_L3_error)
if (values[3]) {
__pyx_v_debug = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_debug == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 524, __pyx_L3_error)
} else {
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_8discodop_9estimates_10getpcfgestimatesrec(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar, uint32_t __pyx_v_maxlen, Label __pyx_v_goal, int __pyx_v_debug) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("getpcfgestimatesrec", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_2.__pyx_n = 1;
__pyx_t_2.debug = __pyx_v_debug;
__pyx_t_1 = __pyx_f_8discodop_9estimates_getpcfgestimatesrec(__pyx_v_grammar, __pyx_v_maxlen, __pyx_v_goal, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 523, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("discodop.estimates.getpcfgestimatesrec", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_8discodop_9estimates_getpcfgestimatesrec {
int __pyx_n;
int debug;
};
+524: bint debug=False):
int __pyx_v_debug = ((int)0); PyObject *__pyx_v_insidescores = NULL; PyObject *__pyx_v_outsidescores = NULL; long __pyx_v_span; PyObject *__pyx_v_lspan = NULL; PyObject *__pyx_v_rspan = NULL; std::pair<Label,spp::sparse_hash_map<std::string,uint32_t> > __pyx_v_lhsrules; Label __pyx_v_lhs; PyObject *__pyx_v_k = NULL; PyObject *__pyx_v_v = NULL; PyObject *__pyx_v_outside = NULL; PyObject *__pyx_v_state = NULL; PyObject *__pyx_v_prob = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("getpcfgestimatesrec", 0); if (__pyx_optional_args) { if (__pyx_optional_args->__pyx_n > 0) { __pyx_v_debug = __pyx_optional_args->debug; } } /* … */ __pyx_v_debug = ((int)0); } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("getpcfgestimatesrec", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 523, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("discodop.estimates.getpcfgestimatesrec", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grammar), __pyx_ptype_8discodop_10containers_Grammar, 1, "grammar", 0))) __PYX_ERR(0, 523, __pyx_L1_error) __pyx_r = __pyx_pf_8discodop_9estimates_10getpcfgestimatesrec(__pyx_self, __pyx_v_grammar, __pyx_v_maxlen, __pyx_v_goal, __pyx_v_debug);
+525: insidescores = [{} for _ in range(maxlen + 1)]
{ /* enter inner scope */
CYTHON_UNUSED long __pyx_8genexpr4__pyx_v__;
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 525, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = (__pyx_v_maxlen + 1);
for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
__pyx_8genexpr4__pyx_v__ = __pyx_t_3;
__pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 525, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) __PYX_ERR(0, 525, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
}
} /* exit inner scope */
__pyx_v_insidescores = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
+526: outsidescores = {}
__pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_outsidescores = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+527: for span in range(1, maxlen + 1):
__pyx_t_2 = (__pyx_v_maxlen + 1);
for (__pyx_t_3 = 1; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
__pyx_v_span = __pyx_t_3;
+528: insidescores[span][goal] = pcfginsidesxrec(
__pyx_t_1 = __pyx_f_8discodop_9estimates_pcfginsidesxrec(__pyx_v_grammar, __pyx_v_insidescores, __pyx_v_goal, __pyx_v_span); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 528, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (unlikely(__Pyx_SetItemInt(PyList_GET_ITEM(__pyx_v_insidescores, __pyx_v_span), __pyx_v_goal, __pyx_t_1, Label, 0, __Pyx_PyInt_From_uint32_t, 0, 0, 0) < 0)) __PYX_ERR(0, 528, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
529: grammar, insidescores, goal, span)
+530: for lspan in range(maxlen + 1):
__pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_maxlen + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_4 = __pyx_t_1; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; __pyx_t_6 = NULL; } else { __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 530, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_6)) { if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 530, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 530, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_6(__pyx_t_4); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 530, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_lspan, __pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+531: for rspan in range(maxlen - lspan + 1):
__pyx_t_1 = __Pyx_PyInt_From_uint32_t(__pyx_v_maxlen); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 531, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_7 = PyNumber_Subtract(__pyx_t_1, __pyx_v_lspan); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 531, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_7, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 531, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 531, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
__pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 531, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
__pyx_t_7 = __pyx_t_1; __Pyx_INCREF(__pyx_t_7); __pyx_t_8 = 0;
__pyx_t_9 = NULL;
} else {
__pyx_t_8 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 531, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_9 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 531, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
for (;;) {
if (likely(!__pyx_t_9)) {
if (likely(PyList_CheckExact(__pyx_t_7))) {
if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_7)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_1 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 531, __pyx_L1_error)
#else
__pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 531, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
} else {
if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 531, __pyx_L1_error)
#else
__pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 531, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
}
} else {
__pyx_t_1 = __pyx_t_9(__pyx_t_7);
if (unlikely(!__pyx_t_1)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
else __PYX_ERR(0, 531, __pyx_L1_error)
}
break;
}
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_XDECREF_SET(__pyx_v_rspan, __pyx_t_1);
__pyx_t_1 = 0;
/* … */
}
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+532: for lhsrules in grammar.lexicalbylhs:
__pyx_t_11 = &__pyx_v_grammar->lexicalbylhs;
__pyx_t_10 = __pyx_t_11->begin();
for (;;) {
if (!(__pyx_t_10 != __pyx_t_11->end())) break;
__pyx_t_12 = *__pyx_t_10;
++__pyx_t_10;
__pyx_v_lhsrules = __pyx_t_12;
/* … */
__pyx_L11_continue:;
}
+533: lhs = lhsrules.first
__pyx_t_13 = __pyx_v_lhsrules.first;
__pyx_v_lhs = __pyx_t_13;
+534: if (lhs, lspan, rspan) in outsidescores:
__pyx_t_1 = __Pyx_PyInt_From_uint32_t(__pyx_v_lhs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 534, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 534, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_14);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_1);
__Pyx_INCREF(__pyx_v_lspan);
__Pyx_GIVEREF(__pyx_v_lspan);
PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_v_lspan);
__Pyx_INCREF(__pyx_v_rspan);
__Pyx_GIVEREF(__pyx_v_rspan);
PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_v_rspan);
__pyx_t_1 = 0;
__pyx_t_15 = (__Pyx_PyDict_ContainsTF(__pyx_t_14, __pyx_v_outsidescores, Py_EQ)); if (unlikely(__pyx_t_15 < 0)) __PYX_ERR(0, 534, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
__pyx_t_16 = (__pyx_t_15 != 0);
if (__pyx_t_16) {
/* … */
}
+535: continue
goto __pyx_L11_continue;
+536: outsidescores[lhs, lspan, rspan] = pcfgoutsidesxrec(grammar,
__pyx_t_14 = __pyx_f_8discodop_9estimates_pcfgoutsidesxrec(__pyx_v_grammar, __pyx_v_insidescores, __pyx_v_outsidescores, __pyx_v_goal, __pyx_v_lhs, __pyx_t_17, __pyx_t_18); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 536, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_14);
__pyx_t_1 = __Pyx_PyInt_From_uint32_t(__pyx_v_lhs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 536, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_19 = PyTuple_New(3); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 536, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_19);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_1);
__Pyx_INCREF(__pyx_v_lspan);
__Pyx_GIVEREF(__pyx_v_lspan);
PyTuple_SET_ITEM(__pyx_t_19, 1, __pyx_v_lspan);
__Pyx_INCREF(__pyx_v_rspan);
__Pyx_GIVEREF(__pyx_v_rspan);
PyTuple_SET_ITEM(__pyx_t_19, 2, __pyx_v_rspan);
__pyx_t_1 = 0;
if (unlikely(PyDict_SetItem(__pyx_v_outsidescores, __pyx_t_19, __pyx_t_14) < 0)) __PYX_ERR(0, 536, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+537: insidescores, outsidescores, goal, lhs, lspan, rspan)
__pyx_t_17 = __Pyx_PyInt_As_int(__pyx_v_lspan); if (unlikely((__pyx_t_17 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 537, __pyx_L1_error) __pyx_t_18 = __Pyx_PyInt_As_int(__pyx_v_rspan); if (unlikely((__pyx_t_18 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 537, __pyx_L1_error)
+538: if debug:
__pyx_t_16 = (__pyx_v_debug != 0);
if (__pyx_t_16) {
/* … */
}
+539: print('inside:')
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 539, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* … */ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_u_inside); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 539, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__8); __Pyx_GIVEREF(__pyx_tuple__8);
+540: for span in range(1, maxlen + 1):
__pyx_t_2 = (__pyx_v_maxlen + 1);
for (__pyx_t_3 = 1; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
__pyx_v_span = __pyx_t_3;
+541: for k, v in sorted(insidescores[span].items()):
__pyx_t_14 = __Pyx_PyObject_GetAttrStr(PyList_GET_ITEM(__pyx_v_insidescores, __pyx_v_span), __pyx_n_s_items); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 541, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_19 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_14))) { __pyx_t_19 = PyMethod_GET_SELF(__pyx_t_14); if (likely(__pyx_t_19)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); __Pyx_INCREF(__pyx_t_19); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_14, function); } } if (__pyx_t_19) { __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_19); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 541, __pyx_L1_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; } else { __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_14); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 541, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = PySequence_List(__pyx_t_7); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 541, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_4 = ((PyObject*)__pyx_t_14); __pyx_t_14 = 0; __pyx_t_20 = PyList_Sort(__pyx_t_4); if (unlikely(__pyx_t_20 == -1)) __PYX_ERR(0, 541, __pyx_L1_error) if (unlikely(__pyx_t_4 == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); __PYX_ERR(0, 541, __pyx_L1_error) } __pyx_t_14 = __pyx_t_4; __Pyx_INCREF(__pyx_t_14); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; for (;;) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_14)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_14, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 541, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_14, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 541, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 541, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_19 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_7 = PyList_GET_ITEM(sequence, 0); __pyx_t_19 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_19); #else __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 541, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_19 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 541, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_21 = Py_TYPE(__pyx_t_1)->tp_iternext; index = 0; __pyx_t_7 = __pyx_t_21(__pyx_t_1); if (unlikely(!__pyx_t_7)) goto __pyx_L19_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); index = 1; __pyx_t_19 = __pyx_t_21(__pyx_t_1); if (unlikely(!__pyx_t_19)) goto __pyx_L19_unpacking_failed; __Pyx_GOTREF(__pyx_t_19); if (__Pyx_IternextUnpackEndCheck(__pyx_t_21(__pyx_t_1), 2) < 0) __PYX_ERR(0, 541, __pyx_L1_error) __pyx_t_21 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L20_unpacking_done; __pyx_L19_unpacking_failed:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_21 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 541, __pyx_L1_error) __pyx_L20_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_19); __pyx_t_19 = 0; /* … */ } __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; }
+542: if v < INFINITY:
__pyx_t_4 = PyFloat_FromDouble(HUGE_VAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_19 = PyObject_RichCompare(__pyx_v_v, __pyx_t_4, Py_LT); __Pyx_XGOTREF(__pyx_t_19); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_19); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (__pyx_t_16) { /* … */ }
+543: print("%s[%d] %g" % (
__pyx_t_7 = PyUnicode_Format(__pyx_kp_u_s_d_g, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+544: grammar.tolabel[k], span, exp(-v)))
__pyx_t_19 = PyObject_GetItem(((PyObject *)__pyx_v_grammar->tolabel), __pyx_v_k); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __pyx_t_4 = __Pyx_PyInt_From_long(__pyx_v_span); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_exp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_22 = PyNumber_Negative(__pyx_v_v); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_22); __pyx_t_23 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_23)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_23); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } if (!__pyx_t_23) { __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_22); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 544, __pyx_L1_error) __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; __Pyx_GOTREF(__pyx_t_7); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[2] = {__pyx_t_23, __pyx_t_22}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 544, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[2] = {__pyx_t_23, __pyx_t_22}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 544, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; } else #endif { __pyx_t_24 = PyTuple_New(1+1); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_24); __Pyx_GIVEREF(__pyx_t_23); PyTuple_SET_ITEM(__pyx_t_24, 0, __pyx_t_23); __pyx_t_23 = NULL; __Pyx_GIVEREF(__pyx_t_22); PyTuple_SET_ITEM(__pyx_t_24, 0+1, __pyx_t_22); __pyx_t_22 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_24, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0; } } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_19); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_19); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_7); __pyx_t_19 = 0; __pyx_t_4 = 0; __pyx_t_7 = 0;
+545: print('infinite:', end=' ')
__pyx_t_14 = PyDict_New(); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_end, __pyx_kp_u__6) < 0) __PYX_ERR(0, 545, __pyx_L1_error) __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__9, __pyx_t_14); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* … */ __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_infinite); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__9); __Pyx_GIVEREF(__pyx_tuple__9);
+546: for span in range(1, maxlen + 1):
__pyx_t_2 = (__pyx_v_maxlen + 1);
for (__pyx_t_3 = 1; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
__pyx_v_span = __pyx_t_3;
+547: for k, v in sorted(insidescores[span].items()):
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(PyList_GET_ITEM(__pyx_v_insidescores, __pyx_v_span), __pyx_n_s_items); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } if (__pyx_t_4) { __pyx_t_14 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { __pyx_t_14 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 547, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PySequence_List(__pyx_t_14); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_7 = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; __pyx_t_20 = PyList_Sort(__pyx_t_7); if (unlikely(__pyx_t_20 == -1)) __PYX_ERR(0, 547, __pyx_L1_error) if (unlikely(__pyx_t_7 == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); __PYX_ERR(0, 547, __pyx_L1_error) } __pyx_t_1 = __pyx_t_7; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; for (;;) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 547, __pyx_L1_error) #else __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) { PyObject* sequence = __pyx_t_7; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 547, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_14 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_14 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(__pyx_t_4); #else __pyx_t_14 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { Py_ssize_t index = -1; __pyx_t_19 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_21 = Py_TYPE(__pyx_t_19)->tp_iternext; index = 0; __pyx_t_14 = __pyx_t_21(__pyx_t_19); if (unlikely(!__pyx_t_14)) goto __pyx_L26_unpacking_failed; __Pyx_GOTREF(__pyx_t_14); index = 1; __pyx_t_4 = __pyx_t_21(__pyx_t_19); if (unlikely(!__pyx_t_4)) goto __pyx_L26_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); if (__Pyx_IternextUnpackEndCheck(__pyx_t_21(__pyx_t_19), 2) < 0) __PYX_ERR(0, 547, __pyx_L1_error) __pyx_t_21 = NULL; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; goto __pyx_L27_unpacking_done; __pyx_L26_unpacking_failed:; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __pyx_t_21 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 547, __pyx_L1_error) __pyx_L27_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_14); __pyx_t_14 = 0; __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_4); __pyx_t_4 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; }
+548: if v == INFINITY:
__pyx_t_7 = PyFloat_FromDouble(HUGE_VAL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 548, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyObject_RichCompare(__pyx_v_v, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 548, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 548, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_16) { /* … */ }
+549: print("%s[%d]" % (
__pyx_t_7 = PyUnicode_Format(__pyx_kp_u_s_d, __pyx_t_14); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_7); __pyx_t_7 = 0; /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_14, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+550: grammar.tolabel[k], span), end=' ')
__pyx_t_4 = PyObject_GetItem(((PyObject *)__pyx_v_grammar->tolabel), __pyx_v_k); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyInt_From_long(__pyx_v_span); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_7); __pyx_t_4 = 0; __pyx_t_7 = 0; /* … */ __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_end, __pyx_kp_u__6) < 0) __PYX_ERR(0, 550, __pyx_L1_error)
551:
+552: print('\n\noutside:')
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_outside_2); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 552, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__10); __Pyx_GIVEREF(__pyx_tuple__10);
+553: for k, v in sorted(outsidescores.items()):
__pyx_t_4 = __Pyx_PyDict_Items(__pyx_v_outsidescores); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = PySequence_List(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = ((PyObject*)__pyx_t_7); __pyx_t_7 = 0; __pyx_t_20 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_20 == -1)) __PYX_ERR(0, 553, __pyx_L1_error) if (unlikely(__pyx_t_1 == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); __PYX_ERR(0, 553, __pyx_L1_error) } __pyx_t_7 = __pyx_t_1; __Pyx_INCREF(__pyx_t_7); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_7)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 553, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 553, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_14 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_4 = PyList_GET_ITEM(sequence, 0); __pyx_t_14 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_14); #else __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_14 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_19 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_21 = Py_TYPE(__pyx_t_19)->tp_iternext; index = 0; __pyx_t_4 = __pyx_t_21(__pyx_t_19); if (unlikely(!__pyx_t_4)) goto __pyx_L31_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_14 = __pyx_t_21(__pyx_t_19); if (unlikely(!__pyx_t_14)) goto __pyx_L31_unpacking_failed; __Pyx_GOTREF(__pyx_t_14); if (__Pyx_IternextUnpackEndCheck(__pyx_t_21(__pyx_t_19), 2) < 0) __PYX_ERR(0, 553, __pyx_L1_error) __pyx_t_21 = NULL; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; goto __pyx_L32_unpacking_done; __pyx_L31_unpacking_failed:; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __pyx_t_21 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 553, __pyx_L1_error) __pyx_L32_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_14); __pyx_t_14 = 0; /* … */ } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+554: if v < INFINITY:
__pyx_t_1 = PyFloat_FromDouble(HUGE_VAL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 554, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_14 = PyObject_RichCompare(__pyx_v_v, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_14); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 554, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 554, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (__pyx_t_16) { /* … */ }
+555: print("%s[%d-%d] %g" % (
__pyx_t_19 = PyUnicode_Format(__pyx_kp_u_s_d_d_g, __pyx_t_24); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0; __pyx_t_24 = PyTuple_New(1); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_24); __Pyx_GIVEREF(__pyx_t_19); PyTuple_SET_ITEM(__pyx_t_24, 0, __pyx_t_19); __pyx_t_19 = 0; __pyx_t_19 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_24, NULL); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
+556: grammar.tolabel[k[0]], k[1], k[2],
__pyx_t_14 = __Pyx_GetItemInt(__pyx_v_k, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_grammar->tolabel), __pyx_t_14); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = __Pyx_GetItemInt(__pyx_v_k, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_k, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); /* … */ __pyx_t_24 = PyTuple_New(4); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_24); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_24, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_24, 1, __pyx_t_14); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_24, 2, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_19); PyTuple_SET_ITEM(__pyx_t_24, 3, __pyx_t_19); __pyx_t_1 = 0; __pyx_t_14 = 0; __pyx_t_4 = 0; __pyx_t_19 = 0;
+557: exp(-v)))
__pyx_t_24 = __Pyx_GetModuleGlobalName(__pyx_n_s_exp); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 557, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_24); __pyx_t_22 = PyNumber_Negative(__pyx_v_v); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 557, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_22); __pyx_t_23 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_24))) { __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_24); if (likely(__pyx_t_23)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_24); __Pyx_INCREF(__pyx_t_23); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_24, function); } } if (!__pyx_t_23) { __pyx_t_19 = __Pyx_PyObject_CallOneArg(__pyx_t_24, __pyx_t_22); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 557, __pyx_L1_error) __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; __Pyx_GOTREF(__pyx_t_19); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_24)) { PyObject *__pyx_temp[2] = {__pyx_t_23, __pyx_t_22}; __pyx_t_19 = __Pyx_PyFunction_FastCall(__pyx_t_24, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 557, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0; __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_24)) { PyObject *__pyx_temp[2] = {__pyx_t_23, __pyx_t_22}; __pyx_t_19 = __Pyx_PyCFunction_FastCall(__pyx_t_24, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 557, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0; __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; } else #endif { __pyx_t_25 = PyTuple_New(1+1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 557, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __Pyx_GIVEREF(__pyx_t_23); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_23); __pyx_t_23 = NULL; __Pyx_GIVEREF(__pyx_t_22); PyTuple_SET_ITEM(__pyx_t_25, 0+1, __pyx_t_22); __pyx_t_22 = 0; __pyx_t_19 = __Pyx_PyObject_Call(__pyx_t_24, __pyx_t_25, NULL); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 557, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; } } __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
+558: print('infinite:', end=' ')
__pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_end, __pyx_kp_u__6) < 0) __PYX_ERR(0, 558, __pyx_L1_error) __pyx_t_19 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__11, __pyx_t_7); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; /* … */ __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_u_infinite); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 558, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__11); __Pyx_GIVEREF(__pyx_tuple__11);
+559: for k, v in sorted(outsidescores.items()):
__pyx_t_7 = __Pyx_PyDict_Items(__pyx_v_outsidescores); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 559, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_24 = PySequence_List(__pyx_t_7); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 559, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_24); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_19 = ((PyObject*)__pyx_t_24); __pyx_t_24 = 0; __pyx_t_20 = PyList_Sort(__pyx_t_19); if (unlikely(__pyx_t_20 == -1)) __PYX_ERR(0, 559, __pyx_L1_error) if (unlikely(__pyx_t_19 == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); __PYX_ERR(0, 559, __pyx_L1_error) } __pyx_t_24 = __pyx_t_19; __Pyx_INCREF(__pyx_t_24); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; for (;;) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_24)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_19 = PyList_GET_ITEM(__pyx_t_24, __pyx_t_5); __Pyx_INCREF(__pyx_t_19); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 559, __pyx_L1_error) #else __pyx_t_19 = PySequence_ITEM(__pyx_t_24, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 559, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); #endif if ((likely(PyTuple_CheckExact(__pyx_t_19))) || (PyList_CheckExact(__pyx_t_19))) { PyObject* sequence = __pyx_t_19; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 559, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_7 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_4); #else __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 559, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 559, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; } else { Py_ssize_t index = -1; __pyx_t_14 = PyObject_GetIter(__pyx_t_19); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 559, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __pyx_t_21 = Py_TYPE(__pyx_t_14)->tp_iternext; index = 0; __pyx_t_7 = __pyx_t_21(__pyx_t_14); if (unlikely(!__pyx_t_7)) goto __pyx_L36_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); index = 1; __pyx_t_4 = __pyx_t_21(__pyx_t_14); if (unlikely(!__pyx_t_4)) goto __pyx_L36_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); if (__Pyx_IternextUnpackEndCheck(__pyx_t_21(__pyx_t_14), 2) < 0) __PYX_ERR(0, 559, __pyx_L1_error) __pyx_t_21 = NULL; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; goto __pyx_L37_unpacking_done; __pyx_L36_unpacking_failed:; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_21 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 559, __pyx_L1_error) __pyx_L37_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_4); __pyx_t_4 = 0; /* … */ } __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
+560: if v == INFINITY:
__pyx_t_19 = PyFloat_FromDouble(HUGE_VAL); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __pyx_t_4 = PyObject_RichCompare(__pyx_v_v, __pyx_t_19, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 560, __pyx_L1_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 560, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_16) { /* … */ }
+561: print("%s[%d-%d]" % (
__pyx_t_7 = PyUnicode_Format(__pyx_kp_u_s_d_d, __pyx_t_14); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 561, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 561, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_7); __pyx_t_7 = 0; /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_14, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 561, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+562: grammar.tolabel[k[0]], k[1], k[2]),
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_k, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_19 = PyObject_GetItem(((PyObject *)__pyx_v_grammar->tolabel), __pyx_t_4); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_k, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_k, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_GIVEREF(__pyx_t_19); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_19); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_t_7); __pyx_t_19 = 0; __pyx_t_4 = 0; __pyx_t_7 = 0;
+563: end=' ')
__pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_end, __pyx_kp_u__6) < 0) __PYX_ERR(0, 563, __pyx_L1_error)
+564: outside = np.empty((grammar.nonterminals, maxlen + 1, maxlen + 1, 1),
__pyx_t_24 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_24); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_24, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0; __pyx_t_24 = __Pyx_PyInt_FromSize_t(__pyx_v_grammar->nonterminals); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_24); __pyx_t_7 = __Pyx_PyInt_From_long((__pyx_v_maxlen + 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_14 = __Pyx_PyInt_From_long((__pyx_v_maxlen + 1)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_19 = PyTuple_New(4); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_GIVEREF(__pyx_t_24); PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_24); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_19, 1, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_19, 2, __pyx_t_14); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_19, 3, __pyx_int_1); __pyx_t_24 = 0; __pyx_t_7 = 0; __pyx_t_14 = 0; __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_GIVEREF(__pyx_t_19); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_19); __pyx_t_19 = 0; /* … */ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_14, __pyx_t_19); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __pyx_v_outside = __pyx_t_7; __pyx_t_7 = 0;
+565: dtype='d')
__pyx_t_19 = PyDict_New(); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 565, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); if (PyDict_SetItem(__pyx_t_19, __pyx_n_s_dtype, __pyx_n_u_d) < 0) __PYX_ERR(0, 565, __pyx_L1_error)
+566: outside[...] = np.inf
__pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 566, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_19 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_inf); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 566, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(PyObject_SetItem(__pyx_v_outside, Py_Ellipsis, __pyx_t_19) < 0)) __PYX_ERR(0, 566, __pyx_L1_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
567: # convert sparse dictionary to dense numpy array
+568: for (state, lspan, rspan), prob in outsidescores.items():
__pyx_t_5 = 0; __pyx_t_7 = __Pyx_dict_iterator(__pyx_v_outsidescores, 1, __pyx_n_s_items, (&__pyx_t_8), (&__pyx_t_18)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 568, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = __pyx_t_7; __pyx_t_7 = 0; while (1) { __pyx_t_17 = __Pyx_dict_iter_next(__pyx_t_19, __pyx_t_8, &__pyx_t_5, &__pyx_t_7, &__pyx_t_14, NULL, __pyx_t_18); if (unlikely(__pyx_t_17 == 0)) break; if (unlikely(__pyx_t_17 == -1)) __PYX_ERR(0, 568, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_14); if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) { PyObject* sequence = __pyx_t_7; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 568, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_24 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_4 = PyList_GET_ITEM(sequence, 0); __pyx_t_24 = PyList_GET_ITEM(sequence, 1); __pyx_t_1 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_24); __Pyx_INCREF(__pyx_t_1); #else __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 568, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_24 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 568, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_24); __pyx_t_1 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { Py_ssize_t index = -1; __pyx_t_25 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 568, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_21 = Py_TYPE(__pyx_t_25)->tp_iternext; index = 0; __pyx_t_4 = __pyx_t_21(__pyx_t_25); if (unlikely(!__pyx_t_4)) goto __pyx_L41_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_24 = __pyx_t_21(__pyx_t_25); if (unlikely(!__pyx_t_24)) goto __pyx_L41_unpacking_failed; __Pyx_GOTREF(__pyx_t_24); index = 2; __pyx_t_1 = __pyx_t_21(__pyx_t_25); if (unlikely(!__pyx_t_1)) goto __pyx_L41_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); if (__Pyx_IternextUnpackEndCheck(__pyx_t_21(__pyx_t_25), 3) < 0) __PYX_ERR(0, 568, __pyx_L1_error) __pyx_t_21 = NULL; __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; goto __pyx_L42_unpacking_done; __pyx_L41_unpacking_failed:; __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; __pyx_t_21 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 568, __pyx_L1_error) __pyx_L42_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_state, __pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF_SET(__pyx_v_lspan, __pyx_t_24); __pyx_t_24 = 0; __Pyx_XDECREF_SET(__pyx_v_rspan, __pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_prob, __pyx_t_14); __pyx_t_14 = 0;
+569: outside[state, lspan, rspan, 0] = prob
__pyx_t_14 = PyTuple_New(4); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_INCREF(__pyx_v_state); __Pyx_GIVEREF(__pyx_v_state); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_v_state); __Pyx_INCREF(__pyx_v_lspan); __Pyx_GIVEREF(__pyx_v_lspan); PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_v_lspan); __Pyx_INCREF(__pyx_v_rspan); __Pyx_GIVEREF(__pyx_v_rspan); PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_v_rspan); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_14, 3, __pyx_int_0); if (unlikely(PyObject_SetItem(__pyx_v_outside, __pyx_t_14, __pyx_v_prob) < 0)) __PYX_ERR(0, 569, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
+570: return outside
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_outside); __pyx_r = __pyx_v_outside; goto __pyx_L0;
571:
572:
+573: cdef pcfginsidesxrec(Grammar grammar, list insidescores, Label state,
static PyObject *__pyx_f_8discodop_9estimates_pcfginsidesxrec(struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar, PyObject *__pyx_v_insidescores, Label __pyx_v_state, int __pyx_v_span) {
size_t __pyx_v_n;
size_t __pyx_v_split;
ProbRule __pyx_v_rule;
spp::sparse_hash_map<Label,spp::sparse_hash_map<std::string,uint32_t> > ::iterator __pyx_v_it;
PyObject *__pyx_v_score = NULL;
PyObject *__pyx_v_inleft = NULL;
PyObject *__pyx_v_inright = NULL;
PyObject *__pyx_v_cost = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("pcfginsidesxrec", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("discodop.estimates.pcfginsidesxrec", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_score);
__Pyx_XDECREF(__pyx_v_inleft);
__Pyx_XDECREF(__pyx_v_inright);
__Pyx_XDECREF(__pyx_v_cost);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
574: int span):
575: """Compute insideSX estimate for a PCFG.
576:
577: Straight from Klein & Manning (2003), A* parsing: Fast Exact Viterbi Parse
578: Selection."""
579: # NB: does not deal correctly with unary rules.
580: cdef size_t n, split
581: cdef ProbRule rule
+582: if span == 0:
__pyx_t_1 = ((__pyx_v_span == 0) != 0);
if (__pyx_t_1) {
/* … */
}
+583: return 0 if state == 0 else INFINITY
__Pyx_XDECREF(__pyx_r); if (((__pyx_v_state == 0) != 0)) { __Pyx_INCREF(__pyx_int_0); __pyx_t_2 = __pyx_int_0; } else { __pyx_t_3 = PyFloat_FromDouble(HUGE_VAL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __pyx_t_3; __pyx_t_3 = 0; } __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+584: it = grammar.lexicalbylhs.find(state)
__pyx_v_it = __pyx_v_grammar->lexicalbylhs.find(__pyx_v_state);
+585: if span == 1 and it != grammar.lexicalbylhs.end():
__pyx_t_4 = ((__pyx_v_span == 1) != 0);
if (__pyx_t_4) {
} else {
__pyx_t_1 = __pyx_t_4;
goto __pyx_L5_bool_binop_done;
}
__pyx_t_4 = ((__pyx_v_it != __pyx_v_grammar->lexicalbylhs.end()) != 0);
__pyx_t_1 = __pyx_t_4;
__pyx_L5_bool_binop_done:;
if (__pyx_t_1) {
/* … */
goto __pyx_L4;
}
+586: score = min([grammar.lexical[wordruleno.second].prob
{ /* enter inner scope */
std::pair<std::string,uint32_t> __pyx_8genexpr5__pyx_v_wordruleno;
__pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 586, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
/* … */
__pyx_t_3 = PyFloat_FromDouble((__pyx_v_grammar->lexical[__pyx_8genexpr5__pyx_v_wordruleno.second]).prob); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 586, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 586, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
__pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 586, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
__pyx_t_2 = 0;
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_min, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 586, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_v_score = __pyx_t_2;
__pyx_t_2 = 0;
+587: for wordruleno in dereference(it).second])
__pyx_t_6 = &(*__pyx_v_it).second;
__pyx_t_5 = __pyx_t_6->begin();
for (;;) {
if (!(__pyx_t_5 != __pyx_t_6->end())) break;
__pyx_t_7 = *__pyx_t_5;
++__pyx_t_5;
__pyx_8genexpr5__pyx_v_wordruleno = __pyx_t_7;
/* … */
}
} /* exit inner scope */
588: else:
+589: score = INFINITY
/*else*/ {
__pyx_t_2 = PyFloat_FromDouble(HUGE_VAL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 589, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_score = __pyx_t_2;
__pyx_t_2 = 0;
}
__pyx_L4:;
+590: for split in range(1, span + 1):
__pyx_t_8 = (__pyx_v_span + 1);
for (__pyx_t_9 = 1; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_split = __pyx_t_9;
+591: n = 0
__pyx_v_n = 0;
+592: rule = grammar.bylhs[state][n]
__pyx_v_rule = ((__pyx_v_grammar->bylhs[__pyx_v_state])[__pyx_v_n]);
+593: while rule.lhs == state:
while (1) {
__pyx_t_1 = ((__pyx_v_rule.lhs == __pyx_v_state) != 0);
if (!__pyx_t_1) break;
+594: if rule.rhs1 in insidescores[split]:
__pyx_t_2 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.rhs1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 594, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 594, __pyx_L1_error)
}
__pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_2, PyList_GET_ITEM(__pyx_v_insidescores, __pyx_v_split), Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 594, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_4 = (__pyx_t_1 != 0);
if (__pyx_t_4) {
/* … */
goto __pyx_L13;
}
+595: inleft = insidescores[split][rule.rhs1]
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 595, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_GetItemInt(PyList_GET_ITEM(__pyx_v_insidescores, __pyx_v_split), __pyx_v_rule.rhs1, Label, 0, __Pyx_PyInt_From_uint32_t, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 595, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XDECREF_SET(__pyx_v_inleft, __pyx_t_2);
__pyx_t_2 = 0;
+596: if inleft == -1:
__pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_v_inleft, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 596, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_4) { /* … */ }
+597: n += 1
__pyx_v_n = (__pyx_v_n + 1);
+598: rule = grammar.bylhs[state][n]
__pyx_v_rule = ((__pyx_v_grammar->bylhs[__pyx_v_state])[__pyx_v_n]);
599: else:
+600: insidescores[split][rule.rhs1] = -1 # mark to avoid cycles.
/*else*/ {
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 600, __pyx_L1_error)
}
if (unlikely(__Pyx_SetItemInt(PyList_GET_ITEM(__pyx_v_insidescores, __pyx_v_split), __pyx_v_rule.rhs1, __pyx_int_neg_1, Label, 0, __Pyx_PyInt_From_uint32_t, 0, 0, 0) < 0)) __PYX_ERR(0, 600, __pyx_L1_error)
+601: inleft = pcfginsidesxrec(
__pyx_t_2 = __pyx_f_8discodop_9estimates_pcfginsidesxrec(__pyx_v_grammar, __pyx_v_insidescores, __pyx_v_rule.rhs1, __pyx_v_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 601, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XDECREF_SET(__pyx_v_inleft, __pyx_t_2);
__pyx_t_2 = 0;
602: grammar, insidescores, rule.rhs1, split)
+603: insidescores[split][rule.rhs1] = inleft
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 603, __pyx_L1_error)
}
if (unlikely(__Pyx_SetItemInt(PyList_GET_ITEM(__pyx_v_insidescores, __pyx_v_split), __pyx_v_rule.rhs1, __pyx_v_inleft, Label, 0, __Pyx_PyInt_From_uint32_t, 0, 0, 0) < 0)) __PYX_ERR(0, 603, __pyx_L1_error)
}
__pyx_L13:;
+604: if rule.rhs2 == 0:
__pyx_t_4 = ((__pyx_v_rule.rhs2 == 0) != 0);
if (__pyx_t_4) {
/* … */
goto __pyx_L15;
}
+605: if split == span:
__pyx_t_4 = ((__pyx_v_split == __pyx_v_span) != 0);
if (__pyx_t_4) {
/* … */
goto __pyx_L16;
}
+606: inright = 0
__Pyx_INCREF(__pyx_int_0); __Pyx_XDECREF_SET(__pyx_v_inright, __pyx_int_0);
607: else:
+608: n += 1
/*else*/ {
__pyx_v_n = (__pyx_v_n + 1);
+609: rule = grammar.bylhs[state][n]
__pyx_v_rule = ((__pyx_v_grammar->bylhs[__pyx_v_state])[__pyx_v_n]);
+610: continue
goto __pyx_L11_continue;
}
__pyx_L16:;
+611: elif rule.rhs2 in insidescores[span - split]:
__pyx_t_2 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.rhs2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 611, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 611, __pyx_L1_error)
}
__pyx_t_10 = (__pyx_v_span - __pyx_v_split);
__pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_t_2, PyList_GET_ITEM(__pyx_v_insidescores, __pyx_t_10), Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 611, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_1 = (__pyx_t_4 != 0);
if (__pyx_t_1) {
/* … */
goto __pyx_L15;
}
+612: inright = insidescores[span - split][rule.rhs2]
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 612, __pyx_L1_error)
}
__pyx_t_10 = (__pyx_v_span - __pyx_v_split);
__pyx_t_2 = __Pyx_GetItemInt(PyList_GET_ITEM(__pyx_v_insidescores, __pyx_t_10), __pyx_v_rule.rhs2, Label, 0, __Pyx_PyInt_From_uint32_t, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 612, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XDECREF_SET(__pyx_v_inright, __pyx_t_2);
__pyx_t_2 = 0;
613: else:
+614: inright = pcfginsidesxrec(
/*else*/ {
/* … */
__pyx_t_2 = __pyx_f_8discodop_9estimates_pcfginsidesxrec(__pyx_v_grammar, __pyx_v_insidescores, __pyx_v_rule.rhs2, (__pyx_v_span - __pyx_v_split)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 614, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XDECREF_SET(__pyx_v_inright, __pyx_t_2);
__pyx_t_2 = 0;
615: grammar, insidescores, rule.rhs2, span - split)
+616: insidescores[span - split][rule.rhs2] = inright
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 616, __pyx_L1_error)
}
__pyx_t_10 = (__pyx_v_span - __pyx_v_split);
if (unlikely(__Pyx_SetItemInt(PyList_GET_ITEM(__pyx_v_insidescores, __pyx_t_10), __pyx_v_rule.rhs2, __pyx_v_inright, Label, 0, __Pyx_PyInt_From_uint32_t, 0, 0, 0) < 0)) __PYX_ERR(0, 616, __pyx_L1_error)
}
__pyx_L15:;
+617: cost = inleft + inright + rule.prob
__pyx_t_2 = PyNumber_Add(__pyx_v_inleft, __pyx_v_inright); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyFloat_FromDouble(__pyx_v_rule.prob); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_11 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_cost, __pyx_t_11); __pyx_t_11 = 0;
+618: if cost < score:
__pyx_t_11 = PyObject_RichCompare(__pyx_v_cost, __pyx_v_score, Py_LT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 618, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 618, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (__pyx_t_1) { /* … */ }
+619: score = cost
__Pyx_INCREF(__pyx_v_cost); __Pyx_DECREF_SET(__pyx_v_score, __pyx_v_cost);
+620: n += 1
__pyx_v_n = (__pyx_v_n + 1);
+621: rule = grammar.bylhs[state][n]
__pyx_v_rule = ((__pyx_v_grammar->bylhs[__pyx_v_state])[__pyx_v_n]);
__pyx_L11_continue:;
}
}
+622: return score
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_score); __pyx_r = __pyx_v_score; goto __pyx_L0;
623:
624:
+625: cdef pcfgoutsidesxrec(Grammar grammar, list insidescores, dict outsidescores,
static PyObject *__pyx_f_8discodop_9estimates_pcfgoutsidesxrec(struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar, PyObject *__pyx_v_insidescores, PyObject *__pyx_v_outsidescores, Label __pyx_v_goal, Label __pyx_v_state, int __pyx_v_lspan, int __pyx_v_rspan) {
size_t __pyx_v_n;
size_t __pyx_v_sibsize;
ProbRule __pyx_v_rule;
PyObject *__pyx_v_item = 0;
PyObject *__pyx_v_score = NULL;
PyObject *__pyx_v_out = NULL;
PyObject *__pyx_v_cost = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("pcfgoutsidesxrec", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("discodop.estimates.pcfgoutsidesxrec", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_item);
__Pyx_XDECREF(__pyx_v_score);
__Pyx_XDECREF(__pyx_v_out);
__Pyx_XDECREF(__pyx_v_cost);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
626: Label goal, Label state, int lspan, int rspan):
627: """outsideSX estimate for a PCFG."""
628: # NB: does not deal correctly with unary rules.
629: cdef size_t n, sibsize
630: cdef ProbRule rule
631: cdef tuple item
+632: if lspan + rspan == 0:
__pyx_t_1 = (((__pyx_v_lspan + __pyx_v_rspan) == 0) != 0);
if (__pyx_t_1) {
/* … */
}
+633: return 0 if state == goal else INFINITY
__Pyx_XDECREF(__pyx_r); if (((__pyx_v_state == __pyx_v_goal) != 0)) { __Pyx_INCREF(__pyx_int_0); __pyx_t_2 = __pyx_int_0; } else { __pyx_t_3 = PyFloat_FromDouble(HUGE_VAL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 633, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __pyx_t_3; __pyx_t_3 = 0; } __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+634: score = INFINITY
__pyx_t_2 = PyFloat_FromDouble(HUGE_VAL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_score = __pyx_t_2; __pyx_t_2 = 0;
635: # unary productions: no sibling
+636: n = 0
__pyx_v_n = 0;
+637: rule = grammar.unary[state][n]
__pyx_v_rule = ((__pyx_v_grammar->unary[__pyx_v_state])[__pyx_v_n]);
+638: while rule.rhs1 == state:
while (1) {
__pyx_t_1 = ((__pyx_v_rule.rhs1 == __pyx_v_state) != 0);
if (!__pyx_t_1) break;
+639: item = (rule.lhs, lspan, rspan)
__pyx_t_2 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.lhs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 639, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_lspan); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 639, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_rspan); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 639, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 639, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
__pyx_t_2 = 0;
__pyx_t_3 = 0;
__pyx_t_4 = 0;
__Pyx_XDECREF_SET(__pyx_v_item, ((PyObject*)__pyx_t_5));
__pyx_t_5 = 0;
+640: if item in outsidescores:
if (unlikely(__pyx_v_outsidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
__PYX_ERR(0, 640, __pyx_L1_error)
}
__pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_item, __pyx_v_outsidescores, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 640, __pyx_L1_error)
__pyx_t_6 = (__pyx_t_1 != 0);
if (__pyx_t_6) {
/* … */
goto __pyx_L6;
}
+641: out = outsidescores[item]
if (unlikely(__pyx_v_outsidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 641, __pyx_L1_error)
}
__pyx_t_5 = __Pyx_PyDict_GetItem(__pyx_v_outsidescores, __pyx_v_item); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 641, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_XDECREF_SET(__pyx_v_out, __pyx_t_5);
__pyx_t_5 = 0;
+642: if out == -1:
__pyx_t_5 = __Pyx_PyInt_EqObjC(__pyx_v_out, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 642, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_6) { /* … */ }
+643: n += 1
__pyx_v_n = (__pyx_v_n + 1);
+644: rule = grammar.unary[state][n]
__pyx_v_rule = ((__pyx_v_grammar->unary[__pyx_v_state])[__pyx_v_n]);
+645: continue
goto __pyx_L4_continue;
646: else:
+647: outsidescores[item] = -1 # mark to avoid cycles
/*else*/ {
if (unlikely(__pyx_v_outsidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 647, __pyx_L1_error)
}
if (unlikely(PyDict_SetItem(__pyx_v_outsidescores, __pyx_v_item, __pyx_int_neg_1) < 0)) __PYX_ERR(0, 647, __pyx_L1_error)
+648: outsidescores[item] = out = pcfgoutsidesxrec(
__pyx_t_5 = __pyx_f_8discodop_9estimates_pcfgoutsidesxrec(__pyx_v_grammar, __pyx_v_insidescores, __pyx_v_outsidescores, __pyx_v_goal, __pyx_v_rule.lhs, __pyx_v_lspan, __pyx_v_rspan); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 648, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (unlikely(__pyx_v_outsidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 648, __pyx_L1_error)
}
if (unlikely(PyDict_SetItem(__pyx_v_outsidescores, __pyx_v_item, __pyx_t_5) < 0)) __PYX_ERR(0, 648, __pyx_L1_error)
__Pyx_INCREF(__pyx_t_5);
__Pyx_XDECREF_SET(__pyx_v_out, __pyx_t_5);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__pyx_L6:;
649: grammar, insidescores, outsidescores, goal,
650: rule.lhs, lspan, rspan)
+651: cost = out + rule.prob
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_rule.prob); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 651, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyNumber_Add(__pyx_v_out, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 651, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_cost, __pyx_t_4); __pyx_t_4 = 0;
+652: if cost < score:
__pyx_t_4 = PyObject_RichCompare(__pyx_v_cost, __pyx_v_score, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 652, __pyx_L1_error) __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 652, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { /* … */ }
+653: score = cost
__Pyx_INCREF(__pyx_v_cost); __Pyx_DECREF_SET(__pyx_v_score, __pyx_v_cost);
+654: n += 1
__pyx_v_n = (__pyx_v_n + 1);
+655: rule = grammar.unary[state][n]
__pyx_v_rule = ((__pyx_v_grammar->unary[__pyx_v_state])[__pyx_v_n]);
__pyx_L4_continue:;
}
656: # could have a left sibling
+657: for sibsize in range(1, lspan + 1):
__pyx_t_7 = (__pyx_v_lspan + 1);
for (__pyx_t_8 = 1; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
__pyx_v_sibsize = __pyx_t_8;
+658: n = 0
__pyx_v_n = 0;
+659: rule = grammar.rbinary[state][n]
__pyx_v_rule = ((__pyx_v_grammar->rbinary[__pyx_v_state])[__pyx_v_n]);
+660: while rule.rhs2 == state:
while (1) {
__pyx_t_6 = ((__pyx_v_rule.rhs2 == __pyx_v_state) != 0);
if (!__pyx_t_6) break;
+661: item = (rule.lhs, lspan - sibsize, rspan)
__pyx_t_4 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.lhs); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 661, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = __Pyx_PyInt_FromSize_t((__pyx_v_lspan - __pyx_v_sibsize)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 661, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_rspan); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 661, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3);
__pyx_t_4 = 0;
__pyx_t_5 = 0;
__pyx_t_3 = 0;
__Pyx_XDECREF_SET(__pyx_v_item, ((PyObject*)__pyx_t_2));
__pyx_t_2 = 0;
+662: if item in outsidescores:
if (unlikely(__pyx_v_outsidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
__PYX_ERR(0, 662, __pyx_L1_error)
}
__pyx_t_6 = (__Pyx_PyDict_ContainsTF(__pyx_v_item, __pyx_v_outsidescores, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 662, __pyx_L1_error)
__pyx_t_1 = (__pyx_t_6 != 0);
if (__pyx_t_1) {
/* … */
goto __pyx_L13;
}
+663: out = outsidescores[item]
if (unlikely(__pyx_v_outsidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 663, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_outsidescores, __pyx_v_item); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 663, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XDECREF_SET(__pyx_v_out, __pyx_t_2);
__pyx_t_2 = 0;
664: else:
+665: outsidescores[item] = out = pcfgoutsidesxrec(
/*else*/ {
/* … */
__pyx_t_2 = __pyx_f_8discodop_9estimates_pcfgoutsidesxrec(__pyx_v_grammar, __pyx_v_insidescores, __pyx_v_outsidescores, __pyx_v_goal, __pyx_v_rule.lhs, (__pyx_v_lspan - __pyx_v_sibsize), __pyx_v_rspan); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 665, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
/* … */
if (unlikely(__pyx_v_outsidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 665, __pyx_L1_error)
}
if (unlikely(PyDict_SetItem(__pyx_v_outsidescores, __pyx_v_item, __pyx_t_2) < 0)) __PYX_ERR(0, 665, __pyx_L1_error)
__Pyx_INCREF(__pyx_t_2);
__Pyx_XDECREF_SET(__pyx_v_out, __pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
__pyx_L13:;
666: grammar, insidescores, outsidescores, goal,
667: rule.lhs, lspan - sibsize, rspan)
+668: cost = (insidescores[sibsize].get(rule.rhs1, INFINITY)
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 668, __pyx_L1_error)
}
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(PyList_GET_ITEM(__pyx_v_insidescores, __pyx_v_sibsize), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 668, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_5 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.rhs1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 668, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_4 = PyFloat_FromDouble(HUGE_VAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 668, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_9 = NULL;
__pyx_t_10 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_9)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_9);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
__pyx_t_10 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_3)) {
PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_5, __pyx_t_4};
__pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 668, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_5, __pyx_t_4};
__pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 668, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else
#endif
{
__pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 668, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
if (__pyx_t_9) {
__Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
}
__Pyx_GIVEREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_5);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_4);
__pyx_t_5 = 0;
__pyx_t_4 = 0;
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 668, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+669: + out + rule.prob)
__pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_v_out); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(__pyx_v_rule.prob); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_11 = PyNumber_Add(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_v_cost, __pyx_t_11); __pyx_t_11 = 0;
+670: if cost < score:
__pyx_t_11 = PyObject_RichCompare(__pyx_v_cost, __pyx_v_score, Py_LT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 670, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 670, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (__pyx_t_1) { /* … */ }
+671: score = cost
__Pyx_INCREF(__pyx_v_cost); __Pyx_DECREF_SET(__pyx_v_score, __pyx_v_cost);
+672: n += 1
__pyx_v_n = (__pyx_v_n + 1);
+673: rule = grammar.rbinary[state][n]
__pyx_v_rule = ((__pyx_v_grammar->rbinary[__pyx_v_state])[__pyx_v_n]);
}
}
674: # could have a right sibling
+675: for sibsize in range(1, rspan + 1):
__pyx_t_7 = (__pyx_v_rspan + 1);
for (__pyx_t_8 = 1; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
__pyx_v_sibsize = __pyx_t_8;
+676: n = 0
__pyx_v_n = 0;
+677: rule = grammar.lbinary[state][n]
__pyx_v_rule = ((__pyx_v_grammar->lbinary[__pyx_v_state])[__pyx_v_n]);
+678: while rule.rhs1 == state:
while (1) {
__pyx_t_1 = ((__pyx_v_rule.rhs1 == __pyx_v_state) != 0);
if (!__pyx_t_1) break;
+679: item = (rule.lhs, lspan, rspan - sibsize)
__pyx_t_11 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.lhs); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 679, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_lspan); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 679, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyInt_FromSize_t((__pyx_v_rspan - __pyx_v_sibsize)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 679, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 679, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_11);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_11);
__Pyx_GIVEREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
__pyx_t_11 = 0;
__pyx_t_2 = 0;
__pyx_t_3 = 0;
__Pyx_XDECREF_SET(__pyx_v_item, ((PyObject*)__pyx_t_4));
__pyx_t_4 = 0;
+680: if item in outsidescores:
if (unlikely(__pyx_v_outsidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
__PYX_ERR(0, 680, __pyx_L1_error)
}
__pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_item, __pyx_v_outsidescores, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 680, __pyx_L1_error)
__pyx_t_6 = (__pyx_t_1 != 0);
if (__pyx_t_6) {
/* … */
goto __pyx_L19;
}
+681: out = outsidescores[item]
if (unlikely(__pyx_v_outsidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 681, __pyx_L1_error)
}
__pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_outsidescores, __pyx_v_item); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 681, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_XDECREF_SET(__pyx_v_out, __pyx_t_4);
__pyx_t_4 = 0;
682: else:
+683: out = pcfgoutsidesxrec(
/*else*/ {
/* … */
__pyx_t_4 = __pyx_f_8discodop_9estimates_pcfgoutsidesxrec(__pyx_v_grammar, __pyx_v_insidescores, __pyx_v_outsidescores, __pyx_v_goal, __pyx_v_rule.lhs, __pyx_v_lspan, (__pyx_v_rspan - __pyx_v_sibsize)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 683, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_XDECREF_SET(__pyx_v_out, __pyx_t_4);
__pyx_t_4 = 0;
684: grammar, insidescores, outsidescores, goal,
685: rule.lhs, lspan, rspan - sibsize)
+686: outsidescores[item] = out
if (unlikely(__pyx_v_outsidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 686, __pyx_L1_error)
}
if (unlikely(PyDict_SetItem(__pyx_v_outsidescores, __pyx_v_item, __pyx_v_out) < 0)) __PYX_ERR(0, 686, __pyx_L1_error)
}
__pyx_L19:;
+687: cost = (insidescores[sibsize].get(rule.rhs2, INFINITY)
if (unlikely(__pyx_v_insidescores == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 687, __pyx_L1_error)
}
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(PyList_GET_ITEM(__pyx_v_insidescores, __pyx_v_sibsize), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 687, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_2 = __Pyx_PyInt_From_uint32_t(__pyx_v_rule.rhs2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 687, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_11 = PyFloat_FromDouble(HUGE_VAL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 687, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_5 = NULL;
__pyx_t_10 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_5)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
__pyx_t_10 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_3)) {
PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_11};
__pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_11};
__pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
} else
#endif
{
__pyx_t_9 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 687, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
if (__pyx_t_5) {
__Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL;
}
__Pyx_GIVEREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_10, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_11);
PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_10, __pyx_t_11);
__pyx_t_2 = 0;
__pyx_t_11 = 0;
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+688: + out + rule.prob)
__pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_v_out); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(__pyx_v_rule.prob); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF_SET(__pyx_v_cost, __pyx_t_9); __pyx_t_9 = 0;
+689: if cost < score:
__pyx_t_9 = PyObject_RichCompare(__pyx_v_cost, __pyx_v_score, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 689, __pyx_L1_error) __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (__pyx_t_6) { /* … */ }
+690: score = cost
__Pyx_INCREF(__pyx_v_cost); __Pyx_DECREF_SET(__pyx_v_score, __pyx_v_cost);
+691: n += 1
__pyx_v_n = (__pyx_v_n + 1);
+692: rule = grammar.lbinary[state][n]
__pyx_v_rule = ((__pyx_v_grammar->lbinary[__pyx_v_state])[__pyx_v_n]);
}
}
+693: return score
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_score); __pyx_r = __pyx_v_score; goto __pyx_L0;
694:
695:
+696: cpdef testestimates(Grammar grammar, uint32_t maxlen, str rootlabel):
static PyObject *__pyx_pw_8discodop_9estimates_13testestimates(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_8discodop_9estimates_testestimates(struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar, uint32_t __pyx_v_maxlen, PyObject *__pyx_v_rootlabel, CYTHON_UNUSED int __pyx_skip_dispatch) {
Label __pyx_v_goal;
PyObject *__pyx_v_insidescores = NULL;
PyObject *__pyx_v_a = NULL;
PyObject *__pyx_v_b = NULL;
PyObject *__pyx_v_an = NULL;
PyObject *__pyx_v_bn = NULL;
PyObject *__pyx_v_outside = NULL;
PyObject *__pyx_v_cnt = NULL;
PyObject *__pyx_v_cn = NULL;
PyObject *__pyx_v_c = NULL;
PyObject *__pyx_v_dn = NULL;
PyObject *__pyx_v_d = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("testestimates", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_XDECREF(__pyx_t_17);
__Pyx_XDECREF(__pyx_t_18);
__Pyx_XDECREF(__pyx_t_23);
__Pyx_XDECREF(__pyx_t_24);
__Pyx_XDECREF(__pyx_t_25);
__Pyx_XDECREF(__pyx_t_26);
__Pyx_AddTraceback("discodop.estimates.testestimates", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_insidescores);
__Pyx_XDECREF(__pyx_v_a);
__Pyx_XDECREF(__pyx_v_b);
__Pyx_XDECREF(__pyx_v_an);
__Pyx_XDECREF(__pyx_v_bn);
__Pyx_XDECREF(__pyx_v_outside);
__Pyx_XDECREF(__pyx_v_cnt);
__Pyx_XDECREF(__pyx_v_cn);
__Pyx_XDECREF(__pyx_v_c);
__Pyx_XDECREF(__pyx_v_dn);
__Pyx_XDECREF(__pyx_v_d);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_8discodop_9estimates_13testestimates(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8discodop_9estimates_12testestimates[] = "testestimates(Grammar grammar, uint32_t maxlen, unicode rootlabel)";
static PyObject *__pyx_pw_8discodop_9estimates_13testestimates(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar = 0;
uint32_t __pyx_v_maxlen;
PyObject *__pyx_v_rootlabel = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("testestimates (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_grammar,&__pyx_n_s_maxlen,&__pyx_n_s_rootlabel,0};
PyObject* values[3] = {0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_grammar)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_maxlen)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("testestimates", 1, 3, 3, 1); __PYX_ERR(0, 696, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rootlabel)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("testestimates", 1, 3, 3, 2); __PYX_ERR(0, 696, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "testestimates") < 0)) __PYX_ERR(0, 696, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
}
__pyx_v_grammar = ((struct __pyx_obj_8discodop_10containers_Grammar *)values[0]);
__pyx_v_maxlen = __Pyx_PyInt_As_uint32_t(values[1]); if (unlikely((__pyx_v_maxlen == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 696, __pyx_L3_error)
__pyx_v_rootlabel = ((PyObject*)values[2]);
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("testestimates", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 696, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("discodop.estimates.testestimates", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grammar), __pyx_ptype_8discodop_10containers_Grammar, 1, "grammar", 0))) __PYX_ERR(0, 696, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rootlabel), (&PyUnicode_Type), 1, "rootlabel", 1))) __PYX_ERR(0, 696, __pyx_L1_error)
__pyx_r = __pyx_pf_8discodop_9estimates_12testestimates(__pyx_self, __pyx_v_grammar, __pyx_v_maxlen, __pyx_v_rootlabel);
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_8discodop_9estimates_12testestimates(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_8discodop_10containers_Grammar *__pyx_v_grammar, uint32_t __pyx_v_maxlen, PyObject *__pyx_v_rootlabel) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("testestimates", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __pyx_f_8discodop_9estimates_testestimates(__pyx_v_grammar, __pyx_v_maxlen, __pyx_v_rootlabel, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 696, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("discodop.estimates.testestimates", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+697: cdef Label goal = grammar.toid[rootlabel]
__pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_grammar->toid), __pyx_v_rootlabel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_As_uint32_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((Label)-1)) && PyErr_Occurred())) __PYX_ERR(0, 697, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_goal = __pyx_t_2;
+698: print("getting inside")
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_u_getting_inside); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__12); __Pyx_GIVEREF(__pyx_tuple__12);
+699: insidescores = inside(grammar, maxlen, {})
__pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_inside_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_uint32_t(__pyx_v_maxlen); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_6, ((PyObject *)__pyx_v_grammar), __pyx_t_4, __pyx_t_5}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 699, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_6, ((PyObject *)__pyx_v_grammar), __pyx_t_4, __pyx_t_5}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 699, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_grammar)); __Pyx_GIVEREF(((PyObject *)__pyx_v_grammar)); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, ((PyObject *)__pyx_v_grammar)); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_t_5); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_insidescores = __pyx_t_1; __pyx_t_1 = 0;
+700: for a in insidescores:
if (likely(PyList_CheckExact(__pyx_v_insidescores)) || PyTuple_CheckExact(__pyx_v_insidescores)) { __pyx_t_1 = __pyx_v_insidescores; __Pyx_INCREF(__pyx_t_1); __pyx_t_9 = 0; __pyx_t_10 = NULL; } else { __pyx_t_9 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_insidescores); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_10 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 700, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_10)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_9); __Pyx_INCREF(__pyx_t_3); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 700, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_9); __Pyx_INCREF(__pyx_t_3); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 700, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_10(__pyx_t_1); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 700, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_3); } __Pyx_XDECREF_SET(__pyx_v_a, __pyx_t_3); __pyx_t_3 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+701: for b in insidescores[a]:
__pyx_t_3 = PyObject_GetItem(__pyx_v_insidescores, __pyx_v_a); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 701, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { __pyx_t_8 = __pyx_t_3; __Pyx_INCREF(__pyx_t_8); __pyx_t_11 = 0; __pyx_t_12 = NULL; } else { __pyx_t_11 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 701, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_12 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 701, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; for (;;) { if (likely(!__pyx_t_12)) { if (likely(PyList_CheckExact(__pyx_t_8))) { if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_8)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 701, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_8, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 701, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_8)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 701, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_8, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 701, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_12(__pyx_t_8); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 701, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_3); } __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_3); __pyx_t_3 = 0; /* … */ } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+702: assert 0 <= a < grammar.nonterminals
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(!Py_OptimizeFlag)) {
__pyx_t_3 = PyObject_RichCompare(__pyx_int_0, __pyx_v_a, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 702, __pyx_L1_error)
if (__Pyx_PyObject_IsTrue(__pyx_t_3)) {
__Pyx_DECREF(__pyx_t_3);
__pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_v_grammar->nonterminals); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 702, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_3 = PyObject_RichCompare(__pyx_v_a, __pyx_t_5, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 702, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 702, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_13)) {
PyErr_SetNone(PyExc_AssertionError);
__PYX_ERR(0, 702, __pyx_L1_error)
}
}
#endif
+703: assert 0 <= bitlength(b) <= maxlen
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(!Py_OptimizeFlag)) {
__pyx_t_14 = __Pyx_PyInt_As_uint64_t(__pyx_v_b); if (unlikely((__pyx_t_14 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 703, __pyx_L1_error)
__pyx_t_7 = __pyx_f_8discodop_3bit_bitlength(__pyx_t_14);
__pyx_t_13 = (0 <= __pyx_t_7);
if (__pyx_t_13) {
__pyx_t_13 = (__pyx_t_7 <= __pyx_v_maxlen);
}
if (unlikely(!(__pyx_t_13 != 0))) {
PyErr_SetNone(PyExc_AssertionError);
__PYX_ERR(0, 703, __pyx_L1_error)
}
}
#endif
704: # print(a, b)
705: # print("%s[%d] =" % (grammar.tolabel[a], b),
706: # exp(insidescores[a][b]))
+707: print(len(insidescores) * sum(map(len, insidescores.values())), '\n')
__pyx_t_9 = PyObject_Length(__pyx_v_insidescores); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 707, __pyx_L1_error) __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = __Pyx_GetBuiltinName(__pyx_n_s_len); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_insidescores, __pyx_n_s_values); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } if (__pyx_t_4) { __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 707, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3); __pyx_t_8 = 0; __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_Multiply(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __Pyx_INCREF(__pyx_kp_u__13); __Pyx_GIVEREF(__pyx_kp_u__13); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_kp_u__13); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+708: insidescores = np.empty((grammar.nonterminals, (maxlen + 1)), dtype='d')
__pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_v_grammar->nonterminals); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_maxlen + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_1); __pyx_t_5 = 0; __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_n_u_d) < 0) __PYX_ERR(0, 708, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF_SET(__pyx_v_insidescores, __pyx_t_5); __pyx_t_5 = 0;
+709: insidescores[...] = np.NAN
__pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 709, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_NAN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 709, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(PyObject_SetItem(__pyx_v_insidescores, Py_Ellipsis, __pyx_t_8) < 0)) __PYX_ERR(0, 709, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+710: simpleinside(grammar, maxlen, insidescores)
__pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_simpleinside); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyInt_From_uint32_t(__pyx_v_maxlen); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_v_grammar), __pyx_t_1, __pyx_v_insidescores}; __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 710, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_v_grammar), __pyx_t_1, __pyx_v_insidescores}; __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 710, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_4 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_grammar)); __Pyx_GIVEREF(((PyObject *)__pyx_v_grammar)); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_7, ((PyObject *)__pyx_v_grammar)); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_7, __pyx_t_1); __Pyx_INCREF(__pyx_v_insidescores); __Pyx_GIVEREF(__pyx_v_insidescores); PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_7, __pyx_v_insidescores); __pyx_t_1 = 0; __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+711: insidescores[np.isnan(insidescores)] = np.inf
__pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_isnan); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } if (!__pyx_t_4) { __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_insidescores); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_insidescores}; __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_8); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_insidescores}; __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_8); } else #endif { __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_insidescores); __Pyx_GIVEREF(__pyx_v_insidescores); PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_insidescores); __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(PyObject_SetItem(__pyx_v_insidescores, __pyx_t_8, __pyx_t_5) < 0)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+712: print("inside")
__pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* … */ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_n_u_inside_2); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 712, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__14); __Pyx_GIVEREF(__pyx_tuple__14);
+713: for an, a in enumerate(insidescores):
__Pyx_INCREF(__pyx_int_0); __pyx_t_5 = __pyx_int_0; if (likely(PyList_CheckExact(__pyx_v_insidescores)) || PyTuple_CheckExact(__pyx_v_insidescores)) { __pyx_t_8 = __pyx_v_insidescores; __Pyx_INCREF(__pyx_t_8); __pyx_t_9 = 0; __pyx_t_10 = NULL; } else { __pyx_t_9 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_v_insidescores); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_10 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 713, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_10)) { if (likely(PyList_CheckExact(__pyx_t_8))) { if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_8)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 713, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_8)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 713, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_10(__pyx_t_8); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 713, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_a, __pyx_t_1); __pyx_t_1 = 0; __Pyx_INCREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_v_an, __pyx_t_5); __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_5, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = __pyx_t_1; __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+714: for bn, b in enumerate(a):
__Pyx_INCREF(__pyx_int_0); __pyx_t_1 = __pyx_int_0; if (likely(PyList_CheckExact(__pyx_v_a)) || PyTuple_CheckExact(__pyx_v_a)) { __pyx_t_3 = __pyx_v_a; __Pyx_INCREF(__pyx_t_3); __pyx_t_11 = 0; __pyx_t_12 = NULL; } else { __pyx_t_11 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_a); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 714, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_12 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 714, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_12)) { if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_4); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 714, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 714, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_4); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 714, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 714, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } } else { __pyx_t_4 = __pyx_t_12(__pyx_t_3); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 714, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_4); } __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4); __pyx_t_4 = 0; __Pyx_INCREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_bn, __pyx_t_1); __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 714, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_4; __pyx_t_4 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+715: if b < np.inf:
__pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 715, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_inf); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 715, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyObject_RichCompare(__pyx_v_b, __pyx_t_6, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 715, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 715, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_13) { /* … */ }
+716: print("%s len %d = %g" % (grammar.tolabel[an],
__pyx_t_4 = PyObject_GetItem(((PyObject *)__pyx_v_grammar->tolabel), __pyx_v_an); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); /* … */ __pyx_t_15 = PyTuple_New(3); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_4); __Pyx_INCREF(__pyx_v_bn); __Pyx_GIVEREF(__pyx_v_bn); PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_v_bn); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_t_6); __pyx_t_4 = 0; __pyx_t_6 = 0; __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_s_len_d_g, __pyx_t_15); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_15, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+717: bn, exp(-b)))
__pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_exp); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 717, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_16 = PyNumber_Negative(__pyx_v_b); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 717, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_17 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_15))) { __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_15); if (likely(__pyx_t_17)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_17); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_15, function); } } if (!__pyx_t_17) { __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_16); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 717, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_GOTREF(__pyx_t_6); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[2] = {__pyx_t_17, __pyx_t_16}; __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 717, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_15)) { PyObject *__pyx_temp[2] = {__pyx_t_17, __pyx_t_16}; __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 717, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; } else #endif { __pyx_t_18 = PyTuple_New(1+1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 717, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_17); __pyx_t_17 = NULL; __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_18, 0+1, __pyx_t_16); __pyx_t_16 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_18, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 717, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } } __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
718: # print(insidescores)
719: # for a in range(maxlen):
720: # print(grammar.tolabel[goal], "len", a, "=",
721: # exp(-insidescores[goal, a]))
722:
+723: print("getting outside")
__pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* … */ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_u_getting_outside); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 723, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__15); __Pyx_GIVEREF(__pyx_tuple__15);
+724: outside = np.empty((grammar.nonterminals, ) + 3 * (maxlen + 1, ), dtype='d')
__pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_v_grammar->nonterminals); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyInt_From_long((__pyx_v_maxlen + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyTuple_New(1 * 3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < 3; __pyx_temp++) { __Pyx_INCREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_t_5); } } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_n_u_d) < 0) __PYX_ERR(0, 724, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_outside = __pyx_t_1; __pyx_t_1 = 0;
+725: outside[...] = np.inf
__pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 725, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 725, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(PyObject_SetItem(__pyx_v_outside, Py_Ellipsis, __pyx_t_5) < 0)) __PYX_ERR(0, 725, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+726: outsidelr(grammar, insidescores, maxlen, goal, outside)
__pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_outsidelr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 726, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_uint32_t(__pyx_v_maxlen); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 726, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = __Pyx_PyInt_From_uint32_t(__pyx_v_goal); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 726, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[6] = {__pyx_t_6, ((PyObject *)__pyx_v_grammar), __pyx_v_insidescores, __pyx_t_3, __pyx_t_8, __pyx_v_outside}; __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 726, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[6] = {__pyx_t_6, ((PyObject *)__pyx_v_grammar), __pyx_v_insidescores, __pyx_t_3, __pyx_t_8, __pyx_v_outside}; __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 726, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif { __pyx_t_15 = PyTuple_New(5+__pyx_t_7); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 726, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_grammar)); __Pyx_GIVEREF(((PyObject *)__pyx_v_grammar)); PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_7, ((PyObject *)__pyx_v_grammar)); __Pyx_INCREF(__pyx_v_insidescores); __Pyx_GIVEREF(__pyx_v_insidescores); PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_7, __pyx_v_insidescores); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 2+__pyx_t_7, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_15, 3+__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_v_outside); __Pyx_GIVEREF(__pyx_v_outside); PyTuple_SET_ITEM(__pyx_t_15, 4+__pyx_t_7, __pyx_v_outside); __pyx_t_3 = 0; __pyx_t_8 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_15, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 726, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
727: # print(outside)
+728: cnt = 0
__Pyx_INCREF(__pyx_int_0);
__pyx_v_cnt = __pyx_int_0;
+729: for an, a in enumerate(outside):
__Pyx_INCREF(__pyx_int_0); __pyx_t_5 = __pyx_int_0; if (likely(PyList_CheckExact(__pyx_v_outside)) || PyTuple_CheckExact(__pyx_v_outside)) { __pyx_t_1 = __pyx_v_outside; __Pyx_INCREF(__pyx_t_1); __pyx_t_9 = 0; __pyx_t_10 = NULL; } else { __pyx_t_9 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_outside); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 729, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_10 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 729, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_10)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_15 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_9); __Pyx_INCREF(__pyx_t_15); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 729, __pyx_L1_error) #else __pyx_t_15 = PySequence_ITEM(__pyx_t_1, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 729, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); #endif } else { if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_15 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_9); __Pyx_INCREF(__pyx_t_15); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 729, __pyx_L1_error) #else __pyx_t_15 = PySequence_ITEM(__pyx_t_1, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 729, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); #endif } } else { __pyx_t_15 = __pyx_t_10(__pyx_t_1); if (unlikely(!__pyx_t_15)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 729, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_15); } __Pyx_XDECREF_SET(__pyx_v_a, __pyx_t_15); __pyx_t_15 = 0; __Pyx_INCREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_v_an, __pyx_t_5); __pyx_t_15 = __Pyx_PyInt_AddObjC(__pyx_t_5, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 729, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = __pyx_t_15; __pyx_t_15 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+730: for bn, b in enumerate(a):
__Pyx_INCREF(__pyx_int_0); __pyx_t_15 = __pyx_int_0; if (likely(PyList_CheckExact(__pyx_v_a)) || PyTuple_CheckExact(__pyx_v_a)) { __pyx_t_8 = __pyx_v_a; __Pyx_INCREF(__pyx_t_8); __pyx_t_11 = 0; __pyx_t_12 = NULL; } else { __pyx_t_11 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_v_a); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_12 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 730, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_12)) { if (likely(PyList_CheckExact(__pyx_t_8))) { if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_8)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 730, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_8, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_8)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 730, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_8, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_12(__pyx_t_8); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 730, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_3); } __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_3); __pyx_t_3 = 0; __Pyx_INCREF(__pyx_t_15); __Pyx_XDECREF_SET(__pyx_v_bn, __pyx_t_15); __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_15, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = __pyx_t_3; __pyx_t_3 = 0; /* … */ } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+731: for cn, c in enumerate(b):
__Pyx_INCREF(__pyx_int_0); __pyx_t_3 = __pyx_int_0; if (likely(PyList_CheckExact(__pyx_v_b)) || PyTuple_CheckExact(__pyx_v_b)) { __pyx_t_6 = __pyx_v_b; __Pyx_INCREF(__pyx_t_6); __pyx_t_19 = 0; __pyx_t_20 = NULL; } else { __pyx_t_19 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_v_b); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_20 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 731, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_20)) { if (likely(PyList_CheckExact(__pyx_t_6))) { if (__pyx_t_19 >= PyList_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_19); __Pyx_INCREF(__pyx_t_4); __pyx_t_19++; if (unlikely(0 < 0)) __PYX_ERR(0, 731, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_6, __pyx_t_19); __pyx_t_19++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { if (__pyx_t_19 >= PyTuple_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_19); __Pyx_INCREF(__pyx_t_4); __pyx_t_19++; if (unlikely(0 < 0)) __PYX_ERR(0, 731, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_6, __pyx_t_19); __pyx_t_19++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } } else { __pyx_t_4 = __pyx_t_20(__pyx_t_6); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 731, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_4); } __Pyx_XDECREF_SET(__pyx_v_c, __pyx_t_4); __pyx_t_4 = 0; __Pyx_INCREF(__pyx_t_3); __Pyx_XDECREF_SET(__pyx_v_cn, __pyx_t_3); __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; /* … */ } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+732: for dn, d in enumerate(c):
__Pyx_INCREF(__pyx_int_0); __pyx_t_4 = __pyx_int_0; if (likely(PyList_CheckExact(__pyx_v_c)) || PyTuple_CheckExact(__pyx_v_c)) { __pyx_t_18 = __pyx_v_c; __Pyx_INCREF(__pyx_t_18); __pyx_t_21 = 0; __pyx_t_22 = NULL; } else { __pyx_t_21 = -1; __pyx_t_18 = PyObject_GetIter(__pyx_v_c); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_22 = Py_TYPE(__pyx_t_18)->tp_iternext; if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 732, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_22)) { if (likely(PyList_CheckExact(__pyx_t_18))) { if (__pyx_t_21 >= PyList_GET_SIZE(__pyx_t_18)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_16 = PyList_GET_ITEM(__pyx_t_18, __pyx_t_21); __Pyx_INCREF(__pyx_t_16); __pyx_t_21++; if (unlikely(0 < 0)) __PYX_ERR(0, 732, __pyx_L1_error) #else __pyx_t_16 = PySequence_ITEM(__pyx_t_18, __pyx_t_21); __pyx_t_21++; if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); #endif } else { if (__pyx_t_21 >= PyTuple_GET_SIZE(__pyx_t_18)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_16 = PyTuple_GET_ITEM(__pyx_t_18, __pyx_t_21); __Pyx_INCREF(__pyx_t_16); __pyx_t_21++; if (unlikely(0 < 0)) __PYX_ERR(0, 732, __pyx_L1_error) #else __pyx_t_16 = PySequence_ITEM(__pyx_t_18, __pyx_t_21); __pyx_t_21++; if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); #endif } } else { __pyx_t_16 = __pyx_t_22(__pyx_t_18); if (unlikely(!__pyx_t_16)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 732, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_16); } __Pyx_XDECREF_SET(__pyx_v_d, __pyx_t_16); __pyx_t_16 = 0; __Pyx_INCREF(__pyx_t_4); __Pyx_XDECREF_SET(__pyx_v_dn, __pyx_t_4); __pyx_t_16 = __Pyx_PyInt_AddObjC(__pyx_t_4, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = __pyx_t_16; __pyx_t_16 = 0; /* … */ } __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+733: if d < np.inf:
__pyx_t_16 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 733, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_inf); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 733, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_16 = PyObject_RichCompare(__pyx_v_d, __pyx_t_17, Py_LT); __Pyx_XGOTREF(__pyx_t_16); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 733, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_16); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 733, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (__pyx_t_13) { /* … */ }
+734: print("%s length %d lr %d gaps %d = %g" % (
__pyx_t_17 = PyUnicode_Format(__pyx_kp_u_s_length_d_lr_d_gaps_d_g, __pyx_t_23); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 734, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0; __pyx_t_23 = PyTuple_New(1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 734, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_23); __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_17); __pyx_t_17 = 0; __pyx_t_17 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_23, NULL); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 734, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+735: grammar.tolabel[an],
__pyx_t_16 = PyObject_GetItem(((PyObject *)__pyx_v_grammar->tolabel), __pyx_v_an); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 735, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); /* … */ __pyx_t_23 = PyTuple_New(5); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 735, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_23); __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_16); __Pyx_INCREF(__pyx_v_bn); __Pyx_GIVEREF(__pyx_v_bn); PyTuple_SET_ITEM(__pyx_t_23, 1, __pyx_v_bn); __Pyx_INCREF(__pyx_v_cn); __Pyx_GIVEREF(__pyx_v_cn); PyTuple_SET_ITEM(__pyx_t_23, 2, __pyx_v_cn); __Pyx_INCREF(__pyx_v_dn); __Pyx_GIVEREF(__pyx_v_dn); PyTuple_SET_ITEM(__pyx_t_23, 3, __pyx_v_dn); __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_23, 4, __pyx_t_17); __pyx_t_16 = 0; __pyx_t_17 = 0;
+736: bn, cn, dn, exp(-d)))
__pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_exp); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_23); __pyx_t_24 = PyNumber_Negative(__pyx_v_d); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_24); __pyx_t_25 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_23))) { __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_23); if (likely(__pyx_t_25)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23); __Pyx_INCREF(__pyx_t_25); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_23, function); } } if (!__pyx_t_25) { __pyx_t_17 = __Pyx_PyObject_CallOneArg(__pyx_t_23, __pyx_t_24); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0; __Pyx_GOTREF(__pyx_t_17); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_23)) { PyObject *__pyx_temp[2] = {__pyx_t_25, __pyx_t_24}; __pyx_t_17 = __Pyx_PyFunction_FastCall(__pyx_t_23, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0; __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_23)) { PyObject *__pyx_temp[2] = {__pyx_t_25, __pyx_t_24}; __pyx_t_17 = __Pyx_PyCFunction_FastCall(__pyx_t_23, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0; __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0; } else #endif { __pyx_t_26 = PyTuple_New(1+1); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_26); __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_25); __pyx_t_25 = NULL; __Pyx_GIVEREF(__pyx_t_24); PyTuple_SET_ITEM(__pyx_t_26, 0+1, __pyx_t_24); __pyx_t_24 = 0; __pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_26, NULL); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0; } } __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
+737: cnt += 1
__pyx_t_17 = __Pyx_PyInt_AddObjC(__pyx_v_cnt, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 737, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF_SET(__pyx_v_cnt, __pyx_t_17); __pyx_t_17 = 0;
+738: print(cnt)
__pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 738, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_cnt); __Pyx_GIVEREF(__pyx_v_cnt); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_cnt); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 738, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+739: print("done")
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_n_u_done); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 739, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__16); __Pyx_GIVEREF(__pyx_tuple__16);
+740: return outside
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_outside); __pyx_r = __pyx_v_outside; goto __pyx_L0;
741:
742:
+743: def test():
/* Python wrapper */
static PyObject *__pyx_pw_8discodop_9estimates_15test(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8discodop_9estimates_14test[] = "test()";
static PyMethodDef __pyx_mdef_8discodop_9estimates_15test = {"test", (PyCFunction)__pyx_pw_8discodop_9estimates_15test, METH_NOARGS, __pyx_doc_8discodop_9estimates_14test};
static PyObject *__pyx_pw_8discodop_9estimates_15test(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("test (wrapper)", 0);
__pyx_r = __pyx_pf_8discodop_9estimates_14test(__pyx_self);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_8discodop_9estimates_14test(CYTHON_UNUSED PyObject *__pyx_self) {
struct __pyx_obj_8discodop_10containers_Chart *__pyx_v_chart = 0;
struct __pyx_obj_8discodop_10containers_Chart *__pyx_v_estchart = 0;
PyObject *__pyx_v_plcfrs = NULL;
PyObject *__pyx_v_treebankgrammar = NULL;
PyObject *__pyx_v_Grammar = NULL;
PyObject *__pyx_v_Tree = NULL;
PyObject *__pyx_v_NegraCorpusReader = NULL;
PyObject *__pyx_v_addfanoutmarkers = NULL;
PyObject *__pyx_v_binarize = NULL;
PyObject *__pyx_v_corpus = NULL;
PyObject *__pyx_v_trees = NULL;
PyObject *__pyx_v_a = NULL;
PyObject *__pyx_v_grammar = NULL;
PyObject *__pyx_v_sents = NULL;
PyObject *__pyx_v_outside = NULL;
PyObject *__pyx_v_sent = NULL;
PyObject *__pyx_v_msg = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("test", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("discodop.estimates.test", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_chart);
__Pyx_XDECREF((PyObject *)__pyx_v_estchart);
__Pyx_XDECREF(__pyx_v_plcfrs);
__Pyx_XDECREF(__pyx_v_treebankgrammar);
__Pyx_XDECREF(__pyx_v_Grammar);
__Pyx_XDECREF(__pyx_v_Tree);
__Pyx_XDECREF(__pyx_v_NegraCorpusReader);
__Pyx_XDECREF(__pyx_v_addfanoutmarkers);
__Pyx_XDECREF(__pyx_v_binarize);
__Pyx_XDECREF(__pyx_v_corpus);
__Pyx_XDECREF(__pyx_v_trees);
__Pyx_XDECREF(__pyx_v_a);
__Pyx_XDECREF(__pyx_v_grammar);
__Pyx_XDECREF(__pyx_v_sents);
__Pyx_XDECREF(__pyx_v_outside);
__Pyx_XDECREF(__pyx_v_sent);
__Pyx_XDECREF(__pyx_v_msg);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__59 = PyTuple_Pack(17, __pyx_n_s_chart, __pyx_n_s_estchart, __pyx_n_s_plcfrs, __pyx_n_s_treebankgrammar, __pyx_n_s_Grammar, __pyx_n_s_Tree, __pyx_n_s_NegraCorpusReader, __pyx_n_s_addfanoutmarkers, __pyx_n_s_binarize, __pyx_n_s_corpus, __pyx_n_s_trees, __pyx_n_s_a, __pyx_n_s_grammar, __pyx_n_s_sents, __pyx_n_s_outside, __pyx_n_s_sent, __pyx_n_s_msg); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 743, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__59);
__Pyx_GIVEREF(__pyx_tuple__59);
/* … */
__pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_8discodop_9estimates_15test, NULL, __pyx_n_s_discodop_estimates); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 743, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_3) < 0) __PYX_ERR(0, 743, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(0, 0, 17, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_discodop_estimates_pyx, __pyx_n_s_test, 743, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(0, 743, __pyx_L1_error)
744: cdef Chart chart, estchart
+745: from . import plcfrs
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 745, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_plcfrs); __Pyx_GIVEREF(__pyx_n_s_plcfrs); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_plcfrs); __pyx_t_2 = __Pyx_Import(__pyx_n_s__17, __pyx_t_1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 745, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_plcfrs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 745, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_1); __pyx_v_plcfrs = __pyx_t_1; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+746: from .grammar import treebankgrammar
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_treebankgrammar); __Pyx_GIVEREF(__pyx_n_s_treebankgrammar); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_treebankgrammar); __pyx_t_1 = __Pyx_Import(__pyx_n_s_grammar, __pyx_t_2, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_treebankgrammar); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_2); __pyx_v_treebankgrammar = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+747: from .containers import Grammar
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_Grammar); __Pyx_GIVEREF(__pyx_n_s_Grammar); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Grammar); __pyx_t_2 = __Pyx_Import(__pyx_n_s_containers, __pyx_t_1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Grammar); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_1); __pyx_v_Grammar = __pyx_t_1; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+748: from .tree import Tree
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 748, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_Tree); __Pyx_GIVEREF(__pyx_n_s_Tree); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Tree); __pyx_t_1 = __Pyx_Import(__pyx_n_s_tree, __pyx_t_2, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 748, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Tree); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 748, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_2); __pyx_v_Tree = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+749: from .treebank import NegraCorpusReader
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_NegraCorpusReader); __Pyx_GIVEREF(__pyx_n_s_NegraCorpusReader); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_NegraCorpusReader); __pyx_t_2 = __Pyx_Import(__pyx_n_s_treebank, __pyx_t_1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_NegraCorpusReader); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_1); __pyx_v_NegraCorpusReader = __pyx_t_1; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+750: from .treetransforms import addfanoutmarkers, binarize
__pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 750, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_addfanoutmarkers); __Pyx_GIVEREF(__pyx_n_s_addfanoutmarkers); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_addfanoutmarkers); __Pyx_INCREF(__pyx_n_s_binarize); __Pyx_GIVEREF(__pyx_n_s_binarize); PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_binarize); __pyx_t_1 = __Pyx_Import(__pyx_n_s_treetransforms, __pyx_t_2, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 750, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_addfanoutmarkers); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 750, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_2); __pyx_v_addfanoutmarkers = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_binarize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 750, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_2); __pyx_v_binarize = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+751: corpus = NegraCorpusReader('alpinosample.export')
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_NegraCorpusReader, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 751, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_corpus = __pyx_t_1; __pyx_t_1 = 0; /* … */ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_u_alpinosample_export); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 751, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__18); __Pyx_GIVEREF(__pyx_tuple__18);
+752: trees = list(corpus.trees().values())
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_corpus, __pyx_n_s_trees); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } if (__pyx_t_4) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 752, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 752, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_values); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } if (__pyx_t_2) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 752, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 752, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_trees = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+753: for a in trees:
__pyx_t_3 = __pyx_v_trees; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0; for (;;) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 753, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif __Pyx_XDECREF_SET(__pyx_v_a, __pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+754: binarize(a, vertmarkov=1, horzmarkov=1)
__pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 754, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_a); __Pyx_GIVEREF(__pyx_v_a); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_a); __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_vertmarkov, __pyx_int_1) < 0) __PYX_ERR(0, 754, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_horzmarkov, __pyx_int_1) < 0) __PYX_ERR(0, 754, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_binarize, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 754, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+755: addfanoutmarkers(a)
__Pyx_INCREF(__pyx_v_addfanoutmarkers); __pyx_t_2 = __pyx_v_addfanoutmarkers; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_1) { __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_a); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_a}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 755, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_a}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 755, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL; __Pyx_INCREF(__pyx_v_a); __Pyx_GIVEREF(__pyx_v_a); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_a); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+756: grammar = Grammar(treebankgrammar(trees, list(corpus.sents().values())))
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_corpus, __pyx_n_s_sents); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } if (__pyx_t_7) { __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 756, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 756, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_values); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } if (__pyx_t_6) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_INCREF(__pyx_v_treebankgrammar); __pyx_t_2 = __pyx_v_treebankgrammar; __pyx_t_6 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_trees, __pyx_t_1}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 756, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_trees, __pyx_t_1}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 756, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_trees); __Pyx_GIVEREF(__pyx_v_trees); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_8, __pyx_v_trees); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_8, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_INCREF(__pyx_v_Grammar); __pyx_t_2 = __pyx_v_Grammar; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_7) { __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL; __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_grammar = __pyx_t_3; __pyx_t_3 = 0;
+757: trees = [Tree('(ROOT (A (a 0) (b 1)))'),
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_Tree, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); /* … */ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_u_ROOT_A_a_0_b_1); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 757, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__19); __Pyx_GIVEREF(__pyx_tuple__19); /* … */ __pyx_t_7 = PyList_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_3); PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); PyList_SET_ITEM(__pyx_t_7, 2, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); PyList_SET_ITEM(__pyx_t_7, 3, __pyx_t_4); __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_4 = 0; __Pyx_DECREF_SET(__pyx_v_trees, ((PyObject*)__pyx_t_7)); __pyx_t_7 = 0;
+758: Tree('(ROOT (B (a 0) (c 2)) (b 1))'),
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_Tree, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); /* … */ __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_u_ROOT_B_a_0_c_2_b_1); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 758, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__20); __Pyx_GIVEREF(__pyx_tuple__20);
+759: Tree('(ROOT (B (a 0) (c 2)) (b 1))'),
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_Tree, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 759, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); /* … */ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_u_ROOT_B_a_0_c_2_b_1); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 759, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__21); __Pyx_GIVEREF(__pyx_tuple__21);
+760: Tree('(ROOT (C (a 0) (c 2)) (b 1))')]
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_Tree, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 760, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); /* … */ __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_u_ROOT_C_a_0_c_2_b_1); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 760, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__22); __Pyx_GIVEREF(__pyx_tuple__22);
+761: sents =[["a", "b"],
__pyx_t_7 = PyList_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 761, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_n_u_a); __Pyx_GIVEREF(__pyx_n_u_a); PyList_SET_ITEM(__pyx_t_7, 0, __pyx_n_u_a); __Pyx_INCREF(__pyx_n_u_b); __Pyx_GIVEREF(__pyx_n_u_b); PyList_SET_ITEM(__pyx_t_7, 1, __pyx_n_u_b); /* … */ __pyx_t_3 = PyList_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 761, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_7); PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyList_SET_ITEM(__pyx_t_3, 1, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyList_SET_ITEM(__pyx_t_3, 2, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyList_SET_ITEM(__pyx_t_3, 3, __pyx_t_2); __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_v_sents = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+762: ["a", "b", "c"],
__pyx_t_4 = PyList_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_n_u_a); __Pyx_GIVEREF(__pyx_n_u_a); PyList_SET_ITEM(__pyx_t_4, 0, __pyx_n_u_a); __Pyx_INCREF(__pyx_n_u_b); __Pyx_GIVEREF(__pyx_n_u_b); PyList_SET_ITEM(__pyx_t_4, 1, __pyx_n_u_b); __Pyx_INCREF(__pyx_n_u_c); __Pyx_GIVEREF(__pyx_n_u_c); PyList_SET_ITEM(__pyx_t_4, 2, __pyx_n_u_c);
+763: ["a", "b", "c"],
__pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 763, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_a); __Pyx_GIVEREF(__pyx_n_u_a); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_a); __Pyx_INCREF(__pyx_n_u_b); __Pyx_GIVEREF(__pyx_n_u_b); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_b); __Pyx_INCREF(__pyx_n_u_c); __Pyx_GIVEREF(__pyx_n_u_c); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_c);
+764: ["a", "b", "c"]]
__pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_u_a); __Pyx_GIVEREF(__pyx_n_u_a); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_u_a); __Pyx_INCREF(__pyx_n_u_b); __Pyx_GIVEREF(__pyx_n_u_b); PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_u_b); __Pyx_INCREF(__pyx_n_u_c); __Pyx_GIVEREF(__pyx_n_u_c); PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_u_c);
+765: print("treebank:")
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 765, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* … */ __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_u_treebank_2); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 765, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__23); __Pyx_GIVEREF(__pyx_tuple__23);
+766: for a in trees:
__pyx_t_3 = __pyx_v_trees; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0; for (;;) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 766, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif __Pyx_XDECREF_SET(__pyx_v_a, __pyx_t_2); __pyx_t_2 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+767: print(a)
__pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_a); __Pyx_GIVEREF(__pyx_v_a); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_a); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+768: print("\ngrammar:")
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* … */ __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_u_grammar_2); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 768, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__24); __Pyx_GIVEREF(__pyx_tuple__24);
+769: grammar = Grammar(treebankgrammar(trees, sents))
__Pyx_INCREF(__pyx_v_treebankgrammar); __pyx_t_2 = __pyx_v_treebankgrammar; __pyx_t_4 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_trees, __pyx_v_sents}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_trees, __pyx_v_sents}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_trees); __Pyx_GIVEREF(__pyx_v_trees); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_8, __pyx_v_trees); __Pyx_INCREF(__pyx_v_sents); __Pyx_GIVEREF(__pyx_v_sents); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_8, __pyx_v_sents); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_INCREF(__pyx_v_Grammar); __pyx_t_2 = __pyx_v_Grammar; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_7) { __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_1}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_1}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = NULL; __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_grammar, __pyx_t_3); __pyx_t_3 = 0;
+770: print(grammar, '\n')
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 770, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_grammar); __Pyx_GIVEREF(__pyx_v_grammar); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_grammar); __Pyx_INCREF(__pyx_kp_u__13); __Pyx_GIVEREF(__pyx_kp_u__13); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_kp_u__13); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 770, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+771: testestimates(grammar, 4, 'ROOT')
if (!(likely(((__pyx_v_grammar) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_grammar, __pyx_ptype_8discodop_10containers_Grammar))))) __PYX_ERR(0, 771, __pyx_L1_error) __pyx_t_2 = __pyx_f_8discodop_9estimates_testestimates(((struct __pyx_obj_8discodop_10containers_Grammar *)__pyx_v_grammar), 4, __pyx_n_u_ROOT, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 771, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+772: outside = getestimates(grammar, 4, 'ROOT')
__pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_getestimates); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 772, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_grammar, __pyx_int_4, __pyx_n_u_ROOT}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 772, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_grammar, __pyx_int_4, __pyx_n_u_ROOT}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 772, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_1 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 772, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_grammar); __Pyx_GIVEREF(__pyx_v_grammar); PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_8, __pyx_v_grammar); __Pyx_INCREF(__pyx_int_4); __Pyx_GIVEREF(__pyx_int_4); PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_8, __pyx_int_4); __Pyx_INCREF(__pyx_n_u_ROOT); __Pyx_GIVEREF(__pyx_n_u_ROOT); PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_8, __pyx_n_u_ROOT); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 772, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_outside = __pyx_t_2; __pyx_t_2 = 0;
+773: sent = ["a", "b", "c"]
__pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_u_a); __Pyx_GIVEREF(__pyx_n_u_a); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_u_a); __Pyx_INCREF(__pyx_n_u_b); __Pyx_GIVEREF(__pyx_n_u_b); PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_u_b); __Pyx_INCREF(__pyx_n_u_c); __Pyx_GIVEREF(__pyx_n_u_c); PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_u_c); __pyx_v_sent = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
+774: print("\nwithout estimates")
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 774, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* … */ __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_u_without_estimates); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 774, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25);
+775: chart, msg = plcfrs.parse(sent, grammar, estimates=None)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_plcfrs, __pyx_n_s_parse); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_sent); __Pyx_GIVEREF(__pyx_v_sent); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_sent); __Pyx_INCREF(__pyx_v_grammar); __Pyx_GIVEREF(__pyx_v_grammar); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_grammar); __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_estimates, Py_None) < 0) __PYX_ERR(0, 775, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 775, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_2)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_9(__pyx_t_2); if (unlikely(!__pyx_t_1)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_3 = __pyx_t_9(__pyx_t_2); if (unlikely(!__pyx_t_3)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_2), 2) < 0) __PYX_ERR(0, 775, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 775, __pyx_L1_error) __pyx_L8_unpacking_done:; } if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_8discodop_10containers_Chart))))) __PYX_ERR(0, 775, __pyx_L1_error) __pyx_v_chart = ((struct __pyx_obj_8discodop_10containers_Chart *)__pyx_t_1); __pyx_t_1 = 0; __pyx_v_msg = __pyx_t_3; __pyx_t_3 = 0;
+776: print(msg)
__pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_msg); __Pyx_GIVEREF(__pyx_v_msg); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_msg); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+777: print(chart)
__pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_v_chart)); __Pyx_GIVEREF(((PyObject *)__pyx_v_chart)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_chart)); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+778: print("\nwith estimates")
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 778, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* … */ __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_u_with_estimates); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 778, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__26); __Pyx_GIVEREF(__pyx_tuple__26);
+779: estchart, msg = plcfrs.parse(sent, grammar,
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_plcfrs, __pyx_n_s_parse); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_sent); __Pyx_GIVEREF(__pyx_v_sent); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_sent); __Pyx_INCREF(__pyx_v_grammar); __Pyx_GIVEREF(__pyx_v_grammar); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_grammar); /* … */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 779, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L9_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_3 = __pyx_t_9(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L9_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_4), 2) < 0) __PYX_ERR(0, 779, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L10_unpacking_done; __pyx_L9_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 779, __pyx_L1_error) __pyx_L10_unpacking_done:; } if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_8discodop_10containers_Chart))))) __PYX_ERR(0, 779, __pyx_L1_error) __pyx_v_estchart = ((struct __pyx_obj_8discodop_10containers_Chart *)__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_msg, __pyx_t_3); __pyx_t_3 = 0;
+780: estimates=('SXlrgaps', outside))
__pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_u_SXlrgaps); __Pyx_GIVEREF(__pyx_n_u_SXlrgaps); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_u_SXlrgaps); __Pyx_INCREF(__pyx_v_outside); __Pyx_GIVEREF(__pyx_v_outside); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_outside); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_estimates, __pyx_t_2) < 0) __PYX_ERR(0, 780, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+781: print(msg)
__pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_msg); __Pyx_GIVEREF(__pyx_v_msg); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_msg); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+782: print(estchart)
__pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_v_estchart)); __Pyx_GIVEREF(((PyObject *)__pyx_v_estchart)); PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_estchart)); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+783: print('items avoided:', chart.numitems() - estchart.numitems())
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_chart), __pyx_n_s_numitems); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } if (__pyx_t_1) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 783, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 783, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_estchart), __pyx_n_s_numitems); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } if (__pyx_t_4) { __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 783, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 783, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_items_avoided); __Pyx_GIVEREF(__pyx_kp_u_items_avoided); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_items_avoided); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
784:
+785: trees = [Tree(a) for a in '''\
{ /* enter inner scope */
PyObject *__pyx_8genexpr6__pyx_v_a = NULL;
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 785, __pyx_L13_error)
__Pyx_GOTREF(__pyx_t_1);
/* … */
__pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
for (;;) {
if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 785, __pyx_L13_error)
#else
__pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 785, __pyx_L13_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
__Pyx_XDECREF_SET(__pyx_8genexpr6__pyx_v_a, __pyx_t_3);
__pyx_t_3 = 0;
__Pyx_INCREF(__pyx_v_Tree);
__pyx_t_4 = __pyx_v_Tree; __pyx_t_7 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
if (likely(__pyx_t_7)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
if (!__pyx_t_7) {
__pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_8genexpr6__pyx_v_a); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 785, __pyx_L13_error)
__Pyx_GOTREF(__pyx_t_3);
} else {
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_4)) {
PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_8genexpr6__pyx_v_a};
__pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 785, __pyx_L13_error)
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_GOTREF(__pyx_t_3);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_8genexpr6__pyx_v_a};
__pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 785, __pyx_L13_error)
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_GOTREF(__pyx_t_3);
} else
#endif
{
__pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 785, __pyx_L13_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
__Pyx_INCREF(__pyx_8genexpr6__pyx_v_a);
__Pyx_GIVEREF(__pyx_8genexpr6__pyx_v_a);
PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_8genexpr6__pyx_v_a);
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 785, __pyx_L13_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 785, __pyx_L13_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_8genexpr6__pyx_v_a);
goto __pyx_L16_exit_scope;
__pyx_L13_error:;
__Pyx_XDECREF(__pyx_8genexpr6__pyx_v_a);
goto __pyx_L1_error;
__pyx_L16_exit_scope:;
} /* exit inner scope */
__Pyx_DECREF_SET(__pyx_v_trees, ((PyObject*)__pyx_t_1));
__pyx_t_1 = 0;
786: (ROOT (A (a 0) (b 1)))
787: (ROOT (A (B (A (B (a 0) (b 1))))) (c 2))
788: (ROOT (A (B (A (B (a 0) (b 1))))) (c 2))
789: (ROOT (A (B (A (B (a 0) (b 1))))) (c 2))
790: (ROOT (A (B (A (B (a 0) (b 1))))) (c 2))
791: (ROOT (A (B (A (B (a 0) (b 1))))) (c 2))
+792: (ROOT (C (a 0) (b 1)) (c 2))'''.splitlines()]
__pyx_t_3 = PyUnicode_Splitlines(__pyx_kp_u_ROOT_A_a_0_b_1_ROOT_A_B_A_B_a_0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 792, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_3);
+793: sents =[["a", "b"],
__pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 793, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_a); __Pyx_GIVEREF(__pyx_n_u_a); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_a); __Pyx_INCREF(__pyx_n_u_b); __Pyx_GIVEREF(__pyx_n_u_b); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_b); /* … */ __pyx_t_11 = PyList_New(7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 793, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_1); PyList_SET_ITEM(__pyx_t_11, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyList_SET_ITEM(__pyx_t_11, 1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyList_SET_ITEM(__pyx_t_11, 2, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyList_SET_ITEM(__pyx_t_11, 3, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_6); PyList_SET_ITEM(__pyx_t_11, 4, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_7); PyList_SET_ITEM(__pyx_t_11, 5, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_10); PyList_SET_ITEM(__pyx_t_11, 6, __pyx_t_10); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_10 = 0; __Pyx_DECREF_SET(__pyx_v_sents, ((PyObject*)__pyx_t_11)); __pyx_t_11 = 0;
+794: ["a", "b", "c"],
__pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 794, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_u_a); __Pyx_GIVEREF(__pyx_n_u_a); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_u_a); __Pyx_INCREF(__pyx_n_u_b); __Pyx_GIVEREF(__pyx_n_u_b); PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_u_b); __Pyx_INCREF(__pyx_n_u_c); __Pyx_GIVEREF(__pyx_n_u_c); PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_u_c);
+795: ["a", "b", "c"],
__pyx_t_3 = PyList_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_n_u_a); __Pyx_GIVEREF(__pyx_n_u_a); PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_u_a); __Pyx_INCREF(__pyx_n_u_b); __Pyx_GIVEREF(__pyx_n_u_b); PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_u_b); __Pyx_INCREF(__pyx_n_u_c); __Pyx_GIVEREF(__pyx_n_u_c); PyList_SET_ITEM(__pyx_t_3, 2, __pyx_n_u_c);
+796: ["a", "b", "c"],
__pyx_t_4 = PyList_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 796, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_n_u_a); __Pyx_GIVEREF(__pyx_n_u_a); PyList_SET_ITEM(__pyx_t_4, 0, __pyx_n_u_a); __Pyx_INCREF(__pyx_n_u_b); __Pyx_GIVEREF(__pyx_n_u_b); PyList_SET_ITEM(__pyx_t_4, 1, __pyx_n_u_b); __Pyx_INCREF(__pyx_n_u_c); __Pyx_GIVEREF(__pyx_n_u_c); PyList_SET_ITEM(__pyx_t_4, 2, __pyx_n_u_c);
+797: ["a", "b", "c"],
__pyx_t_6 = PyList_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 797, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_n_u_a); __Pyx_GIVEREF(__pyx_n_u_a); PyList_SET_ITEM(__pyx_t_6, 0, __pyx_n_u_a); __Pyx_INCREF(__pyx_n_u_b); __Pyx_GIVEREF(__pyx_n_u_b); PyList_SET_ITEM(__pyx_t_6, 1, __pyx_n_u_b); __Pyx_INCREF(__pyx_n_u_c); __Pyx_GIVEREF(__pyx_n_u_c); PyList_SET_ITEM(__pyx_t_6, 2, __pyx_n_u_c);
+798: ["a", "b", "c"],
__pyx_t_7 = PyList_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 798, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_n_u_a); __Pyx_GIVEREF(__pyx_n_u_a); PyList_SET_ITEM(__pyx_t_7, 0, __pyx_n_u_a); __Pyx_INCREF(__pyx_n_u_b); __Pyx_GIVEREF(__pyx_n_u_b); PyList_SET_ITEM(__pyx_t_7, 1, __pyx_n_u_b); __Pyx_INCREF(__pyx_n_u_c); __Pyx_GIVEREF(__pyx_n_u_c); PyList_SET_ITEM(__pyx_t_7, 2, __pyx_n_u_c);
+799: ["a", "b", "c"]]
__pyx_t_10 = PyList_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_INCREF(__pyx_n_u_a); __Pyx_GIVEREF(__pyx_n_u_a); PyList_SET_ITEM(__pyx_t_10, 0, __pyx_n_u_a); __Pyx_INCREF(__pyx_n_u_b); __Pyx_GIVEREF(__pyx_n_u_b); PyList_SET_ITEM(__pyx_t_10, 1, __pyx_n_u_b); __Pyx_INCREF(__pyx_n_u_c); __Pyx_GIVEREF(__pyx_n_u_c); PyList_SET_ITEM(__pyx_t_10, 2, __pyx_n_u_c);
+800: print("treebank:")
__pyx_t_11 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; /* … */ __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_u_treebank_2); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 800, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__27); __Pyx_GIVEREF(__pyx_tuple__27);
+801: for a in trees:
__pyx_t_11 = __pyx_v_trees; __Pyx_INCREF(__pyx_t_11); __pyx_t_5 = 0; for (;;) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_11)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_10 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_5); __Pyx_INCREF(__pyx_t_10); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 801, __pyx_L1_error) #else __pyx_t_10 = PySequence_ITEM(__pyx_t_11, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); #endif __Pyx_XDECREF_SET(__pyx_v_a, __pyx_t_10); __pyx_t_10 = 0; /* … */ } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+802: print(a)
__pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_INCREF(__pyx_v_a); __Pyx_GIVEREF(__pyx_v_a); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_a); __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_10, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+803: print("\npcfg grammar:")
__pyx_t_11 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; /* … */ __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_u_pcfg_grammar); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__28); __Pyx_GIVEREF(__pyx_tuple__28);
+804: grammar = Grammar(treebankgrammar(trees, sents))
__Pyx_INCREF(__pyx_v_treebankgrammar); __pyx_t_10 = __pyx_v_treebankgrammar; __pyx_t_6 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_trees, __pyx_v_sents}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 804, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_7); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_trees, __pyx_v_sents}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 804, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_7); } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 804, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_trees); __Pyx_GIVEREF(__pyx_v_trees); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_8, __pyx_v_trees); __Pyx_INCREF(__pyx_v_sents); __Pyx_GIVEREF(__pyx_v_sents); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_8, __pyx_v_sents); __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 804, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_INCREF(__pyx_v_Grammar); __pyx_t_10 = __pyx_v_Grammar; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } if (!__pyx_t_4) { __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 804, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_11); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_7}; __pyx_t_11 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 804, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_7}; __pyx_t_11 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 804, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 804, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_6, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 804, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF_SET(__pyx_v_grammar, __pyx_t_11); __pyx_t_11 = 0;
+805: print(grammar, '\n')
__pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_INCREF(__pyx_v_grammar); __Pyx_GIVEREF(__pyx_v_grammar); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_grammar); __Pyx_INCREF(__pyx_kp_u__13); __Pyx_GIVEREF(__pyx_kp_u__13); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_kp_u__13); __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_11, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+806: outside = getpcfgestimates(grammar, 4, 'ROOT', debug=True)
if (!(likely(((__pyx_v_grammar) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_grammar, __pyx_ptype_8discodop_10containers_Grammar))))) __PYX_ERR(0, 806, __pyx_L1_error) __pyx_t_12.__pyx_n = 1; __pyx_t_12.debug = 1; __pyx_t_10 = __pyx_f_8discodop_9estimates_getpcfgestimates(((struct __pyx_obj_8discodop_10containers_Grammar *)__pyx_v_grammar), 4, __pyx_n_u_ROOT, 0, &__pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 806, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF_SET(__pyx_v_outside, __pyx_t_10); __pyx_t_10 = 0;
+807: sent = ["a", "b", "c"]
__pyx_t_10 = PyList_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 807, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_INCREF(__pyx_n_u_a); __Pyx_GIVEREF(__pyx_n_u_a); PyList_SET_ITEM(__pyx_t_10, 0, __pyx_n_u_a); __Pyx_INCREF(__pyx_n_u_b); __Pyx_GIVEREF(__pyx_n_u_b); PyList_SET_ITEM(__pyx_t_10, 1, __pyx_n_u_b); __Pyx_INCREF(__pyx_n_u_c); __Pyx_GIVEREF(__pyx_n_u_c); PyList_SET_ITEM(__pyx_t_10, 2, __pyx_n_u_c); __Pyx_DECREF_SET(__pyx_v_sent, ((PyObject*)__pyx_t_10)); __pyx_t_10 = 0;
+808: print("\nwithout estimates")
__pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 808, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; /* … */ __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_u_without_estimates); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 808, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__29); __Pyx_GIVEREF(__pyx_tuple__29);
+809: chart, msg = plcfrs.parse(sent, grammar, estimates=None)
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_plcfrs, __pyx_n_s_parse); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_INCREF(__pyx_v_sent); __Pyx_GIVEREF(__pyx_v_sent); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_sent); __Pyx_INCREF(__pyx_v_grammar); __Pyx_GIVEREF(__pyx_v_grammar); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_v_grammar); __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_estimates, Py_None) < 0) __PYX_ERR(0, 809, __pyx_L1_error) __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_11, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) { PyObject* sequence = __pyx_t_7; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 809, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_11 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_11); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); #endif __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { Py_ssize_t index = -1; __pyx_t_10 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_10)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_10); if (unlikely(!__pyx_t_6)) goto __pyx_L19_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_11 = __pyx_t_9(__pyx_t_10); if (unlikely(!__pyx_t_11)) goto __pyx_L19_unpacking_failed; __Pyx_GOTREF(__pyx_t_11); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_10), 2) < 0) __PYX_ERR(0, 809, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L20_unpacking_done; __pyx_L19_unpacking_failed:; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 809, __pyx_L1_error) __pyx_L20_unpacking_done:; } if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_8discodop_10containers_Chart))))) __PYX_ERR(0, 809, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_chart, ((struct __pyx_obj_8discodop_10containers_Chart *)__pyx_t_6)); __pyx_t_6 = 0; __Pyx_DECREF_SET(__pyx_v_msg, __pyx_t_11); __pyx_t_11 = 0;
+810: print(msg)
__pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_msg); __Pyx_GIVEREF(__pyx_v_msg); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_msg); __pyx_t_11 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_7, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 810, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+811: print(chart)
__pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 811, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_INCREF(((PyObject *)__pyx_v_chart)); __Pyx_GIVEREF(((PyObject *)__pyx_v_chart)); PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_v_chart)); __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_11, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 811, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+812: print("\nwith estimates")
__pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 812, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* … */ __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_u_with_estimates); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 812, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__30); __Pyx_GIVEREF(__pyx_tuple__30);
+813: estchart, msg = plcfrs.parse(sent, grammar, estimates=('SX', outside))
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_plcfrs, __pyx_n_s_parse); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 813, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 813, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_INCREF(__pyx_v_sent); __Pyx_GIVEREF(__pyx_v_sent); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_sent); __Pyx_INCREF(__pyx_v_grammar); __Pyx_GIVEREF(__pyx_v_grammar); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_v_grammar); __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 813, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 813, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_INCREF(__pyx_n_u_SX); __Pyx_GIVEREF(__pyx_n_u_SX); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_n_u_SX); __Pyx_INCREF(__pyx_v_outside); __Pyx_GIVEREF(__pyx_v_outside); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_outside); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_estimates, __pyx_t_10) < 0) __PYX_ERR(0, 813, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_11, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 813, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_10))) || (PyList_CheckExact(__pyx_t_10))) { PyObject* sequence = __pyx_t_10; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 813, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_11 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_11); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 813, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 813, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); #endif __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else { Py_ssize_t index = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 813, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_7)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L21_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_11 = __pyx_t_9(__pyx_t_7); if (unlikely(!__pyx_t_11)) goto __pyx_L21_unpacking_failed; __Pyx_GOTREF(__pyx_t_11); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_7), 2) < 0) __PYX_ERR(0, 813, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L22_unpacking_done; __pyx_L21_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 813, __pyx_L1_error) __pyx_L22_unpacking_done:; } if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_8discodop_10containers_Chart))))) __PYX_ERR(0, 813, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_estchart, ((struct __pyx_obj_8discodop_10containers_Chart *)__pyx_t_6)); __pyx_t_6 = 0; __Pyx_DECREF_SET(__pyx_v_msg, __pyx_t_11); __pyx_t_11 = 0;
+814: print(msg)
__pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_INCREF(__pyx_v_msg); __Pyx_GIVEREF(__pyx_v_msg); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_msg); __pyx_t_11 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_10, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+815: print(estchart)
__pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_INCREF(((PyObject *)__pyx_v_estchart)); __Pyx_GIVEREF(((PyObject *)__pyx_v_estchart)); PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_v_estchart)); __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_11, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+816: print('items avoided:')
__pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; /* … */ __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_u_items_avoided); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 816, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__31); __Pyx_GIVEREF(__pyx_tuple__31);
+817: print('items avoided:', chart.numitems() - estchart.numitems())
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_chart), __pyx_n_s_numitems); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 817, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } if (__pyx_t_6) { __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 817, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 817, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_estchart), __pyx_n_s_numitems); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 817, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } if (__pyx_t_7) { __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 817, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { __pyx_t_11 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 817, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyNumber_Subtract(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 817, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 817, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_INCREF(__pyx_kp_u_items_avoided); __Pyx_GIVEREF(__pyx_kp_u_items_avoided); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_kp_u_items_avoided); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 817, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
818:
+819: __all__ = ['Item', 'getestimates', 'getpcfgestimates', 'inside', 'outsidelr',
__pyx_t_3 = PyList_New(6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 819, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_n_u_Item); __Pyx_GIVEREF(__pyx_n_u_Item); PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_u_Item); __Pyx_INCREF(__pyx_n_u_getestimates); __Pyx_GIVEREF(__pyx_n_u_getestimates); PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_u_getestimates); __Pyx_INCREF(__pyx_n_u_getpcfgestimates); __Pyx_GIVEREF(__pyx_n_u_getpcfgestimates); PyList_SET_ITEM(__pyx_t_3, 2, __pyx_n_u_getpcfgestimates); __Pyx_INCREF(__pyx_n_u_inside_2); __Pyx_GIVEREF(__pyx_n_u_inside_2); PyList_SET_ITEM(__pyx_t_3, 3, __pyx_n_u_inside_2); __Pyx_INCREF(__pyx_n_u_outsidelr); __Pyx_GIVEREF(__pyx_n_u_outsidelr); PyList_SET_ITEM(__pyx_t_3, 4, __pyx_n_u_outsidelr); __Pyx_INCREF(__pyx_n_u_simpleinside); __Pyx_GIVEREF(__pyx_n_u_simpleinside); PyList_SET_ITEM(__pyx_t_3, 5, __pyx_n_u_simpleinside); if (PyDict_SetItem(__pyx_d, __pyx_n_s_all, __pyx_t_3) < 0) __PYX_ERR(0, 819, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
820: 'simpleinside']