I think this suggestion should result in a library on PyPi, which can then 
be considered for the standard library if it sees a lot of use.

Also, modern OpenGL does this just like Python does: all of the 
trigonometric functions take radians and a "radians" function is provided.

Best,

Neil

On Saturday, June 9, 2018 at 2:55:12 PM UTC-4, Robert Vanden Eynde wrote:
>
> Indeed what we need for exact math for multiple of 90 (and 30) is ideas 
> from the symbolic libraries (sympy, sage).
>
> Of course the symbolic lib can do more like :
>
> sage: k = var('k', domain='integer')
> sage: cos(1 + 2*k*pi)
> cos(1)
> sage: cos(k*pi)
> cos(pi*k)
> sage: cos(pi/3 + 2*k*pi)
> 1/2
>
> But that would concern symbolic lib only I think.
>
> For the naming convention, scipy using sindg (therefore Nor sind nor 
> sindeg) will make the sind choice less obvious. However if Matlab and Julia 
> chooses sind that's a good path to go, Matlab is pretty popular, as other 
> pointed out, with Universities giving "free" licences and stuff. With that 
> regards, scipy wanting to "be a replacement to Matlab in python and open 
> source" it's interesting they chose sindg and not the Matlab name sind.
>
> For the "d" as suffix that would mean "d" as "double" like in opengl. 
> Well, let's remember that in Python there's only One floating type, that's 
> a double, and it's called float... So python programmers will not think 
> "sind means it uses a python float and not a python float32 that C99 sinf 
> would". Python programmers would be like "sin takes float in radians, sind 
> takes float in degrees or int, because int can be converted to float when 
> there's no overflow".
>
> Le sam. 9 juin 2018 à 04:09, Wes Turner <wes.t...@gmail.com <javascript:>> 
> a écrit :
>
>> # Python, NumPy, SymPy, mpmath, sage trigonometric functions
>> https://en.wikipedia.org/wiki/Trigonometric_functions
>>
>> ## Python math module
>> https://docs.python.org/3/library/math.html#trigonometric-functions
>> - degrees(radians): Float degrees
>> - radians(degrees): Float degrees
>>
>> ## NumPy
>>
>> https://docs.scipy.org/doc/numpy/reference/routines.math.html#trigonometric-functions
>> - degrees(radians) : List[float] degrees
>> - rad2deg(radians): List[float] degrees
>> - radians(degrees) : List[float] radians
>> - deg2rad(degrees): List[float] radians
>>
>> https://docs.scipy.org/doc/numpy/reference/generated/numpy.sin.html
>>
>>
>> ## SymPy
>>
>> http://docs.sympy.org/latest/modules/functions/elementary.html#sympy-functions-elementary-trigonometric
>>
>> http://docs.sympy.org/latest/modules/functions/elementary.html#trionometric-functions
>>  
>>
>> - sympy.mpmath.degrees(radians): Float degrees
>> - sympy.mpmath.radians(degrees): Float radians
>>
>> - https://stackoverflow.com/questions/31072815/cosd-and-sind-with-sympy
>>   - cosd, sind
>>   - 
>> https://stackoverflow.com/questions/31072815/cosd-and-sind-with-sympy#comment50176770_31072815
>>
>>     > Let x, theta, phi, etc. be Symbols representing quantities in 
>> radians. Keep a list of these symbols: angles = [x, theta, phi]. Then, at 
>> the very end, use y.subs([(angle, angle*pi/180) for angle in angles]) to 
>> change the meaning of the symbols to degrees"
>>
>>
>> ## mpmath
>> http://mpmath.org/doc/current/functions/trigonometric.html
>> - sympy.mpmath.degrees(radians): Float degrees
>> - sympy.mpmath.radians(degrees): Float radians
>>
>>
>> ## Sage
>>
>> https://doc.sagemath.org/html/en/reference/functions/sage/functions/trig.html
>>
>>
>>
>> On Friday, June 8, 2018, Robert Vanden Eynde <robertva...@hotmail.com 
>> <javascript:>> wrote:
>>
>>> - Thanks for pointing out a language (Julia) that already had a name 
>>> convention. Interestingly they don't have a atan2d function. Choosing the 
>>> same convention as another language is a big plus.
>>>
>>> - Adding trig function using floats between 0 and 1 is nice, currently 
>>> one needs to do sin(tau * t) which is not so bad (from math import tau, tau 
>>> sounds like turn).
>>>
>>> - Julia has sinpi for sin(pi*x), one could have sintau(x) for sin(tau*x) 
>>> or sinturn(x).
>>>
>>> Grads are in the idea of turns but with more problems, as you guys said, 
>>> grads are used by noone, but turns are more useful. sin(tau * t) For The 
>>> Win.
>>>
>>> - Even though people mentionned 1/6 not being exact, so that advantage 
>>> over radians isn't that obvious ?
>>>
>>> from math import sin, tau
>>> from fractions import Fraction
>>> sin(Fraction(1,6) * tau)
>>> sindeg(Fraction(1,6) * 360)
>>>
>>> These already work today by the way.
>>>
>>> - As you guys pointed out, using radians implies knowing a little bit 
>>> about floating point arithmetic and its limitations. Integer are more 
>>> simple and less error prone. Of course it's useful to know about floats but 
>>> in many case it's not necessary to learn about it right away, young 
>>> students just want their player in the game move in a straight line when 
>>> angle = 90.
>>>
>>> - sin(pi/2) == 1 but cos(pi/2) != 0 and sin(3*pi/2) != 1 so sin(pi/2) is 
>>> kind of an exception.
>>>
>>>
>>>
>>>
>>> Le ven. 8 juin 2018 à 09:11, Steven D'Aprano <st...@pearwood.info 
>>> <javascript:>> a écrit :
>>>
>>>> On Fri, Jun 08, 2018 at 03:55:34PM +1000, Chris Angelico wrote:
>>>> > On Fri, Jun 8, 2018 at 3:45 PM, Steven D'Aprano <st...@pearwood.info 
>>>> <javascript:>> wrote:
>>>> > > Although personally I prefer the look of d as a prefix:
>>>> > >
>>>> > > dsin, dcos, dtan
>>>> > >
>>>> > > That's more obviously pronounced "d(egrees) sin" etc rather than 
>>>> "sined"
>>>> > > "tanned" etc.
>>>> > 
>>>> > Having it as a suffix does have one advantage. The math module would
>>>> > need a hyperbolic sine function which accepts an argument in; and
>>>> > then, like Charles Napier [1], Python would finally be able to say "I
>>>> > have sindh".
>>>>
>>>> Ha ha, nice pun, but no, the hyperbolic trig functions never take 
>>>> arguments in degrees. Or radians for that matter. They are "hyperbolic 
>>>> angles", which some electrical engineering text books refer to as 
>>>> "hyperbolic radians", but all the maths text books I've seen don't call 
>>>> them anything other than a real number. (Or sometimes a complex number.)
>>>>
>>>> But for what it's worth, there is a correspondence of a sort between 
>>>> the 
>>>> hyperbolic angle and circular angles. The circular angle going between 
>>>> 0 
>>>> to 45° corresponds to the hyperbolic angle going from 0 to infinity.
>>>>
>>>> https://en.wikipedia.org/wiki/Hyperbolic_angle
>>>>
>>>> https://en.wikipedia.org/wiki/Hyperbolic_function
>>>>
>>>>
>>>> > [1] Apocryphally, alas.
>>>>
>>>> Don't ruin a good story with facts ;-)
>>>>
>>>>
>>>>
>>>> -- 
>>>> Steve
>>>> _______________________________________________
>>>> Python-ideas mailing list
>>>> python...@python.org <javascript:>
>>>> https://mail.python.org/mailman/listinfo/python-ideas
>>>> Code of Conduct: http://python.org/psf/codeofconduct/
>>>>
>>> _______________________________________________
>> Python-ideas mailing list
>> python...@python.org <javascript:>
>> https://mail.python.org/mailman/listinfo/python-ideas
>> Code of Conduct: http://python.org/psf/codeofconduct/
>>
>
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to