Fix error in fix16_lerp16 on platforms with sizeof(int) == 2.
Patch by georgjohann. Closes issue 20.
This commit is contained in:
parent
52214f192f
commit
bf4299bf58
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue