mirror of
				https://github.com/DanilaFe/abacus
				synced 2025-10-31 01:43:41 -07:00 
			
		
		
		
	Rename Function to NumberFunction.
This commit is contained in:
		
							parent
							
								
									d04adf4da5
								
							
						
					
					
						commit
						f83f2a7aaa
					
				| @ -6,6 +6,6 @@ import org.nwapw.abacus.number.NumberInterface; | ||||
|  * A function that operates on one or more | ||||
|  * inputs and returns a single number. | ||||
|  */ | ||||
| public abstract class Function extends Applicable<NumberInterface, NumberInterface> { | ||||
| public abstract class NumberFunction extends Applicable<NumberInterface, NumberInterface> { | ||||
| 
 | ||||
| } | ||||
| @ -1,7 +1,6 @@ | ||||
| package org.nwapw.abacus.plugin; | ||||
| 
 | ||||
| import org.nwapw.abacus.function.*; | ||||
| import org.nwapw.abacus.number.NaiveNumber; | ||||
| import org.nwapw.abacus.number.NumberInterface; | ||||
| 
 | ||||
| /** | ||||
| @ -63,7 +62,7 @@ public abstract class Plugin { | ||||
|      * @param name       the name to register by. | ||||
|      * @param toRegister the function implementation. | ||||
|      */ | ||||
|     protected final void registerFunction(String name, Function toRegister) { | ||||
|     protected final void registerFunction(String name, NumberFunction toRegister) { | ||||
|         manager.registerFunction(name, toRegister); | ||||
|     } | ||||
| 
 | ||||
| @ -119,7 +118,7 @@ public abstract class Plugin { | ||||
|      * @param name the name for which to search | ||||
|      * @return the resulting function, or null if none was found for that name. | ||||
|      */ | ||||
|     protected final Function functionFor(String name) { | ||||
|     protected final NumberFunction functionFor(String name) { | ||||
|         return manager.functionFor(name); | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -27,7 +27,7 @@ public class PluginManager { | ||||
|     /** | ||||
|      * The map of functions registered by the plugins. | ||||
|      */ | ||||
|     private Map<String, Function> registeredFunctions; | ||||
|     private Map<String, NumberFunction> registeredFunctions; | ||||
|     /** | ||||
|      * The map of tree value functions regstered by the plugins. | ||||
|      */ | ||||
| @ -88,7 +88,7 @@ public class PluginManager { | ||||
|      * @param name     the name of the function. | ||||
|      * @param function the function to register. | ||||
|      */ | ||||
|     public void registerFunction(String name, Function function) { | ||||
|     public void registerFunction(String name, NumberFunction function) { | ||||
|         registeredFunctions.put(name, function); | ||||
|     } | ||||
| 
 | ||||
| @ -138,7 +138,7 @@ public class PluginManager { | ||||
|      * @param name the name of the function. | ||||
|      * @return the function, or null if it was not found. | ||||
|      */ | ||||
|     public Function functionFor(String name) { | ||||
|     public NumberFunction functionFor(String name) { | ||||
|         return registeredFunctions.get(name); | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -4,9 +4,6 @@ import org.nwapw.abacus.function.*; | ||||
| import org.nwapw.abacus.number.NaiveNumber; | ||||
| import org.nwapw.abacus.number.NumberInterface; | ||||
| import org.nwapw.abacus.number.PreciseNumber; | ||||
| import org.nwapw.abacus.tree.BinaryNode; | ||||
| import org.nwapw.abacus.tree.Reducer; | ||||
| import org.nwapw.abacus.tree.TreeNode; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.HashMap; | ||||
| @ -231,7 +228,7 @@ public class StandardPlugin extends Plugin { | ||||
|     /** | ||||
|      * The absolute value function, abs(-3) = 3 | ||||
|      */ | ||||
|     public static final Function FUNCTION_ABS = new Function() { | ||||
|     public static final NumberFunction FUNCTION_ABS = new NumberFunction() { | ||||
|         @Override | ||||
|         protected boolean matchesParams(NumberInterface[] params) { | ||||
|             return params.length == 1; | ||||
| @ -245,7 +242,7 @@ public class StandardPlugin extends Plugin { | ||||
|     /** | ||||
|      * The natural log function. | ||||
|      */ | ||||
|     public static final Function FUNCTION_LN = new Function() { | ||||
|     public static final NumberFunction FUNCTION_LN = new NumberFunction() { | ||||
|         @Override | ||||
|         protected boolean matchesParams(NumberInterface[] params) { | ||||
|             return params.length == 1 && params[0].compareTo(fromInt(params[0].getClass(), 0)) > 0; | ||||
| @ -325,7 +322,7 @@ public class StandardPlugin extends Plugin { | ||||
|     /** | ||||
|      * Gets a random number smaller or equal to the given number's integer value. | ||||
|      */ | ||||
|     public static final Function FUNCTION_RAND_INT = new Function() { | ||||
|     public static final NumberFunction FUNCTION_RAND_INT = new NumberFunction() { | ||||
|         @Override | ||||
|         protected boolean matchesParams(NumberInterface[] params) { | ||||
|             return params.length == 1; | ||||
| @ -369,7 +366,7 @@ public class StandardPlugin extends Plugin { | ||||
|     /** | ||||
|      * The square root function. | ||||
|      */ | ||||
|     public static final Function FUNCTION_SQRT = new Function() { | ||||
|     public static final NumberFunction FUNCTION_SQRT = new NumberFunction() { | ||||
|         @Override | ||||
|         protected boolean matchesParams(NumberInterface[] params) { | ||||
|             return params.length == 1; | ||||
| @ -384,7 +381,7 @@ public class StandardPlugin extends Plugin { | ||||
|     /** | ||||
|      * The exponential function, exp(1) = e^1 = 2.71... | ||||
|      */ | ||||
|     public static final Function FUNCTION_EXP = new Function() { | ||||
|     public static final NumberFunction FUNCTION_EXP = new NumberFunction() { | ||||
|         @Override | ||||
|         protected boolean matchesParams(NumberInterface[] params) { | ||||
|             return params.length == 1; | ||||
| @ -421,7 +418,7 @@ public class StandardPlugin extends Plugin { | ||||
|     /** | ||||
|      * The sine function (the argument is interpreted in radians). | ||||
|      */ | ||||
|     public final Function functionSin = new Function() { | ||||
|     public final NumberFunction functionSin = new NumberFunction() { | ||||
|         @Override | ||||
|         protected boolean matchesParams(NumberInterface[] params) { | ||||
|             return params.length == 1; | ||||
| @ -445,7 +442,7 @@ public class StandardPlugin extends Plugin { | ||||
|     /** | ||||
|      * The cosine function (the argument is in radians). | ||||
|      */ | ||||
|     public final Function functionCos = new Function() { | ||||
|     public final NumberFunction functionCos = new NumberFunction() { | ||||
|         @Override | ||||
|         protected boolean matchesParams(NumberInterface[] params) { | ||||
|             return params.length == 1; | ||||
| @ -460,7 +457,7 @@ public class StandardPlugin extends Plugin { | ||||
|     /** | ||||
|      * The tangent function (the argument is in radians). | ||||
|      */ | ||||
|     public final Function functionTan = new Function() { | ||||
|     public final NumberFunction functionTan = new NumberFunction() { | ||||
|         @Override | ||||
|         protected boolean matchesParams(NumberInterface[] params) { | ||||
|             return params.length == 1; | ||||
| @ -474,7 +471,7 @@ public class StandardPlugin extends Plugin { | ||||
|     /** | ||||
|      * The secant function (the argument is in radians). | ||||
|      */ | ||||
|     public final Function functionSec = new Function() { | ||||
|     public final NumberFunction functionSec = new NumberFunction() { | ||||
|         @Override | ||||
|         protected boolean matchesParams(NumberInterface[] params) { | ||||
|             return params.length == 1; | ||||
| @ -488,7 +485,7 @@ public class StandardPlugin extends Plugin { | ||||
|     /** | ||||
|      * The cosecant function (the argument is in radians). | ||||
|      */ | ||||
|     public final Function functionCsc = new Function() { | ||||
|     public final NumberFunction functionCsc = new NumberFunction() { | ||||
|         @Override | ||||
|         protected boolean matchesParams(NumberInterface[] params) { | ||||
|             return params.length == 1; | ||||
| @ -502,7 +499,7 @@ public class StandardPlugin extends Plugin { | ||||
|     /** | ||||
|      * The cotangent function (the argument is in radians). | ||||
|      */ | ||||
|     public final Function functionCot = new Function() { | ||||
|     public final NumberFunction functionCot = new NumberFunction() { | ||||
|         @Override | ||||
|         protected boolean matchesParams(NumberInterface[] params) { | ||||
|             return params.length == 1; | ||||
| @ -517,7 +514,7 @@ public class StandardPlugin extends Plugin { | ||||
|     /** | ||||
|      * The arcsine function (return type in radians). | ||||
|      */ | ||||
|     public final Function functionArcsin = new Function() { | ||||
|     public final NumberFunction functionArcsin = new NumberFunction() { | ||||
|         @Override | ||||
|         protected boolean matchesParams(NumberInterface[] params) { | ||||
|             return params.length == 1 | ||||
| @ -550,7 +547,7 @@ public class StandardPlugin extends Plugin { | ||||
|     /** | ||||
|      * The arccosine function. | ||||
|      */ | ||||
|     public final Function functionArccos = new Function() { | ||||
|     public final NumberFunction functionArccos = new NumberFunction() { | ||||
|         @Override | ||||
|         protected boolean matchesParams(NumberInterface[] params) { | ||||
|             return params.length == 1 && FUNCTION_ABS.apply(params[0]).compareTo(fromInt(params[0].getClass(), 1)) <= 0; | ||||
| @ -566,7 +563,7 @@ public class StandardPlugin extends Plugin { | ||||
|     /** | ||||
|      * The arccosecant function. | ||||
|      */ | ||||
|     public final Function functionArccsc = new Function() { | ||||
|     public final NumberFunction functionArccsc = new NumberFunction() { | ||||
|         @Override | ||||
|         protected boolean matchesParams(NumberInterface[] params) { | ||||
|             return params.length == 1 && FUNCTION_ABS.apply(params[0]).compareTo(fromInt(params[0].getClass(), 1)) >= 0; | ||||
| @ -582,7 +579,7 @@ public class StandardPlugin extends Plugin { | ||||
|     /** | ||||
|      * The arcsecant function. | ||||
|      */ | ||||
|     public final Function functionArcsec = new Function() { | ||||
|     public final NumberFunction functionArcsec = new NumberFunction() { | ||||
|         @Override | ||||
|         protected boolean matchesParams(NumberInterface[] params) { | ||||
|             return params.length == 1 && FUNCTION_ABS.apply(params[0]).compareTo(fromInt(params[0].getClass(), 1)) >= 0; | ||||
| @ -598,7 +595,7 @@ public class StandardPlugin extends Plugin { | ||||
|     /** | ||||
|      * The arctangent function. | ||||
|      */ | ||||
|     public final Function functionArctan = new Function() { | ||||
|     public final NumberFunction functionArctan = new NumberFunction() { | ||||
|         @Override | ||||
|         protected boolean matchesParams(NumberInterface[] params) { | ||||
|             return params.length == 1; | ||||
| @ -639,7 +636,7 @@ public class StandardPlugin extends Plugin { | ||||
|     /** | ||||
|      * The arccotangent function. Range: (0, pi). | ||||
|      */ | ||||
|     public final Function functionArccot = new Function() { | ||||
|     public final NumberFunction functionArccot = new NumberFunction() { | ||||
|         @Override | ||||
|         protected boolean matchesParams(NumberInterface[] params) { | ||||
|             return params.length == 1; | ||||
|  | ||||
| @ -1,11 +1,10 @@ | ||||
| package org.nwapw.abacus.tree; | ||||
| 
 | ||||
| import org.nwapw.abacus.Abacus; | ||||
| import org.nwapw.abacus.function.Function; | ||||
| import org.nwapw.abacus.function.NumberFunction; | ||||
| import org.nwapw.abacus.function.Operator; | ||||
| import org.nwapw.abacus.function.TreeValueFunction; | ||||
| import org.nwapw.abacus.number.NumberInterface; | ||||
| import org.nwapw.abacus.plugin.NumberImplementation; | ||||
| 
 | ||||
| /** | ||||
|  * A reducer implementation that turns a tree into a single number. | ||||
| @ -47,7 +46,7 @@ public class NumberReducer implements Reducer<NumberInterface> { | ||||
|             for (int i = 0; i < convertedChildren.length; i++) { | ||||
|                 convertedChildren[i] = (NumberInterface) children[i]; | ||||
|             } | ||||
|             Function function = abacus.getPluginManager().functionFor(((FunctionNode) node).getCallTo()); | ||||
|             NumberFunction function = abacus.getPluginManager().functionFor(((FunctionNode) node).getCallTo()); | ||||
|             if (function == null) return null; | ||||
|             return function.apply(convertedChildren); | ||||
|         } else if (node instanceof TreeValueFunctionNode){ | ||||
|  | ||||
| @ -18,7 +18,7 @@ public class TokenizerTests { | ||||
| 
 | ||||
|     private static Abacus abacus = new Abacus(new Configuration(0, "precise", new String[]{})); | ||||
|     private static LexerTokenizer lexerTokenizer = new LexerTokenizer(); | ||||
|     private static Function subtractFunction = new Function() { | ||||
|     private static NumberFunction subtractFunction = new NumberFunction() { | ||||
|         @Override | ||||
|         protected boolean matchesParams(NumberInterface[] params) { | ||||
|             return params.length == 2; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user