C++ Program to Calculate Inner Product of Two Valarrays

bookmark

#include <iostream>
#include <valarray>
 
void print(std::valarray <double> v)
{
    for (int i = 0; i < v.size(); i++)
        std::cout << v[i] << "  ";
    std::cout << std::endl;
}
 
int main()
{
    std::valarray <double> v(2, 5);
    std::valarray <double> vd(1.5, 5);
    std::valarray <double> vd2(10.0, 10);
 
    std::cout << "Valarray 1 => ";
    print(v);
    std::cout << "Valarray 2 => ";
    print(vd);
    std::cout << "Inner Product of valarray 1 and 2 => ";
    vd = v * vd;
    print(vd); 
    // Behaviour of multiplying different sized valarrays is undefined
    std::cout << "Inner Product of valarrays of different sizes => ";
    vd = vd * vd2;
    print(vd);
}

 

Output:
Valarray 1 => 2  2  2  2  2
Valarray 2 => 1.5  1.5  1.5  1.5  1.5
Inner Product of valarray 1 and 2 => 3  3  3  3  3
Inner Product of valarrays of different sizes => 30  30  30  30  30