code: def test_pca_zero_noise_variance_edge_cases(svd_solver):
      # ensure that noise_variance_ is 0 in edge cases
      # when n_components == min(n_samples, n_features)
      n, p = 100, 3
      rng = np.random.RandomState(0)
      X = rng.randn(n, p) * 0.1 + np.array([3, 4, 5])
  
      pca = PCA(n_components=p, svd_solver=svd_solver)
      pca.fit(X)
      assert pca.noise_variance_ == 0
      # Non-regression test for gh-12489
      # ensure no divide-by-zero error for n_components == n_features < n_samples
      pca.score(X)
  
      pca.fit(X.T)
      assert pca.noise_variance_ == 0
      # Non-regression test for gh-12489
      # ensure no divide-by-zero error for n_components == n_samples < n_features
      pca.score(X.T)
  
imports: import re
  import warnings
  import numpy
  import pytest
  import scipy
  from numpy.testing import assert_array_equal
  from sklearn import config_context, datasets
  from sklearn.base import clone
  from sklearn.datasets import load_iris, make_classification
  from sklearn.decomposition import PCA
  from sklearn.decomposition._pca import _assess_dimension, _infer_dimension
  from sklearn.utils._array_api import _atol_for_type, _convert_to_numpy, yield_namespace_device_dtype_combinations
  from sklearn.utils._array_api import device
  from sklearn.utils._testing import _array_api_for_tests, assert_allclose
  from sklearn.utils.estimator_checks import _get_check_estimator_ids, check_array_api_input_and_values
  from sklearn.utils.fixes import CSC_CONTAINERS, CSR_CONTAINERS
label_desc: Use image node_id 28 for calling a global function with example usage: test_pca_zero_noise_variance_edge_cases(svd_solver) without return types