(FPCore (a b c d)
:precision binary64
(/ (- (* b c) (* a d)) (+ (* c c) (* d d))))
↓
(FPCore (a b c d)
:precision binary64
(if (<= c -5e+54)
(- (/ b c) (* (/ d c) (/ a c)))
(if (<= c -1.6e-119)
(* (/ 1.0 (hypot c d)) (/ (- (* c b) (* d a)) (hypot c d)))
(if (<= c 4.05e+30)
(/ (- (/ (* c b) d) a) d)
(/ (- b (/ d (/ c a))) c)))))
double code(double a, double b, double c, double d) {
return ((b * c) - (a * d)) / ((c * c) + (d * d));
}
↓
double code(double a, double b, double c, double d) {
double tmp;
if (c <= -5e+54) {
tmp = (b / c) - ((d / c) * (a / c));
} else if (c <= -1.6e-119) {
tmp = (1.0 / hypot(c, d)) * (((c * b) - (d * a)) / hypot(c, d));
} else if (c <= 4.05e+30) {
tmp = (((c * b) / d) - a) / d;
} else {
tmp = (b - (d / (c / a))) / c;
}
return tmp;
}
public static double code(double a, double b, double c, double d) {
return ((b * c) - (a * d)) / ((c * c) + (d * d));
}
↓
public static double code(double a, double b, double c, double d) {
double tmp;
if (c <= -5e+54) {
tmp = (b / c) - ((d / c) * (a / c));
} else if (c <= -1.6e-119) {
tmp = (1.0 / Math.hypot(c, d)) * (((c * b) - (d * a)) / Math.hypot(c, d));
} else if (c <= 4.05e+30) {
tmp = (((c * b) / d) - a) / d;
} else {
tmp = (b - (d / (c / a))) / c;
}
return tmp;
}
def code(a, b, c, d):
return ((b * c) - (a * d)) / ((c * c) + (d * d))
↓
def code(a, b, c, d):
tmp = 0
if c <= -5e+54:
tmp = (b / c) - ((d / c) * (a / c))
elif c <= -1.6e-119:
tmp = (1.0 / math.hypot(c, d)) * (((c * b) - (d * a)) / math.hypot(c, d))
elif c <= 4.05e+30:
tmp = (((c * b) / d) - a) / d
else:
tmp = (b - (d / (c / a))) / c
return tmp
function code(a, b, c, d)
return Float64(Float64(Float64(b * c) - Float64(a * d)) / Float64(Float64(c * c) + Float64(d * d)))
end
↓
function code(a, b, c, d)
tmp = 0.0
if (c <= -5e+54)
tmp = Float64(Float64(b / c) - Float64(Float64(d / c) * Float64(a / c)));
elseif (c <= -1.6e-119)
tmp = Float64(Float64(1.0 / hypot(c, d)) * Float64(Float64(Float64(c * b) - Float64(d * a)) / hypot(c, d)));
elseif (c <= 4.05e+30)
tmp = Float64(Float64(Float64(Float64(c * b) / d) - a) / d);
else
tmp = Float64(Float64(b - Float64(d / Float64(c / a))) / c);
end
return tmp
end
function tmp = code(a, b, c, d)
tmp = ((b * c) - (a * d)) / ((c * c) + (d * d));
end
↓
function tmp_2 = code(a, b, c, d)
tmp = 0.0;
if (c <= -5e+54)
tmp = (b / c) - ((d / c) * (a / c));
elseif (c <= -1.6e-119)
tmp = (1.0 / hypot(c, d)) * (((c * b) - (d * a)) / hypot(c, d));
elseif (c <= 4.05e+30)
tmp = (((c * b) / d) - a) / d;
else
tmp = (b - (d / (c / a))) / c;
end
tmp_2 = tmp;
end
herbie shell --seed 2023121
(FPCore (a b c d)
:name "Complex division, imag part"
:precision binary64
:herbie-target
(if (< (fabs d) (fabs c)) (/ (- b (* a (/ d c))) (+ c (* d (/ d c)))) (/ (+ (- a) (* b (/ c d))) (+ d (* c (/ c d)))))
(/ (- (* b c) (* a d)) (+ (* c c) (* d d))))