2s(x_i)), sharp(y2s(0)) + 2);
			context.lineTo(sharp(x2s(x_i)), sharp(y2s(0)) - 2);
			const to_print = (i < 0) ? "-" + String(pow(2, abs(i+1))) : String(pow(2, i-1));
			if(i % 2 == 0)
				context.fillText(to_print, sharp(x2s(x_i)), sharp(y2s(0)) - 12);
			else
				context.fillText(to_print, sharp(x2s(x_i)), sharp(y2s(0)) + 12);
		}
		// vertical
		const y_from = s2y(620);
		const y_to = s2y(20);
		for(var i = sign(y_from) * floor(log2(abs(y_from))) - 1; i <= sign(y_to) * ceil(log2(abs(y_to))); ++i) {
			