96 const std::array< std::array< T, n >, m > &B,
97 std::array< std::array< T, n >, m > &C
122for (std::size_t i = 0; i < m; i++) {
123 for (std::size_t j = 0; j < n; j++) {
124 C[i][j] = A * B[i][j];
453 const std::vector< std::vector< T > > &A,
454 const std::vector< std::vector< T > > &B,
455 std::vector< std::vector< T > > &C
463std::size_t m1, n1, n2, m2;
501for (std::size_t i = 0; i < m1; i++) {
502 C[i].resize(n2, T{});
503 for (std::size_t j = 0; j < n2; j++) {
505 for (std::size_t k = 0; k < n1; k++) {
506 C[i][j] += A[i][k] * B[k][j];
524 const std::array< std::array< T, n >, m > &A,
525 const std::array< std::array< T, l >, n > &B,
526 std::array< std::array< T, l >, m > &C
556for (std::size_t i = 0; i < m; i++) {
557 for (std::size_t j = 0; j < l; j++) {
559 for (std::size_t k = 0; k < n; k++) {
560 C[i][j] += A[i][k] * B[k][j];
578 const std::vector< std::vector<T> > &M,
579 const std::vector<std::vector<T> > &N
582 std::vector< std::vector<T> > Tr =
transpose(N);
584 std::size_t d1= M.size();
585 std::size_t d2= Tr.size();
587 std::vector< std::vector<T> > Q(d1, std::vector<T> (d2, T()) );
589 for( std::size_t i=0; i<d1; i++){
590 for( std::size_t j=0; j<d2; j++){
607std::array< std::array<T, d2> , d1>
matmul(
608 const std::array< std::array<T, d3>, d1> &M,
609 const std::array<std::array<T, d2>, d3> &N
611 std::array< std::array<T, d2> , d1> Q;
612 std::array< std::array<T, d3> , d2> Tr;
616 for( std::size_t i=0; i<d1; i++){
617 for( std::size_t j=0; j<d2; j++){
636 const std::vector<T> &M,
637 const std::vector<std::vector<T> > &N
640 std::size_t d1= M.size();
641 std::vector< std::vector<T> > Q( N );
643 for( std::size_t i=0; i<d1; i++){
661 const std::vector< std::vector<T> > &M,
662 const std::vector<T> &N
665 std::vector< std::vector<T> > Q( M );
667 std::size_t d1= M.size() ;
669 for( std::size_t i=0; i<d1; i++ ){
688 const std::array< T, d1> &M,
689 const std::array<std::array<T, d2>, d1> &N
693 std::array< std::array<T, d2> , d1> Q(N);
695 for( i=0; i<d1; i++){
713 const std::array<std::array<T, d2>, d1> &M,
714 const std::array< T, d2> &N
718 std::array< std::array<T, d2> , d1> Q;
720 for( i=0; i<d1; i++){
790 const std::vector<T> &x,
791 const std::vector<T> &y
794 std::size_t n = x.size();
795 std::size_t m = y.size();
796 std::vector<T> row(m, T{});
797 std::vector<std::vector<T>> z(n,row) ;
799 for( std::size_t i=0; i<n; i++){
800 for( std::size_t j=0; j<m; j++){
801 z[i][j] = x[i] *y[j] ;
818 const std::array<T,n> &x,
819 const std::array<T,m> &y
821 std::array<std::array<T,m>,n> z ;
823 for( std::size_t i=0; i<n; i++){
824 for( std::size_t j=0; j<m; j++){
825 z[i][j] = x[i] *y[j] ;