diff --git a/test_conformance/printf/util_printf.cpp b/test_conformance/printf/util_printf.cpp index 803f13ab..f982f15e 100644 --- a/test_conformance/printf/util_printf.cpp +++ b/test_conformance/printf/util_printf.cpp @@ -19,7 +19,7 @@ #include "test_printf.h" #include #include - +#include // Helpers for generating runtime reference results static void intRefBuilder(printDataGenParameters&, char*, const size_t); @@ -1743,10 +1743,14 @@ size_t verifyOutputBuffer(char *analysisBuffer,testCase* pTestCase,size_t testId else if (pTestCase->_correctBuffer[testId] == "INF") return strcmp(analysisBuffer, "INF") && strcmp(analysisBuffer, "INFINITY"); - else if (pTestCase->_correctBuffer[testId] == "nan") - return strcmp(analysisBuffer, "nan") && strcmp(analysisBuffer, "-nan"); - else if (pTestCase->_correctBuffer[testId] == "NAN") - return strcmp(analysisBuffer, "NAN") && strcmp(analysisBuffer, "-NAN"); + else if (pTestCase->_correctBuffer[testId] == "nan" + || pTestCase->_correctBuffer[testId] == "NAN") + { + std::string pattern = + R"(-?)" + pTestCase->_correctBuffer[testId] + R"((\(.*\))?)"; + std::regex nanRegex(pattern); + return !std::regex_match(analysisBuffer, nanRegex); + } return strcmp(analysisBuffer, pTestCase->_correctBuffer[testId].c_str()); }