Repository: sympy/sympy

Issue:
log(100, 10, evaluate=False).evalf() != 2
```
>>> log(100, 10, evaluate=False).evalf()
4.60517018598809
```

This should be 2. It works if you don't add evaluate=False, so it might be related to that.

I'm using SymPy 3766b9ca505bb3645e81912b3cc883df73c7a32b

Discussion:

Patch:
diff --git a/sympy/core/evalf.py b/sympy/core/evalf.py
index 3e65cb7c6e..5c81d69c78 100644
--- a/sympy/core/evalf.py
+++ b/sympy/core/evalf.py
@@ -767,6 +767,9 @@ def evalf_trig(v, prec, options):
 
 def evalf_log(expr, prec, options):
     from sympy import Abs, Add, log
+    if len(expr.args)>1:
+        expr = expr.doit()
+        return evalf(expr, prec, options)
     arg = expr.args[0]
     workprec = prec + 10
     xre, xim, xacc, _ = evalf(arg, workprec, options)


Test patch:
diff --git a/sympy/core/tests/test_evalf.py b/sympy/core/tests/test_evalf.py
index ef121ba210..45730131f5 100644
--- a/sympy/core/tests/test_evalf.py
+++ b/sympy/core/tests/test_evalf.py
@@ -128,6 +128,7 @@ def test_evalf_logs():
     assert NS("log(3+pi*I)", 15) == '1.46877619736226 + 0.808448792630022*I'
     assert NS("log(pi*I)", 15) == '1.14472988584940 + 1.57079632679490*I'
     assert NS('log(-1 + 0.00001)', 2) == '-1.0e-5 + 3.1*I'
+    assert NS('log(100, 10, evaluate=False)', 15) == '2.00000000000000'
 
 
 def test_evalf_trig():