Alternative 1 | |
---|---|
Error | 0.1 |
Cost | 20104 |
(FPCore (x) :precision binary64 (log (* 2.0 (/ (sqrt (+ (* x x) 1.0)) (+ (sqrt (+ (* x x) 1.0)) x)))))
(FPCore (x) :precision binary64 (if (<= x -400.0) (fma -2.0 (log (/ -1.0 x)) (+ (log 4.0) (/ 0.75 (* x x)))) (if (<= x 70.0) (- (log (* (+ x (hypot 1.0 x)) (/ 0.5 (hypot 1.0 x))))) (+ (/ (/ 0.25 x) x) (+ (/ 0.11458333333333333 (pow x 6.0)) (/ -0.15625 (pow x 4.0)))))))
double code(double x) { return log((2.0 * (sqrt(((x * x) + 1.0)) / (sqrt(((x * x) + 1.0)) + x)))); }
double code(double x) { double tmp; if (x <= -400.0) { tmp = fma(-2.0, log((-1.0 / x)), (log(4.0) + (0.75 / (x * x)))); } else if (x <= 70.0) { tmp = -log(((x + hypot(1.0, x)) * (0.5 / hypot(1.0, x)))); } else { tmp = ((0.25 / x) / x) + ((0.11458333333333333 / pow(x, 6.0)) + (-0.15625 / pow(x, 4.0))); } return tmp; }
function code(x) return log(Float64(2.0 * Float64(sqrt(Float64(Float64(x * x) + 1.0)) / Float64(sqrt(Float64(Float64(x * x) + 1.0)) + x)))) end
function code(x) tmp = 0.0 if (x <= -400.0) tmp = fma(-2.0, log(Float64(-1.0 / x)), Float64(log(4.0) + Float64(0.75 / Float64(x * x)))); elseif (x <= 70.0) tmp = Float64(-log(Float64(Float64(x + hypot(1.0, x)) * Float64(0.5 / hypot(1.0, x))))); else tmp = Float64(Float64(Float64(0.25 / x) / x) + Float64(Float64(0.11458333333333333 / (x ^ 6.0)) + Float64(-0.15625 / (x ^ 4.0)))); end return tmp end
code[x_] := N[Log[N[(2.0 * N[(N[Sqrt[N[(N[(x * x), $MachinePrecision] + 1.0), $MachinePrecision]], $MachinePrecision] / N[(N[Sqrt[N[(N[(x * x), $MachinePrecision] + 1.0), $MachinePrecision]], $MachinePrecision] + x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
code[x_] := If[LessEqual[x, -400.0], N[(-2.0 * N[Log[N[(-1.0 / x), $MachinePrecision]], $MachinePrecision] + N[(N[Log[4.0], $MachinePrecision] + N[(0.75 / N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 70.0], (-N[Log[N[(N[(x + N[Sqrt[1.0 ^ 2 + x ^ 2], $MachinePrecision]), $MachinePrecision] * N[(0.5 / N[Sqrt[1.0 ^ 2 + x ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), N[(N[(N[(0.25 / x), $MachinePrecision] / x), $MachinePrecision] + N[(N[(0.11458333333333333 / N[Power[x, 6.0], $MachinePrecision]), $MachinePrecision] + N[(-0.15625 / N[Power[x, 4.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\log \left(2 \cdot \frac{\sqrt{x \cdot x + 1}}{\sqrt{x \cdot x + 1} + x}\right)
\begin{array}{l} \mathbf{if}\;x \leq -400:\\ \;\;\;\;\mathsf{fma}\left(-2, \log \left(\frac{-1}{x}\right), \log 4 + \frac{0.75}{x \cdot x}\right)\\ \mathbf{elif}\;x \leq 70:\\ \;\;\;\;-\log \left(\left(x + \mathsf{hypot}\left(1, x\right)\right) \cdot \frac{0.5}{\mathsf{hypot}\left(1, x\right)}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{0.25}{x}}{x} + \left(\frac{0.11458333333333333}{{x}^{6}} + \frac{-0.15625}{{x}^{4}}\right)\\ \end{array}
if x < -400
Initial program 63.6
Simplified63.6
[Start]63.6 | \[ \log \left(2 \cdot \frac{\sqrt{x \cdot x + 1}}{\sqrt{x \cdot x + 1} + x}\right)
\] |
---|---|
associate-*r/ [=>]63.6 | \[ \log \color{blue}{\left(\frac{2 \cdot \sqrt{x \cdot x + 1}}{\sqrt{x \cdot x + 1} + x}\right)}
\] |
+-commutative [=>]63.6 | \[ \log \left(\frac{2 \cdot \sqrt{\color{blue}{1 + x \cdot x}}}{\sqrt{x \cdot x + 1} + x}\right)
\] |
hypot-1-def [=>]63.6 | \[ \log \left(\frac{2 \cdot \color{blue}{\mathsf{hypot}\left(1, x\right)}}{\sqrt{x \cdot x + 1} + x}\right)
\] |
+-commutative [=>]63.6 | \[ \log \left(\frac{2 \cdot \mathsf{hypot}\left(1, x\right)}{\color{blue}{x + \sqrt{x \cdot x + 1}}}\right)
\] |
+-commutative [=>]63.6 | \[ \log \left(\frac{2 \cdot \mathsf{hypot}\left(1, x\right)}{x + \sqrt{\color{blue}{1 + x \cdot x}}}\right)
\] |
hypot-1-def [=>]63.6 | \[ \log \left(\frac{2 \cdot \mathsf{hypot}\left(1, x\right)}{x + \color{blue}{\mathsf{hypot}\left(1, x\right)}}\right)
\] |
Taylor expanded in x around -inf 0.2
Simplified0.2
[Start]0.2 | \[ -2 \cdot \log \left(\frac{-1}{x}\right) + \left(0.75 \cdot \frac{1}{{x}^{2}} + \log 4\right)
\] |
---|---|
fma-def [=>]0.2 | \[ \color{blue}{\mathsf{fma}\left(-2, \log \left(\frac{-1}{x}\right), 0.75 \cdot \frac{1}{{x}^{2}} + \log 4\right)}
\] |
+-commutative [=>]0.2 | \[ \mathsf{fma}\left(-2, \log \left(\frac{-1}{x}\right), \color{blue}{\log 4 + 0.75 \cdot \frac{1}{{x}^{2}}}\right)
\] |
associate-*r/ [=>]0.2 | \[ \mathsf{fma}\left(-2, \log \left(\frac{-1}{x}\right), \log 4 + \color{blue}{\frac{0.75 \cdot 1}{{x}^{2}}}\right)
\] |
metadata-eval [=>]0.2 | \[ \mathsf{fma}\left(-2, \log \left(\frac{-1}{x}\right), \log 4 + \frac{\color{blue}{0.75}}{{x}^{2}}\right)
\] |
unpow2 [=>]0.2 | \[ \mathsf{fma}\left(-2, \log \left(\frac{-1}{x}\right), \log 4 + \frac{0.75}{\color{blue}{x \cdot x}}\right)
\] |
if -400 < x < 70
Initial program 0.1
Simplified0.1
[Start]0.1 | \[ \log \left(2 \cdot \frac{\sqrt{x \cdot x + 1}}{\sqrt{x \cdot x + 1} + x}\right)
\] |
---|---|
associate-*r/ [=>]0.1 | \[ \log \color{blue}{\left(\frac{2 \cdot \sqrt{x \cdot x + 1}}{\sqrt{x \cdot x + 1} + x}\right)}
\] |
+-commutative [=>]0.1 | \[ \log \left(\frac{2 \cdot \sqrt{\color{blue}{1 + x \cdot x}}}{\sqrt{x \cdot x + 1} + x}\right)
\] |
hypot-1-def [=>]0.1 | \[ \log \left(\frac{2 \cdot \color{blue}{\mathsf{hypot}\left(1, x\right)}}{\sqrt{x \cdot x + 1} + x}\right)
\] |
+-commutative [=>]0.1 | \[ \log \left(\frac{2 \cdot \mathsf{hypot}\left(1, x\right)}{\color{blue}{x + \sqrt{x \cdot x + 1}}}\right)
\] |
+-commutative [=>]0.1 | \[ \log \left(\frac{2 \cdot \mathsf{hypot}\left(1, x\right)}{x + \sqrt{\color{blue}{1 + x \cdot x}}}\right)
\] |
hypot-1-def [=>]0.1 | \[ \log \left(\frac{2 \cdot \mathsf{hypot}\left(1, x\right)}{x + \color{blue}{\mathsf{hypot}\left(1, x\right)}}\right)
\] |
Applied egg-rr0.1
Simplified0.1
[Start]0.1 | \[ 0 - \log \left(\left(x + \mathsf{hypot}\left(1, x\right)\right) \cdot \frac{0.5}{\mathsf{hypot}\left(1, x\right)}\right)
\] |
---|---|
sub0-neg [=>]0.1 | \[ \color{blue}{-\log \left(\left(x + \mathsf{hypot}\left(1, x\right)\right) \cdot \frac{0.5}{\mathsf{hypot}\left(1, x\right)}\right)}
\] |
if 70 < x
Initial program 61.8
Simplified30.7
[Start]61.8 | \[ \log \left(2 \cdot \frac{\sqrt{x \cdot x + 1}}{\sqrt{x \cdot x + 1} + x}\right)
\] |
---|---|
associate-*r/ [=>]61.8 | \[ \log \color{blue}{\left(\frac{2 \cdot \sqrt{x \cdot x + 1}}{\sqrt{x \cdot x + 1} + x}\right)}
\] |
+-commutative [=>]61.8 | \[ \log \left(\frac{2 \cdot \sqrt{\color{blue}{1 + x \cdot x}}}{\sqrt{x \cdot x + 1} + x}\right)
\] |
hypot-1-def [=>]61.8 | \[ \log \left(\frac{2 \cdot \color{blue}{\mathsf{hypot}\left(1, x\right)}}{\sqrt{x \cdot x + 1} + x}\right)
\] |
+-commutative [=>]61.8 | \[ \log \left(\frac{2 \cdot \mathsf{hypot}\left(1, x\right)}{\color{blue}{x + \sqrt{x \cdot x + 1}}}\right)
\] |
+-commutative [=>]61.8 | \[ \log \left(\frac{2 \cdot \mathsf{hypot}\left(1, x\right)}{x + \sqrt{\color{blue}{1 + x \cdot x}}}\right)
\] |
hypot-1-def [=>]30.7 | \[ \log \left(\frac{2 \cdot \mathsf{hypot}\left(1, x\right)}{x + \color{blue}{\mathsf{hypot}\left(1, x\right)}}\right)
\] |
Taylor expanded in x around inf 0.7
Simplified0.1
[Start]0.7 | \[ \left(0.11458333333333333 \cdot \frac{1}{{x}^{6}} + 0.25 \cdot \frac{1}{{x}^{2}}\right) - 0.15625 \cdot \frac{1}{{x}^{4}}
\] |
---|---|
cancel-sign-sub-inv [=>]0.7 | \[ \color{blue}{\left(0.11458333333333333 \cdot \frac{1}{{x}^{6}} + 0.25 \cdot \frac{1}{{x}^{2}}\right) + \left(-0.15625\right) \cdot \frac{1}{{x}^{4}}}
\] |
+-commutative [=>]0.7 | \[ \color{blue}{\left(0.25 \cdot \frac{1}{{x}^{2}} + 0.11458333333333333 \cdot \frac{1}{{x}^{6}}\right)} + \left(-0.15625\right) \cdot \frac{1}{{x}^{4}}
\] |
associate-+l+ [=>]0.7 | \[ \color{blue}{0.25 \cdot \frac{1}{{x}^{2}} + \left(0.11458333333333333 \cdot \frac{1}{{x}^{6}} + \left(-0.15625\right) \cdot \frac{1}{{x}^{4}}\right)}
\] |
associate-*r/ [=>]0.7 | \[ \color{blue}{\frac{0.25 \cdot 1}{{x}^{2}}} + \left(0.11458333333333333 \cdot \frac{1}{{x}^{6}} + \left(-0.15625\right) \cdot \frac{1}{{x}^{4}}\right)
\] |
metadata-eval [=>]0.7 | \[ \frac{\color{blue}{0.25}}{{x}^{2}} + \left(0.11458333333333333 \cdot \frac{1}{{x}^{6}} + \left(-0.15625\right) \cdot \frac{1}{{x}^{4}}\right)
\] |
unpow2 [=>]0.7 | \[ \frac{0.25}{\color{blue}{x \cdot x}} + \left(0.11458333333333333 \cdot \frac{1}{{x}^{6}} + \left(-0.15625\right) \cdot \frac{1}{{x}^{4}}\right)
\] |
associate-/r* [=>]0.1 | \[ \color{blue}{\frac{\frac{0.25}{x}}{x}} + \left(0.11458333333333333 \cdot \frac{1}{{x}^{6}} + \left(-0.15625\right) \cdot \frac{1}{{x}^{4}}\right)
\] |
associate-*r/ [=>]0.1 | \[ \frac{\frac{0.25}{x}}{x} + \left(\color{blue}{\frac{0.11458333333333333 \cdot 1}{{x}^{6}}} + \left(-0.15625\right) \cdot \frac{1}{{x}^{4}}\right)
\] |
metadata-eval [=>]0.1 | \[ \frac{\frac{0.25}{x}}{x} + \left(\frac{\color{blue}{0.11458333333333333}}{{x}^{6}} + \left(-0.15625\right) \cdot \frac{1}{{x}^{4}}\right)
\] |
metadata-eval [<=]0.1 | \[ \frac{\frac{0.25}{x}}{x} + \left(\frac{0.11458333333333333}{{x}^{6}} + \left(-0.15625\right) \cdot \frac{1}{{x}^{\color{blue}{\left(2 \cdot 2\right)}}}\right)
\] |
pow-sqr [<=]0.1 | \[ \frac{\frac{0.25}{x}}{x} + \left(\frac{0.11458333333333333}{{x}^{6}} + \left(-0.15625\right) \cdot \frac{1}{\color{blue}{{x}^{2} \cdot {x}^{2}}}\right)
\] |
unpow2 [=>]0.1 | \[ \frac{\frac{0.25}{x}}{x} + \left(\frac{0.11458333333333333}{{x}^{6}} + \left(-0.15625\right) \cdot \frac{1}{\color{blue}{\left(x \cdot x\right)} \cdot {x}^{2}}\right)
\] |
unpow2 [=>]0.1 | \[ \frac{\frac{0.25}{x}}{x} + \left(\frac{0.11458333333333333}{{x}^{6}} + \left(-0.15625\right) \cdot \frac{1}{\left(x \cdot x\right) \cdot \color{blue}{\left(x \cdot x\right)}}\right)
\] |
associate-*r/ [=>]0.1 | \[ \frac{\frac{0.25}{x}}{x} + \left(\frac{0.11458333333333333}{{x}^{6}} + \color{blue}{\frac{\left(-0.15625\right) \cdot 1}{\left(x \cdot x\right) \cdot \left(x \cdot x\right)}}\right)
\] |
metadata-eval [=>]0.1 | \[ \frac{\frac{0.25}{x}}{x} + \left(\frac{0.11458333333333333}{{x}^{6}} + \frac{\color{blue}{-0.15625} \cdot 1}{\left(x \cdot x\right) \cdot \left(x \cdot x\right)}\right)
\] |
metadata-eval [=>]0.1 | \[ \frac{\frac{0.25}{x}}{x} + \left(\frac{0.11458333333333333}{{x}^{6}} + \frac{\color{blue}{-0.15625}}{\left(x \cdot x\right) \cdot \left(x \cdot x\right)}\right)
\] |
unpow2 [<=]0.1 | \[ \frac{\frac{0.25}{x}}{x} + \left(\frac{0.11458333333333333}{{x}^{6}} + \frac{-0.15625}{\color{blue}{{x}^{2}} \cdot \left(x \cdot x\right)}\right)
\] |
unpow2 [<=]0.1 | \[ \frac{\frac{0.25}{x}}{x} + \left(\frac{0.11458333333333333}{{x}^{6}} + \frac{-0.15625}{{x}^{2} \cdot \color{blue}{{x}^{2}}}\right)
\] |
pow-sqr [=>]0.1 | \[ \frac{\frac{0.25}{x}}{x} + \left(\frac{0.11458333333333333}{{x}^{6}} + \frac{-0.15625}{\color{blue}{{x}^{\left(2 \cdot 2\right)}}}\right)
\] |
Final simplification0.1
Alternative 1 | |
---|---|
Error | 0.1 |
Cost | 20104 |
Alternative 2 | |
---|---|
Error | 0.1 |
Cost | 20040 |
Alternative 3 | |
---|---|
Error | 0.3 |
Cost | 19844 |
Alternative 4 | |
---|---|
Error | 0.3 |
Cost | 14152 |
Alternative 5 | |
---|---|
Error | 0.3 |
Cost | 14024 |
Alternative 6 | |
---|---|
Error | 0.4 |
Cost | 13380 |
Alternative 7 | |
---|---|
Error | 7.1 |
Cost | 8012 |
Alternative 8 | |
---|---|
Error | 7.3 |
Cost | 7112 |
Alternative 9 | |
---|---|
Error | 7.8 |
Cost | 6988 |
Alternative 10 | |
---|---|
Error | 7.3 |
Cost | 6988 |
Alternative 11 | |
---|---|
Error | 14.8 |
Cost | 6596 |
Alternative 12 | |
---|---|
Error | 47.0 |
Cost | 320 |
Alternative 13 | |
---|---|
Error | 46.9 |
Cost | 320 |
herbie shell --seed 1
(FPCore (x)
:name "log(2sqrt(x*x + 1) / (sqrt(x*x + 1) + x))"
:precision binary64
:pre (and (<= -1.79e+308 x) (<= x 1.79e+308))
(log (* 2.0 (/ (sqrt (+ (* x x) 1.0)) (+ (sqrt (+ (* x x) 1.0)) x)))))