Code : Tout sélectionner
«
0 OVER
DO
SWAP 1 +
UNROT
DUP 2 MOD « 3 * 1 + SWAP OVER MAX » « 2 / SWAP » IFTE
UNROT
UNTIL DUP 1 == END
DROP 2 ->LIST
»
Temps :
- RPL : Mode exact 45,9" sec, mode Approx 6,9"
- 0,499 sec en NewRPL
NewRPL only (possible en mode exact en UserRPL mais très lent genre 200 fois plus lent, même mon émulateur PC HP50g est plus lent que la calculatrice physique!)
Syr(75128138247) est calculé en 0,529sec
Syr(12345678901234567890) calculé en 0,569 sec ( avec 32 chiffres significatif ce qui laisse de la marge, mais idéalement il faudrait ajouter un test de débordement pour ne pas dépasser GETPREC ALOG. Ca ralentit assez peu le fonctionnement.
On constate que le NewRPL semble proportionellement plus rapide pour les 'grands nombres que pour les petits. Ca tient à 2choses :
- Les premieres 500ms d'exécution d'un programme se font toujours en vitesse lente (6Mhz) pour économiser les piles puis passage à 192MHz. Je trouve que c'est bien vu car une réponse en 1/2s ou 1/100 de sec ne change pas grand chose pour l'utilisateur. SYR(8400511) est d'ailleurs le pire des cas de ce point de vu, toute la séquence étant calculée à 6MHz (vs 75 MHz pour la HP50G standard)
- La précision par défaut est de 32 chiffres, on peut la baisser mais ce ne fait pas gagner de vitesse. l'augmenter en fait perdre relativement peu
Le code reste très optimisable à la lecture du topic !
EDIT 12345678901234567890123 donne une altitude remarquable (ou est ce un overflow ? ca donne quoi sur la Prime ?)