AlgART Home

net.algart.math.functions
Interface Func.Updatable

All Superinterfaces:
Func
All Known Implementing Classes:
InverseNumberFunc.Updatable, LinearFunc.Updatable, PowerFunc.Updatable
Enclosing interface:
Func

public static interface Func.Updatable
extends Func

"Updatable" mathematical function: an extension of Func interface allowing assigning values to the function result, that leads to corresponding correction of arguments. Usually can be implemented for one-argument functions, where the set(x[], newResult) method assigns to x[0] 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.


Nested Class Summary
Modifier and Type Interface and Description
 
Nested classes/interfaces inherited from interface net.algart.math.functions.Func
Func.Updatable
 
Field Summary
Modifier and Type Field and Description
 
Fields inherited from interface net.algart.math.functions.Func
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
 
Method Summary
Modifier and Type Method and Description
 void set(double[] x, double newResult)
          Correct some of x arguments so that get(x) will be, as possible, equal to newResult.
 
Methods inherited from interface net.algart.math.functions.Func
get, get, get, get, get, get
 

Method Detail

set

void set(double[] x,
         double newResult)
Correct some of x arguments so that 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[0]=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.

Parameters:
x - the function arguments.
newResult - the desired function result.
Throws:
java.lang.IndexOutOfBoundsException - may be thrown if the length of x array is less than the required number of this function arguments.