d3_geoEqualEarth = {
const A3 = a3 / 1000;
const A4 = a4 / 1000;
const M = Math.sqrt(3) / 2;
const EPSILON = 1e-9;
const ITERATIONS = 12;
function equalEarthRaw(x, y) {
const l = Math.asin(M * Math.sin(y)),
l2 = l ** 2,
l6 = l ** 6;
return [
(x * Math.cos(l)) /
(M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),
l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))
];
}
equalEarthRaw.invert = (x, y) => {
let l = y,
l2 = l ** 2,
l6 = l ** 6;
for (let i = 0, dl, fy, fpy; i < ITERATIONS; ++i) {
fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;
fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);
(l -= dl = fy / fpy), (l2 = l ** 2), (l6 = l ** 6);
if (Math.abs(dl) < EPSILON) break;
}
return [
(M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))) / Math.cos(l),
Math.asin(Math.sin(l) / M)
];
};
return () => d3.geoProjection(equalEarthRaw);
}