double cdflib_error_f(double *x) {
  static const double c = .564189583547756e0;
  static const double a[5] = {.771058495001320e-04, -.133733772997339e-02,
                              .323076579225834e-01, .479137145607681e-01,
                              .128379167095513e+00};
  static const double b[3] = {.301048631703895e-02, .538971687740286e-01,
                              .375795757275549e+00};
  static const double p[8] = {-1.36864857382717e-07, 5.64195517478974e-01,
                              7.21175825088309e+00,  4.31622272220567e+01,
                              1.52989285046940e+02,  3.39320816734344e+02,
                              4.51918953711873e+02,  3.00459261020162e+02};
  static const double q[8] = {1.00000000000000e+00, 1.27827273196294e+01,
                              7.70001529352295e+01, 2.77585444743988e+02,
                              6.38980264465631e+02, 9.31354094850610e+02,
                              7.90950925327898e+02, 3.00459260956983e+02};
  static const double r[5] = {2.10144126479064e+00, 2.62370141675169e+01,
                              2.13688200555087e+01, 4.65807828718470e+00,
                              2.82094791773523e-01};
  static const double s[4] = {9.41537750555460e+01, 1.87114811799590e+02,
                              9.90191814623914e+01, 1.80124575948747e+01};
  double erf1, ax, bot, t, top, x2;
  ax = fabs(*x);
  if (ax > 0.5e0) {
    goto S10;
  }
  t = *x * *x;
  top = (((a[0] * t + a[1]) * t + a[2]) * t + a[3]) * t + a[4] + 1.0e0;
  bot = ((b[0] * t + b[1]) * t + b[2]) * t + 1.0e0;
  erf1 = *x * (top / bot);
  return erf1;
S10:
  if (ax > 4.0e0) {
    goto S20;
  }
  top = ((((((p[0] * ax + p[1]) * ax + p[2]) * ax + p[3]) * ax + p[4]) * ax +
          p[5]) *
             ax +
         p[6]) *
            ax +
        p[7];
  bot = ((((((q[0] * ax + q[1]) * ax + q[2]) * ax + q[3]) * ax + q[4]) * ax +
          q[5]) *
             ax +
         q[6]) *
            ax +
        q[7];
  erf1 = 0.5e0 + (0.5e0 - exp(-(*x * *x)) * top / bot);
  if (*x < 0.0e0) {
    erf1 = -erf1;
  }
  return erf1;
S20:
  if (ax >= 5.8e0) {
    goto S30;
  }
  x2 = *x * *x;
  t = 1.0e0 / x2;
  top = (((r[0] * t + r[1]) * t + r[2]) * t + r[3]) * t + r[4];
  bot = (((s[0] * t + s[1]) * t + s[2]) * t + s[3]) * t + 1.0e0;
  erf1 = (c - top / (x2 * bot)) / ax;
  erf1 = 0.5e0 + (0.5e0 - exp(-x2) * erf1);
  if (*x < 0.0e0) {
    erf1 = -erf1;
  }
  return erf1;
S30:
  erf1 = cdflib_fifdsign(1.0e0, *x);
  return erf1;
}


x86 assembly (clang, -O0):
<cdflib_error_f>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movaps 0xef5(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  0xeaf(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1160 <cdflib_error_f+0x40>
jmp    1258 <cdflib_error_f+0x138>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xed3(%rip),%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xece(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xec1(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xeb4(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xea7(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xe2f(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xe96(%rip),%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xe91(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xe84(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xde3(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x38(%rbp),%xmm1
divsd  -0x28(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1642 <cdflib_error_f+0x522>
movsd  -0x20(%rbp),%xmm0
movsd  0xdab(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1274 <cdflib_error_f+0x154>
jmp    1448 <cdflib_error_f+0x328>
movsd  0xe24(%rip),%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  0xe1f(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  0xe12(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  0xe05(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  0xdf8(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  0xdeb(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  0xdde(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  0xdd1(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xdc4(%rip),%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  0xdbf(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  0xdb2(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  0xda5(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  0xd98(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  0xd8b(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  0xd7e(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  0xd71(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <exp@plt>
mulsd  -0x38(%rbp),%xmm0
divsd  -0x28(%rbp),%xmm0
movsd  0xc0e(%rip),%xmm1
subsd  %xmm0,%xmm1
movsd  0xc02(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jbe    1439 <cdflib_error_f+0x319>
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1642 <cdflib_error_f+0x522>
movsd  -0x20(%rbp),%xmm0
movsd  0xbc3(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1464 <cdflib_error_f+0x344>
jmp    1618 <cdflib_error_f+0x4f8>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xb87(%rip),%xmm0
divsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xc8d(%rip),%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xc88(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xc7b(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xc6e(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xc61(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xc5c(%rip),%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xc57(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xc4a(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xc3d(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xac4(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x38(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
divsd  %xmm0,%xmm1
movsd  0xab8(%rip),%xmm0
subsd  %xmm1,%xmm0
divsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x40(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x18(%rbp),%xmm0
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm0,%xmm1
movsd  0xa3e(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0xa32(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jbe    1609 <cdflib_error_f+0x4e9>
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1642 <cdflib_error_f+0x522>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
movsd  0x9e0(%rip),%xmm0
mov    $0x2,%al
call   1030 <cdflib_fifdsign@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cdflib_error_f>:
push   %rbx
sub    $0x10,%rsp
movsd  (%rdi),%xmm1
movapd 0xecf(%rip),%xmm0
andpd  %xmm1,%xmm0
ucomisd 0xee3(%rip),%xmm0
jbe    121a <cdflib_error_f+0xfa>
mov    %rdi,%rbx
ucomisd 0xf22(%rip),%xmm0
jbe    129b <cdflib_error_f+0x17b>
ucomisd 0xf94(%rip),%xmm0
jae    13b5 <cdflib_error_f+0x295>
mulsd  %xmm1,%xmm1
movsd  0xee2(%rip),%xmm3
movapd %xmm3,%xmm4
divsd  %xmm1,%xmm4
movsd  0xf7a(%rip),%xmm2
mulsd  %xmm4,%xmm2
addsd  0xf76(%rip),%xmm2
mulsd  %xmm4,%xmm2
addsd  0xf72(%rip),%xmm2
mulsd  %xmm4,%xmm2
addsd  0xf6e(%rip),%xmm2
mulsd  %xmm4,%xmm2
addsd  0xf6a(%rip),%xmm2
movsd  0xf6a(%rip),%xmm5
mulsd  %xmm4,%xmm5
addsd  0xf66(%rip),%xmm5
mulsd  %xmm4,%xmm5
addsd  0xf62(%rip),%xmm5
mulsd  %xmm4,%xmm5
addsd  0xf5e(%rip),%xmm5
mulsd  %xmm4,%xmm5
addsd  %xmm3,%xmm5
mulsd  %xmm1,%xmm5
divsd  %xmm5,%xmm2
movsd  0xf4e(%rip),%xmm3
subsd  %xmm2,%xmm3
divsd  %xmm0,%xmm3
movsd  %xmm3,(%rsp)
xorpd  0xe09(%rip),%xmm1
movapd %xmm1,%xmm0
call   1040 <exp@plt>
mulsd  (%rsp),%xmm0
jmp    1376 <cdflib_error_f+0x256>
movapd %xmm1,%xmm2
mulsd  %xmm1,%xmm2
movsd  0xdfe(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xdfa(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xdf6(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xdf2(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xdee(%rip),%xmm0
movsd  0xdee(%rip),%xmm3
movsd  0xdee(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  0xdea(%rip),%xmm4
addsd  %xmm3,%xmm0
mulsd  %xmm2,%xmm4
addsd  0xde2(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  %xmm3,%xmm4
divsd  %xmm4,%xmm0
mulsd  %xmm1,%xmm0
jmp    13cb <cdflib_error_f+0x2ab>
movsd  0xdd5(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xdd1(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xdcd(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xdc9(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xdc5(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xdc1(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xdbd(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xdb9(%rip),%xmm2
movsd  %xmm2,(%rsp)
movsd  0xdb4(%rip),%xmm2
addsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
addsd  0xdac(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xda8(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xda4(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xda0(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xd9c(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xd98(%rip),%xmm2
movsd  %xmm2,0x8(%rsp)
movapd %xmm1,%xmm0
xorpd  0xcae(%rip),%xmm0
mulsd  %xmm1,%xmm0
call   1040 <exp@plt>
mulsd  (%rsp),%xmm0
divsd  0x8(%rsp),%xmm0
movsd  0xca2(%rip),%xmm1
movapd %xmm1,%xmm2
subsd  %xmm0,%xmm2
addsd  %xmm1,%xmm2
movsd  (%rbx),%xmm0
movapd 0xc7a(%rip),%xmm3
xorpd  %xmm2,%xmm3
xorpd  %xmm1,%xmm1
cmpltsd %xmm1,%xmm0
movapd %xmm0,%xmm1
andnpd %xmm2,%xmm1
andpd  %xmm3,%xmm0
orpd   %xmm1,%xmm0
jmp    13cb <cdflib_error_f+0x2ab>
movsd  0xc93(%rip),%xmm0
mov    $0x2,%al
call   1030 <cdflib_fifdsign@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
add    $0x10,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@cdflib_error_f.c = internal constant double 0x3FE20DD750429B6A
@cdflib_error_f.a = internal constant [5 x double] [double 0x3F14367C68613852, double 0xBF55E9337417A2A8, double 0x3FA08AA11C602E02, double 0x3FA888257A230271, double 0x3FC06EBA8214DB78]
@cdflib_error_f.b = internal constant [3 x double] [double 0x3F68A97288DB092F, double 0x3FAB9868E2767FFE, double 0x3FD80D09A5DE569F]
@cdflib_error_f.p = internal constant [8 x double] [double 0xBE825EA4045ABDE7, double 0x3FE20DE3C203E757, double 0x401CD8D727A8CDDC, double 0x404594C3DC92A092, double 0x40631FA8391D60EF, double 0x4075352210BA6046, double 0x407C3EB408CEB084, double 0x4072C75922155EC6]
@cdflib_error_f.q = internal constant [8 x double] [double 1.000000e+00, double 0x402990C1A29EFCEF, double 0x405340028174F3C8, double 0x4071595DFB4ED0B2, double 0x4083F7D794E56A87, double 0x408D1AD52FAE586A, double 0x4088B79B7EBD0214, double 0x4072C75922046925]
@cdflib_error_f.r = internal constant [5 x double] [double 0x4000CFC07015ECE7, double 0x403A3CACF5E22C7B, double 0x40355E6AFDBC84CE, double 0x4012A1DF4646A9F7, double 0x3FD20DD75042826F]
@cdflib_error_f.s = internal constant [4 x double] [double 0x405789D77354A0AF, double 0x406763AC89CB8DE3, double 0x4058C13A44E26A46, double 0x403203306BC292DB]
define double @cdflib_error_f(double* %0) {
%2 = alloca double
%3 = alloca double*
%4 = alloca double
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
store double* %0, double** %3
%10 = load double*, double** %3
%11 = load double, double* %10
%12 = call double @llvm.fabs.f64(double %11)
store double %12, double* %5
%13 = load double, double* %5
%14 = fcmp ogt double %13, 5.000000e-01
br i1 %14, label %15, label %16
15: ; preds = %1
br label %52
16: ; preds = %1
%17 = load double*, double** %3
%18 = load double, double* %17
%19 = load double*, double** %3
%20 = load double, double* %19
%21 = fmul double %18, %20
store double %21, double* %7
%22 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_f.a, i64 0, i64 0)
%23 = load double, double* %7
%24 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_f.a, i64 0, i64 1)
%25 = call double @llvm.fmuladd.f64(double %22, double %23, double %24)
%26 = load double, double* %7
%27 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_f.a, i64 0, i64 2)
%28 = call double @llvm.fmuladd.f64(double %25, double %26, double %27)
%29 = load double, double* %7
%30 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_f.a, i64 0, i64 3)
%31 = call double @llvm.fmuladd.f64(double %28, double %29, double %30)
%32 = load double, double* %7
%33 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_f.a, i64 0, i64 4)
%34 = call double @llvm.fmuladd.f64(double %31, double %32, double %33)
%35 = fadd double %34, 1.000000e+00
store double %35, double* %8
%36 = load double, double* getelementptr inbounds ([3 x double], [3 x double]* @cdflib_error_f.b, i64 0, i64 0)
%37 = load double, double* %7
%38 = load double, double* getelementptr inbounds ([3 x double], [3 x double]* @cdflib_error_f.b, i64 0, i64 1)
%39 = call double @llvm.fmuladd.f64(double %36, double %37, double %38)
%40 = load double, double* %7
%41 = load double, double* getelementptr inbounds ([3 x double], [3 x double]* @cdflib_error_f.b, i64 0, i64 2)
%42 = call double @llvm.fmuladd.f64(double %39, double %40, double %41)
%43 = load double, double* %7
%44 = call double @llvm.fmuladd.f64(double %42, double %43, double 1.000000e+00)
store double %44, double* %6
%45 = load double*, double** %3
%46 = load double, double* %45
%47 = load double, double* %8
%48 = load double, double* %6
%49 = fdiv double %47, %48
%50 = fmul double %46, %49
store double %50, double* %4
%51 = load double, double* %4
store double %51, double* %2
br label %188
52: ; preds = %15
%53 = load double, double* %5
%54 = fcmp ogt double %53, 4.000000e+00
br i1 %54, label %55, label %56
55: ; preds = %52
br label %122
56: ; preds = %52
%57 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_f.p, i64 0, i64 0)
%58 = load double, double* %5
%59 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_f.p, i64 0, i64 1)
%60 = call double @llvm.fmuladd.f64(double %57, double %58, double %59)
%61 = load double, double* %5
%62 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_f.p, i64 0, i64 2)
%63 = call double @llvm.fmuladd.f64(double %60, double %61, double %62)
%64 = load double, double* %5
%65 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_f.p, i64 0, i64 3)
%66 = call double @llvm.fmuladd.f64(double %63, double %64, double %65)
%67 = load double, double* %5
%68 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_f.p, i64 0, i64 4)
%69 = call double @llvm.fmuladd.f64(double %66, double %67, double %68)
%70 = load double, double* %5
%71 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_f.p, i64 0, i64 5)
%72 = call double @llvm.fmuladd.f64(double %69, double %70, double %71)
%73 = load double, double* %5
%74 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_f.p, i64 0, i64 6)
%75 = call double @llvm.fmuladd.f64(double %72, double %73, double %74)
%76 = load double, double* %5
%77 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_f.p, i64 0, i64 7)
%78 = call double @llvm.fmuladd.f64(double %75, double %76, double %77)
store double %78, double* %8
%79 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_f.q, i64 0, i64 0)
%80 = load double, double* %5
%81 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_f.q, i64 0, i64 1)
%82 = call double @llvm.fmuladd.f64(double %79, double %80, double %81)
%83 = load double, double* %5
%84 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_f.q, i64 0, i64 2)
%85 = call double @llvm.fmuladd.f64(double %82, double %83, double %84)
%86 = load double, double* %5
%87 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_f.q, i64 0, i64 3)
%88 = call double @llvm.fmuladd.f64(double %85, double %86, double %87)
%89 = load double, double* %5
%90 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_f.q, i64 0, i64 4)
%91 = call double @llvm.fmuladd.f64(double %88, double %89, double %90)
%92 = load double, double* %5
%93 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_f.q, i64 0, i64 5)
%94 = call double @llvm.fmuladd.f64(double %91, double %92, double %93)
%95 = load double, double* %5
%96 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_f.q, i64 0, i64 6)
%97 = call double @llvm.fmuladd.f64(double %94, double %95, double %96)
%98 = load double, double* %5
%99 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_f.q, i64 0, i64 7)
%100 = call double @llvm.fmuladd.f64(double %97, double %98, double %99)
store double %100, double* %6
%101 = load double*, double** %3
%102 = load double, double* %101
%103 = load double*, double** %3
%104 = load double, double* %103
%105 = fmul double %102, %104
%106 = fneg double %105
%107 = call double @exp(double %106)
%108 = load double, double* %8
%109 = fmul double %107, %108
%110 = load double, double* %6
%111 = fdiv double %109, %110
%112 = fsub double 5.000000e-01, %111
%113 = fadd double 5.000000e-01, %112
store double %113, double* %4
%114 = load double*, double** %3
%115 = load double, double* %114
%116 = fcmp olt double %115, 0.000000e+00
br i1 %116, label %117, label %120
117: ; preds = %56
%118 = load double, double* %4
%119 = fneg double %118
store double %119, double* %4
br label %120
120: ; preds = %117, %56
%121 = load double, double* %4
store double %121, double* %2
br label %188
122: ; preds = %55
%123 = load double, double* %5
%124 = fcmp oge double %123, 5.800000e+00
br i1 %124, label %125, label %126
125: ; preds = %122
br label %182
126: ; preds = %122
%127 = load double*, double** %3
%128 = load double, double* %127
%129 = load double*, double** %3
%130 = load double, double* %129
%131 = fmul double %128, %130
store double %131, double* %9
%132 = load double, double* %9
%133 = fdiv double 1.000000e+00, %132
store double %133, double* %7
%134 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_f.r, i64 0, i64 0)
%135 = load double, double* %7
%136 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_f.r, i64 0, i64 1)
%137 = call double @llvm.fmuladd.f64(double %134, double %135, double %136)
%138 = load double, double* %7
%139 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_f.r, i64 0, i64 2)
%140 = call double @llvm.fmuladd.f64(double %137, double %138, double %139)
%141 = load double, double* %7
%142 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_f.r, i64 0, i64 3)
%143 = call double @llvm.fmuladd.f64(double %140, double %141, double %142)
%144 = load double, double* %7
%145 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_f.r, i64 0, i64 4)
%146 = call double @llvm.fmuladd.f64(double %143, double %144, double %145)
store double %146, double* %8
%147 = load double, double* getelementptr inbounds ([4 x double], [4 x double]* @cdflib_error_f.s, i64 0, i64 0)
%148 = load double, double* %7
%149 = load double, double* getelementptr inbounds ([4 x double], [4 x double]* @cdflib_error_f.s, i64 0, i64 1)
%150 = call double @llvm.fmuladd.f64(double %147, double %148, double %149)
%151 = load double, double* %7
%152 = load double, double* getelementptr inbounds ([4 x double], [4 x double]* @cdflib_error_f.s, i64 0, i64 2)
%153 = call double @llvm.fmuladd.f64(double %150, double %151, double %152)
%154 = load double, double* %7
%155 = load double, double* getelementptr inbounds ([4 x double], [4 x double]* @cdflib_error_f.s, i64 0, i64 3)
%156 = call double @llvm.fmuladd.f64(double %153, double %154, double %155)
%157 = load double, double* %7
%158 = call double @llvm.fmuladd.f64(double %156, double %157, double 1.000000e+00)
store double %158, double* %6
%159 = load double, double* %8
%160 = load double, double* %9
%161 = load double, double* %6
%162 = fmul double %160, %161
%163 = fdiv double %159, %162
%164 = fsub double 0x3FE20DD750429B6A, %163
%165 = load double, double* %5
%166 = fdiv double %164, %165
store double %166, double* %4
%167 = load double, double* %9
%168 = fneg double %167
%169 = call double @exp(double %168)
%170 = load double, double* %4
%171 = fneg double %169
%172 = call double @llvm.fmuladd.f64(double %171, double %170, double 5.000000e-01)
%173 = fadd double 5.000000e-01, %172
store double %173, double* %4
%174 = load double*, double** %3
%175 = load double, double* %174
%176 = fcmp olt double %175, 0.000000e+00
br i1 %176, label %177, label %180
177: ; preds = %126
%178 = load double, double* %4
%179 = fneg double %178
store double %179, double* %4
br label %180
180: ; preds = %177, %126
%181 = load double, double* %4
store double %181, double* %2
br label %188
182: ; preds = %125
%183 = load double*, double** %3
%184 = load double, double* %183
%185 = call i32 (double, double, ...) bitcast (i32 (...)* @cdflib_fifdsign to i32 (double, double, ...)*)(double 1.000000e+00, double %184)
%186 = sitofp i32 %185 to double
store double %186, double* %4
%187 = load double, double* %4
store double %187, double* %2
br label %188
188: ; preds = %182, %180, %120, %16
%189 = load double, double* %2
ret double %189
}

LLVM IR (-O2):
define double @cdflib_error_f(double* nocapture %0) {
%2 = load double, double* %0
%3 = tail call double @llvm.fabs.f64(double %2)
%4 = fcmp ogt double %3, 5.000000e-01
br i1 %4, label %17, label %5
5: ; preds = %1
%6 = fmul double %2, %2
%7 = tail call double @llvm.fmuladd.f64(double %6, double 0x3F14367C68613852, double 0xBF55E9337417A2A8)
%8 = tail call double @llvm.fmuladd.f64(double %7, double %6, double 0x3FA08AA11C602E02)
%9 = tail call double @llvm.fmuladd.f64(double %8, double %6, double 0x3FA888257A230271)
%10 = tail call double @llvm.fmuladd.f64(double %9, double %6, double 0x3FC06EBA8214DB78)
%11 = fadd double %10, 1.000000e+00
%12 = tail call double @llvm.fmuladd.f64(double %6, double 0x3F68A97288DB092F, double 0x3FAB9868E2767FFE)
%13 = tail call double @llvm.fmuladd.f64(double %12, double %6, double 0x3FD80D09A5DE569F)
%14 = tail call double @llvm.fmuladd.f64(double %13, double %6, double 1.000000e+00)
%15 = fdiv double %11, %14
%16 = fmul double %2, %15
br label %74
17: ; preds = %1
%18 = fcmp ogt double %3, 4.000000e+00
br i1 %18, label %45, label %19
19: ; preds = %17
%20 = tail call double @llvm.fmuladd.f64(double %3, double 0xBE825EA4045ABDE7, double 0x3FE20DE3C203E757)
%21 = tail call double @llvm.fmuladd.f64(double %20, double %3, double 0x401CD8D727A8CDDC)
%22 = tail call double @llvm.fmuladd.f64(double %21, double %3, double 0x404594C3DC92A092)
%23 = tail call double @llvm.fmuladd.f64(double %22, double %3, double 0x40631FA8391D60EF)
%24 = tail call double @llvm.fmuladd.f64(double %23, double %3, double 0x4075352210BA6046)
%25 = tail call double @llvm.fmuladd.f64(double %24, double %3, double 0x407C3EB408CEB084)
%26 = tail call double @llvm.fmuladd.f64(double %25, double %3, double 0x4072C75922155EC6)
%27 = fadd double %3, 0x402990C1A29EFCEF
%28 = tail call double @llvm.fmuladd.f64(double %27, double %3, double 0x405340028174F3C8)
%29 = tail call double @llvm.fmuladd.f64(double %28, double %3, double 0x4071595DFB4ED0B2)
%30 = tail call double @llvm.fmuladd.f64(double %29, double %3, double 0x4083F7D794E56A87)
%31 = tail call double @llvm.fmuladd.f64(double %30, double %3, double 0x408D1AD52FAE586A)
%32 = tail call double @llvm.fmuladd.f64(double %31, double %3, double 0x4088B79B7EBD0214)
%33 = tail call double @llvm.fmuladd.f64(double %32, double %3, double 0x4072C75922046925)
%34 = fneg double %2
%35 = fmul double %2, %34
%36 = tail call double @exp(double %35)
%37 = fmul double %26, %36
%38 = fdiv double %37, %33
%39 = fsub double 5.000000e-01, %38
%40 = fadd double %39, 5.000000e-01
%41 = load double, double* %0
%42 = fcmp olt double %41, 0.000000e+00
%43 = fneg double %40
%44 = select i1 %42, double %43, double %40
br label %74
45: ; preds = %17
%46 = fcmp ult double %3, 5.800000e+00
br i1 %46, label %47, label %71
47: ; preds = %45
%48 = fmul double %2, %2
%49 = fdiv double 1.000000e+00, %48
%50 = tail call double @llvm.fmuladd.f64(double %49, double 0x4000CFC07015ECE7, double 0x403A3CACF5E22C7B)
%51 = tail call double @llvm.fmuladd.f64(double %50, double %49, double 0x40355E6AFDBC84CE)
%52 = tail call double @llvm.fmuladd.f64(double %51, double %49, double 0x4012A1DF4646A9F7)
%53 = tail call double @llvm.fmuladd.f64(double %52, double %49, double 0x3FD20DD75042826F)
%54 = tail call double @llvm.fmuladd.f64(double %49, double 0x405789D77354A0AF, double 0x406763AC89CB8DE3)
%55 = tail call double @llvm.fmuladd.f64(double %54, double %49, double 0x4058C13A44E26A46)
%56 = tail call double @llvm.fmuladd.f64(double %55, double %49, double 0x403203306BC292DB)
%57 = tail call double @llvm.fmuladd.f64(double %56, double %49, double 1.000000e+00)
%58 = fmul double %48, %57
%59 = fdiv double %53, %58
%60 = fsub double 0x3FE20DD750429B6A, %59
%61 = fdiv double %60, %3
%62 = fneg double %48
%63 = tail call double @exp(double %62)
%64 = fneg double %63
%65 = tail call double @llvm.fmuladd.f64(double %64, double %61, double 5.000000e-01)
%66 = fadd double %65, 5.000000e-01
%67 = load double, double* %0
%68 = fcmp olt double %67, 0.000000e+00
%69 = fneg double %66
%70 = select i1 %68, double %69, double %66
br label %74
71: ; preds = %45
%72 = tail call i32 (double, double, ...) bitcast (i32 (...)* @cdflib_fifdsign to i32 (double, double, ...)*)(double 1.000000e+00, double %2)
%73 = sitofp i32 %72 to double
br label %74
74: ; preds = %71, %47, %19, %5
%75 = phi double [ %73, %71 ], [ %70, %47 ], [ %44, %19 ], [ %16, %5 ]
ret double %75
}