En la creación de funciones trigonométricas my_sind(d)
, my_cosd(d)
, my_tand(d)
, que utiliza un argumento grado más que un un radián y proporcionan respuestas exactas a múltiplos de 90, me di cuenta de que el resultado era a veces -0.0
en lugar de 0.0
.
my_sind( 0.0) --> 0.0
my_sind(-0.0) --> -0.0
my_sind(180.0) --> -0.0
my_sind(360.0) --> 0.0
sin()
y tan()
normalmente devuelve el mismo resultado de signo cero para una entrada de signo cero dada. Tiene sentido que my_sin()
coincida sin()
con esas entradas.
my_sind( 0.0) alike sin( 0.0) --> 0.0
my_sind(-0.0) alike sin(-0.0) --> -0.0
La pregunta es : ¿para qué número entero non_zero_n
debe / puede devolver el resultado nunca -0.0
para my_sind(180*non_zero_n)
, my_cosd(180*n + 180)
, my_tand(180*non_zero_n)
?
Es bastante fácil de codificar, por lo que solo f(-0.0)
produce -0.0
y termina con él. Simplemente preguntándome si hay alguna razón para hacer otro f(x)
retorno -0.0
por otro ( distinto de cero ) x
y la importancia de asegurar ese signo.
Nota: Esta no es una cuestión de por qué ocurre 0.0
vs. -0.0
Esto no es por qué cos(machine_pi/4)
no regresa 0.0
. Tampoco se trata de cómo controlar la generación de 0.0
o -0.0
. Lo veo mejor como una pregunta de diseño.
sind(180), sind(-180), sind(360), sind(-360),...
?