Generated by Cython 0.9.6.13 on Wed Apr 9 14:08:38 2008

Raw output: _Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_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 sqrt(double)
 8: 
 9: cdef class NaturalNumber:
 10:     cdef readonly int value
 11: 
 12:     def __init__(self, n):
static PyObject *__pyx_int_0;

static PyObject *__pyx_n_ValueError;

static PyObject *__pyx_k_1p;

static PyObject *__pyx_builtin_ValueError;

static char __pyx_k_1[] = "Value must not be negative: %s";

static int __pyx_pf_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_13NaturalNumber___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_13NaturalNumber___init__[] = "File: _Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0.pyx (starting at line 12)";
static int __pyx_pf_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_13NaturalNumber___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_n = 0;
  int __pyx_r;
  PyObject *__pyx_1 = 0;
  int __pyx_2;
  PyObject *__pyx_3 = 0;
  int __pyx_4;
  static char *__pyx_argnames[] = {"n",0};
  if (likely(!__pyx_kwds) && likely(PyTuple_GET_SIZE(__pyx_args) == 1)) {
    __pyx_v_n = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  else {
    if (unlikely(!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O", __pyx_argnames, &__pyx_v_n))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; goto __pyx_L2;}
  }
  goto __pyx_L3;
  __pyx_L2:;
  __Pyx_AddTraceback("_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0.NaturalNumber.__init__");
  return -1;
  __pyx_L3:;
 13:         if n coerce< 0:
  __pyx_1 = PyObject_RichCompare(__pyx_v_n, __pyx_int_0, Py_LT); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; goto __pyx_L1;}
  __pyx_2 = __Pyx_PyObject_IsTrue(__pyx_1); if (unlikely(__pyx_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; goto __pyx_L1;}
  Py_DECREF(__pyx_1); __pyx_1 = 0;
  if (__pyx_2) {
 14:             raise ValueError, "Value must not be negative: %s" % n
    __pyx_1 = __pyx_k_1p;
    Py_INCREF(__pyx_1);
    __pyx_3 = PyNumber_Remainder(__pyx_1, __pyx_v_n); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; goto __pyx_L1;}
    Py_DECREF(__pyx_1); __pyx_1 = 0;
    __Pyx_Raise(__pyx_builtin_ValueError, __pyx_3, 0);
    Py_DECREF(__pyx_3); __pyx_3 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; goto __pyx_L1;}
    goto __pyx_L4;
  }
  __pyx_L4:;
 15:         self.value = ncoerce
  __pyx_4 = __pyx_PyInt_int(__pyx_v_n); if (unlikely((__pyx_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; goto __pyx_L1;}
  ((struct __pyx_obj_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_NaturalNumber *)__pyx_v_self)->value = __pyx_4;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  Py_XDECREF(__pyx_1);
  Py_XDECREF(__pyx_3);
  __Pyx_AddTraceback("_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0.NaturalNumber.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}
 16: 
 17:     def __repr__(self):
static PyObject *__pyx_pf_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_13NaturalNumber___repr__(PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_13NaturalNumber___repr__[] = "File: _Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0.pyx (starting at line 17)";
static PyObject *__pyx_pf_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_13NaturalNumber___repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
 18:         return str(selfcoerce.value)
  __pyx_1 = PyInt_FromLong(((struct __pyx_obj_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_NaturalNumber *)__pyx_v_self)->value); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; goto __pyx_L1;}
  __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; goto __pyx_L1;}
  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_1);
  __pyx_1 = 0;
  __pyx_1 = PyObject_Call(((PyObject*)&PyString_Type), __pyx_2, NULL); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; goto __pyx_L1;}
  Py_DECREF(__pyx_2); __pyx_2 = 0;
  __pyx_r = __pyx_1;
  __pyx_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; Py_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1:;
  Py_XDECREF(__pyx_1);
  Py_XDECREF(__pyx_2);
  __Pyx_AddTraceback("_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0.NaturalNumber.__repr__");
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}
 19: 
 20:     def __add__(NaturalNumber left, NaturalNumber right):
static PyObject *__pyx_pf_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_13NaturalNumber___add__(PyObject *__pyx_v_left, PyObject *__pyx_v_right); /*proto*/
static char __pyx_doc_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_13NaturalNumber___add__[] = "File: _Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0.pyx (starting at line 20)";
static PyObject *__pyx_pf_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_13NaturalNumber___add__(PyObject *__pyx_v_left, PyObject *__pyx_v_right) {
  PyObject *__pyx_r;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left), __pyx_ptype_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_NaturalNumber, 1, "left"))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; goto __pyx_L1;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right), __pyx_ptype_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_NaturalNumber, 1, "right"))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; goto __pyx_L1;}
 21:         return NaturalNumber(left.value coerce+ right.value)
  __pyx_1 = PyInt_FromLong((((struct __pyx_obj_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_NaturalNumber *)__pyx_v_left)->value + ((struct __pyx_obj_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_NaturalNumber *)__pyx_v_right)->value)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;}
  __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;}
  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_1);
  __pyx_1 = 0;
  __pyx_1 = PyObject_Call(((PyObject*)__pyx_ptype_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_NaturalNumber), __pyx_2, NULL); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;}
  Py_DECREF(__pyx_2); __pyx_2 = 0;
  __pyx_r = __pyx_1;
  __pyx_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; Py_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1:;
  Py_XDECREF(__pyx_1);
  Py_XDECREF(__pyx_2);
  __Pyx_AddTraceback("_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0.NaturalNumber.__add__");
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}
 22: 
 23:     cdef bint is_even(self):
static  int __pyx_f_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_13NaturalNumber_is_even(struct __pyx_obj_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_NaturalNumber *__pyx_v_self) {
  int __pyx_r;
 24:         return self.value % 2 == 0
  __pyx_r = ((__pyx_v_self->value % 2) == 0);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}
 25: 
 26:     def is_odd(self):
static PyObject *__pyx_pf_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_13NaturalNumber_is_odd(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_13NaturalNumber_is_odd[] = "File: _Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0.pyx (starting at line 26)";
static PyObject *__pyx_pf_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_13NaturalNumber_is_odd(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r;
  PyObject *__pyx_1 = 0;
 27:         return coercenot self.is_even()
  __pyx_1 = __Pyx_PyBool_FromLong((!((struct __pyx_vtabstruct_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_NaturalNumber *)((struct __pyx_obj_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_NaturalNumber *)__pyx_v_self)->__pyx_vtab)->is_even(((struct __pyx_obj_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_NaturalNumber *)__pyx_v_self)))); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; goto __pyx_L1;}
  __pyx_r = __pyx_1;
  __pyx_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; Py_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1:;
  Py_XDECREF(__pyx_1);
  __Pyx_AddTraceback("_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0.NaturalNumber.is_odd");
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}
 28: 
 29:     cpdef is_square(self):
static PyObject *__pyx_pf_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_13NaturalNumber_is_square(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static  PyObject *__pyx_f_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_13NaturalNumber_is_square(struct __pyx_obj_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_NaturalNumber *__pyx_v_self) {
  int __pyx_v_a;
  PyObject *__pyx_r;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) __pyx_skip_dispatch = 0;
  /* Check if overriden in Python */
  else if (unlikely(((PyObject *)__pyx_v_self)->ob_type->tp_dictoffset != 0)) {
    __pyx_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_is_square); if (unlikely(!((PyObject *)__pyx_v_self))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; goto __pyx_L1;}
    if (!(strcmp(__pyx_1->ob_type->tp_name, "builtin_function_or_method") == 0) || (PyCFunction_GET_FUNCTION(__pyx_1) != (void *)&__pyx_pf_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_13NaturalNumber_is_square)) {
      __pyx_2 = PyObject_Call(__pyx_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; goto __pyx_L1;}
      Py_DECREF(__pyx_1); __pyx_1 = 0;
      __pyx_r = __pyx_2;
      __pyx_2 = 0;
      goto __pyx_L0;
    }
  }

static PyObject *__pyx_pf_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_13NaturalNumber_is_square(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_13NaturalNumber_is_square[] = "File: _Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0.pyx (starting at line 29)";
static PyObject *__pyx_pf_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_13NaturalNumber_is_square(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r;
  PyObject *__pyx_1 = 0;
  __pyx_1 = (__pyx_skip_dispatch = 1, ((struct __pyx_vtabstruct_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_NaturalNumber *)((struct __pyx_obj_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_NaturalNumber *)__pyx_v_self)->__pyx_vtab)->is_square(((struct __pyx_obj_73_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0_NaturalNumber *)__pyx_v_self))); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; goto __pyx_L1;}
  __pyx_r = __pyx_1;
  __pyx_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; Py_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1:;
  Py_XDECREF(__pyx_1);
  __Pyx_AddTraceback("_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0.NaturalNumber.is_square");
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}
  return;
  __Pyx_AddTraceback("_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0");
}
 30:         cdef int a = <int>sqrt(self.value)
  __pyx_v_a = ((int)sqrt(__pyx_v_self->value));

 31:         return a*a coerce== self.value
  __pyx_1 = __Pyx_PyBool_FromLong(((__pyx_v_a * __pyx_v_a) == __pyx_v_self->value)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; goto __pyx_L1;}
  __pyx_r = __pyx_1;
  __pyx_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; Py_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1:;
  Py_XDECREF(__pyx_1);
  Py_XDECREF(__pyx_2);
  __Pyx_AddTraceback("_Users_robert__sage_sage_notebook_worksheets_admin_10_code_sage210_spyx_0.NaturalNumber.is_square");
  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}