A una certa ora (comunque troppo presto) mi accorgo che non capisco più quello che tento di fare, allora chiudo tutto e smetto. Poi capace che vado anche a dormire presto, come ieri. E mi capita di sognare che sono al Paradiso della Brugola che sto movimentando tweets con un hand-truck (sì, lo so che da noi non si chiamano così ma il sogno era quello). Sì lo so che non si usa un carrello per spostare i tweets (spostarli dove?) ma nel sogno era così. E il sogno è mio (quello) :wink:
Mi sono svegliato con la convinzione che dovevo riprendere un argomento discusso su Facebook e del quale ho anche fatto un post: Sul calcolo di base elevato esponente.
Colpa anche di GLF, Gianluigi Filippelli, che l’altro giorno ha messo su Schema per affrontare il calcolo di un esponenziale.
Prima o poi ritorno sullo schema di GLF, ma intanto continuavo a chiedermi come si deve intendere il segno del numero da elevare a potenza.
Cioè quando scrivo: r = b ^ e
cosa intendo davvero? b
è negativo di suo o invece sto calcolando un’espressione che deve dare un risultato negativo?
Secondo me –potrei sbagliare, anzi aiuto!!!– nei casi normali (ahemmm…) mi viene da pensare che sia r = s * b ^ e
dove s
è il segno.
In queste condizioni ecco il programmino (elementare; non so se esista una funzione tipo sign()
, la mia riga 6), pows.c
:
#include <stdio.h> #include <math.h> double pows(double n, double e) { double s; s = ((n - fabs(n)) >= 0.0 ? 1.0 : -1.0); return(s * pow(fabs(n), e)); } int main () { double bp = 2.0, bn = -2.0, e = 7.0 / 3.0; printf("%lf ^ %lf = %lf\n", bp, e, pows(bp, e)); printf("%lf ^ %lf = %lf\n", bn, e, pows(bn, e)); return(0); }
Niente più nan
. Sensato? (Help!!!) :mrgreen:
Nota: Il Paradiso della Brugola esiste davvero; e io che mi pensavo che era una cosa di Jane e –prima ancora– di Matteo e invece no, c’è. Se siete di quelle parti provatelo. E dite che vi mandiamo noi, Jane, Matteo e me. Nèh! (come si dice “nèh” in milanese?) :grin:
Archiviato in:C/C++, Linguaggi