[base] Fix commit ab02d9e8
.
* src/base/ftbbox.c (BBox_Cubic_Check): Change scaling to msb of 22.
This commit is contained in:
parent
f9434dba81
commit
2ba18ba1ce
@ -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).
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user