_unordered_singularValueDecomposition_iterative(epsilon=0, maxIterations=100) {
        let U = Matrix.identity(this._width);
        let S = this._clone();
        let V = Matrix.identity(this._width);
        let iter = 0;
        while (!S.isDiagonal(epsilon) && iter++ < maxIterations) {
            let {Q: Ql, R: Sl} = S.qrDecomposition();
            let {L: Sr, Q: Qr} = Sl.lqDecomposition();
            U = U.times(Ql);
            S = Sr;
            V = Qr.times(V);
        }

        return {U, S, V};
    }
@param {!number=} epsilon
@param {!int=} maxIterations
@returns {!{U: !Matrix, S: !Matrix, V: !Matrix}}