diff options
author | Jens Arnold <amiconn@rockbox.org> | 2006-08-04 07:32:23 +0000 |
---|---|---|
committer | Jens Arnold <amiconn@rockbox.org> | 2006-08-04 07:32:23 +0000 |
commit | 51d3dba10a207317983f06f4b417cbc79c487f33 (patch) | |
tree | 8c8be84686a1dca59dda86449a8d69ce7675a5cd /apps/plugins | |
parent | f212e6cf5fb6327b51abdf1af2b102f87c896a32 (diff) | |
download | rockbox-51d3dba10a207317983f06f4b417cbc79c487f33.tar.gz rockbox-51d3dba10a207317983f06f4b417cbc79c487f33.zip |
Again smaller fixed point exp()
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10455 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins')
-rw-r--r-- | apps/plugins/lib/gray_core.c | 24 |
1 files 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) | |||
200 | int t; | 200 | int t; |
201 | int y = 0x00010000; | 201 | int y = 0x00010000; |
202 | 202 | ||
203 | if (x == 0) | 203 | if (x < 0) x += 0xb1721, y >>= 16; |
204 | { | 204 | t = x - 0x58b91; if (t >= 0) x = t, y <<= 8; |
205 | return y; | 205 | t = x - 0x2c5c8; if (t >= 0) x = t, y <<= 4; |
206 | } | 206 | t = x - 0x162e4; if (t >= 0) x = t, y <<= 2; |
207 | else if (x > 0) | 207 | t = x - 0x0b172; if (t >= 0) x = t, y <<= 1; |
208 | { | ||
209 | t = x - 0x58b91; if (t >= 0) x = t, y <<= 8; | ||
210 | t = x - 0x2c5c8; if (t >= 0) x = t, y <<= 4; | ||
211 | t = x - 0x162e4; if (t >= 0) x = t, y <<= 2; | ||
212 | t = x - 0x0b172; if (t >= 0) x = t, y <<= 1; | ||
213 | } | ||
214 | else | ||
215 | { | ||
216 | t = x + 0x58b91; if (t < 0) x = t, y >>= 8; | ||
217 | t = x + 0x2c5c8; if (t < 0) x = t, y >>= 4; | ||
218 | t = x + 0x162e4; if (t < 0) x = t, y >>= 2; | ||
219 | t = x + 0x0b172; if (t < 0) x = t, y >>= 1; | ||
220 | x += 0x0b172; y >>= 1; | ||
221 | } | ||
222 | t = x - 0x067cd; if (t >= 0) x = t, y += y >> 1; | 208 | t = x - 0x067cd; if (t >= 0) x = t, y += y >> 1; |
223 | t = x - 0x03920; if (t >= 0) x = t, y += y >> 2; | 209 | t = x - 0x03920; if (t >= 0) x = t, y += y >> 2; |
224 | t = x - 0x01e27; if (t >= 0) x = t, y += y >> 3; | 210 | t = x - 0x01e27; if (t >= 0) x = t, y += y >> 3; |