Цитата(halfdoom @ Dec 29 2014, 10:03)

Приличных оберток не видел, но есть alglib от Сергея Бочканова, где есть попытки прикрутить операторы куда нужно. Поскольку там уже все в классах, то, наверное, можно попытаться расширить список операций под свои нужды.
Про Alglib давно знаю и даже коллекционирую ее версии на ftp, однако стиль использования этой библиотеки мне сильно не нравится. Т.е. меня-то интересуют именно варианты "прикручивания", а не библиотеки, которые выполняют работу. Тогда как Alglib сильно "недокручена", поскольку требует явного вызова функций.
Умножение двух матриц, на мой взгляд, должно выглядеть (на C++) так:
Код
RealMatrix A(3,4), B(4,3), C(3,3);
C = A * B;
где: RealMatrix - класс с конструктором, аллокирующий для матрицы место в памяти и запоминающий обе ее размерности.
А дальше идет сплошная алгебра, по записи мало отличающаяся от математической.
В сущности все три операции (*,+,-) совершенно тривиальны - их самой написать проще, чем библиотеки подключать. А потому проблема состоит только в том, чтобы компилятор компилировал непосредственно алгебраическую запись типа C = A * B, превращая ее в вызовы функций неявно. А вот такого "счастья", которое предлагает мне Alglib, мне задарма не надо:
Код
ae_matrix A;
ae_matrix B;
ae_matrix C;
ae_frame_make(_state, &_frame_block);
ae_matrix_init(&A, 3, 4, DT_REAL, _state);
ae_matrix_init(&B, 4, 3, DT_REAL, _state);
ae_matrix_init(&C, 3, 3, DT_REAL, _state);
matrixmatrixmultiply(&A, i1, i1+row1-1, j1, j1+col1-1, trans1, &B, i2, i2+row2-1, j2, j2+col2-1, trans2, scl1, &C, i3, i3+l-1, j3, j3+r-1, scl2, &x1, _state);
Жуть! Даже не верится, что это C++. Впечатление такое, что авторы библиотеки этого языка не знают, если настолько последовательно игнорируют его возможности.