64 lines
1.7 KiB
C++
64 lines
1.7 KiB
C++
//
|
|
// 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;
|
|
|
|
|
|
}
|