The SVD of a matrix is typically computed by a two-step procedure. In the first step, the matrix is reduced to a bidiagonal matrix. This takes O("mn"2) floating-point operations (flop), assuming that "m" ≥ "n". The second step is to compute the SVD of the bidiagonal matrix. This step can only be done with an iterative method (as with eigenvalue algorithms). However, in practice it suffices to compute the SVD up to a certain precision, like the machine epsilon. If this precision is considered constant, then the second step takes O("n") iterations, each costing O("n") flops. Thus, the first step is more expensive, and the overall cost is O("mn"2) flops .