#include <iostream>
#include <Eigen/Dense>

int main() {
  Eigen::Matrix2d mat;
  mat << 1, 2, 3, 4;
  Eigen::Vector2d u(-1, 1), v(2, 0);
  std::cout << "Here is mat*mat:\n" << mat * mat << std::endl;
  std::cout << "Here is mat*u:\n" << mat * u << std::endl;
  std::cout << "Here is u^T*mat:\n" << u.transpose() * mat << std::endl;
  std::cout << "Here is u^T*v:\n" << u.transpose() * v << std::endl;
  std::cout << "Here is u*v^T:\n" << u * v.transpose() << std::endl;
  std::cout << "Let's multiply mat by itself" << std::endl;
  mat = mat * mat;
  std::cout << "Now mat is mat:\n" << mat << std::endl;
}