[Python-ideas] Fwd: Trigonometry in degrees

Steven D'Aprano steve at pearwood.info
Mon Jun 11 21:09:25 EDT 2018


On Mon, Jun 11, 2018 at 01:18:10PM -0700, Chris Barker via Python-ideas wrote:
> On Mon, Jun 11, 2018 at 10:24 AM, Michael Selik <mike at selik.org> wrote:
> 
> > Would sind and cosd make Euler's formula work correctly?
> 
> 
> Not trying to pick on you, but this question shows a key misunderstanding:
> 
> There is nothing inherently more accurate in using degrees rather than
> radians for trigonometry.

Actually there is: using radians, the only "nice" angle that can be 
represented exactly is 0. With degrees, we can represent a whole lot of 
"nice" angles exactly. "Nice", is of course subjective, but most of us 
would recognise that 36° represented as exactly 36.0 is nice but being 
*approximately* represented as 0.6283185307179586 is not.

Using radians, we have two sources of rounding error:

- π cannot be represented exactly as a float, so we have to use a 
  number pi which is ever-so-slightly off;

- plus the usual round-off error in the algorithm;

while using degrees, we only have the second one (since 180° *can* be 
represented exactly, as the float 180.0).

And with the degrees implementation, we should be able to use correctly 
rounded roots for many of our "nice" angles.


> And every computer math lib I've even seen uses floating point radians for
> trig functions, so unless you're really going to implement trig from
> degrees from scratch

Well that's the whole point of the discussion.


> Oh, and radians are the more "natural" units (in fact unitless) for math,

Degrees are unit-less too. 180° = π radians. That's just a scaling 
factor difference.

Unless you're doing symbolic maths, differentiating or integrating trig 
functions, or certain geometric formulae which are "neater" in radians 
than in degrees, there's no real advantage to radians.

Degrees are simply a much more practical unit of angle for practical 
work.


> and the only way that things like the Euler identity work.

Its not the *only* way.

https://math.stackexchange.com/questions/1368049/eulers-identity-in-degrees


> Which is why computational math libs use them.

Actually, more maths libraries than you might guess offer trig functions 
in degrees, or scaled by pi, e.g:

https://docs.oracle.com/cd/E19957-01/806-3568/ncg_lib.html

Julia and Matlab provide sind etc, and although I cannot find a 
reference right now, I seem to recall the latest revision to the IEEE 
754 standard suggesting them as optional functions.



-- 
Steve


More information about the Python-ideas mailing list