code: def _bidiagonal_decmp_hholder(M):
      m = M.rows
      n = M.cols
      A = M.as_mutable()
      U, V = A.eye(m), A.eye(n)
      for i in range(min(m, n)):
          v, bet = _householder_vector(A[i:, i])
          hh_mat = A.eye(m - i) - bet * v * v.H
          A[i:, i:] = hh_mat * A[i:, i:]
          temp = A.eye(m)
          temp[i:, i:] = hh_mat
          U = U * temp
          if i + 1 <= n - 2:
              v, bet = _householder_vector(A[i, i + 1 :].T)
              hh_mat = A.eye(n - i - 1) - bet * v * v.H
              A[i:, i + 1 :] = A[i:, i + 1 :] * hh_mat
              temp = A.eye(n)
              temp[i + 1 :, i + 1 :] = hh_mat
              V = temp * V
      return U, A, V
  
imports: from types import FunctionType
  from collections import Counter
  from mpmath import mp, workprec
  from mpmath.libmp.libmpf import prec_to_dps
  from sympy.core.sorting import default_sort_key
  from sympy.core.evalf import DEFAULT_MAXPREC, PrecisionExhausted
  from sympy.core.logic import fuzzy_and, fuzzy_or
  from sympy.core.numbers import Float
  from sympy.core.sympify import _sympify
  from sympy.functions.elementary.miscellaneous import sqrt
  from sympy.polys import roots, CRootOf, ZZ, QQ, EX
  from sympy.polys.matrices import DomainMatrix
  from sympy.polys.matrices.eigen import dom_eigenvects, dom_eigenvects_to_sympy
  from sympy.polys.polytools import gcd
  from .exceptions import MatrixError, NonSquareMatrixError
  from .determinant import _find_reasonable_pivot
  from .utilities import _iszero, _simplify
label_desc: Use image node_id 14 for calling a global function with example usage: _bidiagonal_decmp_hholder(M) and returns: U,  A,  V