LP_640
LP_640

Reputation: 579

Cygwin compile error: "log10l" not recognized (declared)

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

Answers (2)

Yaakov
Yaakov

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

Cory Kramer
Cory Kramer

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

Related Questions