char vrna_bpp_symbol(const float *x) {
  if (x[0] > 0.667)
    return '.';
  if (x[1] > 0.667)
    return '(';
  if (x[2] > 0.667)
    return ')';
  if ((x[1] + x[2]) > x[0]) {
    if ((x[1] / (x[1] + x[2])) > 0.667)
      return '{';
    if ((x[2] / (x[1] + x[2])) > 0.667)
      return '}';
    else
      return '|';
  }
  if (x[0] > (x[1] + x[2]))
    return ',';
  return ':';
}


x86 assembly (clang, -O0):
<vrna_bpp_symbol>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xee4(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    112f <vrna_bpp_symbol+0x2f>
movb   $0x2e,-0x1(%rbp)
jmp    1253 <vrna_bpp_symbol+0x153>
mov    -0x10(%rbp),%rax
movss  0x4(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xebc(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1157 <vrna_bpp_symbol+0x57>
movb   $0x28,-0x1(%rbp)
jmp    1253 <vrna_bpp_symbol+0x153>
mov    -0x10(%rbp),%rax
movss  0x8(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xe94(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    117f <vrna_bpp_symbol+0x7f>
movb   $0x29,-0x1(%rbp)
jmp    1253 <vrna_bpp_symbol+0x153>
mov    -0x10(%rbp),%rax
movss  0x4(%rax),%xmm0
mov    -0x10(%rbp),%rax
addss  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
ucomiss (%rax),%xmm0
jbe    1223 <vrna_bpp_symbol+0x123>
mov    -0x10(%rbp),%rax
movss  0x4(%rax),%xmm0
mov    -0x10(%rbp),%rax
movss  0x4(%rax),%xmm1
mov    -0x10(%rbp),%rax
addss  0x8(%rax),%xmm1
divss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xe37(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    11dc <vrna_bpp_symbol+0xdc>
movb   $0x7b,-0x1(%rbp)
jmp    1253 <vrna_bpp_symbol+0x153>
mov    -0x10(%rbp),%rax
movss  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movss  0x4(%rax),%xmm1
mov    -0x10(%rbp),%rax
addss  0x8(%rax),%xmm1
divss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xdf9(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    121a <vrna_bpp_symbol+0x11a>
movb   $0x7d,-0x1(%rbp)
jmp    1253 <vrna_bpp_symbol+0x153>
movb   $0x7c,-0x1(%rbp)
jmp    1253 <vrna_bpp_symbol+0x153>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movss  0x4(%rax),%xmm1
mov    -0x10(%rbp),%rax
addss  0x8(%rax),%xmm1
ucomiss %xmm1,%xmm0
jbe    124f <vrna_bpp_symbol+0x14f>
movb   $0x2c,-0x1(%rbp)
jmp    1253 <vrna_bpp_symbol+0x153>
movb   $0x3a,-0x1(%rbp)
movsbl -0x1(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<vrna_bpp_symbol>:
movss  (%rdi),%xmm0
cvtss2sd %xmm0,%xmm1
mov    $0x2e,%al
ucomisd 0xeee(%rip),%xmm1
ja     118d <vrna_bpp_symbol+0x8d>
movss  0x4(%rdi),%xmm2
xorps  %xmm1,%xmm1
cvtss2sd %xmm2,%xmm1
mov    $0x28,%al
ucomisd 0xed6(%rip),%xmm1
ja     118d <vrna_bpp_symbol+0x8d>
movss  0x8(%rdi),%xmm1
cvtss2sd %xmm1,%xmm3
mov    $0x29,%al
ucomisd 0xec1(%rip),%xmm3
ja     118d <vrna_bpp_symbol+0x8d>
movaps %xmm2,%xmm3
addss  %xmm1,%xmm3
ucomiss %xmm0,%xmm3
jbe    117d <vrna_bpp_symbol+0x7d>
divss  %xmm3,%xmm2
xorps  %xmm0,%xmm0
cvtss2sd %xmm2,%xmm0
mov    $0x7b,%al
ucomisd 0xe9e(%rip),%xmm0
ja     118d <vrna_bpp_symbol+0x8d>
divss  %xmm3,%xmm1
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
ucomisd 0xe89(%rip),%xmm0
seta   %al
or     $0x7c,%al
ret
ucomiss %xmm3,%xmm0
mov    $0x2c,%ecx
mov    $0x3a,%eax
cmova  %ecx,%eax
ret

LLVM IR (-O0):
define signext i8 @vrna_bpp_symbol(float* %0) {
%2 = alloca i8
%3 = alloca float*
store float* %0, float** %3
%4 = load float*, float** %3
%5 = getelementptr inbounds float, float* %4, i64 0
%6 = load float, float* %5
%7 = fpext float %6 to double
%8 = fcmp ogt double %7, 6.670000e-01
br i1 %8, label %9, label %10
9: ; preds = %1
store i8 46, i8* %2
br label %81
10: ; preds = %1
%11 = load float*, float** %3
%12 = getelementptr inbounds float, float* %11, i64 1
%13 = load float, float* %12
%14 = fpext float %13 to double
%15 = fcmp ogt double %14, 6.670000e-01
br i1 %15, label %16, label %17
16: ; preds = %10
store i8 40, i8* %2
br label %81
17: ; preds = %10
%18 = load float*, float** %3
%19 = getelementptr inbounds float, float* %18, i64 2
%20 = load float, float* %19
%21 = fpext float %20 to double
%22 = fcmp ogt double %21, 6.670000e-01
br i1 %22, label %23, label %24
23: ; preds = %17
store i8 41, i8* %2
br label %81
24: ; preds = %17
%25 = load float*, float** %3
%26 = getelementptr inbounds float, float* %25, i64 1
%27 = load float, float* %26
%28 = load float*, float** %3
%29 = getelementptr inbounds float, float* %28, i64 2
%30 = load float, float* %29
%31 = fadd float %27, %30
%32 = load float*, float** %3
%33 = getelementptr inbounds float, float* %32, i64 0
%34 = load float, float* %33
%35 = fcmp ogt float %31, %34
br i1 %35, label %36, label %67
36: ; preds = %24
%37 = load float*, float** %3
%38 = getelementptr inbounds float, float* %37, i64 1
%39 = load float, float* %38
%40 = load float*, float** %3
%41 = getelementptr inbounds float, float* %40, i64 1
%42 = load float, float* %41
%43 = load float*, float** %3
%44 = getelementptr inbounds float, float* %43, i64 2
%45 = load float, float* %44
%46 = fadd float %42, %45
%47 = fdiv float %39, %46
%48 = fpext float %47 to double
%49 = fcmp ogt double %48, 6.670000e-01
br i1 %49, label %50, label %51
50: ; preds = %36
store i8 123, i8* %2
br label %81
51: ; preds = %36
%52 = load float*, float** %3
%53 = getelementptr inbounds float, float* %52, i64 2
%54 = load float, float* %53
%55 = load float*, float** %3
%56 = getelementptr inbounds float, float* %55, i64 1
%57 = load float, float* %56
%58 = load float*, float** %3
%59 = getelementptr inbounds float, float* %58, i64 2
%60 = load float, float* %59
%61 = fadd float %57, %60
%62 = fdiv float %54, %61
%63 = fpext float %62 to double
%64 = fcmp ogt double %63, 6.670000e-01
br i1 %64, label %65, label %66
65: ; preds = %51
store i8 125, i8* %2
br label %81
66: ; preds = %51
store i8 124, i8* %2
br label %81
67: ; preds = %24
%68 = load float*, float** %3
%69 = getelementptr inbounds float, float* %68, i64 0
%70 = load float, float* %69
%71 = load float*, float** %3
%72 = getelementptr inbounds float, float* %71, i64 1
%73 = load float, float* %72
%74 = load float*, float** %3
%75 = getelementptr inbounds float, float* %74, i64 2
%76 = load float, float* %75
%77 = fadd float %73, %76
%78 = fcmp ogt float %70, %77
br i1 %78, label %79, label %80
79: ; preds = %67
store i8 44, i8* %2
br label %81
80: ; preds = %67
store i8 58, i8* %2
br label %81
81: ; preds = %80, %79, %66, %65, %50, %23, %16, %9
%82 = load i8, i8* %2
ret i8 %82
}

LLVM IR (-O2):
define signext i8 @vrna_bpp_symbol(float* nocapture %0) {
%2 = load float, float* %0
%3 = fpext float %2 to double
%4 = fcmp ogt double %3, 6.670000e-01
br i1 %4, label %30, label %5
5: ; preds = %1
%6 = getelementptr inbounds float, float* %0, i64 1
%7 = load float, float* %6
%8 = fpext float %7 to double
%9 = fcmp ogt double %8, 6.670000e-01
br i1 %9, label %30, label %10
10: ; preds = %5
%11 = getelementptr inbounds float, float* %0, i64 2
%12 = load float, float* %11
%13 = fpext float %12 to double
%14 = fcmp ogt double %13, 6.670000e-01
br i1 %14, label %30, label %15
15: ; preds = %10
%16 = fadd float %7, %12
%17 = fcmp ogt float %16, %2
br i1 %17, label %18, label %27
18: ; preds = %15
%19 = fdiv float %7, %16
%20 = fpext float %19 to double
%21 = fcmp ogt double %20, 6.670000e-01
br i1 %21, label %30, label %22
22: ; preds = %18
%23 = fdiv float %12, %16
%24 = fpext float %23 to double
%25 = fcmp ogt double %24, 6.670000e-01
%26 = select i1 %25, i8 125, i8 124
br label %30
27: ; preds = %15
%28 = fcmp ogt float %2, %16
%29 = select i1 %28, i8 44, i8 58
br label %30
30: ; preds = %27, %22, %18, %10, %5, %1
%31 = phi i8 [ 46, %1 ], [ 40, %5 ], [ 41, %10 ], [ 123, %18 ], [ %26, %22 ], [ %29, %27 ]
ret i8 %31
}