[lug] math.h Weirdness
    Lori Reed 
    lorireed at lightning-rose.com
       
    Mon Mar 12 20:59:09 MDT 2007
    
    
  
The sqrt() should certainly be prototyped by including math.h, but many 
header files include other header files, so it may actually be 
prototyped elsewhere.
However, the linker doesn't care about header files, so the problem is 
you're not linking in the appropriate library. Try adding -lm to the 
link command.
This page directly addresses linking sqrt()
http://www.network-theory.co.uk/docs/gccintro/gccintro_17.html
Lori
Bill Thoen wrote:
> Am I mistaken in thinking that in C the sqrt() function is prototyped in
> math.h? I just tried to build a simple C program that called sqrt() and the
> linker balked. I then tried:
> 
> $ grep sqrt /usr/include/math.h
> define M_2_SQRTPI     1.12837916709551257390  /* 2/sqrt(pi) */
> define M_SQRT2        1.41421356237309504880  /* sqrt(2) */
> define M_SQRT1_2      0.70710678118654752440  /* 1/sqrt(2) */
> define M_2_SQRTPIl    1.1283791670955125738961589031215452L  /* 2/sqrt(pi) */
> define M_SQRT2l       1.4142135623730950488016887242096981L  /* sqrt(2) */
> define M_SQRT1_2l     0.7071067811865475244008443621048490L  /* 1/sqrt(2) */
> 
> It's not there! Shouldn't it be? If not, where is it these days, or has the
> square root been retired?
    
    
More information about the LUG
mailing list