code: def test_jax_qr(
      *,
      dtype_and_x,
      mode,
      on_device,
      fn_tree,
      frontend,
      test_flags,
      backend_fw,
  ):
      dtype, x = dtype_and_x
      ret, frontend_ret = helpers.test_frontend_function(
          input_dtypes=dtype,
          test_values=False,
          backend_to_test=backend_fw,
          frontend=frontend,
          test_flags=test_flags,
          fn_tree=fn_tree,
          on_device=on_device,
          a=np.asarray(x[0], dtype[0]),
          mode=mode,
      )
      with BackendHandler.update_backend(backend_fw) as ivy_backend:
          ret = [
              ivy_backend.to_numpy(x).astype(np.float64) for x in ret
          ]
      frontend_ret = [x.astype(np.float64) for x in frontend_ret]
  
      Q, R = ret
      frontend_Q, frontend_R = frontend_ret
  
      assert_all_close(
          ret_np=Q @ R,
          ret_from_gt_np=frontend_Q @ frontend_R,
          atol=1e-02,
          backend=backend_fw,
          ground_truth_backend=frontend,
      )
  
imports: import sys
  import numpy
  from hypothesis import strategies, assume
  import ivy_tests.test_ivy.helpers
  from ivy_tests.test_ivy.helpers import assert_all_close, handle_frontend_test, BackendHandler
  from ivy_tests.test_ivy.test_functional.test_core.test_linalg import _get_dtype_and_matrix, _matrix_rank_helper
  from ivy_tests.test_ivy.helpers.hypothesis_helpers.general_helpers import matrix_is_stable
label_desc: Use image node_id 18 for calling a global function with example usage: test_jax_qr() without return types