The Haskell library cmath includes special functions like the error function, erf. There are also pure Haskell implementations of the error function. The advantage of the code below is that you can copy and paste it into your project and avoid any external dependencies. See also Relating erf and Φ.
erf :: Double -> Double
erf x = sign*y
where
a1 = 0.254829592
a2 = -0.284496736
a3 = 1.421413741
a4 = -1.453152027
a5 = 1.061405429
p = 0.3275911
-- Abramowitz and Stegun formula 7.1.26
sign = if x > 0
then 1
else -1
t = 1.0/(1.0 + p* abs x)
y = 1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x)
test_erf :: Bool
test_erf = maximum [ abs(erf x - y) | (x, y) <- zip xs ys ] < epsilon
where
epsilon = 1.5e-7 -- accuracy promised by A&S
xs = [-3, -1, 0.0, 0.5, 2.1 ]
ys = [-0.999977909503,
-0.842700792950,
0.0,
0.520499877813,
0.997020533344]