Issue #19202:  Add cross-reference and a rough code equivalent
diff --git a/Doc/library/functools.rst b/Doc/library/functools.rst
index d8fcf0f..3c946e3 100644
--- a/Doc/library/functools.rst
+++ b/Doc/library/functools.rst
@@ -185,6 +185,18 @@
    a default when the sequence is empty.  If *initializer* is not given and
    *sequence* contains only one item, the first item is returned.
 
+   Equivalent to::
+
+      def reduce(function, iterable, initializer=None):
+          it = iter(iterable)
+          if initializer is None:
+              value = next(it)
+          else:
+              value = initializer
+          for element in it:
+              value = function(value, element)
+          return value
+
 
 .. function:: update_wrapper(wrapper, wrapped, assigned=WRAPPER_ASSIGNMENTS, updated=WRAPPER_UPDATES)
 
diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst
index 25f34bf..0156c05 100644
--- a/Doc/library/itertools.rst
+++ b/Doc/library/itertools.rst
@@ -135,6 +135,9 @@
        '0.93', '0.25', '0.71', '0.79', '0.63', '0.88', '0.39', '0.91', '0.32',
        '0.83', '0.54', '0.95', '0.20', '0.60', '0.91', '0.30', '0.80', '0.60']
 
+    See :func:`functools.reduce` for a similar function that returns only the
+    final accumulated value.
+
     .. versionadded:: 3.2
 
     .. versionchanged:: 3.3