Цитата:
Да, действительно, имеет смысл написать все самому. Наверное создам класс LinAlg и напишу массу статических методов.
А вы посмотрите для начала например
http://www.mathdotnet.comкак в нем все устроено, посмотрите другие либы.
Я когда писал на С++ то все писал отдельными функциями, как вы предложили, а контейнеры данных определял как класс, типа:
CmMatrix4x4 - Class Math Matrix 4 x 4
math::mMat4x4Mul( LPCmMatrix4x4 lpMatSrcADst, LPCmMatrix4x4 lpMatSrcB )
Думаю тут интуитивно понятно из названий что к чему
А вот когда стал писать на С# даже не знаю, у меня часть запихана в класс, другая часть отдельными функциями.
Цитата:
Да, что передать double or decimal несразу ясно. Так же наверно придется писать два разных метода для умножения матриц и умножения вектора и матрицы.
Ну это не самое страшное.
Страшнее когда этот класс матрицы надо использовать уже в другой функции, подразумевающей независимость от типа. Тут наступает понимание что это невозможно.
Берем тип перекрывающий другие типы double и пишем все в нем.