ok things are better but i still get errors:

> Executing task: g++-11 -g -I/usr/local/Cellar/boost/1.76.0/include/ 
> -I/usr/local/include/ -L/usr/local/Cellar/boost/1.76.0/lib/ 
> -L/usr/local/Cellar/gcc/11.1.0_1/lib/gcc/11/ 
> -L/usr/local/Cellar/gmp/6.2.1/lib/ -L/usr/local/Cellar/mpfr/4.1.0/lib/ 
> -std=gnu++20 -lmpfr -lgmp -lquadmath -lboost_system -lboost_filesystem 
> '-fext-numeric-literals' float128_example.cpp -o main <

float128_example.cpp: In function 'int main()':
float128_example.cpp:186:20: error: call of overloaded 'exp(__float128)' is 
ambiguous
  186 |   float128 e1 = exp(1.Q); // Note argument to exp is type float128.
      |                 ~~~^~~~~
In file included from 
/usr/local/Cellar/gcc/11.1.0_1/include/c++/11.1.0/cmath:45,
                 from 
/usr/local/Cellar/boost/1.76.0/include/boost/config/no_tr1/cmath.hpp:21,
                 from 
/usr/local/Cellar/boost/1.76.0/include/boost/math/tools/config.hpp:19,
                 from 
/usr/local/Cellar/boost/1.76.0/include/boost/math/cstdfloat/cstdfloat_types.hpp:18,
                 from 
/usr/local/Cellar/boost/1.76.0/include/boost/cstdfloat.hpp:18,
                 from float128_example.cpp:19:
/usr/local/Cellar/gcc/11.1.0_1/lib/gcc/11/gcc/x86_64-apple-darwin20/11.1.0/include-fixed/math.h:376:15:
 note: candidate: 'double exp(double)'
  376 | extern double exp(double);
      |               ^~~
In file included from 
/usr/local/Cellar/boost/1.76.0/include/boost/config/no_tr1/cmath.hpp:21,
                 from 
/usr/local/Cellar/boost/1.76.0/include/boost/math/tools/config.hpp:19,
                 from 
/usr/local/Cellar/boost/1.76.0/include/boost/math/cstdfloat/cstdfloat_types.hpp:18,
                 from 
/usr/local/Cellar/boost/1.76.0/include/boost/cstdfloat.hpp:18,
                 from float128_example.cpp:19:
/usr/local/Cellar/gcc/11.1.0_1/include/c++/11.1.0/cmath:226:3: note: candidate: 
'constexpr long double std::exp(long double)'
  226 |   exp(long double __x)
      |   ^~~
/usr/local/Cellar/gcc/11.1.0_1/include/c++/11.1.0/cmath:222:3: note: candidate: 
'constexpr float std::exp(float)'
  222 |   exp(float __x)
      |   ^~~
The terminal process "zsh '-c', 'g++-11 -g 
-I/usr/local/Cellar/boost/1.76.0/include/ -I/usr/local/include/ 
-L/usr/local/Cellar/boost/1.76.0/lib/ 
-L/usr/local/Cellar/gcc/11.1.0_1/lib/gcc/11/ -L/usr/local/Cellar/gmp/6.2.1/lib/ 
-L/usr/local/Cellar/mpfr/4.1.0/lib/ -std=gnu++20 -lmpfr -lgmp -lquadmath 
-lboost_system -lboost_filesystem '-fext-numeric-literals' float128_example.cpp 
-o main'" terminated with exit code: 1.

Compiling the following example:

#include <iomanip>
#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
#include <boost/multiprecision/cpp_bin_float.hpp>
#include <boost/multiprecision/float128.hpp>
#include <boost/math/special_functions/gamma.hpp>
#include <boost/multiprecision/cpp_dec_float.hpp>
#include <boost/math/constants/constants.hpp>

int main()
{
   using boost::multiprecision::float128;

   float128 b = 2;
   std::cout << std::numeric_limits<float128>::digits << std::endl;
   std::cout << std::numeric_limits<float128>::digits10 << std::endl;
   std::cout << std::setprecision(std::numeric_limits<float128>::max_digits10) 
<< log(b) << std::endl;
   constexpr float128 pi = 
3.1415926535897932384626433832795028841971693993751058Q;
   return 0;
}   

I get:

> Executing task: g++-11 -g -I/usr/local/Cellar/boost/1.76.0/include/ 
> -I/usr/local/include/ -L/usr/local/Cellar/boost/1.76.0/lib/ 
> -L/usr/local/Cellar/gcc/11.1.0_1/lib/gcc/11/ 
> -L/usr/local/Cellar/gmp/6.2.1/lib/ -L/usr/local/Cellar/mpfr/4.1.0/lib/ 
> -std=gnu++20 -lmpfr -lgmp -lquadmath -lboost_system -lboost_filesystem 
> '-fext-numeric-literals' fs_main.cpp -o main <

Undefined symbols for architecture x86_64:
  "__Z17quadmath_snprintfPcmPKcz", referenced from:
      
__ZNK5boost14multiprecision8backends16float128_backend3strB5cxx11ElSt13_Ios_Fmtflags
 in ccGxvsSR.o
  "__Z4logqg", referenced from:
      
__ZN5boost14multiprecision8backends8eval_logERNS1_16float128_backendERKS2_ in 
ccGxvsSR.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
The terminal process "zsh '-c', 'g++-11 -g 
-I/usr/local/Cellar/boost/1.76.0/include/ -I/usr/local/include/ 
-L/usr/local/Cellar/boost/1.76.0/lib/ 
-L/usr/local/Cellar/gcc/11.1.0_1/lib/gcc/11/ -L/usr/local/Cellar/gmp/6.2.1/lib/ 
-L/usr/local/Cellar/mpfr/4.1.0/lib/ -std=gnu++20 -lmpfr -lgmp -lquadmath 
-lboost_system -lboost_filesystem '-fext-numeric-literals' fs_main.cpp -o 
main'" terminated with exit code: 1.

Note that if I compile the following example without using Boost I have no 
linking errors with quadmath:

#include <quadmath.h>
#include <iostream>
#include <stdlib.h>
#include <stdio.h>

int print(const char *label, __float128 r) {
  int prec = 20;
  int width = 46;
  char buf[128];

  int n = quadmath_snprintf(buf, sizeof buf, "%+-#*.36Qe", width, r);
  printf ("%s: %s\n", label, buf);
  return 0;
}

int main () {
  __float128 x = 3.14159265358979323846264338327950288q;
  print("value", x);
  print("log", logq(x));
  print("log10", log10q(x));
  print("cos", cosq(x));
  print("sin", sinq(x));
  print("sqrt", sqrtq(x));
}

Executing task: ./es1.out <

value: +3.141592653589793238462643383279502797e+00   
log: +1.144729885849400174143427351353058656e+00   
log10: +4.971498726941338543512682882908988723e-01   
cos: -1.000000000000000000000000000000000000e+00   
sin: +8.671810130123781024797044026043352254e-35   
sqrt: +1.772453850905516027298167483341145140e+00

The settings are:

"tasks": [
      {
        "label": "Build with g++ 11",
        "type": "shell",
        "command": "g++-11",
        "args": [
          "-g",
          "-std=gnu++20”,
          "es1.cpp",
          "-L/usr/local/Cellar/gcc/11.1.0_1/lib/gcc/11/",
          "-lquadmath",
          "-o",
          "es1.out"
        ],
        "group": {
          "kind": "build",
          "isDefault": true
        },
        "problemMatcher": []
      },

> Il giorno 21 lug 2021, alle ore 13:08, John Maddock via Boost-users 
> <boost-users@lists.boost.org> ha scritto:
> 
> On 20/07/2021 18:44, Stefano Gragnani via Boost-users wrote:
>> 
>> Hi,
>> 
>> I'm having trouble compiling code that contains float128 data type.
>> I'm using MacOS Big Sur 11.4.
>> Compiler: gcc version 11.1.0 (Homebrew GCC 11.1.0_1)
>> 
>> I have no other problems with Boost, the only problem is when I use float128.
>> 
>> Please note that I have no problem compiling using libquadmath without using 
>> Boost using the __float128 data type.
>> 
>> I use Visual Studio Code:
>> 
> You can manually fix this by defining BOOST_HAS_FLOAT128 on the command line. 
>  However, you may still hit other errors as __float128 and quadmath.h aren't 
> really fully supported in ISO C++ mode.  The correct fix is to use 
> -std=gnu++20, and then GNU extensions including __float128 are turned on.
> 
> HTH, John.
> 
> 
> -- 
> This email has been checked for viruses by Avast antivirus software.
> https://www.avast.com/antivirus
> 
> _______________________________________________
> Boost-users mailing list
> Boost-users@lists.boost.org
> https://lists.boost.org/mailman/listinfo.cgi/boost-users

_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
https://lists.boost.org/mailman/listinfo.cgi/boost-users

Reply via email to