#include <metal_stdlib>
using namespace metal;

struct tint_module_vars_struct {
  device float* prevent_dce;
};

float fwidthFine_f1742d() {
  float arg_0 = 1.0f;
  float const v = arg_0;
  float const v_1 = dfdx(v);
  float const v_2 = dfdy(v);
  float const v_3 = abs(v_1);
  float res = (v_3 + abs(v_2));
  return res;
}

fragment void fragment_main(device float* prevent_dce [[buffer(0)]]) {
  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.prevent_dce=prevent_dce};
  (*tint_module_vars.prevent_dce) = fwidthFine_f1742d();
}
