double erfc1(int ind, double x) {
  static double c__ = .564189583547756;
  static double a[5] = {7.7105849500132e-5, -.00133733772997339,
                        .0323076579225834, .0479137145607681, .128379167095513};
  static double b[3] = {.00301048631703895, .0538971687740286,
                        .375795757275549};
  static double p[8] = {-1.36864857382717e-7, .564195517478974,
                        7.21175825088309,     43.1622272220567,
                        152.98928504694,      339.320816734344,
                        451.918953711873,     300.459261020162};
  static double q[8] = {1.,
                        12.7827273196294,
                        77.0001529352295,
                        277.585444743988,
                        638.980264465631,
                        931.35409485061,
                        790.950925327898,
                        300.459260956983};
  static double r__[5] = {2.10144126479064, 26.2370141675169, 21.3688200555087,
                          4.6580782871847, .282094791773523};
  static double s[4] = {94.153775055546, 187.11481179959, 99.0191814623914,
                        18.0124575948747};
  double ret_val, d__1;
  double e, t, w, ax, bot, top;
  ax = fabs(x);
  if (ax > 0.5) {
    goto L10;
  }
  t = x * x;
  top = (((a[0] * t + a[1]) * t + a[2]) * t + a[3]) * t + a[4] + 1.0;
  bot = ((b[0] * t + b[1]) * t + b[2]) * t + 1.0;
  ret_val = 0.5 - x * (top / bot) + 0.5;
  if (ind != 0) {
    ret_val = exp(t) * ret_val;
  }
  return ret_val;
L10:
  if (ax > 4.0) {
    goto L20;
  }
  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];
  ret_val = top / bot;
  goto L40;
L20:
  if (x <= -5.6f) {
    goto L50;
  }
  if (ind != 0) {
    goto L30;
  }
  if (x > 100.0) {
    goto L60;
  }
  if (x * x > -exparg(1)) {
    goto L60;
  }
L30:
  d__1 = 1.0 / x;
  t = d__1 * d__1;
  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.0;
  ret_val = (c__ - t * top / bot) / ax;
L40:
  if (ind == 0) {
    goto L41;
  }
  if (x < 0.0) {
    ret_val = exp(x * x) * 2.0 - ret_val;
  }
  return ret_val;
L41:
  w = (double)(x) * (double)(x);
  t = w;
  e = w - t;
  ret_val = (0.5 - e + 0.5) * exp(-t) * ret_val;
  if (x < 0.0) {
    ret_val = 2.0 - ret_val;
  }
  return ret_val;
L50:
  ret_val = 2.0;
  if (ind != 0) {
    ret_val = exp(x * x) * 2.0;
  }
  return ret_val;
L60:
  ret_val = 0.0;
  return ret_val;
}


x86 assembly (clang, -O0):
<erfc1>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
mov    %edi,-0xc(%rbp)
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movaps 0xef4(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  0xeae(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1161 <erfc1+0x41>
jmp    129d <erfc1+0x17d>
movsd  -0x18(%rbp),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x2ed8(%rip),%xmm0
movsd  -0x38(%rbp),%xmm2
movsd  0x2ed3(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm2
movsd  0x2ec6(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm2
movsd  0x2eb9(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm2
movsd  0x2eac(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xe34(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0x2e9b(%rip),%xmm0
movsd  -0x38(%rbp),%xmm2
movsd  0x2e96(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm2
movsd  0x2e89(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xde8(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
divsd  -0x50(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xda5(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xd99(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
cmpl   $0x0,-0xc(%rbp)
je     128e <erfc1+0x16e>
movsd  -0x38(%rbp),%xmm0
call   1030 <exp@plt>
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    16fe <erfc1+0x5de>
movsd  -0x48(%rbp),%xmm0
movsd  0xd66(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    12b9 <erfc1+0x199>
jmp    140d <erfc1+0x2ed>
movsd  0x2ddf(%rip),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  0x2dda(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  0x2dcd(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  0x2dc0(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  0x2db3(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  0x2da6(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  0x2d99(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  0x2d8c(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0x2d7f(%rip),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  0x2d7a(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  0x2d6d(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  0x2d60(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  0x2d53(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  0x2d46(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  0x2d39(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  0x2d2c(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x58(%rbp),%xmm0
divsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
jmp    1596 <erfc1+0x476>
movsd  0xc03(%rip),%xmm0
ucomisd -0x18(%rbp),%xmm0
jb     1425 <erfc1+0x305>
jmp    16a6 <erfc1+0x586>
cmpl   $0x0,-0xc(%rbp)
je     1434 <erfc1+0x314>
jmp    148e <erfc1+0x36e>
movsd  -0x18(%rbp),%xmm0
movsd  0xbdf(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1450 <erfc1+0x330>
jmp    16ec <erfc1+0x5cc>
movsd  -0x18(%rbp),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    $0x1,%edi
mov    $0x0,%al
call   1040 <exparg@plt>
movsd  -0x60(%rbp),%xmm0
mov    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
cvtsi2sd %eax,%xmm1
ucomisd %xmm1,%xmm0
jbe    1489 <erfc1+0x369>
jmp    16ec <erfc1+0x5cc>
jmp    148e <erfc1+0x36e>
movsd  0xb72(%rip),%xmm0
divsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x2c69(%rip),%xmm0
movsd  -0x38(%rbp),%xmm2
movsd  0x2c64(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm2
movsd  0x2c57(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm2
movsd  0x2c4a(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm2
movsd  0x2c3d(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0x2c38(%rip),%xmm0
movsd  -0x38(%rbp),%xmm2
movsd  0x2c33(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm2
movsd  0x2c26(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm2
movsd  0x2c19(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xaa0(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0x2ac7(%rip),%xmm0
movsd  -0x38(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
divsd  -0x50(%rbp),%xmm1
subsd  %xmm1,%xmm0
divsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
cmpl   $0x0,-0xc(%rbp)
jne    15a5 <erfc1+0x485>
jmp    15fa <erfc1+0x4da>
xorps  %xmm0,%xmm0
ucomisd -0x18(%rbp),%xmm0
jbe    15eb <erfc1+0x4cb>
movsd  -0x18(%rbp),%xmm0
mulsd  -0x18(%rbp),%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    16fe <erfc1+0x5de>
movsd  -0x18(%rbp),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0x9d6(%rip),%xmm0
subsd  -0x30(%rbp),%xmm0
movsd  0x9c9(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x68(%rbp),%xmm0
mulsd  %xmm1,%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x18(%rbp),%xmm0
jbe    1697 <erfc1+0x577>
movsd  0x99b(%rip),%xmm0
subsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    16fe <erfc1+0x5de>
movsd  0x97a(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
cmpl   $0x0,-0xc(%rbp)
je     16dd <erfc1+0x5bd>
movsd  -0x18(%rbp),%xmm0
mulsd  -0x18(%rbp),%xmm0
call   1030 <exp@plt>
movsd  0x954(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    16fe <erfc1+0x5de>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<erfc1>:
push   %rbx
sub    $0x30,%rsp
movapd %xmm0,%xmm4
mov    %edi,%ebx
movapd 0xecd(%rip),%xmm5
andpd  %xmm0,%xmm5
ucomisd 0xf41(%rip),%xmm5
jbe    1292 <erfc1+0x172>
ucomisd 0xf83(%rip),%xmm5
jbe    1342 <erfc1+0x222>
movsd  0xf95(%rip),%xmm0
ucomisd %xmm4,%xmm0
jae    13f4 <erfc1+0x2d4>
test   %ebx,%ebx
je     140f <erfc1+0x2ef>
movsd  0xf3b(%rip),%xmm2
movapd %xmm2,%xmm1
divsd  %xmm4,%xmm1
mulsd  %xmm1,%xmm1
movsd  0xf7f(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xf7b(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xf77(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xf73(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xf6f(%rip),%xmm0
movsd  0xf6f(%rip),%xmm3
mulsd  %xmm1,%xmm3
addsd  0xf6b(%rip),%xmm3
mulsd  %xmm1,%xmm3
addsd  0xf67(%rip),%xmm3
mulsd  %xmm1,%xmm3
addsd  0xf63(%rip),%xmm3
mulsd  %xmm1,%xmm3
addsd  %xmm2,%xmm3
mulsd  %xmm1,%xmm0
divsd  %xmm3,%xmm0
movsd  0xf53(%rip),%xmm3
subsd  %xmm0,%xmm3
divsd  %xmm5,%xmm3
test   %ebx,%ebx
jne    13c6 <erfc1+0x2a6>
movapd %xmm4,%xmm0
mulsd  %xmm4,%xmm0
movapd %xmm0,%xmm2
subsd  %xmm0,%xmm2
movsd  0xe5b(%rip),%xmm1
addsd  %xmm1,%xmm2
addsd  %xmm1,%xmm2
movapd %xmm2,0x10(%rsp)
xorpd  0xe35(%rip),%xmm0
movapd %xmm4,0x20(%rsp)
movapd %xmm3,(%rsp)
call   1030 <exp@plt>
mulsd  0x10(%rsp),%xmm0
movapd (%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  0xe96(%rip),%xmm0
subsd  %xmm1,%xmm0
movapd %xmm1,%xmm3
xorpd  %xmm1,%xmm1
movapd 0x20(%rsp),%xmm2
cmpltsd %xmm1,%xmm2
movapd %xmm2,%xmm1
andnpd %xmm3,%xmm1
andpd  %xmm0,%xmm2
orpd   %xmm1,%xmm2
movapd %xmm2,%xmm3
jmp    1474 <erfc1+0x354>
movapd %xmm4,%xmm0
mulsd  %xmm4,%xmm0
movsd  0xde6(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xde2(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xdde(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xdda(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xdd6(%rip),%xmm1
movsd  0xdd6(%rip),%xmm2
movsd  0xdd6(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  0xdd2(%rip),%xmm3
addsd  %xmm2,%xmm1
mulsd  %xmm0,%xmm3
addsd  0xdca(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  %xmm2,%xmm3
divsd  %xmm3,%xmm1
mulsd  %xmm4,%xmm1
movsd  0xd6a(%rip),%xmm2
movapd %xmm2,%xmm3
subsd  %xmm1,%xmm3
addsd  %xmm2,%xmm3
test   %ebx,%ebx
je     1474 <erfc1+0x354>
movapd %xmm3,(%rsp)
call   1030 <exp@plt>
movapd (%rsp),%xmm3
mulsd  %xmm0,%xmm3
jmp    1474 <erfc1+0x354>
movsd  0xd8e(%rip),%xmm3
mulsd  %xmm5,%xmm3
addsd  0xd8a(%rip),%xmm3
movapd %xmm5,%xmm0
addsd  0xd86(%rip),%xmm0
unpcklpd %xmm0,%xmm3
unpcklpd %xmm5,%xmm5
mulpd  %xmm5,%xmm3
addpd  0xc9a(%rip),%xmm3
mulpd  %xmm5,%xmm3
addpd  0xc9e(%rip),%xmm3
mulpd  %xmm5,%xmm3
addpd  0xca2(%rip),%xmm3
mulpd  %xmm5,%xmm3
addpd  0xca6(%rip),%xmm3
mulpd  %xmm5,%xmm3
addpd  0xcaa(%rip),%xmm3
mulpd  %xmm5,%xmm3
addpd  0xcae(%rip),%xmm3
movapd %xmm3,%xmm0
unpckhpd %xmm3,%xmm0
divsd  %xmm0,%xmm3
test   %ebx,%ebx
je     120d <erfc1+0xed>
xorpd  %xmm0,%xmm0
ucomisd %xmm4,%xmm0
jbe    1474 <erfc1+0x354>
mulsd  %xmm4,%xmm4
movapd %xmm4,%xmm0
movapd %xmm3,(%rsp)
call   1030 <exp@plt>
addsd  %xmm0,%xmm0
subsd  (%rsp),%xmm0
jmp    1478 <erfc1+0x358>
test   %ebx,%ebx
je     146c <erfc1+0x34c>
mulsd  %xmm4,%xmm4
movapd %xmm4,%xmm0
call   1030 <exp@plt>
movapd %xmm0,%xmm3
addsd  %xmm0,%xmm3
jmp    1474 <erfc1+0x354>
xorpd  %xmm3,%xmm3
ucomisd 0xce5(%rip),%xmm4
ja     1474 <erfc1+0x354>
movapd %xmm4,%xmm0
mulsd  %xmm4,%xmm0
movapd %xmm0,0x10(%rsp)
mov    $0x1,%edi
xor    %eax,%eax
movapd %xmm4,0x20(%rsp)
movapd %xmm5,(%rsp)
call   1040 <exparg@plt>
movapd (%rsp),%xmm5
xorpd  %xmm3,%xmm3
movapd 0x20(%rsp),%xmm4
neg    %eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movapd 0x10(%rsp),%xmm1
ucomisd %xmm0,%xmm1
jbe    116d <erfc1+0x4d>
jmp    1474 <erfc1+0x354>
movsd  0xc84(%rip),%xmm3
movapd %xmm3,%xmm0
add    $0x30,%rsp
pop    %rbx
ret

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

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