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)