Date: Mon, 31 Jan 2005 20:02:48 -0800 (PST) From: Don Lewis <truckman@FreeBSD.org> To: cal@rushg.aero.org Cc: freebsd-hackers@FreeBSD.org Subject: Re: bug in calcru() Message-ID: <200502010402.j1142mBt081759@gw.catspoiler.org> In-Reply-To: <200501262105.j0QL5x9W042384@calamari.aero.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 26 Jan, Chris Landauer wrote: > > hihi, doug - > >> Doug Ambrisko <ambrisko@ambrisko.com> 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. >> ... >> cal@aero.org wrote: >> | ...but i'm a little worried that the 1024 multiplications aren't >> | large enough when tt gets really large >> | > Doug Ambrisko <ambrisko@ambrisko.com> 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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200502010402.j1142mBt081759>