Reputation: 579
I am compiling a linux program on cygwin (teaching a class with students that have windows computers) and have run into a problem with compatibility I think.
The error I get is this:
`$ Make
g++ -fopenmp -c start.cpp errors.cpp
start.cpp: In function ‘int main(int, char**)’:
start.cpp:1184:54: error: ‘log10l’ was not declared in this scope
else po[i]=log10l(p_rj[i]/(1-p_rj[i]));
^
Makefile:7: recipe for target 'start.o' failed
Make: *** [start.o] Error 1`
The log10l is not declared. A little research on cygwin's site about this and I found this page which lists "non implemented system interfaces" and log10l is on there.
Do I need to replace 'log10l' with a compatible function and why would't it be compatible?
App compiles without error on my linux box.
Any Help would be much appreciated.
LP
Upvotes: 1
Views: 854
Reputation: 1703
Cygwin does not currently support long double
math functions, of which log10l
is one. You can use log10
instead, but it is limited to a double
type.
Upvotes: 0
Reputation: 117981
If that function is just taking the log base 10 of the inner expression, you can just replace it with
else po[i] = std::log10(p_rj[i]/(1-p_rj[i]));
As long as you
#include <cmath>
Upvotes: 1