Retourner au contenu associé (dépêche : Erlang/OTP R11B supporte les architectures multiprocesseur)
Posté par Vivi le 24 mai 2006 à 14:14. En réponse à la dépêche Erlang/OTP R11B supporte les architectures multiprocesseur. Évalué à 4.
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: Comment casser le mythe de rapidité de Fibonacci :-)
Posté par Vivi . En réponse à la dépêche Erlang/OTP R11B supporte les architectures multiprocesseur. Évalué à 4.
en chameau, en utilisant la bibliothèque de calculs avec les grands nombres, ça donne ceci:
open Num
let pmul (a, b) (c, d) =
let ac = a */ c in
(ac +/ a */ d +/ b */ c,
ac +/ b */ d)
let rec pow x a n =
if n = 0
then a
else
pow
(pmul x x)
(if n mod 2 = 0 then a else pmul a x)
(n / 2)
let fib n =
if n < 0 then invalid_arg "fib" ;
fst (pow (Int 1, Int 0) (Int 0, Int 1) n)
let _ =
print_endline (string_of_num (fib 100000))
Pour cacluler fib(100000) chez moi ça va ×ばつ plus vite qu'avec l'algo linéaire.