/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.math.function;
import java.io.Serializable;
import com.opengamma.util.ArgumentChecker;
/**
* 2-D function implementation.
* @param <S> Type of the arguments
* @param <T> Return type of function
*/
public abstract class Function2D<S, T> implements Function<S, T>, Serializable {
/**
* Implementation of the interface. This method only uses the first and second arguments.
* @param x The list of inputs into the function, not null and no null elements
* @return The value of the function
*/
@SuppressWarnings("unchecked")
@Override
public T evaluate(final S... x) {
ArgumentChecker.noNulls(x, "parameter list");
ArgumentChecker.isTrue(x.length == 2, "parameter list must be of length 2");
return evaluate(x[0], x[1]);
}
/**
* 2-D function method
* @param x1 The first argument of the function, not null
* @param x2 The second argument of the function, not null
* @return The value of the function
*/
public abstract T evaluate(S x1, S x2);
}