Sono terribilmente infastidito dall'inaccuratezza delle funzioni trigonometriche intrinseche nel CLR. E 'ben noto chePrecisione di Math.Sin() e Math.Cos() in C#
Math.Sin(Math.PI)=0.00000000000000012246063538223773
invece di 0. Qualcosa di simile accade con Math.Cos(Math.PI/2)
.
Ma quando sto facendo una lunga serie di calcoli che in casi particolari restituiscono
Math.Sin(Math.PI/2+x)-Math.Cos(x)
e il risultato è zero per x = 0.2, ma non zero per x = 0.1 (provare per credere). Un altro problema è quando l'argomento è un numero elevato, l'inaccuratezza diventa proporzionalmente grande.
Quindi mi chiedo se qualcuno ha codificato una migliore rappresentazione delle funzioni trigonometriche in C# per la condivisione con il mondo. Il CLR chiama alcune librerie matematiche C standard che implementano CORDIC o qualcosa di simile? link: wikipedia CORDIC
Quanto credete che la rappresentazione di pi come doppio sia esatta? –
Se vuoi una matematica simbolica, fai matematica simbolica. Se usi i tipi a virgola mobile, ottieni precisione finita. – AakashM
-1 per non "fare i compiti", e anche per pensare che 'System.Math' è parte di C# (suggerimento: fa parte del.NET Framework). –