diff options
| author | PetteriAimonen <PetteriAimonen@d3e1167c-abe1-51d5-8199-f9061ebe54e4> | 2013-01-28 15:52:08 +0000 |
|---|---|---|
| committer | PetteriAimonen <PetteriAimonen@d3e1167c-abe1-51d5-8199-f9061ebe54e4> | 2013-01-28 15:52:08 +0000 |
| commit | bf4299bf588f6216722d89e38947ed25397a6f30 (patch) | |
| tree | 34f83372037c2b034c0ae636dba6bbfb47caa470 | |
| parent | 52214f192f1b1302890d074b92ea60ea87d4f2a9 (diff) | |
Fix error in fix16_lerp16 on platforms with sizeof(int) == 2.
Patch by georgjohann. Closes issue 20.
| -rw-r--r-- | libfixmath/fix16.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/libfixmath/fix16.c b/libfixmath/fix16.c index d5ff8a5..2994905 100644 --- a/libfixmath/fix16.c +++ b/libfixmath/fix16.c @@ -481,6 +481,7 @@ fix16_t fix16_mod(fix16_t x, fix16_t y) }
+#ifndef FIXMATH_NO_64BIT
fix16_t fix16_lerp8(fix16_t inArg0, fix16_t inArg1, uint8_t inFract)
{
@@ -492,13 +493,12 @@ fix16_t fix16_lerp8(fix16_t inArg0, fix16_t inArg1, uint8_t inFract) fix16_t fix16_lerp16(fix16_t inArg0, fix16_t inArg1, uint16_t inFract)
{
- int64_t tempOut = int64_mul_i32_i32(inArg0, ((1 << 16) - inFract));
+ int64_t tempOut = int64_mul_i32_i32(inArg0, (((int32_t)1 << 16) - inFract));
tempOut = int64_add(tempOut, int64_mul_i32_i32(inArg1, inFract));
tempOut = int64_shift(tempOut, -16);
return (fix16_t)int64_lo(tempOut);
}
-#ifndef FIXMATH_NO_64BIT
fix16_t fix16_lerp32(fix16_t inArg0, fix16_t inArg1, uint32_t inFract)
{
int64_t tempOut;
|
