/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.math.impl.integration; import java.util.function.Function; /** * Interface for integration. The function to be integrated can be multi-dimensional. The result * of the integration does not have to be the same type as the integration bounds. * * @param <T> Type of the function output and result * @param <U> Type of the integration bounds * @param <V> Type of the function to be integrated (e.g. {@link Function}, */ public interface Integrator<T, U, V> { /** * @param f The function to be integrated, not null * @param lower The array of lower bounds of integration, not null or empty * @param upper The array of upper bounds of integration, not null or empty * @return The result of the integral */ T integrate(V f, U[] lower, U[] upper); }