From 09eaa78ba15f412ff1b28dc66f128cfc4d86d219 Mon Sep 17 00:00:00 2001 From: thejinchao Date: Thu, 7 Aug 2025 21:41:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=A4=E4=B8=AA=E5=AE=9A?= =?UTF-8?q?=E7=82=B9=E6=95=B0=E5=B8=B8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/core/include/math/dvc_fix_point.h | 24 ++++++++++++----------- source/core/source/math/dvc_fix_point.cpp | 2 ++ test/unit/dvt_unit_fix_point.cpp | 24 +++++++++++++++++++++++ 3 files changed, 39 insertions(+), 11 deletions(-) diff --git a/source/core/include/math/dvc_fix_point.h b/source/core/include/math/dvc_fix_point.h index 18799c1..6ef2c67 100644 --- a/source/core/include/math/dvc_fix_point.h +++ b/source/core/include/math/dvc_fix_point.h @@ -159,17 +159,19 @@ public: // special value static DV_CORE_API const ifloat64 kMax; static DV_CORE_API const ifloat64 kMin; - static DV_CORE_API const ifloat64 kZero; - static DV_CORE_API const ifloat64 kOne; - static DV_CORE_API const ifloat64 kTwo; - static DV_CORE_API const ifloat64 kThree; - static DV_CORE_API const ifloat64 kFour; - static DV_CORE_API const ifloat64 kHalf; - static DV_CORE_API const ifloat64 kPi; - static DV_CORE_API const ifloat64 kPi2; - static DV_CORE_API const ifloat64 kPiHalf; - static DV_CORE_API const ifloat64 kE; - static DV_CORE_API const ifloat64 kNegOne; + static DV_CORE_API const ifloat64 kZero; //0.0 + static DV_CORE_API const ifloat64 kOne; //1.0 + static DV_CORE_API const ifloat64 kTwo; //2.0 + static DV_CORE_API const ifloat64 kThree; //3.0 + static DV_CORE_API const ifloat64 kFour; //4.0 + static DV_CORE_API const ifloat64 kHalf; //0.5 + static DV_CORE_API const ifloat64 kQuater; //0.25 + static DV_CORE_API const ifloat64 kOneEighth; //0.125 + static DV_CORE_API const ifloat64 kPi; //3.14159265358979323846 + static DV_CORE_API const ifloat64 kPi2; //6.2831853071795 + static DV_CORE_API const ifloat64 kPiHalf; //1.57079632679489661923 + static DV_CORE_API const ifloat64 kE; //2.71828182845904523536 + static DV_CORE_API const ifloat64 kNegOne; // -1.0 public: ifloat64() : s3132(0) {} diff --git a/source/core/source/math/dvc_fix_point.cpp b/source/core/source/math/dvc_fix_point.cpp index 49f6607..b861919 100644 --- a/source/core/source/math/dvc_fix_point.cpp +++ b/source/core/source/math/dvc_fix_point.cpp @@ -10,6 +10,8 @@ const ifloat64 ifloat64::kTwo{ INT64_C(2) << kShift }; const ifloat64 ifloat64::kThree{ INT64_C(3) << ifloat64::kShift }; const ifloat64 ifloat64::kFour{ INT64_C(4) << ifloat64::kShift }; const ifloat64 ifloat64::kHalf{ INT64_C(1) << (ifloat64::kShift-1) }; +const ifloat64 ifloat64::kQuater{ INT64_C(1) << (ifloat64::kShift - 2) }; +const ifloat64 ifloat64::kOneEighth{ INT64_C(1) << (ifloat64::kShift - 3) }; const ifloat64 ifloat64::kPi{ INT64_C(0x3243f6a89) }; //static_cast(std::round(M_PI * kFloatScale)); const ifloat64 ifloat64::kPi2{ INT64_C(0x6487ed511) }; const ifloat64 ifloat64::kPiHalf{ INT64_C(0x1921fb544) }; diff --git a/test/unit/dvt_unit_fix_point.cpp b/test/unit/dvt_unit_fix_point.cpp index 7043576..f1a391c 100644 --- a/test/unit/dvt_unit_fix_point.cpp +++ b/test/unit/dvt_unit_fix_point.cpp @@ -261,6 +261,30 @@ TEST(FixPoint64, Basic) EXPECT_EQ(a.to_float(), -1.f); EXPECT_EQ(a.to_int32(), -1); + a = iFloat64(0.25f); + EXPECT_EQ(a, iFloat64::kQuater); + EXPECT_EQ(a.s3132, iFloat64::kQuater.s3132); + EXPECT_EQ(a.to_float(), 0.25f); + EXPECT_EQ(a.to_int32(), 0); + + a = iFloat64(-0.25f); + EXPECT_EQ(a, -iFloat64::kQuater); + EXPECT_EQ(a.s3132, -iFloat64::kQuater.s3132); + EXPECT_EQ(a.to_float(), -0.25f); + EXPECT_EQ(a.to_int32(), -1); + + a = iFloat64(0.125f); + EXPECT_EQ(a, iFloat64::kOneEighth); + EXPECT_EQ(a.s3132, iFloat64::kOneEighth.s3132); + EXPECT_EQ(a.to_float(), 0.125f); + EXPECT_EQ(a.to_int32(), 0); + + a = iFloat64(-0.125f); + EXPECT_EQ(a, -iFloat64::kOneEighth); + EXPECT_EQ(a.s3132, -iFloat64::kOneEighth.s3132); + EXPECT_EQ(a.to_float(), -0.125f); + EXPECT_EQ(a.to_int32(), -1); + a = iFloat64(M_PI); //3.14 EXPECT_EQ(a, iFloat64::kPi); EXPECT_EQ(a.s3132, iFloat64::kPi.s3132);