public static interface Func.Updatable extends Func
"Updatable" mathematical function: an extension of
allowing assigning values to the function result, that leads to
corresponding correction of arguments.
Usually can be implemented for one-argument functions,
set(x, newResult) method assigns
to x the result of the inverse function, called for newResult.
Implementations of this interface are usually immutable and always thread-safe: get and set methods of this interface may be freely used while simultaneous accessing the same instance from several threads.
ABS, ABS_DIFF, HALF_X_MINUS_Y, HALF_X_PLUS_Y, HALF_Y_MINUS_X, IDENTITY, MAX, MIN, POSITIVE_DIFF, REVERSE, SELECT, SELECT_FROM_8_DIRECTIONS_2D, SELECT_IF_GREATER, SELECT_IF_GREATER_OR_EQUAL, SHIFTS_ALONG_8_DIRECTIONS_2D, UPDATABLE_IDENTITY, X_MINUS_Y, X_PLUS_Y, Y_MINUS_X
void set(double x, double newResult)
get(x)will be, as possible, equal to newResult. For example, if this is one-argument function f(x), and its inverse function is g(y) (g(f(x))=x), then this method should assign x=g(newResult).
This method does not guarantee the precise equality
get(x)==newResult. (Usually, it is impossible due to
limited precision of floating-point calculations.) But this method should try
to provide this equality (after its call) with, as possible, maximal possible precision.
x- the function arguments.
newResult- the desired function result.
java.lang.IndexOutOfBoundsException- may be thrown if the length of x array is less than the required number of this function arguments.