code: def robust_outer_product(vec_1, vec_2):
      
      mantissa_1, exponents_1 = np.frexp(vec_1)
      mantissa_2, exponents_2 = np.frexp(vec_2)
      new_mantissas = mantissa_1[None, :] * mantissa_2[:, None]
      new_exponents = exponents_1[None, :] + exponents_2[:, None]
      return new_mantissas * np.exp2(new_exponents)
docs: Calculates a 'robust' outer product of two vectors that may or may not
      contain very small values.
  
      Parameters
      ----------
      vec_1 : 1D ndarray
      vec_2 : 1D ndarray
  
      Returns
      -------
      outer_prod : 2D ndarray. The outer product of vec_1 and vec_2