Со странным поведением оператора break разобрался. Не заметил ошибку -
в операторе if условием была abs(eps), где еps-был вектор а не скаляр.
поставил if ((norme(eps)<=0.001) и все заработало, как надо.
То есть выходит, что if проверяет тип операнда на правильность, а while, в комбинации с еще одним условием - не всегда.
Это очень похоже на ошибку или недосмотр.