glproj = `
float phi0 = ${projection.parallel() * radians},
sinPhi0 = sin(phi0),
tanPhi;
phi = 0.;
y -= phi0;
if (abs(y += phi0) < 1e-6) {
lambda = sinPhi0 == 0. ? x : 2. * atan(sinPhi0 * x / 2.) / sinPhi0;
} else {
float k = x * x + y * y + 3e-6;
for (int i = 0; i < 10; i++) {
float tanPhi = tan(phi),
secPhi = 1. / cos(phi),
j = k - 2. * y * phi + phi * phi;
phi -= (tanPhi * j + 2. * (phi - y)) / (2. + j * secPhi * secPhi + 2. * (phi - y) * tanPhi);
}
float E = x * (tanPhi = tan(phi)),
A = tan(abs(y) < abs(phi + 1. / tanPhi) ? asin(E) * 0.5 : acos(E) * 0.5 + pi / 4.) / sin(phi);
lambda = sinPhi0 == 0. ? 2. * A : 2. * atan(sinPhi0 * A) / sinPhi0;
}
`