From 74f93ca4fba387347f24fa5f97e2d02f18e58e45 Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Wed, 16 Nov 2022 20:51:07 +0100 Subject: [PATCH] Improve precision of float log function --- include/math.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/include/math.c b/include/math.c index 3550da9..bbb6126 100644 --- a/include/math.c +++ b/include/math.c @@ -143,12 +143,12 @@ float exp(float f) return s * x.f; } -#define F_LOG_0 -2.79423993 -#define F_LOG_1 5.05984692 -#define F_LOG_2 -3.49247429 -#define F_LOG_3 1.58181193 -#define F_LOG_4 -0.396821126 -#define F_LOG_5 0.041845518 +#define F_LOG_0 -3.78712618 +#define F_LOG_1 10.0957081 +#define F_LOG_2 -13.9747486 +#define F_LOG_3 12.7568806 +#define F_LOG_4 -6.48114552 +#define F_LOG_5 1.39045416 float log(float f) { @@ -162,8 +162,8 @@ float log(float f) x.f = f; int ei = x.i[1]; - int ex = (ei >> 7) - 0x7f; - x.i[1] = (ei & 0x007f) | 0x3f80; + int ex = (ei >> 7) - 0x7e; + x.i[1] = (ei & 0x007f) | 0x3f00; float g = x.f;