diff --git a/src/rules/logarithmic.py b/src/rules/logarithmic.py
index 20b9c9c94ce5ed311d5fd112502d1fba18e0a679..565a0f4e97231db9cb52daf26c7b0266e3b785c9 100644
--- a/src/rules/logarithmic.py
+++ b/src/rules/logarithmic.py
@@ -253,10 +253,12 @@ def match_factor_out_exponent(node):
p.append(P(node, factor_out_exponent))
elif exp.is_numeric() and not exp.negated:
b, a = exp.value, base.value
- y = int(round(math.log(b, a)))
- if b == a ** y:
- p.append(P(node, make_raised_base, (y,)))
+ if not isinstance(a, str) and not isinstance(b, str):
+ y = int(round(math.log(b, a)))
+
+ if b == a ** y:
+ p.append(P(node, make_raised_base, (y,)))
return p
diff --git a/tests/test_rules_logarithmic.py b/tests/test_rules_logarithmic.py
index ec07663fef9d0852d4f50044d9e6b81be73b9867..ebb1cc1ab0ceb8a76e79398e471e46b062385555 100644
--- a/tests/test_rules_logarithmic.py
+++ b/tests/test_rules_logarithmic.py
@@ -11,7 +11,8 @@
# details.
#
# You should have received a copy of the GNU Affero General Public License
-# along with TRS. If not, see <http://www.gnu.org/licenses/>.
+import math
+
from src.rules.logarithmic import log, match_constant_logarithm, \
base_equals_raised, logarithm_of_one, divide_same_base, \
match_add_logarithms, add_logarithms, expand_negations, \
@@ -176,6 +177,13 @@ class TestRulesLogarithmic(RulesTestCase):
root = tree('log(99)')
self.assertEqualPos(match_factor_out_exponent(root), [])
+ def test_match_factor_out_exponent_make_raised_base_string(self):
+ root = tree('log_a(2)')
+ self.assertEqualPos(match_factor_out_exponent(root), [])
+
+ root = tree('log_e(%s)' % (math.e ** 2))
+ self.assertEqualPos(match_factor_out_exponent(root), [])
+
def test_split_negative_exponent(self):
root, expect = tree('log(a ^ -b), log((a ^ b) ^ -1)')
self.assertEqual(split_negative_exponent(root, ()), expect)