From 51d3dba10a207317983f06f4b417cbc79c487f33 Mon Sep 17 00:00:00 2001 From: Jens Arnold Date: Fri, 4 Aug 2006 07:32:23 +0000 Subject: Again smaller fixed point exp() git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10455 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/lib/gray_core.c | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/apps/plugins/lib/gray_core.c b/apps/plugins/lib/gray_core.c index 5f565218ff..a9a3e7698f 100644 --- a/apps/plugins/lib/gray_core.c +++ b/apps/plugins/lib/gray_core.c @@ -200,25 +200,11 @@ static int exp_s16p16(int x) int t; int y = 0x00010000; - if (x == 0) - { - return y; - } - else if (x > 0) - { - t = x - 0x58b91; if (t >= 0) x = t, y <<= 8; - t = x - 0x2c5c8; if (t >= 0) x = t, y <<= 4; - t = x - 0x162e4; if (t >= 0) x = t, y <<= 2; - t = x - 0x0b172; if (t >= 0) x = t, y <<= 1; - } - else - { - t = x + 0x58b91; if (t < 0) x = t, y >>= 8; - t = x + 0x2c5c8; if (t < 0) x = t, y >>= 4; - t = x + 0x162e4; if (t < 0) x = t, y >>= 2; - t = x + 0x0b172; if (t < 0) x = t, y >>= 1; - x += 0x0b172; y >>= 1; - } + if (x < 0) x += 0xb1721, y >>= 16; + t = x - 0x58b91; if (t >= 0) x = t, y <<= 8; + t = x - 0x2c5c8; if (t >= 0) x = t, y <<= 4; + t = x - 0x162e4; if (t >= 0) x = t, y <<= 2; + t = x - 0x0b172; if (t >= 0) x = t, y <<= 1; t = x - 0x067cd; if (t >= 0) x = t, y += y >> 1; t = x - 0x03920; if (t >= 0) x = t, y += y >> 2; t = x - 0x01e27; if (t >= 0) x = t, y += y >> 3; -- cgit v1.2.3