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