void modele_gravite(const double Q[7], double gravity[7]) {
  int i;
  double C1, C2, C3, C4, C5, C6, C7;
  double C11, C22, C33, C44, C55, C66, C77;
  double S1, S2, S3, S4, S5, S6, S7;
  C1 = cos(Q[0]);
  C2 = cos(Q[1]);
  C3 = cos(Q[2]);
  C4 = cos(Q[3]);
  C5 = cos(Q[4]);
  C6 = cos(Q[5]);
  C7 = cos(Q[6]);
  C11 = cos(2 * Q[0]);
  C22 = cos(2 * Q[1]);
  C33 = cos(2 * Q[2]);
  C44 = cos(2 * Q[3]);
  C55 = cos(2 * Q[4]);
  C66 = cos(2 * Q[5]);
  C77 = cos(2 * Q[6]);
  S1 = sin(Q[0]);
  S2 = sin(Q[1]);
  S3 = sin(Q[2]);
  S4 = sin(Q[3]);
  S5 = sin(Q[4]);
  S6 = sin(Q[5]);
  S7 = sin(Q[6]);
  gravity[0] = 0;
  gravity[1] = -(
      9.81 *
      (S2 *
           (0.450 * (3.51 + 4.31 + 3.45 + 1.46 + 0.24) - 3.51 * 0.08944 +
            8.41 * 0.06325 +
            C4 * (0.50 * (3.45 + 1.46 + 0.24) - 3.45 * 0.1647 + 4.31 * 0.04609 +
                  C6 * (1.46 * -0.03 + 0.24 * (0.08 + -0.029))) -
            C5 * (1.46 * -0.03 + 0.24 * (0.08 + -0.029)) * S4 * S6) +
       C2 * (C3 *
                 (0.50 * (3.45 + 1.46 + 0.24) - 3.45 * 0.1647 + 4.31 * 0.04609 +
                  C6 * (1.46 * -0.03 + 0.24 * (0.08 + -0.029))) *
                 S4 +
             (1.46 * -0.03 + 0.24 * (0.08 + -0.029)) *
                 (C3 * C4 * C5 - S3 * S5) * S6)));
  gravity[2] =
      9.81 * S2 *
      ((0.50 * (3.45 + 1.46 + 0.24) - 3.45 * 0.1647 + 4.31 * 0.04609 +
        C6 * (1.46 * -0.03 + 0.24 * (0.08 + -0.029))) *
           S3 * S4 +
       (1.46 * -0.03 + 0.24 * (0.08 + -0.029)) * (C4 * C5 * S3 + C3 * S5) * S6);
  gravity[3] = -(9.81 *
                 (0.50 * (3.45 + 1.46 + 0.24) - 3.45 * 0.1647 + 4.31 * 0.04609 +
                  C6 * (1.46 * -0.03 + 0.24 * (0.08 + -0.029))) *
                 (C3 * C4 * S2 + C2 * S4)) +
               C5 * 9.81 * (1.46 * -0.03 + 0.24 * (0.08 + -0.029)) *
                   (-(C2 * C4) + C3 * S2 * S4) * S6;
  gravity[4] = 9.81 * (1.46 * -0.03 + 0.24 * (0.08 + -0.029)) *
               (C5 * S2 * S3 + (C3 * C4 * S2 + C2 * S4) * S5) * S6;
  gravity[5] = -(9.81 * (1.46 * -0.03 + 0.24 * (0.08 + -0.029)) *
                 (C6 * (C5 * (C3 * C4 * S2 + C2 * S4) - S2 * S3 * S5) +
                  (C2 * C4 - C3 * S2 * S4) * S6));
  gravity[6] = 0;
}


x86 assembly (clang, -O0):
<modele_gravite>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x28(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x30(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x38(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x40(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xe65(%rip),%xmm0
mulsd  (%rax),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x58(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xe4b(%rip),%xmm0
mulsd  0x8(%rax),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xe30(%rip),%xmm0
mulsd  0x10(%rax),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xe15(%rip),%xmm0
mulsd  0x18(%rax),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x70(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xdfa(%rip),%xmm0
mulsd  0x20(%rax),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x78(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xddf(%rip),%xmm0
mulsd  0x28(%rax),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x80(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xdc4(%rip),%xmm0
mulsd  0x30(%rax),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
movsd  -0x98(%rbp),%xmm1
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  0xcd4(%rip),%xmm3
mulsd  %xmm3,%xmm2
movsd  0xcd8(%rip),%xmm3
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
movsd  0xcd0(%rip),%xmm2
addsd  %xmm2,%xmm0
movsd  0xcac(%rip),%xmm2
mulsd  -0x40(%rbp),%xmm2
mulsd  -0xa8(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm3
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm0,%xmm2
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm3
movsd  -0x48(%rbp),%xmm4
movsd  0xc61(%rip),%xmm5
mulsd  %xmm5,%xmm4
movsd  0xc65(%rip),%xmm5
addsd  %xmm5,%xmm4
mulsd  %xmm4,%xmm3
movsd  -0xa8(%rbp),%xmm5
ff
movsd  -0x30(%rbp),%xmm6
mulsd  -0x38(%rbp),%xmm6
movsd  -0x40(%rbp),%xmm7
movsd  -0xa0(%rbp),%xmm4
ff
mulsd  -0xb0(%rbp),%xmm4
ff
movq   %xmm4,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm4
mulsd  %xmm7,%xmm6
addsd  %xmm4,%xmm6
movsd  0xbff(%rip),%xmm4
mulsd  %xmm6,%xmm4
mulsd  -0xb8(%rbp),%xmm4
ff
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xbdf(%rip),%xmm0
mulsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  0xbb3(%rip),%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
movsd  -0x48(%rbp),%xmm1
movsd  0xb96(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xb9a(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  -0xa0(%rbp),%xmm1
ff
movsd  -0xa8(%rbp),%xmm3
ff
movsd  -0x38(%rbp),%xmm4
mulsd  -0x40(%rbp),%xmm4
movsd  -0xa0(%rbp),%xmm5
ff
movsd  -0x30(%rbp),%xmm2
mulsd  -0xb0(%rbp),%xmm2
ff
mulsd  %xmm5,%xmm4
addsd  %xmm2,%xmm4
movsd  0xb47(%rip),%xmm2
mulsd  %xmm4,%xmm2
mulsd  -0xb8(%rbp),%xmm2
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x48(%rbp),%xmm1
movsd  0xb19(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  0xb1d(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0xb09(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
mulsd  -0x38(%rbp),%xmm1
movsd  -0x98(%rbp),%xmm3
ff
movsd  -0x28(%rbp),%xmm2
mulsd  -0xa8(%rbp),%xmm2
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xabb(%rip),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  0xaa6(%rip),%xmm2
mulsd  %xmm2,%xmm0
movsd  -0x28(%rbp),%xmm2
mulsd  -0x38(%rbp),%xmm2
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
movsd  -0x30(%rbp),%xmm2
mulsd  -0x98(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm4
ff
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
movsd  -0xb8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x40(%rbp),%xmm1
mulsd  -0x98(%rbp),%xmm1
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0x30(%rbp),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm4
ff
movsd  -0x28(%rbp),%xmm3
mulsd  -0xa8(%rbp),%xmm3
ff
mulsd  %xmm4,%xmm0
addsd  %xmm3,%xmm0
mulsd  -0xb0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x9eb(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  -0xb8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0x48(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm2
movsd  -0x30(%rbp),%xmm3
mulsd  -0x38(%rbp),%xmm3
movsd  -0x98(%rbp),%xmm4
ff
movsd  -0x28(%rbp),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
mulsd  %xmm4,%xmm3
addsd  %xmm0,%xmm3
movsd  -0x98(%rbp),%xmm0
ff
mulsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0xb0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm3,%xmm2
addsd  %xmm0,%xmm2
movsd  -0x28(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm4
movsd  -0x30(%rbp),%xmm3
mulsd  -0x98(%rbp),%xmm3
ff
mulsd  -0xa8(%rbp),%xmm3
ff
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm4,%xmm0
addsd  %xmm3,%xmm0
mulsd  -0xb8(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x918(%rip),%xmm0
mulsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x30(%rax)
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<modele_gravite>:
push   %r14
push   %rbx
sub    $0x68,%rsp
mov    %rsi,%r14
mov    %rdi,%rbx
movsd  (%rdi),%xmm0
ucomisd 0xec7(%rip),%xmm0
jae    1569 <modele_gravite+0x449>
movsd  0xec1(%rip),%xmm1
ucomisd %xmm0,%xmm1
jae    1569 <modele_gravite+0x449>
movsd  0x8(%rbx),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,0x38(%rsp)
movsd  0x10(%rbx),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,0x30(%rsp)
movsd  0x18(%rbx),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,0x28(%rsp)
movsd  0x20(%rbx),%xmm0
call   1040 <cos@plt>
movaps %xmm0,0x50(%rsp)
movsd  0x28(%rbx),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,(%rsp)
movsd  0x30(%rbx),%xmm0
ucomisd 0xe54(%rip),%xmm0
jae    1573 <modele_gravite+0x453>
movsd  0xe4e(%rip),%xmm1
ucomisd %xmm0,%xmm1
jae    1573 <modele_gravite+0x453>
movsd  (%rbx),%xmm0
addsd  %xmm0,%xmm0
ucomisd 0xe2c(%rip),%xmm0
jae    157d <modele_gravite+0x45d>
movsd  0xe26(%rip),%xmm1
ucomisd %xmm0,%xmm1
jae    157d <modele_gravite+0x45d>
movsd  0x8(%rbx),%xmm0
addsd  %xmm0,%xmm0
ucomisd 0xe03(%rip),%xmm0
jae    1587 <modele_gravite+0x467>
movsd  0xdfd(%rip),%xmm1
ucomisd %xmm0,%xmm1
jae    1587 <modele_gravite+0x467>
movsd  0x10(%rbx),%xmm0
addsd  %xmm0,%xmm0
ucomisd 0xdda(%rip),%xmm0
jae    1591 <modele_gravite+0x471>
movsd  0xdd4(%rip),%xmm1
ucomisd %xmm0,%xmm1
jae    1591 <modele_gravite+0x471>
movsd  0x18(%rbx),%xmm0
addsd  %xmm0,%xmm0
ucomisd 0xdb1(%rip),%xmm0
jae    159b <modele_gravite+0x47b>
movsd  0xdab(%rip),%xmm1
ucomisd %xmm0,%xmm1
jae    159b <modele_gravite+0x47b>
movsd  0x20(%rbx),%xmm0
addsd  %xmm0,%xmm0
ucomisd 0xd88(%rip),%xmm0
jae    15a5 <modele_gravite+0x485>
movsd  0xd82(%rip),%xmm1
ucomisd %xmm0,%xmm1
jae    15a5 <modele_gravite+0x485>
movsd  0x28(%rbx),%xmm0
addsd  %xmm0,%xmm0
ucomisd 0xd5f(%rip),%xmm0
jae    15af <modele_gravite+0x48f>
movsd  0xd59(%rip),%xmm1
ucomisd %xmm0,%xmm1
jae    15af <modele_gravite+0x48f>
movsd  0x30(%rbx),%xmm0
addsd  %xmm0,%xmm0
ucomisd 0xd36(%rip),%xmm0
jae    15b9 <modele_gravite+0x499>
movsd  0xd30(%rip),%xmm1
ucomisd %xmm0,%xmm1
jae    15b9 <modele_gravite+0x499>
movsd  (%rbx),%xmm0
ucomisd 0xd12(%rip),%xmm0
jae    15c3 <modele_gravite+0x4a3>
movsd  0xd0c(%rip),%xmm1
ucomisd %xmm0,%xmm1
jae    15c3 <modele_gravite+0x4a3>
movsd  0x8(%rbx),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,0x20(%rsp)
movsd  0x10(%rbx),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,0x18(%rsp)
movsd  0x18(%rbx),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,0x8(%rsp)
movsd  0x20(%rbx),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0x28(%rbx),%xmm0
call   1030 <sin@plt>
movapd %xmm0,%xmm14
movsd  0x30(%rbx),%xmm0
ucomisd 0xc9e(%rip),%xmm0
jae    15cd <modele_gravite+0x4ad>
movsd  0xc98(%rip),%xmm1
ucomisd %xmm0,%xmm1
jae    15cd <modele_gravite+0x4ad>
movsd  0xc8d(%rip),%xmm11
movsd  (%rsp),%xmm0
mulsd  %xmm11,%xmm0
addsd  0xc83(%rip),%xmm0
movsd  0x28(%rsp),%xmm10
movapd %xmm10,%xmm1
mulsd  %xmm0,%xmm1
addsd  0xc73(%rip),%xmm1
movsd  0xc73(%rip),%xmm3
movapd 0x50(%rsp),%xmm7
mulsd  %xmm7,%xmm3
movsd  0x8(%rsp),%xmm2
mulsd  %xmm2,%xmm3
mulsd  %xmm14,%xmm3
addsd  %xmm1,%xmm3
movsd  0x30(%rsp),%xmm8
movapd %xmm8,%xmm1
mulsd  %xmm10,%xmm1
movsd  0x10(%rsp),%xmm15
movapd %xmm15,%xmm4
movsd  0x18(%rsp),%xmm13
mulsd  %xmm13,%xmm4
movapd %xmm1,%xmm5
mulsd  %xmm7,%xmm5
subsd  %xmm4,%xmm5
movapd %xmm8,%xmm4
mulsd  %xmm0,%xmm4
mulsd  %xmm11,%xmm5
mulsd  %xmm14,%xmm5
mulsd  %xmm2,%xmm4
addsd  %xmm5,%xmm4
movsd  0x38(%rsp),%xmm9
mulsd  %xmm9,%xmm4
movsd  0x20(%rsp),%xmm12
mulsd  %xmm12,%xmm3
addsd  %xmm4,%xmm3
movsd  0xbea(%rip),%xmm4
movapd %xmm12,%xmm5
mulsd  %xmm4,%xmm5
unpcklpd %xmm5,%xmm3
movapd %xmm10,%xmm5
mulsd  %xmm7,%xmm5
movapd %xmm8,%xmm6
mulsd  %xmm15,%xmm6
mulsd  %xmm13,%xmm5
addsd  %xmm6,%xmm5
movapd %xmm0,%xmm6
mulsd  %xmm13,%xmm6
mulsd  %xmm11,%xmm5
mulsd  %xmm14,%xmm5
mulsd  %xmm2,%xmm6
addsd  %xmm5,%xmm6
movapd 0xbbe(%rip),%xmm5
unpcklpd %xmm6,%xmm5
mulpd  %xmm3,%xmm5
movq   $0x0,(%r14)
movupd %xmm5,0x8(%r14)
movapd %xmm9,%xmm3
mulsd  %xmm2,%xmm3
mulsd  %xmm12,%xmm1
addsd  %xmm3,%xmm1
mulsd  %xmm7,%xmm4
mulsd  %xmm11,%xmm4
mulsd  %xmm12,%xmm8
mulsd  %xmm2,%xmm8
mulsd  %xmm10,%xmm9
movapd %xmm8,%xmm2
subsd  %xmm9,%xmm2
mulsd  %xmm4,%xmm2
mulsd  0xb51(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm14,%xmm2
addsd  %xmm0,%xmm2
movsd  %xmm2,0x18(%r14)
movapd %xmm7,%xmm0
mulsd  %xmm12,%xmm0
mulsd  %xmm1,%xmm7
mulsd  %xmm15,%xmm1
mulsd  %xmm13,%xmm0
addsd  %xmm1,%xmm0
mulsd  %xmm12,%xmm13
mulsd  %xmm15,%xmm13
subsd  %xmm13,%xmm7
subsd  %xmm8,%xmm9
mulsd  (%rsp),%xmm7
mulsd  %xmm14,%xmm9
addsd  %xmm9,%xmm7
mulsd  0xb00(%rip),%xmm0
shufpd $0x2,0xb17(%rip),%xmm0
unpcklpd %xmm7,%xmm14
mulpd  %xmm14,%xmm0
movupd %xmm0,0x20(%r14)
movq   $0x0,0x30(%r14)
add    $0x68,%rsp
pop    %rbx
pop    %r14
ret
call   1040 <cos@plt>
jmp    1151 <modele_gravite+0x31>
call   1040 <cos@plt>
jmp    11c4 <modele_gravite+0xa4>
call   1040 <cos@plt>
jmp    11ec <modele_gravite+0xcc>
call   1040 <cos@plt>
jmp    1215 <modele_gravite+0xf5>
call   1040 <cos@plt>
jmp    123e <modele_gravite+0x11e>
call   1040 <cos@plt>
jmp    1267 <modele_gravite+0x147>
call   1040 <cos@plt>
jmp    1290 <modele_gravite+0x170>
call   1040 <cos@plt>
jmp    12b9 <modele_gravite+0x199>
call   1040 <cos@plt>
jmp    12e2 <modele_gravite+0x1c2>
call   1030 <sin@plt>
jmp    1306 <modele_gravite+0x1e6>
movapd %xmm14,0x40(%rsp)
call   1030 <sin@plt>
movapd 0x40(%rsp),%xmm14
jmp    137a <modele_gravite+0x25a>

LLVM IR (-O0):
define void @modele_gravite(double* %0, double* %1) {
%3 = alloca double*
%4 = alloca double*
%5 = alloca i32
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
store double* %0, double** %3
store double* %1, double** %4
%27 = load double*, double** %3
%28 = getelementptr inbounds double, double* %27, i64 0
%29 = load double, double* %28
%30 = call double @cos(double %29)
store double %30, double* %6
%31 = load double*, double** %3
%32 = getelementptr inbounds double, double* %31, i64 1
%33 = load double, double* %32
%34 = call double @cos(double %33)
store double %34, double* %7
%35 = load double*, double** %3
%36 = getelementptr inbounds double, double* %35, i64 2
%37 = load double, double* %36
%38 = call double @cos(double %37)
store double %38, double* %8
%39 = load double*, double** %3
%40 = getelementptr inbounds double, double* %39, i64 3
%41 = load double, double* %40
%42 = call double @cos(double %41)
store double %42, double* %9
%43 = load double*, double** %3
%44 = getelementptr inbounds double, double* %43, i64 4
%45 = load double, double* %44
%46 = call double @cos(double %45)
store double %46, double* %10
%47 = load double*, double** %3
%48 = getelementptr inbounds double, double* %47, i64 5
%49 = load double, double* %48
%50 = call double @cos(double %49)
store double %50, double* %11
%51 = load double*, double** %3
%52 = getelementptr inbounds double, double* %51, i64 6
%53 = load double, double* %52
%54 = call double @cos(double %53)
store double %54, double* %12
%55 = load double*, double** %3
%56 = getelementptr inbounds double, double* %55, i64 0
%57 = load double, double* %56
%58 = fmul double 2.000000e+00, %57
%59 = call double @cos(double %58)
store double %59, double* %13
%60 = load double*, double** %3
%61 = getelementptr inbounds double, double* %60, i64 1
%62 = load double, double* %61
%63 = fmul double 2.000000e+00, %62
%64 = call double @cos(double %63)
store double %64, double* %14
%65 = load double*, double** %3
%66 = getelementptr inbounds double, double* %65, i64 2
%67 = load double, double* %66
%68 = fmul double 2.000000e+00, %67
%69 = call double @cos(double %68)
store double %69, double* %15
%70 = load double*, double** %3
%71 = getelementptr inbounds double, double* %70, i64 3
%72 = load double, double* %71
%73 = fmul double 2.000000e+00, %72
%74 = call double @cos(double %73)
store double %74, double* %16
%75 = load double*, double** %3
%76 = getelementptr inbounds double, double* %75, i64 4
%77 = load double, double* %76
%78 = fmul double 2.000000e+00, %77
%79 = call double @cos(double %78)
store double %79, double* %17
%80 = load double*, double** %3
%81 = getelementptr inbounds double, double* %80, i64 5
%82 = load double, double* %81
%83 = fmul double 2.000000e+00, %82
%84 = call double @cos(double %83)
store double %84, double* %18
%85 = load double*, double** %3
%86 = getelementptr inbounds double, double* %85, i64 6
%87 = load double, double* %86
%88 = fmul double 2.000000e+00, %87
%89 = call double @cos(double %88)
store double %89, double* %19
%90 = load double*, double** %3
%91 = getelementptr inbounds double, double* %90, i64 0
%92 = load double, double* %91
%93 = call double @sin(double %92)
store double %93, double* %20
%94 = load double*, double** %3
%95 = getelementptr inbounds double, double* %94, i64 1
%96 = load double, double* %95
%97 = call double @sin(double %96)
store double %97, double* %21
%98 = load double*, double** %3
%99 = getelementptr inbounds double, double* %98, i64 2
%100 = load double, double* %99
%101 = call double @sin(double %100)
store double %101, double* %22
%102 = load double*, double** %3
%103 = getelementptr inbounds double, double* %102, i64 3
%104 = load double, double* %103
%105 = call double @sin(double %104)
store double %105, double* %23
%106 = load double*, double** %3
%107 = getelementptr inbounds double, double* %106, i64 4
%108 = load double, double* %107
%109 = call double @sin(double %108)
store double %109, double* %24
%110 = load double*, double** %3
%111 = getelementptr inbounds double, double* %110, i64 5
%112 = load double, double* %111
%113 = call double @sin(double %112)
store double %113, double* %25
%114 = load double*, double** %3
%115 = getelementptr inbounds double, double* %114, i64 6
%116 = load double, double* %115
%117 = call double @sin(double %116)
store double %117, double* %26
%118 = load double*, double** %4
%119 = getelementptr inbounds double, double* %118, i64 0
store double 0.000000e+00, double* %119
%120 = load double, double* %21
%121 = load double, double* %9
%122 = load double, double* %11
%123 = call double @llvm.fmuladd.f64(double %122, double -3.156000e-02, double 0x4001A4BA01182DF5)
%124 = call double @llvm.fmuladd.f64(double %121, double %123, double 0x401837CE5994C6CC)
%125 = load double, double* %10
%126 = fmul double %125, -3.156000e-02
%127 = load double, double* %23
%128 = fmul double %126, %127
%129 = load double, double* %25
%130 = fneg double %128
%131 = call double @llvm.fmuladd.f64(double %130, double %129, double %124)
%132 = load double, double* %7
%133 = load double, double* %8
%134 = load double, double* %11
%135 = call double @llvm.fmuladd.f64(double %134, double -3.156000e-02, double 0x4001A4BA01182DF5)
%136 = fmul double %133, %135
%137 = load double, double* %23
%138 = load double, double* %8
%139 = load double, double* %9
%140 = fmul double %138, %139
%141 = load double, double* %10
%142 = load double, double* %22
%143 = load double, double* %24
%144 = fmul double %142, %143
%145 = fneg double %144
%146 = call double @llvm.fmuladd.f64(double %140, double %141, double %145)
%147 = fmul double -3.156000e-02, %146
%148 = load double, double* %25
%149 = fmul double %147, %148
%150 = call double @llvm.fmuladd.f64(double %136, double %137, double %149)
%151 = fmul double %132, %150
%152 = call double @llvm.fmuladd.f64(double %120, double %131, double %151)
%153 = fmul double 9.810000e+00, %152
%154 = fneg double %153
%155 = load double*, double** %4
%156 = getelementptr inbounds double, double* %155, i64 1
store double %154, double* %156
%157 = load double, double* %21
%158 = fmul double 9.810000e+00, %157
%159 = load double, double* %11
%160 = call double @llvm.fmuladd.f64(double %159, double -3.156000e-02, double 0x4001A4BA01182DF5)
%161 = load double, double* %22
%162 = fmul double %160, %161
%163 = load double, double* %23
%164 = load double, double* %9
%165 = load double, double* %10
%166 = fmul double %164, %165
%167 = load double, double* %22
%168 = load double, double* %8
%169 = load double, double* %24
%170 = fmul double %168, %169
%171 = call double @llvm.fmuladd.f64(double %166, double %167, double %170)
%172 = fmul double -3.156000e-02, %171
%173 = load double, double* %25
%174 = fmul double %172, %173
%175 = call double @llvm.fmuladd.f64(double %162, double %163, double %174)
%176 = fmul double %158, %175
%177 = load double*, double** %4
%178 = getelementptr inbounds double, double* %177, i64 2
store double %176, double* %178
%179 = load double, double* %11
%180 = call double @llvm.fmuladd.f64(double %179, double -3.156000e-02, double 0x4001A4BA01182DF5)
%181 = fmul double 9.810000e+00, %180
%182 = load double, double* %8
%183 = load double, double* %9
%184 = fmul double %182, %183
%185 = load double, double* %21
%186 = load double, double* %7
%187 = load double, double* %23
%188 = fmul double %186, %187
%189 = call double @llvm.fmuladd.f64(double %184, double %185, double %188)
%190 = fmul double %181, %189
%191 = fneg double %190
%192 = load double, double* %10
%193 = fmul double %192, 9.810000e+00
%194 = fmul double %193, -3.156000e-02
%195 = load double, double* %7
%196 = load double, double* %9
%197 = fmul double %195, %196
%198 = fneg double %197
%199 = load double, double* %8
%200 = load double, double* %21
%201 = fmul double %199, %200
%202 = load double, double* %23
%203 = call double @llvm.fmuladd.f64(double %201, double %202, double %198)
%204 = fmul double %194, %203
%205 = load double, double* %25
%206 = call double @llvm.fmuladd.f64(double %204, double %205, double %191)
%207 = load double*, double** %4
%208 = getelementptr inbounds double, double* %207, i64 3
store double %206, double* %208
%209 = load double, double* %10
%210 = load double, double* %21
%211 = fmul double %209, %210
%212 = load double, double* %22
%213 = load double, double* %8
%214 = load double, double* %9
%215 = fmul double %213, %214
%216 = load double, double* %21
%217 = load double, double* %7
%218 = load double, double* %23
%219 = fmul double %217, %218
%220 = call double @llvm.fmuladd.f64(double %215, double %216, double %219)
%221 = load double, double* %24
%222 = fmul double %220, %221
%223 = call double @llvm.fmuladd.f64(double %211, double %212, double %222)
%224 = fmul double 0xBFD3D08B9E2E53D0, %223
%225 = load double, double* %25
%226 = fmul double %224, %225
%227 = load double*, double** %4
%228 = getelementptr inbounds double, double* %227, i64 4
store double %226, double* %228
%229 = load double, double* %11
%230 = load double, double* %10
%231 = load double, double* %8
%232 = load double, double* %9
%233 = fmul double %231, %232
%234 = load double, double* %21
%235 = load double, double* %7
%236 = load double, double* %23
%237 = fmul double %235, %236
%238 = call double @llvm.fmuladd.f64(double %233, double %234, double %237)
%239 = load double, double* %21
%240 = load double, double* %22
%241 = fmul double %239, %240
%242 = load double, double* %24
%243 = fmul double %241, %242
%244 = fneg double %243
%245 = call double @llvm.fmuladd.f64(double %230, double %238, double %244)
%246 = load double, double* %7
%247 = load double, double* %9
%248 = load double, double* %8
%249 = load double, double* %21
%250 = fmul double %248, %249
%251 = load double, double* %23
%252 = fmul double %250, %251
%253 = fneg double %252
%254 = call double @llvm.fmuladd.f64(double %246, double %247, double %253)
%255 = load double, double* %25
%256 = fmul double %254, %255
%257 = call double @llvm.fmuladd.f64(double %229, double %245, double %256)
%258 = fmul double 0xBFD3D08B9E2E53D0, %257
%259 = fneg double %258
%260 = load double*, double** %4
%261 = getelementptr inbounds double, double* %260, i64 5
store double %259, double* %261
%262 = load double*, double** %4
%263 = getelementptr inbounds double, double* %262, i64 6
store double 0.000000e+00, double* %263
ret void
}

LLVM IR (-O2):
define void @modele_gravite(double* nocapture %0, double* nocapture writeonly %1) {
%3 = load double, double* %0
%4 = fcmp oeq double %3, 0xFFF0000000000000
%5 = fcmp oeq double %3, 0x7FF0000000000000
%6 = or i1 %5, %4
br i1 %6, label %7, label %9
7: ; preds = %2
%8 = tail call double @cos(double %3)
br label %9
9: ; preds = %2, %7
%10 = getelementptr inbounds double, double* %0, i64 1
%11 = load double, double* %10
%12 = tail call double @cos(double %11)
%13 = getelementptr inbounds double, double* %0, i64 2
%14 = load double, double* %13
%15 = tail call double @cos(double %14)
%16 = getelementptr inbounds double, double* %0, i64 3
%17 = load double, double* %16
%18 = tail call double @cos(double %17)
%19 = getelementptr inbounds double, double* %0, i64 4
%20 = load double, double* %19
%21 = tail call double @cos(double %20)
%22 = getelementptr inbounds double, double* %0, i64 5
%23 = load double, double* %22
%24 = tail call double @cos(double %23)
%25 = getelementptr inbounds double, double* %0, i64 6
%26 = load double, double* %25
%27 = fcmp oeq double %26, 0xFFF0000000000000
%28 = fcmp oeq double %26, 0x7FF0000000000000
%29 = or i1 %28, %27
br i1 %29, label %30, label %32
30: ; preds = %9
%31 = tail call double @cos(double %26)
br label %32
32: ; preds = %9, %30
%33 = load double, double* %0
%34 = fmul double %33, 2.000000e+00
%35 = fcmp oeq double %34, 0xFFF0000000000000
%36 = fcmp oeq double %34, 0x7FF0000000000000
%37 = or i1 %36, %35
br i1 %37, label %38, label %40
38: ; preds = %32
%39 = tail call double @cos(double %34)
br label %40
40: ; preds = %32, %38
%41 = load double, double* %10
%42 = fmul double %41, 2.000000e+00
%43 = fcmp oeq double %42, 0xFFF0000000000000
%44 = fcmp oeq double %42, 0x7FF0000000000000
%45 = or i1 %44, %43
br i1 %45, label %46, label %48
46: ; preds = %40
%47 = tail call double @cos(double %42)
br label %48
48: ; preds = %40, %46
%49 = load double, double* %13
%50 = fmul double %49, 2.000000e+00
%51 = fcmp oeq double %50, 0xFFF0000000000000
%52 = fcmp oeq double %50, 0x7FF0000000000000
%53 = or i1 %52, %51
br i1 %53, label %54, label %56
54: ; preds = %48
%55 = tail call double @cos(double %50)
br label %56
56: ; preds = %48, %54
%57 = load double, double* %16
%58 = fmul double %57, 2.000000e+00
%59 = fcmp oeq double %58, 0xFFF0000000000000
%60 = fcmp oeq double %58, 0x7FF0000000000000
%61 = or i1 %60, %59
br i1 %61, label %62, label %64
62: ; preds = %56
%63 = tail call double @cos(double %58)
br label %64
64: ; preds = %56, %62
%65 = load double, double* %19
%66 = fmul double %65, 2.000000e+00
%67 = fcmp oeq double %66, 0xFFF0000000000000
%68 = fcmp oeq double %66, 0x7FF0000000000000
%69 = or i1 %68, %67
br i1 %69, label %70, label %72
70: ; preds = %64
%71 = tail call double @cos(double %66)
br label %72
72: ; preds = %64, %70
%73 = load double, double* %22
%74 = fmul double %73, 2.000000e+00
%75 = fcmp oeq double %74, 0xFFF0000000000000
%76 = fcmp oeq double %74, 0x7FF0000000000000
%77 = or i1 %76, %75
br i1 %77, label %78, label %80
78: ; preds = %72
%79 = tail call double @cos(double %74)
br label %80
80: ; preds = %72, %78
%81 = load double, double* %25
%82 = fmul double %81, 2.000000e+00
%83 = fcmp oeq double %82, 0xFFF0000000000000
%84 = fcmp oeq double %82, 0x7FF0000000000000
%85 = or i1 %84, %83
br i1 %85, label %86, label %88
86: ; preds = %80
%87 = tail call double @cos(double %82)
br label %88
88: ; preds = %80, %86
%89 = load double, double* %0
%90 = fcmp oeq double %89, 0xFFF0000000000000
%91 = fcmp oeq double %89, 0x7FF0000000000000
%92 = or i1 %91, %90
br i1 %92, label %93, label %95
93: ; preds = %88
%94 = tail call double @sin(double %89)
br label %95
95: ; preds = %88, %93
%96 = load double, double* %10
%97 = tail call double @sin(double %96)
%98 = load double, double* %13
%99 = tail call double @sin(double %98)
%100 = load double, double* %16
%101 = tail call double @sin(double %100)
%102 = load double, double* %19
%103 = tail call double @sin(double %102)
%104 = load double, double* %22
%105 = tail call double @sin(double %104)
%106 = load double, double* %25
%107 = fcmp oeq double %106, 0xFFF0000000000000
%108 = fcmp oeq double %106, 0x7FF0000000000000
%109 = or i1 %108, %107
br i1 %109, label %110, label %112
110: ; preds = %95
%111 = tail call double @sin(double %106)
br label %112
112: ; preds = %95, %110
store double 0.000000e+00, double* %1
%113 = tail call double @llvm.fmuladd.f64(double %24, double -3.156000e-02, double 0x4001A4BA01182DF5)
%114 = tail call double @llvm.fmuladd.f64(double %18, double %113, double 0x401837CE5994C6CC)
%115 = fmul double %21, 3.156000e-02
%116 = fmul double %115, %101
%117 = tail call double @llvm.fmuladd.f64(double %116, double %105, double %114)
%118 = fmul double %15, %113
%119 = fmul double %15, %18
%120 = fneg double %99
%121 = fmul double %103, %120
%122 = tail call double @llvm.fmuladd.f64(double %119, double %21, double %121)
%123 = fmul double %122, -3.156000e-02
%124 = fmul double %105, %123
%125 = tail call double @llvm.fmuladd.f64(double %118, double %101, double %124)
%126 = fmul double %12, %125
%127 = tail call double @llvm.fmuladd.f64(double %97, double %117, double %126)
%128 = getelementptr inbounds double, double* %1, i64 1
%129 = fmul double %97, 9.810000e+00
%130 = fmul double %113, %99
%131 = fmul double %18, %21
%132 = fmul double %15, %103
%133 = tail call double @llvm.fmuladd.f64(double %131, double %99, double %132)
%134 = fmul double %133, -3.156000e-02
%135 = fmul double %105, %134
%136 = tail call double @llvm.fmuladd.f64(double %130, double %101, double %135)
%137 = insertelement <2 x double> poison, double %127, i64 0
%138 = insertelement <2 x double> %137, double %129, i64 1
%139 = insertelement <2 x double> <double -9.810000e+00, double poison>, double %136, i64 1
%140 = fmul <2 x double> %138, %139
%141 = bitcast double* %128 to <2 x double>*
store <2 x double> %140, <2 x double>* %141
%142 = fmul double %12, %101
%143 = tail call double @llvm.fmuladd.f64(double %119, double %97, double %142)
%144 = fmul double %113, -9.810000e+00
%145 = fmul double %144, %143
%146 = fmul double %21, 9.810000e+00
%147 = fmul double %146, -3.156000e-02
%148 = fneg double %12
%149 = fmul double %18, %148
%150 = fmul double %15, %97
%151 = tail call double @llvm.fmuladd.f64(double %150, double %101, double %149)
%152 = fmul double %147, %151
%153 = tail call double @llvm.fmuladd.f64(double %152, double %105, double %145)
%154 = getelementptr inbounds double, double* %1, i64 3
store double %153, double* %154
%155 = fmul double %21, %97
%156 = fmul double %143, %103
%157 = tail call double @llvm.fmuladd.f64(double %155, double %99, double %156)
%158 = fmul double %157, 0xBFD3D08B9E2E53D0
%159 = getelementptr inbounds double, double* %1, i64 4
%160 = fneg double %97
%161 = fmul double %99, %160
%162 = fmul double %161, %103
%163 = tail call double @llvm.fmuladd.f64(double %21, double %143, double %162)
%164 = fneg double %150
%165 = fmul double %101, %164
%166 = tail call double @llvm.fmuladd.f64(double %12, double %18, double %165)
%167 = fmul double %166, %105
%168 = tail call double @llvm.fmuladd.f64(double %24, double %163, double %167)
%169 = insertelement <2 x double> poison, double %105, i64 0
%170 = insertelement <2 x double> %169, double %168, i64 1
%171 = insertelement <2 x double> <double poison, double 0x3FD3D08B9E2E53D0>, double %158, i64 0
%172 = fmul <2 x double> %170, %171
%173 = bitcast double* %159 to <2 x double>*
store <2 x double> %172, <2 x double>* %173
%174 = getelementptr inbounds double, double* %1, i64 6
store double 0.000000e+00, double* %174
ret void
}