public ProjCoordinate projectInverse(double xyx, double xyy, ProjCoordinate out) {
		double th;

		th = xyy * ( xyy < 0. ? RYCS : RYCN);
		if (Math.abs(th) > 1.)
			if (Math.abs(th) > ONETOL)	throw new ProjectionException("I");
			else			th = th > 0. ? ProjectionMath.HALFPI : - ProjectionMath.HALFPI;
		else
			th = Math.asin(th);
		out.x = RXC * xyx / Math.cos(th);
		th += th;
		out.y = (th + Math.sin(th)) * (xyy < 0. ? RCS : RCN);
		if (Math.abs(out.y) > 1.)
			if (Math.abs(out.y) > ONETOL)	throw new ProjectionException("I");
			else			out.y = out.y > 0. ? ProjectionMath.HALFPI : - ProjectionMath.HALFPI;
		else
			out.y = Math.asin(out.y);
		return out;
	}