#!/usr/bin/env python3
# -*- coding: utf-8 -*-

#' # Aufgabe 50: Kompakte QR-Zerlegung, Teil 2

import numpy as np

def QTprodb(V, b):
    b = b.copy()
    n = V.shape[1]
    
    for k in range(n):
        # entweder Matrix mal Vektor: 
        # b[k:] = b[k:] - 2*V[k:, [k]]@V[k:, [k]].T @ b[k:]
        # oder
        b[k:] -= 2*(V[k:,[k]].T @ b[k:]) * V[k:,[k]]
        
    return b
