double PPND16(p, ifault)
double p;
int *ifault;
{
  double result, q, r;
  *ifault = 0;
  q = p - 0.5;
  if (fabs(q) <= 0.425) {
    r = 0.180625 - q * q;
    result = q *
             (((((((r * 2509.0809287301226727 + 33430.575583588128105) * r +
                   67265.770927008700853) *
                      r +
                  45921.953931549871457) *
                     r +
                 13731.693765509461125) *
                    r +
                1971.5909503065514427) *
                   r +
               133.14166789178437745) *
                  r +
              3.387132872796366608) /
             (((((((r * 5226.495278852854561 + 28729.085735721942674) * r +
                   39307.89580009271061) *
                      r +
                  21213.794301586595867) *
                     r +
                 5394.1960214247511077) *
                    r +
                687.1870074920579083) *
                   r +
               42.313330701600911252) *
                  r +
              1.0);
  } else {
    if (q < 0.0)
      r = p;
    else
      r = 1.0 - p;
    if (r <= 0.0) {
      *ifault = 1;
      return 0.0;
    }
    r = sqrt(-log(r));
    if (r <= 5.0) {
      r += -1.6;
      result =
          (((((((r * 7.7454501427834140764e-4 + 0.0227238449892691845833) * r +
                0.24178072517745061177) *
                   r +
               1.27045825245236838258) *
                  r +
              3.64784832476320460504) *
                 r +
             5.7694972214606914055) *
                r +
            4.6303378461565452959) *
               r +
           1.42343711074968357734) /
          (((((((r * 1.05075007164441684324e-9 + 5.475938084995344946e-4) * r +
                0.0151986665636164571966) *
                   r +
               0.14810397642748007459) *
                  r +
              0.68976733498510000455) *
                 r +
             1.6763848301838038494) *
                r +
            2.05319162663775882187) *
               r +
           1.0);
    } else {
      r += -5.0;
      result =
          (((((((r * 2.01033439929228813265e-7 + 2.71155556874348757815e-5) *
                    r +
                0.0012426609473880784386) *
                   r +
               0.026532189526576123093) *
                  r +
              0.29656057182850489123) *
                 r +
             1.7848265399172913358) *
                r +
            5.4637849111641143699) *
               r +
           6.6579046435011037772) /
          (((((((r * 2.04426310338993978564e-15 + 1.4215117583164458887e-7) *
                    r +
                1.8463183175100546818e-5) *
                   r +
               7.868691311456132591e-4) *
                  r +
              0.0148753612908506148525) *
                 r +
             0.13692988092273580531) *
                r +
            0.59983220655588793769) *
               r +
           1.0);
    }
    if (q < 0.0)
      result = -result;
  }
  return result;
}


x86 assembly (clang, -O0):
<PPND16>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movsd  %xmm0,-0x10(%rbp)
mov    %rdi,-0x18(%rbp)
mov    -0x18(%rbp),%rax
movl   $0x0,(%rax)
movsd  -0x10(%rbp),%xmm0
movsd  0xec0(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm1
movaps 0x1043(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0xe97(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     12f6 <PPND16+0x1d6>
movsd  -0x28(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xff8(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  0xfcd(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xfc9(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xfa4(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xf87(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xf6a(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xf4d(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xf30(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xf13(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  0xeee(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xeea(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xec5(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xea8(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xe8b(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xe6e(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xe51(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xd2c(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
jmp    1663 <PPND16+0x543>
xorps  %xmm0,%xmm0
ucomisd -0x28(%rbp),%xmm0
jbe    1313 <PPND16+0x1f3>
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    1325 <PPND16+0x205>
movsd  0xcf5(%rip),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x30(%rbp),%xmm0
jb     134a <PPND16+0x22a>
mov    -0x18(%rbp),%rax
movl   $0x1,(%rax)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    166d <PPND16+0x54d>
movsd  -0x30(%rbp),%xmm0
call   1030 <log@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <sqrt@plt>
movsd  %xmm0,-0x30(%rbp)
movsd  0xc9b(%rip),%xmm0
ucomisd -0x30(%rbp),%xmm0
jb     14de <PPND16+0x3be>
movsd  0xd88(%rip),%xmm0
addsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  0xd61(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd5d(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd38(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd1b(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xcfe(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xce1(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xcc4(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xca7(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  0xc86(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xc82(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xc5d(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xc40(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xc23(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xc06(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xbe9(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xb44(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
jmp    162f <PPND16+0x50f>
movsd  0xbb2(%rip),%xmm0
addsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  0xb8b(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb87(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb62(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb45(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb28(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb0b(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xaee(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xad1(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  0xab0(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xaac(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xa87(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xa6a(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xa4d(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xa30(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xa13(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x9ee(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x28(%rbp),%xmm0
jbe    165e <PPND16+0x53e>
movsd  -0x20(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x20(%rbp)
jmp    1663 <PPND16+0x543>
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<PPND16>:
sub    $0x18,%rsp
movapd %xmm0,%xmm1
movl   $0x0,(%rdi)
movsd  0xeca(%rip),%xmm5
addsd  %xmm0,%xmm5
movapd 0xf7e(%rip),%xmm0
andpd  %xmm5,%xmm0
movsd  0xeba(%rip),%xmm2
ucomisd %xmm0,%xmm2
jae    11c3 <PPND16+0xa3>
movsd  0xf34(%rip),%xmm3
subsd  %xmm1,%xmm3
xorpd  %xmm0,%xmm0
movapd %xmm5,%xmm2
cmpltsd %xmm0,%xmm2
movapd %xmm2,%xmm4
andnpd %xmm3,%xmm4
andpd  %xmm1,%xmm2
orpd   %xmm4,%xmm2
ucomisd %xmm2,%xmm0
jae    129c <PPND16+0x17c>
movapd %xmm5,(%rsp)
movapd %xmm2,%xmm0
call   1030 <log@plt>
movapd %xmm0,%xmm1
movapd 0xf2f(%rip),%xmm0
xorpd  %xmm1,%xmm0
movsd  0xeeb(%rip),%xmm2
ucomisd %xmm1,%xmm2
jb     12a7 <PPND16+0x187>
xorps  %xmm1,%xmm1
sqrtsd %xmm0,%xmm1
jmp    12b0 <PPND16+0x190>
movapd %xmm5,%xmm0
mulsd  %xmm5,%xmm0
movsd  0xe3d(%rip),%xmm1
subsd  %xmm0,%xmm1
movsd  0xe39(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xe35(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xe31(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xe2d(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xe29(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xe25(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xe21(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xe1d(%rip),%xmm0
movsd  0xe1d(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xe19(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xe15(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xe11(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xe0d(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xe09(%rip),%xmm2
mulsd  %xmm5,%xmm0
mulsd  %xmm1,%xmm2
addsd  0xe01(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xdfd(%rip),%xmm2
divsd  %xmm2,%xmm0
add    $0x18,%rsp
ret
movl   $0x1,(%rdi)
add    $0x18,%rsp
ret
call   1040 <sqrt@plt>
movapd %xmm0,%xmm1
movsd  0xde8(%rip),%xmm0
ucomisd %xmm1,%xmm0
movapd (%rsp),%xmm2
jae    132d <PPND16+0x20d>
addsd  0xde5(%rip),%xmm1
unpcklpd %xmm1,%xmm1
movapd 0xe89(%rip),%xmm0
mulpd  %xmm1,%xmm0
addpd  0xe8d(%rip),%xmm0
mulpd  %xmm1,%xmm0
addpd  0xe91(%rip),%xmm0
mulpd  %xmm1,%xmm0
addpd  0xe95(%rip),%xmm0
mulpd  %xmm1,%xmm0
addpd  0xe99(%rip),%xmm0
mulpd  %xmm1,%xmm0
addpd  0xe9d(%rip),%xmm0
mulpd  %xmm1,%xmm0
addpd  0xea1(%rip),%xmm0
mulpd  %xmm1,%xmm0
addpd  0xea5(%rip),%xmm0
jmp    1395 <PPND16+0x275>
addsd  0xd73(%rip),%xmm1
unpcklpd %xmm1,%xmm1
movapd 0xd9f(%rip),%xmm0
mulpd  %xmm1,%xmm0
addpd  0xda3(%rip),%xmm0
mulpd  %xmm1,%xmm0
addpd  0xda7(%rip),%xmm0
mulpd  %xmm1,%xmm0
addpd  0xdab(%rip),%xmm0
mulpd  %xmm1,%xmm0
addpd  0xdaf(%rip),%xmm0
mulpd  %xmm1,%xmm0
addpd  0xdb3(%rip),%xmm0
mulpd  %xmm1,%xmm0
addpd  0xdb7(%rip),%xmm0
mulpd  %xmm1,%xmm0
addpd  0xdbb(%rip),%xmm0
movapd %xmm0,%xmm1
unpckhpd %xmm0,%xmm1
divsd  %xmm1,%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm2,%xmm1
jbe    13b3 <PPND16+0x293>
xorpd  0xd1d(%rip),%xmm0
add    $0x18,%rsp
ret

LLVM IR (-O0):
define double @PPND16(double %0, i32* %1) {
%3 = alloca double
%4 = alloca double
%5 = alloca i32*
%6 = alloca double
%7 = alloca double
%8 = alloca double
store double %0, double* %4
store i32* %1, i32** %5
%9 = load i32*, i32** %5
store i32 0, i32* %9
%10 = load double, double* %4
%11 = fsub double %10, 5.000000e-01
store double %11, double* %7
%12 = load double, double* %7
%13 = call double @llvm.fabs.f64(double %12)
%14 = fcmp ole double %13, 4.250000e-01
br i1 %14, label %15, label %51
15: ; preds = %2
%16 = load double, double* %7
%17 = load double, double* %7
%18 = fneg double %16
%19 = call double @llvm.fmuladd.f64(double %18, double %17, double 1.806250e-01)
store double %19, double* %8
%20 = load double, double* %7
%21 = load double, double* %8
%22 = call double @llvm.fmuladd.f64(double %21, double 0x40A39A296F7D925E, double 0x40E052D26B2E45E4)
%23 = load double, double* %8
%24 = call double @llvm.fmuladd.f64(double %22, double %23, double 0x40F06C1C55B78F20)
%25 = load double, double* %8
%26 = call double @llvm.fmuladd.f64(double %24, double %25, double 0x40E66C3E869B752A)
%27 = load double, double* %8
%28 = call double @llvm.fmuladd.f64(double %26, double %27, double 0x40CAD1D8CD4EE71D)
%29 = load double, double* %8
%30 = call double @llvm.fmuladd.f64(double %28, double %29, double 0x409ECE5D2213C0CC)
%31 = load double, double* %8
%32 = call double @llvm.fmuladd.f64(double %30, double %31, double 0x4060A4888B1A436E)
%33 = load double, double* %8
%34 = call double @llvm.fmuladd.f64(double %32, double %33, double 0x400B18D91E9EEF75)
%35 = fmul double %20, %34
%36 = load double, double* %8
%37 = call double @llvm.fmuladd.f64(double %36, double 0x40B46A7ECA984B69, double 0x40DC0E457CB1AE76)
%38 = load double, double* %8
%39 = call double @llvm.fmuladd.f64(double %37, double %38, double 0x40E3317CAA64F4BE)
%40 = load double, double* %8
%41 = call double @llvm.fmuladd.f64(double %39, double %40, double 0x40D4B772D5D65266)
%42 = load double, double* %8
%43 = call double @llvm.fmuladd.f64(double %41, double %42, double 0x40B512322E75C89F)
%44 = load double, double* %8
%45 = call double @llvm.fmuladd.f64(double %43, double %44, double 0x4085797EFDC8B3F7)
%46 = load double, double* %8
%47 = call double @llvm.fmuladd.f64(double %45, double %46, double 0x4045281B386E1AB5)
%48 = load double, double* %8
%49 = call double @llvm.fmuladd.f64(double %47, double %48, double 1.000000e+00)
%50 = fdiv double %35, %49
store double %50, double* %6
br label %142
51: ; preds = %2
%52 = load double, double* %7
%53 = fcmp olt double %52, 0.000000e+00
br i1 %53, label %54, label %56
54: ; preds = %51
%55 = load double, double* %4
store double %55, double* %8
br label %59
56: ; preds = %51
%57 = load double, double* %4
%58 = fsub double 1.000000e+00, %57
store double %58, double* %8
br label %59
59: ; preds = %56, %54
%60 = load double, double* %8
%61 = fcmp ole double %60, 0.000000e+00
br i1 %61, label %62, label %64
62: ; preds = %59
%63 = load i32*, i32** %5
store i32 1, i32* %63
store double 0.000000e+00, double* %3
br label %144
64: ; preds = %59
%65 = load double, double* %8
%66 = call double @log(double %65)
%67 = fneg double %66
%68 = call double @sqrt(double %67)
store double %68, double* %8
%69 = load double, double* %8
%70 = fcmp ole double %69, 5.000000e+00
br i1 %70, label %71, label %103
71: ; preds = %64
%72 = load double, double* %8
%73 = fadd double %72, -1.600000e+00
store double %73, double* %8
%74 = load double, double* %8
%75 = call double @llvm.fmuladd.f64(double %74, double 0x3F49615AC0B7ACE9, double 0x3F9744EB6C45EC67)
%76 = load double, double* %8
%77 = call double @llvm.fmuladd.f64(double %75, double %76, double 0x3FCEF2ABB9B85C37)
%78 = load double, double* %8
%79 = call double @llvm.fmuladd.f64(double %77, double %78, double 0x3FF453CC085375B2)
%80 = load double, double* %8
%81 = call double @llvm.fmuladd.f64(double %79, double %80, double 0x400D2ECB1A3D02C4)
%82 = load double, double* %8
%83 = call double @llvm.fmuladd.f64(double %81, double %82, double 0x401713F71462256A)
%84 = load double, double* %8
%85 = call double @llvm.fmuladd.f64(double %83, double %84, double 0x4012857748CAB19B)
%86 = load double, double* %8
%87 = call double @llvm.fmuladd.f64(double %85, double %86, double 0x3FF6C665FDE9526A)
%88 = load double, double* %8
%89 = call double @llvm.fmuladd.f64(double %88, double 0x3E120D3F686439E4, double 0x3F41F18CBFDF2728)
%90 = load double, double* %8
%91 = call double @llvm.fmuladd.f64(double %89, double %90, double 0x3F8F207A7EAB17BF)
%92 = load double, double* %8
%93 = call double @llvm.fmuladd.f64(double %91, double %92, double 0x3FC2F5123394F040)
%94 = load double, double* %8
%95 = call double @llvm.fmuladd.f64(double %93, double %94, double 0x3FE61292F23385C9)
%96 = load double, double* %8
%97 = call double @llvm.fmuladd.f64(double %95, double %96, double 0x3FFAD278E6526633)
%98 = load double, double* %8
%99 = call double @llvm.fmuladd.f64(double %97, double %98, double 0x40006CEFBB46A449)
%100 = load double, double* %8
%101 = call double @llvm.fmuladd.f64(double %99, double %100, double 1.000000e+00)
%102 = fdiv double %87, %101
store double %102, double* %6
br label %135
103: ; preds = %64
%104 = load double, double* %8
%105 = fadd double %104, -5.000000e+00
store double %105, double* %8
%106 = load double, double* %8
%107 = call double @llvm.fmuladd.f64(double %106, double 0x3E8AFB74D693BF93, double 0x3EFC6EC6CC59E02A)
%108 = load double, double* %8
%109 = call double @llvm.fmuladd.f64(double %107, double %108, double 0x3F545C1908425345)
%110 = load double, double* %8
%111 = call double @llvm.fmuladd.f64(double %109, double %110, double 0x3F9B2B41193B4EE7)
%112 = load double, double* %8
%113 = call double @llvm.fmuladd.f64(double %111, double %112, double 0x3FD2FAD9315255CF)
%114 = load double, double* %8
%115 = call double @llvm.fmuladd.f64(double %113, double %114, double 0x3FFC8EA6461FA445)
%116 = load double, double* %8
%117 = call double @llvm.fmuladd.f64(double %115, double %116, double 0x4015DAEA6E875003)
%118 = load double, double* %8
%119 = call double @llvm.fmuladd.f64(double %117, double %118, double 0x401AA1B1C13EE526)
%120 = load double, double* %8
%121 = call double @llvm.fmuladd.f64(double %120, double 0x3CE269BFF1F8C190, double 0x3E831446F740B9E0)
%122 = load double, double* %8
%123 = call double @llvm.fmuladd.f64(double %121, double %122, double 0x3EF35C2C496374BF)
%124 = load double, double* %8
%125 = call double @llvm.fmuladd.f64(double %123, double %124, double 0x3F49C8BC979DC5D7)
%126 = load double, double* %8
%127 = call double @llvm.fmuladd.f64(double %125, double %126, double 0x3F8E76F93215462A)
%128 = load double, double* %8
%129 = call double @llvm.fmuladd.f64(double %127, double %128, double 0x3FC186EB183443FB)
%130 = load double, double* %8
%131 = call double @llvm.fmuladd.f64(double %129, double %130, double 0x3FE331D34FC7D77F)
%132 = load double, double* %8
%133 = call double @llvm.fmuladd.f64(double %131, double %132, double 1.000000e+00)
%134 = fdiv double %119, %133
store double %134, double* %6
br label %135
135: ; preds = %103, %71
%136 = load double, double* %7
%137 = fcmp olt double %136, 0.000000e+00
br i1 %137, label %138, label %141
138: ; preds = %135
%139 = load double, double* %6
%140 = fneg double %139
store double %140, double* %6
br label %141
141: ; preds = %138, %135
br label %142
142: ; preds = %141, %15
%143 = load double, double* %6
store double %143, double* %3
br label %144
144: ; preds = %142, %62
%145 = load double, double* %3
ret double %145
}

LLVM IR (-O2):
define double @PPND16(double %0, i32* nocapture writeonly %1) {
store i32 0, i32* %1
%3 = fadd double %0, -5.000000e-01
%4 = tail call double @llvm.fabs.f64(double %3)
%5 = fcmp ugt double %4, 4.250000e-01
br i1 %5, label %25, label %6
6: ; preds = %2
%7 = fneg double %3
%8 = tail call double @llvm.fmuladd.f64(double %7, double %3, double 1.806250e-01)
%9 = tail call double @llvm.fmuladd.f64(double %8, double 0x40A39A296F7D925E, double 0x40E052D26B2E45E4)
%10 = tail call double @llvm.fmuladd.f64(double %9, double %8, double 0x40F06C1C55B78F20)
%11 = tail call double @llvm.fmuladd.f64(double %10, double %8, double 0x40E66C3E869B752A)
%12 = tail call double @llvm.fmuladd.f64(double %11, double %8, double 0x40CAD1D8CD4EE71D)
%13 = tail call double @llvm.fmuladd.f64(double %12, double %8, double 0x409ECE5D2213C0CC)
%14 = tail call double @llvm.fmuladd.f64(double %13, double %8, double 0x4060A4888B1A436E)
%15 = tail call double @llvm.fmuladd.f64(double %14, double %8, double 0x400B18D91E9EEF75)
%16 = fmul double %3, %15
%17 = tail call double @llvm.fmuladd.f64(double %8, double 0x40B46A7ECA984B69, double 0x40DC0E457CB1AE76)
%18 = tail call double @llvm.fmuladd.f64(double %17, double %8, double 0x40E3317CAA64F4BE)
%19 = tail call double @llvm.fmuladd.f64(double %18, double %8, double 0x40D4B772D5D65266)
%20 = tail call double @llvm.fmuladd.f64(double %19, double %8, double 0x40B512322E75C89F)
%21 = tail call double @llvm.fmuladd.f64(double %20, double %8, double 0x4085797EFDC8B3F7)
%22 = tail call double @llvm.fmuladd.f64(double %21, double %8, double 0x4045281B386E1AB5)
%23 = tail call double @llvm.fmuladd.f64(double %22, double %8, double 1.000000e+00)
%24 = fdiv double %16, %23
br label %68
25: ; preds = %2
%26 = fcmp olt double %3, 0.000000e+00
%27 = fsub double 1.000000e+00, %0
%28 = select i1 %26, double %0, double %27
%29 = fcmp ugt double %28, 0.000000e+00
br i1 %29, label %31, label %30
30: ; preds = %25
store i32 1, i32* %1
br label %68
31: ; preds = %25
%32 = tail call double @log(double %28)
%33 = fneg double %32
%34 = tail call double @sqrt(double %33)
%35 = fcmp ugt double %34, 5.000000e+00
br i1 %35, label %50, label %36
36: ; preds = %31
%37 = fadd double %34, -1.600000e+00
%38 = insertelement <2 x double> poison, double %37, i64 0
%39 = shufflevector <2 x double> %38, <2 x double> poison, <2 x i32> zeroinitializer
%40 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %39, <2 x double> <double 0x3F49615AC0B7ACE9, double 0x3E120D3F686439E4>, <2 x double> <double 0x3F9744EB6C45EC67, double 0x3F41F18CBFDF2728>)
%41 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %40, <2 x double> %39, <2 x double> <double 0x3FCEF2ABB9B85C37, double 0x3F8F207A7EAB17BF>)
%42 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %41, <2 x double> %39, <2 x double> <double 0x3FF453CC085375B2, double 0x3FC2F5123394F040>)
%43 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %42, <2 x double> %39, <2 x double> <double 0x400D2ECB1A3D02C4, double 0x3FE61292F23385C9>)
%44 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %43, <2 x double> %39, <2 x double> <double 0x401713F71462256A, double 0x3FFAD278E6526633>)
%45 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %44, <2 x double> %39, <2 x double> <double 0x4012857748CAB19B, double 0x40006CEFBB46A449>)
%46 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %45, <2 x double> %39, <2 x double> <double 0x3FF6C665FDE9526A, double 1.000000e+00>)
%47 = extractelement <2 x double> %46, i64 0
%48 = extractelement <2 x double> %46, i64 1
%49 = fdiv double %47, %48
br label %64
50: ; preds = %31
%51 = fadd double %34, -5.000000e+00
%52 = insertelement <2 x double> poison, double %51, i64 0
%53 = shufflevector <2 x double> %52, <2 x double> poison, <2 x i32> zeroinitializer
%54 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %53, <2 x double> <double 0x3E8AFB74D693BF93, double 0x3CE269BFF1F8C190>, <2 x double> <double 0x3EFC6EC6CC59E02A, double 0x3E831446F740B9E0>)
%55 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %54, <2 x double> %53, <2 x double> <double 0x3F545C1908425345, double 0x3EF35C2C496374BF>)
%56 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %55, <2 x double> %53, <2 x double> <double 0x3F9B2B41193B4EE7, double 0x3F49C8BC979DC5D7>)
%57 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %56, <2 x double> %53, <2 x double> <double 0x3FD2FAD9315255CF, double 0x3F8E76F93215462A>)
%58 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %57, <2 x double> %53, <2 x double> <double 0x3FFC8EA6461FA445, double 0x3FC186EB183443FB>)
%59 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %58, <2 x double> %53, <2 x double> <double 0x4015DAEA6E875003, double 0x3FE331D34FC7D77F>)
%60 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %59, <2 x double> %53, <2 x double> <double 0x401AA1B1C13EE526, double 1.000000e+00>)
%61 = extractelement <2 x double> %60, i64 0
%62 = extractelement <2 x double> %60, i64 1
%63 = fdiv double %61, %62
br label %64
64: ; preds = %50, %36
%65 = phi double [ %49, %36 ], [ %63, %50 ]
br i1 %26, label %66, label %68
66: ; preds = %64
%67 = fneg double %65
br label %68
68: ; preds = %6, %66, %64, %30
%69 = phi double [ 0.000000e+00, %30 ], [ %24, %6 ], [ %67, %66 ], [ %65, %64 ]
ret double %69
}