#include <metal_stdlib>
using namespace metal;

struct modf_result_f32 {
  float fract;
  float whole;
};

struct frexp_result_f32 {
  float fract;
  int exp;
};

void deref_modf() {
  modf_result_f32 a = modf_result_f32{.fract=0.5f, .whole=1.0f};
  thread modf_result_f32* const p = (&a);
  float fract = (*p).fract;
  float whole = (*p).whole;
}

void no_deref_modf() {
  modf_result_f32 a = modf_result_f32{.fract=0.5f, .whole=1.0f};
  thread modf_result_f32* const p = (&a);
  float fract = (*p).fract;
  float whole = (*p).whole;
}

void deref_frexp() {
  frexp_result_f32 a = frexp_result_f32{.fract=0.75f, .exp=1};
  thread frexp_result_f32* const p = (&a);
  float fract = (*p).fract;
  int exp = (*p).exp;
}

void no_deref_frexp() {
  frexp_result_f32 a = frexp_result_f32{.fract=0.75f, .exp=1};
  thread frexp_result_f32* const p = (&a);
  float fract = (*p).fract;
  int exp = (*p).exp;
}

kernel void tint_symbol() {
  deref_modf();
  no_deref_modf();
  deref_frexp();
  no_deref_frexp();
}
