;
					context.lineTo(sharp(x2s(0)) + 2, sharp(y2s(i)));
					context.fillText(i, sharp(x2s(0)) + 12, sharp(y2s(i)) - 12);
				}
			}
		} else if(atan_scale_checked) {
			// horizontal
			const x_from = s2x(20);
			const x_to = s2x(w-20);
			for(var i = Math.sign(x_from) * Math.floor(Math.log2(Math.abs(x_from))) - 1; i <= Math.sign(x_to) * Math.ceil(Math.log2(Math.abs(x_to))); ++i) {
				if(i == 0)
					continue;
				const x_i = Math.sign(i) * Math.pow(2, Math.abs(i) - 1);
				context.moveTo(sharp(x2s(x_i))