#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 */
double alnrel(double *);
double log(double);
double pow(double, double);
double algdiv(double *a, double *b) {
  static double c0 = .833333333333333e-01;
  static double c1 = -.277777777760991e-02;
  static double c2 = .793650666825390e-03;
  static double c3 = -.595202931351870e-03;
  static double c4 = .837308034031215e-03;
  static double c5 = -.165322962780713e-02;
  static double algdiv, c, d, h, s11, s3, s5, s7, s9, t, u, v, w, x, x2, T1;
  if (*a <= *b)
    goto S10;
  h = *b / *a;
  c = 1.0e0 / (1.0e0 + h);
  x = h / (1.0e0 + h);
  d = *a + (*b - 0.5e0);
  goto S20;
S10:
  h = *a / *b;
  c = h / (1.0e0 + h);
  x = 1.0e0 / (1.0e0 + h);
  d = *b + (*a - 0.5e0);
S20:
  x2 = x * x;
  s3 = 1.0e0 + (x + x2);
  s5 = 1.0e0 + (x + x2 * s3);
  s7 = 1.0e0 + (x + x2 * s5);
  s9 = 1.0e0 + (x + x2 * s7);
  s11 = 1.0e0 + (x + x2 * s9);
  t = pow(1.0e0 / *b, 2.0);
  w = ((((c5 * s11 * t + c4 * s9) * t + c3 * s7) * t + c2 * s5) * t + c1 * s3) *
          t +
      c0;
  w *= (c / *b);
  T1 = *a / *b;
  u = d * alnrel(&T1);
  v = *a * (log(*b) - 1.0e0);
  if (u <= v)
    goto S30;
  algdiv = w - v - u;
  return algdiv;
S30:
  algdiv = w - u - v;
  return algdiv;
}


x86 assembly (clang, -O0):
<algdiv>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jb     115f <algdiv+0x2f>
jmp    11ec <algdiv+0xbc>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
divsd  (%rax),%xmm0
movsd  %xmm0,0x2f11(%rip)
movsd  0xe89(%rip),%xmm1
addsd  0x2f01(%rip),%xmm1
movsd  0xe79(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,0x2edd(%rip)
movsd  0x2ee5(%rip),%xmm0
movsd  0xe5d(%rip),%xmm1
addsd  0x2ed5(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,0x2f19(%rip)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm1
movsd  0xe29(%rip),%xmm2
subsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2e99(%rip)
jmp    1274 <algdiv+0x144>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
divsd  (%rax),%xmm0
movsd  %xmm0,0x2e84(%rip)
movsd  0x2e7c(%rip),%xmm0
movsd  0xdf4(%rip),%xmm1
addsd  0x2e6c(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,0x2e50(%rip)
movsd  0xdd8(%rip),%xmm1
addsd  0x2e50(%rip),%xmm1
movsd  0xdc8(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,0x2e8c(%rip)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
movsd  0xd9c(%rip),%xmm2
subsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2e0c(%rip)
movsd  0x2e5c(%rip),%xmm0
mulsd  0x2e54(%rip),%xmm0
movsd  %xmm0,0x2e54(%rip)
movsd  0x2e44(%rip),%xmm1
addsd  0x2e44(%rip),%xmm1
movsd  0xd64(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2de8(%rip)
movsd  0x2e20(%rip),%xmm0
movsd  0x2e20(%rip),%xmm1
movsd  0x2dd0(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xd30(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2dbc(%rip)
movsd  0x2dec(%rip),%xmm0
movsd  0x2dec(%rip),%xmm1
movsd  0x2da4(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xcfc(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2d90(%rip)
movsd  0x2db8(%rip),%xmm0
movsd  0x2db8(%rip),%xmm1
movsd  0x2d78(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xcc8(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2d64(%rip)
movsd  0x2d84(%rip),%xmm0
movsd  0x2d84(%rip),%xmm1
movsd  0x2d4c(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xc94(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2d10(%rip)
mov    -0x18(%rbp),%rax
movsd  0xc7c(%rip),%xmm0
divsd  (%rax),%xmm0
movsd  0xc78(%rip),%xmm1
call   1050 <pow@plt>
movsd  %xmm0,0x2d13(%rip)
movsd  0x2cb3(%rip),%xmm0
mulsd  0x2cdb(%rip),%xmm0
movsd  0x2cfb(%rip),%xmm2
movsd  0x2c93(%rip),%xmm1
mulsd  0x2ce3(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2cdb(%rip),%xmm2
movsd  0x2c6b(%rip),%xmm1
mulsd  0x2cbb(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2cbb(%rip),%xmm2
movsd  0x2c43(%rip),%xmm1
mulsd  0x2c93(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2c9b(%rip),%xmm2
movsd  0x2c1b(%rip),%xmm1
mulsd  0x2c6b(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2c7b(%rip),%xmm2
movsd  0x2bf3(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2c7b(%rip)
movsd  0x2c1b(%rip),%xmm0
mov    -0x18(%rbp),%rax
divsd  (%rax),%xmm0
mulsd  0x2c63(%rip),%xmm0
movsd  %xmm0,0x2c5b(%rip)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
divsd  (%rax),%xmm0
movsd  %xmm0,0x2c5b(%rip)
movsd  0x2beb(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
lea    0x2c47(%rip),%rdi
call   1030 <alnrel@plt>
movaps %xmm0,%xmm1
movsd  -0x28(%rbp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x2c06(%rip)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
call   1040 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  0xb24(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x2bd4(%rip)
movsd  0x2bc4(%rip),%xmm1
movsd  0x2bc4(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     1513 <algdiv+0x3e3>
jmp    1545 <algdiv+0x415>
movsd  0x2bb5(%rip),%xmm0
subsd  0x2ba5(%rip),%xmm0
subsd  0x2b95(%rip),%xmm0
movsd  %xmm0,0x2b3d(%rip)
movsd  0x2b35(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1572 <algdiv+0x442>
movsd  0x2b83(%rip),%xmm0
subsd  0x2b6b(%rip),%xmm0
subsd  0x2b6b(%rip),%xmm0
movsd  %xmm0,0x2b0b(%rip)
movsd  0x2b03(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<algdiv>:
push   %r14
push   %rbx
push   %rax
mov    %rsi,%r14
mov    %rdi,%rbx
movsd  (%rdi),%xmm9
movsd  (%rsi),%xmm8
ucomisd %xmm9,%xmm8
jae    117b <algdiv+0x5b>
movapd %xmm8,%xmm3
divsd  %xmm9,%xmm3
movsd  0xeb3(%rip),%xmm2
movapd %xmm3,%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm2
divsd  %xmm1,%xmm3
movsd  0xea3(%rip),%xmm0
addsd  %xmm8,%xmm0
addsd  %xmm9,%xmm0
movsd  %xmm0,(%rsp)
divsd  %xmm8,%xmm9
jmp    11ba <algdiv+0x9a>
movapd %xmm9,%xmm1
divsd  %xmm8,%xmm1
movsd  0xe73(%rip),%xmm3
movapd %xmm1,%xmm2
addsd  0xe6e(%rip),%xmm9
movapd %xmm9,%xmm0
movapd %xmm1,%xmm9
addsd  %xmm3,%xmm1
divsd  %xmm1,%xmm2
divsd  %xmm1,%xmm3
addsd  %xmm8,%xmm0
movsd  %xmm0,(%rsp)
movapd %xmm3,%xmm4
mulsd  %xmm3,%xmm4
movapd %xmm3,%xmm5
addsd  %xmm4,%xmm5
movsd  0xe2e(%rip),%xmm6
addsd  %xmm6,%xmm5
movapd %xmm4,%xmm7
mulsd  %xmm5,%xmm7
addsd  %xmm3,%xmm7
addsd  %xmm6,%xmm7
movapd %xmm4,%xmm1
mulsd  %xmm7,%xmm1
addsd  %xmm3,%xmm1
addsd  %xmm6,%xmm1
movapd %xmm4,%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm3,%xmm0
addsd  %xmm6,%xmm0
mulsd  %xmm0,%xmm4
addsd  %xmm3,%xmm4
addsd  %xmm6,%xmm4
divsd  %xmm8,%xmm6
mulsd  %xmm6,%xmm6
mulsd  0xded(%rip),%xmm4
mulsd  0xded(%rip),%xmm0
mulsd  %xmm6,%xmm4
addsd  %xmm0,%xmm4
mulsd  0xde5(%rip),%xmm1
mulsd  %xmm6,%xmm4
addsd  %xmm1,%xmm4
mulsd  0xddd(%rip),%xmm7
mulsd  %xmm6,%xmm4
addsd  %xmm7,%xmm4
mulsd  0xdd5(%rip),%xmm5
mulsd  %xmm6,%xmm4
addsd  %xmm5,%xmm4
mulsd  %xmm6,%xmm4
addsd  0xdc9(%rip),%xmm4
divsd  %xmm8,%xmm2
mulsd  %xmm4,%xmm2
movsd  %xmm2,0x2dc0(%rip)
movsd  %xmm9,0x2dbf(%rip)
lea    0x2db8(%rip),%rdi
call   1030 <alnrel@plt>
mulsd  (%rsp),%xmm0
movsd  %xmm0,0x2d96(%rip)
movsd  (%rbx),%xmm0
movsd  %xmm0,(%rsp)
movsd  (%r14),%xmm0
call   1040 <log@plt>
addsd  0xd83(%rip),%xmm0
mulsd  (%rsp),%xmm0
movsd  0x2d6e(%rip),%xmm2
ucomisd %xmm2,%xmm0
movsd  0x2d6a(%rip),%xmm1
movapd %xmm2,%xmm3
cmpnlesd %xmm0,%xmm3
movapd %xmm3,%xmm4
andpd  %xmm0,%xmm4
andnpd %xmm2,%xmm3
orpd   %xmm4,%xmm3
jb     12f5 <algdiv+0x1d5>
movapd %xmm0,%xmm2
subsd  %xmm3,%xmm1
subsd  %xmm2,%xmm1
movapd %xmm1,%xmm0
add    $0x8,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
@algdiv.c0 = internal global double 0x3FB5555555555553
@algdiv.c1 = internal global double 0xBF66C16C16BB8412
@algdiv.c2 = internal global double 0x3F4A019FD4488960
@algdiv.c3 = internal global double 0xBF4380EC8FF430DF
@algdiv.c4 = internal global double 0x3F4B6FD94FB94A6B
@algdiv.c5 = internal global double 0xBF5B1625CBCA1838
@algdiv.algdiv = internal global double 0.000000e+00
@algdiv.c = internal global double 0.000000e+00
@algdiv.d = internal global double 0.000000e+00
@algdiv.h = internal global double 0.000000e+00
@algdiv.s11 = internal global double 0.000000e+00
@algdiv.s3 = internal global double 0.000000e+00
@algdiv.s5 = internal global double 0.000000e+00
@algdiv.s7 = internal global double 0.000000e+00
@algdiv.s9 = internal global double 0.000000e+00
@algdiv.t = internal global double 0.000000e+00
@algdiv.u = internal global double 0.000000e+00
@algdiv.v = internal global double 0.000000e+00
@algdiv.w = internal global double 0.000000e+00
@algdiv.x = internal global double 0.000000e+00
@algdiv.x2 = internal global double 0.000000e+00
@algdiv.T1 = internal global double 0.000000e+00
define double @algdiv(double* %0, double* %1) {
%3 = alloca double
%4 = alloca double*
%5 = alloca double*
store double* %0, double** %4
store double* %1, double** %5
%6 = load double*, double** %4
%7 = load double, double* %6
%8 = load double*, double** %5
%9 = load double, double* %8
%10 = fcmp ole double %7, %9
br i1 %10, label %11, label %12
11: ; preds = %2
br label %31
12: ; preds = %2
%13 = load double*, double** %5
%14 = load double, double* %13
%15 = load double*, double** %4
%16 = load double, double* %15
%17 = fdiv double %14, %16
store double %17, double* @algdiv.h
%18 = load double, double* @algdiv.h
%19 = fadd double 1.000000e+00, %18
%20 = fdiv double 1.000000e+00, %19
store double %20, double* @algdiv.c
%21 = load double, double* @algdiv.h
%22 = load double, double* @algdiv.h
%23 = fadd double 1.000000e+00, %22
%24 = fdiv double %21, %23
store double %24, double* @algdiv.x
%25 = load double*, double** %4
%26 = load double, double* %25
%27 = load double*, double** %5
%28 = load double, double* %27
%29 = fsub double %28, 5.000000e-01
%30 = fadd double %26, %29
store double %30, double* @algdiv.d
br label %50
31: ; preds = %11
%32 = load double*, double** %4
%33 = load double, double* %32
%34 = load double*, double** %5
%35 = load double, double* %34
%36 = fdiv double %33, %35
store double %36, double* @algdiv.h
%37 = load double, double* @algdiv.h
%38 = load double, double* @algdiv.h
%39 = fadd double 1.000000e+00, %38
%40 = fdiv double %37, %39
store double %40, double* @algdiv.c
%41 = load double, double* @algdiv.h
%42 = fadd double 1.000000e+00, %41
%43 = fdiv double 1.000000e+00, %42
store double %43, double* @algdiv.x
%44 = load double*, double** %5
%45 = load double, double* %44
%46 = load double*, double** %4
%47 = load double, double* %46
%48 = fsub double %47, 5.000000e-01
%49 = fadd double %45, %48
store double %49, double* @algdiv.d
br label %50
50: ; preds = %31, %12
%51 = load double, double* @algdiv.x
%52 = load double, double* @algdiv.x
%53 = fmul double %51, %52
store double %53, double* @algdiv.x2
%54 = load double, double* @algdiv.x
%55 = load double, double* @algdiv.x2
%56 = fadd double %54, %55
%57 = fadd double 1.000000e+00, %56
store double %57, double* @algdiv.s3
%58 = load double, double* @algdiv.x
%59 = load double, double* @algdiv.x2
%60 = load double, double* @algdiv.s3
%61 = call double @llvm.fmuladd.f64(double %59, double %60, double %58)
%62 = fadd double 1.000000e+00, %61
store double %62, double* @algdiv.s5
%63 = load double, double* @algdiv.x
%64 = load double, double* @algdiv.x2
%65 = load double, double* @algdiv.s5
%66 = call double @llvm.fmuladd.f64(double %64, double %65, double %63)
%67 = fadd double 1.000000e+00, %66
store double %67, double* @algdiv.s7
%68 = load double, double* @algdiv.x
%69 = load double, double* @algdiv.x2
%70 = load double, double* @algdiv.s7
%71 = call double @llvm.fmuladd.f64(double %69, double %70, double %68)
%72 = fadd double 1.000000e+00, %71
store double %72, double* @algdiv.s9
%73 = load double, double* @algdiv.x
%74 = load double, double* @algdiv.x2
%75 = load double, double* @algdiv.s9
%76 = call double @llvm.fmuladd.f64(double %74, double %75, double %73)
%77 = fadd double 1.000000e+00, %76
store double %77, double* @algdiv.s11
%78 = load double*, double** %5
%79 = load double, double* %78
%80 = fdiv double 1.000000e+00, %79
%81 = call double @pow(double %80, double 2.000000e+00)
store double %81, double* @algdiv.t
%82 = load double, double* @algdiv.c5
%83 = load double, double* @algdiv.s11
%84 = fmul double %82, %83
%85 = load double, double* @algdiv.t
%86 = load double, double* @algdiv.c4
%87 = load double, double* @algdiv.s9
%88 = fmul double %86, %87
%89 = call double @llvm.fmuladd.f64(double %84, double %85, double %88)
%90 = load double, double* @algdiv.t
%91 = load double, double* @algdiv.c3
%92 = load double, double* @algdiv.s7
%93 = fmul double %91, %92
%94 = call double @llvm.fmuladd.f64(double %89, double %90, double %93)
%95 = load double, double* @algdiv.t
%96 = load double, double* @algdiv.c2
%97 = load double, double* @algdiv.s5
%98 = fmul double %96, %97
%99 = call double @llvm.fmuladd.f64(double %94, double %95, double %98)
%100 = load double, double* @algdiv.t
%101 = load double, double* @algdiv.c1
%102 = load double, double* @algdiv.s3
%103 = fmul double %101, %102
%104 = call double @llvm.fmuladd.f64(double %99, double %100, double %103)
%105 = load double, double* @algdiv.t
%106 = load double, double* @algdiv.c0
%107 = call double @llvm.fmuladd.f64(double %104, double %105, double %106)
store double %107, double* @algdiv.w
%108 = load double, double* @algdiv.c
%109 = load double*, double** %5
%110 = load double, double* %109
%111 = fdiv double %108, %110
%112 = load double, double* @algdiv.w
%113 = fmul double %112, %111
store double %113, double* @algdiv.w
%114 = load double*, double** %4
%115 = load double, double* %114
%116 = load double*, double** %5
%117 = load double, double* %116
%118 = fdiv double %115, %117
store double %118, double* @algdiv.T1
%119 = load double, double* @algdiv.d
%120 = call double @alnrel(double* @algdiv.T1)
%121 = fmul double %119, %120
store double %121, double* @algdiv.u
%122 = load double*, double** %4
%123 = load double, double* %122
%124 = load double*, double** %5
%125 = load double, double* %124
%126 = call double @log(double %125)
%127 = fsub double %126, 1.000000e+00
%128 = fmul double %123, %127
store double %128, double* @algdiv.v
%129 = load double, double* @algdiv.u
%130 = load double, double* @algdiv.v
%131 = fcmp ole double %129, %130
br i1 %131, label %132, label %133
132: ; preds = %50
br label %140
133: ; preds = %50
%134 = load double, double* @algdiv.w
%135 = load double, double* @algdiv.v
%136 = fsub double %134, %135
%137 = load double, double* @algdiv.u
%138 = fsub double %136, %137
store double %138, double* @algdiv.algdiv
%139 = load double, double* @algdiv.algdiv
store double %139, double* %3
br label %147
140: ; preds = %132
%141 = load double, double* @algdiv.w
%142 = load double, double* @algdiv.u
%143 = fsub double %141, %142
%144 = load double, double* @algdiv.v
%145 = fsub double %143, %144
store double %145, double* @algdiv.algdiv
%146 = load double, double* @algdiv.algdiv
store double %146, double* %3
br label %147
147: ; preds = %140, %133
%148 = load double, double* %3
ret double %148
}

LLVM IR (-O2):
@algdiv.u = internal unnamed_addr global double 0.000000e+00
@algdiv.w = internal unnamed_addr global double 0.000000e+00
@algdiv.T1 = internal global double 0.000000e+00
define double @algdiv(double* nocapture %0, double* nocapture %1) {
%3 = load double, double* %0
%4 = load double, double* %1
%5 = fcmp ugt double %3, %4
br i1 %5, label %6, label %14
6: ; preds = %2
%7 = fdiv double %4, %3
%8 = fadd double %7, 1.000000e+00
%9 = fdiv double 1.000000e+00, %8
%10 = fdiv double %7, %8
%11 = fadd double %4, -5.000000e-01
%12 = fadd double %3, %11
%13 = fdiv double %3, %4
br label %21
14: ; preds = %2
%15 = fdiv double %3, %4
%16 = fadd double %15, 1.000000e+00
%17 = fdiv double %15, %16
%18 = fdiv double 1.000000e+00, %16
%19 = fadd double %3, -5.000000e-01
%20 = fadd double %4, %19
br label %21
21: ; preds = %14, %6
%22 = phi double [ %15, %14 ], [ %13, %6 ]
%23 = phi double [ %17, %14 ], [ %9, %6 ]
%24 = phi double [ %18, %14 ], [ %10, %6 ]
%25 = phi double [ %20, %14 ], [ %12, %6 ]
%26 = fmul double %24, %24
%27 = fadd double %24, %26
%28 = fadd double %27, 1.000000e+00
%29 = tail call double @llvm.fmuladd.f64(double %26, double %28, double %24)
%30 = fadd double %29, 1.000000e+00
%31 = tail call double @llvm.fmuladd.f64(double %26, double %30, double %24)
%32 = fadd double %31, 1.000000e+00
%33 = tail call double @llvm.fmuladd.f64(double %26, double %32, double %24)
%34 = fadd double %33, 1.000000e+00
%35 = tail call double @llvm.fmuladd.f64(double %26, double %34, double %24)
%36 = fadd double %35, 1.000000e+00
%37 = fdiv double 1.000000e+00, %4
%38 = fmul double %37, %37
%39 = fmul double %36, 0xBF5B1625CBCA1838
%40 = fmul double %34, 0x3F4B6FD94FB94A6B
%41 = tail call double @llvm.fmuladd.f64(double %39, double %38, double %40)
%42 = fmul double %32, 0xBF4380EC8FF430DF
%43 = tail call double @llvm.fmuladd.f64(double %41, double %38, double %42)
%44 = fmul double %30, 0x3F4A019FD4488960
%45 = tail call double @llvm.fmuladd.f64(double %43, double %38, double %44)
%46 = fmul double %28, 0xBF66C16C16BB8412
%47 = tail call double @llvm.fmuladd.f64(double %45, double %38, double %46)
%48 = tail call double @llvm.fmuladd.f64(double %47, double %38, double 0x3FB5555555555553)
%49 = fdiv double %23, %4
%50 = fmul double %49, %48
store double %50, double* @algdiv.w
store double %22, double* @algdiv.T1
%51 = tail call double @alnrel(double* @algdiv.T1)
%52 = fmul double %25, %51
store double %52, double* @algdiv.u
%53 = load double, double* %0
%54 = load double, double* %1
%55 = tail call double @log(double %54)
%56 = fadd double %55, -1.000000e+00
%57 = fmul double %53, %56
%58 = load double, double* @algdiv.u
%59 = fcmp ugt double %58, %57
%60 = load double, double* @algdiv.w
%61 = select i1 %59, double %57, double %58
%62 = select i1 %59, double %58, double %57
%63 = fsub double %60, %61
%64 = fsub double %63, %62
ret double %64
}