QuantLib-1.8 | vc14 | AdaptiveRungeKutta testsuite error

classic Classic list List threaded Threaded
28 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: Fwd: Re: QuantLib-1.8 | vc14 | AdaptiveRungeKutta testsuite error

Luigi Ballabio
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 <[hidden email]> 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.


------------------------------------------------------------------------------

_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev
Reply | Threaded
Open this post in threaded view
|

Re: QuantLib-1.8 | vc14 | AdaptiveRungeKutta testsuite error

Peter Caspers-4
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 <[hidden email]> 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 <[hidden email]> 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.



------------------------------------------------------------------------------

_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev
Reply | Threaded
Open this post in threaded view
|

Re: QuantLib-1.8 | vc14 | AdaptiveRungeKutta testsuite error

Luigi Ballabio
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 <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> 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.



------------------------------------------------------------------------------

_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev
Reply | Threaded
Open this post in threaded view
|

Re: QuantLib-1.8 | vc14 | AdaptiveRungeKutta testsuite error

Luigi Ballabio
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 <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> 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.



------------------------------------------------------------------------------

_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev

0001-Avoid-test-failure-with-VC-14.patch (3K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: QuantLib-1.8 | vc14 | AdaptiveRungeKutta testsuite error

Ivan A. Cherkasov

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" <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> 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.



------------------------------------------------------------------------------

_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev
Reply | Threaded
Open this post in threaded view
|

Re: QuantLib-1.8 | vc14 | AdaptiveRungeKutta testsuite error

Luigi Ballabio
Thanks for the confirmation (and for hunting down the issue on the MS site).

Given that it's this one place, I think I'll apply the patch anyway.  I'd try to avoid the test suite failing out of the box for some people, given that not everybody can update their compilers at will...

Luigi


On Fri, Sep 16, 2016 at 2:27 PM Ivan A. Cherkasov <[hidden email]> wrote:

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" <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> 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.



------------------------------------------------------------------------------

_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev
Reply | Threaded
Open this post in threaded view
|

Re: QuantLib-1.8 | vc14 | AdaptiveRungeKutta testsuite error

Ivan A. Cherkasov

Hello. I rebuilt from scratch with version 14.0. 25431.01 and the test suite passed.

On Sep 16, 2016 6:39 PM, "Luigi Ballabio" <[hidden email]> wrote:
Thanks for the confirmation (and for hunting down the issue on the MS site).

Given that it's this one place, I think I'll apply the patch anyway.  I'd try to avoid the test suite failing out of the box for some people, given that not everybody can update their compilers at will...

Luigi


On Fri, Sep 16, 2016 at 2:27 PM Ivan A. Cherkasov <[hidden email]> wrote:

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" <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> 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.



------------------------------------------------------------------------------

_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev
Reply | Threaded
Open this post in threaded view
|

Re: QuantLib-1.8 | vc14 | AdaptiveRungeKutta testsuite error

Luigi Ballabio
Thank you. 

On Tue, Sep 20, 2016 at 1:33 PM Ivan A. Cherkasov <[hidden email]> wrote:

Hello. I rebuilt from scratch with version 14.0. 25431.01 and the test suite passed.

On Sep 16, 2016 6:39 PM, "Luigi Ballabio" <[hidden email]> wrote:
Thanks for the confirmation (and for hunting down the issue on the MS site).

Given that it's this one place, I think I'll apply the patch anyway.  I'd try to avoid the test suite failing out of the box for some people, given that not everybody can update their compilers at will...

Luigi


On Fri, Sep 16, 2016 at 2:27 PM Ivan A. Cherkasov <[hidden email]> wrote:

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" <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> 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.



------------------------------------------------------------------------------

_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev
12