|
From: Ivan A. C. <iva...@gm...> - 2016-09-16 12:27:24
|
Hello, Luigi. The testsuite succeeded with your patch on “Version 14.0.25422.01 Update 3”: 1>------ Build started: Project: testsuite, Configuration: Release x64 ------ … 1> Testing observable settings... 1> Testing adaptive Runge Kutta... 1> Testing matrix exponential based on ode.. … 1> 1> Test module "Master Test Suite" has passed with: 1> 646 test cases out of 646 passed 1> 1002058 assertions out of 1002058 passed 1> ========== Build: 1 succeeded, 0 failed, 1 up-to-date, 0 skipped ========== So, supposedly, it is indeed the “Issue 3 Potential miscompilation of code-calling functions that resemble std::min/std::max on floating point values.” (https://msdn.microsoft.com/en-us/library/mt752379.aspx, Bugs that are fixed in version 14.0.25425.01, released on 08/02/2016). Personally, I wouldn’t recommend applying this patch to the master given that std::max is used in many places in QuantLib, and it seems that this is a VC compiler issue (I don’t recall having issues building 1.8 with GCC). I will try to get VC updated and check if the issue disappears. Thanks for looking into that. On Sep 14, 2016 6:13 PM, "Luigi Ballabio" <lui...@gm...> wrote: > Ivan, > please try the attached patch and check if it fixes the test failure. > > Thanks, > Luigi > > > > On Wed, Sep 14, 2016 at 10:49 AM Luigi Ballabio <lui...@gm...> > wrote: > >> It seems so. Anyway, I seem to have worked around the problem, but I'm >> not in the office this morning. Stay tuned... >> >> >> On Wed, Sep 14, 2016 at 10:45 AM Peter Caspers <pca...@gm...> >> wrote: >> >>> Hi Luigi, >>> >>> not your fault, our subconscious mind presses these ok-buttons for us… >>> >>> Does it mean the problem only occurs in a specific version of VC14? In >>> particular not in the latest? >>> >>> Regards >>> Peter >>> >>> On 12 Sep 2016, at 15:27, Luigi Ballabio <lui...@gm...> >>> wrote: >>> >>> Peter, Ivan, >>> I could reproduce the errors on a virtual machine running VC14. >>> I'll try to find some time to work on this, too. >>> >>> Also, I'll share a life lesson I learned last week. If you ever >>> reproduce an error like the above, and then the compiler tells you that an >>> update is available, for the love of all that's holy DON'T update. If you >>> do so, the error will disappear and your virtual machine will spend the >>> best part of a Friday restoring the previous version of the compiler while >>> you call yourself all sorts of names. Just saying. >>> >>> Later, >>> Luigi >>> >>> >>> On Fri, Sep 9, 2016 at 5:03 PM Ivan A. Cherkasov < >>> iva...@gm...> wrote: >>> >>>> One more observation I wanted to share: >>>> >>>> with /fp:strict /fp:except compile flags (https://msdn.microsoft.com/ >>>> en-us/library/e7s85ffb.aspx) I’m getting build errors. >>>> >>>> command line: >>>> >>>> ^C:\TMP\QL18_VC2015_MK3\QUANTLIB-1.8\QL\EXPERIMENTAL\FINITEDIFFERENCES\ >>>> DYNPROGVPPINTRINSICVALUEENGINE.CPP >>>> /c /IC:\BIN\BOOST_1_61_0 /I. /Zi /nologo /W3 /WX- /O2 /Ob2 /Ot /D >>>> NDEBUG /D WIN32 /D _LIB /D _SCL_SECURE_NO_DEPRECATE /D >>>> _CRT_SECURE_NO_DEPRECATE /D _MBCS /GF /Gm- /EHsc /MD /GS /Gy /fp:strict >>>> /fp:except /Zc:wchar_t /Zc:forScope /Zc:inline /GR >>>> /Fo".\BUILD\VC140\X64\RELEASE\\" /Fd".\BUILD\VC140\X64\RELEASE\QUANTLIB.PDB" >>>> /Gd /TP C:\TMP\QL18_VC2015_MK3\QUANTLIB-1.8\QL\EXPERIMENTAL\ >>>> FINITEDIFFERENCES\DYNPROGVPPINTRINSICVALUEENGINE.CPP >>>> >>>> build errors: >>>> >>>> … >>>> >>>> 1> dynprogvppintrinsicvalueengine.cpp >>>> 1>C:\Program Files (x86)\Microsoft Visual Studio >>>> 14.0\VC\include\xcomplex(646): error C2131: expression did not evaluate to >>>> a constant (compiling source file ql\experimental\finitedifferences\ >>>> hestonrndcalculator.cpp) >>>> 1> C:\Program Files (x86)\Microsoft Visual Studio >>>> 14.0\VC\include\xcomplex(646): note: failure was caused by an undefined >>>> arithmetic operation (compiling source file ql\experimental\ >>>> finitedifferences\hestonrndcalculator.cpp) >>>> 1> ql\experimental\finitedifferences\hestonrndcalculator.cpp(110): >>>> note: see reference to function template instantiation >>>> 'std::complex<double> std::log<double>(const std::complex<double> &)' being >>>> compiled >>>> >>>> … >>>> >>>> 1>C:\Program Files (x86)\Microsoft Visual Studio >>>> 14.0\VC\include\xcomplex(232): error C2131: expression did not evaluate to >>>> a constant (compiling source file ql\math\modifiedbessel.cpp) >>>> 1> C:\Program Files (x86)\Microsoft Visual Studio >>>> 14.0\VC\include\xcomplex(232): note: failure was caused by an undefined >>>> arithmetic operation (compiling source file ql\math\modifiedbessel.cpp) >>>> 1> C:\Program Files (x86)\Microsoft Visual Studio >>>> 14.0\VC\include\xcomplex(253): note: see reference to function template >>>> instantiation '_Ty std::_Fabs<double>(const std::complex<double> &,int *)' >>>> being compiled >>>> 1> with >>>> >>>> ... >>>> >>>> and so on. >>>> >>> >>> |