<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On 2013-09-21, at 4:46 AM, Stijn van Drongelen &lt;<a href="mailto:rhymoid@gmail.com">rhymoid@gmail.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div class="gmail_extra" style="font-family: Menlo; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">I do have to agree with Damodar Kulkarni that different laws imply different classes. However, this will break **a lot** of existing software.</div></blockquote><div><br></div>You could argue that the existing software is already broken.</div><div><br><blockquote type="cite"><div class="gmail_extra" style="font-family: Menlo; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><br></div><div class="gmail_extra" style="font-family: Menlo; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">If we would do this, only Eq and Ord need to be duplicated, as they cause most of the problems. Qualified imports should suffice to differentiate between the two.</div><div class="gmail_extra" style="font-family: Menlo; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><br></div><div class="gmail_extra" style="font-family: Menlo; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">&nbsp; &nbsp; import qualified Data.Eq.Approximate as A</div><div class="gmail_extra" style="font-family: Menlo; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">&nbsp; &nbsp; import qualified Data.Ord.Approximate as A</div><div class="gmail_extra" style="font-family: Menlo; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><br></div><div class="gmail_extra" style="font-family: Menlo; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">&nbsp; &nbsp; main = print $&nbsp;<span style="font-family: arial, sans-serif; font-size: 13px; ">3.16227766016837956</span>&nbsp;A.==&nbsp;<span style="font-family: arial, sans-serif; font-size: 13px; ">3.16227766016837955</span></div></blockquote></div><div><br></div><div>As soon as you start doing computations with fp numbers things get much worse. Something like<span style="text-align: left; ">&nbsp;Edward Kmett's&nbsp;</span><span style="text-align: left; ">Numeric.Interval package would likely be helpful, a start at least (and t</span><span style="text-align: left; ">he comments in the Numeric.Interval documentation are amusing</span><span style="text-align: left; ">) In the distant past when I was worried about maintaining accuracy in a solids modeller we went with an interval arithmetic library that we *</span><span style="text-align: left; ">carefully* implemented</span><span style="text-align: left; ">. It worked. Unpleasant in C, but it worked. And this link might be interesting:</span></div><div style="text-align: left;"><br></div><div style="text-align: left;">&nbsp; &nbsp;<a href="http://lambda-the-ultimate.org/node/1301">http://lambda-the-ultimate.org/node/1301</a></div><div style="text-align: left;"><br></div><div style="text-align: left;">Cheers,</div><div style="text-align: left;">Bob</div></body></html>