[v4,19/21] test: libipa: Remove legacy fixed point conversion test
diff mbox series

Message ID 20251114005428.90024-20-kieran.bingham@ideasonboard.com
State New
Headers show
Series
  • libipa: Introduce a Quantized type
Related show

Commit Message

Kieran Bingham Nov. 14, 2025, 12:54 a.m. UTC
Now that the fixed point conversions are equally covered by the new Q types,
the legacy tests for fixedToFloatingPoint and floatingToFixedPoint are
redundant.

Remove them.

Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
---
 test/ipa/libipa/fixedpoint.cpp | 78 ----------------------------------
 1 file changed, 78 deletions(-)

Comments

Isaac Scott Nov. 18, 2025, 12:42 p.m. UTC | #1
Hi Kieran,

Thank you for the patch!

Reviewed-by: Isaac Scott <isaac.scott@ideasonboard.com>

Quoting Kieran Bingham (2025-11-14 00:54:23)
> Now that the fixed point conversions are equally covered by the new Q types,
> the legacy tests for fixedToFloatingPoint and floatingToFixedPoint are
> redundant.
> 
> Remove them.
> 
> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
> ---
>  test/ipa/libipa/fixedpoint.cpp | 78 ----------------------------------
>  1 file changed, 78 deletions(-)
> 
> diff --git a/test/ipa/libipa/fixedpoint.cpp b/test/ipa/libipa/fixedpoint.cpp
> index e3428272fae5..357af6afa75e 100644
> --- a/test/ipa/libipa/fixedpoint.cpp
> +++ b/test/ipa/libipa/fixedpoint.cpp
> @@ -26,80 +26,6 @@ using Q4_7 = Quantized<FixedPointQTraits<4, 7, int16_t>>;
>  class FixedPointUtilsTest : public Test
>  {
>  protected:
> -       /* R for real, I for integer */
> -       template<unsigned int IntPrec, unsigned int FracPrec, typename I, typename R>
> -       int testFixedToFloat(I input, R expected)
> -       {
> -               R out = fixedToFloatingPoint<IntPrec, FracPrec, R>(input);
> -               R prec = 1.0 / (1 << FracPrec);
> -               if (std::abs(out - expected) > prec) {
> -                       cerr << "Reverse conversion expected " << input
> -                            << " to convert to " << expected
> -                            << ", got " << out << std::endl;
> -                       return TestFail;
> -               }
> -
> -               return TestPass;
> -       }
> -
> -       template<unsigned int IntPrec, unsigned int FracPrec, typename T>
> -       int testSingleFixedPoint(double input, T expected)
> -       {
> -               T ret = floatingToFixedPoint<IntPrec, FracPrec, T>(input);
> -               if (ret != expected) {
> -                       cerr << "Expected " << input << " to convert to "
> -                            << expected << ", got " << ret << std::endl;
> -                       return TestFail;
> -               }
> -
> -               /*
> -                * The precision check is fairly arbitrary but is based on what
> -                * the rkisp1 is capable of in the crosstalk module.
> -                */
> -               double f = fixedToFloatingPoint<IntPrec, FracPrec, double>(ret);
> -               if (std::abs(f - input) > 0.005) {
> -                       cerr << "Reverse conversion expected " << ret
> -                            << " to convert to " << input
> -                            << ", got " << f << std::endl;
> -                       return TestFail;
> -               }
> -
> -               return TestPass;
> -       }
> -
> -       int testFixedPoint()
> -       {
> -               /*
> -                * The second 7.992 test is to test that unused bits don't
> -                * affect the result.
> -                */
> -               std::map<double, int16_t> testCases = {
> -                       { 7.992, 0x3ff },
> -                       {   0.2, 0x01a },
> -                       {  -0.2, 0x7e6 },
> -                       {  -0.8, 0x79a },
> -                       {  -0.4, 0x7cd },
> -                       {  -1.4, 0x74d },
> -                       {    -8, 0x400 },
> -                       {     0, 0 },
> -               };
> -
> -               int ret;
> -               for (const auto &testCase : testCases) {
> -                       ret = testSingleFixedPoint<4, 7, int16_t>(testCase.first,
> -                                                                  testCase.second);
> -                       if (ret != TestPass)
> -                               return ret;
> -               }
> -
> -               /* Special case with a superfluous one in the unused bits */
> -               ret = testFixedToFloat<4, 7, int16_t, double>(0xbff, 7.992);
> -               if (ret != TestPass)
> -                       return ret;
> -
> -               return TestPass;
> -       }
> -
>         template<typename Q>
>         int quantizedCheck(float input, typename Q::QuantizedType expected, float value)
>         {
> @@ -266,10 +192,6 @@ protected:
>         {
>                 unsigned int fails = 0;
>  
> -               /* fixed point conversion test */
> -               if (testFixedPoint() != TestPass)
> -                       fails++;
> -
>                 if (testFixedPointQuantizers() != TestPass)
>                         fails++;
>  
> -- 
> 2.51.1
>
Laurent Pinchart Nov. 19, 2025, 4:30 a.m. UTC | #2
On Fri, Nov 14, 2025 at 12:54:23AM +0000, Kieran Bingham wrote:
> Now that the fixed point conversions are equally covered by the new Q types,
> the legacy tests for fixedToFloatingPoint and floatingToFixedPoint are
> redundant.
> 
> Remove them.
> 
> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> ---
>  test/ipa/libipa/fixedpoint.cpp | 78 ----------------------------------
>  1 file changed, 78 deletions(-)
> 
> diff --git a/test/ipa/libipa/fixedpoint.cpp b/test/ipa/libipa/fixedpoint.cpp
> index e3428272fae5..357af6afa75e 100644
> --- a/test/ipa/libipa/fixedpoint.cpp
> +++ b/test/ipa/libipa/fixedpoint.cpp
> @@ -26,80 +26,6 @@ using Q4_7 = Quantized<FixedPointQTraits<4, 7, int16_t>>;
>  class FixedPointUtilsTest : public Test
>  {
>  protected:
> -	/* R for real, I for integer */
> -	template<unsigned int IntPrec, unsigned int FracPrec, typename I, typename R>
> -	int testFixedToFloat(I input, R expected)
> -	{
> -		R out = fixedToFloatingPoint<IntPrec, FracPrec, R>(input);
> -		R prec = 1.0 / (1 << FracPrec);
> -		if (std::abs(out - expected) > prec) {
> -			cerr << "Reverse conversion expected " << input
> -			     << " to convert to " << expected
> -			     << ", got " << out << std::endl;
> -			return TestFail;
> -		}
> -
> -		return TestPass;
> -	}
> -
> -	template<unsigned int IntPrec, unsigned int FracPrec, typename T>
> -	int testSingleFixedPoint(double input, T expected)
> -	{
> -		T ret = floatingToFixedPoint<IntPrec, FracPrec, T>(input);
> -		if (ret != expected) {
> -			cerr << "Expected " << input << " to convert to "
> -			     << expected << ", got " << ret << std::endl;
> -			return TestFail;
> -		}
> -
> -		/*
> -		 * The precision check is fairly arbitrary but is based on what
> -		 * the rkisp1 is capable of in the crosstalk module.
> -		 */
> -		double f = fixedToFloatingPoint<IntPrec, FracPrec, double>(ret);
> -		if (std::abs(f - input) > 0.005) {
> -			cerr << "Reverse conversion expected " << ret
> -			     << " to convert to " << input
> -			     << ", got " << f << std::endl;
> -			return TestFail;
> -		}
> -
> -		return TestPass;
> -	}
> -
> -	int testFixedPoint()
> -	{
> -		/*
> -		 * The second 7.992 test is to test that unused bits don't
> -		 * affect the result.
> -		 */
> -		std::map<double, int16_t> testCases = {
> -			{ 7.992, 0x3ff },
> -			{   0.2, 0x01a },
> -			{  -0.2, 0x7e6 },
> -			{  -0.8, 0x79a },
> -			{  -0.4, 0x7cd },
> -			{  -1.4, 0x74d },
> -			{    -8, 0x400 },
> -			{     0, 0 },
> -		};
> -
> -		int ret;
> -		for (const auto &testCase : testCases) {
> -			ret = testSingleFixedPoint<4, 7, int16_t>(testCase.first,
> -								   testCase.second);
> -			if (ret != TestPass)
> -				return ret;
> -		}
> -
> -		/* Special case with a superfluous one in the unused bits */
> -		ret = testFixedToFloat<4, 7, int16_t, double>(0xbff, 7.992);
> -		if (ret != TestPass)
> -			return ret;
> -
> -		return TestPass;
> -	}
> -
>  	template<typename Q>
>  	int quantizedCheck(float input, typename Q::QuantizedType expected, float value)
>  	{
> @@ -266,10 +192,6 @@ protected:
>  	{
>  		unsigned int fails = 0;
>  
> -		/* fixed point conversion test */
> -		if (testFixedPoint() != TestPass)
> -			fails++;
> -
>  		if (testFixedPointQuantizers() != TestPass)
>  			fails++;
>

Patch
diff mbox series

diff --git a/test/ipa/libipa/fixedpoint.cpp b/test/ipa/libipa/fixedpoint.cpp
index e3428272fae5..357af6afa75e 100644
--- a/test/ipa/libipa/fixedpoint.cpp
+++ b/test/ipa/libipa/fixedpoint.cpp
@@ -26,80 +26,6 @@  using Q4_7 = Quantized<FixedPointQTraits<4, 7, int16_t>>;
 class FixedPointUtilsTest : public Test
 {
 protected:
-	/* R for real, I for integer */
-	template<unsigned int IntPrec, unsigned int FracPrec, typename I, typename R>
-	int testFixedToFloat(I input, R expected)
-	{
-		R out = fixedToFloatingPoint<IntPrec, FracPrec, R>(input);
-		R prec = 1.0 / (1 << FracPrec);
-		if (std::abs(out - expected) > prec) {
-			cerr << "Reverse conversion expected " << input
-			     << " to convert to " << expected
-			     << ", got " << out << std::endl;
-			return TestFail;
-		}
-
-		return TestPass;
-	}
-
-	template<unsigned int IntPrec, unsigned int FracPrec, typename T>
-	int testSingleFixedPoint(double input, T expected)
-	{
-		T ret = floatingToFixedPoint<IntPrec, FracPrec, T>(input);
-		if (ret != expected) {
-			cerr << "Expected " << input << " to convert to "
-			     << expected << ", got " << ret << std::endl;
-			return TestFail;
-		}
-
-		/*
-		 * The precision check is fairly arbitrary but is based on what
-		 * the rkisp1 is capable of in the crosstalk module.
-		 */
-		double f = fixedToFloatingPoint<IntPrec, FracPrec, double>(ret);
-		if (std::abs(f - input) > 0.005) {
-			cerr << "Reverse conversion expected " << ret
-			     << " to convert to " << input
-			     << ", got " << f << std::endl;
-			return TestFail;
-		}
-
-		return TestPass;
-	}
-
-	int testFixedPoint()
-	{
-		/*
-		 * The second 7.992 test is to test that unused bits don't
-		 * affect the result.
-		 */
-		std::map<double, int16_t> testCases = {
-			{ 7.992, 0x3ff },
-			{   0.2, 0x01a },
-			{  -0.2, 0x7e6 },
-			{  -0.8, 0x79a },
-			{  -0.4, 0x7cd },
-			{  -1.4, 0x74d },
-			{    -8, 0x400 },
-			{     0, 0 },
-		};
-
-		int ret;
-		for (const auto &testCase : testCases) {
-			ret = testSingleFixedPoint<4, 7, int16_t>(testCase.first,
-								   testCase.second);
-			if (ret != TestPass)
-				return ret;
-		}
-
-		/* Special case with a superfluous one in the unused bits */
-		ret = testFixedToFloat<4, 7, int16_t, double>(0xbff, 7.992);
-		if (ret != TestPass)
-			return ret;
-
-		return TestPass;
-	}
-
 	template<typename Q>
 	int quantizedCheck(float input, typename Q::QuantizedType expected, float value)
 	{
@@ -266,10 +192,6 @@  protected:
 	{
 		unsigned int fails = 0;
 
-		/* fixed point conversion test */
-		if (testFixedPoint() != TestPass)
-			fails++;
-
 		if (testFixedPointQuantizers() != TestPass)
 			fails++;