Generated by Cython 0.9.6.13 on Fri Apr 11 08:59:02 2008
Raw output: _Users_was__sage_sage_notebook_worksheets_admin_135_code_sage90_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 last_digits6(n, e, d):
static PyObject *__pyx_int_10; static PyObject *__pyx_n_Integers; static PyObject *__pyx_k_1p; static char __pyx_k_1[] = "0"; static PyObject *__pyx_pf_70_Users_was__sage_sage_notebook_worksheets_admin_135_code_sage90_spyx_0_last_digits6(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_70_Users_was__sage_sage_notebook_worksheets_admin_135_code_sage90_spyx_0_last_digits6[] = "File: _Users_was__sage_sage_notebook_worksheets_admin_135_code_sage90_spyx_0.pyx (starting at line 6)\n\n Return the last d digits of n^e.\n "; static PyObject *__pyx_pf_70_Users_was__sage_sage_notebook_worksheets_admin_135_code_sage90_spyx_0_last_digits6(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_n = 0; PyObject *__pyx_v_e = 0; PyObject *__pyx_v_d = 0; PyObject *__pyx_v_m; PyObject *__pyx_v_s; PyObject *__pyx_v_t; PyObject *__pyx_r; PyObject *__pyx_1 = 0; PyObject *__pyx_2 = 0; PyObject *__pyx_3 = 0; Py_ssize_t __pyx_4 = 0; PyObject *__pyx_5 = 0; static char *__pyx_argnames[] = {"n","e","d",0}; if (likely(!__pyx_kwds) && likely(PyTuple_GET_SIZE(__pyx_args) == 3)) { __pyx_v_n = PyTuple_GET_ITEM(__pyx_args, 0); __pyx_v_e = PyTuple_GET_ITEM(__pyx_args, 1); __pyx_v_d = PyTuple_GET_ITEM(__pyx_args, 2); } else { if (unlikely(!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OOO", __pyx_argnames, &__pyx_v_n, &__pyx_v_e, &__pyx_v_d))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; goto __pyx_L2;} } goto __pyx_L3; __pyx_L2:; __Pyx_AddTraceback("_Users_was__sage_sage_notebook_worksheets_admin_135_code_sage90_spyx_0.last_digits6"); return NULL; __pyx_L3:; __pyx_v_m = Py_None; Py_INCREF(Py_None); __pyx_v_s = Py_None; Py_INCREF(Py_None); __pyx_v_t = Py_None; Py_INCREF(Py_None); return; __Pyx_AddTraceback("_Users_was__sage_sage_notebook_worksheets_admin_135_code_sage90_spyx_0"); }
7: """
8: Return the last d digits of n^e.
9: """
10: m = Integers(10**d)(n) # IMPORTANT: no preparsing in Cython, so use ** instead of ^!
__pyx_1 = __Pyx_GetName(__pyx_i, __pyx_n_Integers); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; goto __pyx_L1;} __pyx_2 = __pyx_int_10; Py_INCREF(__pyx_2); __pyx_3 = PyNumber_Power(__pyx_2, __pyx_v_d, Py_None); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; goto __pyx_L1;} Py_DECREF(__pyx_2); __pyx_2 = 0; __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_2, 0, __pyx_3); __pyx_3 = 0; __pyx_3 = PyObject_Call(__pyx_1, __pyx_2, NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; goto __pyx_L1;} Py_DECREF(__pyx_1); __pyx_1 = 0; Py_DECREF(__pyx_2); __pyx_2 = 0; __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; goto __pyx_L1;} Py_INCREF(__pyx_v_n); PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_n); __pyx_2 = PyObject_Call(__pyx_3, __pyx_1, NULL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 10; goto __pyx_L1;} Py_DECREF(__pyx_3); __pyx_3 = 0; Py_DECREF(__pyx_1); __pyx_1 = 0; Py_DECREF(__pyx_v_m); __pyx_v_m = __pyx_2; __pyx_2 = 0;
11: s = m ** e
__pyx_3 = __pyx_v_m; Py_INCREF(__pyx_3); __pyx_1 = PyNumber_Power(__pyx_3, __pyx_v_e, Py_None); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 11; goto __pyx_L1;} Py_DECREF(__pyx_3); __pyx_3 = 0; Py_DECREF(__pyx_v_s); __pyx_v_s = __pyx_1; __pyx_1 = 0;
12: t = str(s)
__pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; goto __pyx_L1;} Py_INCREF(__pyx_v_s); PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_s); __pyx_3 = PyObject_Call(((PyObject*)&PyString_Type), __pyx_2, NULL); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; goto __pyx_L1;} Py_DECREF(__pyx_2); __pyx_2 = 0; Py_DECREF(__pyx_v_t); __pyx_v_t = __pyx_3; __pyx_3 = 0;
13: t = '0'*(d-lencoerce(t)) + t
__pyx_1 = __pyx_k_1p; Py_INCREF(__pyx_1); __pyx_2 = __pyx_v_d; Py_INCREF(__pyx_2); __pyx_4 = PyObject_Length(__pyx_v_t); if (unlikely(__pyx_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; goto __pyx_L1;} __pyx_3 = PyInt_FromSsize_t(__pyx_4); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; goto __pyx_L1;} __pyx_5 = PyNumber_Subtract(__pyx_2, __pyx_3); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; goto __pyx_L1;} Py_DECREF(__pyx_2); __pyx_2 = 0; Py_DECREF(__pyx_3); __pyx_3 = 0; __pyx_2 = PyNumber_Multiply(__pyx_1, __pyx_5); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; goto __pyx_L1;} Py_DECREF(__pyx_1); __pyx_1 = 0; Py_DECREF(__pyx_5); __pyx_5 = 0; __pyx_3 = PyNumber_Add(__pyx_2, __pyx_v_t); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; goto __pyx_L1;} Py_DECREF(__pyx_2); __pyx_2 = 0; Py_DECREF(__pyx_v_t); __pyx_v_t = __pyx_3; __pyx_3 = 0;
14: return t
Py_INCREF(__pyx_v_t); __pyx_r = __pyx_v_t; goto __pyx_L0; __pyx_r = Py_None; Py_INCREF(Py_None); goto __pyx_L0; __pyx_L1:; Py_XDECREF(__pyx_1); Py_XDECREF(__pyx_2); Py_XDECREF(__pyx_3); Py_XDECREF(__pyx_5); __Pyx_AddTraceback("_Users_was__sage_sage_notebook_worksheets_admin_135_code_sage90_spyx_0.last_digits6"); __pyx_r = NULL; __pyx_L0:; Py_DECREF(__pyx_v_m); Py_DECREF(__pyx_v_s); Py_DECREF(__pyx_v_t); return __pyx_r; }