float Fast_dB2Lin10(float x) {
  float xa = x + 40.0f;
  if (x > -67.0f) {
    return (
        0.01f +
        xa *
            (0.001151293f +
             xa *
                 (6.62737e-5f +
                  xa *
                      (2.54335e-6f +
                       xa *
                           (7.32034e-8f +
                            xa *
                                (1.68557e-9f +
                                 xa *
                                     (3.23431e-11f +
                                      xa *
                                          (5.31948e-13f +
                                           xa *
                                               (7.65535e-15f +
                                                xa *
                                                    (9.79283e-17f +
                                                     xa *
                                                         1.12744e-18f))))))))));
  } else {
    return 0.0004f;
  }
}


x86 assembly (clang, -O0):
<Fast_dB2Lin10>:
push   %rbp
mov    %rsp,%rbp
movss  %xmm0,-0x8(%rbp)
movss  0xef3(%rip),%xmm0
addss  -0x8(%rbp),%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0x8(%rbp),%xmm0
movss  0xed8(%rip),%xmm1
ucomiss %xmm1,%xmm0
jbe    1221 <Fast_dB2Lin10+0x121>
movss  -0xc(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  -0xc(%rbp),%xmm2
movss  -0xc(%rbp),%xmm3
movss  -0xc(%rbp),%xmm4
movss  -0xc(%rbp),%xmm5
movss  -0xc(%rbp),%xmm6
movss  -0xc(%rbp),%xmm7
movss  -0xc(%rbp),%xmm8
movss  -0xc(%rbp),%xmm9
movss  0xec2(%rip),%xmm10
mulss  %xmm10,%xmm9
movss  0xeb8(%rip),%xmm10
addss  %xmm10,%xmm9
mulss  %xmm9,%xmm8
movss  0xe9d(%rip),%xmm9
addss  %xmm9,%xmm8
mulss  %xmm8,%xmm7
movss  0xe86(%rip),%xmm8
addss  %xmm8,%xmm7
mulss  %xmm7,%xmm6
movss  0xe71(%rip),%xmm7
addss  %xmm7,%xmm6
mulss  %xmm6,%xmm5
movss  0xe5d(%rip),%xmm6
addss  %xmm6,%xmm5
mulss  %xmm5,%xmm4
movss  0xe49(%rip),%xmm5
addss  %xmm5,%xmm4
mulss  %xmm4,%xmm3
movss  0xe35(%rip),%xmm4
addss  %xmm4,%xmm3
mulss  %xmm3,%xmm2
movss  0xe21(%rip),%xmm3
addss  %xmm3,%xmm2
mulss  %xmm2,%xmm1
movss  0xe0d(%rip),%xmm2
addss  %xmm2,%xmm1
mulss  %xmm1,%xmm0
movss  0xdf9(%rip),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    122e <Fast_dB2Lin10+0x12e>
movss  0xddf(%rip),%xmm0
movss  %xmm0,-0x4(%rbp)
movss  -0x4(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<Fast_dB2Lin10>:
ucomiss 0xefd(%rip),%xmm0
jbe    1199 <Fast_dB2Lin10+0x99>
addss  0xeeb(%rip),%xmm0
movss  0xeef(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  0xee7(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  0xedf(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  0xed7(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  0xecf(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  0xec7(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  0xebf(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  0xeb7(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  0xeaf(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  0xea7(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  0xe9f(%rip),%xmm1
movaps %xmm1,%xmm0
ret
movss  0xe67(%rip),%xmm0
ret

LLVM IR (-O0):
define float @Fast_dB2Lin10(float %0) {
%2 = alloca float
%3 = alloca float
%4 = alloca float
store float %0, float* %3
%5 = load float, float* %3
%6 = fadd float %5, 4.000000e+01
store float %6, float* %4
%7 = load float, float* %3
%8 = fcmp ogt float %7, -6.700000e+01
br i1 %8, label %9, label %30
9: ; preds = %1
%10 = load float, float* %4
%11 = load float, float* %4
%12 = load float, float* %4
%13 = load float, float* %4
%14 = load float, float* %4
%15 = load float, float* %4
%16 = load float, float* %4
%17 = load float, float* %4
%18 = load float, float* %4
%19 = load float, float* %4
%20 = call float @llvm.fmuladd.f32(float %19, float 0x3C34CC2F60000000, float 0x3C9C39D540000000)
%21 = call float @llvm.fmuladd.f32(float %18, float %20, float 0x3D013D0240000000)
%22 = call float @llvm.fmuladd.f32(float %17, float %21, float 0x3D62B75CA0000000)
%23 = call float @llvm.fmuladd.f32(float %16, float %22, float 0x3DC1C7E300000000)
%24 = call float @llvm.fmuladd.f32(float %15, float %23, float 0x3E1CF53720000000)
%25 = call float @llvm.fmuladd.f32(float %14, float %24, float 0x3E73A67FE0000000)
%26 = call float @llvm.fmuladd.f32(float %13, float %25, float 0x3EC555CD80000000)
%27 = call float @llvm.fmuladd.f32(float %12, float %26, float 0x3F115F8D80000000)
%28 = call float @llvm.fmuladd.f32(float %11, float %27, float 0x3F52DCDF80000000)
%29 = call float @llvm.fmuladd.f32(float %10, float %28, float 0x3F847AE140000000)
store float %29, float* %2
br label %31
30: ; preds = %1
store float 0x3F3A36E2E0000000, float* %2
br label %31
31: ; preds = %30, %9
%32 = load float, float* %2
ret float %32
}

LLVM IR (-O2):
define float @Fast_dB2Lin10(float %0) {
%2 = fadd float %0, 4.000000e+01
%3 = fcmp ogt float %0, -6.700000e+01
br i1 %3, label %4, label %15
4: ; preds = %1
%5 = tail call float @llvm.fmuladd.f32(float %2, float 0x3C34CC2F60000000, float 0x3C9C39D540000000)
%6 = tail call float @llvm.fmuladd.f32(float %2, float %5, float 0x3D013D0240000000)
%7 = tail call float @llvm.fmuladd.f32(float %2, float %6, float 0x3D62B75CA0000000)
%8 = tail call float @llvm.fmuladd.f32(float %2, float %7, float 0x3DC1C7E300000000)
%9 = tail call float @llvm.fmuladd.f32(float %2, float %8, float 0x3E1CF53720000000)
%10 = tail call float @llvm.fmuladd.f32(float %2, float %9, float 0x3E73A67FE0000000)
%11 = tail call float @llvm.fmuladd.f32(float %2, float %10, float 0x3EC555CD80000000)
%12 = tail call float @llvm.fmuladd.f32(float %2, float %11, float 0x3F115F8D80000000)
%13 = tail call float @llvm.fmuladd.f32(float %2, float %12, float 0x3F52DCDF80000000)
%14 = tail call float @llvm.fmuladd.f32(float %2, float %13, float 0x3F847AE140000000)
br label %15
15: ; preds = %1, %4
%16 = phi float [ %14, %4 ], [ 0x3F3A36E2E0000000, %1 ]
ret float %16
}