Generated by Cython 0.12.1 on Sun Jul 18 10:58:16 2010
Raw output: _Users_wstein__sage_sage_notebook_sagenb_home_admin_478_code_sage69_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_cython4(unsigned long n):
static PyObject *__pyx_pf_74_Users_wstein__sage_sage_notebook_sagenb_home_admin_478_code_sage69_spyx_0_trial_division_cython4(PyObject *__pyx_self, PyObject *__pyx_arg_n); /*proto*/
static char __pyx_doc_74_Users_wstein__sage_sage_notebook_sagenb_home_admin_478_code_sage69_spyx_0_trial_division_cython4[] = "File: _Users_wstein__sage_sage_notebook_sagenb_home_admin_478_code_sage69_spyx_0.pyx (starting at line 6)";
static PyObject *__pyx_pf_74_Users_wstein__sage_sage_notebook_sagenb_home_admin_478_code_sage69_spyx_0_trial_division_cython4(PyObject *__pyx_self, PyObject *__pyx_arg_n) {
unsigned long __pyx_v_n;
unsigned long __pyx_v_dif[8];
unsigned long __pyx_v_m;
unsigned long __pyx_v_i;
PyObject *__pyx_r = NULL;
__Pyx_RefNannySetupContext("trial_division_cython4");
__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_sage69_spyx_0.trial_division_cython4");
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: if n%2==0: return 2
__pyx_t_1 = ((__pyx_v_n % 2) == 0);
if (__pyx_t_1) {
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_int_2);
__pyx_r = __pyx_int_2;
goto __pyx_L0;
goto __pyx_L6;
}
__pyx_L6:;
10: if n%3==0: return 3
__pyx_t_1 = ((__pyx_v_n % 3) == 0);
if (__pyx_t_1) {
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_int_3);
__pyx_r = __pyx_int_3;
goto __pyx_L0;
goto __pyx_L7;
}
__pyx_L7:;
11: if n%5==0: return 5
__pyx_t_1 = ((__pyx_v_n % 5) == 0);
if (__pyx_t_1) {
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_int_5);
__pyx_r = __pyx_int_5;
goto __pyx_L0;
goto __pyx_L8;
}
__pyx_L8:;
12: # Algorithm: only trial divide by numbers that
13: # are congruent to 1,7,11,13,17,29,23,29 mod 30=2*3*5.
14: cdef unsigned long dif[8]
15: 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;
16: cdef unsigned long m = 7, i = 1
__pyx_v_m = 7;
__pyx_v_i = 1;
17: while m*m <= n:
while (1) {
__pyx_t_1 = ((__pyx_v_m * __pyx_v_m) <= __pyx_v_n);
if (!__pyx_t_1) break;
18: 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 = 18; __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_2 = PyLong_FromUnsignedLong(__pyx_v_m); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
goto __pyx_L11;
}
__pyx_L11:;
19: m += dif[i%8]
__pyx_v_m += (__pyx_v_dif[(__pyx_v_i % 8)]);
20: i += 1
__pyx_v_i += 1;
}
21: return n
__Pyx_XDECREF(__pyx_r);
__pyx_t_2 = PyLong_FromUnsignedLong(__pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("_Users_wstein__sage_sage_notebook_sagenb_home_admin_478_code_sage69_spyx_0.trial_division_cython4");
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}