eliminateFloats floatE@(Float64 _ e) varMap addError = 
  if addError 
    then EBinOp Add eWithotFloats (Lit absoluteError) 
    else EBinOp Sub eWithotFloats (Lit absoluteError) 
  where
    absoluteError = unsafePerformIO $ findAbsoluteErrorUsingFPTaylor floatE varMap
    eWithotFloats = removeFloats e
eliminateFloats floatE@(Float64 _ e) varMap addError = 
  if addError 
    then EBinOp Add eWithotFloats (Lit absoluteError) 
    else EBinOp Sub eWithotFloats (Lit absoluteError) 
  where
    absoluteError = unsafePerformIO $ findAbsoluteErrorUsingFPTaylor floatE varMap
    eWithotFloats = removeFloats e
eliminateFloats floatE@(Float64 _ e) varMap addError = 
  if addError 
    then EBinOp Add eWithotFloats (Lit absoluteError) 
    else EBinOp Sub eWithotFloats (Lit absoluteError) 
  where
    absoluteError = unsafePerformIO $ findAbsoluteErrorUsingFPTaylor floatE varMap
    eWithotFloats = removeFloats e