#include <metal_stdlib>
using namespace metal;
struct frexp_result_f32 {
  float fract;
  int exp;
};
struct vertex_main_outputs {
  float4 tint_symbol [[position]];
};

void frexp_bee870() {
  frexp_result_f32 res = frexp_result_f32{.fract=0.5f, .exp=1};
}
float4 vertex_main_inner() {
  frexp_bee870();
  return float4(0.0f);
}
fragment void fragment_main() {
  frexp_bee870();
}
kernel void compute_main() {
  frexp_bee870();
}
vertex vertex_main_outputs vertex_main() {
  return vertex_main_outputs{.tint_symbol=vertex_main_inner()};
}
