123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- //
- // 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 <boost/numeric/ublas/tensor.hpp>
- #include <boost/numeric/ublas/matrix.hpp>
- #include <boost/numeric/ublas/vector.hpp>
- #include <ostream>
- int main()
- {
- using namespace boost::numeric::ublas;
- using tensorf = tensor<float>;
- using matrixf = matrix<float>;
- using vectorf = vector<float>;
- 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;
- }
|