# HG changeset patch
# User William Stein <wstein@gmail.com>
# Date 1180033157 25200
# Node ID 7e0109ba8847e8722ba910c0469813a51e842677
# Parent  c360987e049069938a338960ee4770419e6f23b9
Added cached one_element method.

diff -r c360987e0490 -r 7e0109ba8847 sage/rings/ring.pxd
--- a/sage/rings/ring.pxd	Wed May 23 15:57:47 2007 -0700
+++ b/sage/rings/ring.pxd	Thu May 24 11:59:17 2007 -0700
@@ -2,6 +2,7 @@ from sage.structure.parent_gens cimport 
 
 cdef class Ring(ParentWithGens):
     cdef public object _zero_element
+    cdef public object _one_element
     cdef public object _zero_ideal
     cdef public object _unit_ideal
     cdef _an_element_c_impl(self)
diff -r c360987e0490 -r 7e0109ba8847 sage/rings/ring.pyx
--- a/sage/rings/ring.pyx	Wed May 23 15:57:47 2007 -0700
+++ b/sage/rings/ring.pyx	Thu May 24 11:59:17 2007 -0700
@@ -264,6 +264,28 @@ cdef class Ring(ParentWithGens):
             self._zero_element = x
             return x
         return self._zero_element
+
+    def one_element(self):
+        """
+        Return the one element of this ring (cached), if it exists.
+
+        EXAMPLES:
+            sage: ZZ.one_element()
+            1
+            sage: QQ.one_element()
+            1
+            sage: QQ['x'].one_element()
+            1
+
+        The result is cached:
+            sage: ZZ.one_element() is ZZ.one_element()
+            True
+        """
+        if self._one_element is None:
+            x = self(1)
+            self._one_element = x
+            return x
+        return self._one_element
 
     def is_atomic_repr(self):
         """
