let init = function
  | [] -> raise (Failure "init")
  | x :: xs ->
      List.rev @@
      fst @@
      List.fold_left (fun (tr, x) y -> (x :: tr, y)) ([], x) xs

let () = Scanf.scanf "%d\n" @@ fun n ->
  let xys = Array.init n @@ fun i ->
    Scanf.scanf "%d %d\n" @@ fun x y -> x, y, i in
  Array.sort compare xys;
  let rec drop_until_ccw x y = function
    | ([] | [_]) as stack -> stack
    | ((x1, y1, _) :: (((x2, y2, _) :: _) as rest)) as stack ->
        if 0 < (x1 - x2) * (y - y1) - (y1 - y2) * (x - x1)
        then stack
        else drop_until_ccw x y rest in
  let convex =
    Array.of_list @@
    init @@
    let h, t =
      match
        Array.fold_left (fun stack (x, y, i) ->
          (x, y, i) :: drop_until_ccw x y stack) [] xys
      with
      | [] -> [], []
      | h :: t -> [h], t in
    Array.fold_right (fun (x, y, i) stack ->
      (x, y, i) :: drop_until_ccw x y stack) (Array.sub xys 0 (n - 1)) h @ t in
  let ps = Array.make n 0. in
  for i = 0 to Array.length convex - 1 do
    let (x1, y1, _) = convex.(i) in
    let (x2, y2, j) = convex.((i + 1) mod Array.length convex) in
    let (x3, y3, _) = convex.((i + 2) mod Array.length convex) in
    ps.(j) <-
      0.5 -. acos
        (float_of_int ((x1 - x2) * (x3 - x2) + (y1 - y2) * (y3 - y2)) /.
         sqrt
           ((float_of_int (x1 - x2) ** 2. +. float_of_int (y1 - y2) ** 2.) *.
            (float_of_int (x3 - x2) ** 2. +. float_of_int (y3 - y2) ** 2.)))
      /. (8. *. atan 1.)
  done;
  Array.iter (Printf.printf "%.20f\n") ps
