(FPCore (speed time) :precision binary64 (/ (* speed time) 3600000.0))
double code(double speed, double time) { return (speed * time) / 3600000.0; }
real(8) function code(speed, time) real(8), intent (in) :: speed real(8), intent (in) :: time code = (speed * time) / 3600000.0d0 end function
public static double code(double speed, double time) { return (speed * time) / 3600000.0; }
def code(speed, time): return (speed * time) / 3600000.0
function code(speed, time) return Float64(Float64(speed * time) / 3600000.0) end
function tmp = code(speed, time) tmp = (speed * time) / 3600000.0; end
code[speed_, time_] := N[(N[(speed * time), $MachinePrecision] / 3600000.0), $MachinePrecision]
\begin{array}{l} \\ \frac{speed \cdot time}{3600000} \end{array}
Sampling outcomes in binary64 precision:
Herbie found 3 alternatives:
Alternative | Accuracy | Speedup |
---|
(FPCore (speed time) :precision binary64 (/ (* speed time) 3600000.0))
double code(double speed, double time) { return (speed * time) / 3600000.0; }
real(8) function code(speed, time) real(8), intent (in) :: speed real(8), intent (in) :: time code = (speed * time) / 3600000.0d0 end function
public static double code(double speed, double time) { return (speed * time) / 3600000.0; }
def code(speed, time): return (speed * time) / 3600000.0
function code(speed, time) return Float64(Float64(speed * time) / 3600000.0) end
function tmp = code(speed, time) tmp = (speed * time) / 3600000.0; end
code[speed_, time_] := N[(N[(speed * time), $MachinePrecision] / 3600000.0), $MachinePrecision]
\begin{array}{l} \\ \frac{speed \cdot time}{3600000} \end{array}
(FPCore (speed time) :precision binary64 (/ (* speed time) 3600000.0))
double code(double speed, double time) { return (speed * time) / 3600000.0; }
real(8) function code(speed, time) real(8), intent (in) :: speed real(8), intent (in) :: time code = (speed * time) / 3600000.0d0 end function
public static double code(double speed, double time) { return (speed * time) / 3600000.0; }
def code(speed, time): return (speed * time) / 3600000.0
function code(speed, time) return Float64(Float64(speed * time) / 3600000.0) end
function tmp = code(speed, time) tmp = (speed * time) / 3600000.0; end
code[speed_, time_] := N[(N[(speed * time), $MachinePrecision] / 3600000.0), $MachinePrecision]
\begin{array}{l} \\ \frac{speed \cdot time}{3600000} \end{array}
Initial program 99.6%
(FPCore (speed time) :precision binary64 (* (/ speed 3600000.0) time))
double code(double speed, double time) { return (speed / 3600000.0) * time; }
real(8) function code(speed, time) real(8), intent (in) :: speed real(8), intent (in) :: time code = (speed / 3600000.0d0) * time end function
public static double code(double speed, double time) { return (speed / 3600000.0) * time; }
def code(speed, time): return (speed / 3600000.0) * time
function code(speed, time) return Float64(Float64(speed / 3600000.0) * time) end
function tmp = code(speed, time) tmp = (speed / 3600000.0) * time; end
code[speed_, time_] := N[(N[(speed / 3600000.0), $MachinePrecision] * time), $MachinePrecision]
\begin{array}{l} \\ \frac{speed}{3600000} \cdot time \end{array}
Initial program 99.6%
lift-/.f64
N/A
lift-*.f64
N/A
associate-*l/
N/A
lower-*.f64
N/A
div-inv
N/A
*-commutative
N/A
lower-*.f64
N/A
metadata-eval
99.2
Applied rewrites99.2%
lift-*.f64
N/A
*-commutative
N/A
metadata-eval
N/A
div-inv
N/A
lower-/.f64
99.6
Applied rewrites99.6%
(FPCore (speed time) :precision binary64 (* (* 2.7777777777777776e-7 speed) time))
double code(double speed, double time) { return (2.7777777777777776e-7 * speed) * time; }
real(8) function code(speed, time) real(8), intent (in) :: speed real(8), intent (in) :: time code = (2.7777777777777776d-7 * speed) * time end function
public static double code(double speed, double time) { return (2.7777777777777776e-7 * speed) * time; }
def code(speed, time): return (2.7777777777777776e-7 * speed) * time
function code(speed, time) return Float64(Float64(2.7777777777777776e-7 * speed) * time) end
function tmp = code(speed, time) tmp = (2.7777777777777776e-7 * speed) * time; end
code[speed_, time_] := N[(N[(2.7777777777777776e-7 * speed), $MachinePrecision] * time), $MachinePrecision]
\begin{array}{l} \\ \left(2.7777777777777776 \cdot 10^{-7} \cdot speed\right) \cdot time \end{array}
Initial program 99.6%
lift-/.f64
N/A
lift-*.f64
N/A
associate-*l/
N/A
lower-*.f64
N/A
div-inv
N/A
*-commutative
N/A
lower-*.f64
N/A
metadata-eval
99.2
Applied rewrites99.2%
herbie shell --seed 1
(FPCore (speed time)
:name "speed * time / 3600000"
:precision binary64
:pre (and (and (<= 5.0 speed) (<= speed 150.0)) (and (<= 1000.0 time) (<= time 100000.0)))
(/ (* speed time) 3600000.0))