static PyObject *breakup_list(PyObject *self, PyObject *args) { PyObject* source_list; PyObject* iter; PyObject* item; PyObject* ngram_list; long min, max; Py_ssize_t n; if (!PyArg_ParseTuple(args, "Oll:breakup_list", &source_list, &min, &max)) { return NULL; } iter = PyObject_GetIter(source_list); if(!iter) return NULL; ngram_list = PyList_New(0); if(!ngram_list) return NULL; while ((item = PyIter_Next(iter))) { for(n=min; n <= max; n++) { if(one_pass(ngram_list, item, n) < 0) { Py_DECREF(item); Py_DECREF(iter); Py_DECREF(ngram_list); return NULL; } } Py_DECREF(item); } Py_DECREF(iter); return ngram_list; }
static PyObject *breakup_word(PyObject *self, PyObject *args) { PyObject* source_string; PyObject* ngram_list; long min, max; Py_ssize_t n; if (!PyArg_ParseTuple(args, "Oll:breakup_list", &source_string, &min, &max)) { return NULL; } ngram_list = PyList_New(0); if(!ngram_list) return NULL; for(n=min; n <= max; n++) { if(one_pass(ngram_list, source_string, n) < 0) { Py_DECREF(ngram_list); return NULL; } } return ngram_list; }
int main() { printf("One pass: variance = %f\n", one_pass(measurements, 6)); printf("Two pass: variance = %f\n", two_pass(measurements, 6)); }