def METHOD_NAME(self, s, c, H, gamma, i):
    # apply previous givens to matrix
    for j in range(i):
        tmp = -s[j] * H[j, i] + c[j] * H[j + 1, i]
        H[j, i] = np.conjugate(c[j]) * H[j, i] + np.conjugate(s[j]) * H[j + 1, i]
        H[j + 1, i] = tmp
    # compute new rotation matrix
    den = (np.absolute(H[i, i]) ** 2 + np.absolute(H[i + 1, i]) ** 2) ** 0.5
    c[i] = H[i, i] / den
    s[i] = H[i + 1, i] / den
    # apply new givens to matrix
    H[i, i] = den
    H[i + 1, i] = 0.0
    # apply new givens to vector
    gamma[i + 1] = -s[i] * gamma[i]
    gamma[i] *= np.conjugate(c[i])