diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | src/base/ftcalc.c | 20 |
2 files changed, 7 insertions, 17 deletions
@@ -1,3 +1,7 @@ +2011-04-04 James Cloos <cloos@jhcloos.com> + * src/base/ftcalc.c (FT_MulFix): Produce more efficient + assembly. + 2011-04-04 Werner Lemberg <wl@gnu.org> Fix formatting of autofit debug dumps. diff --git a/src/base/ftcalc.c b/src/base/ftcalc.c index 3892fabf..b7866abc 100644 --- a/src/base/ftcalc.c +++ b/src/base/ftcalc.c @@ -202,25 +202,11 @@ #else - FT_Int s = 1; - FT_Long c; + FT_Int64 c; + c = (FT_Int64)a * b; - if ( a < 0 ) - { - a = -a; - s = -1; - } - - if ( b < 0 ) - { - b = -b; - s = -s; - } - - c = (FT_Long)( ( (FT_Int64)a * b + 0x8000L ) >> 16 ); - - return ( s > 0 ) ? c : -c; + return (FT_Long)((c + 0x8000 - (c < 0)) >> 16); #endif /* FT_MULFIX_ASSEMBLER */ } |