diff --git a/src/builtins/math.pir b/src/builtins/math.pir
index 476f456..315c21f 100644
--- a/src/builtins/math.pir
+++ b/src/builtins/math.pir
@@ -83,10 +83,16 @@ Returns the base 10 logarithm of $x.
 
 =cut
 
-.sub 'log10'
-    .param num a
-    $N0 = log10 a
+.sub 'log10' :multi(_)
+    .param pmc z
+    $I0 = isa z, 'Complex'
+    if $I0 goto complex
+    $N0 = z
+    $N0 = log10 $N0
     .return ($N0)
+   complex:
+    $P0 = z.'log10'()
+    .return ($P0)
 .end
 
 
diff --git a/src/classes/Complex.pir b/src/classes/Complex.pir
index df4b00f..e117acd 100644
--- a/src/classes/Complex.pir
+++ b/src/classes/Complex.pir
@@ -61,7 +61,6 @@ Returns the exponential of a Complex.
     .return ($P0)
 .end
 
-
 =item log
 
 Returns the logarithm of a Complex.
@@ -74,6 +73,30 @@ Returns the logarithm of a Complex.
     .return ($P0)
 .end
 
+=item log10
+
+Returns the base 10 logarithm of a Complex.
+
+=cut
+
+.sub 'log10' :method :multi('Complex')
+    .local num r
+    .local num theta
+    $P0   = self.'polar'()
+    $P1   = new 'Complex'
+    r     = $P0[0]
+    theta = $P0[1]
+    $N0   = ln 10
+    div theta, theta, $N0
+    $N1   = ln r
+    div $N1, $N1, $N0
+    $P1[0]= $N1
+    $P1[1]= theta
+    .return ($P1)
+    $P1 = $P0(self)
+    .return ($P1)
+.end
+
 =item polar
 
 Returns the polar representation of a Complex.
