[¯|¯] Mathematica, Mathics e il riconoscimento di numeri primi
Agosto 19th, 2014 | by extrabyte |Non pensavo assolutamente di scatenare un flame (o quasi) sul gruppo di Facebook Principia Mathematica. Di seguito uno screnshot di una parte della discussione:
Come è stato notato da qualcuno del gruppo, il linguaggio di scripting client-side denominato JavaScript non è adatto per l'implementazione del motore di calcolo di un Computer Algebra System che, solitamente è realizzato in C++. Infatti, JavaScript è utilizzato per rendere interattive le pagine web.
Qualcun altro, invece, ha fatto notare che Javascript è stato utilizzato solo per l'interfaccia web. A questo punto, vale la pena di testare entrambi i software. E quale test migliore se non il riconoscimento di numeri primi? Come è noto, Mathematica utilizza il comando Timing per il calcolo del tempo di computazione e la funzione built-in PrimeQ[] per il riconoscimento dei primi. Il certificato di primalità utilizzato da Mathematica, prevede un controllo incrociato con due test differenti (test forte di 2 pseudoprimi e il test basato sugli pseudoprimi di Lucas). Stan Wagon, nel suo libro Guida a Mathematica presenta un package che velocizza il certificato di primalità, attraverso il nuovo comando primeQ[]. Tale package è per la vecchia versione 2.0, e noi l'abbiamo modificato per adattarlo alla versione 6.0 e superiori. Il nuovo comando è decisamente più veloce di quello built-in, come vediamo dallo screenshot:
Passiamo, ora, a Mathics. Dopo aver puntato il nostro browser alla url http://www.mathics.net/, eseguiamo un copia&incolla del codice Mathematica (cella per cella), dopodichè carichiamo il package. Come vediamo dallo screenshot seguente, il comando Needs[] fallisce. Nonostante ciò, riconosce il nuovo comando, dando la risposta corretta in 4.816301 secondi, tempo decisamente lungo.
Proviamo, adesso, con il comando predefinito PrimeQ. Ecco il risultato:
da cui vediamo che Mathics impiega 0.004 secondi. Conclusione: Mathics è più veloce di Mathematica nel riconoscimento di grandi primi!
Tags: certificati di primalità, Mathematica, Mathics, numeri primi, pseudoprimi di Lucas
Articoli correlati
By Gabriele Biondo on Ago 19, 2014
A conti fatti, Mathematica è più veloce di due unità di grandezza, come dimostra https://www.facebook.com/photo.php?fbid=672197516196831&set=p.672197516196831&type=1&theater