From 0f27a79e4368cb26dfa0884418e3b30d193d2b94 Mon Sep 17 00:00:00 2001 From: John Scipione Date: Sat, 12 Nov 2011 13:07:02 -0500 Subject: [PATCH] Check to see if the argument of tangent divided by half pi is an odd integer. If so, throw an out of domain error. --- src/kits/shared/ExpressionParser.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/kits/shared/ExpressionParser.cpp b/src/kits/shared/ExpressionParser.cpp index c7c9d42892..6622433089 100644 --- a/src/kits/shared/ExpressionParser.cpp +++ b/src/kits/shared/ExpressionParser.cpp @@ -652,6 +652,9 @@ ExpressionParser::_ParseFunction(const Token& token) return _ParseFactorial(values[0].sqrt()); } else if (strcasecmp("tan", token.string.String()) == 0) { _InitArguments(values, 1); + MAPM divided_by_half_pi = values[0] / MM_HALF_PI; + if (divided_by_half_pi.is_integer() && divided_by_half_pi.is_odd()) + throw ParseException("out of domain", token.position); return _ParseFactorial(values[0].tan()); } else if (strcasecmp("tanh", token.string.String()) == 0) { _InitArguments(values, 1);