#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 */
int DBL_EPSILON;
double fabs(double);
double igraph_chebyshev_eval(double, double const *, int);
int igraph_chebyshev_init(double const *, int, int);
double igraph_i_fdiv(double, double);
double log(int);
int sqrt(int);
double igraph_log1p(double x) {
  const static double alnrcs[43] = {
      +.10378693562743769800686267719098e+1,
      -.13364301504908918098766041553133e+0,
      +.19408249135520563357926199374750e-1,
      -.30107551127535777690376537776592e-2,
      +.48694614797154850090456366509137e-3,
      -.81054881893175356066809943008622e-4,
      +.13778847799559524782938251496059e-4,
      -.23802210894358970251369992914935e-5,
      +.41640416213865183476391859901989e-6,
      -.73595828378075994984266837031998e-7,
      +.13117611876241674949152294345011e-7,
      -.23546709317742425136696092330175e-8,
      +.42522773276034997775638052962567e-9,
      -.77190894134840796826108107493300e-10,
      +.14075746481359069909215356472191e-10,
      -.25769072058024680627537078627584e-11,
      +.47342406666294421849154395005938e-12,
      -.87249012674742641745301263292675e-13,
      +.16124614902740551465739833119115e-13,
      -.29875652015665773006710792416815e-14,
      +.55480701209082887983041321697279e-15,
      -.10324619158271569595141333961932e-15,
      +.19250239203049851177878503244868e-16,
      -.35955073465265150011189707844266e-17,
      +.67264542537876857892194574226773e-18,
      -.12602624168735219252082425637546e-18,
      +.23644884408606210044916158955519e-19,
      -.44419377050807936898878389179733e-20,
      +.83546594464034259016241293994666e-21,
      -.15731559416479562574899253521066e-21,
      +.29653128740247422686154369706666e-22,
      -.55949583481815947292156013226666e-23,
      +.10566354268835681048187284138666e-23,
      -.19972483680670204548314999466666e-24,
      +.37782977818839361421049855999999e-25,
      -.71531586889081740345038165333333e-26,
      +.13552488463674213646502024533333e-26,
      -.25694673048487567430079829333333e-27,
      +.48747756066216949076459519999999e-28,
      -.92542112530849715321132373333333e-29,
      +.17578597841760239233269760000000e-29,
      -.33410026677731010351377066666666e-30,
      +.63533936180236187354180266666666e-31,
  };
  static int nlnrel = 0;
  static double xmin = 0.0;
  if (xmin == 0.0)
    xmin = -1 + sqrt(DBL_EPSILON);
  if (nlnrel == 0)
    nlnrel = igraph_chebyshev_init(alnrcs, 43, DBL_EPSILON / 20);
  if (x == 0.)
    return 0.;
  if (x == -1)
    return ((igraph_i_fdiv(-1.0, 0.0)));
  if (x < -1)
    return ((igraph_i_fdiv(0.0, 0.0)));
  if (fabs(x) <= .375) {
    if (fabs(x) < .5 * DBL_EPSILON)
      return x;
    if ((0 < x && x < 1e-8) || (-1e-9 < x && x < 0))
      return x * (1 - .5 * x);
    return x * (1 - x * igraph_chebyshev_eval(x / .375, alnrcs, nlnrel));
  }
  return log(1 + x);
}


x86 assembly (clang, -O0):
<igraph_log1p>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movsd  %xmm0,-0x10(%rbp)
movsd  0x2ef3(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1197 <igraph_log1p+0x47>
jp     1197 <igraph_log1p+0x47>
mov    0x2e69(%rip),%rax
mov    (%rax),%edi
call   1060 <sqrt@plt>
add    $0xffffffff,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x2ec1(%rip)
cmpl   $0x0,0x2eb2(%rip)
jne    11ce <igraph_log1p+0x7e>
mov    0x2e3d(%rip),%rax
mov    (%rax),%eax
mov    $0x14,%ecx
cltd
idiv   %ecx
mov    %eax,%edx
lea    0xe92(%rip),%rdi
mov    $0x2b,%esi
call   1070 <igraph_chebyshev_init@plt>
mov    %eax,0x2e82(%rip)
movsd  -0x10(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    11f3 <igraph_log1p+0xa3>
jp     11f3 <igraph_log1p+0xa3>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    13c2 <igraph_log1p+0x272>
movsd  -0x10(%rbp),%xmm0
movsd  0xe00(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    122a <igraph_log1p+0xda>
jp     122a <igraph_log1p+0xda>
movsd  0xde8(%rip),%xmm0
xorps  %xmm1,%xmm1
call   1030 <igraph_i_fdiv@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    13c2 <igraph_log1p+0x272>
movsd  0xdce(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1252 <igraph_log1p+0x102>
xorps  %xmm1,%xmm1
movaps %xmm1,%xmm0
call   1030 <igraph_i_fdiv@plt>
movsd  %xmm0,-0x8(%rbp)
jmp    13c2 <igraph_log1p+0x272>
movsd  -0x10(%rbp),%xmm1
movaps 0xde2(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0xd9e(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     13a7 <igraph_log1p+0x257>
movsd  -0x10(%rbp),%xmm1
movaps 0xdc0(%rip),%xmm0
pand   %xmm0,%xmm1
mov    0x2d5d(%rip),%rax
cvtsi2sdl (%rax),%xmm2
movsd  0xd81(%rip),%xmm0
mulsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
jbe    12b4 <igraph_log1p+0x164>
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    13c2 <igraph_log1p+0x272>
movsd  -0x10(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    12d9 <igraph_log1p+0x189>
movsd  0xd52(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
ja     12fe <igraph_log1p+0x1ae>
movsd  -0x10(%rbp),%xmm0
movsd  0xd42(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    132e <igraph_log1p+0x1de>
xorps  %xmm0,%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    132e <igraph_log1p+0x1de>
movsd  -0x10(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xd20(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xcf4(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    13c2 <igraph_log1p+0x272>
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  0xcb9(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    0x2cf7(%rip),%esi
lea    0xcf0(%rip),%rdi
call   1050 <igraph_chebyshev_eval@plt>
movsd  -0x20(%rbp),%xmm1
movaps %xmm0,%xmm2
movsd  -0x18(%rbp),%xmm0
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
movsd  0xc7b(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    13c2 <igraph_log1p+0x272>
movsd  0xc61(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1040 <log@plt>
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<igraph_log1p>:
sub    $0x18,%rsp
movapd %xmm0,%xmm2
movsd  0x2ef8(%rip),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
movapd %xmm2,(%rsp)
jne    1196 <igraph_log1p+0x46>
jp     1196 <igraph_log1p+0x46>
mov    0x2e70(%rip),%rax
mov    (%rax),%edi
call   1060 <sqrt@plt>
movapd (%rsp),%xmm2
add    $0xffffffff,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x2ec2(%rip)
mov    0x2eb4(%rip),%eax
test   %eax,%eax
jne    11da <igraph_log1p+0x8a>
mov    0x2e41(%rip),%rax
movslq (%rax),%rax
imul   $0x66666667,%rax,%rdx
mov    %rdx,%rax
shr    $0x3f,%rax
sar    $0x23,%rdx
add    %eax,%edx
lea    0xe8b(%rip),%rdi
mov    $0x2b,%esi
call   1070 <igraph_chebyshev_init@plt>
movapd (%rsp),%xmm2
mov    %eax,0x2e76(%rip)
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm2
jne    11eb <igraph_log1p+0x9b>
jp     11eb <igraph_log1p+0x9b>
add    $0x18,%rsp
ret
movsd  0xe0d(%rip),%xmm0
ucomisd 0xe05(%rip),%xmm2
jne    11ff <igraph_log1p+0xaf>
jnp    1209 <igraph_log1p+0xb9>
ucomisd %xmm2,%xmm0
jbe    1216 <igraph_log1p+0xc6>
xorpd  %xmm0,%xmm0
xorpd  %xmm1,%xmm1
add    $0x18,%rsp
jmp    1030 <igraph_i_fdiv@plt>
movapd 0xe22(%rip),%xmm0
andpd  %xmm2,%xmm0
movsd  0xdde(%rip),%xmm1
ucomisd %xmm0,%xmm1
jae    1245 <igraph_log1p+0xf5>
addsd  0xdf0(%rip),%xmm2
cvttsd2si %xmm2,%edi
add    $0x18,%rsp
jmp    1040 <log@plt>
mov    0x2d9c(%rip),%rcx
xorps  %xmm1,%xmm1
cvtsi2sdl (%rcx),%xmm1
mulsd  0xdb5(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    126a <igraph_log1p+0x11a>
movapd %xmm2,%xmm0
add    $0x18,%rsp
ret
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm2
jbe    1282 <igraph_log1p+0x132>
movsd  0xd9c(%rip),%xmm0
ucomisd %xmm2,%xmm0
ja     1296 <igraph_log1p+0x146>
ucomisd 0xd96(%rip),%xmm2
jbe    12ac <igraph_log1p+0x15c>
xorpd  %xmm0,%xmm0
ucomisd %xmm2,%xmm0
jbe    12ac <igraph_log1p+0x15c>
movsd  0xd92(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xd7e(%rip),%xmm0
jmp    12df <igraph_log1p+0x18f>
movapd %xmm2,%xmm0
divsd  0xd50(%rip),%xmm0
lea    0xd91(%rip),%rdi
mov    %eax,%esi
call   1050 <igraph_chebyshev_eval@plt>
movapd %xmm0,%xmm1
movapd (%rsp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xd4d(%rip),%xmm0
subsd  %xmm1,%xmm0
mulsd  %xmm2,%xmm0
add    $0x18,%rsp
ret

LLVM IR (-O0):
@igraph_log1p.alnrcs = internal constant [43 x double] [double 0x3FF09B1CE5EB811D, double 0xBFC11B36DD7CC21D, double 0x3F93DFC18D3D1D0A, double 0xBF68AA02D7DB79A8, double 0x3F3FE999C7CBA2A1, double 0xBF153F804484AA81, double 0x3EECE5766BEF61D2, double 0xBEC3F77C61DB8B10, double 0x3E9BF1C4DF5C5CAB, double 0xBE73C1778142704C, double 0x3E4C2B7BBFA9A43E, double 0xBE2439F9E4307C3D, double 0x3DFD38AF7574620A, double 0xBDD537D3873B471F, double 0x3DAEF3F0D9F9E17E, double 0xBD86AAADDDD12CBE, double 0x3D60A8399312F94D, double 0xBD388EF4351E6163, double 0x3D12279A93DD1044, double 0xBCEAE8DB38BE97B6, double 0x3CC3FD3104E8F0CE, double 0xBC9DC2396B1FF914, double 0x3C7631AAF34D1B23, double 0xBC5094D36A9CF561, double 0x3C28D0F4D828C566, double 0xBC029923052BBD6E, double 0x3BDBEA3A5223964A, double 0xBBB4F9F922605A68, double 0x3B8F90217D18C710, double 0xBB67C5DA2EBC8D10, double 0x3B41EC997391DB96, double 0xBB1B0E3913BB9605, double 0x3AF470348879FC8C, double 0xBACEE7EA795C855F, double 0x3AA762F3AA11D7F3, double 0xBA81B5DA5B1CB601, double 0x3A5AD7ED94F631C2, double 0xBA345B7FB395FD6D, double 0x3A0EE5C690C25FED, double 0xB9E7765395A5F4D8, double 0x39C1D3AA38098AC6, double 0xB99B1AFDB6458798, double 0x39749E3162EE7273]
@igraph_log1p.nlnrel = internal global i32 0
@igraph_log1p.xmin = internal global double 0.000000e+00
@DBL_EPSILON = global i32 0
define double @igraph_log1p(double %0) {
%2 = alloca double
%3 = alloca double
store double %0, double* %3
%4 = load double, double* @igraph_log1p.xmin
%5 = fcmp oeq double %4, 0.000000e+00
br i1 %5, label %6, label %11
6: ; preds = %1
%7 = load i32, i32* @DBL_EPSILON
%8 = call i32 @sqrt(i32 %7)
%9 = add nsw i32 -1, %8
%10 = sitofp i32 %9 to double
store double %10, double* @igraph_log1p.xmin
br label %11
11: ; preds = %6, %1
%12 = load i32, i32* @igraph_log1p.nlnrel
%13 = icmp eq i32 %12, 0
br i1 %13, label %14, label %18
14: ; preds = %11
%15 = load i32, i32* @DBL_EPSILON
%16 = sdiv i32 %15, 20
%17 = call i32 @igraph_chebyshev_init(double* getelementptr inbounds ([43 x double], [43 x double]* @igraph_log1p.alnrcs, i64 0, i64 0), i32 43, i32 %16)
store i32 %17, i32* @igraph_log1p.nlnrel
br label %18
18: ; preds = %14, %11
%19 = load double, double* %3
%20 = fcmp oeq double %19, 0.000000e+00
br i1 %20, label %21, label %22
21: ; preds = %18
store double 0.000000e+00, double* %2
br label %77
22: ; preds = %18
%23 = load double, double* %3
%24 = fcmp oeq double %23, -1.000000e+00
br i1 %24, label %25, label %27
25: ; preds = %22
%26 = call double @igraph_i_fdiv(double -1.000000e+00, double 0.000000e+00)
store double %26, double* %2
br label %77
27: ; preds = %22
%28 = load double, double* %3
%29 = fcmp olt double %28, -1.000000e+00
br i1 %29, label %30, label %32
30: ; preds = %27
%31 = call double @igraph_i_fdiv(double 0.000000e+00, double 0.000000e+00)
store double %31, double* %2
br label %77
32: ; preds = %27
%33 = load double, double* %3
%34 = call double @llvm.fabs.f64(double %33)
%35 = fcmp ole double %34, 3.750000e-01
br i1 %35, label %36, label %72
36: ; preds = %32
%37 = load double, double* %3
%38 = call double @llvm.fabs.f64(double %37)
%39 = load i32, i32* @DBL_EPSILON
%40 = sitofp i32 %39 to double
%41 = fmul double 5.000000e-01, %40
%42 = fcmp olt double %38, %41
br i1 %42, label %43, label %45
43: ; preds = %36
%44 = load double, double* %3
store double %44, double* %2
br label %77
45: ; preds = %36
%46 = load double, double* %3
%47 = fcmp olt double 0.000000e+00, %46
br i1 %47, label %48, label %51
48: ; preds = %45
%49 = load double, double* %3
%50 = fcmp olt double %49, 1.000000e-08
br i1 %50, label %57, label %51
51: ; preds = %48, %45
%52 = load double, double* %3
%53 = fcmp olt double -1.000000e-09, %52
br i1 %53, label %54, label %62
54: ; preds = %51
%55 = load double, double* %3
%56 = fcmp olt double %55, 0.000000e+00
br i1 %56, label %57, label %62
57: ; preds = %54, %48
%58 = load double, double* %3
%59 = load double, double* %3
%60 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %59, double 1.000000e+00)
%61 = fmul double %58, %60
store double %61, double* %2
br label %77
62: ; preds = %54, %51
%63 = load double, double* %3
%64 = load double, double* %3
%65 = load double, double* %3
%66 = fdiv double %65, 3.750000e-01
%67 = load i32, i32* @igraph_log1p.nlnrel
%68 = call double @igraph_chebyshev_eval(double %66, double* getelementptr inbounds ([43 x double], [43 x double]* @igraph_log1p.alnrcs, i64 0, i64 0), i32 %67)
%69 = fneg double %64
%70 = call double @llvm.fmuladd.f64(double %69, double %68, double 1.000000e+00)
%71 = fmul double %63, %70
store double %71, double* %2
br label %77
72: ; preds = %32
%73 = load double, double* %3
%74 = fadd double 1.000000e+00, %73
%75 = fptosi double %74 to i32
%76 = call double @log(i32 %75)
store double %76, double* %2
br label %77
77: ; preds = %72, %62, %57, %43, %30, %25, %21
%78 = load double, double* %2
ret double %78
}

LLVM IR (-O2):
@igraph_log1p.alnrcs = internal constant [43 x double] [double 0x3FF09B1CE5EB811D, double 0xBFC11B36DD7CC21D, double 0x3F93DFC18D3D1D0A, double 0xBF68AA02D7DB79A8, double 0x3F3FE999C7CBA2A1, double 0xBF153F804484AA81, double 0x3EECE5766BEF61D2, double 0xBEC3F77C61DB8B10, double 0x3E9BF1C4DF5C5CAB, double 0xBE73C1778142704C, double 0x3E4C2B7BBFA9A43E, double 0xBE2439F9E4307C3D, double 0x3DFD38AF7574620A, double 0xBDD537D3873B471F, double 0x3DAEF3F0D9F9E17E, double 0xBD86AAADDDD12CBE, double 0x3D60A8399312F94D, double 0xBD388EF4351E6163, double 0x3D12279A93DD1044, double 0xBCEAE8DB38BE97B6, double 0x3CC3FD3104E8F0CE, double 0xBC9DC2396B1FF914, double 0x3C7631AAF34D1B23, double 0xBC5094D36A9CF561, double 0x3C28D0F4D828C566, double 0xBC029923052BBD6E, double 0x3BDBEA3A5223964A, double 0xBBB4F9F922605A68, double 0x3B8F90217D18C710, double 0xBB67C5DA2EBC8D10, double 0x3B41EC997391DB96, double 0xBB1B0E3913BB9605, double 0x3AF470348879FC8C, double 0xBACEE7EA795C855F, double 0x3AA762F3AA11D7F3, double 0xBA81B5DA5B1CB601, double 0x3A5AD7ED94F631C2, double 0xBA345B7FB395FD6D, double 0x3A0EE5C690C25FED, double 0xB9E7765395A5F4D8, double 0x39C1D3AA38098AC6, double 0xB99B1AFDB6458798, double 0x39749E3162EE7273]
@igraph_log1p.nlnrel = internal unnamed_addr global i32 0
@igraph_log1p.xmin = internal unnamed_addr global double 0.000000e+00
@DBL_EPSILON = global i32 0
define double @igraph_log1p(double %0) {
%2 = load double, double* @igraph_log1p.xmin
%3 = fcmp oeq double %2, 0.000000e+00
br i1 %3, label %4, label %9
4: ; preds = %1
%5 = load i32, i32* @DBL_EPSILON
%6 = tail call i32 @sqrt(i32 %5)
%7 = add nsw i32 %6, -1
%8 = sitofp i32 %7 to double
store double %8, double* @igraph_log1p.xmin
br label %9
9: ; preds = %4, %1
%10 = load i32, i32* @igraph_log1p.nlnrel
%11 = icmp eq i32 %10, 0
br i1 %11, label %12, label %16
12: ; preds = %9
%13 = load i32, i32* @DBL_EPSILON
%14 = sdiv i32 %13, 20
%15 = tail call i32 @igraph_chebyshev_init(double* getelementptr inbounds ([43 x double], [43 x double]* @igraph_log1p.alnrcs, i64 0, i64 0), i32 43, i32 %14)
store i32 %15, i32* @igraph_log1p.nlnrel
br label %16
16: ; preds = %12, %9
%17 = phi i32 [ %15, %12 ], [ %10, %9 ]
%18 = fcmp oeq double %0, 0.000000e+00
br i1 %18, label %56, label %19
19: ; preds = %16
%20 = fcmp oeq double %0, -1.000000e+00
br i1 %20, label %21, label %23
21: ; preds = %19
%22 = tail call double @igraph_i_fdiv(double -1.000000e+00, double 0.000000e+00)
br label %56
23: ; preds = %19
%24 = fcmp olt double %0, -1.000000e+00
br i1 %24, label %25, label %27
25: ; preds = %23
%26 = tail call double @igraph_i_fdiv(double 0.000000e+00, double 0.000000e+00)
br label %56
27: ; preds = %23
%28 = tail call double @llvm.fabs.f64(double %0)
%29 = fcmp ugt double %28, 3.750000e-01
br i1 %29, label %52, label %30
30: ; preds = %27
%31 = load i32, i32* @DBL_EPSILON
%32 = sitofp i32 %31 to double
%33 = fmul double %32, 5.000000e-01
%34 = fcmp olt double %28, %33
br i1 %34, label %56, label %35
35: ; preds = %30
%36 = fcmp ogt double %0, 0.000000e+00
%37 = fcmp olt double %0, 1.000000e-08
%38 = and i1 %36, %37
br i1 %38, label %43, label %39
39: ; preds = %35
%40 = fcmp ogt double %0, -1.000000e-09
%41 = fcmp olt double %0, 0.000000e+00
%42 = and i1 %40, %41
br i1 %42, label %43, label %46
43: ; preds = %39, %35
%44 = tail call double @llvm.fmuladd.f64(double %0, double -5.000000e-01, double 1.000000e+00)
%45 = fmul double %44, %0
br label %56
46: ; preds = %39
%47 = fdiv double %0, 3.750000e-01
%48 = tail call double @igraph_chebyshev_eval(double %47, double* getelementptr inbounds ([43 x double], [43 x double]* @igraph_log1p.alnrcs, i64 0, i64 0), i32 %17)
%49 = fneg double %0
%50 = tail call double @llvm.fmuladd.f64(double %49, double %48, double 1.000000e+00)
%51 = fmul double %50, %0
br label %56
52: ; preds = %27
%53 = fadd double %0, 1.000000e+00
%54 = fptosi double %53 to i32
%55 = tail call double @log(i32 %54)
br label %56
56: ; preds = %30, %16, %52, %46, %43, %25, %21
%57 = phi double [ %22, %21 ], [ %26, %25 ], [ %45, %43 ], [ %51, %46 ], [ %55, %52 ], [ 0.000000e+00, %16 ], [ %0, %30 ]
ret double %57
}