From 99bb4e3571d6228a7931350054ed3af74e10f453 Mon Sep 17 00:00:00 2001 From: korenkonder Date: Wed, 16 Sep 2020 05:40:23 +0300 Subject: [PATCH] Release v0.4.9.8.1 (Hotfix) Library fixes --- KKdBaseLib/Half.cs | 37 +++++++++++++++++++++++-------------- KKdMainLib/libdeflate.dll | Bin 53760 -> 54784 bytes 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/KKdBaseLib/Half.cs b/KKdBaseLib/Half.cs index 37e9b62..1eac6b7 100644 --- a/KKdBaseLib/Half.cs +++ b/KKdBaseLib/Half.cs @@ -35,18 +35,23 @@ namespace KKdBaseLib public static unsafe explicit operator Half(float val) { int si32 = *(int*)&val; - int sign = (si32 >> 31) & 0x001; - int exponent = (si32 >> 23) & 0x0FF; - int mantissa = si32 & 0x3FF; if ( si32 == 0x00000000) return new Half { value = 0x0000 }; else if ((uint)si32 == 0x80000000) return new Half { value = 0x8000 }; else { - if (exponent < 0) { exponent = 0; mantissa = 0; } - else if (exponent > 30) exponent = 31; - return new Half { value = (ushort)(sign | (exponent << 10) | mantissa) }; - } + ushort sign = (ushort)((si32 >> 31) & 0x001); + ushort exponent = (ushort)((si32 >> 23) & 0x0FF); + ushort mantissa = (ushort)((si32 >> 13) & 0x3FF); + if (exponent == 0xFF) exponent = 31; + else if (exponent != 0x00) + { + exponent -= 127 - 15; + if (exponent < 0) exponent = mantissa = 0; + else if (exponent > 30) exponent = 31; + } + return new Half { value = (ushort)((sign << 15) | (exponent << 10) | mantissa) }; + } } public static unsafe implicit operator double(Half h) @@ -70,14 +75,18 @@ namespace KKdBaseLib else if ((ulong)si64 == 0x8000000000000000) return new Half { value = 0x8000 }; else { - ushort sign = (ushort) ((si64 >> 63) & 0x8000); - short exponent = ( short)(((si64 >> 52) & 0x07FF) - 1023 + 15); - ushort mantissa = (ushort) ((si64 >> 42) & 0x03FF); + ushort sign = (ushort)((si64 >> 63) & 0x8000); + ushort exponent = (ushort)((si64 >> 52) & 0x07FF); + ushort mantissa = (ushort)((si64 >> 42) & 0x03FF); - if (exponent < 0) { exponent = 0; mantissa = 0; } - else if (exponent > 30) exponent = 31; - - return new Half { value = (ushort)(sign | (exponent << 10) | mantissa) }; + if (exponent == 0x7FF) exponent = 31; + else if (exponent != 0x00) + { + exponent -= 1023 - 15; + if (exponent < 0) exponent = mantissa = 0; + else if (exponent > 30) exponent = 31; + } + return new Half { value = (ushort)((sign << 15) | (exponent << 10) | mantissa) }; } } diff --git a/KKdMainLib/libdeflate.dll b/KKdMainLib/libdeflate.dll index 8fa172c5a144b6bfe4786594ea5af7d22c1f4d96..5cab698cf8f6eff1adb2287549370585243253bd 100644 GIT binary patch delta 8707 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 Q!<=n4n{9!k;a=>202){Xng9R* delta 7857 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 TG@HeiZp#dv`EnS$!KVLjFiQfd