diff --git a/ClosedXML/Excel/CalcEngine/Functions/MathTrig.cs b/ClosedXML/Excel/CalcEngine/Functions/MathTrig.cs index 7fc00f2..688db07 100644 --- a/ClosedXML/Excel/CalcEngine/Functions/MathTrig.cs +++ b/ClosedXML/Excel/CalcEngine/Functions/MathTrig.cs @@ -118,10 +118,9 @@ private static object Csch(List p) { - if (p[0].Evaluate().Equals(0.0)) - { - return ErrorExpression.ExpressionErrorType.DivisionByZero; - } + if (Math.Abs((double)p[0].Evaluate()) < Double.Epsilon) + throw new DivisionByZeroException(); + return 1 / Math.Sinh(p[0]); } diff --git a/ClosedXML_Tests/Excel/CalcEngine/MathTrigTests.cs b/ClosedXML_Tests/Excel/CalcEngine/MathTrigTests.cs index b8406cd..ada5f7f 100644 --- a/ClosedXML_Tests/Excel/CalcEngine/MathTrigTests.cs +++ b/ClosedXML_Tests/Excel/CalcEngine/MathTrigTests.cs @@ -154,23 +154,13 @@ [TestCase(11, 0.0000334034)] public void CSch_CalculatesCorrectValues(double input, double expectedOutput) { - using (var wb = new XLWorkbook()) - { - var ws = wb.AddWorksheet("Sheet1"); - ws.FirstCell().Value = input; - Assert.AreEqual(expectedOutput, (double)ws.Evaluate("CSCH(A1)"), 0.000000001); - } + Assert.AreEqual(expectedOutput, (double)XLWorkbook.EvaluateExpr($@"CSCH({input})"), 0.000000001); } [Test] public void Csch_ReturnsDivisionByZeroErrorOnInput0() { - using (var wb = new XLWorkbook()) - { - var ws = wb.AddWorksheet("Sheet1"); - ws.FirstCell().Value = 0; - Assert.AreEqual(ErrorExpression.ExpressionErrorType.DivisionByZero, ws.Evaluate("CSCH(A1)")); - } + Assert.Throws(() => XLWorkbook.EvaluateExpr("CSCH(0)")); } } }