amos@taux01.UUCP (Amos Shapir) (09/10/89)
Your problems seems to be bad programming, not bad coding. Instead of computing an exact value directly, you introduce inexactness by using floating-point (which might be rounded differently on different machines) then trying to improve the generated 'guess' by binary search. Here is a better algorithm, which computes day number from a given date; I leave changing the epoch and adding the hour/minute stuff as an exercise to the reader :-) o / o / o / o / --Cut-here-------X---------------X---------------X---------------X---- o \ o \ o \ o \ /* * Gauss's formula - days since the 1.1.70 epoch */ days(d, m, y) register m, y, d; { if(y < 100) y += 1900; if((m -= 2) <= 0) { m += 12; y--; } /* Gregorian calendar */ d += 365*y+y/4-y/100+y/400+367*m/12-719499; return d; } o / o / o / o / --Cut-here-------X---------------X---------------X---------------X---- o \ o \ o \ o \ May the Source be with you, always... -- Amos Shapir amos@taux01.nsc.com or amos@nsc.nsc.com National Semiconductor (Israel) P.O.B. 3007, Herzlia 46104, Israel Tel. +972 52 522261 TWX: 33691, fax: +972-52-558322 34 48 E / 32 10 N (My other cpu is a NS32532)