code: def test_gaussian_whiten(
      Xdata: tf.Tensor,
      Xnew: tf.Tensor,
      kernel: Kernel,
      mu: tf.Tensor,
      sqrt: tf.Tensor,
  ) -> None:
      """
      Make sure that predicting using the whitened representation is the
      same as the non-whitened one.
      """
      F_sqrt = tf.convert_to_tensor(rng.rand(Nn, Ln))
  
      K = kernel(Xdata)
      L = tf.linalg.cholesky(K)
      V = tf.linalg.triangular_solve(L, mu, lower=True)
      V_prime = tf.linalg.diag(tf.transpose(F_sqrt))
      common_shape = tf.broadcast_static_shape(V_prime.shape, L.shape)
      L = tf.broadcast_to(L, common_shape)
      V_sqrt = tf.linalg.triangular_solve(
          L, tf.linalg.diag(tf.transpose(F_sqrt)), lower=True
      )
  
      Fstar_mean, Fstar_var = conditional(
          Xnew, Xdata, kernel, mu, q_sqrt=F_sqrt
      )
      Fstar_w_mean, Fstar_w_var = conditional(
          Xnew, Xdata, kernel, V, q_sqrt=V_sqrt, white=True
      )
  
      mean_diff = Fstar_w_mean - Fstar_mean
      var_diff = Fstar_w_var - Fstar_var
  
      assert_allclose(mean_diff, 0, atol=4)
      assert_allclose(var_diff, 0, atol=4)
  
imports: import numpy
  import pytest
  import tensorflow
  from numpy.testing import assert_allclose
  import gpflow
  from gpflow import Parameter
  from gpflow.base import AnyNDArray, MeanAndVariance
  from gpflow.conditionals import conditional
  from gpflow.config import default_float
  from gpflow.kernels import Kernel
  from gpflow.utilities.bijectors import triangular
label_desc: Use image node_id 9 for calling a global function with example usage: test_gaussian_whiten(Xdata, Xnew, kernel, mu, sqrt) without return types