Search code examples
c++compiler-errorscygwin

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


Solution

  • 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>