On 26 Jan, Chris Landauer wrote: > > hihi, doug - > >> Doug Ambrisko <[EMAIL PROTECTED]> wrote >> ... >> The assumption with this calculation is that st & it tend to be >> small compared to tt so the 1024 X shouldn't overflow much. >> ... >> [EMAIL PROTECTED] wrote: >> | ...but i'm a little worried that the 1024 multiplications aren't >> | large enough when tt gets really large >> | > Doug Ambrisko <[EMAIL PROTECTED]> wrote >> | > ... >> | > /* Subdivide tu. try to becareful of overflow */ >> | > su = tu * (st * 1024 / tt) / 1024; >> | > iu = tu * (it * 1024 / tt) / 1024; >> | > uu = tu - (su + iu); >> | > ... > > i'm not so worried about the overflow limit (that's what the mathematical > analysis is intended to discover, and i assume that the bound is large enough > to ignore the issue - that is the really clever part about computing su and iu > first instead of uu), but the underflow - if st and it are small enough and tt > is large enough, these equations produce 0 for both su and iu (and the > reported percentage will rightly be 0.00%, but i want to see the rest of the > detail for my time models)
It looks like the worst case for overflow would be if st == tt or it == tt, and even then overflow would not happen until the run time got up above 500 years according to my calculations, so it would probably be safe to increase the 1024 factor by quite a bit. Even at 1024, the system and interrupt time will be calculated to about 0.1%, though you might want to tweak the formula a bit to do rounding. su = tu * ((st * 1024 + 512) / tt) / 1024; _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"