From d1a084363e7f44b39cc649396f6f879b13f74209 Mon Sep 17 00:00:00 2001 From: Danila Fedorin Date: Fri, 4 Aug 2017 14:29:24 -0700 Subject: [PATCH] Format code. --- .../org/nwapw/abacus/fx/AbacusController.java | 27 +- .../nwapw/abacus/plugin/StandardPlugin.java | 246 +++++++++--------- .../org/nwapw/abacus/tree/BinaryNode.java | 4 +- .../org/nwapw/abacus/tree/FunctionNode.java | 6 +- .../java/org/nwapw/abacus/tree/UnaryNode.java | 4 +- src/main/resources/abacus.fxml | 17 +- 6 files changed, 152 insertions(+), 152 deletions(-) diff --git a/src/main/java/org/nwapw/abacus/fx/AbacusController.java b/src/main/java/org/nwapw/abacus/fx/AbacusController.java index a3262b7..85846a4 100644 --- a/src/main/java/org/nwapw/abacus/fx/AbacusController.java +++ b/src/main/java/org/nwapw/abacus/fx/AbacusController.java @@ -87,7 +87,7 @@ public class AbacusController implements PluginListener { private ObservableList numberImplementationOptions; /** -<<<<<<< HEAD + * <<<<<<< HEAD * The list of plugin objects that can be toggled on and off, * and, when reloaded, get added to the plugin manager's black list. */ @@ -186,10 +186,10 @@ public class AbacusController implements PluginListener { } @FXML - private void performCalculation(){ - Runnable calculator = new Runnable(){ + private void performCalculation() { + Runnable calculator = new Runnable() { public void run() { - if(delay>0) { + if (delay > 0) { Runnable timer = new Runnable() { public void run() { long gap = (long) (delay * 1000); @@ -207,16 +207,16 @@ public class AbacusController implements PluginListener { Platform.runLater(() -> inputButton.setDisable(true)); TreeNode constructedTree = abacus.parseString(inputField.getText()); if (constructedTree == null) { - Platform.runLater(() ->outputText.setText(ERR_SYNTAX)); + Platform.runLater(() -> outputText.setText(ERR_SYNTAX)); Platform.runLater(() -> inputButton.setDisable(false)); //return; - }else { + } else { NumberInterface evaluatedNumber = abacus.evaluateTree(constructedTree); if (evaluatedNumber == null) { - if(Thread.currentThread().isInterrupted()){ + if (Thread.currentThread().isInterrupted()) { Platform.runLater(() -> outputText.setText(ERR_STOP)); Platform.runLater(() -> inputButton.setDisable(false)); - }else { + } else { Platform.runLater(() -> outputText.setText(ERR_EVAL)); Platform.runLater(() -> inputButton.setDisable(false)); //return; @@ -232,14 +232,15 @@ public class AbacusController implements PluginListener { calculating = false; } }; - if(!calculating) { - calcThread = new Thread(calculator); - calcThread.setName("calcThread"); - calcThread.start(); + if (!calculating) { + calcThread = new Thread(calculator); + calcThread.setName("calcThread"); + calcThread.start(); } } + @FXML - private void stopCalculation(){ + private void stopCalculation() { calcThread.interrupt(); calculating = false; //Platform.runLater(() ->inputButton.setDisable(false)); diff --git a/src/main/java/org/nwapw/abacus/plugin/StandardPlugin.java b/src/main/java/org/nwapw/abacus/plugin/StandardPlugin.java index 85387ab..dcbbf99 100755 --- a/src/main/java/org/nwapw/abacus/plugin/StandardPlugin.java +++ b/src/main/java/org/nwapw/abacus/plugin/StandardPlugin.java @@ -29,12 +29,12 @@ public class StandardPlugin extends Plugin { @Override protected NumberInterface applyInternal(NumberInterface[] params) { - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; NumberInterface sum = params[0]; for (int i = 1; i < params.length; i++) { sum = sum.add(params[i]); - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; } return sum; @@ -51,7 +51,7 @@ public class StandardPlugin extends Plugin { @Override protected NumberInterface applyInternal(NumberInterface[] params) { - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; return params[0].subtract(params[1]); @@ -68,7 +68,7 @@ public class StandardPlugin extends Plugin { @Override protected NumberInterface applyInternal(NumberInterface[] params) { - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; return params[0].negate(); } @@ -84,12 +84,12 @@ public class StandardPlugin extends Plugin { @Override protected NumberInterface applyInternal(NumberInterface[] params) { - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; NumberInterface product = params[0]; for (int i = 1; i < params.length; i++) { product = product.multiply(params[i]); - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; } return product; @@ -106,7 +106,7 @@ public class StandardPlugin extends Plugin { @Override protected NumberInterface applyInternal(NumberInterface[] params) { - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; return params[0].divide(params[1]); } @@ -125,7 +125,7 @@ public class StandardPlugin extends Plugin { @Override protected NumberInterface applyInternal(NumberInterface[] params) { - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; if (params[0].signum() == 0) { return (new NaiveNumber(1)).promoteTo(params[0].getClass()); @@ -133,10 +133,10 @@ public class StandardPlugin extends Plugin { NumberInterface factorial = params[0]; NumberInterface multiplier = params[0]; //It is necessary to later prevent calls of factorial on anything but non-negative integers. - while (!Thread.currentThread().isInterrupted()&&(multiplier = multiplier.subtract(NaiveNumber.ONE.promoteTo(multiplier.getClass())))!=null&&multiplier.signum() == 1) { + while (!Thread.currentThread().isInterrupted() && (multiplier = multiplier.subtract(NaiveNumber.ONE.promoteTo(multiplier.getClass()))) != null && multiplier.signum() == 1) { factorial = factorial.multiply(multiplier); } - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; return factorial; /*if(!storedList.containsKey(params[0].getClass())){ @@ -147,32 +147,6 @@ public class StandardPlugin extends Plugin { } }); /** -<<<<<<< HEAD -======= - * The caret / pow operator, ^ - */ - public static final Operator OP_CARET = new Operator(OperatorAssociativity.RIGHT, OperatorType.BINARY_INFIX, 2, new Function() { - @Override - protected boolean matchesParams(NumberInterface[] params) { - return params.length == 2 - && !(params[0].compareTo(NaiveNumber.ZERO.promoteTo(params[0].getClass())) == 0 - && params[1].compareTo(NaiveNumber.ZERO.promoteTo(params[1].getClass())) == 0); - } - - @Override - protected NumberInterface applyInternal(NumberInterface[] params) { - NumberInterface check; - if(Thread.currentThread().isInterrupted()) return null; - else if (params[0].compareTo(NaiveNumber.ZERO.promoteTo(params[0].getClass())) == 0) - return NaiveNumber.ZERO.promoteTo(params[0].getClass()); - else if (params[1].compareTo(NaiveNumber.ZERO.promoteTo(params[0].getClass())) == 0) - return NaiveNumber.ONE.promoteTo(params[1].getClass()); - if((check = FUNCTION_EXP.apply(FUNCTION_LN.apply(params[0])))!=null&&(check = check.multiply(params[1]))!=null) - return check; - return null; - } - }); - /** * The absolute value function, abs(-3) = 3 */ public static final Function FUNCTION_ABS = new Function() { @@ -183,53 +157,11 @@ public class StandardPlugin extends Plugin { @Override protected NumberInterface applyInternal(NumberInterface[] params) { - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; return params[0].multiply((new NaiveNumber(params[0].signum())).promoteTo(params[0].getClass())); } }; - /** - * The exponential function, exp(1) = e^1 = 2.71... - */ - public static final Function FUNCTION_EXP = new Function() { - @Override - protected boolean matchesParams(NumberInterface[] params) { - return params.length == 1; - } - - @Override - protected NumberInterface applyInternal(NumberInterface[] params) { - NumberInterface maxError = getMaxError(params[0]); - int n = 0; - if (params[0].signum() <= 0) { - NumberInterface currentTerm = NaiveNumber.ONE.promoteTo(params[0].getClass()), sum = currentTerm; - while (FUNCTION_ABS.apply(currentTerm).compareTo(maxError) > 0) { - n++; - currentTerm = currentTerm.multiply(params[0]).divide((new NaiveNumber(n)).promoteTo(params[0].getClass())); - sum = sum.add(currentTerm); - } - return sum; - } else { - //We need n such that x^(n+1) * 3^ceil(x) <= maxError * (n+1)!. - //right and left refer to lhs and rhs in the above inequality. - NumberInterface sum = NaiveNumber.ONE.promoteTo(params[0].getClass()); - NumberInterface nextNumerator = params[0]; - NumberInterface left = params[0].multiply((new NaiveNumber(3)).promoteTo(params[0].getClass()).intPow(params[0].ceiling().intValue())), right = maxError; - do { - sum = sum.add(nextNumerator.divide(factorial(params[0].getClass(), n + 1))); - n++; - nextNumerator = nextNumerator.multiply(params[0]); - left = left.multiply(params[0]); - NumberInterface nextN = (new NaiveNumber(n + 1)).promoteTo(params[0].getClass()); - right = right.multiply(nextN); - //System.out.println(left + ", " + right); - } - while (left.compareTo(right) > 0); - //System.out.println(n+1); - return sum; - } - } - }; /** * The natural log function. */ @@ -241,31 +173,31 @@ public class StandardPlugin extends Plugin { @Override protected NumberInterface applyInternal(NumberInterface[] params) { - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; NumberInterface param = params[0]; int powersOf2 = 0; NumberInterface check; - while (!Thread.currentThread().isInterrupted()&&(check = FUNCTION_ABS.apply(param.subtract(NaiveNumber.ONE.promoteTo(param.getClass()))))!=null&&(check.compareTo((new NaiveNumber(0.1)).promoteTo(param.getClass()))) >= 0) { - if ((check = param.subtract(NaiveNumber.ONE.promoteTo(param.getClass())))!=null&&check.signum() == 1) { + while (!Thread.currentThread().isInterrupted() && (check = FUNCTION_ABS.apply(param.subtract(NaiveNumber.ONE.promoteTo(param.getClass())))) != null && (check.compareTo((new NaiveNumber(0.1)).promoteTo(param.getClass()))) >= 0) { + if ((check = param.subtract(NaiveNumber.ONE.promoteTo(param.getClass()))) != null && check.signum() == 1) { param = param.divide(new NaiveNumber(2).promoteTo(param.getClass())); powersOf2++; - if ((check = param.subtract(NaiveNumber.ONE.promoteTo(param.getClass())))==null||check.signum() != 1) { + if ((check = param.subtract(NaiveNumber.ONE.promoteTo(param.getClass()))) == null || check.signum() != 1) { break; //No infinite loop for you. } } else { param = param.multiply(new NaiveNumber(2).promoteTo(param.getClass())); powersOf2--; - if ((check = param.subtract(NaiveNumber.ONE.promoteTo(param.getClass())))==null||check.signum() != 1) { + if ((check = param.subtract(NaiveNumber.ONE.promoteTo(param.getClass()))) == null || check.signum() != 1) { break; //No infinite loop for you. } } } NumberInterface check2; - if(!Thread.currentThread().isInterrupted()&&(check = getLog2(param))!=null&&(check = check.multiply((new NaiveNumber(powersOf2).promoteTo(param.getClass()))))!=null&&(check2 = getLogPartialSum(param))!=null&&(check = check.add(check2))!=null) - return check; + if (!Thread.currentThread().isInterrupted() && (check = getLog2(param)) != null && (check = check.multiply((new NaiveNumber(powersOf2).promoteTo(param.getClass())))) != null && (check2 = getLogPartialSum(param)) != null && (check = check.add(check2)) != null) + return check; return null; } @@ -277,21 +209,21 @@ public class StandardPlugin extends Plugin { */ private NumberInterface getLogPartialSum(NumberInterface x) { - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; NumberInterface maxError = getMaxError(x); x = x.subtract(NaiveNumber.ONE.promoteTo(x.getClass())); //Terms used are for log(x+1). NumberInterface currentNumerator = x, currentTerm = x, sum = x; int n = 1; NumberInterface check; - while (!Thread.currentThread().isInterrupted()&&(check = FUNCTION_ABS.apply(currentTerm))!=null&&check.compareTo(maxError) > 0) { + while (!Thread.currentThread().isInterrupted() && (check = FUNCTION_ABS.apply(currentTerm)) != null && check.compareTo(maxError) > 0) { n++; - if((currentNumerator = currentNumerator.multiply(x))==null||(currentNumerator = currentNumerator.negate())==null) + if ((currentNumerator = currentNumerator.multiply(x)) == null || (currentNumerator = currentNumerator.negate()) == null) return null; currentTerm = currentNumerator.divide(new NaiveNumber(n).promoteTo(x.getClass())); sum = sum.add(currentTerm); } - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; return sum; } @@ -302,7 +234,7 @@ public class StandardPlugin extends Plugin { * @return the value of log(2) with the appropriate precision. */ private NumberInterface getLog2(NumberInterface number) { - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; NumberInterface maxError = getMaxError(number); //NumberInterface errorBound = (new NaiveNumber(1)).promoteTo(number.getClass()); @@ -312,16 +244,16 @@ public class StandardPlugin extends Plugin { NumberInterface a = (new NaiveNumber(1)).promoteTo(number.getClass()), b = a, c = a; NumberInterface sum = NaiveNumber.ZERO.promoteTo(number.getClass()); int n = 0; - while (!Thread.currentThread().isInterrupted()&&a.compareTo(maxError) >= 1) { + while (!Thread.currentThread().isInterrupted() && a.compareTo(maxError) >= 1) { n++; a = a.divide((new NaiveNumber(3)).promoteTo(number.getClass())); b = b.divide((new NaiveNumber(4)).promoteTo(number.getClass())); c = NaiveNumber.ONE.promoteTo(number.getClass()).divide((new NaiveNumber(n)).promoteTo(number.getClass())); NumberInterface check; - if(a==null||(check = a.add(b))==null||(check = check.multiply(c))==null||(sum = sum.add(check))==null) + if (a == null || (check = a.add(b)) == null || (check = check.multiply(c)) == null || (sum = sum.add(check)) == null) return null; } - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; return sum; } @@ -391,6 +323,74 @@ public class StandardPlugin extends Plugin { } }; private static final HashMap, ArrayList> FACTORIAL_LISTS = new HashMap<>(); + /** + * The exponential function, exp(1) = e^1 = 2.71... + */ + public static final Function FUNCTION_EXP = new Function() { + @Override + protected boolean matchesParams(NumberInterface[] params) { + return params.length == 1; + } + + @Override + protected NumberInterface applyInternal(NumberInterface[] params) { + NumberInterface maxError = getMaxError(params[0]); + int n = 0; + if (params[0].signum() <= 0) { + NumberInterface currentTerm = NaiveNumber.ONE.promoteTo(params[0].getClass()), sum = currentTerm; + while (FUNCTION_ABS.apply(currentTerm).compareTo(maxError) > 0) { + n++; + currentTerm = currentTerm.multiply(params[0]).divide((new NaiveNumber(n)).promoteTo(params[0].getClass())); + sum = sum.add(currentTerm); + } + return sum; + } else { + //We need n such that x^(n+1) * 3^ceil(x) <= maxError * (n+1)!. + //right and left refer to lhs and rhs in the above inequality. + NumberInterface sum = NaiveNumber.ONE.promoteTo(params[0].getClass()); + NumberInterface nextNumerator = params[0]; + NumberInterface left = params[0].multiply((new NaiveNumber(3)).promoteTo(params[0].getClass()).intPow(params[0].ceiling().intValue())), right = maxError; + do { + sum = sum.add(nextNumerator.divide(factorial(params[0].getClass(), n + 1))); + n++; + nextNumerator = nextNumerator.multiply(params[0]); + left = left.multiply(params[0]); + NumberInterface nextN = (new NaiveNumber(n + 1)).promoteTo(params[0].getClass()); + right = right.multiply(nextN); + //System.out.println(left + ", " + right); + } + while (left.compareTo(right) > 0); + //System.out.println(n+1); + return sum; + } + } + }; + /** + * <<<<<<< HEAD + * ======= + * The caret / pow operator, ^ + */ + public static final Operator OP_CARET = new Operator(OperatorAssociativity.RIGHT, OperatorType.BINARY_INFIX, 2, new Function() { + @Override + protected boolean matchesParams(NumberInterface[] params) { + return params.length == 2 + && !(params[0].compareTo(NaiveNumber.ZERO.promoteTo(params[0].getClass())) == 0 + && params[1].compareTo(NaiveNumber.ZERO.promoteTo(params[1].getClass())) == 0); + } + + @Override + protected NumberInterface applyInternal(NumberInterface[] params) { + NumberInterface check; + if (Thread.currentThread().isInterrupted()) return null; + else if (params[0].compareTo(NaiveNumber.ZERO.promoteTo(params[0].getClass())) == 0) + return NaiveNumber.ZERO.promoteTo(params[0].getClass()); + else if (params[1].compareTo(NaiveNumber.ZERO.promoteTo(params[0].getClass())) == 0) + return NaiveNumber.ONE.promoteTo(params[1].getClass()); + if ((check = FUNCTION_EXP.apply(FUNCTION_LN.apply(params[0]))) != null && (check = check.multiply(params[1])) != null) + return check; + return null; + } + }); /** * The sine function (the argument is interpreted in radians). */ @@ -525,21 +525,21 @@ public class StandardPlugin extends Plugin { * @param n non-negative integer. * @return a number of numClass with value n factorial. */ - public static NumberInterface factorial(Class numberClass, int n){ - if(Thread.currentThread().isInterrupted()) + public static NumberInterface factorial(Class numberClass, int n) { + if (Thread.currentThread().isInterrupted()) return null; - if(!FACTORIAL_LISTS.containsKey(numberClass)){ + if (!FACTORIAL_LISTS.containsKey(numberClass)) { FACTORIAL_LISTS.put(numberClass, new ArrayList<>()); FACTORIAL_LISTS.get(numberClass).add(NaiveNumber.ONE.promoteTo(numberClass)); FACTORIAL_LISTS.get(numberClass).add(NaiveNumber.ONE.promoteTo(numberClass)); } ArrayList list = FACTORIAL_LISTS.get(numberClass); - if(n >= list.size()){ - while(!Thread.currentThread().isInterrupted()&&list.size() < n + 16){ - list.add(list.get(list.size()-1).multiply(new NaiveNumber(list.size()).promoteTo(numberClass))); + if (n >= list.size()) { + while (!Thread.currentThread().isInterrupted() && list.size() < n + 16) { + list.add(list.get(list.size() - 1).multiply(new NaiveNumber(list.size()).promoteTo(numberClass))); } } - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; return list.get(n); } @@ -579,6 +579,28 @@ public class StandardPlugin extends Plugin { return theta; } + public static NumberInterface intPow(NumberInterface number, Class numberClass, NumberInterface exponent) { + if (Thread.currentThread().isInterrupted()) + return null; + if (exponent.compareTo((new NaiveNumber(0)).promoteTo(numberClass)) == 0) { + return (new NaiveNumber(1)).promoteTo(numberClass); + } + boolean takeReciprocal = exponent.compareTo((new NaiveNumber(0)).promoteTo(numberClass)) < 0; + exponent = FUNCTION_ABS.apply(exponent); + NumberInterface power = number; + for (NumberInterface currentExponent = (new NaiveNumber(1)).promoteTo(numberClass); currentExponent.compareTo(exponent) < 0; currentExponent = currentExponent.add((new NaiveNumber(1)).promoteTo(numberClass))) { + power = power.multiply(number); + if (Thread.currentThread().isInterrupted()) + return null; + } + if (takeReciprocal) { + power = (new NaiveNumber(1)).promoteTo(numberClass).divide(power); + } + if (Thread.currentThread().isInterrupted()) + return null; + return power; + } + @Override public void onEnable() { registerNumberImplementation("naive", IMPLEMENTATION_NAIVE); @@ -608,26 +630,4 @@ public class StandardPlugin extends Plugin { public void onDisable() { } - - public static NumberInterface intPow(NumberInterface number, Class numberClass,NumberInterface exponent) { - if(Thread.currentThread().isInterrupted()) - return null; - if (exponent.compareTo((new NaiveNumber(0)).promoteTo(numberClass))==0) { - return (new NaiveNumber(1)).promoteTo(numberClass); - } - boolean takeReciprocal = exponent.compareTo((new NaiveNumber(0)).promoteTo(numberClass))<0; - exponent = FUNCTION_ABS.apply(exponent); - NumberInterface power = number; - for(NumberInterface currentExponent =(new NaiveNumber(1)).promoteTo(numberClass);currentExponent.compareTo(exponent)<0;currentExponent = currentExponent.add((new NaiveNumber(1)).promoteTo(numberClass))){ - power = power.multiply(number); - if(Thread.currentThread().isInterrupted()) - return null; - } - if (takeReciprocal) { - power = (new NaiveNumber(1)).promoteTo(numberClass).divide(power); - } - if(Thread.currentThread().isInterrupted()) - return null; - return power; - } } diff --git a/src/main/java/org/nwapw/abacus/tree/BinaryNode.java b/src/main/java/org/nwapw/abacus/tree/BinaryNode.java index c165088..0ae6acf 100644 --- a/src/main/java/org/nwapw/abacus/tree/BinaryNode.java +++ b/src/main/java/org/nwapw/abacus/tree/BinaryNode.java @@ -92,13 +92,13 @@ public class BinaryNode extends TreeNode { @Override public T reduce(Reducer reducer) { - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; T leftReduce = left.reduce(reducer); T rightReduce = right.reduce(reducer); if (leftReduce == null || rightReduce == null) return null; T a = reducer.reduceNode(this, leftReduce, rightReduce); - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; return a; } diff --git a/src/main/java/org/nwapw/abacus/tree/FunctionNode.java b/src/main/java/org/nwapw/abacus/tree/FunctionNode.java index b685b1c..0f939c8 100644 --- a/src/main/java/org/nwapw/abacus/tree/FunctionNode.java +++ b/src/main/java/org/nwapw/abacus/tree/FunctionNode.java @@ -62,15 +62,15 @@ public class FunctionNode extends TreeNode { @Override public T reduce(Reducer reducer) { - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; Object[] reducedChildren = new Object[children.size()]; for (int i = 0; i < reducedChildren.length; i++) { reducedChildren[i] = children.get(i).reduce(reducer); - if (Thread.currentThread().isInterrupted()||reducedChildren[i] == null) return null; + if (Thread.currentThread().isInterrupted() || reducedChildren[i] == null) return null; } T a = reducer.reduceNode(this, reducedChildren); - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; return a; } diff --git a/src/main/java/org/nwapw/abacus/tree/UnaryNode.java b/src/main/java/org/nwapw/abacus/tree/UnaryNode.java index def2fd8..7956169 100644 --- a/src/main/java/org/nwapw/abacus/tree/UnaryNode.java +++ b/src/main/java/org/nwapw/abacus/tree/UnaryNode.java @@ -33,12 +33,12 @@ public class UnaryNode extends TreeNode { @Override public T reduce(Reducer reducer) { - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; Object reducedChild = applyTo.reduce(reducer); if (reducedChild == null) return null; T a = reducer.reduceNode(this, reducedChild); - if(Thread.currentThread().isInterrupted()) + if (Thread.currentThread().isInterrupted()) return null; return a; } diff --git a/src/main/resources/abacus.fxml b/src/main/resources/abacus.fxml index 94d6956..11ae276 100644 --- a/src/main/resources/abacus.fxml +++ b/src/main/resources/abacus.fxml @@ -2,14 +2,10 @@ - - + - - - -
@@ -46,13 +42,16 @@ - + + +