#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
long double Beta_Continued_Fraction(long double, long double, long double);
long double powl(long double, long double);
long double xBeta_Function(long double, long double);
long double xBeta_Distribution(double xx, double aa, double bb) {
  long double x = (long double)xx;
  long double a = (long double)aa;
  long double b = (long double)bb;
  if (aa > 1.0 && bb > 1.0) {
    if (x <= (a - 1.0L) / (a + b - 2.0L))
      return Beta_Continued_Fraction(x, a, b);
    else
      return 1.0L - Beta_Continued_Fraction(1.0L - x, b, a);
  }
  if (aa < 1.0 && bb < 1.0)
    return (a * xBeta_Distribution(xx, aa + 1.0, bb) +
            b * xBeta_Distribution(xx, aa, bb + 1.0)) /
           (a + b);
  if (aa == 1.0)
    return 1.0L - powl(1.0L - x, b) / (b * xBeta_Function(a, b));
  if (bb == 1.0)
    return powl(x, a) / (a * xBeta_Function(a, b));
  if (aa < 1.0)
    return xBeta_Distribution(xx, aa + 1.0, bb) +
           powl(x, a) * powl(1.0L - x, b) / (a * xBeta_Function(a, b));
  return xBeta_Distribution(xx, aa, bb + 1.0) -
         powl(x, a) * powl(1.0L - x, b) / (b * xBeta_Function(a, b));
}


x86 assembly (clang, -O0):
<xBeta_Distribution>:
push   %rbp
mov    %rsp,%rbp
sub    $0x170,%rsp
movsd  %xmm0,-0x18(%rbp)
movsd  %xmm1,-0x20(%rbp)
movsd  %xmm2,-0x28(%rbp)
fldl   -0x18(%rbp)
fstpt  -0x40(%rbp)
fldl   -0x20(%rbp)
fstpt  -0x50(%rbp)
fldl   -0x28(%rbp)
fstpt  -0x60(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  0xe87(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1214 <xBeta_Distribution+0xd4>
movsd  -0x28(%rbp),%xmm0
movsd  0xe70(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1214 <xBeta_Distribution+0xd4>
fldt   -0x40(%rbp)
fldt   -0x50(%rbp)
fld1
fchs
fadd   %st(1),%st
fldt   -0x60(%rbp)
faddp  %st,%st(2)
flds   0xe57(%rip)
faddp  %st,%st(2)
fdivp  %st,%st(1)
fucomip %st(1),%st
fstp   %st(0)
jb     11e5 <xBeta_Distribution+0xa5>
jmp    11c4 <xBeta_Distribution+0x84>
fldt   -0x40(%rbp)
fldt   -0x50(%rbp)
fldt   -0x60(%rbp)
mov    %rsp,%rax
fstpt  0x20(%rax)
fstpt  0x10(%rax)
fstpt  (%rax)
call   1030 <Beta_Continued_Fraction@plt>
fstpt  -0x10(%rbp)
jmp    14fe <xBeta_Distribution+0x3be>
fldt   -0x40(%rbp)
fld1
fld    %st(0)
fstpt  -0x6c(%rbp)
fsubp  %st,%st(1)
fldt   -0x60(%rbp)
fldt   -0x50(%rbp)
mov    %rsp,%rax
fstpt  0x20(%rax)
fstpt  0x10(%rax)
fstpt  (%rax)
call   1030 <Beta_Continued_Fraction@plt>
fldt   -0x6c(%rbp)
fsubp  %st,%st(1)
fstpt  -0x10(%rbp)
jmp    14fe <xBeta_Distribution+0x3be>
movsd  0xde4(%rip),%xmm0
ucomisd -0x20(%rbp),%xmm0
jbe    12c0 <xBeta_Distribution+0x180>
movsd  0xdd1(%rip),%xmm0
ucomisd -0x28(%rbp),%xmm0
jbe    12c0 <xBeta_Distribution+0x180>
fldt   -0x50(%rbp)
fstpt  -0x78(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
movsd  0xdae(%rip),%xmm2
movsd  %xmm2,-0x98(%rbp)
ff
addsd  %xmm2,%xmm1
movsd  -0x28(%rbp),%xmm2
call   1060 <xBeta_Distribution@plt>
movsd  -0x98(%rbp),%xmm3
ff
fstpt  -0x84(%rbp)
fldt   -0x60(%rbp)
fstpt  -0x90(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm2
addsd  %xmm3,%xmm2
call   1060 <xBeta_Distribution@plt>
fldt   -0x90(%rbp)
fldt   -0x84(%rbp)
fldt   -0x78(%rbp)
fxch   %st(2)
fmulp  %st,%st(3)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fldt   -0x50(%rbp)
fldt   -0x60(%rbp)
faddp  %st,%st(1)
fdivrp %st,%st(1)
fstpt  -0x10(%rbp)
jmp    14fe <xBeta_Distribution+0x3be>
movsd  -0x20(%rbp),%xmm0
movsd  0xd33(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1341 <xBeta_Distribution+0x201>
jp     1341 <xBeta_Distribution+0x201>
fldt   -0x40(%rbp)
fld1
fld    %st(0)
fstpt  -0xa4(%rbp)
fsubp  %st,%st(1)
fldt   -0x60(%rbp)
mov    %rsp,%rax
fstpt  0x10(%rax)
fstpt  (%rax)
call   1040 <powl@plt>
fstpt  -0xb0(%rbp)
fldt   -0x60(%rbp)
fld    %st(0)
fstpt  -0xbc(%rbp)
fldt   -0x50(%rbp)
mov    %rsp,%rax
fxch   %st(1)
fstpt  0x10(%rax)
fstpt  (%rax)
call   1050 <xBeta_Function@plt>
fldt   -0xbc(%rbp)
fldt   -0xb0(%rbp)
fldt   -0xa4(%rbp)
fxch   %st(2)
fmulp  %st,%st(3)
fdivp  %st,%st(2)
fsubp  %st,%st(1)
fstpt  -0x10(%rbp)
jmp    14fe <xBeta_Distribution+0x3be>
movsd  -0x28(%rbp),%xmm0
movsd  0xcb2(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    13ac <xBeta_Distribution+0x26c>
jp     13ac <xBeta_Distribution+0x26c>
fldt   -0x40(%rbp)
fldt   -0x50(%rbp)
mov    %rsp,%rax
fstpt  0x10(%rax)
fstpt  (%rax)
call   1040 <powl@plt>
fstpt  -0xc8(%rbp)
fldt   -0x50(%rbp)
fld    %st(0)
fstpt  -0xd4(%rbp)
fldt   -0x60(%rbp)
mov    %rsp,%rax
fstpt  0x10(%rax)
fstpt  (%rax)
call   1050 <xBeta_Function@plt>
fldt   -0xd4(%rbp)
fldt   -0xc8(%rbp)
fxch   %st(1)
fmulp  %st,%st(2)
fdivp  %st,%st(1)
fstpt  -0x10(%rbp)
jmp    14fe <xBeta_Distribution+0x3be>
movsd  0xc4c(%rip),%xmm0
ucomisd -0x20(%rbp),%xmm0
jbe    1460 <xBeta_Distribution+0x320>
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
movsd  0xc2f(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x28(%rbp),%xmm2
call   1060 <xBeta_Distribution@plt>
fstpt  -0xe0(%rbp)
fldt   -0x40(%rbp)
fldt   -0x50(%rbp)
mov    %rsp,%rax
fstpt  0x10(%rax)
fstpt  (%rax)
call   1040 <powl@plt>
fstpt  -0x104(%rbp)
fldt   -0x40(%rbp)
fld1
fsubp  %st,%st(1)
fldt   -0x60(%rbp)
mov    %rsp,%rax
fstpt  0x10(%rax)
fstpt  (%rax)
call   1040 <powl@plt>
fldt   -0x104(%rbp)
fmulp  %st,%st(1)
fstpt  -0xec(%rbp)
fldt   -0x50(%rbp)
fld    %st(0)
fstpt  -0xf8(%rbp)
fldt   -0x60(%rbp)
mov    %rsp,%rax
fstpt  0x10(%rax)
fstpt  (%rax)
call   1050 <xBeta_Function@plt>
fldt   -0xf8(%rbp)
fldt   -0xec(%rbp)
fldt   -0xe0(%rbp)
fxch   %st(2)
fmulp  %st,%st(3)
fdivp  %st,%st(2)
faddp  %st,%st(1)
fstpt  -0x10(%rbp)
jmp    14fe <xBeta_Distribution+0x3be>
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm2
movsd  0xb89(%rip),%xmm3
addsd  %xmm3,%xmm2
call   1060 <xBeta_Distribution@plt>
fstpt  -0x110(%rbp)
fldt   -0x40(%rbp)
fldt   -0x50(%rbp)
mov    %rsp,%rax
fstpt  0x10(%rax)
fstpt  (%rax)
call   1040 <powl@plt>
fstpt  -0x134(%rbp)
fldt   -0x40(%rbp)
fld1
fsubp  %st,%st(1)
fldt   -0x60(%rbp)
mov    %rsp,%rax
fstpt  0x10(%rax)
fstpt  (%rax)
call   1040 <powl@plt>
fldt   -0x134(%rbp)
fmulp  %st,%st(1)
fstpt  -0x11c(%rbp)
fldt   -0x60(%rbp)
fld    %st(0)
fstpt  -0x128(%rbp)
fldt   -0x50(%rbp)
mov    %rsp,%rax
fxch   %st(1)
fstpt  0x10(%rax)
fstpt  (%rax)
call   1050 <xBeta_Function@plt>
fldt   -0x128(%rbp)
fldt   -0x11c(%rbp)
fldt   -0x110(%rbp)
fxch   %st(2)
fmulp  %st,%st(3)
fdivp  %st,%st(2)
fsubp  %st,%st(1)
fstpt  -0x10(%rbp)
fldt   -0x10(%rbp)
add    $0x170,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<xBeta_Distribution>:
sub    $0x98,%rsp
movsd  %xmm0,0x90(%rsp)
fldl   0x90(%rsp)
movsd  %xmm1,0x88(%rsp)
fldl   0x88(%rsp)
movsd  %xmm2,0x80(%rsp)
fldl   0x80(%rsp)
ucomisd 0xe81(%rip),%xmm1
jbe    11ca <xBeta_Distribution+0x8a>
ucomisd 0xe77(%rip),%xmm2
jbe    11ca <xBeta_Distribution+0x8a>
fld1
fld    %st(0)
fchs
fadd   %st(3),%st
fld    %st(3)
fadd   %st(3),%st
fadds  0xe6b(%rip)
fdivrp %st,%st(1)
fucomip %st(4),%st
jae    124e <xBeta_Distribution+0x10e>
fsub   %st,%st(3)
fxch   %st(2)
fstpt  0x20(%rsp)
fstpt  0x10(%rsp)
fxch   %st(1)
fstpt  (%rsp)
fstpt  0x40(%rsp)
call   1030 <Beta_Continued_Fraction@plt>
fldt   0x40(%rsp)
jmp    12b2 <xBeta_Distribution+0x172>
movsd  0xe2e(%rip),%xmm3
ucomisd %xmm1,%xmm3
fxch   %st(1)
fstpt  0x4c(%rsp)
fld    %st(0)
fstpt  0x40(%rsp)
jbe    1268 <xBeta_Distribution+0x128>
ucomisd %xmm2,%xmm3
jbe    1268 <xBeta_Distribution+0x128>
fstp   %st(0)
fstp   %st(0)
movsd  %xmm1,0x58(%rsp)
addsd  %xmm3,%xmm1
movsd  %xmm0,0x68(%rsp)
movsd  %xmm2,0x78(%rsp)
call   1060 <xBeta_Distribution@plt>
fstpt  0x34(%rsp)
movsd  0x78(%rsp),%xmm2
addsd  0xde1(%rip),%xmm2
movsd  0x68(%rsp),%xmm0
movsd  0x58(%rsp),%xmm1
call   1060 <xBeta_Distribution@plt>
fldt   0x40(%rsp)
fmul   %st,%st(1)
fldt   0x4c(%rsp)
fldt   0x34(%rsp)
fmul   %st(1),%st
faddp  %st,%st(3)
faddp  %st,%st(1)
fdivrp %st,%st(1)
add    $0x98,%rsp
ret
fstp   %st(0)
fstpt  0x20(%rsp)
fstpt  0x10(%rsp)
fstpt  (%rsp)
call   1030 <Beta_Continued_Fraction@plt>
add    $0x98,%rsp
ret
ucomisd 0xd90(%rip),%xmm1
jne    12bc <xBeta_Distribution+0x17c>
jp     12bc <xBeta_Distribution+0x17c>
fld1
fld    %st(0)
fstpt  0x58(%rsp)
fsubp  %st,%st(2)
fstpt  0x10(%rsp)
fstpt  (%rsp)
call   1040 <powl@plt>
fstpt  0x34(%rsp)
fldt   0x40(%rsp)
fstpt  0x10(%rsp)
fldt   0x4c(%rsp)
fstpt  (%rsp)
call   1050 <xBeta_Function@plt>
fldt   0x40(%rsp)
fmulp  %st,%st(1)
fldt   0x34(%rsp)
fdivp  %st,%st(1)
fldt   0x58(%rsp)
fsubp  %st,%st(1)
add    $0x98,%rsp
ret
fstp   %st(0)
ucomisd 0xd3a(%rip),%xmm2
jne    1306 <xBeta_Distribution+0x1c6>
jp     1306 <xBeta_Distribution+0x1c6>
fldt   0x4c(%rsp)
fstpt  0x10(%rsp)
fstpt  (%rsp)
call   1040 <powl@plt>
fstpt  0x58(%rsp)
fldt   0x40(%rsp)
fstpt  0x10(%rsp)
fldt   0x4c(%rsp)
fstpt  (%rsp)
call   1050 <xBeta_Function@plt>
fldt   0x4c(%rsp)
fmulp  %st,%st(1)
fldt   0x58(%rsp)
fdivp  %st,%st(1)
add    $0x98,%rsp
ret
fstpt  0x34(%rsp)
ucomisd %xmm1,%xmm3
jbe    1389 <xBeta_Distribution+0x249>
addsd  0xce8(%rip),%xmm1
call   1060 <xBeta_Distribution@plt>
fstpt  0x58(%rsp)
fldt   0x4c(%rsp)
fstpt  0x10(%rsp)
fldt   0x34(%rsp)
fstpt  (%rsp)
call   1040 <powl@plt>
fstpt  0x68(%rsp)
fld1
fldt   0x34(%rsp)
fsubrp %st,%st(1)
fldt   0x40(%rsp)
fstpt  0x10(%rsp)
fstpt  (%rsp)
call   1040 <powl@plt>
fldt   0x68(%rsp)
fmulp  %st,%st(1)
fstpt  0x34(%rsp)
fldt   0x40(%rsp)
fstpt  0x10(%rsp)
fldt   0x4c(%rsp)
fstpt  (%rsp)
call   1050 <xBeta_Function@plt>
fldt   0x4c(%rsp)
fmulp  %st,%st(1)
fldt   0x34(%rsp)
fdivp  %st,%st(1)
fldt   0x58(%rsp)
faddp  %st,%st(1)
add    $0x98,%rsp
ret
addsd  0xc6f(%rip),%xmm2
call   1060 <xBeta_Distribution@plt>
fstpt  0x58(%rsp)
fldt   0x4c(%rsp)
fstpt  0x10(%rsp)
fldt   0x34(%rsp)
fstpt  (%rsp)
call   1040 <powl@plt>
fstpt  0x68(%rsp)
fld1
fldt   0x34(%rsp)
fsubrp %st,%st(1)
fldt   0x40(%rsp)
fstpt  0x10(%rsp)
fstpt  (%rsp)
call   1040 <powl@plt>
fldt   0x68(%rsp)
fmulp  %st,%st(1)
jmp    128a <xBeta_Distribution+0x14a>

LLVM IR (-O0):
define x86_fp80 @xBeta_Distribution(double %0, double %1, double %2) {
%4 = alloca x86_fp80
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca x86_fp80
%9 = alloca x86_fp80
%10 = alloca x86_fp80
store double %0, double* %5
store double %1, double* %6
store double %2, double* %7
%11 = load double, double* %5
%12 = fpext double %11 to x86_fp80
store x86_fp80 %12, x86_fp80* %8
%13 = load double, double* %6
%14 = fpext double %13 to x86_fp80
store x86_fp80 %14, x86_fp80* %9
%15 = load double, double* %7
%16 = fpext double %15 to x86_fp80
store x86_fp80 %16, x86_fp80* %10
%17 = load double, double* %6
%18 = fcmp ogt double %17, 1.000000e+00
br i1 %18, label %19, label %44
19: ; preds = %3
%20 = load double, double* %7
%21 = fcmp ogt double %20, 1.000000e+00
br i1 %21, label %22, label %44
22: ; preds = %19
%23 = load x86_fp80, x86_fp80* %8
%24 = load x86_fp80, x86_fp80* %9
%25 = fsub x86_fp80 %24, 0xK3FFF8000000000000000
%26 = load x86_fp80, x86_fp80* %9
%27 = load x86_fp80, x86_fp80* %10
%28 = fadd x86_fp80 %26, %27
%29 = fsub x86_fp80 %28, 0xK40008000000000000000
%30 = fdiv x86_fp80 %25, %29
%31 = fcmp ole x86_fp80 %23, %30
br i1 %31, label %32, label %37
32: ; preds = %22
%33 = load x86_fp80, x86_fp80* %8
%34 = load x86_fp80, x86_fp80* %9
%35 = load x86_fp80, x86_fp80* %10
%36 = call x86_fp80 @Beta_Continued_Fraction(x86_fp80 %33, x86_fp80 %34, x86_fp80 %35)
store x86_fp80 %36, x86_fp80* %4
br label %142
37: ; preds = %22
%38 = load x86_fp80, x86_fp80* %8
%39 = fsub x86_fp80 0xK3FFF8000000000000000, %38
%40 = load x86_fp80, x86_fp80* %10
%41 = load x86_fp80, x86_fp80* %9
%42 = call x86_fp80 @Beta_Continued_Fraction(x86_fp80 %39, x86_fp80 %40, x86_fp80 %41)
%43 = fsub x86_fp80 0xK3FFF8000000000000000, %42
store x86_fp80 %43, x86_fp80* %4
br label %142
44: ; preds = %19, %3
%45 = load double, double* %6
%46 = fcmp olt double %45, 1.000000e+00
br i1 %46, label %47, label %69
47: ; preds = %44
%48 = load double, double* %7
%49 = fcmp olt double %48, 1.000000e+00
br i1 %49, label %50, label %69
50: ; preds = %47
%51 = load x86_fp80, x86_fp80* %9
%52 = load double, double* %5
%53 = load double, double* %6
%54 = fadd double %53, 1.000000e+00
%55 = load double, double* %7
%56 = call x86_fp80 @xBeta_Distribution(double %52, double %54, double %55)
%57 = load x86_fp80, x86_fp80* %10
%58 = load double, double* %5
%59 = load double, double* %6
%60 = load double, double* %7
%61 = fadd double %60, 1.000000e+00
%62 = call x86_fp80 @xBeta_Distribution(double %58, double %59, double %61)
%63 = fmul x86_fp80 %57, %62
%64 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %51, x86_fp80 %56, x86_fp80 %63)
%65 = load x86_fp80, x86_fp80* %9
%66 = load x86_fp80, x86_fp80* %10
%67 = fadd x86_fp80 %65, %66
%68 = fdiv x86_fp80 %64, %67
store x86_fp80 %68, x86_fp80* %4
br label %142
69: ; preds = %47, %44
%70 = load double, double* %6
%71 = fcmp oeq double %70, 1.000000e+00
br i1 %71, label %72, label %84
72: ; preds = %69
%73 = load x86_fp80, x86_fp80* %8
%74 = fsub x86_fp80 0xK3FFF8000000000000000, %73
%75 = load x86_fp80, x86_fp80* %10
%76 = call x86_fp80 @powl(x86_fp80 %74, x86_fp80 %75)
%77 = load x86_fp80, x86_fp80* %10
%78 = load x86_fp80, x86_fp80* %9
%79 = load x86_fp80, x86_fp80* %10
%80 = call x86_fp80 @xBeta_Function(x86_fp80 %78, x86_fp80 %79)
%81 = fmul x86_fp80 %77, %80
%82 = fdiv x86_fp80 %76, %81
%83 = fsub x86_fp80 0xK3FFF8000000000000000, %82
store x86_fp80 %83, x86_fp80* %4
br label %142
84: ; preds = %69
%85 = load double, double* %7
%86 = fcmp oeq double %85, 1.000000e+00
br i1 %86, label %87, label %97
87: ; preds = %84
%88 = load x86_fp80, x86_fp80* %8
%89 = load x86_fp80, x86_fp80* %9
%90 = call x86_fp80 @powl(x86_fp80 %88, x86_fp80 %89)
%91 = load x86_fp80, x86_fp80* %9
%92 = load x86_fp80, x86_fp80* %9
%93 = load x86_fp80, x86_fp80* %10
%94 = call x86_fp80 @xBeta_Function(x86_fp80 %92, x86_fp80 %93)
%95 = fmul x86_fp80 %91, %94
%96 = fdiv x86_fp80 %90, %95
store x86_fp80 %96, x86_fp80* %4
br label %142
97: ; preds = %84
%98 = load double, double* %6
%99 = fcmp olt double %98, 1.000000e+00
br i1 %99, label %100, label %121
100: ; preds = %97
%101 = load double, double* %5
%102 = load double, double* %6
%103 = fadd double %102, 1.000000e+00
%104 = load double, double* %7
%105 = call x86_fp80 @xBeta_Distribution(double %101, double %103, double %104)
%106 = load x86_fp80, x86_fp80* %8
%107 = load x86_fp80, x86_fp80* %9
%108 = call x86_fp80 @powl(x86_fp80 %106, x86_fp80 %107)
%109 = load x86_fp80, x86_fp80* %8
%110 = fsub x86_fp80 0xK3FFF8000000000000000, %109
%111 = load x86_fp80, x86_fp80* %10
%112 = call x86_fp80 @powl(x86_fp80 %110, x86_fp80 %111)
%113 = fmul x86_fp80 %108, %112
%114 = load x86_fp80, x86_fp80* %9
%115 = load x86_fp80, x86_fp80* %9
%116 = load x86_fp80, x86_fp80* %10
%117 = call x86_fp80 @xBeta_Function(x86_fp80 %115, x86_fp80 %116)
%118 = fmul x86_fp80 %114, %117
%119 = fdiv x86_fp80 %113, %118
%120 = fadd x86_fp80 %105, %119
store x86_fp80 %120, x86_fp80* %4
br label %142
121: ; preds = %97
%122 = load double, double* %5
%123 = load double, double* %6
%124 = load double, double* %7
%125 = fadd double %124, 1.000000e+00
%126 = call x86_fp80 @xBeta_Distribution(double %122, double %123, double %125)
%127 = load x86_fp80, x86_fp80* %8
%128 = load x86_fp80, x86_fp80* %9
%129 = call x86_fp80 @powl(x86_fp80 %127, x86_fp80 %128)
%130 = load x86_fp80, x86_fp80* %8
%131 = fsub x86_fp80 0xK3FFF8000000000000000, %130
%132 = load x86_fp80, x86_fp80* %10
%133 = call x86_fp80 @powl(x86_fp80 %131, x86_fp80 %132)
%134 = fmul x86_fp80 %129, %133
%135 = load x86_fp80, x86_fp80* %10
%136 = load x86_fp80, x86_fp80* %9
%137 = load x86_fp80, x86_fp80* %10
%138 = call x86_fp80 @xBeta_Function(x86_fp80 %136, x86_fp80 %137)
%139 = fmul x86_fp80 %135, %138
%140 = fdiv x86_fp80 %134, %139
%141 = fsub x86_fp80 %126, %140
store x86_fp80 %141, x86_fp80* %4
br label %142
142: ; preds = %121, %100, %87, %72, %50, %37, %32
%143 = load x86_fp80, x86_fp80* %4
ret x86_fp80 %143
}

LLVM IR (-O2):
define x86_fp80 @xBeta_Distribution(double %0, double %1, double %2) {
%4 = fpext double %0 to x86_fp80
%5 = fpext double %1 to x86_fp80
%6 = fpext double %2 to x86_fp80
%7 = fcmp ogt double %1, 1.000000e+00
%8 = fcmp ogt double %2, 1.000000e+00
%9 = and i1 %7, %8
br i1 %9, label %10, label %22
10: ; preds = %3
%11 = fadd x86_fp80 %5, 0xKBFFF8000000000000000
%12 = fadd x86_fp80 %5, %6
%13 = fadd x86_fp80 %12, 0xKC0008000000000000000
%14 = fdiv x86_fp80 %11, %13
%15 = fcmp ult x86_fp80 %14, %4
br i1 %15, label %18, label %16
16: ; preds = %10
%17 = tail call x86_fp80 @Beta_Continued_Fraction(x86_fp80 %4, x86_fp80 %5, x86_fp80 %6)
br label %26
18: ; preds = %10
%19 = fsub x86_fp80 0xK3FFF8000000000000000, %4
%20 = tail call x86_fp80 @Beta_Continued_Fraction(x86_fp80 %19, x86_fp80 %6, x86_fp80 %5)
%21 = fsub x86_fp80 0xK3FFF8000000000000000, %20
br label %26
22: ; preds = %3
%23 = fcmp olt double %1, 1.000000e+00
%24 = fcmp olt double %2, 1.000000e+00
%25 = and i1 %23, %24
br i1 %25, label %28, label %37
26: ; preds = %16, %18, %39, %48, %65, %54, %28
%27 = phi x86_fp80 [ %36, %28 ], [ %64, %54 ], [ %75, %65 ], [ %17, %16 ], [ %21, %18 ], [ %45, %39 ], [ %52, %48 ]
ret x86_fp80 %27
28: ; preds = %22
%29 = fadd double %1, 1.000000e+00
%30 = tail call x86_fp80 @xBeta_Distribution(double %0, double %29, double %2)
%31 = fadd double %2, 1.000000e+00
%32 = tail call x86_fp80 @xBeta_Distribution(double %0, double %1, double %31)
%33 = fmul x86_fp80 %32, %6
%34 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %5, x86_fp80 %30, x86_fp80 %33)
%35 = fadd x86_fp80 %5, %6
%36 = fdiv x86_fp80 %34, %35
br label %26
37: ; preds = %22
%38 = fcmp oeq double %1, 1.000000e+00
br i1 %38, label %39, label %46
39: ; preds = %37
%40 = fsub x86_fp80 0xK3FFF8000000000000000, %4
%41 = tail call x86_fp80 @powl(x86_fp80 %40, x86_fp80 %6)
%42 = tail call x86_fp80 @xBeta_Function(x86_fp80 %5, x86_fp80 %6)
%43 = fmul x86_fp80 %42, %6
%44 = fdiv x86_fp80 %41, %43
%45 = fsub x86_fp80 0xK3FFF8000000000000000, %44
br label %26
46: ; preds = %37
%47 = fcmp oeq double %2, 1.000000e+00
br i1 %47, label %48, label %53
48: ; preds = %46
%49 = tail call x86_fp80 @powl(x86_fp80 %4, x86_fp80 %5)
%50 = tail call x86_fp80 @xBeta_Function(x86_fp80 %5, x86_fp80 %6)
%51 = fmul x86_fp80 %50, %5
%52 = fdiv x86_fp80 %49, %51
br label %26
53: ; preds = %46
br i1 %23, label %54, label %65
54: ; preds = %53
%55 = fadd double %1, 1.000000e+00
%56 = tail call x86_fp80 @xBeta_Distribution(double %0, double %55, double %2)
%57 = tail call x86_fp80 @powl(x86_fp80 %4, x86_fp80 %5)
%58 = fsub x86_fp80 0xK3FFF8000000000000000, %4
%59 = tail call x86_fp80 @powl(x86_fp80 %58, x86_fp80 %6)
%60 = fmul x86_fp80 %57, %59
%61 = tail call x86_fp80 @xBeta_Function(x86_fp80 %5, x86_fp80 %6)
%62 = fmul x86_fp80 %61, %5
%63 = fdiv x86_fp80 %60, %62
%64 = fadd x86_fp80 %56, %63
br label %26
65: ; preds = %53
%66 = fadd double %2, 1.000000e+00
%67 = tail call x86_fp80 @xBeta_Distribution(double %0, double %1, double %66)
%68 = tail call x86_fp80 @powl(x86_fp80 %4, x86_fp80 %5)
%69 = fsub x86_fp80 0xK3FFF8000000000000000, %4
%70 = tail call x86_fp80 @powl(x86_fp80 %69, x86_fp80 %6)
%71 = fmul x86_fp80 %68, %70
%72 = tail call x86_fp80 @xBeta_Function(x86_fp80 %5, x86_fp80 %6)
%73 = fmul x86_fp80 %72, %6
%74 = fdiv x86_fp80 %71, %73
%75 = fsub x86_fp80 %67, %74
br label %26
}