Source file math.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
type distance = (float[@satisfying fun f -> f >=. 0.])

(** solve a b c returns the list of the solutions for ax² + bx + c = 0 *)
let solve a b c =
  let delta = (b *. b) -. (4. *. a *. c) in
  if delta < 0. then []
  else
    let racine_delta = sqrt delta in
    let sol1 = (-.b -. racine_delta) /. (2. *. a) in
    if delta = 0. then [sol1]
    else
      let sol2 = (-.b +. racine_delta) /. (2. *. a) in
      [sol1; sol2]

(** float sum from i to n, f(i) *)
let float_sum i n f =
  let res = ref 0. in
  for cpt = i to n do
    res := !res +. f cpt
  done ;
  !res

(** integer sum from i to n, f(i) *)
let int_sum i n f =
  let res = ref 0 in
  for cpt = i to n do
    res := !res + f cpt
  done ;
  !res

let pi = 4.0 *. atan 1.

let deg_to_rad = 0.0174533