#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 SL_G1(int, int);
double SL_G2(int, int);
void twobody_ZM_slip_16(int n, double l, double *f, double *fk) {
  int q;
  for (q = 0; q <= 16; q++)
    fk[q] = 0.0;
  fk[9] = 18923520.0 * SL_G1(0, 5) * SL_G1(0, 5) * SL_G2(2, 11);
  fk[10] = 25600.0 * SL_G1(2, 5) * SL_G1(2, 5) * SL_G1(2, 5) *
           (7.0 * SL_G2(2, 7) + 8.0 * SL_G2(-1, 4)) *
           (7.0 * SL_G2(2, 7) + 8.0 * SL_G2(-1, 4)) / 9.0;
  fk[11] = -81920.0 * SL_G1(0, 5) * SL_G1(2, 5) *
           (416.0 * SL_G2(2, 13) - 105.0 * SL_G2(0, 2) * SL_G2(2, 11) -
            105.0 * SL_G2(0, 11));
  fk[13] = 204800.0 * SL_G1(2, 5) * SL_G1(2, 5) *
           (22275.0 * SL_G2(2, 15) - 13728.0 * SL_G2(0, 2) * SL_G2(2, 13) -
            13728.0 * SL_G2(0, 13) + 8190.0 * SL_G2(0, 2) * SL_G2(0, 11) +
            2288.0 * SL_G2(-5, 8) + 280.0 * SL_G2(-11, 2)) /
           429.0;
  f[16] = 0.0;
  for (q = 0; q <= 16; q++)
    f[16] = f[16] * l + fk[16 - q];
}


x86 assembly (clang, -O0):
<twobody_ZM_slip_16>:
push   %rbp
mov    %rsp,%rbp
sub    $0xe0,%rsp
mov    %edi,-0x4(%rbp)
movsd  %xmm0,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
cmpl   $0x10,-0x24(%rbp)
jg     116a <twobody_ZM_slip_16+0x4a>
mov    -0x20(%rbp),%rax
movslq -0x24(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1142 <twobody_ZM_slip_16+0x22>
xor    %edi,%edi
mov    $0x5,%esi
call   1040 <SL_G1@plt>
movaps %xmm0,%xmm1
movsd  0xeff(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
xor    %edi,%edi
mov    $0x5,%esi
call   1040 <SL_G1@plt>
movaps %xmm0,%xmm1
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    $0x2,%edi
mov    $0xb,%esi
call   1030 <SL_G2@plt>
movaps %xmm0,%xmm1
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x48(%rax)
mov    $0x2,%edi
mov    $0x5,%esi
call   1040 <SL_G1@plt>
movaps %xmm0,%xmm1
movsd  0xe87(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    $0x2,%edi
mov    $0x5,%esi
call   1040 <SL_G1@plt>
movaps %xmm0,%xmm1
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    $0x2,%edi
mov    $0x5,%esi
call   1040 <SL_G1@plt>
movaps %xmm0,%xmm1
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    $0x2,%edi
mov    $0x7,%esi
call   1030 <SL_G2@plt>
movsd  %xmm0,-0xb8(%rbp)
ff
mov    $0xffffffff,%edi
mov    $0x4,%esi
call   1030 <SL_G2@plt>
movsd  -0xb8(%rbp),%xmm1
ff
movaps %xmm0,%xmm3
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0xde6(%rip),%xmm2
mulsd  %xmm3,%xmm2
movsd  0xdd2(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    $0x2,%edi
mov    $0x7,%esi
call   1030 <SL_G2@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
mov    $0xffffffff,%edi
mov    $0x4,%esi
call   1030 <SL_G2@plt>
movsd  -0xa8(%rbp),%xmm1
ff
movaps %xmm0,%xmm3
movsd  -0xa0(%rbp),%xmm0
ff
movsd  0xd85(%rip),%xmm2
mulsd  %xmm3,%xmm2
movsd  0xd71(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd55(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x50(%rax)
xor    %edi,%edi
mov    $0x5,%esi
call   1040 <SL_G1@plt>
movaps %xmm0,%xmm1
movsd  0xd29(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    $0x2,%edi
mov    $0x5,%esi
call   1040 <SL_G1@plt>
movaps %xmm0,%xmm1
movsd  -0x98(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    $0x2,%edi
mov    $0xd,%esi
call   1030 <SL_G2@plt>
movsd  %xmm0,-0x88(%rbp)
ff
xor    %edi,%edi
mov    $0x2,%esi
call   1030 <SL_G2@plt>
movaps %xmm0,%xmm1
movsd  0xcc4(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    $0x2,%edi
mov    $0xb,%esi
call   1030 <SL_G2@plt>
movsd  -0x90(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x88(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xc6b(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
xor    %edi,%edi
mov    $0xb,%esi
call   1030 <SL_G2@plt>
movsd  -0x80(%rbp),%xmm2
movaps %xmm0,%xmm1
movsd  -0x78(%rbp),%xmm0
movsd  0xc35(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x58(%rax)
mov    $0x2,%edi
mov    $0x5,%esi
call   1040 <SL_G1@plt>
movaps %xmm0,%xmm1
movsd  0xbfe(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    $0x2,%edi
mov    $0x5,%esi
call   1040 <SL_G1@plt>
movaps %xmm0,%xmm1
movsd  -0x70(%rbp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    $0x2,%edi
mov    $0xf,%esi
call   1030 <SL_G2@plt>
movsd  %xmm0,-0x60(%rbp)
xor    %edi,%edi
mov    $0x2,%esi
call   1030 <SL_G2@plt>
movaps %xmm0,%xmm1
movsd  0xba2(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    $0x2,%edi
mov    $0xd,%esi
call   1030 <SL_G2@plt>
movsd  -0x68(%rbp),%xmm1
movaps %xmm0,%xmm2
movsd  -0x60(%rbp),%xmm0
mulsd  %xmm2,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xb52(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
xor    %edi,%edi
mov    $0xd,%esi
call   1030 <SL_G2@plt>
movsd  -0x58(%rbp),%xmm1
movsd  0xb24(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
xor    %edi,%edi
mov    $0x2,%esi
call   1030 <SL_G2@plt>
movaps %xmm0,%xmm1
movsd  0xaf8(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
xor    %edi,%edi
mov    $0xb,%esi
call   1030 <SL_G2@plt>
movsd  -0x50(%rbp),%xmm1
movaps %xmm0,%xmm2
movsd  -0x48(%rbp),%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    $0xfffffffb,%edi
mov    $0x8,%esi
call   1030 <SL_G2@plt>
movsd  -0x40(%rbp),%xmm1
movsd  0xaa5(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    $0xfffffff5,%edi
mov    $0x2,%esi
call   1030 <SL_G2@plt>
movsd  -0x38(%rbp),%xmm2
movaps %xmm0,%xmm1
movsd  -0x30(%rbp),%xmm0
movsd  0xa6c(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa50(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x68(%rax)
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x80(%rax)
movl   $0x0,-0x24(%rbp)
cmpl   $0x10,-0x24(%rbp)
jg     1624 <twobody_ZM_slip_16+0x504>
mov    -0x18(%rbp),%rax
movsd  0x80(%rax),%xmm0
movsd  -0x10(%rbp),%xmm2
mov    -0x20(%rbp),%rax
mov    $0x10,%ecx
sub    -0x24(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x80(%rax)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    15d3 <twobody_ZM_slip_16+0x4b3>
add    $0xe0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<twobody_ZM_slip_16>:
push   %r14
push   %rbx
sub    $0x28,%rsp
mov    %rdx,%rbx
mov    %rsi,%r14
movsd  %xmm0,0x20(%rsp)
xorpd  %xmm0,%xmm0
movupd %xmm0,0x70(%rdx)
movupd %xmm0,0x60(%rdx)
movupd %xmm0,0x50(%rdx)
movupd %xmm0,0x40(%rdx)
movupd %xmm0,0x30(%rdx)
movupd %xmm0,0x20(%rdx)
movupd %xmm0,0x10(%rdx)
movupd %xmm0,(%rdx)
movq   $0x0,0x80(%rdx)
xor    %edi,%edi
mov    $0x5,%esi
call   1040 <SL_G1@plt>
mulsd  0xe83(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
xor    %edi,%edi
mov    $0x5,%esi
call   1040 <SL_G1@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
mov    $0x2,%edi
mov    $0xb,%esi
call   1030 <SL_G2@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x48(%rbx)
mov    $0x2,%edi
mov    $0x5,%esi
call   1040 <SL_G1@plt>
mulsd  0xe3c(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
mov    $0x2,%edi
mov    $0x5,%esi
call   1040 <SL_G1@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
mov    $0x2,%edi
mov    $0x5,%esi
call   1040 <SL_G1@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
mov    $0x2,%edi
mov    $0x7,%esi
call   1030 <SL_G2@plt>
movsd  %xmm0,0x8(%rsp)
mov    $0xffffffff,%edi
mov    $0x4,%esi
call   1030 <SL_G2@plt>
mulsd  0xddc(%rip),%xmm0
movsd  0x8(%rsp),%xmm1
mulsd  0xdd6(%rip),%xmm1
addsd  %xmm0,%xmm1
mulsd  0x10(%rsp),%xmm1
movsd  %xmm1,0x8(%rsp)
mov    $0x2,%edi
mov    $0x7,%esi
call   1030 <SL_G2@plt>
movsd  %xmm0,0x10(%rsp)
mov    $0xffffffff,%edi
mov    $0x4,%esi
call   1030 <SL_G2@plt>
mulsd  0xd92(%rip),%xmm0
movsd  0x10(%rsp),%xmm1
mulsd  0xd8c(%rip),%xmm1
addsd  %xmm0,%xmm1
mulsd  0x8(%rsp),%xmm1
divsd  0xd82(%rip),%xmm1
movsd  %xmm1,0x50(%rbx)
xor    %edi,%edi
mov    $0x5,%esi
call   1040 <SL_G1@plt>
mulsd  0xd71(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
mov    $0x2,%edi
mov    $0x5,%esi
call   1040 <SL_G1@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
mov    $0x2,%edi
mov    $0xd,%esi
call   1030 <SL_G2@plt>
movsd  %xmm0,0x8(%rsp)
xor    %edi,%edi
mov    $0x2,%esi
call   1030 <SL_G2@plt>
movsd  %xmm0,0x18(%rsp)
mov    $0x2,%edi
mov    $0xb,%esi
call   1030 <SL_G2@plt>
movsd  0x18(%rsp),%xmm2
mulsd  0xd14(%rip),%xmm2
mulsd  %xmm0,%xmm2
movsd  0x8(%rsp),%xmm0
mulsd  0xd0a(%rip),%xmm0
addsd  %xmm2,%xmm0
movsd  %xmm0,0x8(%rsp)
xor    %edi,%edi
mov    $0xb,%esi
call   1030 <SL_G2@plt>
mulsd  0xce4(%rip),%xmm0
addsd  0x8(%rsp),%xmm0
mulsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x58(%rbx)
mov    $0x2,%edi
mov    $0x5,%esi
call   1040 <SL_G1@plt>
mulsd  0xccc(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
mov    $0x2,%edi
mov    $0x5,%esi
call   1040 <SL_G1@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
mov    $0x2,%edi
mov    $0xf,%esi
call   1030 <SL_G2@plt>
movsd  %xmm0,0x8(%rsp)
xor    %edi,%edi
mov    $0x2,%esi
call   1030 <SL_G2@plt>
movsd  %xmm0,0x18(%rsp)
mov    $0x2,%edi
mov    $0xd,%esi
call   1030 <SL_G2@plt>
movsd  0x18(%rsp),%xmm2
mulsd  0xc6f(%rip),%xmm2
mulsd  %xmm0,%xmm2
movsd  0x8(%rsp),%xmm0
mulsd  0xc65(%rip),%xmm0
addsd  %xmm2,%xmm0
movsd  %xmm0,0x8(%rsp)
xor    %edi,%edi
mov    $0xd,%esi
call   1030 <SL_G2@plt>
mulsd  0xc3f(%rip),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
xor    %edi,%edi
mov    $0x2,%esi
call   1030 <SL_G2@plt>
mulsd  0xc2f(%rip),%xmm0
movsd  %xmm0,0x18(%rsp)
xor    %edi,%edi
mov    $0xb,%esi
call   1030 <SL_G2@plt>
mulsd  0x18(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
mov    $0xfffffffb,%edi
mov    $0x8,%esi
call   1030 <SL_G2@plt>
mulsd  0xbfc(%rip),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
mov    $0xfffffff5,%edi
mov    $0x2,%esi
call   1030 <SL_G2@plt>
mulsd  0xbe1(%rip),%xmm0
addsd  0x8(%rsp),%xmm0
mulsd  0x10(%rsp),%xmm0
divsd  0xbd5(%rip),%xmm0
movsd  %xmm0,0x68(%rbx)
movq   $0x0,0x80(%r14)
xorpd  %xmm0,%xmm0
movsd  0x20(%rsp),%xmm1
mulsd  %xmm1,%xmm0
addsd  0x80(%rbx),%xmm0
movsd  %xmm0,0x80(%r14)
mulsd  %xmm1,%xmm0
addsd  0x78(%rbx),%xmm0
movsd  %xmm0,0x80(%r14)
mulsd  %xmm1,%xmm0
addsd  0x70(%rbx),%xmm0
movsd  %xmm0,0x80(%r14)
mulsd  %xmm1,%xmm0
addsd  0x68(%rbx),%xmm0
movsd  %xmm0,0x80(%r14)
mulsd  %xmm1,%xmm0
addsd  0x60(%rbx),%xmm0
movsd  %xmm0,0x80(%r14)
mulsd  %xmm1,%xmm0
addsd  0x58(%rbx),%xmm0
movsd  %xmm0,0x80(%r14)
mulsd  %xmm1,%xmm0
addsd  0x50(%rbx),%xmm0
movsd  %xmm0,0x80(%r14)
mulsd  %xmm1,%xmm0
addsd  0x48(%rbx),%xmm0
movsd  %xmm0,0x80(%r14)
mulsd  %xmm1,%xmm0
addsd  0x40(%rbx),%xmm0
movsd  %xmm0,0x80(%r14)
mulsd  %xmm1,%xmm0
addsd  0x38(%rbx),%xmm0
movsd  %xmm0,0x80(%r14)
mulsd  %xmm1,%xmm0
addsd  0x30(%rbx),%xmm0
movsd  %xmm0,0x80(%r14)
mulsd  %xmm1,%xmm0
addsd  0x28(%rbx),%xmm0
movsd  %xmm0,0x80(%r14)
mulsd  %xmm1,%xmm0
addsd  0x20(%rbx),%xmm0
movsd  %xmm0,0x80(%r14)
mulsd  %xmm1,%xmm0
addsd  0x18(%rbx),%xmm0
movsd  %xmm0,0x80(%r14)
mulsd  %xmm1,%xmm0
addsd  0x10(%rbx),%xmm0
movsd  %xmm0,0x80(%r14)
mulsd  %xmm1,%xmm0
addsd  0x8(%rbx),%xmm0
movsd  %xmm0,0x80(%r14)
mulsd  %xmm1,%xmm0
addsd  (%rbx),%xmm0
movsd  %xmm0,0x80(%r14)
add    $0x28,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
define void @twobody_ZM_slip_16(i32 %0, double %1, double* %2, double* %3) {
%5 = alloca i32
%6 = alloca double
%7 = alloca double*
%8 = alloca double*
%9 = alloca i32
store i32 %0, i32* %5
store double %1, double* %6
store double* %2, double** %7
store double* %3, double** %8
store i32 0, i32* %9
br label %10
10: ; preds = %18, %4
%11 = load i32, i32* %9
%12 = icmp sle i32 %11, 16
br i1 %12, label %13, label %21
13: ; preds = %10
%14 = load double*, double** %8
%15 = load i32, i32* %9
%16 = sext i32 %15 to i64
%17 = getelementptr inbounds double, double* %14, i64 %16
store double 0.000000e+00, double* %17
br label %18
18: ; preds = %13
%19 = load i32, i32* %9
%20 = add nsw i32 %19, 1
store i32 %20, i32* %9
br label %10
21: ; preds = %10
%22 = call double @SL_G1(i32 0, i32 5)
%23 = fmul double 0x41720C0000000000, %22
%24 = call double @SL_G1(i32 0, i32 5)
%25 = fmul double %23, %24
%26 = call double @SL_G2(i32 2, i32 11)
%27 = fmul double %25, %26
%28 = load double*, double** %8
%29 = getelementptr inbounds double, double* %28, i64 9
store double %27, double* %29
%30 = call double @SL_G1(i32 2, i32 5)
%31 = fmul double 2.560000e+04, %30
%32 = call double @SL_G1(i32 2, i32 5)
%33 = fmul double %31, %32
%34 = call double @SL_G1(i32 2, i32 5)
%35 = fmul double %33, %34
%36 = call double @SL_G2(i32 2, i32 7)
%37 = call double @SL_G2(i32 -1, i32 4)
%38 = fmul double 8.000000e+00, %37
%39 = call double @llvm.fmuladd.f64(double 7.000000e+00, double %36, double %38)
%40 = fmul double %35, %39
%41 = call double @SL_G2(i32 2, i32 7)
%42 = call double @SL_G2(i32 -1, i32 4)
%43 = fmul double 8.000000e+00, %42
%44 = call double @llvm.fmuladd.f64(double 7.000000e+00, double %41, double %43)
%45 = fmul double %40, %44
%46 = fdiv double %45, 9.000000e+00
%47 = load double*, double** %8
%48 = getelementptr inbounds double, double* %47, i64 10
store double %46, double* %48
%49 = call double @SL_G1(i32 0, i32 5)
%50 = fmul double -8.192000e+04, %49
%51 = call double @SL_G1(i32 2, i32 5)
%52 = fmul double %50, %51
%53 = call double @SL_G2(i32 2, i32 13)
%54 = call double @SL_G2(i32 0, i32 2)
%55 = fmul double 1.050000e+02, %54
%56 = call double @SL_G2(i32 2, i32 11)
%57 = fmul double %55, %56
%58 = fneg double %57
%59 = call double @llvm.fmuladd.f64(double 4.160000e+02, double %53, double %58)
%60 = call double @SL_G2(i32 0, i32 11)
%61 = call double @llvm.fmuladd.f64(double -1.050000e+02, double %60, double %59)
%62 = fmul double %52, %61
%63 = load double*, double** %8
%64 = getelementptr inbounds double, double* %63, i64 11
store double %62, double* %64
%65 = call double @SL_G1(i32 2, i32 5)
%66 = fmul double 2.048000e+05, %65
%67 = call double @SL_G1(i32 2, i32 5)
%68 = fmul double %66, %67
%69 = call double @SL_G2(i32 2, i32 15)
%70 = call double @SL_G2(i32 0, i32 2)
%71 = fmul double 1.372800e+04, %70
%72 = call double @SL_G2(i32 2, i32 13)
%73 = fmul double %71, %72
%74 = fneg double %73
%75 = call double @llvm.fmuladd.f64(double 2.227500e+04, double %69, double %74)
%76 = call double @SL_G2(i32 0, i32 13)
%77 = call double @llvm.fmuladd.f64(double -1.372800e+04, double %76, double %75)
%78 = call double @SL_G2(i32 0, i32 2)
%79 = fmul double 8.190000e+03, %78
%80 = call double @SL_G2(i32 0, i32 11)
%81 = call double @llvm.fmuladd.f64(double %79, double %80, double %77)
%82 = call double @SL_G2(i32 -5, i32 8)
%83 = call double @llvm.fmuladd.f64(double 2.288000e+03, double %82, double %81)
%84 = call double @SL_G2(i32 -11, i32 2)
%85 = call double @llvm.fmuladd.f64(double 2.800000e+02, double %84, double %83)
%86 = fmul double %68, %85
%87 = fdiv double %86, 4.290000e+02
%88 = load double*, double** %8
%89 = getelementptr inbounds double, double* %88, i64 13
store double %87, double* %89
%90 = load double*, double** %7
%91 = getelementptr inbounds double, double* %90, i64 16
store double 0.000000e+00, double* %91
store i32 0, i32* %9
br label %92
92: ; preds = %109, %21
%93 = load i32, i32* %9
%94 = icmp sle i32 %93, 16
br i1 %94, label %95, label %112
95: ; preds = %92
%96 = load double*, double** %7
%97 = getelementptr inbounds double, double* %96, i64 16
%98 = load double, double* %97
%99 = load double, double* %6
%100 = load double*, double** %8
%101 = load i32, i32* %9
%102 = sub nsw i32 16, %101
%103 = sext i32 %102 to i64
%104 = getelementptr inbounds double, double* %100, i64 %103
%105 = load double, double* %104
%106 = call double @llvm.fmuladd.f64(double %98, double %99, double %105)
%107 = load double*, double** %7
%108 = getelementptr inbounds double, double* %107, i64 16
store double %106, double* %108
br label %109
109: ; preds = %95
%110 = load i32, i32* %9
%111 = add nsw i32 %110, 1
store i32 %111, i32* %9
br label %92
112: ; preds = %92
ret void
}

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