From 409ddc7dc22b1944f452b3999b6d8e922ddc73ab Mon Sep 17 00:00:00 2001 From: Qcbf Date: Sun, 25 Apr 2021 20:53:33 +0800 Subject: [PATCH 1/2] need check pow2 num is neg need check pow2 num is neg --- FixedPointSharp/fixnum/fixmath.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/FixedPointSharp/fixnum/fixmath.cs b/FixedPointSharp/fixnum/fixmath.cs index 0f07347..8d4fdef 100644 --- a/FixedPointSharp/fixnum/fixmath.cs +++ b/FixedPointSharp/fixnum/fixmath.cs @@ -36,7 +36,10 @@ public static fp Pow2(fp num) { if (num.value > 1638400) { return fp.max; } - + + var isNeg = num.value < 0; + if (isNeg) num = -num; + var i = num.AsInt; num = Fractions(num) * _pow2Number1 + fp._1; num *= num; @@ -46,6 +49,8 @@ public static fp Pow2(fp num) { num *= num; num *= num; num *= num; + + if (isNeg) result = fnum._1 / result; return num * num * fp.Parse(1 << i); } @@ -334,4 +339,4 @@ public static fp Exp(fp num) { return result; } } -} \ No newline at end of file +} From c36fb63fd8b9f58fa6ffbca5862b4c7812697ce3 Mon Sep 17 00:00:00 2001 From: Qcbf Date: Sun, 25 Apr 2021 20:57:49 +0800 Subject: [PATCH 2/2] modify detail modify detail --- FixedPointSharp/fixnum/fixmath.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/FixedPointSharp/fixnum/fixmath.cs b/FixedPointSharp/fixnum/fixmath.cs index 8d4fdef..3568ace 100644 --- a/FixedPointSharp/fixnum/fixmath.cs +++ b/FixedPointSharp/fixnum/fixmath.cs @@ -50,8 +50,9 @@ public static fp Pow2(fp num) { num *= num; num *= num; - if (isNeg) result = fnum._1 / result; - return num * num * fp.Parse(1 << i); + var result = num * num * fp.Parse(1 << i); + if (isNeg) result = fp._1 / result; + return result; } ///Approximate version of Exp