<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.hoenzb
        {mso-style-name:hoenzb;}
span.E-MailFormatvorlage18
        {mso-style-type:personal-reply;
        font-family:"Arial","sans-serif";
        color:windowtext;
        font-weight:normal;
        font-style:normal;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="DE" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif"">Hi,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif"">Maybe we'd use some conditional initializiation, checking for the properties of the number, like the following:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">        </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:green">// The definition of Epsion and MinValue differ between .NET and Python/C, </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">        </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:green">// so we need to define our own values.</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">        </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:green">// Approx. -2.2204460492503131e-16 - the byte order reversed value is approx.</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">        </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:green">// 2.2290265677773679e-319, so this code delivers the correct value independently</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">        </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:green">// of the byte order of the machine.</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">        </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:blue">private</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"> </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:blue">static</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"> </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:blue">readonly</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"> </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:blue">double</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"> EPSILON = </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#2B91AF">Math</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">.Max(<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">            System.</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#2B91AF">BitConverter</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">.Int64BitsToDouble(0x3cb0000000000000),<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">            System.</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#2B91AF">BitConverter</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">.Int64BitsToDouble(0x000000000000b03c));<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">        </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:green">// Approx. 2.2250738585072014e-308 - the byte-order reversed value is approx.</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">        </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:green">// 2.0236928853657458e-320, so this code delviers the correct value independently </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">        </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:green">// of the byte order of the machine.</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">        </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:blue">private</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"> </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:blue">static</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"> </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:blue">readonly</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"> </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:blue">double</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"> MIN = </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#2B91AF">Math</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">.Max(<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">            System.</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#2B91AF">BitConverter</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">.Int64BitsToDouble(0x0010000000000000),<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">            System.</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#2B91AF">BitConverter</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">.Int64BitsToDouble(0x0000000000001000));<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:blue">        public</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"> </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:blue">static</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"> </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#2B91AF">floatinfo</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"> float_info = </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:blue">new</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"> </span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#2B91AF">floatinfo</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">(</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#2B91AF">Double</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">.MaxValue, 1024, 308, MIN, -1021, -307, 15, 53, EPSILON, 2, 1);<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif"">This trick relies on the fact that for the given values, the reversed byte order produces an zero-Exponent, which are denormalized numbers, and in both cases,
 the wanted number is a normalized one which (by definition) is larger than the denormalized one.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif"">This code is as elegant as checking for the endianness explicitly, and we are even safe for machines where the integer and float endianness are different (see
<a href="https://en.wikipedia.org/wiki/Endianness#Floating-point_and_endianness">
https://en.wikipedia.org/wiki/Endianness#Floating-point_and_endianness</a> – although I doubt that those hardware is relevant for our user base…)
</span><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings">J</span><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif""><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif";color:black">Best regards<br>
<br>
Markus Schaber</span><span lang="EN-US"><br>
<br>
</span><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif";color:#636363">CODESYS<sup>®</sup></span></b><span lang="EN-US">
</span><span lang="EN-US" style="font-size:8.0pt;font-family:"Arial","sans-serif";color:#B1B2B3">a trademark of 3S-Smart Software Solutions GmbH</span><span lang="EN-US">
<br>
</span><b><span lang="EN-US" style="font-size:2.0pt;font-family:"Arial","sans-serif";color:#636363"><br>
</span></b><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif";color:#636363">Inspiring Automation Solutions
</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif";color:#636363"><o:p></o:p></span></p>
<div class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif";color:#636363">
<hr size="1" width="636" style="width:477.0pt" noshade="" style="color:#636363" align="left">
</span></div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif";color:#636363">3S-Smart Software Solutions GmbH
<br>
Dipl.-Inf. Markus Schaber | Product Development Core Technology <br>
Memminger Str. 151 | 87439 Kempten | Germany <br>
Tel. +49-831-54031-979 | Fax +49-831-54031-50 <br>
<br>
E-Mail: </span><span style="font-size:10.0pt;font-family:"Arial","sans-serif";color:#636363"><a href="mailto:m.schaber@codesys.com"><span lang="EN-US" style="color:#E3000F;text-decoration:none">m.schaber@codesys.com</span></a></span><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif";color:#636363">
 | Web: </span><span style="font-size:10.0pt;font-family:"Arial","sans-serif";color:#636363"><a href="http://www.codesys.com"><span lang="EN-US" style="color:#E3000F;text-decoration:none">codesys.com</span></a></span><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif";color:#636363">
 | CODESYS store: </span><span style="font-size:10.0pt;font-family:"Arial","sans-serif";color:#636363"><a href="http://store.codesys.com"><span lang="EN-US" style="color:#E3000F;text-decoration:none">store.codesys.com</span></a></span><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif";color:#636363">
<br>
CODESYS forum: </span><span style="font-size:10.0pt;font-family:"Arial","sans-serif";color:#636363"><a href="http://forum.codesys.com"><span lang="EN-US" style="color:#E3000F;text-decoration:none">forum.codesys.com</span></a></span><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif";color:#636363">
<br>
<br>
</span><i><span lang="EN-US" style="font-size:8.0pt;font-family:"Arial","sans-serif";color:#636363">Managing Directors: Dipl.Inf. Dieter Hess, Dipl.Inf. Manfred Werner</span></i><span lang="EN-US" style="font-size:8.0pt;font-family:"Arial","sans-serif";color:#636363">
 | <i>Trade register: Kempten HRB 6186</i> | <i>Tax ID No.: DE 167014915</i></span><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif";color:#636363">
</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial","sans-serif""><o:p></o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">Von:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Slide [mailto:slide.o.mix@gmail.com]
<br>
<b>Gesendet:</b> Mittwoch, 8. Mai 2013 22:44<br>
<b>An:</b> Jeff Hardy<br>
<b>Cc:</b> Markus Schaber; Curt Hagenlocher; ironpython-users@python.org<br>
<b>Betreff:</b> Re: [Ironpython-users] IronPython float_info values (was: IronPython always in 32-bit mode on 64bit machine even when running ipy64.exe)<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Unless Microsoft really wants pain and anguish, they are likely running in little endian mode. I've never run across an ARM setup that actually runs in big endian (nor do I want to), so I'm pretty sure its little endian. I'd be more than
 willing to test an app on my phone since Windows Phone is crap anyway, so you couldn't damage it any worse than it is now :-)<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Alex<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Wed, May 8, 2013 at 12:54 PM, Jeff Hardy <<a href="mailto:jdhardy@gmail.com" target="_blank">jdhardy@gmail.com</a>> wrote:<o:p></o:p></p>
<div>
<p class="MsoNormal">On Wed, May 8, 2013 at 9:15 AM, Markus Schaber <<a href="mailto:m.schaber@codesys.com">m.schaber@codesys.com</a>> wrote:<br>
> Hi,<br>
><br>
><br>
><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">> The main problem for now is that I can't test whatever solution we find,<br>
> because I don't have access to any hardware with non-intel Byte Order and a<br>
> Microsoft .NET. (I don't want to rely on Mono for this test…)<o:p></o:p></p>
</div>
<p class="MsoNormal">Is ARM big-endian? If so, any Windows 8 ARM tablet (i.e. Surface RT)<br>
or Windows Phone should do. Heck, even the emulator might do. It<br>
shouldn't be too hard to whip up an app that prints those two values,<br>
and I think Alex has a Windows Phone if he'd be willing to test it.<br>
<br>
If ARM is little-endian (or Windows/ARM runs in little-endian mode)<br>
then I don't think it matters; we'd have to try Mono on a PowerPC or<br>
something like that.<br>
<span style="color:#888888"><br>
<span class="hoenzb">- Jeff</span></span><o:p></o:p></p>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">-- <br>
Website: <a href="http://earl-of-code.com" target="_blank">http://earl-of-code.com</a>
<o:p></o:p></p>
</div>
</div>
</div>
</body>
</html>