code: def test_bidiagonal_sparse(self):
      A = csc_matrix([[1, 3, 0], [0, 1, 5], [0, 0, 2]], dtype=float)
      e1 = math.exp(1)
      e2 = math.exp(2)
      expected = np.array(
          [
              [e1, 3 * e1, 15 * (e2 - 2 * e1)],
              [0, e1, 5 * (e2 - e1)],
              [0, 0, e2],
          ],
          dtype=float,
      )
      observed = expm(A).toarray()
      assert_array_almost_equal(observed, expected)
  
imports: import math
  import numpy
  from numpy import array, eye, exp, random
  from numpy.testing import assert_allclose, assert_, assert_array_almost_equal, assert_equal, assert_array_almost_equal_nulp, suppress_warnings
  from scipy.sparse import csc_matrix, csc_array, SparseEfficiencyWarning
  from scipy.sparse._construct import eye
  from scipy.sparse.linalg._matfuncs import expm, _expm, ProductOperator, MatrixPowerOperator, _onenorm_matrix_power_nnm, matrix_power
  from scipy.sparse._sputils import matrix
  from scipy.linalg import logm
  from scipy.special import factorial, binom
  import scipy.sparse
  import scipy.sparse.linalg
label_desc: Use image node_id 5 for calling the TestExpM obj's underlying member method code with example usage: obj.test_bidiagonal_sparse() without return types