diff --git a/Doc/lib/libcmath.tex b/Doc/lib/libcmath.tex
index 77496bf..465c8fd 100644
--- a/Doc/lib/libcmath.tex
+++ b/Doc/lib/libcmath.tex
@@ -73,10 +73,12 @@
 Return the exponential value \code{e**\var{x}}.
 \end{funcdesc}
 
-\begin{funcdesc}{log}{x}
-Return the natural logarithm of \var{x}.
+\begin{funcdesc}{log}{x\optional{, base}}
+Returns the logarithm of \var{x} to the given \var{base}.
+If the \var{base} is not specified, returns the natural logarithm of \var{x}.
 There is one branch cut, from 0 along the negative real axis to
 -\infinity, continuous from above.
+\versionchanged[\var{base} argument added]{2.4}
 \end{funcdesc}
 
 \begin{funcdesc}{log10}{x}
diff --git a/Lib/test/test_cmath.py b/Lib/test/test_cmath.py
index c409699..6e39292 100755
--- a/Lib/test/test_cmath.py
+++ b/Lib/test/test_cmath.py
@@ -2,8 +2,25 @@
 """ Simple test script for cmathmodule.c
     Roger E. Masse
 """
-import cmath
-from test.test_support import verbose
+import cmath, math
+from test.test_support import verbose, verify, TestFailed
+
+verify(abs(cmath.log(10) - math.log(10)) < 1e-9)
+verify(abs(cmath.log(10,2) - math.log(10,2)) < 1e-9)
+try:
+    cmath.log('a')
+except TypeError:
+    pass
+else:
+    raise TestFailed
+
+try:
+    cmath.log(10, 'a')
+except TypeError:
+    pass
+else:
+    raise TestFailed
+
 
 testdict = {'acos' : 1.0,
             'acosh' : 1.0,
diff --git a/Misc/NEWS b/Misc/NEWS
index 20a1042..873022a 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -336,6 +336,9 @@
 Library
 -------
 
+- Bug #823209:  cmath.log() now takes an optional base argument so that its
+  API matches math.log().                                                                  
+
 - Bug #957381: distutils bdist_rpm no longer fails on recent RPM versions
   that generate a *-debuginfo.rpm.
 
diff --git a/Modules/cmathmodule.c b/Modules/cmathmodule.c
index 8faa6bf..78b9dd5 100644
--- a/Modules/cmathmodule.c
+++ b/Modules/cmathmodule.c
@@ -20,6 +20,7 @@
 static Py_complex c_log(Py_complex);
 static Py_complex c_prodi(Py_complex);
 static Py_complex c_sqrt(Py_complex);
+static PyObject * math_error(void);
 
 
 static Py_complex
@@ -164,11 +165,6 @@
 	return r;
 }
 
-PyDoc_STRVAR(c_log_doc,
-"log(x)\n"
-"\n"
-"Return the natural logarithm of x.");
-
 
 static Py_complex
 c_log10(Py_complex x)
@@ -312,6 +308,31 @@
 "\n"
 "Return the hyperbolic tangent of x.");
 
+static PyObject *
+cmath_log(PyObject *self, PyObject *args)
+{
+	Py_complex x;
+	Py_complex y;
+
+	if (!PyArg_ParseTuple(args, "D|D", &x, &y))
+		return NULL;
+
+	errno = 0;
+	PyFPE_START_PROTECT("complex function", return 0)
+	x = c_log(x);
+	if (PyTuple_GET_SIZE(args) == 2)
+		x = c_quot(x, c_log(y));
+	PyFPE_END_PROTECT(x)
+	if (errno != 0)
+		return math_error();
+	Py_ADJUST_ERANGE2(x.real, x.imag);
+	return PyComplex_FromCComplex(x);
+}
+
+PyDoc_STRVAR(cmath_log_doc,
+"log(x[, base]) -> the logarithm of x to the given base.\n\
+If the base not specified, returns the natural logarithm (base e) of x.");
+
 
 /* And now the glue to make them available from Python: */
 
@@ -358,7 +379,6 @@
 FUNC1(cmath_cos, c_cos)
 FUNC1(cmath_cosh, c_cosh)
 FUNC1(cmath_exp, c_exp)
-FUNC1(cmath_log, c_log)
 FUNC1(cmath_log10, c_log10)
 FUNC1(cmath_sin, c_sin)
 FUNC1(cmath_sinh, c_sinh)
@@ -381,7 +401,7 @@
 	{"cos",    cmath_cos,   METH_VARARGS, c_cos_doc},
 	{"cosh",   cmath_cosh,  METH_VARARGS, c_cosh_doc},
 	{"exp",    cmath_exp,   METH_VARARGS, c_exp_doc},
-	{"log",    cmath_log,   METH_VARARGS, c_log_doc},
+	{"log",    cmath_log,   METH_VARARGS, cmath_log_doc},
 	{"log10",  cmath_log10, METH_VARARGS, c_log10_doc},
 	{"sin",    cmath_sin,   METH_VARARGS, c_sin_doc},
 	{"sinh",   cmath_sinh,  METH_VARARGS, c_sinh_doc},
