Это даже хуже, чем предлагает Ювал.
Математически, для заданного вектора x вы ищете новый вектор x / || x ||
где ||. || это норма, о которой вы, вероятно, думаете, как евклидова норма с
||. || = sqrt (dot (v, v)) = sqrt (sum_i x_i ** 2)
Это числа с плавающей запятой, поэтому недостаточно просто защититься от деления на ноль, у вас также есть проблема с плавающей запятой если x_i все маленькие (они могут снизиться, и вы потеряете величину).
По сути, все сводится к тому, что если вам действительно нужно уметь правильно обрабатывать небольшие векторы, вам придется проделать еще некоторую работу.
Если малые и нулевые векторы не имеют смысла в вашем приложении, вы можете проверить величину вектора и сделать что-то подходящее.
(обратите внимание, что как только вы начинаете работать с числами с плавающей запятой, а не с действительными числами, делать такие вещи, как возведение в квадрат, а затем квадратные числа с корнем (или их суммы) становится проблематичным как для больших, так и для малых концов представимого диапазона )
Итог: правильно выполнять числовую работу во всех случаях сложнее, чем кажется на первый взгляд.
Например, вне моей головы потенциальные проблемы с этой (нормализацией) операцией, выполненной наивным способом
Если вы уже пытались выполнить слияние и просматриваете неслитые файлы, вы можете использовать git checkout:
git checkout some_branch
git merge origin/master
<conflicts!>
git checkout --theirs -- <dir>|<file>
(и, конечно, - наш
сохраняет версия из текущей ветки)