private static DdReal Add_Norm(DdReal left, DdReal right) { (double s1, double s2) = MathHelper.TwoSum(left.High, right.High); (double t1, double t2) = MathHelper.TwoSum(left.High, right.High); s2 += t1; (s1, s2) = MathHelper.QuickTwoSum(s1, s2); s2 += t2; return(MathHelper.QuickTwoSumD(s1, s2)); }
private void DoTest(DdReal left, DdReal right, Func <QdReal, QdReal, QdReal> expected, Func <QdReal, DdReal, QdReal> opLeft, Func <DdReal, QdReal, QdReal> opRight, Func <QdReal, QdReal, QdReal> methBoth, Func <QdReal, DdReal, QdReal> methLeft, Func <QdReal, QdReal, QdReal> methSloppy ) { var expect = expected(left, right); Assert.Equal(expect[0], opLeft(left, right)[0]); Assert.Equal(expect[0], opRight(left, right)[0]); Assert.Equal(expect[0], methBoth(left, right)[0]); Assert.Equal(expect[0], methLeft(left, right)[0]); Assert.Equal(expect[0], methSloppy(left, right)[0]); }
public DdReal Current() { return(DdReal.Add(a, b)); }
public QdRealConversionData() : base(v => new QdReal(v)) { // also check conversions between QdReal and DdReal Add(QdReal.One, typeof(DdReal), DdReal.One); Add((QdReal)DdReal.Divide(1, 7), typeof(DdReal), DdReal.Divide(1, 7)); }