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).