{"id":39193,"date":"2004-05-25T07:00:00","date_gmt":"2004-05-25T07:00:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/oldnewthing\/2004\/05\/25\/when-you-change-the-insides-nobody-notices\/"},"modified":"2021-01-05T15:06:36","modified_gmt":"2021-01-05T23:06:36","slug":"20040525-00","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/oldnewthing\/20040525-00\/?p=39193","title":{"rendered":"When you change the insides, nobody notices"},"content":{"rendered":"<p>I find it ironic when people complain <a href=\"http:\/\/web.archive.org\/web\/20040702230205\/http:\/\/weblogs.asp.net\/omars\/archive\/2004\/04\/30\/123628.aspx\"> that Calc and Notepad haven&#8217;t changed<\/a>. In fact, both programs have changed. (Notepad gained some additional menu and status bar options. Calc got a severe workover.)<\/p>\n<p>I wouldn&#8217;t be surprised if these are the same people who complain, &#8220;Why does Microsoft spend all its effort on making Windows &#8216;look cool&#8217;? They should spend all their efforts on making technical improvements and just stop making visual improvements.&#8221;<\/p>\n<p>And with Calc, that&#8217;s exactly what happened: Massive technical improvements. No visual improvement. And nobody noticed. In fact, the complaints just keep coming. &#8220;Look at Calc, same as it always was.&#8221;<\/p>\n<p>The innards of Calc\u2014the arithmetic engine\u2014was completely thrown away and rewritten from scratch. The standard IEEE floating point library was replaced with an arbitrary-precision arithmetic library. This was done after people kept writing ha-ha articles about how Calc couldn&#8217;t do decimal arithmetic correctly, that for example computing 10.21 \u2212 10.2 resulted in 0.0100000000000016.<\/p>\n<p>(These all came from people who didn&#8217;t understand <a href=\"http:\/\/docs.sun.com\/source\/806-3568\/ncg_goldberg.html\"> how computers handle floating point<\/a>. I have a future entry planned to go into floating point representations in more detail.)<\/p>\n<p>Today, Calc&#8217;s internal computations are done with infinite precision for basic operations (addition, subtraction, multiplication, division) and 32 digits of precision for advanced operations (square root, transcendental operators).<\/p>\n<p>Try it: 1 \/ 3 \u00d7 10000000000 \u2212 3333333333 =. The result is one third exactly. Type <kbd>1\/x<\/kbd> \u2212 3 = and you get zero back. (Of course, if you don&#8217;t believe that, then repeat the sequence &#8220;\u00d7 10000000000 \u2212 3333333333 =&#8221; until you&#8217;re bored and notice that the answer always comes back as 0.33333333333333333333333333333333. If it were fixed-precision, then the 3&#8217;s would eventually stop coming.)<\/p>\n<p>Thirty-two positions of precision for inexact results not good enough? The <a href=\"http:\/\/web.archive.org\/web\/20040615081836\/http:\/\/www.microsoft.com\/windowsxp\/pro\/downloads\/powertoys.asp\"> Power Calculator PowerToy<\/a> uses the same arithmetic engine as Calc and lets you crank the precision to an unimaginable 512 digits.<\/p>\n<p>Anyway, my point is that\u2014whether you like it or not\u2014if you don&#8217;t change the UI, nobody notices. That&#8217;s why so much effort is spent on new UI.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Calc and Notepad changed. Did you notice?<\/p>\n","protected":false},"author":1069,"featured_media":111744,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[2],"class_list":["post-39193","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oldnewthing","tag-history"],"acf":[],"blog_post_summary":"<p>Calc and Notepad changed. Did you notice?<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/39193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/users\/1069"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/comments?post=39193"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/39193\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media\/111744"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media?parent=39193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/categories?post=39193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/tags?post=39193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}