?

Average Error: 5.7 → 0
Time: 1.7s
Precision: binary64
Cost: 192

?

\[e^{\log a + \log b} \]
\[a \cdot b \]
(FPCore (a b) :precision binary64 (exp (+ (log a) (log b))))
(FPCore (a b) :precision binary64 (* a b))
double code(double a, double b) {
	return exp((log(a) + log(b)));
}
double code(double a, double b) {
	return a * b;
}
real(8) function code(a, b)
    real(8), intent (in) :: a
    real(8), intent (in) :: b
    code = exp((log(a) + log(b)))
end function
real(8) function code(a, b)
    real(8), intent (in) :: a
    real(8), intent (in) :: b
    code = a * b
end function
public static double code(double a, double b) {
	return Math.exp((Math.log(a) + Math.log(b)));
}
public static double code(double a, double b) {
	return a * b;
}
def code(a, b):
	return math.exp((math.log(a) + math.log(b)))
def code(a, b):
	return a * b
function code(a, b)
	return exp(Float64(log(a) + log(b)))
end
function code(a, b)
	return Float64(a * b)
end
function tmp = code(a, b)
	tmp = exp((log(a) + log(b)));
end
function tmp = code(a, b)
	tmp = a * b;
end
code[a_, b_] := N[Exp[N[(N[Log[a], $MachinePrecision] + N[Log[b], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
code[a_, b_] := N[(a * b), $MachinePrecision]
e^{\log a + \log b}
a \cdot b

Error?

Try it out?

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original5.7
Target0
Herbie0
\[a \cdot b \]

Derivation?

  1. Initial program 5.7

    \[e^{\log a + \log b} \]
  2. Simplified0

    \[\leadsto \color{blue}{a \cdot b} \]
    Proof

    [Start]5.7

    \[ e^{\log a + \log b} \]

    exp-sum [=>]5.4

    \[ \color{blue}{e^{\log a} \cdot e^{\log b}} \]

    rem-exp-log [=>]4.7

    \[ \color{blue}{a} \cdot e^{\log b} \]

    rem-exp-log [=>]0

    \[ a \cdot \color{blue}{b} \]
  3. Final simplification0

    \[\leadsto a \cdot b \]

Reproduce?

herbie shell --seed 2023046 
(FPCore (a b)
  :name "Exp of sum of logs"
  :precision binary64

  :herbie-target
  (* a b)

  (exp (+ (log a) (log b))))