LINUX.ORG.RU

glibc double exp(double)


0

0

Не понимаю в чем проблема

#include <math.h>
...
long long int var1 = somethingfunction(); //фукция возвращает корректное значение
float var2 = exp(-5e-8 * TIME);
На что компилятор ругается undefined reference to `exp' Причем если вставить литеральное значение exp(-5e-8) - все компилируется. Различные преобразования/приведения к типу, как и определение выражения отдельной переменной (double var3 = -5e-8 * TIME; var2 = exp(var3);) не помогают.

★★

glibc double exp(double)

Это линкер ругается. скажи ему -lm

Reset ★★★★★ ()

glibc double exp(double)

Полагаю, в случае exp(-5e-8) gcc оптимизирует и превращает это в константу. А undefined reference to `exp' обычно пишется когда забыл указать юзаемую библиотеку.
Попробуй указать -lm компилятору.

l5k ()

glibc double exp(double)

скомпилировалось/слинковалось с -lm :). Спасибо.
Но где логическая ошибка не понимаю.

unisky ★★ ()

glibc double exp(double)

причем пробовал с icc -там без бубна все компилируется (только бинарник потом не работает :))

unisky ★★ ()
Ответ на: glibc double exp(double) от unisky

glibc double exp(double)

exp(const) вычисляется на этапе компиляции, поэтому тут вызова функции нет и линковать с m не нужно

Reset ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.