void coeffs003(double xi, long int i, int r, double *x, double *c) {
  double sum_l, sum_m, prod_n, prod_m;
  sum_l = 0.0;
  sum_m = 0.0;
  prod_n = 1.0;
  prod_n *= xi - x[i - r + 2];
  prod_n *= xi - x[i - r + 3];
  sum_m += prod_n;
  prod_n = 1.0;
  prod_n *= xi - x[i - r + 0];
  prod_n *= xi - x[i - r + 3];
  sum_m += prod_n;
  prod_n = 1.0;
  prod_n *= xi - x[i - r + 0];
  prod_n *= xi - x[i - r + 2];
  sum_m += prod_n;
  prod_m = 1.0;
  prod_m *= x[i - r + 1] - x[i - r + 0];
  prod_m *= x[i - r + 1] - x[i - r + 2];
  prod_m *= x[i - r + 1] - x[i - r + 3];
  sum_l += sum_m / prod_m * (x[i - r + 0 + 1] - x[i - r + 0]);
  sum_m = 0.0;
  prod_n = 1.0;
  prod_n *= xi - x[i - r + 1];
  prod_n *= xi - x[i - r + 3];
  sum_m += prod_n;
  prod_n = 1.0;
  prod_n *= xi - x[i - r + 0];
  prod_n *= xi - x[i - r + 3];
  sum_m += prod_n;
  prod_n = 1.0;
  prod_n *= xi - x[i - r + 0];
  prod_n *= xi - x[i - r + 1];
  sum_m += prod_n;
  prod_m = 1.0;
  prod_m *= x[i - r + 2] - x[i - r + 0];
  prod_m *= x[i - r + 2] - x[i - r + 1];
  prod_m *= x[i - r + 2] - x[i - r + 3];
  sum_l += sum_m / prod_m * (x[i - r + 0 + 1] - x[i - r + 0]);
  sum_m = 0.0;
  prod_n = 1.0;
  prod_n *= xi - x[i - r + 1];
  prod_n *= xi - x[i - r + 2];
  sum_m += prod_n;
  prod_n = 1.0;
  prod_n *= xi - x[i - r + 0];
  prod_n *= xi - x[i - r + 2];
  sum_m += prod_n;
  prod_n = 1.0;
  prod_n *= xi - x[i - r + 0];
  prod_n *= xi - x[i - r + 1];
  sum_m += prod_n;
  prod_m = 1.0;
  prod_m *= x[i - r + 3] - x[i - r + 0];
  prod_m *= x[i - r + 3] - x[i - r + 1];
  prod_m *= x[i - r + 3] - x[i - r + 2];
  sum_l += sum_m / prod_m * (x[i - r + 0 + 1] - x[i - r + 0]);
  c[0] = sum_l;
  sum_l = 0.0;
  sum_m = 0.0;
  prod_n = 1.0;
  prod_n *= xi - x[i - r + 1];
  prod_n *= xi - x[i - r + 3];
  sum_m += prod_n;
  prod_n = 1.0;
  prod_n *= xi - x[i - r + 0];
  prod_n *= xi - x[i - r + 3];
  sum_m += prod_n;
  prod_n = 1.0;
  prod_n *= xi - x[i - r + 0];
  prod_n *= xi - x[i - r + 1];
  sum_m += prod_n;
  prod_m = 1.0;
  prod_m *= x[i - r + 2] - x[i - r + 0];
  prod_m *= x[i - r + 2] - x[i - r + 1];
  prod_m *= x[i - r + 2] - x[i - r + 3];
  sum_l += sum_m / prod_m * (x[i - r + 1 + 1] - x[i - r + 1]);
  sum_m = 0.0;
  prod_n = 1.0;
  prod_n *= xi - x[i - r + 1];
  prod_n *= xi - x[i - r + 2];
  sum_m += prod_n;
  prod_n = 1.0;
  prod_n *= xi - x[i - r + 0];
  prod_n *= xi - x[i - r + 2];
  sum_m += prod_n;
  prod_n = 1.0;
  prod_n *= xi - x[i - r + 0];
  prod_n *= xi - x[i - r + 1];
  sum_m += prod_n;
  prod_m = 1.0;
  prod_m *= x[i - r + 3] - x[i - r + 0];
  prod_m *= x[i - r + 3] - x[i - r + 1];
  prod_m *= x[i - r + 3] - x[i - r + 2];
  sum_l += sum_m / prod_m * (x[i - r + 1 + 1] - x[i - r + 1]);
  c[1] = sum_l;
  sum_l = 0.0;
  sum_m = 0.0;
  prod_n = 1.0;
  prod_n *= xi - x[i - r + 1];
  prod_n *= xi - x[i - r + 2];
  sum_m += prod_n;
  prod_n = 1.0;
  prod_n *= xi - x[i - r + 0];
  prod_n *= xi - x[i - r + 2];
  sum_m += prod_n;
  prod_n = 1.0;
  prod_n *= xi - x[i - r + 0];
  prod_n *= xi - x[i - r + 1];
  sum_m += prod_n;
  prod_m = 1.0;
  prod_m *= x[i - r + 3] - x[i - r + 0];
  prod_m *= x[i - r + 3] - x[i - r + 1];
  prod_m *= x[i - r + 3] - x[i - r + 2];
  sum_l += sum_m / prod_m * (x[i - r + 2 + 1] - x[i - r + 2]);
  c[2] = sum_l;
}


x86 assembly (clang, -O0):
push   %rbp
mov    %rsp,%rbp
movsd  %xmm0,-0x8(%rbp)
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x30(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xed0(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x10(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x18(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xe6c(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x18(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xe09(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x10(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xda6(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x10(%rax,%rcx,8),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x18(%rax,%rcx,8),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x38(%rbp),%xmm0
divsd  -0x48(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x8(%rax,%rcx,8),%xmm2
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm2
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xcb1(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x8(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x18(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xc4d(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x18(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xbea(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x8(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xb87(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x10(%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x10(%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x8(%rax,%rcx,8),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x10(%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x18(%rax,%rcx,8),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x38(%rbp),%xmm0
divsd  -0x48(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x8(%rax,%rcx,8),%xmm2
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm2
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xa92(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x8(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x10(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xa2e(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x10(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x9cb(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x8(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x968(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x18(%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x18(%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x8(%rax,%rcx,8),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x18(%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x10(%rax,%rcx,8),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x38(%rbp),%xmm0
divsd  -0x48(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x8(%rax,%rcx,8),%xmm2
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm2
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x30(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x85e(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x8(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x18(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x7fa(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x18(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x797(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x8(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x734(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x10(%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x10(%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x8(%rax,%rcx,8),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x10(%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x18(%rax,%rcx,8),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x38(%rbp),%xmm0
divsd  -0x48(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x10(%rax,%rcx,8),%xmm2
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x8(%rax,%rcx,8),%xmm2
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x63e(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x8(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x10(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x5da(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x10(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x577(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x8(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x514(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x18(%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x18(%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x8(%rax,%rcx,8),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x18(%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x10(%rax,%rcx,8),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x38(%rbp),%xmm0
divsd  -0x48(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x10(%rax,%rcx,8),%xmm2
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x8(%rax,%rcx,8),%xmm2
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x8(%rax)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x30(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x408(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x8(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x10(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x3a4(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x10(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x341(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x8(%rax,%rcx,8),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x2de(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x18(%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x18(%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x8(%rax,%rcx,8),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x18(%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x10(%rax,%rcx,8),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x38(%rbp),%xmm0
divsd  -0x48(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
movsd  0x18(%rax,%rcx,8),%xmm2
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
sub    %rdx,%rcx
subsd  0x10(%rax,%rcx,8),%xmm2
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x10(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
movslq %esi,%rax
sub    %rax,%rdi
movsd  0x10(%rdx,%rdi,8),%xmm12
movapd %xmm0,%xmm10
subsd  %xmm12,%xmm10
movsd  0x18(%rdx,%rdi,8),%xmm4
movapd %xmm0,%xmm2
subsd  %xmm4,%xmm2
movapd %xmm10,%xmm6
mulsd  %xmm2,%xmm6
xorpd  %xmm8,%xmm8
addsd  %xmm8,%xmm6
movsd  (%rdx,%rdi,8),%xmm9
movsd  0x8(%rdx,%rdi,8),%xmm15
movapd %xmm0,%xmm1
subsd  %xmm9,%xmm1
movapd %xmm2,%xmm11
mulsd  %xmm1,%xmm11
addsd  %xmm11,%xmm6
movapd %xmm15,%xmm13
movapd %xmm15,%xmm14
movapd %xmm0,%xmm7
subsd  %xmm15,%xmm7
movapd %xmm12,%xmm5
subsd  %xmm15,%xmm5
movapd %xmm4,%xmm3
subsd  %xmm15,%xmm3
subsd  %xmm9,%xmm15
subsd  %xmm12,%xmm13
mulsd  %xmm15,%xmm13
subsd  %xmm4,%xmm14
mulsd  %xmm13,%xmm14
movapd %xmm10,%xmm13
mulsd  %xmm1,%xmm13
addsd  %xmm13,%xmm6
divsd  %xmm14,%xmm6
mulsd  %xmm7,%xmm2
addsd  %xmm8,%xmm2
addsd  %xmm11,%xmm2
movapd %xmm12,%xmm11
subsd  %xmm4,%xmm11
movapd %xmm4,%xmm14
subsd  %xmm12,%xmm4
subsd  %xmm9,%xmm12
mulsd  %xmm12,%xmm5
mulsd  %xmm15,%xmm6
addsd  %xmm8,%xmm6
mulsd  %xmm7,%xmm1
addsd  %xmm1,%xmm2
mulsd  %xmm5,%xmm11
divsd  %xmm11,%xmm2
mulsd  %xmm15,%xmm2
addsd  %xmm6,%xmm2
mulsd  %xmm10,%xmm7
addsd  %xmm8,%xmm7
addsd  %xmm13,%xmm7
addsd  %xmm1,%xmm7
subsd  %xmm9,%xmm14
mulsd  %xmm14,%xmm3
mulsd  %xmm3,%xmm4
divsd  %xmm4,%xmm7
mulsd  %xmm15,%xmm7
addsd  %xmm2,%xmm7
movsd  %xmm7,(%rcx)
movsd  (%rdx,%rdi,8),%xmm9
movsd  0x8(%rdx,%rdi,8),%xmm10
movapd %xmm0,%xmm5
subsd  %xmm10,%xmm5
movsd  0x18(%rdx,%rdi,8),%xmm7
movapd %xmm0,%xmm1
subsd  %xmm7,%xmm1
movapd %xmm5,%xmm3
mulsd  %xmm1,%xmm3
addsd  %xmm8,%xmm3
movapd %xmm0,%xmm12
subsd  %xmm9,%xmm12
mulsd  %xmm12,%xmm1
addsd  %xmm3,%xmm1
movapd %xmm5,%xmm11
mulsd  %xmm12,%xmm11
addsd  %xmm11,%xmm1
movsd  0x10(%rdx,%rdi,8),%xmm14
movapd %xmm14,%xmm13
movapd %xmm14,%xmm3
subsd  %xmm7,%xmm3
movapd %xmm0,%xmm6
subsd  %xmm14,%xmm6
movapd %xmm7,%xmm4
movapd %xmm7,%xmm2
subsd  %xmm14,%xmm7
subsd  %xmm9,%xmm14
subsd  %xmm10,%xmm13
mulsd  %xmm13,%xmm14
mulsd  %xmm14,%xmm3
divsd  %xmm3,%xmm1
mulsd  %xmm13,%xmm1
addsd  %xmm8,%xmm1
mulsd  %xmm6,%xmm5
addsd  %xmm8,%xmm5
mulsd  %xmm12,%xmm6
addsd  %xmm5,%xmm6
addsd  %xmm11,%xmm6
subsd  %xmm9,%xmm4
subsd  %xmm10,%xmm2
mulsd  %xmm4,%xmm2
mulsd  %xmm2,%xmm7
divsd  %xmm7,%xmm6
mulsd  %xmm13,%xmm6
addsd  %xmm1,%xmm6
movsd  %xmm6,0x8(%rcx)
movsd  (%rdx,%rdi,8),%xmm1
movsd  0x8(%rdx,%rdi,8),%xmm2
movapd %xmm0,%xmm3
subsd  %xmm2,%xmm3
movsd  0x10(%rdx,%rdi,8),%xmm4
movapd %xmm0,%xmm5
subsd  %xmm4,%xmm5
movapd %xmm3,%xmm6
mulsd  %xmm5,%xmm6
addsd  %xmm8,%xmm6
subsd  %xmm1,%xmm0
mulsd  %xmm0,%xmm5
addsd  %xmm6,%xmm5
mulsd  %xmm3,%xmm0
addsd  %xmm5,%xmm0
movsd  0x18(%rdx,%rdi,8),%xmm3
movapd %xmm3,%xmm5
subsd  %xmm1,%xmm5
movapd %xmm3,%xmm1
subsd  %xmm2,%xmm1
mulsd  %xmm5,%xmm1
subsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
divsd  %xmm1,%xmm0
mulsd  %xmm3,%xmm0
addsd  %xmm8,%xmm0
movsd  %xmm0,0x10(%rcx)
ret

LLVM IR (-O0):
define void @coeffs003(double %0, i64 %1, i32 %2, double* %3, double* %4) {
%6 = alloca double
%7 = alloca i64
%8 = alloca i32
%9 = alloca double*
%10 = alloca double*
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
store double %0, double* %6
store i64 %1, i64* %7
store i32 %2, i32* %8
store double* %3, double** %9
store double* %4, double** %10
store double 0.000000e+00, double* %11
store double 0.000000e+00, double* %12
store double 1.000000e+00, double* %13
%15 = load double, double* %6
%16 = load double*, double** %9
%17 = load i64, i64* %7
%18 = load i32, i32* %8
%19 = sext i32 %18 to i64
%20 = sub nsw i64 %17, %19
%21 = add nsw i64 %20, 2
%22 = getelementptr inbounds double, double* %16, i64 %21
%23 = load double, double* %22
%24 = fsub double %15, %23
%25 = load double, double* %13
%26 = fmul double %25, %24
store double %26, double* %13
%27 = load double, double* %6
%28 = load double*, double** %9
%29 = load i64, i64* %7
%30 = load i32, i32* %8
%31 = sext i32 %30 to i64
%32 = sub nsw i64 %29, %31
%33 = add nsw i64 %32, 3
%34 = getelementptr inbounds double, double* %28, i64 %33
%35 = load double, double* %34
%36 = fsub double %27, %35
%37 = load double, double* %13
%38 = fmul double %37, %36
store double %38, double* %13
%39 = load double, double* %13
%40 = load double, double* %12
%41 = fadd double %40, %39
store double %41, double* %12
store double 1.000000e+00, double* %13
%42 = load double, double* %6
%43 = load double*, double** %9
%44 = load i64, i64* %7
%45 = load i32, i32* %8
%46 = sext i32 %45 to i64
%47 = sub nsw i64 %44, %46
%48 = add nsw i64 %47, 0
%49 = getelementptr inbounds double, double* %43, i64 %48
%50 = load double, double* %49
%51 = fsub double %42, %50
%52 = load double, double* %13
%53 = fmul double %52, %51
store double %53, double* %13
%54 = load double, double* %6
%55 = load double*, double** %9
%56 = load i64, i64* %7
%57 = load i32, i32* %8
%58 = sext i32 %57 to i64
%59 = sub nsw i64 %56, %58
%60 = add nsw i64 %59, 3
%61 = getelementptr inbounds double, double* %55, i64 %60
%62 = load double, double* %61
%63 = fsub double %54, %62
%64 = load double, double* %13
%65 = fmul double %64, %63
store double %65, double* %13
%66 = load double, double* %13
%67 = load double, double* %12
%68 = fadd double %67, %66
store double %68, double* %12
store double 1.000000e+00, double* %13
%69 = load double, double* %6
%70 = load double*, double** %9
%71 = load i64, i64* %7
%72 = load i32, i32* %8
%73 = sext i32 %72 to i64
%74 = sub nsw i64 %71, %73
%75 = add nsw i64 %74, 0
%76 = getelementptr inbounds double, double* %70, i64 %75
%77 = load double, double* %76
%78 = fsub double %69, %77
%79 = load double, double* %13
%80 = fmul double %79, %78
store double %80, double* %13
%81 = load double, double* %6
%82 = load double*, double** %9
%83 = load i64, i64* %7
%84 = load i32, i32* %8
%85 = sext i32 %84 to i64
%86 = sub nsw i64 %83, %85
%87 = add nsw i64 %86, 2
%88 = getelementptr inbounds double, double* %82, i64 %87
%89 = load double, double* %88
%90 = fsub double %81, %89
%91 = load double, double* %13
%92 = fmul double %91, %90
store double %92, double* %13
%93 = load double, double* %13
%94 = load double, double* %12
%95 = fadd double %94, %93
store double %95, double* %12
store double 1.000000e+00, double* %14
%96 = load double*, double** %9
%97 = load i64, i64* %7
%98 = load i32, i32* %8
%99 = sext i32 %98 to i64
%100 = sub nsw i64 %97, %99
%101 = add nsw i64 %100, 1
%102 = getelementptr inbounds double, double* %96, i64 %101
%103 = load double, double* %102
%104 = load double*, double** %9
%105 = load i64, i64* %7
%106 = load i32, i32* %8
%107 = sext i32 %106 to i64
%108 = sub nsw i64 %105, %107
%109 = add nsw i64 %108, 0
%110 = getelementptr inbounds double, double* %104, i64 %109
%111 = load double, double* %110
%112 = fsub double %103, %111
%113 = load double, double* %14
%114 = fmul double %113, %112
store double %114, double* %14
%115 = load double*, double** %9
%116 = load i64, i64* %7
%117 = load i32, i32* %8
%118 = sext i32 %117 to i64
%119 = sub nsw i64 %116, %118
%120 = add nsw i64 %119, 1
%121 = getelementptr inbounds double, double* %115, i64 %120
%122 = load double, double* %121
%123 = load double*, double** %9
%124 = load i64, i64* %7
%125 = load i32, i32* %8
%126 = sext i32 %125 to i64
%127 = sub nsw i64 %124, %126
%128 = add nsw i64 %127, 2
%129 = getelementptr inbounds double, double* %123, i64 %128
%130 = load double, double* %129
%131 = fsub double %122, %130
%132 = load double, double* %14
%133 = fmul double %132, %131
store double %133, double* %14
%134 = load double*, double** %9
%135 = load i64, i64* %7
%136 = load i32, i32* %8
%137 = sext i32 %136 to i64
%138 = sub nsw i64 %135, %137
%139 = add nsw i64 %138, 1
%140 = getelementptr inbounds double, double* %134, i64 %139
%141 = load double, double* %140
%142 = load double*, double** %9
%143 = load i64, i64* %7
%144 = load i32, i32* %8
%145 = sext i32 %144 to i64
%146 = sub nsw i64 %143, %145
%147 = add nsw i64 %146, 3
%148 = getelementptr inbounds double, double* %142, i64 %147
%149 = load double, double* %148
%150 = fsub double %141, %149
%151 = load double, double* %14
%152 = fmul double %151, %150
store double %152, double* %14
%153 = load double, double* %12
%154 = load double, double* %14
%155 = fdiv double %153, %154
%156 = load double*, double** %9
%157 = load i64, i64* %7
%158 = load i32, i32* %8
%159 = sext i32 %158 to i64
%160 = sub nsw i64 %157, %159
%161 = add nsw i64 %160, 0
%162 = add nsw i64 %161, 1
%163 = getelementptr inbounds double, double* %156, i64 %162
%164 = load double, double* %163
%165 = load double*, double** %9
%166 = load i64, i64* %7
%167 = load i32, i32* %8
%168 = sext i32 %167 to i64
%169 = sub nsw i64 %166, %168
%170 = add nsw i64 %169, 0
%171 = getelementptr inbounds double, double* %165, i64 %170
%172 = load double, double* %171
%173 = fsub double %164, %172
%174 = load double, double* %11
%175 = call double @llvm.fmuladd.f64(double %155, double %173, double %174)
store double %175, double* %11
store double 0.000000e+00, double* %12
store double 1.000000e+00, double* %13
%176 = load double, double* %6
%177 = load double*, double** %9
%178 = load i64, i64* %7
%179 = load i32, i32* %8
%180 = sext i32 %179 to i64
%181 = sub nsw i64 %178, %180
%182 = add nsw i64 %181, 1
%183 = getelementptr inbounds double, double* %177, i64 %182
%184 = load double, double* %183
%185 = fsub double %176, %184
%186 = load double, double* %13
%187 = fmul double %186, %185
store double %187, double* %13
%188 = load double, double* %6
%189 = load double*, double** %9
%190 = load i64, i64* %7
%191 = load i32, i32* %8
%192 = sext i32 %191 to i64
%193 = sub nsw i64 %190, %192
%194 = add nsw i64 %193, 3
%195 = getelementptr inbounds double, double* %189, i64 %194
%196 = load double, double* %195
%197 = fsub double %188, %196
%198 = load double, double* %13
%199 = fmul double %198, %197
store double %199, double* %13
%200 = load double, double* %13
%201 = load double, double* %12
%202 = fadd double %201, %200
store double %202, double* %12
store double 1.000000e+00, double* %13
%203 = load double, double* %6
%204 = load double*, double** %9
%205 = load i64, i64* %7
%206 = load i32, i32* %8
%207 = sext i32 %206 to i64
%208 = sub nsw i64 %205, %207
%209 = add nsw i64 %208, 0
%210 = getelementptr inbounds double, double* %204, i64 %209
%211 = load double, double* %210
%212 = fsub double %203, %211
%213 = load double, double* %13
%214 = fmul double %213, %212
store double %214, double* %13
%215 = load double, double* %6
%216 = load double*, double** %9
%217 = load i64, i64* %7
%218 = load i32, i32* %8
%219 = sext i32 %218 to i64
%220 = sub nsw i64 %217, %219
%221 = add nsw i64 %220, 3
%222 = getelementptr inbounds double, double* %216, i64 %221
%223 = load double, double* %222
%224 = fsub double %215, %223
%225 = load double, double* %13
%226 = fmul double %225, %224
store double %226, double* %13
%227 = load double, double* %13
%228 = load double, double* %12
%229 = fadd double %228, %227
store double %229, double* %12
store double 1.000000e+00, double* %13
%230 = load double, double* %6
%231 = load double*, double** %9
%232 = load i64, i64* %7
%233 = load i32, i32* %8
%234 = sext i32 %233 to i64
%235 = sub nsw i64 %232, %234
%236 = add nsw i64 %235, 0
%237 = getelementptr inbounds double, double* %231, i64 %236
%238 = load double, double* %237
%239 = fsub double %230, %238
%240 = load double, double* %13
%241 = fmul double %240, %239
store double %241, double* %13
%242 = load double, double* %6
%243 = load double*, double** %9
%244 = load i64, i64* %7
%245 = load i32, i32* %8
%246 = sext i32 %245 to i64
%247 = sub nsw i64 %244, %246
%248 = add nsw i64 %247, 1
%249 = getelementptr inbounds double, double* %243, i64 %248
%250 = load double, double* %249
%251 = fsub double %242, %250
%252 = load double, double* %13
%253 = fmul double %252, %251
store double %253, double* %13
%254 = load double, double* %13
%255 = load double, double* %12
%256 = fadd double %255, %254
store double %256, double* %12
store double 1.000000e+00, double* %14
%257 = load double*, double** %9
%258 = load i64, i64* %7
%259 = load i32, i32* %8
%260 = sext i32 %259 to i64
%261 = sub nsw i64 %258, %260
%262 = add nsw i64 %261, 2
%263 = getelementptr inbounds double, double* %257, i64 %262
%264 = load double, double* %263
%265 = load double*, double** %9
%266 = load i64, i64* %7
%267 = load i32, i32* %8
%268 = sext i32 %267 to i64
%269 = sub nsw i64 %266, %268
%270 = add nsw i64 %269, 0
%271 = getelementptr inbounds double, double* %265, i64 %270
%272 = load double, double* %271
%273 = fsub double %264, %272
%274 = load double, double* %14
%275 = fmul double %274, %273
store double %275, double* %14
%276 = load double*, double** %9
%277 = load i64, i64* %7
%278 = load i32, i32* %8
%279 = sext i32 %278 to i64
%280 = sub nsw i64 %277, %279
%281 = add nsw i64 %280, 2
%282 = getelementptr inbounds double, double* %276, i64 %281
%283 = load double, double* %282
%284 = load double*, double** %9
%285 = load i64, i64* %7
%286 = load i32, i32* %8
%287 = sext i32 %286 to i64
%288 = sub nsw i64 %285, %287
%289 = add nsw i64 %288, 1
%290 = getelementptr inbounds double, double* %284, i64 %289
%291 = load double, double* %290
%292 = fsub double %283, %291
%293 = load double, double* %14
%294 = fmul double %293, %292
store double %294, double* %14
%295 = load double*, double** %9
%296 = load i64, i64* %7
%297 = load i32, i32* %8
%298 = sext i32 %297 to i64
%299 = sub nsw i64 %296, %298
%300 = add nsw i64 %299, 2
%301 = getelementptr inbounds double, double* %295, i64 %300
%302 = load double, double* %301
%303 = load double*, double** %9
%304 = load i64, i64* %7
%305 = load i32, i32* %8
%306 = sext i32 %305 to i64
%307 = sub nsw i64 %304, %306
%308 = add nsw i64 %307, 3
%309 = getelementptr inbounds double, double* %303, i64 %308
%310 = load double, double* %309
%311 = fsub double %302, %310
%312 = load double, double* %14
%313 = fmul double %312, %311
store double %313, double* %14
%314 = load double, double* %12
%315 = load double, double* %14
%316 = fdiv double %314, %315
%317 = load double*, double** %9
%318 = load i64, i64* %7
%319 = load i32, i32* %8
%320 = sext i32 %319 to i64
%321 = sub nsw i64 %318, %320
%322 = add nsw i64 %321, 0
%323 = add nsw i64 %322, 1
%324 = getelementptr inbounds double, double* %317, i64 %323
%325 = load double, double* %324
%326 = load double*, double** %9
%327 = load i64, i64* %7
%328 = load i32, i32* %8
%329 = sext i32 %328 to i64
%330 = sub nsw i64 %327, %329
%331 = add nsw i64 %330, 0
%332 = getelementptr inbounds double, double* %326, i64 %331
%333 = load double, double* %332
%334 = fsub double %325, %333
%335 = load double, double* %11
%336 = call double @llvm.fmuladd.f64(double %316, double %334, double %335)
store double %336, double* %11
store double 0.000000e+00, double* %12
store double 1.000000e+00, double* %13
%337 = load double, double* %6
%338 = load double*, double** %9
%339 = load i64, i64* %7
%340 = load i32, i32* %8
%341 = sext i32 %340 to i64
%342 = sub nsw i64 %339, %341
%343 = add nsw i64 %342, 1
%344 = getelementptr inbounds double, double* %338, i64 %343
%345 = load double, double* %344
%346 = fsub double %337, %345
%347 = load double, double* %13
%348 = fmul double %347, %346
store double %348, double* %13
%349 = load double, double* %6
%350 = load double*, double** %9
%351 = load i64, i64* %7
%352 = load i32, i32* %8
%353 = sext i32 %352 to i64
%354 = sub nsw i64 %351, %353
%355 = add nsw i64 %354, 2
%356 = getelementptr inbounds double, double* %350, i64 %355
%357 = load double, double* %356
%358 = fsub double %349, %357
%359 = load double, double* %13
%360 = fmul double %359, %358
store double %360, double* %13
%361 = load double, double* %13
%362 = load double, double* %12
%363 = fadd double %362, %361
store double %363, double* %12
store double 1.000000e+00, double* %13
%364 = load double, double* %6
%365 = load double*, double** %9
%366 = load i64, i64* %7
%367 = load i32, i32* %8
%368 = sext i32 %367 to i64
%369 = sub nsw i64 %366, %368
%370 = add nsw i64 %369, 0
%371 = getelementptr inbounds double, double* %365, i64 %370
%372 = load double, double* %371
%373 = fsub double %364, %372
%374 = load double, double* %13
%375 = fmul double %374, %373
store double %375, double* %13
%376 = load double, double* %6
%377 = load double*, double** %9
%378 = load i64, i64* %7
%379 = load i32, i32* %8
%380 = sext i32 %379 to i64
%381 = sub nsw i64 %378, %380
%382 = add nsw i64 %381, 2
%383 = getelementptr inbounds double, double* %377, i64 %382
%384 = load double, double* %383
%385 = fsub double %376, %384
%386 = load double, double* %13
%387 = fmul double %386, %385
store double %387, double* %13
%388 = load double, double* %13
%389 = load double, double* %12
%390 = fadd double %389, %388
store double %390, double* %12
store double 1.000000e+00, double* %13
%391 = load double, double* %6
%392 = load double*, double** %9
%393 = load i64, i64* %7
%394 = load i32, i32* %8
%395 = sext i32 %394 to i64
%396 = sub nsw i64 %393, %395
%397 = add nsw i64 %396, 0
%398 = getelementptr inbounds double, double* %392, i64 %397
%399 = load double, double* %398
%400 = fsub double %391, %399
%401 = load double, double* %13
%402 = fmul double %401, %400
store double %402, double* %13
%403 = load double, double* %6
%404 = load double*, double** %9
%405 = load i64, i64* %7
%406 = load i32, i32* %8
%407 = sext i32 %406 to i64
%408 = sub nsw i64 %405, %407
%409 = add nsw i64 %408, 1
%410 = getelementptr inbounds double, double* %404, i64 %409
%411 = load double, double* %410
%412 = fsub double %403, %411
%413 = load double, double* %13
%414 = fmul double %413, %412
store double %414, double* %13
%415 = load double, double* %13
%416 = load double, double* %12
%417 = fadd double %416, %415
store double %417, double* %12
store double 1.000000e+00, double* %14
%418 = load double*, double** %9
%419 = load i64, i64* %7
%420 = load i32, i32* %8
%421 = sext i32 %420 to i64
%422 = sub nsw i64 %419, %421
%423 = add nsw i64 %422, 3
%424 = getelementptr inbounds double, double* %418, i64 %423
%425 = load double, double* %424
%426 = load double*, double** %9
%427 = load i64, i64* %7
%428 = load i32, i32* %8
%429 = sext i32 %428 to i64
%430 = sub nsw i64 %427, %429
%431 = add nsw i64 %430, 0
%432 = getelementptr inbounds double, double* %426, i64 %431
%433 = load double, double* %432
%434 = fsub double %425, %433
%435 = load double, double* %14
%436 = fmul double %435, %434
store double %436, double* %14
%437 = load double*, double** %9
%438 = load i64, i64* %7
%439 = load i32, i32* %8
%440 = sext i32 %439 to i64
%441 = sub nsw i64 %438, %440
%442 = add nsw i64 %441, 3
%443 = getelementptr inbounds double, double* %437, i64 %442
%444 = load double, double* %443
%445 = load double*, double** %9
%446 = load i64, i64* %7
%447 = load i32, i32* %8
%448 = sext i32 %447 to i64
%449 = sub nsw i64 %446, %448
%450 = add nsw i64 %449, 1
%451 = getelementptr inbounds double, double* %445, i64 %450
%452 = load double, double* %451
%453 = fsub double %444, %452
%454 = load double, double* %14
%455 = fmul double %454, %453
store double %455, double* %14
%456 = load double*, double** %9
%457 = load i64, i64* %7
%458 = load i32, i32* %8
%459 = sext i32 %458 to i64
%460 = sub nsw i64 %457, %459
%461 = add nsw i64 %460, 3
%462 = getelementptr inbounds double, double* %456, i64 %461
%463 = load double, double* %462
%464 = load double*, double** %9
%465 = load i64, i64* %7
%466 = load i32, i32* %8
%467 = sext i32 %466 to i64
%468 = sub nsw i64 %465, %467
%469 = add nsw i64 %468, 2
%470 = getelementptr inbounds double, double* %464, i64 %469
%471 = load double, double* %470
%472 = fsub double %463, %471
%473 = load double, double* %14
%474 = fmul double %473, %472
store double %474, double* %14
%475 = load double, double* %12
%476 = load double, double* %14
%477 = fdiv double %475, %476
%478 = load double*, double** %9
%479 = load i64, i64* %7
%480 = load i32, i32* %8
%481 = sext i32 %480 to i64
%482 = sub nsw i64 %479, %481
%483 = add nsw i64 %482, 0
%484 = add nsw i64 %483, 1
%485 = getelementptr inbounds double, double* %478, i64 %484
%486 = load double, double* %485
%487 = load double*, double** %9
%488 = load i64, i64* %7
%489 = load i32, i32* %8
%490 = sext i32 %489 to i64
%491 = sub nsw i64 %488, %490
%492 = add nsw i64 %491, 0
%493 = getelementptr inbounds double, double* %487, i64 %492
%494 = load double, double* %493
%495 = fsub double %486, %494
%496 = load double, double* %11
%497 = call double @llvm.fmuladd.f64(double %477, double %495, double %496)
store double %497, double* %11
%498 = load double, double* %11
%499 = load double*, double** %10
%500 = getelementptr inbounds double, double* %499, i64 0
store double %498, double* %500
store double 0.000000e+00, double* %11
store double 0.000000e+00, double* %12
store double 1.000000e+00, double* %13
%501 = load double, double* %6
%502 = load double*, double** %9
%503 = load i64, i64* %7
%504 = load i32, i32* %8
%505 = sext i32 %504 to i64
%506 = sub nsw i64 %503, %505
%507 = add nsw i64 %506, 1
%508 = getelementptr inbounds double, double* %502, i64 %507
%509 = load double, double* %508
%510 = fsub double %501, %509
%511 = load double, double* %13
%512 = fmul double %511, %510
store double %512, double* %13
%513 = load double, double* %6
%514 = load double*, double** %9
%515 = load i64, i64* %7
%516 = load i32, i32* %8
%517 = sext i32 %516 to i64
%518 = sub nsw i64 %515, %517
%519 = add nsw i64 %518, 3
%520 = getelementptr inbounds double, double* %514, i64 %519
%521 = load double, double* %520
%522 = fsub double %513, %521
%523 = load double, double* %13
%524 = fmul double %523, %522
store double %524, double* %13
%525 = load double, double* %13
%526 = load double, double* %12
%527 = fadd double %526, %525
store double %527, double* %12
store double 1.000000e+00, double* %13
%528 = load double, double* %6
%529 = load double*, double** %9
%530 = load i64, i64* %7
%531 = load i32, i32* %8
%532 = sext i32 %531 to i64
%533 = sub nsw i64 %530, %532
%534 = add nsw i64 %533, 0
%535 = getelementptr inbounds double, double* %529, i64 %534
%536 = load double, double* %535
%537 = fsub double %528, %536
%538 = load double, double* %13
%539 = fmul double %538, %537
store double %539, double* %13
%540 = load double, double* %6
%541 = load double*, double** %9
%542 = load i64, i64* %7
%543 = load i32, i32* %8
%544 = sext i32 %543 to i64
%545 = sub nsw i64 %542, %544
%546 = add nsw i64 %545, 3
%547 = getelementptr inbounds double, double* %541, i64 %546
%548 = load double, double* %547
%549 = fsub double %540, %548
%550 = load double, double* %13
%551 = fmul double %550, %549
store double %551, double* %13
%552 = load double, double* %13
%553 = load double, double* %12
%554 = fadd double %553, %552
store double %554, double* %12
store double 1.000000e+00, double* %13
%555 = load double, double* %6
%556 = load double*, double** %9
%557 = load i64, i64* %7
%558 = load i32, i32* %8
%559 = sext i32 %558 to i64
%560 = sub nsw i64 %557, %559
%561 = add nsw i64 %560, 0
%562 = getelementptr inbounds double, double* %556, i64 %561
%563 = load double, double* %562
%564 = fsub double %555, %563
%565 = load double, double* %13
%566 = fmul double %565, %564
store double %566, double* %13
%567 = load double, double* %6
%568 = load double*, double** %9
%569 = load i64, i64* %7
%570 = load i32, i32* %8
%571 = sext i32 %570 to i64
%572 = sub nsw i64 %569, %571
%573 = add nsw i64 %572, 1
%574 = getelementptr inbounds double, double* %568, i64 %573
%575 = load double, double* %574
%576 = fsub double %567, %575
%577 = load double, double* %13
%578 = fmul double %577, %576
store double %578, double* %13
%579 = load double, double* %13
%580 = load double, double* %12
%581 = fadd double %580, %579
store double %581, double* %12
store double 1.000000e+00, double* %14
%582 = load double*, double** %9
%583 = load i64, i64* %7
%584 = load i32, i32* %8
%585 = sext i32 %584 to i64
%586 = sub nsw i64 %583, %585
%587 = add nsw i64 %586, 2
%588 = getelementptr inbounds double, double* %582, i64 %587
%589 = load double, double* %588
%590 = load double*, double** %9
%591 = load i64, i64* %7
%592 = load i32, i32* %8
%593 = sext i32 %592 to i64
%594 = sub nsw i64 %591, %593
%595 = add nsw i64 %594, 0
%596 = getelementptr inbounds double, double* %590, i64 %595
%597 = load double, double* %596
%598 = fsub double %589, %597
%599 = load double, double* %14
%600 = fmul double %599, %598
store double %600, double* %14
%601 = load double*, double** %9
%602 = load i64, i64* %7
%603 = load i32, i32* %8
%604 = sext i32 %603 to i64
%605 = sub nsw i64 %602, %604
%606 = add nsw i64 %605, 2
%607 = getelementptr inbounds double, double* %601, i64 %606
%608 = load double, double* %607
%609 = load double*, double** %9
%610 = load i64, i64* %7
%611 = load i32, i32* %8
%612 = sext i32 %611 to i64
%613 = sub nsw i64 %610, %612
%614 = add nsw i64 %613, 1
%615 = getelementptr inbounds double, double* %609, i64 %614
%616 = load double, double* %615
%617 = fsub double %608, %616
%618 = load double, double* %14
%619 = fmul double %618, %617
store double %619, double* %14
%620 = load double*, double** %9
%621 = load i64, i64* %7
%622 = load i32, i32* %8
%623 = sext i32 %622 to i64
%624 = sub nsw i64 %621, %623
%625 = add nsw i64 %624, 2
%626 = getelementptr inbounds double, double* %620, i64 %625
%627 = load double, double* %626
%628 = load double*, double** %9
%629 = load i64, i64* %7
%630 = load i32, i32* %8
%631 = sext i32 %630 to i64
%632 = sub nsw i64 %629, %631
%633 = add nsw i64 %632, 3
%634 = getelementptr inbounds double, double* %628, i64 %633
%635 = load double, double* %634
%636 = fsub double %627, %635
%637 = load double, double* %14
%638 = fmul double %637, %636
store double %638, double* %14
%639 = load double, double* %12
%640 = load double, double* %14
%641 = fdiv double %639, %640
%642 = load double*, double** %9
%643 = load i64, i64* %7
%644 = load i32, i32* %8
%645 = sext i32 %644 to i64
%646 = sub nsw i64 %643, %645
%647 = add nsw i64 %646, 1
%648 = add nsw i64 %647, 1
%649 = getelementptr inbounds double, double* %642, i64 %648
%650 = load double, double* %649
%651 = load double*, double** %9
%652 = load i64, i64* %7
%653 = load i32, i32* %8
%654 = sext i32 %653 to i64
%655 = sub nsw i64 %652, %654
%656 = add nsw i64 %655, 1
%657 = getelementptr inbounds double, double* %651, i64 %656
%658 = load double, double* %657
%659 = fsub double %650, %658
%660 = load double, double* %11
%661 = call double @llvm.fmuladd.f64(double %641, double %659, double %660)
store double %661, double* %11
store double 0.000000e+00, double* %12
store double 1.000000e+00, double* %13
%662 = load double, double* %6
%663 = load double*, double** %9
%664 = load i64, i64* %7
%665 = load i32, i32* %8
%666 = sext i32 %665 to i64
%667 = sub nsw i64 %664, %666
%668 = add nsw i64 %667, 1
%669 = getelementptr inbounds double, double* %663, i64 %668
%670 = load double, double* %669
%671 = fsub double %662, %670
%672 = load double, double* %13
%673 = fmul double %672, %671
store double %673, double* %13
%674 = load double, double* %6
%675 = load double*, double** %9
%676 = load i64, i64* %7
%677 = load i32, i32* %8
%678 = sext i32 %677 to i64
%679 = sub nsw i64 %676, %678
%680 = add nsw i64 %679, 2
%681 = getelementptr inbounds double, double* %675, i64 %680
%682 = load double, double* %681
%683 = fsub double %674, %682
%684 = load double, double* %13
%685 = fmul double %684, %683
store double %685, double* %13
%686 = load double, double* %13
%687 = load double, double* %12
%688 = fadd double %687, %686
store double %688, double* %12
store double 1.000000e+00, double* %13
%689 = load double, double* %6
%690 = load double*, double** %9
%691 = load i64, i64* %7
%692 = load i32, i32* %8
%693 = sext i32 %692 to i64
%694 = sub nsw i64 %691, %693
%695 = add nsw i64 %694, 0
%696 = getelementptr inbounds double, double* %690, i64 %695
%697 = load double, double* %696
%698 = fsub double %689, %697
%699 = load double, double* %13
%700 = fmul double %699, %698
store double %700, double* %13
%701 = load double, double* %6
%702 = load double*, double** %9
%703 = load i64, i64* %7
%704 = load i32, i32* %8
%705 = sext i32 %704 to i64
%706 = sub nsw i64 %703, %705
%707 = add nsw i64 %706, 2
%708 = getelementptr inbounds double, double* %702, i64 %707
%709 = load double, double* %708
%710 = fsub double %701, %709
%711 = load double, double* %13
%712 = fmul double %711, %710
store double %712, double* %13
%713 = load double, double* %13
%714 = load double, double* %12
%715 = fadd double %714, %713
store double %715, double* %12
store double 1.000000e+00, double* %13
%716 = load double, double* %6
%717 = load double*, double** %9
%718 = load i64, i64* %7
%719 = load i32, i32* %8
%720 = sext i32 %719 to i64
%721 = sub nsw i64 %718, %720
%722 = add nsw i64 %721, 0
%723 = getelementptr inbounds double, double* %717, i64 %722
%724 = load double, double* %723
%725 = fsub double %716, %724
%726 = load double, double* %13
%727 = fmul double %726, %725
store double %727, double* %13
%728 = load double, double* %6
%729 = load double*, double** %9
%730 = load i64, i64* %7
%731 = load i32, i32* %8
%732 = sext i32 %731 to i64
%733 = sub nsw i64 %730, %732
%734 = add nsw i64 %733, 1
%735 = getelementptr inbounds double, double* %729, i64 %734
%736 = load double, double* %735
%737 = fsub double %728, %736
%738 = load double, double* %13
%739 = fmul double %738, %737
store double %739, double* %13
%740 = load double, double* %13
%741 = load double, double* %12
%742 = fadd double %741, %740
store double %742, double* %12
store double 1.000000e+00, double* %14
%743 = load double*, double** %9
%744 = load i64, i64* %7
%745 = load i32, i32* %8
%746 = sext i32 %745 to i64
%747 = sub nsw i64 %744, %746
%748 = add nsw i64 %747, 3
%749 = getelementptr inbounds double, double* %743, i64 %748
%750 = load double, double* %749
%751 = load double*, double** %9
%752 = load i64, i64* %7
%753 = load i32, i32* %8
%754 = sext i32 %753 to i64
%755 = sub nsw i64 %752, %754
%756 = add nsw i64 %755, 0
%757 = getelementptr inbounds double, double* %751, i64 %756
%758 = load double, double* %757
%759 = fsub double %750, %758
%760 = load double, double* %14
%761 = fmul double %760, %759
store double %761, double* %14
%762 = load double*, double** %9
%763 = load i64, i64* %7
%764 = load i32, i32* %8
%765 = sext i32 %764 to i64
%766 = sub nsw i64 %763, %765
%767 = add nsw i64 %766, 3
%768 = getelementptr inbounds double, double* %762, i64 %767
%769 = load double, double* %768
%770 = load double*, double** %9
%771 = load i64, i64* %7
%772 = load i32, i32* %8
%773 = sext i32 %772 to i64
%774 = sub nsw i64 %771, %773
%775 = add nsw i64 %774, 1
%776 = getelementptr inbounds double, double* %770, i64 %775
%777 = load double, double* %776
%778 = fsub double %769, %777
%779 = load double, double* %14
%780 = fmul double %779, %778
store double %780, double* %14
%781 = load double*, double** %9
%782 = load i64, i64* %7
%783 = load i32, i32* %8
%784 = sext i32 %783 to i64
%785 = sub nsw i64 %782, %784
%786 = add nsw i64 %785, 3
%787 = getelementptr inbounds double, double* %781, i64 %786
%788 = load double, double* %787
%789 = load double*, double** %9
%790 = load i64, i64* %7
%791 = load i32, i32* %8
%792 = sext i32 %791 to i64
%793 = sub nsw i64 %790, %792
%794 = add nsw i64 %793, 2
%795 = getelementptr inbounds double, double* %789, i64 %794
%796 = load double, double* %795
%797 = fsub double %788, %796
%798 = load double, double* %14
%799 = fmul double %798, %797
store double %799, double* %14
%800 = load double, double* %12
%801 = load double, double* %14
%802 = fdiv double %800, %801
%803 = load double*, double** %9
%804 = load i64, i64* %7
%805 = load i32, i32* %8
%806 = sext i32 %805 to i64
%807 = sub nsw i64 %804, %806
%808 = add nsw i64 %807, 1
%809 = add nsw i64 %808, 1
%810 = getelementptr inbounds double, double* %803, i64 %809
%811 = load double, double* %810
%812 = load double*, double** %9
%813 = load i64, i64* %7
%814 = load i32, i32* %8
%815 = sext i32 %814 to i64
%816 = sub nsw i64 %813, %815
%817 = add nsw i64 %816, 1
%818 = getelementptr inbounds double, double* %812, i64 %817
%819 = load double, double* %818
%820 = fsub double %811, %819
%821 = load double, double* %11
%822 = call double @llvm.fmuladd.f64(double %802, double %820, double %821)
store double %822, double* %11
%823 = load double, double* %11
%824 = load double*, double** %10
%825 = getelementptr inbounds double, double* %824, i64 1
store double %823, double* %825
store double 0.000000e+00, double* %11
store double 0.000000e+00, double* %12
store double 1.000000e+00, double* %13
%826 = load double, double* %6
%827 = load double*, double** %9
%828 = load i64, i64* %7
%829 = load i32, i32* %8
%830 = sext i32 %829 to i64
%831 = sub nsw i64 %828, %830
%832 = add nsw i64 %831, 1
%833 = getelementptr inbounds double, double* %827, i64 %832
%834 = load double, double* %833
%835 = fsub double %826, %834
%836 = load double, double* %13
%837 = fmul double %836, %835
store double %837, double* %13
%838 = load double, double* %6
%839 = load double*, double** %9
%840 = load i64, i64* %7
%841 = load i32, i32* %8
%842 = sext i32 %841 to i64
%843 = sub nsw i64 %840, %842
%844 = add nsw i64 %843, 2
%845 = getelementptr inbounds double, double* %839, i64 %844
%846 = load double, double* %845
%847 = fsub double %838, %846
%848 = load double, double* %13
%849 = fmul double %848, %847
store double %849, double* %13
%850 = load double, double* %13
%851 = load double, double* %12
%852 = fadd double %851, %850
store double %852, double* %12
store double 1.000000e+00, double* %13
%853 = load double, double* %6
%854 = load double*, double** %9
%855 = load i64, i64* %7
%856 = load i32, i32* %8
%857 = sext i32 %856 to i64
%858 = sub nsw i64 %855, %857
%859 = add nsw i64 %858, 0
%860 = getelementptr inbounds double, double* %854, i64 %859
%861 = load double, double* %860
%862 = fsub double %853, %861
%863 = load double, double* %13
%864 = fmul double %863, %862
store double %864, double* %13
%865 = load double, double* %6
%866 = load double*, double** %9
%867 = load i64, i64* %7
%868 = load i32, i32* %8
%869 = sext i32 %868 to i64
%870 = sub nsw i64 %867, %869
%871 = add nsw i64 %870, 2
%872 = getelementptr inbounds double, double* %866, i64 %871
%873 = load double, double* %872
%874 = fsub double %865, %873
%875 = load double, double* %13
%876 = fmul double %875, %874
store double %876, double* %13
%877 = load double, double* %13
%878 = load double, double* %12
%879 = fadd double %878, %877
store double %879, double* %12
store double 1.000000e+00, double* %13
%880 = load double, double* %6
%881 = load double*, double** %9
%882 = load i64, i64* %7
%883 = load i32, i32* %8
%884 = sext i32 %883 to i64
%885 = sub nsw i64 %882, %884
%886 = add nsw i64 %885, 0
%887 = getelementptr inbounds double, double* %881, i64 %886
%888 = load double, double* %887
%889 = fsub double %880, %888
%890 = load double, double* %13
%891 = fmul double %890, %889
store double %891, double* %13
%892 = load double, double* %6
%893 = load double*, double** %9
%894 = load i64, i64* %7
%895 = load i32, i32* %8
%896 = sext i32 %895 to i64
%897 = sub nsw i64 %894, %896
%898 = add nsw i64 %897, 1
%899 = getelementptr inbounds double, double* %893, i64 %898
%900 = load double, double* %899
%901 = fsub double %892, %900
%902 = load double, double* %13
%903 = fmul double %902, %901
store double %903, double* %13
%904 = load double, double* %13
%905 = load double, double* %12
%906 = fadd double %905, %904
store double %906, double* %12
store double 1.000000e+00, double* %14
%907 = load double*, double** %9
%908 = load i64, i64* %7
%909 = load i32, i32* %8
%910 = sext i32 %909 to i64
%911 = sub nsw i64 %908, %910
%912 = add nsw i64 %911, 3
%913 = getelementptr inbounds double, double* %907, i64 %912
%914 = load double, double* %913
%915 = load double*, double** %9
%916 = load i64, i64* %7
%917 = load i32, i32* %8
%918 = sext i32 %917 to i64
%919 = sub nsw i64 %916, %918
%920 = add nsw i64 %919, 0
%921 = getelementptr inbounds double, double* %915, i64 %920
%922 = load double, double* %921
%923 = fsub double %914, %922
%924 = load double, double* %14
%925 = fmul double %924, %923
store double %925, double* %14
%926 = load double*, double** %9
%927 = load i64, i64* %7
%928 = load i32, i32* %8
%929 = sext i32 %928 to i64
%930 = sub nsw i64 %927, %929
%931 = add nsw i64 %930, 3
%932 = getelementptr inbounds double, double* %926, i64 %931
%933 = load double, double* %932
%934 = load double*, double** %9
%935 = load i64, i64* %7
%936 = load i32, i32* %8
%937 = sext i32 %936 to i64
%938 = sub nsw i64 %935, %937
%939 = add nsw i64 %938, 1
%940 = getelementptr inbounds double, double* %934, i64 %939
%941 = load double, double* %940
%942 = fsub double %933, %941
%943 = load double, double* %14
%944 = fmul double %943, %942
store double %944, double* %14
%945 = load double*, double** %9
%946 = load i64, i64* %7
%947 = load i32, i32* %8
%948 = sext i32 %947 to i64
%949 = sub nsw i64 %946, %948
%950 = add nsw i64 %949, 3
%951 = getelementptr inbounds double, double* %945, i64 %950
%952 = load double, double* %951
%953 = load double*, double** %9
%954 = load i64, i64* %7
%955 = load i32, i32* %8
%956 = sext i32 %955 to i64
%957 = sub nsw i64 %954, %956
%958 = add nsw i64 %957, 2
%959 = getelementptr inbounds double, double* %953, i64 %958
%960 = load double, double* %959
%961 = fsub double %952, %960
%962 = load double, double* %14
%963 = fmul double %962, %961
store double %963, double* %14
%964 = load double, double* %12
%965 = load double, double* %14
%966 = fdiv double %964, %965
%967 = load double*, double** %9
%968 = load i64, i64* %7
%969 = load i32, i32* %8
%970 = sext i32 %969 to i64
%971 = sub nsw i64 %968, %970
%972 = add nsw i64 %971, 2
%973 = add nsw i64 %972, 1
%974 = getelementptr inbounds double, double* %967, i64 %973
%975 = load double, double* %974
%976 = load double*, double** %9
%977 = load i64, i64* %7
%978 = load i32, i32* %8
%979 = sext i32 %978 to i64
%980 = sub nsw i64 %977, %979
%981 = add nsw i64 %980, 2
%982 = getelementptr inbounds double, double* %976, i64 %981
%983 = load double, double* %982
%984 = fsub double %975, %983
%985 = load double, double* %11
%986 = call double @llvm.fmuladd.f64(double %966, double %984, double %985)
store double %986, double* %11
%987 = load double, double* %11
%988 = load double*, double** %10
%989 = getelementptr inbounds double, double* %988, i64 2
store double %987, double* %989
ret void
}

LLVM IR (-O2):
define void @coeffs003(double %0, i64 %1, i32 %2, double* nocapture %3, double* nocapture writeonly %4) {
%6 = sext i32 %2 to i64
%7 = sub nsw i64 %1, %6
%8 = add nsw i64 %7, 2
%9 = getelementptr inbounds double, double* %3, i64 %8
%10 = load double, double* %9
%11 = fsub double %0, %10
%12 = add nsw i64 %7, 3
%13 = getelementptr inbounds double, double* %3, i64 %12
%14 = load double, double* %13
%15 = fsub double %0, %14
%16 = fmul double %11, %15
%17 = fadd double %16, 0.000000e+00
%18 = getelementptr inbounds double, double* %3, i64 %7
%19 = load double, double* %18
%20 = fsub double %0, %19
%21 = fmul double %15, %20
%22 = fadd double %17, %21
%23 = fmul double %11, %20
%24 = fadd double %23, %22
%25 = add nsw i64 %7, 1
%26 = getelementptr inbounds double, double* %3, i64 %25
%27 = load double, double* %26
%28 = fsub double %27, %19
%29 = fsub double %27, %10
%30 = fmul double %28, %29
%31 = fsub double %27, %14
%32 = fmul double %31, %30
%33 = fdiv double %24, %32
%34 = tail call double @llvm.fmuladd.f64(double %33, double %28, double 0.000000e+00)
%35 = fsub double %0, %27
%36 = fmul double %15, %35
%37 = fadd double %36, 0.000000e+00
%38 = fadd double %21, %37
%39 = fmul double %20, %35
%40 = fadd double %39, %38
%41 = fsub double %10, %19
%42 = fsub double %10, %27
%43 = fmul double %41, %42
%44 = fsub double %10, %14
%45 = fmul double %44, %43
%46 = fdiv double %40, %45
%47 = tail call double @llvm.fmuladd.f64(double %46, double %28, double %34)
%48 = fmul double %11, %35
%49 = fadd double %48, 0.000000e+00
%50 = fadd double %23, %49
%51 = fadd double %39, %50
%52 = fsub double %14, %19
%53 = fsub double %14, %27
%54 = fmul double %52, %53
%55 = fsub double %14, %10
%56 = fmul double %55, %54
%57 = fdiv double %51, %56
%58 = tail call double @llvm.fmuladd.f64(double %57, double %28, double %47)
store double %58, double* %4
%59 = load double, double* %26
%60 = fsub double %0, %59
%61 = load double, double* %13
%62 = fsub double %0, %61
%63 = fmul double %60, %62
%64 = fadd double %63, 0.000000e+00
%65 = load double, double* %18
%66 = fsub double %0, %65
%67 = fmul double %62, %66
%68 = fadd double %64, %67
%69 = fmul double %60, %66
%70 = fadd double %69, %68
%71 = load double, double* %9
%72 = fsub double %71, %65
%73 = fsub double %71, %59
%74 = fmul double %72, %73
%75 = fsub double %71, %61
%76 = fmul double %75, %74
%77 = fdiv double %70, %76
%78 = tail call double @llvm.fmuladd.f64(double %77, double %73, double 0.000000e+00)
%79 = fsub double %0, %71
%80 = fmul double %60, %79
%81 = fadd double %80, 0.000000e+00
%82 = fmul double %66, %79
%83 = fadd double %82, %81
%84 = fadd double %69, %83
%85 = fsub double %61, %65
%86 = fsub double %61, %59
%87 = fmul double %86, %85
%88 = fsub double %61, %71
%89 = fmul double %87, %88
%90 = fdiv double %84, %89
%91 = tail call double @llvm.fmuladd.f64(double %90, double %73, double %78)
%92 = getelementptr inbounds double, double* %4, i64 1
store double %91, double* %92
%93 = load double, double* %26
%94 = fsub double %0, %93
%95 = load double, double* %9
%96 = fsub double %0, %95
%97 = fmul double %94, %96
%98 = fadd double %97, 0.000000e+00
%99 = load double, double* %18
%100 = fsub double %0, %99
%101 = fmul double %96, %100
%102 = fadd double %98, %101
%103 = fmul double %94, %100
%104 = fadd double %103, %102
%105 = load double, double* %13
%106 = fsub double %105, %99
%107 = fsub double %105, %93
%108 = fmul double %106, %107
%109 = fsub double %105, %95
%110 = fmul double %109, %108
%111 = fdiv double %104, %110
%112 = tail call double @llvm.fmuladd.f64(double %111, double %109, double 0.000000e+00)
%113 = getelementptr inbounds double, double* %4, i64 2
store double %112, double* %113
ret void
}