double cdflib_error_fc(const int *ind, 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};
  static const int K1 = 1;
  double erfc1, ax, bot, e, t, top, w;
  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;
  erfc1 = 0.5e0 + (0.5e0 - *x * (top / bot));
  if (*ind != 0) {
    erfc1 = exp(t) * erfc1;
  }
  return erfc1;
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];
  erfc1 = top / bot;
  goto S40;
S20:
  if (*x <= -5.6e0) {
    goto S60;
  }
  if (*ind != 0) {
    goto S30;
  }
  if (*x > 100.0e0) {
    goto S70;
  }
  if (*x * *x > -cdflib_exparg(&K1)) {
    goto S70;
  }
S30:
  t = pow(1.0e0 / *x, 2.0);
  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;
  erfc1 = (c - t * top / bot) / ax;
S40:
  if (*ind == 0) {
    goto S50;
  }
  if (*x < 0.0e0) {
    erfc1 = 2.0e0 * exp(*x * *x) - erfc1;
  }
  return erfc1;
S50:
  w = *x * *x;
  t = w;
  e = w - t;
  erfc1 = (0.5e0 + (0.5e0 - e)) * exp(-t) * erfc1;
  if (*x < 0.0e0) {
    erfc1 = 2.0e0 - erfc1;
  }
  return erfc1;
S60:
  erfc1 = 2.0e0;
  if (*ind != 0) {
    erfc1 = 2.0e0 * exp(*x * *x);
  }
  return erfc1;
S70:
  erfc1 = 0.0e0;
  return erfc1;
}


x86 assembly (clang, -O0):
<cdflib_error_fc>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movaps 0xef1(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  0xe9b(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1174 <cdflib_error_fc+0x44>
jmp    12bc <cdflib_error_fc+0x18c>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xecf(%rip),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  0xeca(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  0xebd(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  0xeb0(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  0xea3(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xe1b(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xe92(%rip),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  0xe8d(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  0xe80(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdcf(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x48(%rbp),%xmm0
divsd  -0x30(%rbp),%xmm0
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm0,%xmm1
movsd  0xd89(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0xd7d(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x10(%rbp),%rax
cmpl   $0x0,(%rax)
je     12ad <cdflib_error_fc+0x17d>
movsd  -0x40(%rbp),%xmm0
call   1030 <exp@plt>
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1750 <cdflib_error_fc+0x620>
movsd  -0x28(%rbp),%xmm0
movsd  0xd47(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    12d8 <cdflib_error_fc+0x1a8>
jmp    142c <cdflib_error_fc+0x2fc>
movsd  0xdd0(%rip),%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0xdcb(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0xdbe(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0xdb1(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0xda4(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0xd97(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0xd8a(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0xd7d(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xd70(%rip),%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0xd6b(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0xd5e(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0xd51(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0xd44(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0xd37(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0xd2a(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0xd1d(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x48(%rbp),%xmm0
divsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
jmp    15c7 <cdflib_error_fc+0x497>
mov    -0x18(%rbp),%rax
movsd  0xbe0(%rip),%xmm0
ucomisd (%rax),%xmm0
jb     1447 <cdflib_error_fc+0x317>
jmp    16ec <cdflib_error_fc+0x5bc>
mov    -0x10(%rbp),%rax
cmpl   $0x0,(%rax)
je     1459 <cdflib_error_fc+0x329>
jmp    14be <cdflib_error_fc+0x38e>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xbb7(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1478 <cdflib_error_fc+0x348>
jmp    173e <cdflib_error_fc+0x60e>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
lea    0xcec(%rip),%rdi
mov    $0x0,%al
call   1050 <cdflib_exparg@plt>
movsd  -0x58(%rbp),%xmm0
mov    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
cvtsi2sd %eax,%xmm1
ucomisd %xmm1,%xmm0
jbe    14b9 <cdflib_error_fc+0x389>
jmp    173e <cdflib_error_fc+0x60e>
jmp    14be <cdflib_error_fc+0x38e>
mov    -0x18(%rbp),%rax
movsd  0xb3e(%rip),%xmm0
divsd  (%rax),%xmm0
movsd  0xb5a(%rip),%xmm1
call   1040 <pow@plt>
movsd  %xmm0,-0x40(%rbp)
movsd  0xc48(%rip),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  0xc43(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  0xc36(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  0xc29(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  0xc1c(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xc17(%rip),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  0xc12(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  0xc05(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  0xbf8(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa6f(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x40(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
divsd  -0x30(%rbp),%xmm1
movsd  0xa6f(%rip),%xmm0
subsd  %xmm1,%xmm0
divsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x10(%rbp),%rax
cmpl   $0x0,(%rax)
jne    15d9 <cdflib_error_fc+0x4a9>
jmp    1637 <cdflib_error_fc+0x507>
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jbe    1628 <cdflib_error_fc+0x4f8>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
mulsd  (%rax),%xmm0
call   1030 <exp@plt>
movsd  -0x20(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1750 <cdflib_error_fc+0x620>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x50(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x993(%rip),%xmm1
subsd  -0x38(%rbp),%xmm1
movsd  0x986(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x40(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x60(%rbp),%xmm0
mulsd  %xmm1,%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jbe    16dd <cdflib_error_fc+0x5ad>
movsd  0x95d(%rip),%xmm0
subsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1750 <cdflib_error_fc+0x620>
movsd  0x93c(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x10(%rbp),%rax
cmpl   $0x0,(%rax)
je     172f <cdflib_error_fc+0x5ff>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
mulsd  (%rax),%xmm0
call   1030 <exp@plt>
movaps %xmm0,%xmm1
movsd  0x90a(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1750 <cdflib_error_fc+0x620>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cdflib_error_fc>:
push   %r14
push   %rbx
sub    $0x28,%rsp
mov    %rdi,%r14
movsd  (%rsi),%xmm4
movapd 0xeca(%rip),%xmm5
andpd  %xmm4,%xmm5
ucomisd 0xf3e(%rip),%xmm5
jbe    1295 <cdflib_error_fc+0x175>
mov    %rsi,%rbx
ucomisd 0xf7d(%rip),%xmm5
jbe    1347 <cdflib_error_fc+0x227>
movsd  0xf8f(%rip),%xmm0
ucomisd %xmm4,%xmm0
mov    (%r14),%eax
jae    13f8 <cdflib_error_fc+0x2d8>
test   %eax,%eax
je     1413 <cdflib_error_fc+0x2f3>
movsd  0xf32(%rip),%xmm2
movapd %xmm2,%xmm1
divsd  %xmm4,%xmm1
mulsd  %xmm1,%xmm1
movsd  0xf76(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xf72(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xf6e(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xf6a(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xf66(%rip),%xmm0
movsd  0xf66(%rip),%xmm3
mulsd  %xmm1,%xmm3
addsd  0xf62(%rip),%xmm3
mulsd  %xmm1,%xmm3
addsd  0xf5e(%rip),%xmm3
mulsd  %xmm1,%xmm3
addsd  0xf5a(%rip),%xmm3
mulsd  %xmm1,%xmm3
addsd  %xmm2,%xmm3
mulsd  %xmm1,%xmm0
divsd  %xmm3,%xmm0
movsd  0xf4a(%rip),%xmm3
subsd  %xmm0,%xmm3
divsd  %xmm5,%xmm3
cmpl   $0x0,(%r14)
jne    13cd <cdflib_error_fc+0x2ad>
mulsd  %xmm4,%xmm4
movapd %xmm4,%xmm1
subsd  %xmm4,%xmm1
movsd  0xe54(%rip),%xmm0
addsd  %xmm0,%xmm1
addsd  %xmm0,%xmm1
movapd %xmm1,0x10(%rsp)
xorpd  0xe2e(%rip),%xmm4
movapd %xmm4,%xmm0
movapd %xmm3,(%rsp)
call   1030 <exp@plt>
mulsd  0x10(%rsp),%xmm0
movapd (%rsp),%xmm2
mulsd  %xmm0,%xmm2
movsd  (%rbx),%xmm0
movsd  0xe8d(%rip),%xmm1
subsd  %xmm2,%xmm1
movapd %xmm2,%xmm3
xorpd  %xmm2,%xmm2
cmpltsd %xmm2,%xmm0
movapd %xmm0,%xmm2
andnpd %xmm3,%xmm2
andpd  %xmm1,%xmm0
orpd   %xmm2,%xmm0
movapd %xmm0,%xmm3
jmp    146d <cdflib_error_fc+0x34d>
movapd %xmm4,%xmm0
mulsd  %xmm4,%xmm0
movsd  0xde3(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xddf(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xddb(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xdd7(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xdd3(%rip),%xmm1
movsd  0xdd3(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  0xdcf(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  0xdcb(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  0xdc7(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  %xmm2,%xmm3
divsd  %xmm3,%xmm1
mulsd  %xmm4,%xmm1
movsd  0xd67(%rip),%xmm2
movapd %xmm2,%xmm3
subsd  %xmm1,%xmm3
addsd  %xmm2,%xmm3
cmpl   $0x0,(%r14)
je     146d <cdflib_error_fc+0x34d>
movapd %xmm3,(%rsp)
call   1030 <exp@plt>
movapd (%rsp),%xmm3
mulsd  %xmm0,%xmm3
jmp    146d <cdflib_error_fc+0x34d>
movsd  0xd89(%rip),%xmm3
mulsd  %xmm5,%xmm3
addsd  0xd85(%rip),%xmm3
movapd %xmm5,%xmm0
addsd  0xd81(%rip),%xmm0
unpcklpd %xmm0,%xmm3
unpcklpd %xmm5,%xmm5
mulpd  %xmm5,%xmm3
addpd  0xc95(%rip),%xmm3
mulpd  %xmm5,%xmm3
addpd  0xc99(%rip),%xmm3
mulpd  %xmm5,%xmm3
addpd  0xc9d(%rip),%xmm3
mulpd  %xmm5,%xmm3
addpd  0xca1(%rip),%xmm3
mulpd  %xmm5,%xmm3
addpd  0xca5(%rip),%xmm3
mulpd  %xmm5,%xmm3
addpd  0xca9(%rip),%xmm3
movapd %xmm3,%xmm0
unpckhpd %xmm3,%xmm0
divsd  %xmm0,%xmm3
cmpl   $0x0,(%r14)
je     1218 <cdflib_error_fc+0xf8>
xorpd  %xmm0,%xmm0
ucomisd %xmm4,%xmm0
jbe    146d <cdflib_error_fc+0x34d>
mulsd  %xmm4,%xmm4
movapd %xmm4,%xmm0
movapd %xmm3,(%rsp)
call   1030 <exp@plt>
addsd  %xmm0,%xmm0
subsd  (%rsp),%xmm0
jmp    1471 <cdflib_error_fc+0x351>
test   %eax,%eax
je     1465 <cdflib_error_fc+0x345>
mulsd  %xmm4,%xmm4
movapd %xmm4,%xmm0
call   1030 <exp@plt>
movapd %xmm0,%xmm3
addsd  %xmm0,%xmm3
jmp    146d <cdflib_error_fc+0x34d>
xorpd  %xmm3,%xmm3
ucomisd 0xce1(%rip),%xmm4
ja     146d <cdflib_error_fc+0x34d>
movapd %xmm5,0x10(%rsp)
mulsd  %xmm4,%xmm4
movapd %xmm4,(%rsp)
lea    0xd21(%rip),%rdi
xor    %eax,%eax
call   1040 <cdflib_exparg@plt>
xorpd  %xmm3,%xmm3
neg    %eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movapd (%rsp),%xmm1
ucomisd %xmm0,%xmm1
ja     146d <cdflib_error_fc+0x34d>
movsd  (%rbx),%xmm4
movapd 0x10(%rsp),%xmm5
jmp    1176 <cdflib_error_fc+0x56>
movsd  0xc8b(%rip),%xmm3
movapd %xmm3,%xmm0
add    $0x28,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
@cdflib_error_fc.c = internal constant double 0x3FE20DD750429B6A
@cdflib_error_fc.a = internal constant [5 x double] [double 0x3F14367C68613852, double 0xBF55E9337417A2A8, double 0x3FA08AA11C602E02, double 0x3FA888257A230271, double 0x3FC06EBA8214DB78]
@cdflib_error_fc.b = internal constant [3 x double] [double 0x3F68A97288DB092F, double 0x3FAB9868E2767FFE, double 0x3FD80D09A5DE569F]
@cdflib_error_fc.p = internal constant [8 x double] [double 0xBE825EA4045ABDE7, double 0x3FE20DE3C203E757, double 0x401CD8D727A8CDDC, double 0x404594C3DC92A092, double 0x40631FA8391D60EF, double 0x4075352210BA6046, double 0x407C3EB408CEB084, double 0x4072C75922155EC6]
@cdflib_error_fc.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_fc.r = internal constant [5 x double] [double 0x4000CFC07015ECE7, double 0x403A3CACF5E22C7B, double 0x40355E6AFDBC84CE, double 0x4012A1DF4646A9F7, double 0x3FD20DD75042826F]
@cdflib_error_fc.s = internal constant [4 x double] [double 0x405789D77354A0AF, double 0x406763AC89CB8DE3, double 0x4058C13A44E26A46, double 0x403203306BC292DB]
@cdflib_error_fc.K1 = internal constant i32 1
define double @cdflib_error_fc(i32* %0, double* %1) {
%3 = alloca double
%4 = alloca i32*
%5 = alloca double*
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
store i32* %0, i32** %4
store double* %1, double** %5
%13 = load double*, double** %5
%14 = load double, double* %13
%15 = call double @llvm.fabs.f64(double %14)
store double %15, double* %7
%16 = load double, double* %7
%17 = fcmp ogt double %16, 5.000000e-01
br i1 %17, label %18, label %19
18: ; preds = %2
br label %66
19: ; preds = %2
%20 = load double*, double** %5
%21 = load double, double* %20
%22 = load double*, double** %5
%23 = load double, double* %22
%24 = fmul double %21, %23
store double %24, double* %10
%25 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_fc.a, i64 0, i64 0)
%26 = load double, double* %10
%27 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_fc.a, i64 0, i64 1)
%28 = call double @llvm.fmuladd.f64(double %25, double %26, double %27)
%29 = load double, double* %10
%30 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_fc.a, i64 0, i64 2)
%31 = call double @llvm.fmuladd.f64(double %28, double %29, double %30)
%32 = load double, double* %10
%33 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_fc.a, i64 0, i64 3)
%34 = call double @llvm.fmuladd.f64(double %31, double %32, double %33)
%35 = load double, double* %10
%36 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_fc.a, i64 0, i64 4)
%37 = call double @llvm.fmuladd.f64(double %34, double %35, double %36)
%38 = fadd double %37, 1.000000e+00
store double %38, double* %11
%39 = load double, double* getelementptr inbounds ([3 x double], [3 x double]* @cdflib_error_fc.b, i64 0, i64 0)
%40 = load double, double* %10
%41 = load double, double* getelementptr inbounds ([3 x double], [3 x double]* @cdflib_error_fc.b, i64 0, i64 1)
%42 = call double @llvm.fmuladd.f64(double %39, double %40, double %41)
%43 = load double, double* %10
%44 = load double, double* getelementptr inbounds ([3 x double], [3 x double]* @cdflib_error_fc.b, i64 0, i64 2)
%45 = call double @llvm.fmuladd.f64(double %42, double %43, double %44)
%46 = load double, double* %10
%47 = call double @llvm.fmuladd.f64(double %45, double %46, double 1.000000e+00)
store double %47, double* %8
%48 = load double*, double** %5
%49 = load double, double* %48
%50 = load double, double* %11
%51 = load double, double* %8
%52 = fdiv double %50, %51
%53 = fneg double %49
%54 = call double @llvm.fmuladd.f64(double %53, double %52, double 5.000000e-01)
%55 = fadd double 5.000000e-01, %54
store double %55, double* %6
%56 = load i32*, i32** %4
%57 = load i32, i32* %56
%58 = icmp ne i32 %57, 0
br i1 %58, label %59, label %64
59: ; preds = %19
%60 = load double, double* %10
%61 = call double @exp(double %60)
%62 = load double, double* %6
%63 = fmul double %61, %62
store double %63, double* %6
br label %64
64: ; preds = %59, %19
%65 = load double, double* %6
store double %65, double* %3
br label %247
66: ; preds = %18
%67 = load double, double* %7
%68 = fcmp ogt double %67, 4.000000e+00
br i1 %68, label %69, label %70
69: ; preds = %66
br label %118
70: ; preds = %66
%71 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_fc.p, i64 0, i64 0)
%72 = load double, double* %7
%73 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_fc.p, i64 0, i64 1)
%74 = call double @llvm.fmuladd.f64(double %71, double %72, double %73)
%75 = load double, double* %7
%76 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_fc.p, i64 0, i64 2)
%77 = call double @llvm.fmuladd.f64(double %74, double %75, double %76)
%78 = load double, double* %7
%79 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_fc.p, i64 0, i64 3)
%80 = call double @llvm.fmuladd.f64(double %77, double %78, double %79)
%81 = load double, double* %7
%82 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_fc.p, i64 0, i64 4)
%83 = call double @llvm.fmuladd.f64(double %80, double %81, double %82)
%84 = load double, double* %7
%85 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_fc.p, i64 0, i64 5)
%86 = call double @llvm.fmuladd.f64(double %83, double %84, double %85)
%87 = load double, double* %7
%88 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_fc.p, i64 0, i64 6)
%89 = call double @llvm.fmuladd.f64(double %86, double %87, double %88)
%90 = load double, double* %7
%91 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_fc.p, i64 0, i64 7)
%92 = call double @llvm.fmuladd.f64(double %89, double %90, double %91)
store double %92, double* %11
%93 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_fc.q, i64 0, i64 0)
%94 = load double, double* %7
%95 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_fc.q, i64 0, i64 1)
%96 = call double @llvm.fmuladd.f64(double %93, double %94, double %95)
%97 = load double, double* %7
%98 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_fc.q, i64 0, i64 2)
%99 = call double @llvm.fmuladd.f64(double %96, double %97, double %98)
%100 = load double, double* %7
%101 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_fc.q, i64 0, i64 3)
%102 = call double @llvm.fmuladd.f64(double %99, double %100, double %101)
%103 = load double, double* %7
%104 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_fc.q, i64 0, i64 4)
%105 = call double @llvm.fmuladd.f64(double %102, double %103, double %104)
%106 = load double, double* %7
%107 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_fc.q, i64 0, i64 5)
%108 = call double @llvm.fmuladd.f64(double %105, double %106, double %107)
%109 = load double, double* %7
%110 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_fc.q, i64 0, i64 6)
%111 = call double @llvm.fmuladd.f64(double %108, double %109, double %110)
%112 = load double, double* %7
%113 = load double, double* getelementptr inbounds ([8 x double], [8 x double]* @cdflib_error_fc.q, i64 0, i64 7)
%114 = call double @llvm.fmuladd.f64(double %111, double %112, double %113)
store double %114, double* %8
%115 = load double, double* %11
%116 = load double, double* %8
%117 = fdiv double %115, %116
store double %117, double* %6
br label %183
118: ; preds = %69
%119 = load double*, double** %5
%120 = load double, double* %119
%121 = fcmp ole double %120, -5.600000e+00
br i1 %121, label %122, label %123
122: ; preds = %118
br label %231
123: ; preds = %118
%124 = load i32*, i32** %4
%125 = load i32, i32* %124
%126 = icmp ne i32 %125, 0
br i1 %126, label %127, label %128
127: ; preds = %123
br label %145
128: ; preds = %123
%129 = load double*, double** %5
%130 = load double, double* %129
%131 = fcmp ogt double %130, 1.000000e+02
br i1 %131, label %132, label %133
132: ; preds = %128
br label %245
133: ; preds = %128
%134 = load double*, double** %5
%135 = load double, double* %134
%136 = load double*, double** %5
%137 = load double, double* %136
%138 = fmul double %135, %137
%139 = call i32 (i32*, ...) bitcast (i32 (...)* @cdflib_exparg to i32 (i32*, ...)*)(i32* @cdflib_error_fc.K1)
%140 = sub nsw i32 0, %139
%141 = sitofp i32 %140 to double
%142 = fcmp ogt double %138, %141
br i1 %142, label %143, label %144
143: ; preds = %133
br label %245
144: ; preds = %133
br label %145
145: ; preds = %144, %127
%146 = load double*, double** %5
%147 = load double, double* %146
%148 = fdiv double 1.000000e+00, %147
%149 = call double @pow(double %148, double 2.000000e+00)
store double %149, double* %10
%150 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_fc.r, i64 0, i64 0)
%151 = load double, double* %10
%152 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_fc.r, i64 0, i64 1)
%153 = call double @llvm.fmuladd.f64(double %150, double %151, double %152)
%154 = load double, double* %10
%155 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_fc.r, i64 0, i64 2)
%156 = call double @llvm.fmuladd.f64(double %153, double %154, double %155)
%157 = load double, double* %10
%158 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_fc.r, i64 0, i64 3)
%159 = call double @llvm.fmuladd.f64(double %156, double %157, double %158)
%160 = load double, double* %10
%161 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @cdflib_error_fc.r, i64 0, i64 4)
%162 = call double @llvm.fmuladd.f64(double %159, double %160, double %161)
store double %162, double* %11
%163 = load double, double* getelementptr inbounds ([4 x double], [4 x double]* @cdflib_error_fc.s, i64 0, i64 0)
%164 = load double, double* %10
%165 = load double, double* getelementptr inbounds ([4 x double], [4 x double]* @cdflib_error_fc.s, i64 0, i64 1)
%166 = call double @llvm.fmuladd.f64(double %163, double %164, double %165)
%167 = load double, double* %10
%168 = load double, double* getelementptr inbounds ([4 x double], [4 x double]* @cdflib_error_fc.s, i64 0, i64 2)
%169 = call double @llvm.fmuladd.f64(double %166, double %167, double %168)
%170 = load double, double* %10
%171 = load double, double* getelementptr inbounds ([4 x double], [4 x double]* @cdflib_error_fc.s, i64 0, i64 3)
%172 = call double @llvm.fmuladd.f64(double %169, double %170, double %171)
%173 = load double, double* %10
%174 = call double @llvm.fmuladd.f64(double %172, double %173, double 1.000000e+00)
store double %174, double* %8
%175 = load double, double* %10
%176 = load double, double* %11
%177 = fmul double %175, %176
%178 = load double, double* %8
%179 = fdiv double %177, %178
%180 = fsub double 0x3FE20DD750429B6A, %179
%181 = load double, double* %7
%182 = fdiv double %180, %181
store double %182, double* %6
br label %183
183: ; preds = %145, %70
%184 = load i32*, i32** %4
%185 = load i32, i32* %184
%186 = icmp eq i32 %185, 0
br i1 %186, label %187, label %188
187: ; preds = %183
br label %204
188: ; preds = %183
%189 = load double*, double** %5
%190 = load double, double* %189
%191 = fcmp olt double %190, 0.000000e+00
br i1 %191, label %192, label %202
192: ; preds = %188
%193 = load double*, double** %5
%194 = load double, double* %193
%195 = load double*, double** %5
%196 = load double, double* %195
%197 = fmul double %194, %196
%198 = call double @exp(double %197)
%199 = load double, double* %6
%200 = fneg double %199
%201 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %198, double %200)
store double %201, double* %6
br label %202
202: ; preds = %192, %188
%203 = load double, double* %6
store double %203, double* %3
br label %247
204: ; preds = %187
%205 = load double*, double** %5
%206 = load double, double* %205
%207 = load double*, double** %5
%208 = load double, double* %207
%209 = fmul double %206, %208
store double %209, double* %12
%210 = load double, double* %12
store double %210, double* %10
%211 = load double, double* %12
%212 = load double, double* %10
%213 = fsub double %211, %212
store double %213, double* %9
%214 = load double, double* %9
%215 = fsub double 5.000000e-01, %214
%216 = fadd double 5.000000e-01, %215
%217 = load double, double* %10
%218 = fneg double %217
%219 = call double @exp(double %218)
%220 = fmul double %216, %219
%221 = load double, double* %6
%222 = fmul double %220, %221
store double %222, double* %6
%223 = load double*, double** %5
%224 = load double, double* %223
%225 = fcmp olt double %224, 0.000000e+00
br i1 %225, label %226, label %229
226: ; preds = %204
%227 = load double, double* %6
%228 = fsub double 2.000000e+00, %227
store double %228, double* %6
br label %229
229: ; preds = %226, %204
%230 = load double, double* %6
store double %230, double* %3
br label %247
231: ; preds = %122
store double 2.000000e+00, double* %6
%232 = load i32*, i32** %4
%233 = load i32, i32* %232
%234 = icmp ne i32 %233, 0
br i1 %234, label %235, label %243
235: ; preds = %231
%236 = load double*, double** %5
%237 = load double, double* %236
%238 = load double*, double** %5
%239 = load double, double* %238
%240 = fmul double %237, %239
%241 = call double @exp(double %240)
%242 = fmul double 2.000000e+00, %241
store double %242, double* %6
br label %243
243: ; preds = %235, %231
%244 = load double, double* %6
store double %244, double* %3
br label %247
245: ; preds = %143, %132
store double 0.000000e+00, double* %6
%246 = load double, double* %6
store double %246, double* %3
br label %247
247: ; preds = %245, %243, %229, %202, %64
%248 = load double, double* %3
ret double %248
}

LLVM IR (-O2):
@cdflib_error_fc.K1 = internal constant i32 1
define double @cdflib_error_fc(i32* nocapture %0, double* nocapture %1) {
%3 = load double, double* %1
%4 = tail call double @llvm.fabs.f64(double %3)
%5 = fcmp ogt double %4, 5.000000e-01
br i1 %5, label %25, label %6
6: ; preds = %2
%7 = fmul double %3, %3
%8 = tail call double @llvm.fmuladd.f64(double %7, double 0x3F14367C68613852, double 0xBF55E9337417A2A8)
%9 = tail call double @llvm.fmuladd.f64(double %8, double %7, double 0x3FA08AA11C602E02)
%10 = tail call double @llvm.fmuladd.f64(double %9, double %7, double 0x3FA888257A230271)
%11 = tail call double @llvm.fmuladd.f64(double %10, double %7, double 0x3FC06EBA8214DB78)
%12 = fadd double %11, 1.000000e+00
%13 = tail call double @llvm.fmuladd.f64(double %7, double 0x3F68A97288DB092F, double 0x3FAB9868E2767FFE)
%14 = tail call double @llvm.fmuladd.f64(double %13, double %7, double 0x3FD80D09A5DE569F)
%15 = tail call double @llvm.fmuladd.f64(double %14, double %7, double 1.000000e+00)
%16 = fdiv double %12, %15
%17 = fneg double %3
%18 = tail call double @llvm.fmuladd.f64(double %17, double %16, double 5.000000e-01)
%19 = fadd double %18, 5.000000e-01
%20 = load i32, i32* %0
%21 = icmp eq i32 %20, 0
br i1 %21, label %104, label %22
22: ; preds = %6
%23 = tail call double @exp(double %7)
%24 = fmul double %19, %23
br label %104
25: ; preds = %2
%26 = fcmp ogt double %4, 4.000000e+00
br i1 %26, label %43, label %27
27: ; preds = %25
%28 = tail call double @llvm.fmuladd.f64(double %4, double 0xBE825EA4045ABDE7, double 0x3FE20DE3C203E757)
%29 = fadd double %4, 0x402990C1A29EFCEF
%30 = insertelement <2 x double> poison, double %28, i64 0
%31 = insertelement <2 x double> %30, double %29, i64 1
%32 = insertelement <2 x double> poison, double %4, i64 0
%33 = shufflevector <2 x double> %32, <2 x double> poison, <2 x i32> zeroinitializer
%34 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %31, <2 x double> %33, <2 x double> <double 0x401CD8D727A8CDDC, double 0x405340028174F3C8>)
%35 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %34, <2 x double> %33, <2 x double> <double 0x404594C3DC92A092, double 0x4071595DFB4ED0B2>)
%36 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %35, <2 x double> %33, <2 x double> <double 0x40631FA8391D60EF, double 0x4083F7D794E56A87>)
%37 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %36, <2 x double> %33, <2 x double> <double 0x4075352210BA6046, double 0x408D1AD52FAE586A>)
%38 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %37, <2 x double> %33, <2 x double> <double 0x407C3EB408CEB084, double 0x4088B79B7EBD0214>)
%39 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %38, <2 x double> %33, <2 x double> <double 0x4072C75922155EC6, double 0x4072C75922046925>)
%40 = extractelement <2 x double> %39, i64 0
%41 = extractelement <2 x double> %39, i64 1
%42 = fdiv double %40, %41
br label %74
43: ; preds = %25
%44 = fcmp ugt double %3, -5.600000e+00
%45 = load i32, i32* %0
%46 = icmp eq i32 %45, 0
br i1 %44, label %47, label %99
47: ; preds = %43
br i1 %46, label %48, label %58
48: ; preds = %47
%49 = fcmp ogt double %3, 1.000000e+02
br i1 %49, label %104, label %50
50: ; preds = %48
%51 = fmul double %3, %3
%52 = tail call i32 (i32*, ...) bitcast (i32 (...)* @cdflib_exparg to i32 (i32*, ...)*)(i32* @cdflib_error_fc.K1)
%53 = sub nsw i32 0, %52
%54 = sitofp i32 %53 to double
%55 = fcmp ogt double %51, %54
br i1 %55, label %104, label %56
56: ; preds = %50
%57 = load double, double* %1
br label %58
58: ; preds = %56, %47
%59 = phi double [ %57, %56 ], [ %3, %47 ]
%60 = fdiv double 1.000000e+00, %59
%61 = fmul double %60, %60
%62 = tail call double @llvm.fmuladd.f64(double %61, double 0x4000CFC07015ECE7, double 0x403A3CACF5E22C7B)
%63 = tail call double @llvm.fmuladd.f64(double %62, double %61, double 0x40355E6AFDBC84CE)
%64 = tail call double @llvm.fmuladd.f64(double %63, double %61, double 0x4012A1DF4646A9F7)
%65 = tail call double @llvm.fmuladd.f64(double %64, double %61, double 0x3FD20DD75042826F)
%66 = tail call double @llvm.fmuladd.f64(double %61, double 0x405789D77354A0AF, double 0x406763AC89CB8DE3)
%67 = tail call double @llvm.fmuladd.f64(double %66, double %61, double 0x4058C13A44E26A46)
%68 = tail call double @llvm.fmuladd.f64(double %67, double %61, double 0x403203306BC292DB)
%69 = tail call double @llvm.fmuladd.f64(double %68, double %61, double 1.000000e+00)
%70 = fmul double %61, %65
%71 = fdiv double %70, %69
%72 = fsub double 0x3FE20DD750429B6A, %71
%73 = fdiv double %72, %4
br label %74
74: ; preds = %58, %27
%75 = phi double [ %59, %58 ], [ %3, %27 ]
%76 = phi double [ %73, %58 ], [ %42, %27 ]
%77 = load i32, i32* %0
%78 = icmp eq i32 %77, 0
br i1 %78, label %86, label %79
79: ; preds = %74
%80 = fcmp olt double %75, 0.000000e+00
br i1 %80, label %81, label %104
81: ; preds = %79
%82 = fmul double %75, %75
%83 = tail call double @exp(double %82)
%84 = fneg double %76
%85 = tail call double @llvm.fmuladd.f64(double %83, double 2.000000e+00, double %84)
br label %104
86: ; preds = %74
%87 = fmul double %75, %75
%88 = fsub double %87, %87
%89 = fadd double %88, 5.000000e-01
%90 = fadd double %89, 5.000000e-01
%91 = fneg double %87
%92 = tail call double @exp(double %91)
%93 = fmul double %92, %90
%94 = fmul double %76, %93
%95 = load double, double* %1
%96 = fcmp olt double %95, 0.000000e+00
%97 = fsub double 2.000000e+00, %94
%98 = select i1 %96, double %97, double %94
br label %104
99: ; preds = %43
br i1 %46, label %104, label %100
100: ; preds = %99
%101 = fmul double %3, %3
%102 = tail call double @exp(double %101)
%103 = fmul double %102, 2.000000e+00
br label %104
104: ; preds = %48, %50, %99, %100, %79, %81, %6, %22, %86
%105 = phi double [ %98, %86 ], [ %24, %22 ], [ %19, %6 ], [ %85, %81 ], [ %76, %79 ], [ %103, %100 ], [ 2.000000e+00, %99 ], [ 0.000000e+00, %50 ], [ 0.000000e+00, %48 ]
ret double %105
}