// // Copyright (c) 2018-2019, Cem Bassoy, cem.bassoy@gmail.com // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // The authors gratefully acknowledge the support of // Fraunhofer IOSB, Ettlingen, Germany // #include #include #include #include int main() { using namespace boost::numeric::ublas; using tensorf = tensor; using matrixf = matrix; using vectorf = vector; auto A = tensorf{3,4,2}; auto B = A = 2; // Calling overloaded operators // and using simple tensor expression templates. if( A != (B+1) ) A += 2*B - 1; // formatted output std::cout << "% --------------------------- " << std::endl; std::cout << "% --------------------------- " << std::endl << std::endl; std::cout << "A=" << A << ";" << std::endl << std::endl; auto n = shape{3,4}; auto D = matrixf(n[0],n[1],1); auto e = vectorf(n[1],1); auto f = vectorf(n[0],2); // Calling constructor with // vector expression templates tensorf C = 2*f; // formatted output std::cout << "% --------------------------- " << std::endl; std::cout << "% --------------------------- " << std::endl << std::endl; std::cout << "C=" << C << ";" << std::endl << std::endl; // Calling overloaded operators // and mixing simple tensor and matrix expression templates tensorf F = 3*C + 4*prod(2*D,e); // formatted output std::cout << "% --------------------------- " << std::endl; std::cout << "% --------------------------- " << std::endl << std::endl; std::cout << "F=" << F << ";" << std::endl << std::endl; }