code: def generate_matrix_symmetric(N, pos_definite=False, sparse=False):
      M = np.random.random((N, N))
  
      M = 0.5 * (M + M.T)  # Make M symmetric
  
      if pos_definite:
          Id = N * np.eye(N)
          if sparse:
              M = csr_matrix(M)
          M += Id
      else:
          if sparse:
              M = csr_matrix(M)
  
      return M
  
imports: from __future__ import division, print_function, absolute_import
  import threading
  import itertools
  import numpy
  from numpy.testing import assert_allclose, assert_array_almost_equal_nulp, assert_equal, assert_array_equal
  from pytest import raises
  import pytest
  from numpy import dot, conj, random
  from scipy.linalg import eig, eigh, hilbert, svd
  from scipy.sparse import csc_matrix, csr_matrix, isspmatrix, diags, rand
  from scipy.sparse.linalg import LinearOperator, aslinearoperator
  from scipy.sparse.linalg.eigen.arpack import eigs, eigsh, svds, ArpackNoConvergence, arpack
  from scipy._lib._gcutils import assert_deallocated, IS_PYPY
  from scipy._lib._numpy_compat import suppress_warnings
label_desc: Use image node_id 3 for calling a global function with example usage: generate_matrix_symmetric(N, pos_definite, sparse) and returns: M