aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorflatmush <flatmush@d3e1167c-abe1-51d5-8199-f9061ebe54e4>2011-02-24 17:18:08 +0000
committerflatmush <flatmush@d3e1167c-abe1-51d5-8199-f9061ebe54e4>2011-02-24 17:18:08 +0000
commitd829f83d313ca472ef565ad8da3834c2c5f23b7e (patch)
treeb25d372b0b6278dc8ef359ee703a13a79a89faad
parent3fc97475e182d03053bfcac327b916db5a9ee2a1 (diff)
downloadlibfixmath-d829f83d313ca472ef565ad8da3834c2c5f23b7e.tar.gz
Updated fix16_atan, now removes some un-necessary code.
Added FIXMATH_NO_ROUNDING macro to disable rounding, currently only applies to fix16_atan but will change to apply this to other operations (namely mul/div) too. Changed optimization options for rel build in code::blocks project.
-rw-r--r--libfixmath/fix16_trig.c27
-rw-r--r--libfixmath/libfixmath.cbp1
2 files changed, 17 insertions, 11 deletions
diff --git a/libfixmath/fix16_trig.c b/libfixmath/fix16_trig.c
index 2e0ec5a..6533a52 100644
--- a/libfixmath/fix16_trig.c
+++ b/libfixmath/fix16_trig.c
@@ -87,9 +87,14 @@ fix16_t fix16_atan2(fix16_t inY , fix16_t inX) {
int64_t angle;
angle = (4216574283LL * -i) / j;
is = (i * i);
- is = (is + (1LL << 15)) >> 16;
js = (j * j);
+ #ifdef FIXMATH_NO_ROUNDING
+ is >>= 16;
+ js >>= 16;
+ #else
+ is = (is + (1LL << 15)) >> 16;
js = (js + (1LL << 15)) >> 16;
+ #endif
if((is | js) >> 32) {
if((is | js) >> 40) {
is >>= 16;
@@ -100,22 +105,22 @@ fix16_t fix16_atan2(fix16_t inY , fix16_t inX) {
}
}
is = (is * i);
- is = (is + (1LL << 15)) >> 16;
js = (js * j);
+ #ifdef FIXMATH_NO_ROUNDING
+ is >>= 16;
+ js >>= 16;
+ #else
+ is = (is + (1LL << 15)) >> 16;
js = (js + (1LL << 15)) >> 16;
- if((is | js) >> 50) {
- if((is | js) >> 57) {
- is >>= 14;
- js >>= 14;
- } else {
- is >>= 7;
- js >>= 7;
- }
- }
+ #endif
is = is * 51472LL;
angle += (is / js) << 14;
angle += (inX >= 0 ? 3373259426LL : 10119778278LL);
+ #ifdef FIXMATH_NO_ROUNDING
+ angle >>= 16;
+ #else
angle = (angle + (1LL << 15)) >> 16;
+ #endif
angle = (inY < 0 ? -angle : angle);
#ifndef FIXMATH_NO_CACHE
diff --git a/libfixmath/libfixmath.cbp b/libfixmath/libfixmath.cbp
index c88b66b..d9264ea 100644
--- a/libfixmath/libfixmath.cbp
+++ b/libfixmath/libfixmath.cbp
@@ -16,6 +16,7 @@
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
+ <Add option="-DFIXMATH_NO_CACHE" />
</Compiler>
</Target>
<Target title="rel">