#include <metal_stdlib>

using namespace metal;

struct frexp_result {
  float sig;
  int exp;
};
frexp_result tint_frexp(float param_0) {
  int exp;
  float sig = frexp(param_0, exp);
  return {sig, exp};
}

struct tint_symbol {
  float4 value [[position]];
};

void frexp_12f1da() {
  frexp_result res = tint_frexp(1.0f);
}

vertex tint_symbol vertex_main() {
  frexp_12f1da();
  tint_symbol const tint_symbol_1 = {.value=float4()};
  return tint_symbol_1;
}

fragment void fragment_main() {
  frexp_12f1da();
  return;
}

kernel void compute_main() {
  frexp_12f1da();
  return;
}

