[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: e2fsck hanging



There are are few issues with the get_icount_el() code.  First a simple
binary search may be sufficient.  Also, We now know the float type is
not sufficient to handle the large or small values handled by this
code.  One problem with using float is it does not have the precision
to divide two sufficently large numbers with a small enough
difference.  The other issue is with float value approximation that
causes 'mid' to be larger than 'high'.  The approximation is due to
float single-precision 23 bit mantissa.  Values up to integer
16,777,215 are handled as expected but starting at 16,777,216 the least
significant bits are truncated producing an approximation.  The
approximation could be more or less than what is expected.  This is a
feature of using float.  Double type for IEEE 754 double-precision 64
bit provides a 52 bit mantissa to play with.  That is a large number.

Since the e2fsck code must handle large numbers the use of float type should
be used with caution.

Reference
http://steve.hollasch.net/cgindex/coding/ieeefloat.html
http://en.wikipedia.org/wiki/IEEE_754


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]