2013-10-07 14 views
10

Lo standard IEEE 754 definisce la radice quadrata dello zero negativo come zero negativo. Questa scelta è abbastanza facile da razionalizzare, ma altre scelte, come la definizione di sqrt(-0.0) come NaN, possono essere razionalizzate e sono più facili da implementare nell'hardware. Se il timore fosse che i programmatori scrivessero if (x >= 0.0) then sqrt(x) else 0.0 e fossero morsi da questa espressione valutando a NaN quando x è -0.0, allora sqrt(-0.0) potrebbe essere stato definito come +0.0 (in realtà, per questa particolare espressione, i risultati sarebbero ancora più consistenti).Quale algoritmo numerico è semplificato definendo sqrt (-0.0) come -0.0?

Esiste un algoritmo numerico in particolare in cui avere sqrt(-0.0) definito come -0.0 semplifica la logica dell'algoritmo stesso?

+0

L'articolo [wikipedia] (http://en.wikipedia.org/wiki/Negative_zero) è accettabile. Probabilmente dovresti chiedere a questo in matematica.se –

risposta

0

L'unico risultato matematicamente ragionevole è 0. C'è una ragionevole domanda se dovrebbe essere +0 o -0. Per la maggior parte dei calcoli non fa alcuna differenza, ma ci sono alcune espressioni complesse specifiche per le quali il risultato ha più senso secondo la convenzione -0. I dettagli esatti sono al di fuori dello scopo di questo sito, ma questo è il succo di ciò.

Posso spiegarlo ancora quando non sono in vacanza, se qualcun altro non mi picchia.

+3

Questa è davvero una non risposta. Quali sono alcune espressioni in cui la convenzione -0 ha più senso? – pburka

+3

@pburka Gli esempi sono nell'articolo "Funzioni elementari o molto rumore del bit del segno di niente", l'autorevole riferimento che Stephen ha indicato prima di questa domanda era una domanda StackOverflow: http://people.freebsd.org/~das/kahan86branch. PDF . Come dice lui, i dettagli esatti non rientrano nell'ambito di "programmazione". Il programmatore dovrebbe, almeno nel caso di 'sqrt (-0.0)', "Invece di pensare a +0 e -0 come valori numerici distinti, pensa al loro bit di segno come a una variabile ausiliaria che trasmette un bit di informazione (o disinformazione) ", e fidati del matematico che ha senso –

+2

@PascalCuoq: Stranamente, l'articolo del bit di segno di Kahan è quello che mi ha convinto che' sqrt (-0.0) 'essendo' 0.0' avrebbe avuto più senso, per coerenza con il modo in cui Kahan definisce la radice quadrata complessa. Se sto leggendo bene, il risultato di una chiamata CSQRT (su un input finito) ha sempre una parte reale il cui bit di segno è disinserito. (E credo che sia il comportamento raccomandato anche dal C99 Allegato G.) IOW, CSQRT mappa sempre i quadranti 1 e 2 sul quadrante 1 e sui quadranti 3 e 4 sul quadrante 4. (Usando il segno dello zero per determinare l'appartenenza al quadrante nel modo ovvio.) –

Problemi correlati