
(FPCore (x y z) :precision binary64 :pre TRUE (+ (- (- (* x y) (* y z)) (* y y)) (* y y)))
double code(double x, double y, double z) {
return (((x * y) - (y * z)) - (y * y)) + (y * y);
}
real(8) function code(x, y, z)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
code = (((x * y) - (y * z)) - (y * y)) + (y * y)
end function
public static double code(double x, double y, double z) {
return (((x * y) - (y * z)) - (y * y)) + (y * y);
}
def code(x, y, z): return (((x * y) - (y * z)) - (y * y)) + (y * y)
function code(x, y, z) return Float64(Float64(Float64(Float64(x * y) - Float64(y * z)) - Float64(y * y)) + Float64(y * y)) end
function tmp = code(x, y, z) tmp = (((x * y) - (y * z)) - (y * y)) + (y * y); end
code[x_, y_, z_] := N[(N[(N[(N[(x * y), $MachinePrecision] - N[(y * z), $MachinePrecision]), $MachinePrecision] - N[(y * y), $MachinePrecision]), $MachinePrecision] + N[(y * y), $MachinePrecision]), $MachinePrecision]
f(x, y, z): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf] code: THEORY BEGIN f(x, y, z: real): real = (((x * y) - (y * z)) - (y * y)) + (y * y) END code
\left(\left(x \cdot y - y \cdot z\right) - y \cdot y\right) + y \cdot y
Herbie found 1 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (x y z) :precision binary64 :pre TRUE (+ (- (- (* x y) (* y z)) (* y y)) (* y y)))
double code(double x, double y, double z) {
return (((x * y) - (y * z)) - (y * y)) + (y * y);
}
real(8) function code(x, y, z)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
code = (((x * y) - (y * z)) - (y * y)) + (y * y)
end function
public static double code(double x, double y, double z) {
return (((x * y) - (y * z)) - (y * y)) + (y * y);
}
def code(x, y, z): return (((x * y) - (y * z)) - (y * y)) + (y * y)
function code(x, y, z) return Float64(Float64(Float64(Float64(x * y) - Float64(y * z)) - Float64(y * y)) + Float64(y * y)) end
function tmp = code(x, y, z) tmp = (((x * y) - (y * z)) - (y * y)) + (y * y); end
code[x_, y_, z_] := N[(N[(N[(N[(x * y), $MachinePrecision] - N[(y * z), $MachinePrecision]), $MachinePrecision] - N[(y * y), $MachinePrecision]), $MachinePrecision] + N[(y * y), $MachinePrecision]), $MachinePrecision]
f(x, y, z): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf] code: THEORY BEGIN f(x, y, z: real): real = (((x * y) - (y * z)) - (y * y)) + (y * y) END code
\left(\left(x \cdot y - y \cdot z\right) - y \cdot y\right) + y \cdot y
(FPCore (x y z) :precision binary64 :pre TRUE (* y (- x z)))
double code(double x, double y, double z) {
return y * (x - z);
}
real(8) function code(x, y, z)
use fmin_fmax_functions
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
code = y * (x - z)
end function
public static double code(double x, double y, double z) {
return y * (x - z);
}
def code(x, y, z): return y * (x - z)
function code(x, y, z) return Float64(y * Float64(x - z)) end
function tmp = code(x, y, z) tmp = y * (x - z); end
code[x_, y_, z_] := N[(y * N[(x - z), $MachinePrecision]), $MachinePrecision]
f(x, y, z): x in [-inf, +inf], y in [-inf, +inf], z in [-inf, +inf] code: THEORY BEGIN f(x, y, z: real): real = y * (x - z) END code
y \cdot \left(x - z\right)
Initial program 63.5%
Applied rewrites100.0%
herbie shell --seed 2026092
(FPCore (x y z)
:name "Linear.Quaternion:$c/ from linear-1.19.1.3, B"
:precision binary64
(+ (- (- (* x y) (* y z)) (* y y)) (* y y)))