#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
double exp(double);
double fabs(double);
double fifdsign(double, double);
double erf1(double *x) {
  static double c = .564189583547756e0;
  static double a[5] = {.771058495001320e-04, -.133733772997339e-02,
                        .323076579225834e-01, .479137145607681e-01,
                        .128379167095513e+00};
  static double b[3] = {.301048631703895e-02, .538971687740286e-01,
                        .375795757275549e+00};
  static 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 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 double r[5] = {2.10144126479064e+00, 2.62370141675169e+01,
                        2.13688200555087e+01, 4.65807828718470e+00,
                        2.82094791773523e-01};
  static double s[4] = {9.41537750555460e+01, 1.87114811799590e+02,
                        9.90191814623914e+01, 1.80124575948747e+01};
  static 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 = fifdsign(1.0e0, *x);
  return erf1;
}


x86 assembly (clang, -O0):
<erf1>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movaps 0xee5(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,0x3039(%rip)
movsd  0x3031(%rip),%xmm0
movsd  0xea9(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1166 <erf1+0x46>
jmp    1288 <erf1+0x168>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,0x3012(%rip)
movsd  0x2eca(%rip),%xmm0
movsd  0x3002(%rip),%xmm2
movsd  0x2ec2(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2fea(%rip),%xmm2
movsd  0x2eb2(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2fd2(%rip),%xmm2
movsd  0x2ea2(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2fba(%rip),%xmm2
movsd  0x2e92(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xe1a(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2f9e(%rip)
movsd  0x2e7e(%rip),%xmm0
movsd  0x2f86(%rip),%xmm2
movsd  0x2e76(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2f6e(%rip),%xmm2
movsd  0x2e66(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2f56(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdc2(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2f36(%rip)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x2f36(%rip),%xmm1
divsd  0x2f1e(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x2f02(%rip)
movsd  0x2efa(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1702 <erf1+0x5e2>
movsd  0x2ef0(%rip),%xmm0
movsd  0xd78(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    12a7 <erf1+0x187>
jmp    14bd <erf1+0x39d>
movsd  0x2df1(%rip),%xmm0
movsd  0x2ec9(%rip),%xmm2
movsd  0x2de9(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2eb1(%rip),%xmm2
movsd  0x2dd9(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2e99(%rip),%xmm2
movsd  0x2dc9(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2e81(%rip),%xmm2
movsd  0x2db9(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2e69(%rip),%xmm2
movsd  0x2da9(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2e51(%rip),%xmm2
movsd  0x2d99(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2e39(%rip),%xmm2
movsd  0x2d89(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2e39(%rip)
movsd  0x2d79(%rip),%xmm0
movsd  0x2e11(%rip),%xmm2
movsd  0x2d71(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2df9(%rip),%xmm2
movsd  0x2d61(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2de1(%rip),%xmm2
movsd  0x2d51(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2dc9(%rip),%xmm2
movsd  0x2d41(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2db1(%rip),%xmm2
movsd  0x2d31(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2d99(%rip),%xmm2
movsd  0x2d21(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2d81(%rip),%xmm2
movsd  0x2d11(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2d71(%rip)
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   1030 <exp@plt>
mulsd  0x2d4d(%rip),%xmm0
divsd  0x2d35(%rip),%xmm0
movsd  0xba5(%rip),%xmm1
subsd  %xmm0,%xmm1
movsd  0xb99(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2d05(%rip)
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jbe    14ab <erf1+0x38b>
movsd  0x2cec(%rip),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,0x2ccd(%rip)
movsd  0x2cc5(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1702 <erf1+0x5e2>
movsd  0x2cbb(%rip),%xmm0
movsd  0xb4b(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     14dc <erf1+0x3bc>
jmp    16d8 <erf1+0x5b8>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,0x2cac(%rip)
movsd  0xb0c(%rip),%xmm0
divsd  0x2c9c(%rip),%xmm0
movsd  %xmm0,0x2c84(%rip)
movsd  0x2c0c(%rip),%xmm0
movsd  0x2c74(%rip),%xmm2
movsd  0x2c04(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2c5c(%rip),%xmm2
movsd  0x2bf4(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2c44(%rip),%xmm2
movsd  0x2be4(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2c2c(%rip),%xmm2
movsd  0x2bd4(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2c1c(%rip)
movsd  0x2bcc(%rip),%xmm0
movsd  0x2c04(%rip),%xmm2
movsd  0x2bc4(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2bec(%rip),%xmm2
movsd  0x2bb4(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2bd4(%rip),%xmm2
movsd  0x2ba4(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2bbc(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa28(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2b9c(%rip)
movsd  0x2a4c(%rip),%xmm0
movsd  0x2b9c(%rip),%xmm1
movsd  0x2b9c(%rip),%xmm2
mulsd  0x2b7c(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
divsd  0x2b64(%rip),%xmm0
movsd  %xmm0,0x2b54(%rip)
movsd  0x2b74(%rip),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <exp@plt>
movaps %xmm0,%xmm1
movsd  0x2b25(%rip),%xmm0
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm0,%xmm1
movsd  0x98a(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0x97e(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2aea(%rip)
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jbe    16c6 <erf1+0x5a6>
movsd  0x2ad1(%rip),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,0x2ab2(%rip)
movsd  0x2aaa(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1702 <erf1+0x5e2>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
movsd  0x920(%rip),%xmm0
call   1040 <fifdsign@plt>
movsd  %xmm0,0x2a83(%rip)
movsd  0x2a7b(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<erf1>:
push   %rbx
movsd  (%rdi),%xmm1
movapd 0xed3(%rip),%xmm0
andpd  %xmm1,%xmm0
ucomisd 0xee7(%rip),%xmm0
jbe    1230 <erf1+0x110>
mov    %rdi,%rbx
ucomisd 0xf26(%rip),%xmm0
jbe    12c1 <erf1+0x1a1>
ucomisd 0xf98(%rip),%xmm0
jae    13da <erf1+0x2ba>
mulsd  %xmm1,%xmm1
movsd  0xee6(%rip),%xmm3
movapd %xmm3,%xmm4
divsd  %xmm1,%xmm4
movsd  0xf7e(%rip),%xmm2
mulsd  %xmm4,%xmm2
addsd  0xf7a(%rip),%xmm2
mulsd  %xmm4,%xmm2
addsd  0xf76(%rip),%xmm2
mulsd  %xmm4,%xmm2
addsd  0xf72(%rip),%xmm2
mulsd  %xmm4,%xmm2
addsd  0xf6e(%rip),%xmm2
movsd  0xf6e(%rip),%xmm5
mulsd  %xmm4,%xmm5
addsd  0xf6a(%rip),%xmm5
mulsd  %xmm4,%xmm5
addsd  0xf66(%rip),%xmm5
mulsd  %xmm4,%xmm5
addsd  0xf62(%rip),%xmm5
movsd  %xmm2,0x2e6a(%rip)
mulsd  %xmm4,%xmm5
addsd  %xmm3,%xmm5
movsd  %xmm5,0x2e52(%rip)
mulsd  %xmm1,%xmm5
divsd  %xmm5,%xmm2
movsd  0xf42(%rip),%xmm3
subsd  %xmm2,%xmm3
divsd  %xmm0,%xmm3
movsd  %xmm3,0x2e2a(%rip)
xorpd  0xdfa(%rip),%xmm1
movapd %xmm1,%xmm0
call   1030 <exp@plt>
movapd %xmm0,%xmm1
mulsd  0x2e0d(%rip),%xmm1
jmp    13aa <erf1+0x28a>
movapd %xmm1,%xmm2
mulsd  %xmm1,%xmm2
movsd  0xde8(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xde4(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xde0(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xddc(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xdd8(%rip),%xmm0
movsd  0xdd8(%rip),%xmm3
addsd  %xmm3,%xmm0
movsd  %xmm0,0x2dc4(%rip)
movsd  0xdcc(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  0xdc8(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  0xdc4(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  %xmm3,%xmm4
movsd  %xmm4,0x2d8c(%rip)
divsd  %xmm4,%xmm0
mulsd  %xmm1,%xmm0
jmp    13e7 <erf1+0x2c7>
movsd  0xdaf(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xdab(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xda7(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xda3(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xd9f(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xd9b(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xd97(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xd93(%rip),%xmm2
movsd  0xd93(%rip),%xmm3
addsd  %xmm0,%xmm3
mulsd  %xmm0,%xmm3
addsd  0xd8b(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  0xd87(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  0xd83(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  0xd7f(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  0xd7b(%rip),%xmm3
movsd  %xmm2,0x2cdb(%rip)
mulsd  %xmm0,%xmm3
addsd  0xd6f(%rip),%xmm3
movsd  %xmm3,0x2cbf(%rip)
movapd 0xc87(%rip),%xmm0
xorpd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
call   1030 <exp@plt>
movapd %xmm0,%xmm1
mulsd  0x2ca6(%rip),%xmm1
divsd  0x2c96(%rip),%xmm1
movsd  0xc6e(%rip),%xmm2
movapd %xmm2,%xmm0
subsd  %xmm1,%xmm0
addsd  %xmm2,%xmm0
movsd  %xmm0,0x2c72(%rip)
xorpd  %xmm1,%xmm1
ucomisd (%rbx),%xmm1
jbe    13ef <erf1+0x2cf>
xorpd  0xc38(%rip),%xmm0
jmp    13e7 <erf1+0x2c7>
movsd  0xc6e(%rip),%xmm0
call   1040 <fifdsign@plt>
movsd  %xmm0,0x2c49(%rip)
pop    %rbx
ret

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

LLVM IR (-O2):
@erf1.erf1 = internal unnamed_addr global double 0.000000e+00
@erf1.bot = internal unnamed_addr global double 0.000000e+00
@erf1.top = internal unnamed_addr global double 0.000000e+00
define double @erf1(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
store double %11, double* @erf1.top
%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)
store double %14, double* @erf1.bot
%15 = fdiv double %11, %14
%16 = fmul double %2, %15
br label %76
17: ; preds = %1
%18 = fcmp ogt double %3, 4.000000e+00
br i1 %18, label %47, 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)
store double %26, double* @erf1.top
%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)
store double %33, double* @erf1.bot
%34 = fneg double %2
%35 = fmul double %2, %34
%36 = tail call double @exp(double %35)
%37 = load double, double* @erf1.top
%38 = fmul double %36, %37
%39 = load double, double* @erf1.bot
%40 = fdiv double %38, %39
%41 = fsub double 5.000000e-01, %40
%42 = fadd double %41, 5.000000e-01
store double %42, double* @erf1.erf1
%43 = load double, double* %0
%44 = fcmp olt double %43, 0.000000e+00
br i1 %44, label %45, label %78
45: ; preds = %19
%46 = fneg double %42
br label %76
47: ; preds = %17
%48 = fcmp ult double %3, 5.800000e+00
br i1 %48, label %49, label %74
49: ; preds = %47
%50 = fmul double %2, %2
%51 = fdiv double 1.000000e+00, %50
%52 = tail call double @llvm.fmuladd.f64(double %51, double 0x4000CFC07015ECE7, double 0x403A3CACF5E22C7B)
%53 = tail call double @llvm.fmuladd.f64(double %52, double %51, double 0x40355E6AFDBC84CE)
%54 = tail call double @llvm.fmuladd.f64(double %53, double %51, double 0x4012A1DF4646A9F7)
%55 = tail call double @llvm.fmuladd.f64(double %54, double %51, double 0x3FD20DD75042826F)
store double %55, double* @erf1.top
%56 = tail call double @llvm.fmuladd.f64(double %51, double 0x405789D77354A0AF, double 0x406763AC89CB8DE3)
%57 = tail call double @llvm.fmuladd.f64(double %56, double %51, double 0x4058C13A44E26A46)
%58 = tail call double @llvm.fmuladd.f64(double %57, double %51, double 0x403203306BC292DB)
%59 = tail call double @llvm.fmuladd.f64(double %58, double %51, double 1.000000e+00)
store double %59, double* @erf1.bot
%60 = fmul double %50, %59
%61 = fdiv double %55, %60
%62 = fsub double 0x3FE20DD750429B6A, %61
%63 = fdiv double %62, %3
store double %63, double* @erf1.erf1
%64 = fneg double %50
%65 = tail call double @exp(double %64)
%66 = load double, double* @erf1.erf1
%67 = fneg double %65
%68 = tail call double @llvm.fmuladd.f64(double %67, double %66, double 5.000000e-01)
%69 = fadd double %68, 5.000000e-01
store double %69, double* @erf1.erf1
%70 = load double, double* %0
%71 = fcmp olt double %70, 0.000000e+00
br i1 %71, label %72, label %78
72: ; preds = %49
%73 = fneg double %69
br label %76
74: ; preds = %47
%75 = tail call double @fifdsign(double 1.000000e+00, double %2)
br label %76
76: ; preds = %5, %74, %45, %72
%77 = phi double [ %73, %72 ], [ %46, %45 ], [ %75, %74 ], [ %16, %5 ]
store double %77, double* @erf1.erf1
br label %78
78: ; preds = %76, %49, %19
%79 = phi double [ %42, %19 ], [ %69, %49 ], [ %77, %76 ]
ret double %79
}