public void BendCurve_Facts() { var input = new double[] { 1.0, 2.0, 3.0 }; var sparse = new object[] { 1.0, ExcelDna.Integration.ExcelMissing.Value, 4.0 }; var sparse2 = new double?[] { 1.0, null, 4.0 }; var z = PriceCurveFunctions.BendCurve(input, sparse); Assert.True(Enumerable.SequenceEqual(CurveBender.Bend(input, sparse2), (double[])PriceCurveFunctions.BendCurve(input, sparse))); }
public static object BendCurve( [ExcelArgument(Description = "Input spreads")] double[] InputSpreads, [ExcelArgument(Description = "Sparse new spreads")] object[] SparseNewSpreads) { return(ExcelHelper.Execute(_logger, () => { var sparseSpreads = SparseNewSpreads .Select(x => x is ExcelEmpty || !(x is double) ? null : (double?)x).ToArray(); var o = CurveBender.Bend(InputSpreads, sparseSpreads); return o.ReturnExcelRangeVectorFromDouble(); })); }
public void BenderFacts() { var inSpreads = new double[] { 1.0, 2.0, 3.0, 2.0, 1.0 }; var sparseSpreads = new double?[] { 1.0, null, 6.0, null, 1.0 }; Assert.True(Enumerable.SequenceEqual(new double[] { 1.0, 3.5, 6.0, 3.5, 1.0 }, CurveBender.Bend(inSpreads, sparseSpreads))); sparseSpreads = new double?[] { null, null, 6.0, null, 1.0 }; Assert.True(Enumerable.SequenceEqual(new double[] { 4, 5, 6.0, 3.5, 1.0 }, CurveBender.Bend(inSpreads, sparseSpreads))); sparseSpreads = new double?[] { 0, null, 6.0, null, null }; Assert.True(Enumerable.SequenceEqual(new double[] { 0, 3, 6.0, 5.0, 4.0 }, CurveBender.Bend(inSpreads, sparseSpreads))); }