diff --git a/res/layout/calc_eight_digit_button.xml b/res/layout/calc_eight_digit_button.xml index 11efb3e6..650dff8f 100644 --- a/res/layout/calc_eight_digit_button.xml +++ b/res/layout/calc_eight_digit_button.xml @@ -10,7 +10,7 @@ xmlns:calc="http://schemas.android.com/apk/res/org.solovyev.android.calculator" a:id="@+id/eightDigitButton" a:text="8" calc:textUp="ln" - calc:textDown="log" + calc:textDown="lg" calc:directionTextScale="0.5" style="?digitButtonStyle" diff --git a/src/main/java/org/solovyev/android/calculator/math/Functions.java b/src/main/java/org/solovyev/android/calculator/math/Functions.java index e847414f..cae14d1d 100644 --- a/src/main/java/org/solovyev/android/calculator/math/Functions.java +++ b/src/main/java/org/solovyev/android/calculator/math/Functions.java @@ -33,7 +33,7 @@ public class Functions { public final static String ATANH = "atanh"; public final static String LN = "ln"; - public final static String LOG = "log"; + public final static String LG = "lg"; public final static String MOD = "mod"; public final static String EXP = "exp"; @@ -43,7 +43,7 @@ public class Functions { public static final List allPrefix; static { - final List functions = new ArrayList(Arrays.asList(SIN, SINH, ASIN, ASINH, COS, COSH, ACOS, ACOSH, TAN, TANH, ATAN, ATANH, LN, LOG, MOD, SQRT, EXP)); + final List functions = new ArrayList(Arrays.asList(SIN, SINH, ASIN, ASINH, COS, COSH, ACOS, ACOSH, TAN, TANH, ATAN, ATANH, LN, LG, MOD, SQRT, EXP)); Collections.sort(functions, new MathEntityComparator()); allPrefix = functions; } diff --git a/src/main/java/org/solovyev/android/calculator/model/CalculatorEngine.java b/src/main/java/org/solovyev/android/calculator/model/CalculatorEngine.java index b4d334fa..719dd339 100644 --- a/src/main/java/org/solovyev/android/calculator/model/CalculatorEngine.java +++ b/src/main/java/org/solovyev/android/calculator/model/CalculatorEngine.java @@ -179,6 +179,8 @@ public enum CalculatorEngine { //Log.d(CalculatorEngine.class.getName(), "Calculation thread started work: " + thread.getName()); calculationThread.setObject(thread); calculationResult.setObject(finalOperation.evaluate(Expression.valueOf(jsclExpression))); + } catch (ArithmeticException e) { + exception.setObject(new ParseException(e)); } catch (jscl.text.ParseException e) { exception.setObject(new ParseException(e)); } catch (ParseInterruptedException e) { diff --git a/src/test/java/org/solovyev/android/calculator/model/CalculatorEngineTest.java b/src/test/java/org/solovyev/android/calculator/model/CalculatorEngineTest.java index c2991963..b09adc74 100644 --- a/src/test/java/org/solovyev/android/calculator/model/CalculatorEngineTest.java +++ b/src/test/java/org/solovyev/android/calculator/model/CalculatorEngineTest.java @@ -63,6 +63,7 @@ public class CalculatorEngineTest { public void testEvaluate() throws Exception { final CalculatorEngine cm = CalculatorEngine.instance; + Assert.assertEquals("1", cm.evaluate(JsclOperation.numeric, "lg(10)").getResult()); Assert.assertEquals("4", cm.evaluate(JsclOperation.numeric, "2+2").getResult()); Assert.assertEquals("-0.757", cm.evaluate(JsclOperation.numeric, "sin(4)").getResult()); Assert.assertEquals("0.524", cm.evaluate(JsclOperation.numeric, "asin(0.5)").getResult());