Se guardiamo allo stato di progetto Comittee del langage C: n1570 e in particolare alla Annex G
sul comportamento delle complesse funzioni matematiche, possiamo vedere che il complesso esponenziale ha il seguente comportamento all'infinito:Perché cexp (+ infinito + I * infinito) = +/- infinito + I * NaN nel linguaggio C?
cexp(+infinity+I*infinity)=+/-infinity+I*NaN
(where the sign of the real part of the result is unspecified).
La mia domanda è: perché?
Da un punto di vista matematico, se ci avviciniamo all'infinito della parte reale e immaginaria allo stesso modo, il limite è un infinito complesso (vedi Wolfram Alpha per esempio), che corrisponde a un modulo infinito ea un argomento indefinito.
Inoltre, se si osserva il comportamento della funzione cexp
, è paragonabile per la sua parte reale e immaginaria (vedere grafici 3D su Wolfram Alpha).
Quindi, mi sarei aspettato:
cexp(+infinity+I*infinity)=+/-infinity+/-I*infinity
invece di:
cexp(+infinity+I*infinity)=+/-infinity+I*NaN
So che c'è un ottimo motivo per questo, ma io non lo capisco. Qualcuno potrebbe spiegarmi la logica dietro a questo?
EDIT: ecco un riassunto dei link:
La sezione G.5.1 del documento "Razionale per lo standard internazionale - Linguaggi di programmazione - C" sembra contenere alcuni commenti rilevanti sulla gestione di valori speciali per funzioni complesse incluso cexp(). Puoi trovarlo qui: http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf – njuffa
Grazie per questo link. È molto istruttivo ma non porta la risposta riguardo al caso "cexp (infinito + I * infinito)". – Vincent
L'unico documento di cui sono a conoscenza spiega il processo di riflessione del comitato per gli standard è il documento razionale. A meno che non si riescano a rintracciare le note per le riunioni della commissione (non so se i comitati ISO forniscono note pubbliche) o avere accesso a un membro della commissione temo la domanda sul perché lo standard dica ciò che dice rimarrà senza risposta. – njuffa