Hi, http://www.johndcook.com/blog/2010/06/08/c-math-gotchas/ explains the problem: The double.MinValue and double.Epsilon in C# have different meanings thant DBL_MIN and DBL_EPSILON in C.
I'm looking for a way how to get the wanted values... :) Best regards Markus Schaber CODESYS(r) a trademark of 3S-Smart Software Solutions GmbH Inspiring Automation Solutions ________________________________ 3S-Smart Software Solutions GmbH Dipl.-Inf. Markus Schaber | Product Development Core Technology Memminger Str. 151 | 87439 Kempten | Germany Tel. +49-831-54031-979 | Fax +49-831-54031-50 E-Mail: [email protected]<mailto:[email protected]> | Web: codesys.com<http://www.codesys.com> | CODESYS store: store.codesys.com<http://store.codesys.com> CODESYS forum: forum.codesys.com<http://forum.codesys.com> Managing Directors: Dipl.Inf. Dieter Hess, Dipl.Inf. Manfred Werner | Trade register: Kempten HRB 6186 | Tax ID No.: DE 167014915 Von: Ironpython-users [mailto:[email protected]] Im Auftrag von Markus Schaber Gesendet: Mittwoch, 8. Mai 2013 11:55 An: Vernon D. Cole; Chong, Petra (HARVEY NASH) Cc: [email protected] Betreff: Re: [Ironpython-users] IronPython always in 32-bit mode on 64bit machine even when running ipy64.exe Hi, Just as a side note: It seems that sys.float_info.min and epsilon are not correct in IronPython. Activestate Python 2.7.2: >>> sys.float_info.min 2.2250738585072014e-308 >>> sys.float_info.epsilon 2.220446049250313e-16 IronPython 2.7.3: >>> sys.float_info.min -1.7976931348623157e+308 >>> sys.float_info.epsilon 4.9406564584124654e-324 The python documentation says: min DBL_MIN minimum positive normalized float epsilon DBL_EPSILON difference between 1 and the least value greater than 1 that is representable as a float For epsilon, it might be different in .NET compared to C, but the given value is rather optimistic given that the mantissa only has 15 digits / 53 bits. :) So, it seems both values are incorrect for IronPython. Best regards Markus Schaber CODESYS(r) a trademark of 3S-Smart Software Solutions GmbH Inspiring Automation Solutions ________________________________ 3S-Smart Software Solutions GmbH Dipl.-Inf. Markus Schaber | Product Development Core Technology Memminger Str. 151 | 87439 Kempten | Germany Tel. +49-831-54031-979 | Fax +49-831-54031-50 E-Mail: [email protected]<mailto:[email protected]> | Web: codesys.com<http://www.codesys.com> | CODESYS store: store.codesys.com<http://store.codesys.com> CODESYS forum: forum.codesys.com<http://forum.codesys.com> Managing Directors: Dipl.Inf. Dieter Hess, Dipl.Inf. Manfred Werner | Trade register: Kempten HRB 6186 | Tax ID No.: DE 167014915 Von: Ironpython-users [mailto:[email protected]] Im Auftrag von Vernon D. Cole Gesendet: Mittwoch, 8. Mai 2013 11:20 An: Chong, Petra (HARVEY NASH) Cc: [email protected]<mailto:[email protected]> Betreff: Re: [Ironpython-users] IronPython always in 32-bit mode on 64bit machine even when running ipy64.exe I find that the following works (on all versions I have tested, including Jython): import sys def Python_is_64bit(): if sys.platform == 'cli': #IronPython import System return System.IntPtr.Size == 8 else: try: return sys.maxsize > 2147483647 except AttributeError: return sys.maxint > 2147483647 -- Vernon Cole On Wed, May 8, 2013 at 8:14 AM, Chong, Petra (HARVEY NASH) <[email protected]<mailto:[email protected]>> wrote: I do indeed get output that looks like yours - c:\Program Files (x86)\IronPython 2.7>c:\users\xxxxx\Downloads\corflags.exe ipy64.exe Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 2.0.50727.42 Copyright (c) Microsoft Corporation. All rights reserved. Version : v4.0.30319 CLR Header: 2.5 PE : PE32 CorFlags : 9 ILONLY : 1 32BIT : 0 Signed : 1 And if I then run this: c:\Program Files (x86)\IronPython 2.7>c:\users\xxxxx\Downloads\corflags.exe ipy.exe Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 2.0.50727.42 Copyright (c) Microsoft Corporation. All rights reserved. Version : v4.0.30319 CLR Header: 2.5 PE : PE32 CorFlags : 11 ILONLY : 1 32BIT : 1 Signed : 1 Thanks, PC From: Curt Hagenlocher [mailto:[email protected]<mailto:[email protected]>] Sent: 07 May 2013 17:46 To: Chong, Petra (HARVEY NASH) Cc: [email protected]<mailto:[email protected]> Subject: Re: [Ironpython-users] IronPython always in 32-bit mode on 64bit machine even when running ipy64.exe Can you use corflags.exe to confirm that your ipy64.exe is actually not marked for 32-bit execution? Your output should look like this: PS D:\Program Files\Sho\bin> corflags .\ipy64.exe Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 3.5.30729.1 Copyright (c) Microsoft Corporation. All rights reserved. Version : v2.0.50727 CLR Header: 2.5 PE : PE32 CorFlags : 9 ILONLY : 1 32BIT : 0 Signed : 1 On Tue, May 7, 2013 at 9:34 AM, Chong, Petra (HARVEY NASH) <[email protected]<mailto:[email protected]>> wrote: (I also asked this on StackOverflow - http://stackoverflow.com/questions/16422812/ironpython-always-in-32-bit-mode-on-64bit-machine-even-when-running-ipy64-exe - have copy pasted from there). I am sure I am missing something simple but unfortunately a lot of searching hasn't thrown up what it is.. I am running Windows 7 64-bit (I verified this by looking at Control Panel > All Control Panel Items > System and seeing that it says 64-bit Operating System). I have IronPython 2.7.3 installed from here (http://ironpython.codeplex.com/downloads/get/423690) This has created the following shortcut (with no corresponding shortcut in C:\Program Files\IronPython 2.7...): "C:\Program Files (x86)\IronPython 2.7\ipy64.exe" If I run this, I get this prompt: "c:\Projects>"C:\Program Files (x86)\IronPython 2.7\ipy64.exe" IronPython 2.7.3 (2.7.0.40) on .NET 4.0.30319.296 (32-bit) The docs from an older version of IronPython (2.6) athttp://ironpython.codeplex.com/releases/view/27350 say that: "A very visible new feature added to this release is that ipy.exe is now strictly a 32-bit only assembly. That is, it gets executed as a 32-bit CLR process on both x86 and x64 operating systems. ipy64.exe, despite what its name might imply, is a platform agnostic assembly matching the old behavior of ipy.exe in the sense that it gets executed as a 32-bit process on 32-bit OSes and 64-bit on 64-bit OSes." >From this, I infer that ipy64 should have started as a 64 bit process, but >that's not what shows in the prompt. Any ideas what I am doing wrong? Thanks in advance.. Edited to add: I have also tried running the following in the IronPython shell, which I found from another question on this site, to check whether the OS is 64 bit >>> import System >>> System.Environment.Is64BitOperatingSystem True ... but then I ran the following which indicates that IronPython really is running in 32 bit mode. >>> import System >>> System.IntPtr.Size 4 I have tested that I have 64-bit .NET installed by creating a console application in Visual Studio with the line Console.WriteLn(System.IntPtr.Size) and verifying that the output is "8". Thanks, PC _______________________________________________ Ironpython-users mailing list [email protected]<mailto:[email protected]> http://mail.python.org/mailman/listinfo/ironpython-users _______________________________________________ Ironpython-users mailing list [email protected]<mailto:[email protected]> http://mail.python.org/mailman/listinfo/ironpython-users
_______________________________________________ Ironpython-users mailing list [email protected] http://mail.python.org/mailman/listinfo/ironpython-users
