AlgART Home

net.algart.math.functions
Class PowerFunc

java.lang.Object
  extended by net.algart.math.functions.PowerFunc
All Implemented Interfaces:
Func
Direct Known Subclasses:
PowerFunc.Updatable

public abstract class PowerFunc
extends java.lang.Object
implements Func

Power function: f(x0, x1) = scale*x0x1 or f(x0) = scale*x0c, where c and scale are constants. More precisely, the result of this function is:

The get(double...) method of the instance of this class requires at least 2 or 1 arguments (for the cases x0x1 and x0c correspondingly) and throws IndexOutOfBoundsException if the number of arguments is less. In a case of using getStrictBinaryInstance(double scale) / getStrictInstance(double c, double scale) methods, all calculations are performed in strictfp mode, so the result is absolutely identical on all platforms.

This class is immutable and thread-safe: there are no ways to modify settings of the created instance.

AlgART Laboratory 2007-2013

Since:
JDK 1.5
Version:
1.2
Author:
Daniel Alievsky

Nested Class Summary
Modifier and Type Class and Description
static class PowerFunc.Updatable
          Updatable extension of the power function with one argument.
 
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
abstract  double get()
          Equivalent to get(new double[0]).
abstract  double get(double... x)
          Returns the result of this function for the given arguments: f(x0, x1, ..., xx.length-1).
abstract  double get(double x0)
          Equivalent to get(new double[] {x0}).
abstract  double get(double x0, double x1)
          Equivalent to get(new double[] {x0, x1}).
abstract  double get(double x0, double x1, double x2)
          Equivalent to get(new double[] {x0, x1, x2}).
static PowerFunc getBinaryInstance(double scale)
          Returns an instance of this class, a case of binary function scale*x0x1, using Math.pow method.
static PowerFunc getInstance(double c)
          Returns an instance of this class, a case of unary function x0c, using Math.pow method.
static PowerFunc getInstance(double c, double scale)
          Returns an instance of this class, a case of unary function scale*x0c, using Math.pow method.
static PowerFunc getStrictBinaryInstance(double scale)
          Returns an instance of this class, a case of binary function scale*x0x1, using StrictMath.pow method.
static PowerFunc getStrictInstance(double c)
          Returns an instance of this class, a case of unary function x0c, using StrictMath.pow method.
static PowerFunc getStrictInstance(double c, double scale)
          Returns an instance of this class, a case of unary function scale*x0c, using StrictMath.pow method.
static PowerFunc.Updatable getUpdatableInstance(double c, double scale)
          Returns an instance of the updatable version of this class, a case of unary function scale*x0c, using Math.pow method.
static PowerFunc.Updatable getUpdatableStrictInstance(double c, double scale)
          Returns an instance of the updatable version of this class, a case of unary function scale*x0c, using StrictMath.pow method.
 java.lang.String toString()
          Returns a brief string description of this object.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface net.algart.math.functions.Func
get
 

Method Detail

getBinaryInstance

public static PowerFunc getBinaryInstance(double scale)
Returns an instance of this class, a case of binary function scale*x0x1, using Math.pow method.

Parameters:
scale - the constant scale.
Returns:
an instance of this class, a case of binary function, using Math.pow method.


getStrictBinaryInstance

public static PowerFunc getStrictBinaryInstance(double scale)
Returns an instance of this class, a case of binary function scale*x0x1, using StrictMath.pow method.

Parameters:
scale - the constant scale.
Returns:
an instance of this class, a case of binary function, using StrictMath.pow method.


getInstance

public static PowerFunc getInstance(double c,
                                    double scale)
Returns an instance of this class, a case of unary function scale*x0c, using Math.pow method.

This method returns special optimized versions of this class for several popular values of cargument. In particular, there are optimized version for c = 1.0, 2.0, 3.0, 0.5, 1.0/3.0.

Parameters:
c - the constant c.
scale - the constant scale.
Returns:
an instance of this class, a case of unary function, using Math.pow method.


getInstance

public static PowerFunc getInstance(double c)
Returns an instance of this class, a case of unary function x0c, using Math.pow method.

Equivalent to getInstance(c,1.0).

Parameters:
c - the constant c.
Returns:
an instance of this class, a case of unary function, using Math.pow method.


getStrictInstance

public static PowerFunc getStrictInstance(double c,
                                          double scale)
Returns an instance of this class, a case of unary function scale*x0c, using StrictMath.pow method.

This method returns special optimized versions of this class for several popular values of cargument. In particular, there are optimized version for c = 1.0, 2.0, 3.0, 0.5, 1.0/3.0.

Parameters:
c - the constant c.
scale - the constant scale.
Returns:
an instance of this class, a case of unary function, using StrictMath.pow method.


getStrictInstance

public static PowerFunc getStrictInstance(double c)
Returns an instance of this class, a case of unary function x0c, using StrictMath.pow method.

Equivalent to getStrictInstance(c,1.0).

Parameters:
c - the constant c.
Returns:
an instance of this class, a case of unary function, using StrictMath.pow method.


getUpdatableInstance

public static PowerFunc.Updatable getUpdatableInstance(double c,
                                                       double scale)
Returns an instance of the updatable version of this class, a case of unary function scale*x0c, using Math.pow method.

This method returns special optimized versions of this class for several popular values of cargument. In particular, there are optimized version for c = 1.0, 2.0, 3.0, 0.5, 1.0/3.0.

Parameters:
c - the constant c.
scale - the constant scale.
Returns:
an instance of this class, a case of unary function, using Math.pow method.


getUpdatableStrictInstance

public static PowerFunc.Updatable getUpdatableStrictInstance(double c,
                                                             double scale)
Returns an instance of the updatable version of this class, a case of unary function scale*x0c, using StrictMath.pow method.

This method returns special optimized versions of this class for several popular values of cargument. In particular, there are optimized version for c = 1.0, 2.0, 3.0, 0.5, 1.0/3.0.

Parameters:
c - the constant c.
scale - the constant scale.
Returns:
an instance of this class, a case of unary function, using StrictMath.pow method.


get

public abstract double get(double... x)
Description copied from interface: Func
Returns the result of this function for the given arguments: f(x0, x1, ..., xx.length-1).

This method must not change the values of x elements!

Specified by:
get in interface Func
Parameters:
x - the function arguments.
Returns:
the function result.

get

public abstract double get()
Description copied from interface: Func
Equivalent to get(new double[0]). Provides better performance because it does not require Java array creation.

Specified by:
get in interface Func
Returns:
the function result.

get

public abstract double get(double x0)
Description copied from interface: Func
Equivalent to get(new double[] {x0}). Provides better performance because it does not require Java array creation.

Specified by:
get in interface Func
Parameters:
x0 - the function argument.
Returns:
the function result.

get

public abstract double get(double x0,
                           double x1)
Description copied from interface: Func
Equivalent to get(new double[] {x0, x1}). Provides better performance because it does not require Java array creation.

Specified by:
get in interface Func
Parameters:
x0 - the first function argument.
x1 - the second function argument.
Returns:
the function result.

get

public abstract double get(double x0,
                           double x1,
                           double x2)
Description copied from interface: Func
Equivalent to get(new double[] {x0, x1, x2}). Provides better performance because it does not require Java array creation.

Specified by:
get in interface Func
Parameters:
x0 - the first function argument.
x1 - the second function argument.
x2 - the third function argument.
Returns:
the function result.

toString

public java.lang.String toString()
Returns a brief string description of this object.

Overrides:
toString in class java.lang.Object
Returns:
a brief string description of this object.