Simplify atan2 expressions when y is non-zero
This commit is contained in:
parent
7cb883c54b
commit
56b7b12c2a
|
@ -2692,16 +2692,14 @@ public final class AccurateMath {
|
||||||
if (invx == 0) { // X is infinite
|
if (invx == 0) { // X is infinite
|
||||||
if (x > 0) {
|
if (x > 0) {
|
||||||
return y; // return +/- 0.0
|
return y; // return +/- 0.0
|
||||||
} else {
|
|
||||||
return copySign(Math.PI, y);
|
|
||||||
}
|
}
|
||||||
|
return copySign(Math.PI, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (x < 0 || invx < 0) {
|
if (x < 0 || invx < 0) {
|
||||||
return copySign(Math.PI, y);
|
return copySign(Math.PI, y);
|
||||||
} else {
|
|
||||||
return x * y;
|
|
||||||
}
|
}
|
||||||
|
return x * y;
|
||||||
}
|
}
|
||||||
|
|
||||||
// y cannot now be zero
|
// y cannot now be zero
|
||||||
|
@ -2731,35 +2729,17 @@ public final class AccurateMath {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (x == Double.POSITIVE_INFINITY) {
|
if (x == Double.POSITIVE_INFINITY) {
|
||||||
if (y > 0 || 1 / y > 0) {
|
return y > 0 ? 0d : -0d;
|
||||||
return 0d;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (y < 0 || 1 / y < 0) {
|
|
||||||
return -0d;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (x == Double.NEGATIVE_INFINITY) {
|
if (x == Double.NEGATIVE_INFINITY) {
|
||||||
if (y > 0.0 || 1 / y > 0.0) {
|
return y > 0 ? Math.PI : -Math.PI;
|
||||||
return Math.PI;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (y < 0 || 1 / y < 0) {
|
|
||||||
return -Math.PI;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Neither y nor x can be infinite or NAN here
|
// Neither y nor x can be infinite or NAN here
|
||||||
|
|
||||||
if (x == 0) {
|
if (x == 0) {
|
||||||
if (y > 0 || 1 / y > 0) {
|
return y > 0 ? Math.PI * F_1_2 : -Math.PI * F_1_2;
|
||||||
return Math.PI * F_1_2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (y < 0 || 1 / y < 0) {
|
|
||||||
return -Math.PI * F_1_2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compute ratio r = y/x
|
// Compute ratio r = y/x
|
||||||
|
|
Loading…
Reference in New Issue