Un modo efficace per testare metodi di precisione arbitrari

0

Questo è un po 'come il problema dell'uovo e della gallina. Per garantire che il mio codice di precisione arbitrario funzioni correttamente, ho bisogno di affidarmi ad altre implementazioni di bignum esistenti.

Questo è relativamente facile in Java. Abbiamo già il pacchetto java.math per aiutare in questa situazione. Finora l'ho usato per testare i miei metodi aritmetici di base. Ora il problema è ovvio. Non posso portare il mio approccio ad altre lingue senza prima procurarmi una libreria bignum. Quindi la mia domanda è

How can I easily and quickly write tests for code implementing arbitrary precision algorithms?

Non riesco a essere in grado di aggiungere più di un tag dal mio telefono per qualche motivo.

    
posta Hungry Blue Dev 02.04.2017 - 06:44
fonte

2 risposte

4

Come testerebbe il tuo pacchetto di precisione arbitraria se non è disponibile un pacchetto concorrente?

Se non puoi confrontare il risultato del tuo pacchetto con un pacchetto concorrente nella stessa lingua, devi calcolare i risultati attesi dei metodi che stai testando mentre stai scrivendo i test.

Calcolando in anticipo i risultati attesi, non sei limitato dalla disponibilità di un pacchetto bignum in nessuna lingua, perché se arriva il momento critico, puoi sempre eseguire i calcoli a mano con carta e penna.

    
risposta data 02.04.2017 - 09:56
fonte
1

Ci sono molti modi in cui è necessaria una precisione molto elevata per trovare un risultato che sia molto semplice.

Ad esempio, usa la formula diretta di Taylor per calcolare exp (-100). Il risultato è minuscolo, ma aggiunge molti termini enormi . Otterrai un risultato chiaramente sbagliato se una qualsiasi delle moltiplicazioni o aggiunte in questione non darà il risultato che dovrebbe.

    
risposta data 02.04.2017 - 10:41
fonte

Leggi altre domande sui tag