問題5.3 – SICP(計算機プログラムの構造と解釈)その250

問題5.3

good-enough?improve を基本演算として使う版

データパス図

データパス図その1

レジスタ計算器言語での制御器の定義

(controller
  sqrt-loop
    (assign x (op read))
    (assign guess (const 1.0))
  test-good-enough
    (test (op good-enough?) (reg guess) (reg x))
    (branch (label sqrt-loop-done))
    (assign guess (op improve) (reg guess) (reg x))
    (goto (label test-good-enough))
  sqrt-loop-done
    (perform (op print) (reg guess))
    (goto (label sqrt-loop)))

good-enough?improve を算術演算で展開する版

データパス図

データパス図その2

レジスタ計算器言語での制御器の定義

(controller
  sqrt-loop
    (assign x (op read))
    (assign guess (const 1.0))
  test-good-enough
    (assign t1 (op *) (reg guess) (reg guess))
    (assign t2 (op -) (reg t1) (reg x))
    (assign t3 (op abs) (reg t2))
    (test (op <) (reg t3) (const 0.001))
    (branch (label sqrt-loop-done))
    (assign t4 (op /) (reg x) (reg guess))
    (assign guess (op average) (reg guess) (reg t4))
    (goto (label test-good-enough))
  sqrt-loop-done
    (perform (op print) (reg guess))
    (goto (label sqrt-loop)))
計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
«
»