(FPCore (x) :precision binary64 (log (- 1.0 (pow x (/ 1.0 10000.0)))))
double code(double x) { return log((1.0 - pow(x, (1.0 / 10000.0)))); }
real(8) function code(x) real(8), intent (in) :: x code = log((1.0d0 - (x ** (1.0d0 / 10000.0d0)))) end function
public static double code(double x) { return Math.log((1.0 - Math.pow(x, (1.0 / 10000.0)))); }
def code(x): return math.log((1.0 - math.pow(x, (1.0 / 10000.0))))
function code(x) return log(Float64(1.0 - (x ^ Float64(1.0 / 10000.0)))) end
function tmp = code(x) tmp = log((1.0 - (x ^ (1.0 / 10000.0)))); end
code[x_] := N[Log[N[(1.0 - N[Power[x, N[(1.0 / 10000.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l} \\ \log \left(1 - {x}^{\left(\frac{1}{10000}\right)}\right) \end{array}
Sampling outcomes in binary64 precision:
Herbie found 11 alternatives:
Alternative | Accuracy | Speedup |
---|
(FPCore (x) :precision binary64 (log (- 1.0 (pow x (/ 1.0 10000.0)))))
double code(double x) { return log((1.0 - pow(x, (1.0 / 10000.0)))); }
real(8) function code(x) real(8), intent (in) :: x code = log((1.0d0 - (x ** (1.0d0 / 10000.0d0)))) end function
public static double code(double x) { return Math.log((1.0 - Math.pow(x, (1.0 / 10000.0)))); }
def code(x): return math.log((1.0 - math.pow(x, (1.0 / 10000.0))))
function code(x) return log(Float64(1.0 - (x ^ Float64(1.0 / 10000.0)))) end
function tmp = code(x) tmp = log((1.0 - (x ^ (1.0 / 10000.0)))); end
code[x_] := N[Log[N[(1.0 - N[Power[x, N[(1.0 / 10000.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l} \\ \log \left(1 - {x}^{\left(\frac{1}{10000}\right)}\right) \end{array}
(FPCore (x) :precision binary64 (log (/ (/ (- 1.0 (pow x 0.0027)) (+ (+ (pow x 0.0018) (pow x 0.0009)) 1.0)) (* (+ (+ (pow x 0.0002) 1.0) (pow x 0.0001)) (+ (+ 1.0 (pow x 0.0006)) (pow x 0.0003))))))
double code(double x) { return log((((1.0 - pow(x, 0.0027)) / ((pow(x, 0.0018) + pow(x, 0.0009)) + 1.0)) / (((pow(x, 0.0002) + 1.0) + pow(x, 0.0001)) * ((1.0 + pow(x, 0.0006)) + pow(x, 0.0003))))); }
real(8) function code(x) real(8), intent (in) :: x code = log((((1.0d0 - (x ** 0.0027d0)) / (((x ** 0.0018d0) + (x ** 0.0009d0)) + 1.0d0)) / ((((x ** 0.0002d0) + 1.0d0) + (x ** 0.0001d0)) * ((1.0d0 + (x ** 0.0006d0)) + (x ** 0.0003d0))))) end function
public static double code(double x) { return Math.log((((1.0 - Math.pow(x, 0.0027)) / ((Math.pow(x, 0.0018) + Math.pow(x, 0.0009)) + 1.0)) / (((Math.pow(x, 0.0002) + 1.0) + Math.pow(x, 0.0001)) * ((1.0 + Math.pow(x, 0.0006)) + Math.pow(x, 0.0003))))); }
def code(x): return math.log((((1.0 - math.pow(x, 0.0027)) / ((math.pow(x, 0.0018) + math.pow(x, 0.0009)) + 1.0)) / (((math.pow(x, 0.0002) + 1.0) + math.pow(x, 0.0001)) * ((1.0 + math.pow(x, 0.0006)) + math.pow(x, 0.0003)))))
function code(x) return log(Float64(Float64(Float64(1.0 - (x ^ 0.0027)) / Float64(Float64((x ^ 0.0018) + (x ^ 0.0009)) + 1.0)) / Float64(Float64(Float64((x ^ 0.0002) + 1.0) + (x ^ 0.0001)) * Float64(Float64(1.0 + (x ^ 0.0006)) + (x ^ 0.0003))))) end
function tmp = code(x) tmp = log((((1.0 - (x ^ 0.0027)) / (((x ^ 0.0018) + (x ^ 0.0009)) + 1.0)) / ((((x ^ 0.0002) + 1.0) + (x ^ 0.0001)) * ((1.0 + (x ^ 0.0006)) + (x ^ 0.0003))))); end
code[x_] := N[Log[N[(N[(N[(1.0 - N[Power[x, 0.0027], $MachinePrecision]), $MachinePrecision] / N[(N[(N[Power[x, 0.0018], $MachinePrecision] + N[Power[x, 0.0009], $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] / N[(N[(N[(N[Power[x, 0.0002], $MachinePrecision] + 1.0), $MachinePrecision] + N[Power[x, 0.0001], $MachinePrecision]), $MachinePrecision] * N[(N[(1.0 + N[Power[x, 0.0006], $MachinePrecision]), $MachinePrecision] + N[Power[x, 0.0003], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l} \\ \log \left(\frac{\frac{1 - {x}^{0.0027}}{\left({x}^{0.0018} + {x}^{0.0009}\right) + 1}}{\left(\left({x}^{0.0002} + 1\right) + {x}^{0.0001}\right) \cdot \left(\left(1 + {x}^{0.0006}\right) + {x}^{0.0003}\right)}\right) \end{array}
Initial program 97.4%
Applied rewrites99.3%
lift--.f64
N/A
flip3--
N/A
lower-/.f64
N/A
metadata-eval
N/A
lower--.f64
N/A
lift-pow.f64
N/A
pow-pow
N/A
lower-pow.f64
N/A
metadata-eval
N/A
metadata-eval
N/A
+-commutative
N/A
lower-+.f64
N/A
*-lft-identity
N/A
lower-+.f64
N/A
pow2
N/A
lift-pow.f64
N/A
pow-pow
N/A
metadata-eval
N/A
metadata-eval
N/A
lower-pow.f64
N/A
metadata-eval
99.5
Applied rewrites99.5%
(FPCore (x) :precision binary64 (log (/ (pow (/ (+ (+ 1.0 (pow x 0.0004)) (pow x 0.0002)) (- 1.0 (pow x 0.0006))) -1.0) (+ (pow x 0.0001) 1.0))))
double code(double x) { return log((pow((((1.0 + pow(x, 0.0004)) + pow(x, 0.0002)) / (1.0 - pow(x, 0.0006))), -1.0) / (pow(x, 0.0001) + 1.0))); }
real(8) function code(x) real(8), intent (in) :: x code = log((((((1.0d0 + (x ** 0.0004d0)) + (x ** 0.0002d0)) / (1.0d0 - (x ** 0.0006d0))) ** (-1.0d0)) / ((x ** 0.0001d0) + 1.0d0))) end function
public static double code(double x) { return Math.log((Math.pow((((1.0 + Math.pow(x, 0.0004)) + Math.pow(x, 0.0002)) / (1.0 - Math.pow(x, 0.0006))), -1.0) / (Math.pow(x, 0.0001) + 1.0))); }
def code(x): return math.log((math.pow((((1.0 + math.pow(x, 0.0004)) + math.pow(x, 0.0002)) / (1.0 - math.pow(x, 0.0006))), -1.0) / (math.pow(x, 0.0001) + 1.0)))
function code(x) return log(Float64((Float64(Float64(Float64(1.0 + (x ^ 0.0004)) + (x ^ 0.0002)) / Float64(1.0 - (x ^ 0.0006))) ^ -1.0) / Float64((x ^ 0.0001) + 1.0))) end
function tmp = code(x) tmp = log((((((1.0 + (x ^ 0.0004)) + (x ^ 0.0002)) / (1.0 - (x ^ 0.0006))) ^ -1.0) / ((x ^ 0.0001) + 1.0))); end
code[x_] := N[Log[N[(N[Power[N[(N[(N[(1.0 + N[Power[x, 0.0004], $MachinePrecision]), $MachinePrecision] + N[Power[x, 0.0002], $MachinePrecision]), $MachinePrecision] / N[(1.0 - N[Power[x, 0.0006], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], -1.0], $MachinePrecision] / N[(N[Power[x, 0.0001], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l} \\ \log \left(\frac{{\left(\frac{\left(1 + {x}^{0.0004}\right) + {x}^{0.0002}}{1 - {x}^{0.0006}}\right)}^{-1}}{{x}^{0.0001} + 1}\right) \end{array}
Initial program 97.4%
lift--.f64
N/A
flip--
N/A
lower-/.f64
N/A
metadata-eval
N/A
lower--.f64
N/A
lift-pow.f64
N/A
lift-pow.f64
N/A
pow-prod-up
N/A
lower-pow.f64
N/A
lift-/.f64
N/A
metadata-eval
N/A
lift-/.f64
N/A
metadata-eval
N/A
metadata-eval
N/A
+-commutative
N/A
lower-+.f64
98.3
lift-/.f64
N/A
metadata-eval
98.3
Applied rewrites98.3%
Applied rewrites99.1%
Final simplification99.1%
(FPCore (x) :precision binary64 (log (/ (- 1.0 (pow x 0.0009)) (* (+ (+ (pow x 0.0002) 1.0) (pow x 0.0001)) (+ (+ 1.0 (pow x 0.0006)) (pow x 0.0003))))))
double code(double x) { return log(((1.0 - pow(x, 0.0009)) / (((pow(x, 0.0002) + 1.0) + pow(x, 0.0001)) * ((1.0 + pow(x, 0.0006)) + pow(x, 0.0003))))); }
real(8) function code(x) real(8), intent (in) :: x code = log(((1.0d0 - (x ** 0.0009d0)) / ((((x ** 0.0002d0) + 1.0d0) + (x ** 0.0001d0)) * ((1.0d0 + (x ** 0.0006d0)) + (x ** 0.0003d0))))) end function
public static double code(double x) { return Math.log(((1.0 - Math.pow(x, 0.0009)) / (((Math.pow(x, 0.0002) + 1.0) + Math.pow(x, 0.0001)) * ((1.0 + Math.pow(x, 0.0006)) + Math.pow(x, 0.0003))))); }
def code(x): return math.log(((1.0 - math.pow(x, 0.0009)) / (((math.pow(x, 0.0002) + 1.0) + math.pow(x, 0.0001)) * ((1.0 + math.pow(x, 0.0006)) + math.pow(x, 0.0003)))))
function code(x) return log(Float64(Float64(1.0 - (x ^ 0.0009)) / Float64(Float64(Float64((x ^ 0.0002) + 1.0) + (x ^ 0.0001)) * Float64(Float64(1.0 + (x ^ 0.0006)) + (x ^ 0.0003))))) end
function tmp = code(x) tmp = log(((1.0 - (x ^ 0.0009)) / ((((x ^ 0.0002) + 1.0) + (x ^ 0.0001)) * ((1.0 + (x ^ 0.0006)) + (x ^ 0.0003))))); end
code[x_] := N[Log[N[(N[(1.0 - N[Power[x, 0.0009], $MachinePrecision]), $MachinePrecision] / N[(N[(N[(N[Power[x, 0.0002], $MachinePrecision] + 1.0), $MachinePrecision] + N[Power[x, 0.0001], $MachinePrecision]), $MachinePrecision] * N[(N[(1.0 + N[Power[x, 0.0006], $MachinePrecision]), $MachinePrecision] + N[Power[x, 0.0003], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l} \\ \log \left(\frac{1 - {x}^{0.0009}}{\left(\left({x}^{0.0002} + 1\right) + {x}^{0.0001}\right) \cdot \left(\left(1 + {x}^{0.0006}\right) + {x}^{0.0003}\right)}\right) \end{array}
Initial program 97.4%
Applied rewrites99.3%
(FPCore (x) :precision binary64 (log (/ (- 1.0 (pow x 0.0006)) (* (+ (pow x 0.0001) 1.0) (+ (+ 1.0 (pow x 0.0004)) (pow x 0.0002))))))
double code(double x) { return log(((1.0 - pow(x, 0.0006)) / ((pow(x, 0.0001) + 1.0) * ((1.0 + pow(x, 0.0004)) + pow(x, 0.0002))))); }
real(8) function code(x) real(8), intent (in) :: x code = log(((1.0d0 - (x ** 0.0006d0)) / (((x ** 0.0001d0) + 1.0d0) * ((1.0d0 + (x ** 0.0004d0)) + (x ** 0.0002d0))))) end function
public static double code(double x) { return Math.log(((1.0 - Math.pow(x, 0.0006)) / ((Math.pow(x, 0.0001) + 1.0) * ((1.0 + Math.pow(x, 0.0004)) + Math.pow(x, 0.0002))))); }
def code(x): return math.log(((1.0 - math.pow(x, 0.0006)) / ((math.pow(x, 0.0001) + 1.0) * ((1.0 + math.pow(x, 0.0004)) + math.pow(x, 0.0002)))))
function code(x) return log(Float64(Float64(1.0 - (x ^ 0.0006)) / Float64(Float64((x ^ 0.0001) + 1.0) * Float64(Float64(1.0 + (x ^ 0.0004)) + (x ^ 0.0002))))) end
function tmp = code(x) tmp = log(((1.0 - (x ^ 0.0006)) / (((x ^ 0.0001) + 1.0) * ((1.0 + (x ^ 0.0004)) + (x ^ 0.0002))))); end
code[x_] := N[Log[N[(N[(1.0 - N[Power[x, 0.0006], $MachinePrecision]), $MachinePrecision] / N[(N[(N[Power[x, 0.0001], $MachinePrecision] + 1.0), $MachinePrecision] * N[(N[(1.0 + N[Power[x, 0.0004], $MachinePrecision]), $MachinePrecision] + N[Power[x, 0.0002], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l} \\ \log \left(\frac{1 - {x}^{0.0006}}{\left({x}^{0.0001} + 1\right) \cdot \left(\left(1 + {x}^{0.0004}\right) + {x}^{0.0002}\right)}\right) \end{array}
Initial program 97.4%
lift--.f64
N/A
flip--
N/A
metadata-eval
N/A
flip3--
N/A
associate-/l/
N/A
lower-/.f64
N/A
Applied rewrites99.1%
(FPCore (x) :precision binary64 (log (/ (- 1.0 (pow x 0.0006)) (* (+ (+ (pow x 0.0002) 1.0) (pow x 0.0001)) (+ (pow x 0.0003) 1.0)))))
double code(double x) { return log(((1.0 - pow(x, 0.0006)) / (((pow(x, 0.0002) + 1.0) + pow(x, 0.0001)) * (pow(x, 0.0003) + 1.0)))); }
real(8) function code(x) real(8), intent (in) :: x code = log(((1.0d0 - (x ** 0.0006d0)) / ((((x ** 0.0002d0) + 1.0d0) + (x ** 0.0001d0)) * ((x ** 0.0003d0) + 1.0d0)))) end function
public static double code(double x) { return Math.log(((1.0 - Math.pow(x, 0.0006)) / (((Math.pow(x, 0.0002) + 1.0) + Math.pow(x, 0.0001)) * (Math.pow(x, 0.0003) + 1.0)))); }
def code(x): return math.log(((1.0 - math.pow(x, 0.0006)) / (((math.pow(x, 0.0002) + 1.0) + math.pow(x, 0.0001)) * (math.pow(x, 0.0003) + 1.0))))
function code(x) return log(Float64(Float64(1.0 - (x ^ 0.0006)) / Float64(Float64(Float64((x ^ 0.0002) + 1.0) + (x ^ 0.0001)) * Float64((x ^ 0.0003) + 1.0)))) end
function tmp = code(x) tmp = log(((1.0 - (x ^ 0.0006)) / ((((x ^ 0.0002) + 1.0) + (x ^ 0.0001)) * ((x ^ 0.0003) + 1.0)))); end
code[x_] := N[Log[N[(N[(1.0 - N[Power[x, 0.0006], $MachinePrecision]), $MachinePrecision] / N[(N[(N[(N[Power[x, 0.0002], $MachinePrecision] + 1.0), $MachinePrecision] + N[Power[x, 0.0001], $MachinePrecision]), $MachinePrecision] * N[(N[Power[x, 0.0003], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l} \\ \log \left(\frac{1 - {x}^{0.0006}}{\left(\left({x}^{0.0002} + 1\right) + {x}^{0.0001}\right) \cdot \left({x}^{0.0003} + 1\right)}\right) \end{array}
Initial program 97.4%
lift--.f64
N/A
flip3--
N/A
metadata-eval
N/A
flip--
N/A
metadata-eval
N/A
associate-/l/
N/A
metadata-eval
N/A
metadata-eval
N/A
unpow-prod-down
N/A
Applied rewrites99.1%
(FPCore (x) :precision binary64 (log (/ (- 1.0 (pow x 0.0004)) (* (+ (pow x 0.0001) 1.0) (+ (pow x 0.0002) 1.0)))))
double code(double x) { return log(((1.0 - pow(x, 0.0004)) / ((pow(x, 0.0001) + 1.0) * (pow(x, 0.0002) + 1.0)))); }
real(8) function code(x) real(8), intent (in) :: x code = log(((1.0d0 - (x ** 0.0004d0)) / (((x ** 0.0001d0) + 1.0d0) * ((x ** 0.0002d0) + 1.0d0)))) end function
public static double code(double x) { return Math.log(((1.0 - Math.pow(x, 0.0004)) / ((Math.pow(x, 0.0001) + 1.0) * (Math.pow(x, 0.0002) + 1.0)))); }
def code(x): return math.log(((1.0 - math.pow(x, 0.0004)) / ((math.pow(x, 0.0001) + 1.0) * (math.pow(x, 0.0002) + 1.0))))
function code(x) return log(Float64(Float64(1.0 - (x ^ 0.0004)) / Float64(Float64((x ^ 0.0001) + 1.0) * Float64((x ^ 0.0002) + 1.0)))) end
function tmp = code(x) tmp = log(((1.0 - (x ^ 0.0004)) / (((x ^ 0.0001) + 1.0) * ((x ^ 0.0002) + 1.0)))); end
code[x_] := N[Log[N[(N[(1.0 - N[Power[x, 0.0004], $MachinePrecision]), $MachinePrecision] / N[(N[(N[Power[x, 0.0001], $MachinePrecision] + 1.0), $MachinePrecision] * N[(N[Power[x, 0.0002], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l} \\ \log \left(\frac{1 - {x}^{0.0004}}{\left({x}^{0.0001} + 1\right) \cdot \left({x}^{0.0002} + 1\right)}\right) \end{array}
Initial program 97.4%
lift--.f64
N/A
flip--
N/A
metadata-eval
N/A
flip--
N/A
associate-/l/
N/A
lower-/.f64
N/A
Applied rewrites98.9%
(FPCore (x) :precision binary64 (log (/ (- 1.0 (pow x 0.0003)) (+ (+ (pow x 0.0002) 1.0) (pow x 0.0001)))))
double code(double x) { return log(((1.0 - pow(x, 0.0003)) / ((pow(x, 0.0002) + 1.0) + pow(x, 0.0001)))); }
real(8) function code(x) real(8), intent (in) :: x code = log(((1.0d0 - (x ** 0.0003d0)) / (((x ** 0.0002d0) + 1.0d0) + (x ** 0.0001d0)))) end function
public static double code(double x) { return Math.log(((1.0 - Math.pow(x, 0.0003)) / ((Math.pow(x, 0.0002) + 1.0) + Math.pow(x, 0.0001)))); }
def code(x): return math.log(((1.0 - math.pow(x, 0.0003)) / ((math.pow(x, 0.0002) + 1.0) + math.pow(x, 0.0001))))
function code(x) return log(Float64(Float64(1.0 - (x ^ 0.0003)) / Float64(Float64((x ^ 0.0002) + 1.0) + (x ^ 0.0001)))) end
function tmp = code(x) tmp = log(((1.0 - (x ^ 0.0003)) / (((x ^ 0.0002) + 1.0) + (x ^ 0.0001)))); end
code[x_] := N[Log[N[(N[(1.0 - N[Power[x, 0.0003], $MachinePrecision]), $MachinePrecision] / N[(N[(N[Power[x, 0.0002], $MachinePrecision] + 1.0), $MachinePrecision] + N[Power[x, 0.0001], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l} \\ \log \left(\frac{1 - {x}^{0.0003}}{\left({x}^{0.0002} + 1\right) + {x}^{0.0001}}\right) \end{array}
Initial program 97.4%
lift--.f64
N/A
flip3--
N/A
lower-/.f64
N/A
metadata-eval
N/A
lower--.f64
N/A
lift-pow.f64
N/A
pow-pow
N/A
lower-pow.f64
N/A
lift-/.f64
N/A
metadata-eval
N/A
metadata-eval
N/A
metadata-eval
N/A
*-lft-identity
N/A
associate-+r+
N/A
lower-+.f64
N/A
Applied rewrites98.8%
(FPCore (x) :precision binary64 (- (log1p (- (pow x 0.0002))) (log1p (pow x 0.0001))))
double code(double x) { return log1p(-pow(x, 0.0002)) - log1p(pow(x, 0.0001)); }
public static double code(double x) { return Math.log1p(-Math.pow(x, 0.0002)) - Math.log1p(Math.pow(x, 0.0001)); }
def code(x): return math.log1p(-math.pow(x, 0.0002)) - math.log1p(math.pow(x, 0.0001))
function code(x) return Float64(log1p(Float64(-(x ^ 0.0002))) - log1p((x ^ 0.0001))) end
code[x_] := N[(N[Log[1 + (-N[Power[x, 0.0002], $MachinePrecision])], $MachinePrecision] - N[Log[1 + N[Power[x, 0.0001], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l} \\ \mathsf{log1p}\left(-{x}^{0.0002}\right) - \mathsf{log1p}\left({x}^{0.0001}\right) \end{array}
Initial program 97.4%
lift-log.f64
N/A
lift--.f64
N/A
flip--
N/A
log-div
N/A
lower--.f64
N/A
Applied rewrites98.4%
(FPCore (x) :precision binary64 (log (/ (- 1.0 (pow x 0.0002)) (+ (pow x 0.0001) 1.0))))
double code(double x) { return log(((1.0 - pow(x, 0.0002)) / (pow(x, 0.0001) + 1.0))); }
real(8) function code(x) real(8), intent (in) :: x code = log(((1.0d0 - (x ** 0.0002d0)) / ((x ** 0.0001d0) + 1.0d0))) end function
public static double code(double x) { return Math.log(((1.0 - Math.pow(x, 0.0002)) / (Math.pow(x, 0.0001) + 1.0))); }
def code(x): return math.log(((1.0 - math.pow(x, 0.0002)) / (math.pow(x, 0.0001) + 1.0)))
function code(x) return log(Float64(Float64(1.0 - (x ^ 0.0002)) / Float64((x ^ 0.0001) + 1.0))) end
function tmp = code(x) tmp = log(((1.0 - (x ^ 0.0002)) / ((x ^ 0.0001) + 1.0))); end
code[x_] := N[Log[N[(N[(1.0 - N[Power[x, 0.0002], $MachinePrecision]), $MachinePrecision] / N[(N[Power[x, 0.0001], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l} \\ \log \left(\frac{1 - {x}^{0.0002}}{{x}^{0.0001} + 1}\right) \end{array}
Initial program 97.4%
lift--.f64
N/A
flip--
N/A
lower-/.f64
N/A
metadata-eval
N/A
lower--.f64
N/A
lift-pow.f64
N/A
lift-pow.f64
N/A
pow-prod-up
N/A
lower-pow.f64
N/A
lift-/.f64
N/A
metadata-eval
N/A
lift-/.f64
N/A
metadata-eval
N/A
metadata-eval
N/A
+-commutative
N/A
lower-+.f64
98.3
lift-/.f64
N/A
metadata-eval
98.3
Applied rewrites98.3%
(FPCore (x) :precision binary64 (log1p (- (pow x 0.0001))))
double code(double x) { return log1p(-pow(x, 0.0001)); }
public static double code(double x) { return Math.log1p(-Math.pow(x, 0.0001)); }
def code(x): return math.log1p(-math.pow(x, 0.0001))
function code(x) return log1p(Float64(-(x ^ 0.0001))) end
code[x_] := N[Log[1 + (-N[Power[x, 0.0001], $MachinePrecision])], $MachinePrecision]
\begin{array}{l} \\ \mathsf{log1p}\left(-{x}^{0.0001}\right) \end{array}
Initial program 97.4%
lift-log.f64
N/A
lift--.f64
N/A
sub-neg
N/A
lower-log1p.f64
N/A
lower-neg.f64
97.4
lift-/.f64
N/A
metadata-eval
97.4
Applied rewrites97.4%
(FPCore (x) :precision binary64 (log1p (pow x 0.0001)))
double code(double x) { return log1p(pow(x, 0.0001)); }
public static double code(double x) { return Math.log1p(Math.pow(x, 0.0001)); }
def code(x): return math.log1p(math.pow(x, 0.0001))
function code(x) return log1p((x ^ 0.0001)) end
code[x_] := N[Log[1 + N[Power[x, 0.0001], $MachinePrecision]], $MachinePrecision]
\begin{array}{l} \\ \mathsf{log1p}\left({x}^{0.0001}\right) \end{array}
Initial program 97.4%
Applied rewrites99.3%
Applied rewrites1.6%
herbie shell --seed 1
(FPCore (x)
:name "log(1-x^(1/10000))"
:precision binary64
:pre (and (<= 0.0 x) (<= x 1.0))
(log (- 1.0 (pow x (/ 1.0 10000.0)))))