Precision difference when using sm_13 with floats

Hello all, i am new to this forum but i am not new to CUDA, i am hoping that someone might have a definite to answer to my wandering.
i noticed that when using floats in my kernel, using sm_13 gives better accuary and less performance than if im using any other compiler flag(sm_12 for example), please note that i haven’t changed the data types to double,its the same exact code only different compiler flags, what is the reason for this ? i am using a GTX 295 and the latest CUDA SDK.(my code has sinf and cosf functions)
Thanks in advance.

You probably do have double precision values in your code, but don’t realize it. Double check how you are specifying constants and which library functions you are using to ensure that there isn’t any double precision sneaking in.

could it be the M_PI value im using???
i am using the M_PI constant from math.h, this is the only constant i have all the values are either unsigned int or float

M_PI is almost certainly defined as a double in math.h.

yeah you are correct,thank you both for your help :)