Velocity Reviews > math.h trig functions questions (and some forgotten high school math)

# math.h trig functions questions (and some forgotten high school math)

Mark Healey
Guest
Posts: n/a

 05-21-2006
Do the trig functions in math.h work in degrees, radians or what? For
some reason it doesn't say which in "man math.h"

IIRC the arctan of a slope gives the angle. So, shouldn't atanf((float)1)
return 45 or .7something (degrees or radians) instead of some negative
number?

--
Mark Healey
marknews(at)healeyonline(dot)com

Chris McDonald
Guest
Posts: n/a

 05-21-2006
Mark Healey <(E-Mail Removed)> writes:

>Do the trig functions in math.h work in degrees, radians or what? For
>some reason it doesn't say which in "man math.h"

>IIRC the arctan of a slope gives the angle. So, shouldn't atanf((float)1)
>return 45 or .7something (degrees or radians) instead of some negative
>number?

If on a Unix/Linux system - man 3 sin

--
Chris.

Jack Klein
Guest
Posts: n/a

 05-21-2006
On Sun, 21 May 2006 03:43:36 GMT, Mark Healey <(E-Mail Removed)> wrote
in comp.lang.c:

> Do the trig functions in math.h work in degrees, radians or what? For
> some reason it doesn't say which in "man math.h"
>
> IIRC the arctan of a slope gives the angle. So, shouldn't atanf((float)1)
> return 45 or .7something (degrees or radians) instead of some negative
> number?

Doesn't your C reference book tell you? All C trigonometric functions
work in radians. If you want to work in degrees, you need to provide
functions or macros to do the conversions back and forth.

--
Jack Klein
Home: http://JK-Technology.Com
FAQs for
comp.lang.c http://c-faq.com/
comp.lang.c++ http://www.parashift.com/c++-faq-lite/
alt.comp.lang.learn.c-c++
http://www.contrib.andrew.cmu.edu/~a...FAQ-acllc.html

Keith Thompson
Guest
Posts: n/a

 05-21-2006
Mark Healey <(E-Mail Removed)> writes:
> Do the trig functions in math.h work in degrees, radians or what? For
> some reason it doesn't say which in "man math.h"
>
> IIRC the arctan of a slope gives the angle. So, shouldn't atanf((float)1)
> return 45 or .7something (degrees or radians) instead of some negative
> number?

Some negative number?

This program:

#include <stdio.h>
#include <math.h>
int main(void)
{
printf("atanf((float)1.0) = %f\n", atanf((float)1.0));
return 0;
}

gives me:

atanf((float)1.0) = 0.785398

Did you remember the "#include <math.h>"? Did you make sure to link
in the math library (on a Unix-like system, you might need a "-lm"
option).

--
Keith Thompson (The_Other_Keith) http://www.velocityreviews.com/forums/(E-Mail Removed) <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.

Joe Smith
Guest
Posts: n/a

 05-21-2006

"Keith Thompson" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Mark Healey <(E-Mail Removed)> writes:
>> Do the trig functions in math.h work in degrees, radians or what? For
>> some reason it doesn't say which in "man math.h"
>>
>> IIRC the arctan of a slope gives the angle. So, shouldn't
>> atanf((float)1)
>> return 45 or .7something (degrees or radians) instead of some negative
>> number?

>
> Some negative number?
>
> This program:
>
> #include <stdio.h>
> #include <math.h>
> int main(void)
> {
> printf("atanf((float)1.0) = %f\n", atanf((float)1.0));
> return 0;
> }
>
> gives me:
>
> atanf((float)1.0) = 0.785398
>
> Did you remember the "#include <math.h>"? Did you make sure to link
> in the math library (on a Unix-like system, you might need a "-lm"
> option).

And would atanf be in there, in particular one that accepts a float as
opposed to double? joe

Keith Thompson
Guest
Posts: n/a

 05-22-2006
"Joe Smith" <(E-Mail Removed)> writes:
> "Keith Thompson" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
>> Mark Healey <(E-Mail Removed)> writes:
>>> Do the trig functions in math.h work in degrees, radians or what? For
>>> some reason it doesn't say which in "man math.h"
>>>
>>> IIRC the arctan of a slope gives the angle. So, shouldn't
>>> atanf((float)1)
>>> return 45 or .7something (degrees or radians) instead of some negative
>>> number?

>>
>> Some negative number?
>>
>> This program:
>>
>> #include <stdio.h>
>> #include <math.h>
>> int main(void)
>> {
>> printf("atanf((float)1.0) = %f\n", atanf((float)1.0));
>> return 0;
>> }
>>
>> gives me:
>>
>> atanf((float)1.0) = 0.785398
>>
>> Did you remember the "#include <math.h>"? Did you make sure to link
>> in the math library (on a Unix-like system, you might need a "-lm"
>> option).

>
> And would atanf be in there, in particular one that accepts a float as
> opposed to double? joe

Possibly not, since atanf was added in C99 -- but if atanf weren't in
the library, that wouldn't explain the OP's result of "some negative
number".

--
Keith Thompson (The_Other_Keith) (E-Mail Removed) <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.

Joe Smith
Guest
Posts: n/a

 05-22-2006

"Keith Thompson" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> "Joe Smith" <(E-Mail Removed)> writes:
>> "Keith Thompson" <(E-Mail Removed)> wrote in message
>> news:(E-Mail Removed)...
>>> Mark Healey <(E-Mail Removed)> writes:
>>>> Do the trig functions in math.h work in degrees, radians or what? For
>>>> some reason it doesn't say which in "man math.h"
>>>>
>>>> IIRC the arctan of a slope gives the angle. So, shouldn't
>>>> atanf((float)1)
>>>> return 45 or .7something (degrees or radians) instead of some negative
>>>> number?
>>>
>>> Some negative number?
>>>
>>> This program:
>>>
>>> #include <stdio.h>
>>> #include <math.h>
>>> int main(void)
>>> {
>>> printf("atanf((float)1.0) = %f\n", atanf((float)1.0));
>>> return 0;
>>> }
>>>
>>> gives me:
>>>
>>> atanf((float)1.0) = 0.785398
>>>
>>> Did you remember the "#include <math.h>"? Did you make sure to link
>>> in the math library (on a Unix-like system, you might need a "-lm"
>>> option).

>>
>> And would atanf be in there, in particular one that accepts a float as
>> opposed to double? joe

>
> Possibly not, since atanf was added in C99 -- but if atanf weren't in
> the library, that wouldn't explain the OP's result of "some negative
> number".
>

I'm surprised that my implementation, circa ten years old, has it. joe

#ifdef _M_MRX000

/* MIPS fast prototypes for float */
/* ANSI C, 4.5 Mathematics */

/* 4.5.2 Trigonometric functions */

_CRTIMP float __cdecl acosf( float );
_CRTIMP float __cdecl asinf( float );
_CRTIMP float __cdecl atanf( float );
_CRTIMP float __cdecl atan2f( float , float );
_CRTIMP float __cdecl cosf( float );
_CRTIMP float __cdecl sinf( float );
_CRTIMP float __cdecl tanf( float );

Tim Prince
Guest
Posts: n/a

 05-22-2006
Joe Smith wrote:
> "Keith Thompson" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
>> "Joe Smith" <(E-Mail Removed)> writes:
>>> "Keith Thompson" <(E-Mail Removed)> wrote in message
>>> news:(E-Mail Removed)...
>>>> Mark Healey <(E-Mail Removed)> writes:
>>>>> Do the trig functions in math.h work in degrees, radians or what? For
>>>>> some reason it doesn't say which in "man math.h"
>>>>>
>>>>> IIRC the arctan of a slope gives the angle. So, shouldn't
>>>>> atanf((float)1)
>>>>> return 45 or .7something (degrees or radians) instead of some negative
>>>>> number?
>>>> Some negative number?
>>>>
>>>> This program:
>>>>
>>>> #include <stdio.h>
>>>> #include <math.h>
>>>> int main(void)
>>>> {
>>>> printf("atanf((float)1.0) = %f\n", atanf((float)1.0));
>>>> return 0;
>>>> }
>>>>
>>>> gives me:
>>>>
>>>> atanf((float)1.0) = 0.785398
>>>>
>>>> Did you remember the "#include <math.h>"? Did you make sure to link
>>>> in the math library (on a Unix-like system, you might need a "-lm"
>>>> option).
>>> And would atanf be in there, in particular one that accepts a float as
>>> opposed to double? joe

>> Possibly not, since atanf was added in C99 -- but if atanf weren't in
>> the library, that wouldn't explain the OP's result of "some negative
>> number".
>>

> I'm surprised that my implementation, circa ten years old, has it. joe
>
> #ifdef _M_MRX000
>
> /* MIPS fast prototypes for float */
> /* ANSI C, 4.5 Mathematics */
>
> /* 4.5.2 Trigonometric functions */
>
> _CRTIMP float __cdecl acosf( float );
> _CRTIMP float __cdecl asinf( float );
> _CRTIMP float __cdecl atanf( float );
> _CRTIMP float __cdecl atan2f( float , float );
> _CRTIMP float __cdecl cosf( float );
> _CRTIMP float __cdecl sinf( float );
> _CRTIMP float __cdecl tanf( float );
>
>

The math functions for float data type were reserved and made optional
in C89, and mandatory in C99. This seems to have produced some
confusion as to whether restricting a compiler to C89 mode, (gcc
default), may suppress the float functions, or break them, as in some
MSVC versions. Clearly, the provision for them in C89 was produced by
strong demand and intention of certain vendors to provide them.

 Thread Tools

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is OffTrackbacks are On Pingbacks are On Refbacks are Off Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post kwikius Java 1 05-22-2008 06:56 PM kwikius C++ 1 05-22-2008 06:56 PM m1@mailinator.com Computer Support 4 08-13-2007 04:00 AM CoreyWhite C++ 0 03-23-2007 07:01 PM John Smith C Programming 7 04-26-2005 01:36 PM

Advertisments