Successivo: Problemi virgola mobile POSIX, Precedente: Interi a precisione arbitraria, Su: Calcolo con precisione arbitraria [Contenuti][Indice]
Occasionalmente, potrebbe essere utile controllare se gawk
sia stato
chiamato specificando l’opzione -M, che consente di effettuare
calcoli aritmetici di precisione arbitraria.
Lo si può fare con la funzione seguente, messa a disposizione da
Andrew Schorr:
# precisione_matematica_sufficiente # --- restituisce "true" [vero] # se il numero di bit "n" di precisione richiesto # è disponibile per il programma function adequate_math_precision(n) { return (1 != (1+(1/(2^(n-1))))) }
Ecco un frammento di codice che invoca la funzione per controllare se l’aritmetica a precisione arbitraria è disponibile:
BEGIN { # Quanti bit di precisione nella mantissa sono necessari # perché questo programma funzioni correttamente? fpbits = 123 # Si spera che il programma sia stato invocato con MPFR abilitata. # Se è questo il caso, le istruzioni seguenti dovrebbero configurare # i calcoli al livello di precisione desiderato. PREC = fpbits if (! adequate_math_precision(fpbits)) { print("Errore: la precisione di calcolo disponibile non basta.\n" \ "Provare ancora specificando l'argomento -M?") > "/dev/stderr" # Nota: può essere necessario impostare un flag a questo punto # per evitare di eseguire delle eventuali regole END exit 1 } }
Occorre tener presente che exit
eseguirà le regole END
,
eventualmente contenute nel programma (vedi la sezione L’istruzione exit
).