Example #1
0
        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)));
        }
Example #2
0
 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();
     }));
 }
Example #3
0
        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)));
        }