long double tand(long double x) {
  long int n;
  long double xn;
  long double f, g;
  long double x_int, x_fract;
  long double result;
  long double xnum, xden;
  if ((x > (421657424.0L)) || (x < -(421657424.0L))) {
    return 0.0L;
  }
  x_int = ((long double)(((long)(x))));
  x_fract = ((long double)(x) - (long double)(x_int));
  g = 0.5L;
  if (x <= 0.0L) {
    g = -g;
  }
  n = ((long)((
      (long double)(((long double)(x) *
                     (long double)((0.63661977236758134307553505349006L)))) +
      (long double)(g))));
  xn = ((long double)(n));
  f = ((long double)(x_int) -
       (long double)(((long double)(xn) * (long double)((1.57080078125L)))));
  f = ((long double)(f) + (long double)(x_fract));
  f = ((long double)(f) -
       (long double)(((long double)(xn) *
                      (long double)((-4.45445516561449039727449417114e-6L)))));
  f = ((long double)(f) -
       (long double)(((long double)(xn) *
                      (long double)((6.2233721718966133922584676705e-14L)))));
  if (f < 0.0L) {
    g = -f;
  } else {
    g = f;
  }
  if (g < (+1.490116119385e-8L)) {
    if (n & 0x0001) {
      result = ((long double)(-1.0L) / (long double)(f));
    } else {
      result = f;
    }
    return result;
  }
  g = ((long double)(f) * (long double)(f));
  xnum = ((long double)(g) * (long double)((-1.7861707342254424711e-5L)));
  xnum = ((long double)(xnum) + (long double)((+3.4248878235890589960e-3L)));
  xnum = ((long double)(xnum) * (long double)(g));
  xnum = ((long double)(xnum) + (long double)((-1.3338350006421960681e-1L)));
  xnum = ((long double)(xnum) * (long double)(g));
  xnum = ((long double)(xnum) * (long double)(f));
  xnum = ((long double)(xnum) + (long double)(f));
  xden = ((long double)(g) * (long double)((+4.9819433993786512270e-7L)));
  xden = ((long double)(xden) + (long double)((-3.1181531907010027307e-4L)));
  xden = ((long double)(xden) * (long double)(g));
  xden = ((long double)(xden) + (long double)((+2.5663832289440112864e-2L)));
  xden = ((long double)(xden) * (long double)(g));
  xden = ((long double)(xden) + (long double)((-4.6671683339755294240e-1L)));
  xden = ((long double)(xden) * (long double)(g));
  xden = ((long double)(xden) + (long double)((+1.0000000000000000000L)));
  if (n & 0x0001) {
    result = xnum;
    xnum = -xden;
    xden = result;
  }
  result = ((long double)(xnum) / (long double)(xden));
  return result;
}


x86 assembly (clang, -O0):
<tand>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
fldt   0x10(%rbp)
fstpt  -0x20(%rbp)
fldt   -0x20(%rbp)
fldl   0xee9(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
ja     1140 <tand+0x40>
jmp    1128 <tand+0x28>
fldt   -0x20(%rbp)
fldl   0xed7(%rip)
fucomip %st(1),%st
fstp   %st(0)
jbe    114a <tand+0x4a>
jmp    1140 <tand+0x40>
fldz
fstpt  -0x10(%rbp)
jmp    1443 <tand+0x343>
fldt   -0x20(%rbp)
fnstcw -0xd2(%rbp)
movzwl -0xd2(%rbp),%eax
or     $0xc00,%eax
mov    %ax,-0xd4(%rbp)
fldcw  -0xd4(%rbp)
fistpll -0xc0(%rbp)
fldcw  -0xd2(%rbp)
mov    -0xc0(%rbp),%rax
mov    %rax,-0xb8(%rbp)
fildll -0xb8(%rbp)
fstpt  -0x70(%rbp)
fldt   -0x20(%rbp)
fldt   -0x70(%rbp)
fsubrp %st,%st(1)
fstpt  -0x80(%rbp)
flds   0xe78(%rip)
fstpt  -0x60(%rbp)
fldt   -0x20(%rbp)
fldz
fucomip %st(1),%st
fstp   %st(0)
jb     11bf <tand+0xbf>
jmp    11b7 <tand+0xb7>
fldt   -0x60(%rbp)
fchs
fstpt  -0x60(%rbp)
fldt   -0x20(%rbp)
fldt   -0x60(%rbp)
fldt   0xe55(%rip)
fmulp  %st,%st(2)
faddp  %st,%st(1)
fnstcw -0xd6(%rbp)
movzwl -0xd6(%rbp),%eax
or     $0xc00,%eax
mov    %ax,-0xd8(%rbp)
fldcw  -0xd8(%rbp)
fistpll -0xd0(%rbp)
fldcw  -0xd6(%rbp)
mov    -0xd0(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0xc8(%rbp)
fildll -0xc8(%rbp)
fstpt  -0x40(%rbp)
fldt   -0x70(%rbp)
fldt   -0x40(%rbp)
flds   0xdf7(%rip)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpt  -0x50(%rbp)
fldt   -0x50(%rbp)
fldt   -0x80(%rbp)
faddp  %st,%st(1)
fstpt  -0x50(%rbp)
fldt   -0x50(%rbp)
fldt   -0x40(%rbp)
fldl   0xdcd(%rip)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpt  -0x50(%rbp)
fldt   -0x50(%rbp)
fldt   -0x40(%rbp)
fldt   0xdda(%rip)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpt  -0x50(%rbp)
fldt   -0x50(%rbp)
fldz
fucomip %st(1),%st
fstp   %st(0)
jbe    127e <tand+0x17e>
jmp    1271 <tand+0x171>
fldt   -0x50(%rbp)
fchs
fstpt  -0x60(%rbp)
jmp    1284 <tand+0x184>
fldt   -0x50(%rbp)
fstpt  -0x60(%rbp)
fldt   -0x60(%rbp)
fldt   0xdb3(%rip)
fucomip %st(1),%st
fstp   %st(0)
jbe    12d9 <tand+0x1d9>
jmp    129c <tand+0x19c>
mov    -0x28(%rbp),%rax
and    $0x1,%rax
cmp    $0x0,%rax
je     12c2 <tand+0x1c2>
fldt   -0x50(%rbp)
fld1
fchs
fdivp  %st,%st(1)
fstpt  -0x90(%rbp)
jmp    12cb <tand+0x1cb>
fldt   -0x50(%rbp)
fstpt  -0x90(%rbp)
fldt   -0x90(%rbp)
fstpt  -0x10(%rbp)
jmp    1443 <tand+0x343>
fldt   -0x50(%rbp)
fmul   %st,%st(0)
fstpt  -0x60(%rbp)
fldt   -0x60(%rbp)
fldt   0xd66(%rip)
fmulp  %st,%st(1)
fstpt  -0xa0(%rbp)
fldt   -0xa0(%rbp)
fldt   0xd62(%rip)
faddp  %st,%st(1)
fstpt  -0xa0(%rbp)
fldt   -0xa0(%rbp)
fldt   -0x60(%rbp)
fmulp  %st,%st(1)
fstpt  -0xa0(%rbp)
fldt   -0xa0(%rbp)
fldt   0xd4d(%rip)
faddp  %st,%st(1)
fstpt  -0xa0(%rbp)
fldt   -0xa0(%rbp)
fldt   -0x60(%rbp)
fmulp  %st,%st(1)
fstpt  -0xa0(%rbp)
fldt   -0xa0(%rbp)
fldt   -0x50(%rbp)
fmulp  %st,%st(1)
fstpt  -0xa0(%rbp)
fldt   -0xa0(%rbp)
fldt   -0x50(%rbp)
faddp  %st,%st(1)
fstpt  -0xa0(%rbp)
fldt   -0x60(%rbp)
fldt   0xd19(%rip)
fmulp  %st,%st(1)
fstpt  -0xb0(%rbp)
fldt   -0xb0(%rbp)
fldt   0xd15(%rip)
faddp  %st,%st(1)
fstpt  -0xb0(%rbp)
fldt   -0xb0(%rbp)
fldt   -0x60(%rbp)
fmulp  %st,%st(1)
fstpt  -0xb0(%rbp)
fldt   -0xb0(%rbp)
fldt   0xd00(%rip)
faddp  %st,%st(1)
fstpt  -0xb0(%rbp)
fldt   -0xb0(%rbp)
fldt   -0x60(%rbp)
fmulp  %st,%st(1)
fstpt  -0xb0(%rbp)
fldt   -0xb0(%rbp)
fldt   0xceb(%rip)
faddp  %st,%st(1)
fstpt  -0xb0(%rbp)
fldt   -0xb0(%rbp)
fldt   -0x60(%rbp)
fmulp  %st,%st(1)
fstpt  -0xb0(%rbp)
fldt   -0xb0(%rbp)
fld1
faddp  %st,%st(1)
fstpt  -0xb0(%rbp)
mov    -0x28(%rbp),%rax
and    $0x1,%rax
cmp    $0x0,%rax
je     1426 <tand+0x326>
fldt   -0xa0(%rbp)
fstpt  -0x90(%rbp)
fldt   -0xb0(%rbp)
fchs
fstpt  -0xa0(%rbp)
fldt   -0x90(%rbp)
fstpt  -0xb0(%rbp)
fldt   -0xa0(%rbp)
fldt   -0xb0(%rbp)
fdivrp %st,%st(1)
fstpt  -0x90(%rbp)
fldt   -0x90(%rbp)
fstpt  -0x10(%rbp)
fldt   -0x10(%rbp)
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<tand>:
fldt   0x8(%rsp)
fldl   0xef6(%rip)
fxch   %st(1)
fucomi %st(1),%st
fstp   %st(1)
fldz
ja     11f3 <tand+0xf3>
fldl   0xeea(%rip)
fucomip %st(2),%st
fxch   %st(1)
ja     1257 <tand+0x157>
fstp   %st(1)
fnstcw -0x26(%rsp)
movzwl -0x26(%rsp),%eax
or     $0xc00,%eax
mov    %ax,-0x22(%rsp)
fldcw  -0x22(%rsp)
fld    %st(0)
fistpll -0x20(%rsp)
fldcw  -0x26(%rsp)
fldz
xor    %eax,%eax
fucomi %st(1),%st
setb   %al
mov    -0x20(%rsp),%rcx
mov    %rcx,-0x18(%rsp)
fildll -0x18(%rsp)
fld    %st(2)
fsub   %st(1),%st
shl    $0x4,%rax
lea    0xeaf(%rip),%rcx
fldt   (%rax,%rcx,1)
fldt   0xec6(%rip)
fmulp  %st,%st(5)
faddp  %st,%st(4)
fnstcw -0x28(%rsp)
movzwl -0x28(%rsp),%eax
or     $0xc00,%eax
mov    %ax,-0x24(%rsp)
fldcw  -0x24(%rsp)
fxch   %st(3)
fistpll -0x10(%rsp)
fldcw  -0x28(%rsp)
mov    -0x10(%rsp),%rax
mov    %rax,-0x8(%rsp)
fildll -0x8(%rsp)
fld    %st(0)
fmuls  0xf2b(%rip)
faddp  %st,%st(2)
fxch   %st(3)
faddp  %st,%st(1)
fld    %st(2)
fmull  0xe4d(%rip)
faddp  %st,%st(1)
fldt   0xe85(%rip)
fmulp  %st,%st(3)
faddp  %st,%st(2)
fucomip %st(1),%st
fld    %st(0)
fchs
fld    %st(1)
fcmovnbe %st(1),%st
fstp   %st(1)
fldt   0xe7f(%rip)
fucomip %st(1),%st
fstp   %st(0)
jbe    11f7 <tand+0xf7>
test   $0x1,%al
je     1255 <tand+0x155>
fld1
fchs
fdivp  %st,%st(1)
jmp    1255 <tand+0x155>
fstp   %st(1)
jmp    1255 <tand+0x155>
fld    %st(0)
fmul   %st(1),%st
fldt   0xe6f(%rip)
fmul   %st(1),%st
fldt   0xe77(%rip)
faddp  %st,%st(1)
fmul   %st(1),%st
fldt   0xe7d(%rip)
faddp  %st,%st(1)
fmul   %st(1),%st
fmul   %st(2),%st
faddp  %st,%st(2)
fldt   0xe7f(%rip)
fmul   %st(1),%st
fldt   0xe87(%rip)
faddp  %st,%st(1)
fmul   %st(1),%st
fldt   0xe8d(%rip)
faddp  %st,%st(1)
fmul   %st(1),%st
fldt   0xe93(%rip)
faddp  %st,%st(1)
fmulp  %st,%st(1)
fld1
faddp  %st,%st(1)
test   $0x1,%al
fld    %st(0)
fchs
fcmove %st(2),%st
fxch   %st(2)
fcmove %st(1),%st
fstp   %st(1)
fdivrp %st,%st(1)
fldz
fstp   %st(0)
ret

LLVM IR (-O0):
define x86_fp80 @tand(x86_fp80 %0) {
%2 = alloca x86_fp80
%3 = alloca x86_fp80
%4 = alloca i64
%5 = alloca x86_fp80
%6 = alloca x86_fp80
%7 = alloca x86_fp80
%8 = alloca x86_fp80
%9 = alloca x86_fp80
%10 = alloca x86_fp80
%11 = alloca x86_fp80
%12 = alloca x86_fp80
store x86_fp80 %0, x86_fp80* %3
%13 = load x86_fp80, x86_fp80* %3
%14 = fcmp ogt x86_fp80 %13, 0xK401BC90FDA8000000000
br i1 %14, label %18, label %15
15: ; preds = %1
%16 = load x86_fp80, x86_fp80* %3
%17 = fcmp olt x86_fp80 %16, 0xKC01BC90FDA8000000000
br i1 %17, label %18, label %19
18: ; preds = %15, %1
store x86_fp80 0xK00000000000000000000, x86_fp80* %2
br label %128
19: ; preds = %15
%20 = load x86_fp80, x86_fp80* %3
%21 = fptosi x86_fp80 %20 to i64
%22 = sitofp i64 %21 to x86_fp80
store x86_fp80 %22, x86_fp80* %8
%23 = load x86_fp80, x86_fp80* %3
%24 = load x86_fp80, x86_fp80* %8
%25 = fsub x86_fp80 %23, %24
store x86_fp80 %25, x86_fp80* %9
store x86_fp80 0xK3FFE8000000000000000, x86_fp80* %7
%26 = load x86_fp80, x86_fp80* %3
%27 = fcmp ole x86_fp80 %26, 0xK00000000000000000000
br i1 %27, label %28, label %31
28: ; preds = %19
%29 = load x86_fp80, x86_fp80* %7
%30 = fneg x86_fp80 %29
store x86_fp80 %30, x86_fp80* %7
br label %31
31: ; preds = %28, %19
%32 = load x86_fp80, x86_fp80* %3
%33 = load x86_fp80, x86_fp80* %7
%34 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %32, x86_fp80 0xK3FFEA2F9836E4E44152A, x86_fp80 %33)
%35 = fptosi x86_fp80 %34 to i64
store i64 %35, i64* %4
%36 = load i64, i64* %4
%37 = sitofp i64 %36 to x86_fp80
store x86_fp80 %37, x86_fp80* %5
%38 = load x86_fp80, x86_fp80* %8
%39 = load x86_fp80, x86_fp80* %5
%40 = fneg x86_fp80 %39
%41 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %40, x86_fp80 0xK3FFFC910000000000000, x86_fp80 %38)
store x86_fp80 %41, x86_fp80* %6
%42 = load x86_fp80, x86_fp80* %6
%43 = load x86_fp80, x86_fp80* %9
%44 = fadd x86_fp80 %42, %43
store x86_fp80 %44, x86_fp80* %6
%45 = load x86_fp80, x86_fp80* %6
%46 = load x86_fp80, x86_fp80* %5
%47 = fneg x86_fp80 %46
%48 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %47, x86_fp80 0xKBFED95777A8000000000, x86_fp80 %45)
store x86_fp80 %48, x86_fp80* %6
%49 = load x86_fp80, x86_fp80* %6
%50 = load x86_fp80, x86_fp80* %5
%51 = fneg x86_fp80 %50
%52 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %51, x86_fp80 0xK3FD38C234C4C6628B80E, x86_fp80 %49)
store x86_fp80 %52, x86_fp80* %6
%53 = load x86_fp80, x86_fp80* %6
%54 = fcmp olt x86_fp80 %53, 0xK00000000000000000000
br i1 %54, label %55, label %58
55: ; preds = %31
%56 = load x86_fp80, x86_fp80* %6
%57 = fneg x86_fp80 %56
store x86_fp80 %57, x86_fp80* %7
br label %60
58: ; preds = %31
%59 = load x86_fp80, x86_fp80* %6
store x86_fp80 %59, x86_fp80* %7
br label %60
60: ; preds = %58, %55
%61 = load x86_fp80, x86_fp80* %7
%62 = fcmp olt x86_fp80 %61, 0xK3FE580000000001622D7
br i1 %62, label %63, label %74
63: ; preds = %60
%64 = load i64, i64* %4
%65 = and i64 %64, 1
%66 = icmp ne i64 %65, 0
br i1 %66, label %67, label %70
67: ; preds = %63
%68 = load x86_fp80, x86_fp80* %6
%69 = fdiv x86_fp80 0xKBFFF8000000000000000, %68
store x86_fp80 %69, x86_fp80* %10
br label %72
70: ; preds = %63
%71 = load x86_fp80, x86_fp80* %6
store x86_fp80 %71, x86_fp80* %10
br label %72
72: ; preds = %70, %67
%73 = load x86_fp80, x86_fp80* %10
store x86_fp80 %73, x86_fp80* %2
br label %128
74: ; preds = %60
%75 = load x86_fp80, x86_fp80* %6
%76 = load x86_fp80, x86_fp80* %6
%77 = fmul x86_fp80 %75, %76
store x86_fp80 %77, x86_fp80* %7
%78 = load x86_fp80, x86_fp80* %7
%79 = fmul x86_fp80 %78, 0xKBFEF95D5B975163918EF
store x86_fp80 %79, x86_fp80* %11
%80 = load x86_fp80, x86_fp80* %11
%81 = fadd x86_fp80 %80, 0xK3FF6E0741531DD56F650
store x86_fp80 %81, x86_fp80* %11
%82 = load x86_fp80, x86_fp80* %11
%83 = load x86_fp80, x86_fp80* %7
%84 = fmul x86_fp80 %82, %83
store x86_fp80 %84, x86_fp80* %11
%85 = load x86_fp80, x86_fp80* %11
%86 = fadd x86_fp80 %85, 0xKBFFC8895AF2A6847FCD5
store x86_fp80 %86, x86_fp80* %11
%87 = load x86_fp80, x86_fp80* %11
%88 = load x86_fp80, x86_fp80* %7
%89 = fmul x86_fp80 %87, %88
store x86_fp80 %89, x86_fp80* %11
%90 = load x86_fp80, x86_fp80* %11
%91 = load x86_fp80, x86_fp80* %6
%92 = fmul x86_fp80 %90, %91
store x86_fp80 %92, x86_fp80* %11
%93 = load x86_fp80, x86_fp80* %11
%94 = load x86_fp80, x86_fp80* %6
%95 = fadd x86_fp80 %93, %94
store x86_fp80 %95, x86_fp80* %11
%96 = load x86_fp80, x86_fp80* %7
%97 = fmul x86_fp80 %96, 0xK3FEA85BBA783B3C748A9
store x86_fp80 %97, x86_fp80* %12
%98 = load x86_fp80, x86_fp80* %12
%99 = fadd x86_fp80 %98, 0xKBFF3A37B24C84A42092E
store x86_fp80 %99, x86_fp80* %12
%100 = load x86_fp80, x86_fp80* %12
%101 = load x86_fp80, x86_fp80* %7
%102 = fmul x86_fp80 %100, %101
store x86_fp80 %102, x86_fp80* %12
%103 = load x86_fp80, x86_fp80* %12
%104 = fadd x86_fp80 %103, 0xK3FF9D23CF50BF10ACA84
store x86_fp80 %104, x86_fp80* %12
%105 = load x86_fp80, x86_fp80* %12
%106 = load x86_fp80, x86_fp80* %7
%107 = fmul x86_fp80 %105, %106
store x86_fp80 %107, x86_fp80* %12
%108 = load x86_fp80, x86_fp80* %12
%109 = fadd x86_fp80 %108, 0xKBFFDEEF5823FDECEA969
store x86_fp80 %109, x86_fp80* %12
%110 = load x86_fp80, x86_fp80* %12
%111 = load x86_fp80, x86_fp80* %7
%112 = fmul x86_fp80 %110, %111
store x86_fp80 %112, x86_fp80* %12
%113 = load x86_fp80, x86_fp80* %12
%114 = fadd x86_fp80 %113, 0xK3FFF8000000000000000
store x86_fp80 %114, x86_fp80* %12
%115 = load i64, i64* %4
%116 = and i64 %115, 1
%117 = icmp ne i64 %116, 0
br i1 %117, label %118, label %123
118: ; preds = %74
%119 = load x86_fp80, x86_fp80* %11
store x86_fp80 %119, x86_fp80* %10
%120 = load x86_fp80, x86_fp80* %12
%121 = fneg x86_fp80 %120
store x86_fp80 %121, x86_fp80* %11
%122 = load x86_fp80, x86_fp80* %10
store x86_fp80 %122, x86_fp80* %12
br label %123
123: ; preds = %118, %74
%124 = load x86_fp80, x86_fp80* %11
%125 = load x86_fp80, x86_fp80* %12
%126 = fdiv x86_fp80 %124, %125
store x86_fp80 %126, x86_fp80* %10
%127 = load x86_fp80, x86_fp80* %10
store x86_fp80 %127, x86_fp80* %2
br label %128
128: ; preds = %123, %72, %18
%129 = load x86_fp80, x86_fp80* %2
ret x86_fp80 %129
}

LLVM IR (-O2):
define x86_fp80 @tand(x86_fp80 %0) {
%2 = fcmp ogt x86_fp80 %0, 0xK401BC90FDA8000000000
%3 = fcmp olt x86_fp80 %0, 0xKC01BC90FDA8000000000
%4 = or i1 %2, %3
br i1 %4, label %51, label %5
5: ; preds = %1
%6 = fptosi x86_fp80 %0 to i64
%7 = sitofp i64 %6 to x86_fp80
%8 = fsub x86_fp80 %0, %7
%9 = fcmp ugt x86_fp80 %0, 0xK00000000000000000000
%10 = select i1 %9, x86_fp80 0xK3FFE8000000000000000, x86_fp80 0xKBFFE8000000000000000
%11 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %0, x86_fp80 0xK3FFEA2F9836E4E44152A, x86_fp80 %10)
%12 = fptosi x86_fp80 %11 to i64
%13 = sitofp i64 %12 to x86_fp80
%14 = fneg x86_fp80 %13
%15 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %14, x86_fp80 0xK3FFFC910000000000000, x86_fp80 %7)
%16 = fadd x86_fp80 %8, %15
%17 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %14, x86_fp80 0xKBFED95777A8000000000, x86_fp80 %16)
%18 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %14, x86_fp80 0xK3FD38C234C4C6628B80E, x86_fp80 %17)
%19 = fcmp olt x86_fp80 %18, 0xK00000000000000000000
%20 = fneg x86_fp80 %18
%21 = select i1 %19, x86_fp80 %20, x86_fp80 %18
%22 = fcmp olt x86_fp80 %21, 0xK3FE580000000001622D7
br i1 %22, label %23, label %28
23: ; preds = %5
%24 = and i64 %12, 1
%25 = icmp eq i64 %24, 0
%26 = fdiv x86_fp80 0xKBFFF8000000000000000, %18
%27 = select i1 %25, x86_fp80 %18, x86_fp80 %26
br label %51
28: ; preds = %5
%29 = fmul x86_fp80 %18, %18
%30 = fmul x86_fp80 %29, 0xK3FEF95D5B975163918EF
%31 = fsub x86_fp80 0xK3FF6E0741531DD56F650, %30
%32 = fmul x86_fp80 %29, %31
%33 = fadd x86_fp80 %32, 0xKBFFC8895AF2A6847FCD5
%34 = fmul x86_fp80 %29, %33
%35 = fmul x86_fp80 %18, %34
%36 = fadd x86_fp80 %18, %35
%37 = fmul x86_fp80 %29, 0xK3FEA85BBA783B3C748A9
%38 = fadd x86_fp80 %37, 0xKBFF3A37B24C84A42092E
%39 = fmul x86_fp80 %29, %38
%40 = fadd x86_fp80 %39, 0xK3FF9D23CF50BF10ACA84
%41 = fmul x86_fp80 %29, %40
%42 = fadd x86_fp80 %41, 0xKBFFDEEF5823FDECEA969
%43 = fmul x86_fp80 %29, %42
%44 = fadd x86_fp80 %43, 0xK3FFF8000000000000000
%45 = and i64 %12, 1
%46 = icmp eq i64 %45, 0
%47 = fneg x86_fp80 %44
%48 = select i1 %46, x86_fp80 %36, x86_fp80 %47
%49 = select i1 %46, x86_fp80 %44, x86_fp80 %36
%50 = fdiv x86_fp80 %48, %49
br label %51
51: ; preds = %1, %28, %23
%52 = phi x86_fp80 [ %27, %23 ], [ %50, %28 ], [ 0xK00000000000000000000, %1 ]
ret x86_fp80 %52
}