float egAtanP(float y, float x) {
  float a, d, s, t;
  if (y > x) {
    a = -x / y;
    d = 3.14159265358979323846 / 2;
  } else {
    a = y / x;
    d = 0.0f;
  }
  s = a * a;
  t = 0.0028662257f;
  t *= s;
  t += -0.0161657367f;
  t *= s;
  t += 0.0429096138f;
  t *= s;
  t += -0.0752896400f;
  t *= s;
  t += 0.1065626393f;
  t *= s;
  t += -0.1420889944f;
  t *= s;
  t += 0.1999355085f;
  t *= s;
  t += -0.3333314528f;
  t *= s;
  t += 1.0f;
  t *= a;
  t += d;
  return t;
}


x86 assembly (clang, -O0):
<egAtanP>:
push   %rbp
mov    %rsp,%rbp
movss  %xmm0,-0x4(%rbp)
movss  %xmm1,-0x8(%rbp)
movss  -0x4(%rbp),%xmm0
ucomiss -0x8(%rbp),%xmm0
jbe    114b <egAtanP+0x4b>
movss  -0x8(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
divss  -0x4(%rbp),%xmm0
movss  %xmm0,-0xc(%rbp)
movss  0xebf(%rip),%xmm0
movss  %xmm0,-0x10(%rbp)
jmp    1162 <egAtanP+0x62>
movss  -0x4(%rbp),%xmm0
divss  -0x8(%rbp),%xmm0
movss  %xmm0,-0xc(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x10(%rbp)
movss  -0xc(%rbp),%xmm0
mulss  -0xc(%rbp),%xmm0
movss  %xmm0,-0x14(%rbp)
movss  0xeab(%rip),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  -0x14(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  0xe8b(%rip),%xmm0
addss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  -0x14(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  0xe66(%rip),%xmm0
addss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  -0x14(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  0xe41(%rip),%xmm0
addss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  -0x14(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  0xe1c(%rip),%xmm0
addss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  -0x14(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  0xdf7(%rip),%xmm0
addss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  -0x14(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  0xdd2(%rip),%xmm0
addss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  -0x14(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  0xdad(%rip),%xmm0
addss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  -0x14(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  0xd88(%rip),%xmm0
addss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  -0xc(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  -0x10(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  -0x18(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<egAtanP>:
ucomiss %xmm1,%xmm0
jbe    111a <egAtanP+0x1a>
xorps  0xef4(%rip),%xmm1
divss  %xmm0,%xmm1
movss  0xef8(%rip),%xmm2
jmp    1124 <egAtanP+0x24>
divss  %xmm1,%xmm0
xorps  %xmm2,%xmm2
movaps %xmm0,%xmm1
movaps %xmm1,%xmm3
mulss  %xmm1,%xmm3
movss  0xee1(%rip),%xmm0
mulss  %xmm3,%xmm0
addss  0xed9(%rip),%xmm0
mulss  %xmm3,%xmm0
addss  0xed1(%rip),%xmm0
mulss  %xmm3,%xmm0
addss  0xec9(%rip),%xmm0
mulss  %xmm3,%xmm0
addss  0xec1(%rip),%xmm0
mulss  %xmm3,%xmm0
addss  0xeb9(%rip),%xmm0
mulss  %xmm3,%xmm0
addss  0xeb1(%rip),%xmm0
mulss  %xmm3,%xmm0
addss  0xea9(%rip),%xmm0
mulss  %xmm3,%xmm0
addss  0xea1(%rip),%xmm0
mulss  %xmm1,%xmm0
addss  %xmm2,%xmm0
ret

LLVM IR (-O0):
define float @egAtanP(float %0, float %1) {
%3 = alloca float
%4 = alloca float
%5 = alloca float
%6 = alloca float
%7 = alloca float
%8 = alloca float
store float %0, float* %3
store float %1, float* %4
%9 = load float, float* %3
%10 = load float, float* %4
%11 = fcmp ogt float %9, %10
br i1 %11, label %12, label %17
12: ; preds = %2
%13 = load float, float* %4
%14 = fneg float %13
%15 = load float, float* %3
%16 = fdiv float %14, %15
store float %16, float* %5
store float 0x3FF921FB60000000, float* %6
br label %21
17: ; preds = %2
%18 = load float, float* %3
%19 = load float, float* %4
%20 = fdiv float %18, %19
store float %20, float* %5
store float 0.000000e+00, float* %6
br label %21
21: ; preds = %17, %12
%22 = load float, float* %5
%23 = load float, float* %5
%24 = fmul float %22, %23
store float %24, float* %7
store float 0x3F677AE940000000, float* %8
%25 = load float, float* %7
%26 = load float, float* %8
%27 = fmul float %26, %25
store float %27, float* %8
%28 = load float, float* %8
%29 = fadd float %28, 0xBF908DC040000000
store float %29, float* %8
%30 = load float, float* %7
%31 = load float, float* %8
%32 = fmul float %31, %30
store float %32, float* %8
%33 = load float, float* %8
%34 = fadd float %33, 0x3FA5F83FC0000000
store float %34, float* %8
%35 = load float, float* %7
%36 = load float, float* %8
%37 = fmul float %36, %35
store float %37, float* %8
%38 = load float, float* %8
%39 = fadd float %38, 0xBFB3462E80000000
store float %39, float* %8
%40 = load float, float* %7
%41 = load float, float* %8
%42 = fmul float %41, %40
store float %42, float* %8
%43 = load float, float* %8
%44 = fadd float %43, 0x3FBB47B060000000
store float %44, float* %8
%45 = load float, float* %7
%46 = load float, float* %8
%47 = fmul float %46, %45
store float %47, float* %8
%48 = load float, float* %8
%49 = fadd float %48, 0xBFC22FF8E0000000
store float %49, float* %8
%50 = load float, float* %7
%51 = load float, float* %8
%52 = fmul float %51, %50
store float %52, float* %8
%53 = load float, float* %8
%54 = fadd float %53, 0x3FC9977CA0000000
store float %54, float* %8
%55 = load float, float* %7
%56 = load float, float* %8
%57 = fmul float %56, %55
store float %57, float* %8
%58 = load float, float* %8
%59 = fadd float %58, 0xBFD5554D80000000
store float %59, float* %8
%60 = load float, float* %7
%61 = load float, float* %8
%62 = fmul float %61, %60
store float %62, float* %8
%63 = load float, float* %8
%64 = fadd float %63, 1.000000e+00
store float %64, float* %8
%65 = load float, float* %5
%66 = load float, float* %8
%67 = fmul float %66, %65
store float %67, float* %8
%68 = load float, float* %6
%69 = load float, float* %8
%70 = fadd float %69, %68
store float %70, float* %8
%71 = load float, float* %8
ret float %71
}

LLVM IR (-O2):
define float @egAtanP(float %0, float %1) {
%3 = fcmp ogt float %0, %1
br i1 %3, label %4, label %7
4: ; preds = %2
%5 = fneg float %1
%6 = fdiv float %5, %0
br label %9
7: ; preds = %2
%8 = fdiv float %0, %1
br label %9
9: ; preds = %7, %4
%10 = phi float [ 0x3FF921FB60000000, %4 ], [ 0.000000e+00, %7 ]
%11 = phi float [ %6, %4 ], [ %8, %7 ]
%12 = fmul float %11, %11
%13 = fmul float %12, 0x3F677AE940000000
%14 = fadd float %13, 0xBF908DC040000000
%15 = fmul float %12, %14
%16 = fadd float %15, 0x3FA5F83FC0000000
%17 = fmul float %12, %16
%18 = fadd float %17, 0xBFB3462E80000000
%19 = fmul float %12, %18
%20 = fadd float %19, 0x3FBB47B060000000
%21 = fmul float %12, %20
%22 = fadd float %21, 0xBFC22FF8E0000000
%23 = fmul float %12, %22
%24 = fadd float %23, 0x3FC9977CA0000000
%25 = fmul float %12, %24
%26 = fadd float %25, 0xBFD5554D80000000
%27 = fmul float %12, %26
%28 = fadd float %27, 1.000000e+00
%29 = fmul float %11, %28
%30 = fadd float %10, %29
ret float %30
}