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;
}