#include <metal_stdlib>
using namespace metal;
struct frexp_result_f32 {
  float f;
};
struct frexp_result_f32_1 {
  float fract;
  int exp;
};
struct tint_module_vars_struct {
  thread frexp_result_f32* a;
  thread frexp_result_f32_1* b;
};
struct tint_symbol_outputs {
  float4 tint_symbol_1 [[color(0)]];
};

float4 tint_symbol_inner(tint_module_vars_struct tint_module_vars) {
  return float4((*tint_module_vars.a).f, (*tint_module_vars.b).fract, 0.0f, 0.0f);
}
fragment tint_symbol_outputs tint_symbol() {
  thread frexp_result_f32 a = {};
  thread frexp_result_f32_1 b = frexp_result_f32_1{.fract=0.5f, .exp=1};
  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=(&a), .b=(&b)};
  return tint_symbol_outputs{.tint_symbol_1=tint_symbol_inner(tint_module_vars)};
}
