import Control.Monad
import Data.Fixed
import Data.List
import Data.Monoid
import Data.Ord
import Text.Printf
 
readInt = read :: String -> Int
getInt = readLn :: IO Int
getInts = map readInt . words <$> getLine
apply2 :: (a -> a -> b) -> [a] -> b
apply2 f [x,y] = f x y

angleFrom (x0,y0) (x,y) = atan2 (fromIntegral (y-y0)) (fromIntegral (x-x0))
dist2 (x0,y0) (x,y) = (x-x0)^2 + (y-y0)^2

convex :: [(Int,Int)] -> [(Int,Int)]
convex ps = firstP : sub firstP 0
  where
    sub p a = let np = nextP p a in if np==firstP then [] else np : sub np (angleFrom p np)
    firstP = minimumBy (comparing snd <> flip (comparing fst)) ps
    nextP p a = minimumBy (comparing (flip mod' (2*pi) . subtract a . angleFrom p) <> comparing (dist2 p)) (delete p ps)

solve :: Int -> [(Int,Int)] -> [Double]
solve 2 ps = [0.5,0.5]
solve n ps = [if p `elem` cvx then calc p else 0.0 | p <- ps]
  where
    cvx = convex ps
    calc p = fsub (cycle cvx) p
    fsub (v1:r@(v2:v3:_)) p
      | v2==p = mod' (angleFrom v3 v2 - angleFrom v2 v1) (2*pi) / (2*pi) -- [v1,v2,v3]
      | otherwise = fsub r p

main = do
    n <- getInt
    ps <- map (apply2 (,)) <$> replicateM n getInts
    forM_ (solve n ps) $ printf "%.15f\n"