sinf compiler error I don't understand

Ian Malone ibmalone at
Sat Apr 2 23:13:45 UTC 2011

On 1 April 2011 23:29, les <hlhowell at> wrote:
> First let me say, that while I have used C++ I don't normally use it for
> my work and so am not throughly familiar with what it does, so if this
> is due to a C++ error, please be gentle.
> I am working on some DSP code I developed a long time ago, and now want
> to port it to 64 bit.  I have read several articles on the differences
> in C and C++ between 32 and 64 bit, but this has me stymied.
> Here is the smallest sample I have been working with to show the current
> error:
> #include <math.h>
> #include <stdlib.h>
> #include <stdio.h>
> #include <string.h>
> main()
> {
>    long double temp;
>    printf ("M_PI=%e\n",M_PI);
>    printf ("sin 90 = %e\n",sinf(M_PI/2));
>    temp=M_PI/2.0;
> // the following line won't compile for temp
> // regardless of how temp is declared (float, double, long double)
> //   printf ("sin 90 = %e\n",sinf(temp));
> }
> Clearly sinf is recognized, and compiles and runs.  It returns 1.000 as
> expected for M_PI/2.  But the line that is commented out will not
> compile.
> If you can see the issue here, please let me know.

> yum info GCC shows:
> Name        : gcc
> Arch        : x86_64
> Version     : 4.5.1
> Release     : 4.fc14

F13 here:
Name        : gcc
Arch        : x86_64
Version     : 4.4.5
Release     : 2.fc13

How are you compiling it? If I uncomment the last printf then compile like:
$ g++ -Wall -o test

I get: warning: ISO C++ forbids declaration of ‘main’ with no type

But otherwise compiles and runs as expected. I'd point out that sinf
is float precision, sin is double and sinl long double. With c++ I
might expect type issues (as you did in your comment), but struggling
to see anything wrong with this. Any particular error when it fails to


More information about the users mailing list