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