import Text.Printf

norm :: [Double]->Double
norm v = (sum $ map (**2.0) v)**0.5

dist :: [Double]->[Double]->Double
dist v1 v2 = norm $ zipWith (-) v1 v2

heron :: Double->Double->Double->Double
heron a b c = (z*(z-a)*(z-b)*(z-c))**0.5
    where z = (a+b+c)/2.0

heron' :: [Double]->[Double]->[Double]->Double
heron' pa pb pc = heron a b c
    where a = dist pb pc
          b = dist pa pc
          c = dist pa pb

center :: [[Double]] -> [Double]
center plst = map (/np) $ [sum $ map (\p->p!!0) plst, sum $ map (\p->p!!1) plst]
    where np = realToFrac(length plst)

area :: [[Double]] -> Double
area plst = sum $ map (\i->heron' pc (plst'!!i) (plst'!!(i+1))) [0..((length plst')-2)]
    where plst' = plst ++ [head plst]
          pc = center plst

main :: IO ()
main = do
    str<-getContents::IO String
    let plst = map (\x->read ("["++x++"]")::[Double]) . lines $ str
    printf "%.6f\n" (area plst)