float sigbp_qcos(float f) {
  if (f >= -(0.5f * 3.14159f) && f <= 0.5f * 3.14159f) {
    float g = f * f;
    return (
        ((g * g * g * (-1.0f / 720.0f) + g * g * (1.0f / 24.0f)) - g * 0.5) +
        1);
  } else
    return (0);
}


x86 assembly (clang, -O0):
<sigbp_qcos>:
push   %rbp
mov    %rsp,%rbp
movss  %xmm0,-0x8(%rbp)
movss  -0x8(%rbp),%xmm0
movss  0xeea(%rip),%xmm1
ucomiss %xmm1,%xmm0
jb     11c3 <sigbp_qcos+0xc3>
movss  0xedd(%rip),%xmm0
ucomiss -0x8(%rbp),%xmm0
jb     11c3 <sigbp_qcos+0xc3>
movss  -0x8(%rbp),%xmm0
mulss  -0x8(%rbp),%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0xc(%rbp),%xmm0
mulss  -0xc(%rbp),%xmm0
mulss  -0xc(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
mulss  -0xc(%rbp),%xmm1
movss  0xeab(%rip),%xmm2
mulss  %xmm2,%xmm1
movss  0xe9b(%rip),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm1
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xe77(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xe5f(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    11cb <sigbp_qcos+0xcb>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x4(%rbp)
movss  -0x4(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<sigbp_qcos>:
ucomiss 0xef9(%rip),%xmm0
xorps  %xmm1,%xmm1
jb     1162 <sigbp_qcos+0x62>
movss  0xef0(%rip),%xmm2
ucomiss %xmm0,%xmm2
jb     1162 <sigbp_qcos+0x62>
mulss  %xmm0,%xmm0
movaps %xmm0,%xmm1
mulss  %xmm0,%xmm1
xorps  %xmm2,%xmm2
cvtss2sd %xmm0,%xmm2
mulss  %xmm1,%xmm0
mulss  0xed1(%rip),%xmm1
mulss  0xecd(%rip),%xmm0
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
mulsd  0xec1(%rip),%xmm2
addsd  %xmm0,%xmm2
addsd  0xebd(%rip),%xmm2
xorps  %xmm1,%xmm1
cvtsd2ss %xmm2,%xmm1
movaps %xmm1,%xmm0
ret

LLVM IR (-O0):
define float @sigbp_qcos(float %0) {
%2 = alloca float
%3 = alloca float
%4 = alloca float
store float %0, float* %3
%5 = load float, float* %3
%6 = fcmp oge float %5, 0xBFF921FA00000000
br i1 %6, label %7, label %31
7: ; preds = %1
%8 = load float, float* %3
%9 = fcmp ole float %8, 0x3FF921FA00000000
br i1 %9, label %10, label %31
10: ; preds = %7
%11 = load float, float* %3
%12 = load float, float* %3
%13 = fmul float %11, %12
store float %13, float* %4
%14 = load float, float* %4
%15 = load float, float* %4
%16 = fmul float %14, %15
%17 = load float, float* %4
%18 = fmul float %16, %17
%19 = load float, float* %4
%20 = load float, float* %4
%21 = fmul float %19, %20
%22 = fmul float %21, 0x3FA5555560000000
%23 = call float @llvm.fmuladd.f32(float %18, float 0xBF56C16C20000000, float %22)
%24 = fpext float %23 to double
%25 = load float, float* %4
%26 = fpext float %25 to double
%27 = fneg double %26
%28 = call double @llvm.fmuladd.f64(double %27, double 5.000000e-01, double %24)
%29 = fadd double %28, 1.000000e+00
%30 = fptrunc double %29 to float
store float %30, float* %2
br label %32
31: ; preds = %7, %1
store float 0.000000e+00, float* %2
br label %32
32: ; preds = %31, %10
%33 = load float, float* %2
ret float %33
}

LLVM IR (-O2):
define float @sigbp_qcos(float %0) {
%2 = fcmp oge float %0, 0xBFF921FA00000000
%3 = fcmp ole float %0, 0x3FF921FA00000000
%4 = and i1 %2, %3
br i1 %4, label %5, label %17
5: ; preds = %1
%6 = fmul float %0, %0
%7 = fmul float %6, %6
%8 = fmul float %6, %7
%9 = fmul float %7, 0x3FA5555560000000
%10 = tail call float @llvm.fmuladd.f32(float %8, float 0xBF56C16C20000000, float %9)
%11 = fpext float %10 to double
%12 = fpext float %6 to double
%13 = fneg double %12
%14 = tail call double @llvm.fmuladd.f64(double %13, double 5.000000e-01, double %11)
%15 = fadd double %14, 1.000000e+00
%16 = fptrunc double %15 to float
br label %17
17: ; preds = %1, %5
%18 = phi float [ %16, %5 ], [ 0.000000e+00, %1 ]
ret float %18
}