general clarification#5

The floating point math functions from math.h have ambiguous bindings when passed int values.

Use double precision values for these functions.

For example,

   int x;
   ...
   ans=sqrt(x)
will cause a compile time error because sqrt may be cast to a float or double argument type. Pass double values and you should be fine:
   int x;
   ...

   double xtmp=x;
   ans=sqrt(x);
or
   ans=sqrt((double)x)

This has been seen with

sqrt
atan
pow
but you should assume they problem exists with all math functions.