Generated by Cython 0.9.6.14 on Mon May 12 14:06:34 2008
Raw output: _Users_was_notebook_misc_worksheets_admin_142_code_sage670_spyx_0.c
1:
2: include "interrupt.pxi" # ctrl-c interrupt block support
3: include "stdsage.pxi" # ctrl-c interrupt block support
4:
5: include "cdefs.pxi"
6: cdef extern from "math.h":
7: double abs(double)
8:
9: def bisect_cython(f, double a, double b, double eps):
static PyObject *__pyx_n_ValueError; static PyObject *__pyx_k_1p; static PyObject *__pyx_builtin_ValueError; static char __pyx_k_1[] = "f must have a sign change in the interval (%s,%s)"; static PyObject *__pyx_pf_65_Users_was_notebook_misc_worksheets_admin_142_code_sage670_spyx_0_bisect_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_65_Users_was_notebook_misc_worksheets_admin_142_code_sage670_spyx_0_bisect_cython[] = "File: _Users_was_notebook_misc_worksheets_admin_142_code_sage670_spyx_0.pyx (starting at line 9)"; static PyObject *__pyx_pf_65_Users_was_notebook_misc_worksheets_admin_142_code_sage670_spyx_0_bisect_cython(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_f = 0; double __pyx_v_a; double __pyx_v_b; double __pyx_v_eps; double __pyx_v_two; double __pyx_v_fa; double __pyx_v_fb; double __pyx_v_fc; double __pyx_v_c; double __pyx_v_fabs; int __pyx_v_iterations; PyObject *__pyx_r; PyObject *__pyx_1 = 0; PyObject *__pyx_2 = 0; double __pyx_3; long __pyx_4; int __pyx_5; PyObject *__pyx_6 = 0; double __pyx_7; PyObject *__pyx_8 = 0; static char *__pyx_argnames[] = {"f","a","b","eps",0}; if (likely(!__pyx_kwds) && likely(PyTuple_GET_SIZE(__pyx_args) == 4)) { __pyx_v_f = PyTuple_GET_ITEM(__pyx_args, 0); __pyx_v_a = __pyx_PyFloat_AsDouble(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L2;} __pyx_v_b = __pyx_PyFloat_AsDouble(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L2;} __pyx_v_eps = __pyx_PyFloat_AsDouble(PyTuple_GET_ITEM(__pyx_args, 3)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L2;} } else { if (unlikely(!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "Oddd", __pyx_argnames, &__pyx_v_f, &__pyx_v_a, &__pyx_v_b, &__pyx_v_eps))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L2;} } goto __pyx_L3; __pyx_L2:; __Pyx_AddTraceback("_Users_was_notebook_misc_worksheets_admin_142_code_sage670_spyx_0.bisect_cython"); return NULL; __pyx_L3:; return; __pyx_L1:; __Pyx_AddTraceback("_Users_was_notebook_misc_worksheets_admin_142_code_sage670_spyx_0"); }
10: cdef double two = 2, fa, fb, fc, c, dm, fabs
__pyx_v_two = 2;
11: cdef int iterations = 0
__pyx_v_iterations = 0;
12: fa = fcoerce(acoerce); fb = fcoerce(bcoerce)
__pyx_1 = PyFloat_FromDouble(__pyx_v_a); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1;} __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_2, 0, __pyx_1); __pyx_1 = 0; __pyx_1 = PyObject_Call(__pyx_v_f, ((PyObject *)__pyx_2), NULL); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1;} Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0; __pyx_3 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1;} Py_DECREF(__pyx_1); __pyx_1 = 0; __pyx_v_fa = __pyx_3; __pyx_2 = PyFloat_FromDouble(__pyx_v_b); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1;} __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_1, 0, __pyx_2); __pyx_2 = 0; __pyx_2 = PyObject_Call(__pyx_v_f, ((PyObject *)__pyx_1), NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1;} Py_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0; __pyx_3 = __pyx_PyFloat_AsDouble(__pyx_2); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1;} Py_DECREF(__pyx_2); __pyx_2 = 0; __pyx_v_fb = __pyx_3;
13: while 1:
while (1) { __pyx_4 = 1; if (!__pyx_4) break;
14: iterations += 1
__pyx_v_iterations += 1;
15: c = (a+b)/two
__pyx_v_c = ((__pyx_v_a + __pyx_v_b) / __pyx_v_two);
16: fc = fcoerce(ccoerce)
__pyx_1 = PyFloat_FromDouble(__pyx_v_c); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1;} __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_2, 0, __pyx_1); __pyx_1 = 0; __pyx_1 = PyObject_Call(__pyx_v_f, ((PyObject *)__pyx_2), NULL); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1;} Py_DECREF(((PyObject *)__pyx_2)); __pyx_2 = 0; __pyx_3 = __pyx_PyFloat_AsDouble(__pyx_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1;} Py_DECREF(__pyx_1); __pyx_1 = 0; __pyx_v_fc = __pyx_3;
17: fabs = -fc if fc < 0 else fc
if ((__pyx_v_fc < 0)) { __pyx_3 = (-__pyx_v_fc); } else { __pyx_3 = __pyx_v_fc; } __pyx_v_fabs = __pyx_3;
18: if fabs < eps: return ccoerce, iterationscoerce
__pyx_5 = (__pyx_v_fabs < __pyx_v_eps); if (__pyx_5) { __pyx_2 = PyFloat_FromDouble(__pyx_v_c); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1;} __pyx_1 = PyInt_FromLong(__pyx_v_iterations); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1;} __pyx_6 = PyTuple_New(2); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_6, 0, __pyx_2); PyTuple_SET_ITEM(__pyx_6, 1, __pyx_1); __pyx_2 = 0; __pyx_1 = 0; __pyx_r = ((PyObject *)__pyx_6); __pyx_6 = 0; goto __pyx_L0; goto __pyx_L6; } __pyx_L6:;
19: if fa*fc < 0:
__pyx_5 = ((__pyx_v_fa * __pyx_v_fc) < 0); if (__pyx_5) {
20: a, b = a, c
__pyx_3 = __pyx_v_a; __pyx_7 = __pyx_v_c; __pyx_v_a = __pyx_3; __pyx_v_b = __pyx_7;
21: fb = fc
__pyx_v_fb = __pyx_v_fc; goto __pyx_L7; }
22: elif fc*fb < 0:
__pyx_5 = ((__pyx_v_fc * __pyx_v_fb) < 0); if (__pyx_5) {
23: a, b = c, b
__pyx_3 = __pyx_v_c; __pyx_7 = __pyx_v_b; __pyx_v_a = __pyx_3; __pyx_v_b = __pyx_7;
24: fa = fc
__pyx_v_fa = __pyx_v_fc; goto __pyx_L7; } /*else*/ {
25: else:
26: raise ValueError, "f must have a sign change in the interval (%s,%s)"%(acoerce,bcoerce)
__pyx_2 = __pyx_k_1p; Py_INCREF(__pyx_2); __pyx_1 = PyFloat_FromDouble(__pyx_v_a); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1;} __pyx_6 = PyFloat_FromDouble(__pyx_v_b); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1;} __pyx_8 = PyTuple_New(2); if (unlikely(!__pyx_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_8, 0, __pyx_1); PyTuple_SET_ITEM(__pyx_8, 1, __pyx_6); __pyx_1 = 0; __pyx_6 = 0; __pyx_1 = PyNumber_Remainder(__pyx_2, ((PyObject *)__pyx_8)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1;} Py_DECREF(__pyx_2); __pyx_2 = 0; Py_DECREF(((PyObject *)__pyx_8)); __pyx_8 = 0; __Pyx_Raise(__pyx_builtin_ValueError, __pyx_1, 0); Py_DECREF(__pyx_1); __pyx_1 = 0; {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1;} } __pyx_L7:; } __pyx_r = Py_None; Py_INCREF(Py_None); goto __pyx_L0; __pyx_L1:; Py_XDECREF(__pyx_1); Py_XDECREF(__pyx_2); Py_XDECREF(__pyx_6); Py_XDECREF(__pyx_8); __Pyx_AddTraceback("_Users_was_notebook_misc_worksheets_admin_142_code_sage670_spyx_0.bisect_cython"); __pyx_r = NULL; __pyx_L0:; return __pyx_r; }