Re: [Boost-users] boost float128 and Intel's _Quad with Tux Eigen

Thanks John,
The good news is that Intel on Linux does support GCC's __float128 type, so my suggestion would be to: * Remove the #define BOOST_MP_USE_QUAD * Build with -std=gnu++14 rather than -std=c++14 * Remove the -Qoption,cpp,--extended_float_type option.
Unfortunately that didn't work, I get the new compiler error; /home/alex/boost/boost_1_71_0/boost/multiprecision/detail/number_base.hpp(216): error: static assertion failed with "is_integral<T>::value || is_enum<T>::value || std::numeric_limits<T>::is_specialized" BOOST_STATIC_ASSERT(is_integral<T>::value || is_enum<T>::value || std::numeric_limits<T>::is_specialized); Are you able to help? Many thanks, Alex ________________________________ From: Boost-users <boost-users-bounces@lists.boost.org> on behalf of boost-users-request@lists.boost.org <boost-users-request@lists.boost.org> Sent: 04 February 2020 10:56 To: boost-users@lists.boost.org <boost-users@lists.boost.org> Subject: Boost-users Digest, Vol 5318, Issue 1 CAUTION: This mail comes from outside the University. Please consider this before opening attachments, clicking links, or acting on the content. Send Boost-users mailing list submissions to boost-users@lists.boost.org To subscribe or unsubscribe via the World Wide Web, visit https://lists.boost.org/mailman/listinfo.cgi/boost-users or, via email, send a message with subject or body 'help' to boost-users-request@lists.boost.org You can reach the person managing the list at boost-users-owner@lists.boost.org When replying, please edit your Subject line so it is more specific than "Re: Contents of Boost-users digest..." Today's Topics: 1. boost float128 and Intel's _Quad with Tux Eigen (Alex.Durie) 2. [boost build] - How to create symbols (.pdb) files on windows using VS2017 Community Edition? (Eko palypse) 3. Re: [boost build] - How to create symbols (.pdb) files on windows using VS2017 Community Edition? (Mateusz Loskot) 4. Re: [boost build] - How to create symbols (.pdb) files on windows using VS2017 Community Edition? (Eko palypse) 5. Re: boost float128 and Intel's _Quad with Tux Eigen (John Maddock) ---------------------------------------------------------------------- Message: 1 Date: Mon, 3 Feb 2020 21:33:13 +0000 From: Alex.Durie <alex.durie@open.ac.uk> To: "boost-users@lists.boost.org" <boost-users@lists.boost.org> Subject: [Boost-users] boost float128 and Intel's _Quad with Tux Eigen Message-ID: <CWLP265MB0244A9FE67071B7EE7C7E2BFA3000@CWLP265MB0244.GBRP265.PROD.OUTLOOK.COM> Content-Type: text/plain; charset="iso-8859-1" Hi, I have written a short program utilising boost::float128 together with tux Eigen which successfully compiles and runs using g++, however it fails when I use icc. The compiler error is /home/alex/boost/boost_1_71_0/boost/multiprecision/float128.hpp(727): error: no suitable constructor exists to convert from "const _Quad" to "boost::multiprecision::number<boost::multiprecision::backends::float128_backend, boost::multiprecision::et_off>" static number_type (min)() BOOST_NOEXCEPT { return BOOST_MP_QUAD_MIN; } ^ How can I resolve this? My example code is; #include <iostream> #include <cmath> #include <Eigen/Dense> #include <Eigen/Eigenvalues> #include <iomanip> #include <boost/cstdfloat.hpp> #include <boost/multiprecision/float128.hpp> #include <boost/math/special_functions.hpp> #include <boost/math/constants/constants.hpp> #include <quadmath.h> #define BOOST_MP_USE_QUAD using namespace Eigen; using namespace std; int main(){ typedef Matrix<complex<boost::multiprecision::float128>, Dynamic, Dynamic> MatrixXcmp; MatrixXcmp C = MatrixXcmp::Random(8,8); cout<<setprecision(128)<<C<<endl<<endl; ComplexEigenSolver<MatrixXcmp> ces; ces.compute(C); return 0; } It only fails compilation when I put in the line 'ces.compute(C);'. I compile with icpc quadtest.cpp -std=c++14 -Qoption,cpp,--extended_float_type -O2 -DMKL_LP64 -lmkl_intel_lp64 -fp-model precise -lmkl_sequential -lmkl_core -lpthread -lm -ldl -lquadmath Many thanks in advance, Alex

On 04/02/2020 15:37, Alex.Durie via Boost-users wrote:
Thanks John,
The good news is that Intel on Linux does support GCC's __float128 type, so my suggestion would be to: * Remove the #define BOOST_MP_USE_QUAD * Build with -std=gnu++14 rather than -std=c++14 * Remove the -Qoption,cpp,--extended_float_type option.
Unfortunately that didn't work, I get the new compiler error;
It shouldn't be required but try adding -DBOOST_HAS_FLOAT128 to the command line. John.
/home/alex/boost/boost_1_71_0/boost/multiprecision/detail/number_base.hpp(216): error: static assertion failed with "is_integral<T>::value || is_enum<T>::value || std::numeric_limits<T>::is_specialized" BOOST_STATIC_ASSERT(is_integral<T>::value || is_enum<T>::value || std::numeric_limits<T>::is_specialized);
Are you able to help?
Many thanks,
Alex
------------------------------------------------------------------------ *From:* Boost-users <boost-users-bounces@lists.boost.org> on behalf of boost-users-request@lists.boost.org <boost-users-request@lists.boost.org> *Sent:* 04 February 2020 10:56 *To:* boost-users@lists.boost.org <boost-users@lists.boost.org> *Subject:* Boost-users Digest, Vol 5318, Issue 1 CAUTION: This mail comes from outside the University. Please consider this before opening attachments, clicking links, or acting on the content.
Send Boost-users mailing list submissions to boost-users@lists.boost.org
To subscribe or unsubscribe via the World Wide Web, visit https://lists.boost.org/mailman/listinfo.cgi/boost-users or, via email, send a message with subject or body 'help' to boost-users-request@lists.boost.org
You can reach the person managing the list at boost-users-owner@lists.boost.org
When replying, please edit your Subject line so it is more specific than "Re: Contents of Boost-users digest..."
Today's Topics:
1. boost float128 and Intel's _Quad with Tux Eigen (Alex.Durie) 2. [boost build] - How to create symbols (.pdb) files on windows using VS2017 Community Edition? (Eko palypse) 3. Re: [boost build] - How to create symbols (.pdb) files on windows using VS2017 Community Edition? (Mateusz Loskot) 4. Re: [boost build] - How to create symbols (.pdb) files on windows using VS2017 Community Edition? (Eko palypse) 5. Re: boost float128 and Intel's _Quad with Tux Eigen (John Maddock)
----------------------------------------------------------------------
Message: 1 Date: Mon, 3 Feb 2020 21:33:13 +0000 From: Alex.Durie <alex.durie@open.ac.uk> To: "boost-users@lists.boost.org" <boost-users@lists.boost.org> Subject: [Boost-users] boost float128 and Intel's _Quad with Tux Eigen Message-ID: <CWLP265MB0244A9FE67071B7EE7C7E2BFA3000@CWLP265MB0244.GBRP265.PROD.OUTLOOK.COM>
Content-Type: text/plain; charset="iso-8859-1"
Hi, I have written a short program utilising boost::float128 together with tux Eigen which successfully compiles and runs using g++, however it fails when I use icc. The compiler error is
/home/alex/boost/boost_1_71_0/boost/multiprecision/float128.hpp(727): error: no suitable constructor exists to convert from "const _Quad" to "boost::multiprecision::number<boost::multiprecision::backends::float128_backend, boost::multiprecision::et_off>" static number_type (min)() BOOST_NOEXCEPT { return BOOST_MP_QUAD_MIN; } ^ How can I resolve this?
My example code is; #include <iostream> #include <cmath> #include <Eigen/Dense> #include <Eigen/Eigenvalues> #include <iomanip> #include <boost/cstdfloat.hpp> #include <boost/multiprecision/float128.hpp> #include <boost/math/special_functions.hpp> #include <boost/math/constants/constants.hpp> #include <quadmath.h> #define BOOST_MP_USE_QUAD
using namespace Eigen; using namespace std;
int main(){ typedef Matrix<complex<boost::multiprecision::float128>, Dynamic, Dynamic> MatrixXcmp; MatrixXcmp C = MatrixXcmp::Random(8,8); cout<<setprecision(128)<<C<<endl<<endl; ComplexEigenSolver<MatrixXcmp> ces; ces.compute(C); return 0; }
It only fails compilation when I put in the line 'ces.compute(C);'.
I compile with icpc quadtest.cpp -std=c++14 -Qoption,cpp,--extended_float_type -O2 -DMKL_LP64 -lmkl_intel_lp64 -fp-model precise -lmkl_sequential -lmkl_core -lpthread -lm -ldl -lquadmath
Many thanks in advance,
Alex

Thanks John,
It shouldn't be required but try adding -DBOOST_HAS_FLOAT128 to the command line.
Unfortunately it now complains of the redefinition of the macro BOOST_HAS_FLOAT128 as well as the previous compile errors. You mentioned that perhaps support was broken somewhere down the lines, would it work with an earlier version of boost do you think? Many thanks, Alex ________________________________ From: Boost-users <boost-users-bounces@lists.boost.org> on behalf of John Maddock via Boost-users <boost-users@lists.boost.org> Sent: Tuesday, 4 February 2020, 16:47 To: Alex.Durie via Boost-users Cc: John Maddock Subject: Re: [Boost-users] boost float128 and Intel's _Quad with Tux Eigen CAUTION: This mail comes from outside the University. Please consider this before opening attachments, clicking links, or acting on the content. On 04/02/2020 15:37, Alex.Durie via Boost-users wrote:
Thanks John,
The good news is that Intel on Linux does support GCC's __float128 type, so my suggestion would be to: * Remove the #define BOOST_MP_USE_QUAD * Build with -std=gnu++14 rather than -std=c++14 * Remove the -Qoption,cpp,--extended_float_type option.
Unfortunately that didn't work, I get the new compiler error;
It shouldn't be required but try adding -DBOOST_HAS_FLOAT128 to the command line. John.
/home/alex/boost/boost_1_71_0/boost/multiprecision/detail/number_base.hpp(216): error: static assertion failed with "is_integral<T>::value || is_enum<T>::value || std::numeric_limits<T>::is_specialized" BOOST_STATIC_ASSERT(is_integral<T>::value || is_enum<T>::value || std::numeric_limits<T>::is_specialized);
Are you able to help?
Many thanks,
Alex
------------------------------------------------------------------------ *From:* Boost-users <boost-users-bounces@lists.boost.org> on behalf of boost-users-request@lists.boost.org <boost-users-request@lists.boost.org> *Sent:* 04 February 2020 10:56 *To:* boost-users@lists.boost.org <boost-users@lists.boost.org> *Subject:* Boost-users Digest, Vol 5318, Issue 1 CAUTION: This mail comes from outside the University. Please consider this before opening attachments, clicking links, or acting on the content.
Send Boost-users mailing list submissions to boost-users@lists.boost.org
To subscribe or unsubscribe via the World Wide Web, visit https://lists.boost.org/mailman/listinfo.cgi/boost-users or, via email, send a message with subject or body 'help' to boost-users-request@lists.boost.org
You can reach the person managing the list at boost-users-owner@lists.boost.org
When replying, please edit your Subject line so it is more specific than "Re: Contents of Boost-users digest..."
Today's Topics:
1. boost float128 and Intel's _Quad with Tux Eigen (Alex.Durie) 2. [boost build] - How to create symbols (.pdb) files on windows using VS2017 Community Edition? (Eko palypse) 3. Re: [boost build] - How to create symbols (.pdb) files on windows using VS2017 Community Edition? (Mateusz Loskot) 4. Re: [boost build] - How to create symbols (.pdb) files on windows using VS2017 Community Edition? (Eko palypse) 5. Re: boost float128 and Intel's _Quad with Tux Eigen (John Maddock)
----------------------------------------------------------------------
Message: 1 Date: Mon, 3 Feb 2020 21:33:13 +0000 From: Alex.Durie <alex.durie@open.ac.uk> To: "boost-users@lists.boost.org" <boost-users@lists.boost.org> Subject: [Boost-users] boost float128 and Intel's _Quad with Tux Eigen Message-ID: <CWLP265MB0244A9FE67071B7EE7C7E2BFA3000@CWLP265MB0244.GBRP265.PROD.OUTLOOK.COM>
Content-Type: text/plain; charset="iso-8859-1"
Hi, I have written a short program utilising boost::float128 together with tux Eigen which successfully compiles and runs using g++, however it fails when I use icc. The compiler error is
/home/alex/boost/boost_1_71_0/boost/multiprecision/float128.hpp(727): error: no suitable constructor exists to convert from "const _Quad" to "boost::multiprecision::number<boost::multiprecision::backends::float128_backend, boost::multiprecision::et_off>" static number_type (min)() BOOST_NOEXCEPT { return BOOST_MP_QUAD_MIN; } ^ How can I resolve this?
My example code is; #include <iostream> #include <cmath> #include <Eigen/Dense> #include <Eigen/Eigenvalues> #include <iomanip> #include <boost/cstdfloat.hpp> #include <boost/multiprecision/float128.hpp> #include <boost/math/special_functions.hpp> #include <boost/math/constants/constants.hpp> #include <quadmath.h> #define BOOST_MP_USE_QUAD
using namespace Eigen; using namespace std;
int main(){ typedef Matrix<complex<boost::multiprecision::float128>, Dynamic, Dynamic> MatrixXcmp; MatrixXcmp C = MatrixXcmp::Random(8,8); cout<<setprecision(128)<<C<<endl<<endl; ComplexEigenSolver<MatrixXcmp> ces; ces.compute(C); return 0; }
It only fails compilation when I put in the line 'ces.compute(C);'.
I compile with icpc quadtest.cpp -std=c++14 -Qoption,cpp,--extended_float_type -O2 -DMKL_LP64 -lmkl_intel_lp64 -fp-model precise -lmkl_sequential -lmkl_core -lpthread -lm -ldl -lquadmath
Many thanks in advance,
Alex
participants (2)
-
Alex.Durie
-
John Maddock