[base] Fix commit ab02d9e8. * src/base/ftbbox.c (BBox_Cubic_Check): Change scaling to msb of 22.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
diff --git a/ChangeLog b/ChangeLog
index 8403ab9..a22cc88 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-02-23 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [base] Fix commit ab02d9e8.
+
+ * src/base/ftbbox.c (BBox_Cubic_Check): Change scaling to msb of 22.
+
2013-02-19 Alexei Podtelezhnikov <apodtele@gmail.com>
[base] New bisecting BBox_Cubic_Check (disabled).
diff --git a/src/base/ftbbox.c b/src/base/ftbbox.c
index 8a240ef..64f06f4 100644
--- a/src/base/ftbbox.c
+++ b/src/base/ftbbox.c
@@ -412,11 +412,11 @@
/* These values must fit into a single 16.16 value. */
/* */
/* We normalize a, b, and c to `8.16' fixed-point values to ensure */
- /* that its product is held in a `16.16' value. Necessarily, */
- /* we need to shift `a', `b', and `c' so that the most significant */
- /* bit of their absolute values is at _most_ at position 23. */
+ /* that their product is held in a `16.16' value including the sign. */
+ /* Necessarily, we need to shift `a', `b', and `c' so that the most */
+ /* significant bit of their absolute values is at position 22. */
/* */
- /* This also means that we are using 24 bits of precision to compute */
+ /* This also means that we are using 23 bits of precision to compute */
/* the zeros, independently of the range of the original polynomial */
/* coefficients. */
/* */
@@ -427,11 +427,11 @@
shift = FT_MSB( FT_ABS( a ) | FT_ABS( b ) | FT_ABS( c ) );
- if ( shift > 23 )
+ if ( shift > 22 )
{
- shift -= 23;
+ shift -= 22;
- /* this loses some bits of precision, but we use 24 of them */
+ /* this loses some bits of precision, but we use 23 of them */
/* for the computation anyway */
a >>= shift;
b >>= shift;
@@ -439,7 +439,7 @@
}
else
{
- shift = 23 - shift;
+ shift = 22 - shift;
a <<= shift;
b <<= shift;