float Fast_dB2Lin8(float x) {
  float xa = x + 30.0f;
  if (x > -60.0f) {
    return (0.031622777f +
            xa * (0.003640707f +
                  xa * (0.000209576f +
                        xa * (8.04277e-6f +
                              xa * (2.3149e-7f +
                                    xa * (5.33025e-9f +
                                          xa * (1.02278e-10f +
                                                xa * (1.68217e-12f +
                                                      xa * 2.42083e-14f))))))));
  } else {
    return 0.001f;
  }
}


x86 assembly (clang, -O0):
<Fast_dB2Lin8>:
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    11ef <Fast_dB2Lin8+0xef>
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  0xec6(%rip),%xmm8
mulss  %xmm8,%xmm7
movss  0xebc(%rip),%xmm8
addss  %xmm8,%xmm7
mulss  %xmm7,%xmm6
movss  0xea3(%rip),%xmm7
addss  %xmm7,%xmm6
mulss  %xmm6,%xmm5
movss  0xe8f(%rip),%xmm6
addss  %xmm6,%xmm5
mulss  %xmm5,%xmm4
movss  0xe7b(%rip),%xmm5
addss  %xmm5,%xmm4
mulss  %xmm4,%xmm3
movss  0xe67(%rip),%xmm4
addss  %xmm4,%xmm3
mulss  %xmm3,%xmm2
movss  0xe53(%rip),%xmm3
addss  %xmm3,%xmm2
mulss  %xmm2,%xmm1
movss  0xe3f(%rip),%xmm2
addss  %xmm2,%xmm1
mulss  %xmm1,%xmm0
movss  0xe2b(%rip),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    11fc <Fast_dB2Lin8+0xfc>
movss  0xe11(%rip),%xmm0
movss  %xmm0,-0x4(%rbp)
movss  -0x4(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<Fast_dB2Lin8>:
ucomiss 0xefd(%rip),%xmm0
jbe    117d <Fast_dB2Lin8+0x7d>
addss  0xeef(%rip),%xmm0
movss  0xef3(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  0xeeb(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  0xee3(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  0xedb(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  0xed3(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  0xecb(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  0xec3(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  0xebb(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  0xeb3(%rip),%xmm1
movaps %xmm1,%xmm0
ret
movss  0xe83(%rip),%xmm0
ret

LLVM IR (-O0):
define float @Fast_dB2Lin8(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, 3.000000e+01
store float %6, float* %4
%7 = load float, float* %3
%8 = fcmp ogt float %7, -6.000000e+01
br i1 %8, label %9, label %26
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 = call float @llvm.fmuladd.f32(float %17, float 0x3D1B419140000000, float 0x3D7D97D200000000)
%19 = call float @llvm.fmuladd.f32(float %16, float %18, float 0x3DDC1D2CA0000000)
%20 = call float @llvm.fmuladd.f32(float %15, float %19, float 0x3E36E4AC00000000)
%21 = call float @llvm.fmuladd.f32(float %14, float %20, float 0x3E8F11EFA0000000)
%22 = call float @llvm.fmuladd.f32(float %13, float %21, float 0x3EE0DDEDE0000000)
%23 = call float @llvm.fmuladd.f32(float %12, float %22, float 0x3F2B783420000000)
%24 = call float @llvm.fmuladd.f32(float %11, float %23, float 0x3F6DD31DA0000000)
%25 = call float @llvm.fmuladd.f32(float %10, float %24, float 0x3FA030DC60000000)
store float %25, float* %2
br label %27
26: ; preds = %1
store float 0x3F50624DE0000000, float* %2
br label %27
27: ; preds = %26, %9
%28 = load float, float* %2
ret float %28
}

LLVM IR (-O2):
define float @Fast_dB2Lin8(float %0) {
%2 = fadd float %0, 3.000000e+01
%3 = fcmp ogt float %0, -6.000000e+01
br i1 %3, label %4, label %13
4: ; preds = %1
%5 = tail call float @llvm.fmuladd.f32(float %2, float 0x3D1B419140000000, float 0x3D7D97D200000000)
%6 = tail call float @llvm.fmuladd.f32(float %2, float %5, float 0x3DDC1D2CA0000000)
%7 = tail call float @llvm.fmuladd.f32(float %2, float %6, float 0x3E36E4AC00000000)
%8 = tail call float @llvm.fmuladd.f32(float %2, float %7, float 0x3E8F11EFA0000000)
%9 = tail call float @llvm.fmuladd.f32(float %2, float %8, float 0x3EE0DDEDE0000000)
%10 = tail call float @llvm.fmuladd.f32(float %2, float %9, float 0x3F2B783420000000)
%11 = tail call float @llvm.fmuladd.f32(float %2, float %10, float 0x3F6DD31DA0000000)
%12 = tail call float @llvm.fmuladd.f32(float %2, float %11, float 0x3FA030DC60000000)
br label %13
13: ; preds = %1, %4
%14 = phi float [ %12, %4 ], [ 0x3F50624DE0000000, %1 ]
ret float %14
}