Successivo: , Precedente: , Su: Calcolo con precisione arbitraria   [Contenuti][Indice]


16.6 Come controllare se MPFR è disponibile

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