, sharp(y2s(0)) + 2);
				context.lineTo(sharp(x2s(x_i)), sharp(y2s(0)) - 2);
				const to_print = (i < 0) ? "-" + String(Math.pow(2, Math.abs(i+1))) : String(Math.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(h-20);
			const y_to = s2y(20);
			for(var i = Math.sign(y_from) * Math.floor(Math.log2(Math.abs(y_from))) - 1; i <= Math.si