code: def test_pca_int_dtype_upcast_to_double(svd_solver):
      # Ensure that all int types will be upcast to float64
      X_i64 = np.random.RandomState(0).randint(0, 1000, (1000, 4))
      X_i64 = X_i64.astype(np.int64)
      X_i32 = X_i64.astype(np.int32)
  
      dX_i64 = da.from_array(X_i64, chunks=X_i64.shape)
      dX_i32 = da.from_array(X_i32, chunks=X_i32.shape)
  
      pca_64 = dd.PCA(
          n_components=3, svd_solver=svd_solver, random_state=0
      ).fit(dX_i64)
      pca_32 = dd.PCA(
          n_components=3, svd_solver=svd_solver, random_state=0
      ).fit(dX_i32)
  
      assert pca_64.components_.dtype == np.float64
      assert pca_32.components_.dtype == np.float64
      assert pca_64.transform(dX_i64).dtype == np.float64
      assert pca_32.transform(dX_i32).dtype == np.float64
  
      assert_array_almost_equal(
          pca_64.components_, pca_32.components_, decimal=5
      )
  
imports: from itertools import product
  import dask.array
  import dask.dataframe
  import numpy
  import pandas
  import pytest
  import scipy
  import sklearn.decomposition
  from dask.array.utils import assert_eq
  from numpy.testing import assert_almost_equal, assert_array_almost_equal, assert_raises
  from sklearn import datasets
  from sklearn.utils import check_random_state
  import dask_ml.decomposition
  from dask_ml._compat import DASK_2_26_0
  from dask_ml.utils import assert_estimator_equal, flip_vector_signs, svd_flip
label_desc: Use image node_id 28 for calling a global function with example usage: test_pca_int_dtype_upcast_to_double(svd_solver) without return types