プログラミングの基礎:問題5.4〜5.6解答

(* 問題5.4 *)
(* 目的:  2次方程式の係数a,b,cが与えられたら判別式の値を返す *)
(* hanbetsushiki : float -> float -> float -> float *)
let hanbetsushiki a b c = b ** 2.0 -. 4.0 *. a *. c

(* テスト *)
let test1 = hanbetsushiki 1.0 5.0 4.0 = 9.0 
let test2 = hanbetsushiki 2.0 (-4.0) 2.0 = 0.0 
let test3 = hanbetsushiki 1.0 2.0 4.0 = -12.0 

(* 問題5.5 *)
(* 目的:2次方程式の係数a,b,cがあたえられたら解の個数を返す *)
(* kai_no_kosuu : float -> float -> float -> int *)
let kai_no_kosuu a b c = if hanbetsushiki a b c >= 0.0 
                         then 
                             if hanbetsushiki a b c = 0.0 then 1 else 2 
                         else 0
(* テスト *)
let test1 = kai_no_kosuu 1.0 5.0 4.0 = 2 
let test2 = kai_no_kosuu 2.0 (-4.0) 2.0 = 1 
let test3 = kai_no_kosuu 1.0 2.0 4.0 = 0

(* 問題5.6 *)
(* 目的:2次方程式の係数a,b,cを与えられたら、虚数を持つかどうか判定する *)
(* kyosuukai : float -> float -> float -> bool *)
let kyosuukai a b c = if kai_no_kosuu a b c > 0 then false else true

(* テスト *)
let test1 = kyosuukai 1.0 5.0 4.0 = false 
let test2 = kyosuukai 2.0 (-4.0) 2.0 = false
let test3 = kyosuukai 1.0 2.0 4.0 = true