Generated by Cython 0.12.1 on Sun Jul 18 10:57:14 2010
Raw output: _Users_wstein__sage_sage_notebook_sagenb_home_admin_478_code_sage67_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: def trial_division_cython3(unsigned long n):
static PyObject *__pyx_pf_74_Users_wstein__sage_sage_notebook_sagenb_home_admin_478_code_sage67_spyx_0_trial_division_cython3(PyObject *__pyx_self, PyObject *__pyx_arg_n); /*proto*/ static char __pyx_doc_74_Users_wstein__sage_sage_notebook_sagenb_home_admin_478_code_sage67_spyx_0_trial_division_cython3[] = "File: _Users_wstein__sage_sage_notebook_sagenb_home_admin_478_code_sage67_spyx_0.pyx (starting at line 6)"; static PyObject *__pyx_pf_74_Users_wstein__sage_sage_notebook_sagenb_home_admin_478_code_sage67_spyx_0_trial_division_cython3(PyObject *__pyx_self, PyObject *__pyx_arg_n) { unsigned long __pyx_v_n; unsigned long __pyx_v_p; unsigned long __pyx_v_dif[8]; unsigned long __pyx_v_m; unsigned long __pyx_v_i; PyObject *__pyx_r = NULL; __Pyx_RefNannySetupContext("trial_division_cython3"); __pyx_self = __pyx_self; assert(__pyx_arg_n); { __pyx_v_n = __Pyx_PyInt_AsUnsignedLong(__pyx_arg_n); if (unlikely((__pyx_v_n == (unsigned long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; __Pyx_AddTraceback("_Users_wstein__sage_sage_notebook_sagenb_home_admin_478_code_sage67_spyx_0.trial_division_cython3"); return NULL; __pyx_L4_argument_unpacking_done:;
7: if n == 1: return 1
__pyx_t_1 = (__pyx_v_n == 1); if (__pyx_t_1) { __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_int_1); __pyx_r = __pyx_int_1; goto __pyx_L0; goto __pyx_L5; } __pyx_L5:;
8: cdef unsigned long p
9: for p in [2, 3, 5]:
__pyx_t_3 = PyList_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_3)); __Pyx_INCREF(__pyx_int_2); PyList_SET_ITEM(__pyx_t_3, 0, __pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); __Pyx_INCREF(__pyx_int_3); PyList_SET_ITEM(__pyx_t_3, 1, __pyx_int_3); __Pyx_GIVEREF(__pyx_int_3); __Pyx_INCREF(__pyx_int_5); PyList_SET_ITEM(__pyx_t_3, 2, __pyx_int_5); __Pyx_GIVEREF(__pyx_int_5); if (likely(((PyObject *)__pyx_t_3) != Py_None)) { __pyx_t_2 = 0; __pyx_t_4 = ((PyObject *)__pyx_t_3); __Pyx_INCREF(__pyx_t_4); } else { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; for (;;) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break; __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; __pyx_t_5 = __Pyx_PyInt_AsUnsignedLong(__pyx_t_3); if (unlikely((__pyx_t_5 == (unsigned long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_p = __pyx_t_5;
10: if n%p == 0: return p
if (unlikely(__pyx_v_p == 0)) { PyErr_Format(PyExc_ZeroDivisionError, "integer division or modulo by zero"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = ((__pyx_v_n % __pyx_v_p) == 0); if (__pyx_t_1) { __Pyx_XDECREF(__pyx_r); __pyx_t_3 = PyLong_FromUnsignedLong(__pyx_v_p); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L0; goto __pyx_L8; } __pyx_L8:; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
11: # Algorithm: only trial divide by numbers that
12: # are congruent to 1,7,11,13,17,29,23,29 mod 30=2*3*5.
13: cdef unsigned long dif[8]
14: dif[0]=6;dif[1]=4;dif[2]=2;dif[3]=4;dif[4]=2;dif[5]=4;dif[6]=6;dif[7]=2
(__pyx_v_dif[0]) = 6; (__pyx_v_dif[1]) = 4; (__pyx_v_dif[2]) = 2; (__pyx_v_dif[3]) = 4; (__pyx_v_dif[4]) = 2; (__pyx_v_dif[5]) = 4; (__pyx_v_dif[6]) = 6; (__pyx_v_dif[7]) = 2;
15: cdef unsigned long m = 7, i = 1
__pyx_v_m = 7; __pyx_v_i = 1;
16: while m*m <= n:
while (1) { __pyx_t_1 = ((__pyx_v_m * __pyx_v_m) <= __pyx_v_n); if (!__pyx_t_1) break;
17: if n%m == 0: return m
if (unlikely(__pyx_v_m == 0)) { PyErr_Format(PyExc_ZeroDivisionError, "integer division or modulo by zero"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = ((__pyx_v_n % __pyx_v_m) == 0); if (__pyx_t_1) { __Pyx_XDECREF(__pyx_r); __pyx_t_4 = PyLong_FromUnsignedLong(__pyx_v_m); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; goto __pyx_L11; } __pyx_L11:;
18: m += dif[i%8]
__pyx_v_m += (__pyx_v_dif[(__pyx_v_i % 8)]);
19: i += 1
__pyx_v_i += 1; }
20: return n
__Pyx_XDECREF(__pyx_r); __pyx_t_4 = PyLong_FromUnsignedLong(__pyx_v_n); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("_Users_wstein__sage_sage_notebook_sagenb_home_admin_478_code_sage67_spyx_0.trial_division_cython3"); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }