/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.financial.var.parametric; import java.util.Map; import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.Validate; import com.opengamma.analytics.math.function.Function1D; import com.opengamma.analytics.math.matrix.DoubleMatrix1D; import com.opengamma.analytics.math.matrix.MatrixAlgebra; /** * */ public class DeltaMeanCalculator extends Function1D<Map<Integer, ParametricVaRDataBundle>, Double> { private final MatrixAlgebra _algebra; public DeltaMeanCalculator(final MatrixAlgebra algebra) { Validate.notNull(algebra, "algebra"); _algebra = algebra; } @Override public Double evaluate(final Map<Integer, ParametricVaRDataBundle> data) { Validate.notNull(data, "data"); Validate.isTrue(data.containsKey(1)); final ParametricVaRDataBundle deltaData = data.get(1); final DoubleMatrix1D mean = deltaData.getExpectedReturn(); final DoubleMatrix1D delta = (DoubleMatrix1D) deltaData.getSensitivities(); return _algebra.getInnerProduct(delta, mean); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + _algebra.hashCode(); return result; } @Override public boolean equals(final Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final DeltaMeanCalculator other = (DeltaMeanCalculator) obj; return ObjectUtils.equals(_algebra, other._algebra); } }