#include <metal_stdlib>

using namespace metal;

float3 tint_degrees(float3 param_0) {
  return param_0 * 57.295779513082322865;
}

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

void degrees_2af623() {
  float3 res = tint_degrees(float3());
}

float4 vertex_main_inner() {
  degrees_2af623();
  return float4();
}

vertex tint_symbol vertex_main() {
  float4 const inner_result = vertex_main_inner();
  tint_symbol wrapper_result = {};
  wrapper_result.value = inner_result;
  return wrapper_result;
}

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

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

