Где найти оригинальные файлы cmath
или math.h
?
Мне нужно использовать в моей программе функцию comp_ellint_1 (double). Это заявлено в стандарте C++17
в разделе «Специальные функции».
А вот мои компиляторы (пробовал g++/clang++
и т.д.) скажи это.
Выяснил, что в файлах ядра, где есть стандартные math.h и cmath
, таких функций, заявленных в cmath
, нет. Вроде 99 стандарт ...
Вы компилируете с помощью -std = C++ 17 или аналогичного?
Согласно эта страница, они поставлялись с GCC 7.
Эти функции доступны в gcc, начиная с версии 7.1, и в clang, начиная с 3.9. Вам нужно либо обновить свой компилятор, либо использовать другую реализацию (согласно en.cppreference.com, вы можете использовать Boost.math
Я использую macOs. Все компиляторы загружаются в пакетах DeveloperTools. Как узнать, какая у меня версия? Извините, я новичок :(
Не уверен, как это работает на macOS, но попробуйте открыть терминал и сделать clang -v
У меня это работает. Вам потребуется g ++ версии 7 или выше, и вы должны указать C++17
или выше.
#include <ctgmath>
#include <iostream>
int main(int argc, char *argv[]){
double x = 0.5;
double y = std::comp_ellint_1(x);
std::cout << "x = "<<x <<" -> y(x) = "<<y <<std::endl;
return 0;
}
Скомпилирован и запущен следующим образом
$ g++ --std=c++17 test.cpp -o test
$ ./test
x=0.5 -> y(x)=1.68575
$
Кстати, в Ubuntu 18.04 заголовки находятся в /usr/include/c++/n/tr1/
, где n=7,8, or 9
(основные версии g ++, которые поддерживают специальные математические функции, по состоянию на декабрь 2019 г.)
Добро пожаловать в StackOverflow. Пожалуйста, добавляйте свой код и сообщения об ошибках прямо в вопрос, а не в изображения. Также см. meta.stackoverflow.com/questions/285551/…