Class ScalarTurboEvaluator1
java.lang.Object
com.github.gbenroscience.parser.turbo.tools.ScalarTurboEvaluator1
- All Implemented Interfaces:
Savable,TurboExpressionEvaluator,Serializable
- Direct Known Subclasses:
AndroidCapableMatrixTurboEvaluator,BulkTurboEvaluator,MatrixTurboEvaluator
Turbo compiler optimized for PURE SCALAR expressions. Uses an array based
technique to pass variables to the evaluator
- Author:
- GBEMIRO
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classstatic final class -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected ErrorLogprotected MathExpression.Token[]protected MathExpression.VariableRegistrystatic final MethodHandleprotected final int[]static final MethodHandlestatic final MethodHandleprotected boolean -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic doubleacot(double x) static doubleacsc(double x) static doubleadd(double a, double b) Inlined addition: a + bstatic doubleasec(double x) static MethodHandlecombineArgs(List<MethodHandle> argumentHandles) Combines multiple handles of type (double[])double into a single handle of type (double[])double[].compile()////////////////////////////////////////UPDATE STARTS////////////////////////////////////////////////////////////////////////////////protected MethodHandlecompileScalar(MathExpression.Token[] postfix) static doublecot(double x) static MethodHandlecreateConstantHandle(double value) static doublecsc(double x) static doublecube(double x) static doubledivide(double a, double b) Inlined division: a / b with zero-checkstatic double[]executeQuadraticRoot(String funcHandle) static double[]executeTartagliaRoot(String funcHandle) static doubleexecuteTurboIntegral(Function f, MethodHandle handle, double lower, double upper, int iterations, String[] vars, int[] slots) static doubleexecuteTurboODE(MethodHandle dy_dt, int tSlot, int ySlot, int frameSize, double t0, double y0, double tEnd, double initialStep, DifferentialEquations.ODESolverMethod method) static doubleexecuteTurboRoot(MethodHandle baseHandle, MethodHandle derivHandle, int xSlot, double lower, double upper, int iterations) Execution bridge for the TurboRootFinder.static doublegetDoubleFromArray(double[] array, int index) static MethodHandlegetOptimizedPowerHandle(double n) protected static MethodHandlegetUnaryFunctionHandle(String name) Get unary function handle (arity 1).static doublegradToRad(double grads) static ObjectinvokeComplexStats(MethodHandle gatekeeper, String name, Object[] parts, double[] vars) static ObjectinvokeComplexStats1(MethodHandle gatekeeper, String name, Object[] parts, double[] vars) static doubleinvokeCustomFunction(String funcName, double[] argsValues) Safe runtime execution bridge for custom FunctionManager functions.static MathExpression.EvalResultinvokeRegistryMethod(int methodId, double[] argsValues) Hardened production bridge.booleanstatic doublemodulo(double a, double b) Inlined modulo: a % bstatic doublemultiply(double a, double b) Inlined multiplication: a * bstatic doublequad(double x) static doublescalarStatsGatekeeper(String method, double[] data) static doublesec(double x) voidsetWillFoldConstants(boolean willFoldConstants) static doublesquare(double x) static doublesubtract(double a, double b) Inlined subtraction: a - bstatic doubleunwrapToDouble(Object obj) static double[]vectorNonStatsGatekeeper(String method, String funcHandle) static double[]vectorStatsGatekeeper(String method, double[] data)
-
Field Details
-
willFoldConstants
protected boolean willFoldConstants -
slots
protected final int[] slots -
registry
-
SCALAR_GATEKEEPER_HANDLE
-
VECTOR_GATEKEEPER_HANDLE
-
VECTOR_2_GATEKEEPER_HANDLE
-
postfix
-
errorLog
-
-
Constructor Details
-
ScalarTurboEvaluator1
- Parameters:
me-
-
-
Method Details
-
getNextResult
-
setWillFoldConstants
public void setWillFoldConstants(boolean willFoldConstants) -
isWillFoldConstants
public boolean isWillFoldConstants() -
invokeRegistryMethod
Hardened production bridge. Zero allocation for arity invalid input: '<'= 8. Safely scales for any arity without crashing. -
compile
////////////////////////////////////////UPDATE STARTS////////////////////////////////////////////////////////////////////////////////- Specified by:
compilein interfaceTurboExpressionEvaluator- Returns:
- A FastCompositeExpression ready for evaluation
- Throws:
Throwable- if compilation fails
-
compileScalar
- Throws:
Throwable
-
combineArgs
Combines multiple handles of type (double[])double into a single handle of type (double[])double[].- Parameters:
argumentHandles-- Throws:
Exception
-
invokeComplexStats1
-
invokeComplexStats
-
invokeCustomFunction
Safe runtime execution bridge for custom FunctionManager functions.- Parameters:
funcName-argsValues-- Returns:
-
createConstantHandle
-
unwrapToDouble
-
executeTurboIntegral
public static double executeTurboIntegral(Function f, MethodHandle handle, double lower, double upper, int iterations, String[] vars, int[] slots) throws Throwable - Throws:
Throwable
-
scalarStatsGatekeeper
-
vectorStatsGatekeeper
-
vectorNonStatsGatekeeper
-
executeTurboRoot
public static double executeTurboRoot(MethodHandle baseHandle, MethodHandle derivHandle, int xSlot, double lower, double upper, int iterations) Execution bridge for the TurboRootFinder. This is invoked by the compiled MethodHandle chain.- Parameters:
baseHandle-derivHandle-xSlot-lower-upper-iterations-- Returns:
-
executeQuadraticRoot
-
executeTartagliaRoot
-
getOptimizedPowerHandle
- Throws:
Throwable
-
getUnaryFunctionHandle
Get unary function handle (arity 1). Supports: - Trigonometric: sin, cos, tan, asin, acos, atan (with DRG variants) - Logarithmic: log, ln, log10 - Power/Root: sqrt, cbrt - Rounding: floor, ceil, abs - Other: exp, fact- Throws:
Throwable
-
sec
public static double sec(double x) -
csc
public static double csc(double x) -
cot
public static double cot(double x) -
asec
public static double asec(double x) -
acsc
public static double acsc(double x) -
acot
public static double acot(double x) -
getDoubleFromArray
public static double getDoubleFromArray(double[] array, int index) -
gradToRad
public static double gradToRad(double grads) -
add
public static double add(double a, double b) Inlined addition: a + b -
subtract
public static double subtract(double a, double b) Inlined subtraction: a - b -
multiply
public static double multiply(double a, double b) Inlined multiplication: a * b -
divide
public static double divide(double a, double b) Inlined division: a / b with zero-check -
modulo
public static double modulo(double a, double b) Inlined modulo: a % b -
square
public static double square(double x) -
cube
public static double cube(double x) -
quad
public static double quad(double x) -
executeTurboODE
public static double executeTurboODE(MethodHandle dy_dt, int tSlot, int ySlot, int frameSize, double t0, double y0, double tEnd, double initialStep, DifferentialEquations.ODESolverMethod method) throws Throwable - Throws:
Throwable
-