From 658d592f7c876b16fae76f25c44fc586c004bf46 Mon Sep 17 00:00:00 2001 From: Ravenwater Date: Tue, 26 Dec 2023 11:02:46 -0500 Subject: [PATCH] configuring a regression test for fast posit division: not enabled yet --- static/posito/arithmetic/division.cpp | 66 ++++++++------------------- 1 file changed, 20 insertions(+), 46 deletions(-) diff --git a/static/posito/arithmetic/division.cpp b/static/posito/arithmetic/division.cpp index f2fe3d944..9b0ae37f6 100644 --- a/static/posito/arithmetic/division.cpp +++ b/static/posito/arithmetic/division.cpp @@ -99,7 +99,7 @@ namespace sw { template int VerifyDivision(bool reportTestCases) { constexpr unsigned nbits = PositType::nbits; - constexpr unsigned NR_POSITS = (unsigned(1) << nbits); + constexpr unsigned NR_POSITS = 16; // (unsigned(1) << nbits); int nrOfFailedTests = 0; for (unsigned i = 0; i < NR_POSITS; i++) { PositType pa; @@ -199,7 +199,7 @@ int main() try { using namespace sw::universal; - std::string test_suite = "posit division validation"; + std::string test_suite = "fast posit division verification"; std::string test_tag = "division"; bool reportTestCases = false; int nrOfFailedTestCases = 0; @@ -210,15 +210,8 @@ try { // ToughDivisions2>(); - { - posit<16, 2> a{1}, b(SpecificValue::minpos), c; - for (int i = 0; i < 16; ++i) { - c = a / b; - ReportBinaryOperation(a, "/", b, c); - b *= 2; - } - } -// nrOfFailedTestCases += ReportTestResult(sw::testing::VerifyDivision>(true), "posit<16,1>", "division"); + nrOfFailedTestCases += ReportTestResult(sw::testing::VerifyDivision>(true), "posit<16,1>", "division"); + nrOfFailedTestCases += ReportTestResult(sw::testing::VerifyDivision>(true), "posit<16,2>", "division"); return 0; /* @@ -234,7 +227,6 @@ try { ReportBinaryOperation(a, "/", b, c); } return 0; - nrOfFailedTestCases += ReportTestResult(sw::testing::VerifyDivision>(true), "posit<16,2>", "division"); return 0; { @@ -285,40 +277,22 @@ try { #else #if REGRESSION_LEVEL_1 - nrOfFailedTestCases += ReportTestResult(VerifyDivision<2, 0>(reportTestCases), "posit< 2,0>", "division"); - - nrOfFailedTestCases += ReportTestResult(VerifyDivision<3, 0>(reportTestCases), "posit< 3,0>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<3, 1>(reportTestCases), "posit< 3,1>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<3, 2>(reportTestCases), "posit< 3,2>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<3, 3>(reportTestCases), "posit< 3,3>", "division"); - - nrOfFailedTestCases += ReportTestResult(VerifyDivision<4, 0>(reportTestCases), "posit< 4,0>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<4, 1>(reportTestCases), "posit< 4,1>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<4, 2>(reportTestCases), "posit< 4,2>", "division"); - - nrOfFailedTestCases += ReportTestResult(VerifyDivision<5, 0>(reportTestCases), "posit< 5,0>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<5, 1>(reportTestCases), "posit< 5,1>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<5, 2>(reportTestCases), "posit< 5,2>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<5, 3>(reportTestCases), "posit< 5,3>", "division"); - - nrOfFailedTestCases += ReportTestResult(VerifyDivision<6, 0>(reportTestCases), "posit< 6,0>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<6, 1>(reportTestCases), "posit< 6,1>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<6, 2>(reportTestCases), "posit< 6,2>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<6, 3>(reportTestCases), "posit< 6,3>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<6, 4>(reportTestCases), "posit< 6,4>", "division"); - - nrOfFailedTestCases += ReportTestResult(VerifyDivision<7, 0>(reportTestCases), "posit< 7,0>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<7, 1>(reportTestCases), "posit< 7,1>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<7, 2>(reportTestCases), "posit< 7,2>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<7, 3>(reportTestCases), "posit< 7,3>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<7, 4>(reportTestCases), "posit< 7,4>", "division"); - - nrOfFailedTestCases += ReportTestResult(VerifyDivision<8, 0>(reportTestCases), "posit< 8,0>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<8, 1>(reportTestCases), "posit< 8,1>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<8, 2>(reportTestCases), "posit< 8,2>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<8, 3>(reportTestCases), "posit< 8,3>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<8, 4>(reportTestCases), "posit< 8,4>", "division"); - nrOfFailedTestCases += ReportTestResult(VerifyDivision<8, 5>(reportTestCases), "posit< 8,5>", "division"); + + nrOfFailedTestCases += ReportTestResult(VerifyMultiplication<2, 0>(reportTestCases), "posit< 2,0>", "division"); + + nrOfFailedTestCases += ReportTestResult(VerifyMultiplication<3, 0>(reportTestCases), "posit< 3,0>", "division"); + + nrOfFailedTestCases += ReportTestResult(VerifyMultiplication<4, 0>(reportTestCases), "posit< 4,0>", "division"); + + nrOfFailedTestCases += ReportTestResult(VerifyMultiplication<8, 0>(reportTestCases), "posit< 8,0>", "division"); + // TODO: no fast posit<8,1> yet + //nrOfFailedTestCases += ReportTestResult(VerifyMultiplication<8, 1>(reportTestCases), "posit< 8,1>", "division"); + // TODO: no working fast posit<8,2> yet + //nrOfFailedTestCases += ReportTestResult(VerifyMultiplication<8, 2>(reportTestCases), "posit< 8,2>", "division"); + + nrOfFailedTestCases += ReportTestResult(VerifyBinaryOperatorThroughRandoms<16, 1>(reportTestCases, OPCODE_DIV, 65536), "posit<16,1>", "division"); + nrOfFailedTestCases += ReportTestResult(VerifyBinaryOperatorThroughRandoms<16, 2>(reportTestCases, OPCODE_DIV, 65536), "posit<16,2>", "division"); + #endif #if REGRESSION_LEVEL_2