Мой совет? Не беспокойтесь о случае 1x1 и спите ночью. Вы не должны беспокоиться о каких-либо случаях, когда вдруг решите использовать вашу библиотеку для моделирования набора чисел как матрицы 1x1 и жаловаться на вашу реализацию.
Никто, кто решает эти проблемы, не будет таким глупым. Если вы достаточно умны, чтобы использовать матриц, вы достаточно умны, чтобы правильно их использовать.
Что касается всех перестановок, которые вводят скаляры, я бы сказал, что вы должны их учитывать. Как пользователь библиотеки матриц, я ожидал бы, что смогу умножить две матрицы вместе, чтобы получить другую матрицу, матрицу на вектор (столбец или строку), получить векторный результат, и скалярное умножение матрицы на другую матрицу.
Если я умножу два вектора, я получу скаляр (внутреннее произведение) или матрицу (внешнее произведение). Твоя библиотека лучше отдай их мне.
Это не тривиально. Это было сделано "правильно" другими, но слава тому, чтобы проработать это для себя.