<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Outnumbered</title>
	<atom:link href="http://bit-player.org/2009/outnumbered/feed" rel="self" type="application/rss+xml" />
	<link>http://bit-player.org/2009/outnumbered</link>
	<description>An amateur's outlook on computation and mathematics.</description>
	<pubDate>Thu, 17 May 2012 09:56:39 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
		<item>
		<title>By: Fred Bosick</title>
		<link>http://bit-player.org/2009/outnumbered#comment-2234</link>
		<dc:creator>Fred Bosick</dc:creator>
		<pubDate>Sun, 04 Oct 2009 03:17:12 +0000</pubDate>
		<guid isPermaLink="false">http://bit-player.org/?p=423#comment-2234</guid>
		<description>I enjoyed the printed article, thank you!

As far as what numerical format wins, the included quote suggests  a new constraint to be considered.  I believe that whatever new format is considered, it must contain support for the (exact)positive integers. 

Symbolic processing gets more common all the time and can be concise as well as exact, but many intermediate stages often involve arithmetic and other series, which can have very large, rational coefficients. Manipulation of these series assume that integers stay that way.  Two tenths expressed as a decimal has no exact binary representation, unless BCD is employed. But a decimal number is already tainted with a hint of inexactness. An integer stands resolute! Why not take advantage of this as an error check while manipulating those coefficients in a "symbolic" expression?

I'll take the Pi microfiche if the museums and a previous poster pass.</description>
		<content:encoded><![CDATA[<p>I enjoyed the printed article, thank you!</p>
<p>As far as what numerical format wins, the included quote suggests  a new constraint to be considered.  I believe that whatever new format is considered, it must contain support for the (exact)positive integers. </p>
<p>Symbolic processing gets more common all the time and can be concise as well as exact, but many intermediate stages often involve arithmetic and other series, which can have very large, rational coefficients. Manipulation of these series assume that integers stay that way.  Two tenths expressed as a decimal has no exact binary representation, unless BCD is employed. But a decimal number is already tainted with a hint of inexactness. An integer stands resolute! Why not take advantage of this as an error check while manipulating those coefficients in a &#8220;symbolic&#8221; expression?</p>
<p>I&#8217;ll take the Pi microfiche if the museums and a previous poster pass.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jim Ward</title>
		<link>http://bit-player.org/2009/outnumbered#comment-2206</link>
		<dc:creator>Jim Ward</dc:creator>
		<pubDate>Thu, 20 Aug 2009 14:15:45 +0000</pubDate>
		<guid isPermaLink="false">http://bit-player.org/?p=423#comment-2206</guid>
		<description>I was curious how long it would take to print out 10 million digits. Printing the first 1,587, 301 integers took my computer 44 seconds.</description>
		<content:encoded><![CDATA[<p>I was curious how long it would take to print out 10 million digits. Printing the first 1,587, 301 integers took my computer 44 seconds.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Derek Ross</title>
		<link>http://bit-player.org/2009/outnumbered#comment-2204</link>
		<dc:creator>Derek Ross</dc:creator>
		<pubDate>Mon, 17 Aug 2009 03:35:43 +0000</pubDate>
		<guid isPermaLink="false">http://bit-player.org/?p=423#comment-2204</guid>
		<description>Oddly enough, I was thinking that an example of a bug would be taking the factorial of a large number. But it that really a bug? Factorials exist (in a mathematical sense) for big numbers, it's just that the computer can't always handle them. 

However if someone showed me their code, and told me, "here I take the factorial of 1000," I would instantly recognize that as an overflow bug. 

In my experience, most floating point bugs are due to the "small end" of things, like division by zero, taking the square root of a negative number, of cumulative roundoff error.  However, every engineering company does different things, maybe I just never encountered a project where overflow bugs were likely.</description>
		<content:encoded><![CDATA[<p>Oddly enough, I was thinking that an example of a bug would be taking the factorial of a large number. But it that really a bug? Factorials exist (in a mathematical sense) for big numbers, it&#8217;s just that the computer can&#8217;t always handle them. </p>
<p>However if someone showed me their code, and told me, &#8220;here I take the factorial of 1000,&#8221; I would instantly recognize that as an overflow bug. </p>
<p>In my experience, most floating point bugs are due to the &#8220;small end&#8221; of things, like division by zero, taking the square root of a negative number, of cumulative roundoff error.  However, every engineering company does different things, maybe I just never encountered a project where overflow bugs were likely.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew M. Ross</title>
		<link>http://bit-player.org/2009/outnumbered#comment-2203</link>
		<dc:creator>Andrew M. Ross</dc:creator>
		<pubDate>Sun, 16 Aug 2009 18:27:47 +0000</pubDate>
		<guid isPermaLink="false">http://bit-player.org/?p=423#comment-2203</guid>
		<description>Derek, you said "For normal engineering calculations, overflows should rarely be a problem. In my experience, overflows are usually caused by software bugs,..."

I guess this depends on what you consider a bug--is it a bug if a straightforward calculation is done without regard for overflow?  For example, in probability, the Poisson distribution formula is
exp(-lambda) * ( lambda^n) / n!
Doing this in the obvious way fails for n&#62;170 or so, since n! overflows IEEE double precision (10^308).  In queueing theory for large call centers, we often need n around 1000 or 2000 or even larger.  There are ways around the problem, of course.</description>
		<content:encoded><![CDATA[<p>Derek, you said &#8220;For normal engineering calculations, overflows should rarely be a problem. In my experience, overflows are usually caused by software bugs,&#8230;&#8221;</p>
<p>I guess this depends on what you consider a bug&#8211;is it a bug if a straightforward calculation is done without regard for overflow?  For example, in probability, the Poisson distribution formula is<br />
exp(-lambda) * ( lambda^n) / n!<br />
Doing this in the obvious way fails for n&gt;170 or so, since n! overflows IEEE double precision (10^308).  In queueing theory for large call centers, we often need n around 1000 or 2000 or even larger.  There are ways around the problem, of course.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Derek Ross</title>
		<link>http://bit-player.org/2009/outnumbered#comment-2200</link>
		<dc:creator>Derek Ross</dc:creator>
		<pubDate>Fri, 14 Aug 2009 21:03:01 +0000</pubDate>
		<guid isPermaLink="false">http://bit-player.org/?p=423#comment-2200</guid>
		<description>Actually a more annoying problem with floating point is roundoff error. It's one of those things that can creep up on you. 

In fact, even the simple process of adding a list of floats has roundoff problems and there are techniques to deal with that. For example:
http://en.wikipedia.org/wiki/Kahan_summation_algorithm

So if some system were to replace conventional floating point, I think it should to a better job of handling roundoff. 

PS, if nobody else wants the microfiche, I'll take it.... it intrigues me greatly.</description>
		<content:encoded><![CDATA[<p>Actually a more annoying problem with floating point is roundoff error. It&#8217;s one of those things that can creep up on you. </p>
<p>In fact, even the simple process of adding a list of floats has roundoff problems and there are techniques to deal with that. For example:<br />
<a href="http://en.wikipedia.org/wiki/Kahan_summation_algorithm" rel="nofollow">http://en.wikipedia.org/wiki/Kahan_summation_algorithm</a></p>
<p>So if some system were to replace conventional floating point, I think it should to a better job of handling roundoff. </p>
<p>PS, if nobody else wants the microfiche, I&#8217;ll take it&#8230;. it intrigues me greatly.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: unekdoud</title>
		<link>http://bit-player.org/2009/outnumbered#comment-2199</link>
		<dc:creator>unekdoud</dc:creator>
		<pubDate>Fri, 14 Aug 2009 06:35:43 +0000</pubDate>
		<guid isPermaLink="false">http://bit-player.org/?p=423#comment-2199</guid>
		<description>I'm think that one interesting feature of such a system would be closure of the numbers in the system under addition and multiplication, in which case there is less rounding needed. For instance if you choose the set of numbers with only factors 2 and 3, it is closed under multiplication, and for addition of numbers with values in a 1:1,1:2,1:3 ratio, the result will still fall in the same set.

However, this complicates the problem of rounding, when it really occurs. For example, a number like 77 could be rounded to 72 or 81, and it is not clear which one should be chosen just from looking at the number. (in factored form to roughly show the difficulty, is 7*11 closer to (2^3)*(3^2) or 3^4?) On the other hand, rounding of numbers in the floating point system can be done (to adequate quality in a short time)by simple truncations, and it is only slightly harder for level-index.</description>
		<content:encoded><![CDATA[<p>I&#8217;m think that one interesting feature of such a system would be closure of the numbers in the system under addition and multiplication, in which case there is less rounding needed. For instance if you choose the set of numbers with only factors 2 and 3, it is closed under multiplication, and for addition of numbers with values in a 1:1,1:2,1:3 ratio, the result will still fall in the same set.</p>
<p>However, this complicates the problem of rounding, when it really occurs. For example, a number like 77 could be rounded to 72 or 81, and it is not clear which one should be chosen just from looking at the number. (in factored form to roughly show the difficulty, is 7*11 closer to (2^3)*(3^2) or 3^4?) On the other hand, rounding of numbers in the floating point system can be done (to adequate quality in a short time)by simple truncations, and it is only slightly harder for level-index.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Vos Post</title>
		<link>http://bit-player.org/2009/outnumbered#comment-2198</link>
		<dc:creator>Jonathan Vos Post</dc:creator>
		<pubDate>Thu, 13 Aug 2009 19:57:57 +0000</pubDate>
		<guid isPermaLink="false">http://bit-player.org/?p=423#comment-2198</guid>
		<description>Your work is so great that I've used it to kick off techncal papers of my own, and lessons I've taught in both university and high school.

Integers MAY have started for counting.  But they are most seriously investigated in Number Theory. The connection to the physical world matters.  For example, are there physical systems whose energy levels give you only the primes?  The semiprimes? What is the biggest number which you can write in this cosmos on ANY imaginably device, given an upper limit to the number of baryons and leptons?

At a Theomathematical level, you are dealing with the fact that almost all real numbers cannot be described AT ALL.

Odd that this trickles down the integers. But it does.  Ask Godel...</description>
		<content:encoded><![CDATA[<p>Your work is so great that I&#8217;ve used it to kick off techncal papers of my own, and lessons I&#8217;ve taught in both university and high school.</p>
<p>Integers MAY have started for counting.  But they are most seriously investigated in Number Theory. The connection to the physical world matters.  For example, are there physical systems whose energy levels give you only the primes?  The semiprimes? What is the biggest number which you can write in this cosmos on ANY imaginably device, given an upper limit to the number of baryons and leptons?</p>
<p>At a Theomathematical level, you are dealing with the fact that almost all real numbers cannot be described AT ALL.</p>
<p>Odd that this trickles down the integers. But it does.  Ask Godel&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jim Ward</title>
		<link>http://bit-player.org/2009/outnumbered#comment-2197</link>
		<dc:creator>Jim Ward</dc:creator>
		<pubDate>Thu, 13 Aug 2009 19:53:57 +0000</pubDate>
		<guid isPermaLink="false">http://bit-player.org/?p=423#comment-2197</guid>
		<description>How about sending the fiche to:

http://www.um.u-tokyo.ac.jp/en/</description>
		<content:encoded><![CDATA[<p>How about sending the fiche to:</p>
<p><a href="http://www.um.u-tokyo.ac.jp/en/" rel="nofollow">http://www.um.u-tokyo.ac.jp/en/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stephen Meskin</title>
		<link>http://bit-player.org/2009/outnumbered#comment-2196</link>
		<dc:creator>Stephen Meskin</dc:creator>
		<pubDate>Thu, 13 Aug 2009 02:44:53 +0000</pubDate>
		<guid isPermaLink="false">http://bit-player.org/?p=423#comment-2196</guid>
		<description>Since a computer can theoretically deal with strings as long as one likes, e.g., the trillion digits of pi, why can't any integer be represented exactly.  The trade-off is that it  might take a while to add or multiply them.</description>
		<content:encoded><![CDATA[<p>Since a computer can theoretically deal with strings as long as one likes, e.g., the trillion digits of pi, why can&#8217;t any integer be represented exactly.  The trade-off is that it  might take a while to add or multiply them.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aaron Davies</title>
		<link>http://bit-player.org/2009/outnumbered#comment-2195</link>
		<dc:creator>Aaron Davies</dc:creator>
		<pubDate>Wed, 12 Aug 2009 15:21:14 +0000</pubDate>
		<guid isPermaLink="false">http://bit-player.org/?p=423#comment-2195</guid>
		<description>if no one else will take the fiches, this guy http://ascii.textfiles.com/ probably will</description>
		<content:encoded><![CDATA[<p>if no one else will take the fiches, this guy <a href="http://ascii.textfiles.com/" rel="nofollow">http://ascii.textfiles.com/</a> probably will</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Cowan</title>
		<link>http://bit-player.org/2009/outnumbered#comment-2193</link>
		<dc:creator>John Cowan</dc:creator>
		<pubDate>Wed, 12 Aug 2009 03:55:42 +0000</pubDate>
		<guid isPermaLink="false">http://bit-player.org/?p=423#comment-2193</guid>
		<description>I think the aesthetic argument is really a practical argument that is now past its sell-by date.  I remember when machine integers were 12 bits and floats were 36 bits (on the PDP-8), and the FP hardware (if you had it, and didn't need to use the software emulator) could do 24-bit ints as well.  In those days, machine integers had a huge speed win built in.  Now they simply don't.

As for a + 1 &#62; a, that's not an identity for &lt;i&gt;any&lt;/i&gt; kind of fixed-size number representation.  It may be annoying that a + 1 = a for sufficiently large a, but at least with floats we don't have to put up with the possibility of a + 1 &#60;&#60; a.</description>
		<content:encoded><![CDATA[<p>I think the aesthetic argument is really a practical argument that is now past its sell-by date.  I remember when machine integers were 12 bits and floats were 36 bits (on the PDP-8), and the FP hardware (if you had it, and didn&#8217;t need to use the software emulator) could do 24-bit ints as well.  In those days, machine integers had a huge speed win built in.  Now they simply don&#8217;t.</p>
<p>As for a + 1 &gt; a, that&#8217;s not an identity for <i>any</i> kind of fixed-size number representation.  It may be annoying that a + 1 = a for sufficiently large a, but at least with floats we don&#8217;t have to put up with the possibility of a + 1 &lt;&lt; a.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: brian</title>
		<link>http://bit-player.org/2009/outnumbered#comment-2192</link>
		<dc:creator>brian</dc:creator>
		<pubDate>Tue, 11 Aug 2009 21:36:18 +0000</pubDate>
		<guid isPermaLink="false">http://bit-player.org/?p=423#comment-2192</guid>
		<description>I guess I'm just a fossil from the paleolithic, but the idea of doing integer arithmetic with floating-point numbers gives me the willies. It feels like pounding nails with a fancy torque wrench. Floats are for things we measure, not for things we count.

Apart from this snooty aesthetic argument, I worry that using floats in place of integers introduces some nasty and needless failure modes. It's not just the possibility of numeric error, although that's bad enough. Even more critical, integers serve as loop variables, array indexes, memory addresses, disk sector numbers, etc. In all those roles, you really want to be able to count on relations like &lt;em&gt;a&lt;/em&gt;+1 &#62; &lt;em&gt;a&lt;/em&gt;. You can't always trust floats to honor such assertions. (The smallest IEEE double for which &lt;em&gt;a&lt;/em&gt;+1 = &lt;em&gt;a&lt;/em&gt; is 9,007,199,254,740,992 -- pretty big, but not big enough to put my mind at ease. For IEEE singles the limit is 16,777,216.)

At a deeper level, the issue isn't integers vs. floats but exact vs. inexact numbers. Thirty years ago Scheme formalized this distinction, providing 'exactness' as a property orthogonal to other aspects of numeric data type. But most of the world hasn't yet caught up with that idea.

&lt;blockquote&gt;- One interesting thing about floating point is that integers (within a certain size) can be precisely represented. Not sure if logarithmic or level index permits that.&lt;/blockquote&gt;

If the base of the logarithms or the level-index numbers is &lt;em&gt;e&lt;/em&gt;, then only two numbers can be represented exactly: 0 and 1. In light of what I've said above, I'm going to claim this is a feature rather than a bug. It removes the temptation to pretend that inexact values are exact. :)

&lt;blockquote&gt;The trouble with your proposed number systems is that they are static. Any ideas on an adaptive numbering system that becomes denser around regions that frequently crop up during a calculation?&lt;/blockquote&gt;

There are proposals that would allow on-the-fly adjustments of the trade-off between range and precision. The basic idea is to change the allocation of bits to exponent and significand. As for altering the shape of the distribution--the balance between large and small numbers--I guess the most obvious way would be to change the base or radix of the system. If anyone has worked out the details of such a scheme, I don't know about it. The new IEEE floating-point standard calls for decimal as well as binary arithmetic, so I guess we'll be seeing a rudimentary version of this idea eventually.</description>
		<content:encoded><![CDATA[<p>I guess I&#8217;m just a fossil from the paleolithic, but the idea of doing integer arithmetic with floating-point numbers gives me the willies. It feels like pounding nails with a fancy torque wrench. Floats are for things we measure, not for things we count.</p>
<p>Apart from this snooty aesthetic argument, I worry that using floats in place of integers introduces some nasty and needless failure modes. It&#8217;s not just the possibility of numeric error, although that&#8217;s bad enough. Even more critical, integers serve as loop variables, array indexes, memory addresses, disk sector numbers, etc. In all those roles, you really want to be able to count on relations like <em>a</em>+1 &gt; <em>a</em>. You can&#8217;t always trust floats to honor such assertions. (The smallest IEEE double for which <em>a</em>+1 = <em>a</em> is 9,007,199,254,740,992 &#8212; pretty big, but not big enough to put my mind at ease. For IEEE singles the limit is 16,777,216.)</p>
<p>At a deeper level, the issue isn&#8217;t integers vs. floats but exact vs. inexact numbers. Thirty years ago Scheme formalized this distinction, providing &#8216;exactness&#8217; as a property orthogonal to other aspects of numeric data type. But most of the world hasn&#8217;t yet caught up with that idea.</p>
<blockquote><p>- One interesting thing about floating point is that integers (within a certain size) can be precisely represented. Not sure if logarithmic or level index permits that.</p></blockquote>
<p>If the base of the logarithms or the level-index numbers is <em>e</em>, then only two numbers can be represented exactly: 0 and 1. In light of what I&#8217;ve said above, I&#8217;m going to claim this is a feature rather than a bug. It removes the temptation to pretend that inexact values are exact. :)</p>
<blockquote><p>The trouble with your proposed number systems is that they are static. Any ideas on an adaptive numbering system that becomes denser around regions that frequently crop up during a calculation?</p></blockquote>
<p>There are proposals that would allow on-the-fly adjustments of the trade-off between range and precision. The basic idea is to change the allocation of bits to exponent and significand. As for altering the shape of the distribution&#8211;the balance between large and small numbers&#8211;I guess the most obvious way would be to change the base or radix of the system. If anyone has worked out the details of such a scheme, I don&#8217;t know about it. The new IEEE floating-point standard calls for decimal as well as binary arithmetic, so I guess we&#8217;ll be seeing a rudimentary version of this idea eventually.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Derek Jones</title>
		<link>http://bit-player.org/2009/outnumbered#comment-2191</link>
		<dc:creator>Derek Jones</dc:creator>
		<pubDate>Tue, 11 Aug 2009 20:02:09 +0000</pubDate>
		<guid isPermaLink="false">http://bit-player.org/?p=423#comment-2191</guid>
		<description>There is a lot more to choosing a numeric representation system than how the representable values are distributed.  Assuming the numbers are going to be involved in iterated calculation we will want to try and minimise the error in the rounded result.

From the implementation point of view minimising the number of transistors needed could be useful.  The density of a representation is minimised by using base e, of which the nearest integer value is 3.  Unfortunately implementing 3-valued logic in existing transistor technology would push power consumption well up through the stratosphere, so we have to use 2 as an approximation to e.

Some scientific/engineering calculations are predominantly multiple/divide (rather than add/subtract) so a logarithmic representation leads to faster instruction times (there are some dedicated FPGA based systems that use a logarithmic representation for this reason).

The trouble with your proposed number systems is that they are static.  Any ideas on an adaptive numbering system that becomes denser around regions that frequently crop up during a calculation?</description>
		<content:encoded><![CDATA[<p>There is a lot more to choosing a numeric representation system than how the representable values are distributed.  Assuming the numbers are going to be involved in iterated calculation we will want to try and minimise the error in the rounded result.</p>
<p>From the implementation point of view minimising the number of transistors needed could be useful.  The density of a representation is minimised by using base e, of which the nearest integer value is 3.  Unfortunately implementing 3-valued logic in existing transistor technology would push power consumption well up through the stratosphere, so we have to use 2 as an approximation to e.</p>
<p>Some scientific/engineering calculations are predominantly multiple/divide (rather than add/subtract) so a logarithmic representation leads to faster instruction times (there are some dedicated FPGA based systems that use a logarithmic representation for this reason).</p>
<p>The trouble with your proposed number systems is that they are static.  Any ideas on an adaptive numbering system that becomes denser around regions that frequently crop up during a calculation?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jim Ward</title>
		<link>http://bit-player.org/2009/outnumbered#comment-2190</link>
		<dc:creator>Jim Ward</dc:creator>
		<pubDate>Mon, 10 Aug 2009 20:07:04 +0000</pubDate>
		<guid isPermaLink="false">http://bit-player.org/?p=423#comment-2190</guid>
		<description>If I had to predict what will succeed floating point, I would guess a system based on the Fast Fourier Transform because that seems to be where computer multiplication is heading.</description>
		<content:encoded><![CDATA[<p>If I had to predict what will succeed floating point, I would guess a system based on the Fast Fourier Transform because that seems to be where computer multiplication is heading.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Cowan</title>
		<link>http://bit-player.org/2009/outnumbered#comment-2189</link>
		<dc:creator>John Cowan</dc:creator>
		<pubDate>Mon, 10 Aug 2009 18:14:05 +0000</pubDate>
		<guid isPermaLink="false">http://bit-player.org/?p=423#comment-2189</guid>
		<description>The point about exact integer representation is a good one.  In the present architectural generation, where floating-point adds, subtracts, and multiplies are as fast as or faster than integer ones, the difference between 64-bit doubles and 64-bit integers is hardly worth maintaining, and there are already some languages that don't bother with a separate integer datatype:  Perl, Lua, Q (which has bignums but not fixnums), ....</description>
		<content:encoded><![CDATA[<p>The point about exact integer representation is a good one.  In the present architectural generation, where floating-point adds, subtracts, and multiplies are as fast as or faster than integer ones, the difference between 64-bit doubles and 64-bit integers is hardly worth maintaining, and there are already some languages that don&#8217;t bother with a separate integer datatype:  Perl, Lua, Q (which has bignums but not fixnums), &#8230;.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

