(FPCore () :precision binary64 (- (pow 10.0 8.0) (sqrt (- (pow 10.0 16.0) 4.0))))
double code() { return pow(10.0, 8.0) - sqrt((pow(10.0, 16.0) - 4.0)); }
real(8) function code() code = (10.0d0 ** 8.0d0) - sqrt(((10.0d0 ** 16.0d0) - 4.0d0)) end function
public static double code() { return Math.pow(10.0, 8.0) - Math.sqrt((Math.pow(10.0, 16.0) - 4.0)); }
def code(): return math.pow(10.0, 8.0) - math.sqrt((math.pow(10.0, 16.0) - 4.0))
function code() return Float64((10.0 ^ 8.0) - sqrt(Float64((10.0 ^ 16.0) - 4.0))) end
function tmp = code() tmp = (10.0 ^ 8.0) - sqrt(((10.0 ^ 16.0) - 4.0)); end
code[] := N[(N[Power[10.0, 8.0], $MachinePrecision] - N[Sqrt[N[(N[Power[10.0, 16.0], $MachinePrecision] - 4.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l} \\ {10}^{8} - \sqrt{{10}^{16} - 4} \end{array}
Sampling outcomes in binary64 precision:
Herbie found 1 alternatives:
Alternative | Accuracy | Speedup |
---|
(FPCore () :precision binary64 (- (pow 10.0 8.0) (sqrt (- (pow 10.0 16.0) 4.0))))
double code() { return pow(10.0, 8.0) - sqrt((pow(10.0, 16.0) - 4.0)); }
real(8) function code() code = (10.0d0 ** 8.0d0) - sqrt(((10.0d0 ** 16.0d0) - 4.0d0)) end function
public static double code() { return Math.pow(10.0, 8.0) - Math.sqrt((Math.pow(10.0, 16.0) - 4.0)); }
def code(): return math.pow(10.0, 8.0) - math.sqrt((math.pow(10.0, 16.0) - 4.0))
function code() return Float64((10.0 ^ 8.0) - sqrt(Float64((10.0 ^ 16.0) - 4.0))) end
function tmp = code() tmp = (10.0 ^ 8.0) - sqrt(((10.0 ^ 16.0) - 4.0)); end
code[] := N[(N[Power[10.0, 8.0], $MachinePrecision] - N[Sqrt[N[(N[Power[10.0, 16.0], $MachinePrecision] - 4.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l} \\ {10}^{8} - \sqrt{{10}^{16} - 4} \end{array}
(FPCore () :precision binary64 (/ 4.0 (+ (sqrt 9999999999999996.0) 100000000.0)))
double code() { return 4.0 / (sqrt(9999999999999996.0) + 100000000.0); }
real(8) function code() code = 4.0d0 / (sqrt(9999999999999996.0d0) + 100000000.0d0) end function
public static double code() { return 4.0 / (Math.sqrt(9999999999999996.0) + 100000000.0); }
def code(): return 4.0 / (math.sqrt(9999999999999996.0) + 100000000.0)
function code() return Float64(4.0 / Float64(sqrt(9999999999999996.0) + 100000000.0)) end
function tmp = code() tmp = 4.0 / (sqrt(9999999999999996.0) + 100000000.0); end
code[] := N[(4.0 / N[(N[Sqrt[9999999999999996.0], $MachinePrecision] + 100000000.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l} \\ \frac{4}{\sqrt{9999999999999996} + 100000000} \end{array}
Initial program 21.2%
lift--.f64
N/A
flip--
N/A
lower-/.f64
N/A
lift-pow.f64
N/A
metadata-eval
N/A
lift-pow.f64
N/A
metadata-eval
N/A
metadata-eval
N/A
lift-sqrt.f64
N/A
lift-sqrt.f64
N/A
rem-square-sqrt
N/A
lift--.f64
N/A
lift-pow.f64
N/A
metadata-eval
N/A
metadata-eval
N/A
metadata-eval
N/A
+-commutative
N/A
lower-+.f64
100.0
lift--.f64
N/A
lift-pow.f64
N/A
metadata-eval
N/A
metadata-eval
100.0
Applied rewrites100.0%
herbie shell --seed 1
(FPCore ()
:name "10^8-sqrt(10^16-4)"
:precision binary64
(- (pow 10.0 8.0) (sqrt (- (pow 10.0 16.0) 4.0))))