8

I am trying to use the sinf function in my C Program but it gives me an undefined reference error under MSVC 6.0, however sin works fine.

This make me curious to find the difference between sin and sinf.

What is the logical difference between sin and sinf ?

How can I implement my own sinf functionality?

Paul R
  • 208,748
  • 37
  • 389
  • 560
Viks
  • 760
  • 4
  • 12
  • 26

3 Answers3

9

sin takes a double and returns a double - sinf takes a float and returns a float.

In other words sin is double precision and sinf is single precision.

If you're using an old compiler that doesn't have sinf you can implement it as:

#define sinf(x) (float)sin((double)(x))

Paul R
  • 208,748
  • 37
  • 389
  • 560
3

sin takes a double and returns a double and is defined by ANSI C. sinf isn't.

Apprentice Queue
  • 2,036
  • 13
  • 13
3

sinf() was added to C in C99, which Microsoft Visual C++ does not fully support (even so, Visual C++ 6 was released before C99 was standardized).

You can use the sin() function, which takes a double (sinf() takes a float).

James McNellis
  • 348,265
  • 75
  • 913
  • 977