How to use cmath Bessel functions with Mac


So I am using Mac with the developer tools coming from XCode and according to other answers I should compile using something like:

g++ --std=c++17  test.cpp -o test

or using clang++ but I still I am having trouble making the script find the special functions. What else can I try?

Minimum example

#include <cmath>
#include <iostream>

int main(int argc, char *argv[]){
  double x = 0.5;
  double y = std::cyl_bessel_k(2,x);
  std::cout << "x="<<x <<" -> y(x)="<<y <<std::endl;
  return 0;


main2.cpp:6:19: error: no member named 'cyl_bessel_k' in namespace 'std'
  double y = std::cyl_bessel_k(2,x);
1 error generated.

clang++ version 13.0.0

>Solution : says:


Implementations that do not support C++17, but support ISO 29124:2010,
provide this function if __STDCPP_MATH_SPEC_FUNCS__ is defined by
the implementation to a value at least 201003L and if the user
defines __STDCPP_WANT_MATH_SPEC_FUNCS__ before including any
standard library headers.

Implementations that do not support ISO 29124:2010 but support TR
19768:2007 (TR1), provide this function in the header tr1/cmath and
namespace std::tr1.

Armed with your compiler version, I checked and saw that neither Apple clang nor clang++’s own stdlib have these functions. Bad news! You’ll need to get them e.g. from boost, or by implementing them yourself. The example on actually does have an implementation for you.

Leave a ReplyCancel reply