code: def lstsq(cls, a, b):
          
          # Check if the size of the input matrices matches
          if a.get_height() != b.get_height():
              raise ValueError("Size of input matrices does not match")
          if b.get_width() != 1:
              raise ValueError("Matrix with dependent variable has more than 1 column")
          aPseudo = a.pseudoinverse()
          # The following code could be used if c is regular.
          # aTrans  = a.transform()
          # c       = aTrans * a
          # invers() raises an ValueError, if c is not invertible
          # cInvers = c.invers()
          # beta = cInvers * aTrans * b
          beta = aPseudo * b
          return beta
docs: Return the least-squares solution to a linear matrix equation.
  
          :param Matrix a:    Design matrix with the values of the independent variables.
          :param Matrix b:    Matrix with the "dependent variable" values.
                              b can only have one column.
  
          :raise:             Raises an :py:exc:`ValueError`, if
                              - the number of rows of a and b does not match.
                              - b has more than one column.
          :note:              The algorithm solves the following equations.
                              beta = a^+ b.