Welcome to Scribd. Sign in or start your free trial to enjoy unlimited e-books, audiobooks & documents.Find out more
Standard view
Full view
of .
Look up keyword
Like this
0 of .
Results for:
No results containing your search query
P. 1


|Views: 39|Likes:
Published by Kevin G. Rhoads
Ruminations about floating point design decisions by Prof. Kahan
Ruminations about floating point design decisions by Prof. Kahan

More info:

Published by: Kevin G. Rhoads on Oct 22, 2009


Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less





 Ruminations W. KahanPage 1 April 25, 2000 5:53 am
 Ruminations on theDesign of Floating-Point Arithmetic
 Prof. W. KahanUniv. of Calif. @ Berkeley
Floating-point can be understood better now than half a century ago.But the benefit of better understanding cannot reach computerprogrammers and users, most of them unwitting users of floating-point, unless floating-point providers (implementors of hardware andof programming languages) attend to vastly many details. These seemunfairly burdensome because nobody else cares about more than a fewof them. Which few? Each detail matters in somebody’s program uponwhich others (perhaps we) may depend; but who knows?Disregarding any one detail will undermine the coherence of the rest of them and thus harm the whole community of floating-point users. Thedetails descend from specifications for floating-point hardware and forits use by programming languages most of which, like
 , stilldisregard inconvenient details although they are implied by a fewaccidental constraints (like bus-widths) and by a short list of guidingprinciples paramount among which is
 Intellectual Economy
 . Alas, thiscrucial principle too much resembles pornography:I don’t know what it is, but I hope to recognize it if I see it.
 Ruminations W. KahanPage 2 April 25, 2000 5:53 am
 What about computers matters most? Speed?
About every 18 months it doubles.What matters more than speed isThroughput : Tasks/sec, Transactions/sec, which is not quite the same as speed.Unreliability degrades Throughput :Speed, in Operations per monthMalfunctions per month =––––––––––––––––––––––––––––––––––No. of Operations between Malfunctions
 How many malfunctions per month can you tolerate?
 Hardware is getting more reliable as well as faster.Software is not, so it imposes its own 
Law of Diminishing Returns
 upon hardware speed.Who notices this?Whether it be noticed varies a lot with the application, the personality,and the ability correctly to locate blame for a malfunction:“The fault, dear Brutus, is not in our stars,but in ourselves, ...” (
  Julius Caesar 
 I.i.139)or is it due to some anonymous programmer?Witness: expensive wreckage on Mars.
 Ruminations W. KahanPage 3 April 25, 2000 5:53 am
 Why is software so unreliable? Reliability costs too much.
 Why does reliability cost so much, often more than it would be worth ?Establishing software reliability combines the methods of mathematicaland experimental sciences in a way antithetical to their natures:Mathematics and Science flourish around precious truthseternal or at least fairly durable, as software is not.Too few people master the analytical skills needed to achieve reliability.
 A minority among holders of Computer Science degrees are actually Scientists.
 Quantity must make up for a lack of Quality; thereforemany a software house employs rather more peopletesting software than creating it.Business:Reliability is a cost-, not a revenue-center.Engineering:Reliability is a matter of degree, subject to trade-offs;utter reliability is solely Death’s prerogative.If we yearn to improve software’s reliability,we must (re)design computer hardware and software,programming languages most of all,to cut the price paid for reliabilitywithout significantly degrading functionality,especially speed.What remains to be seen is how this desideratum -
reduce reliability’s price without harming performance
 -translates into strictures upon floating-point providers.Details.

You're Reading a Free Preview

/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->