/** * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.analytics.model; import java.util.List; import com.opengamma.analytics.math.matrix.DoubleMatrix2D; /** * */ public class FunctionUtils { public static double[][] decodeJacobian(final Object jacobianObject) { final double[][] array; // Fudge encodings of double[][] and List<double[]> are identical, so receiving either is valid. if (jacobianObject instanceof double[][]) { array = (double[][]) jacobianObject; } else if (jacobianObject instanceof List<?>) { @SuppressWarnings("unchecked") final List<double[]> jacobianList = (List<double[]>) jacobianObject; final int rows = jacobianList.size(); array = new double[rows][]; int i = 0; for (final double[] d : jacobianList) { array[i++] = d; } } else if (jacobianObject instanceof DoubleMatrix2D) { array = ((DoubleMatrix2D) jacobianObject).getData(); } else { throw new ClassCastException("Jacobian object " + jacobianObject + " not List<double[]> or double[][]; have " + jacobianObject.getClass()); } return array; } public static double[] decodeCouponSensitivities(final Object couponSensitivitiesObject) { final double[] array; // Fudge encodings of double[] and List<Double> are identical, so receiving either is valid. if (couponSensitivitiesObject instanceof double[]) { array = (double[]) couponSensitivitiesObject; } else if (couponSensitivitiesObject instanceof List<?>) { @SuppressWarnings("unchecked") final List<Double> couponSensitivitiesList = (List<Double>) couponSensitivitiesObject; final int rows = couponSensitivitiesList.size(); array = new double[rows]; int i = 0; for (final Double d : couponSensitivitiesList) { array[i++] = d; } } else { throw new ClassCastException("Coupon sensitivities object " + couponSensitivitiesObject + " not List<Double> or double[]"); } return array; } }