#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 */
typedef int clock_t;

/* Variables and functions */
double acos(double);
double atan(double);
double atan2(double, float);
int clock();
double cos(double);
double exp(double);
double log(double);
double log10(double);
double pow(double, double);
int /*<<< orphan*/ printf(char *, int);
double sin(double);
double sqrt(double);
void main() {
  int i;
  clock_t time, overall = 0;
  double t;
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = acos(t);
  }
  time = clock() - time;
  overall += time;
  printf("acos %d\n", time);
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = atan(t);
  }
  time = clock() - time;
  overall += time;
  printf("atan %d\n", time);
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = atan2(t, 1.2345f);
  }
  time = clock() - time;
  overall += time;
  printf("atan2 %d\n", time);
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = sqrt(t);
  }
  time = clock() - time;
  overall += time;
  printf("sqrt %d\n", time);
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = pow(t, t);
  }
  time = clock() - time;
  overall += time;
  printf("pow %d\n", time);
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = exp(t);
  }
  time = clock() - time;
  overall += time;
  printf("exp %d\n", time);
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = sin(t);
  }
  time = clock() - time;
  overall += time;
  printf("sin %d\n", time);
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = cos(t);
  }
  time = clock() - time;
  overall += time;
  printf("cos %d\n", time);
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = log(t);
  }
  time = clock() - time;
  overall += time;
  printf("log %d\n", time);
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = log10(t);
  }
  time = clock() - time;
  overall += time;
  printf("log10 %d\n", time);
  printf("overall %d\n", overall);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movl   $0x0,-0xc(%rbp)
mov    $0x0,%al
call   1040 <clock@plt>
mov    %eax,-0x8(%rbp)
movl   $0x0,-0x4(%rbp)
cmpl   $0xf4240,-0x4(%rbp)
jge    1230 <main+0x70>
cvtsi2ssl -0x4(%rbp),%xmm0
movss  0xe06(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0xdfe(%rip),%xmm1
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
call   1060 <acos@plt>
movsd  %xmm0,-0x18(%rbp)
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    11e0 <main+0x20>
mov    $0x0,%al
call   1040 <clock@plt>
sub    -0x8(%rbp),%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%esi
lea    0xdbc(%rip),%rdi
call   1050 <printf@plt>
mov    $0x0,%al
call   1040 <clock@plt>
mov    %eax,-0x8(%rbp)
movl   $0x0,-0x4(%rbp)
cmpl   $0xf4240,-0x4(%rbp)
jge    12b6 <main+0xf6>
cvtsi2ssl -0x4(%rbp),%xmm0
movss  0xd80(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0xd78(%rip),%xmm1
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
call   1080 <atan@plt>
movsd  %xmm0,-0x18(%rbp)
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1266 <main+0xa6>
mov    $0x0,%al
call   1040 <clock@plt>
sub    -0x8(%rbp),%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%esi
lea    0xd3f(%rip),%rdi
call   1050 <printf@plt>
mov    $0x0,%al
call   1040 <clock@plt>
mov    %eax,-0x8(%rbp)
movl   $0x0,-0x4(%rbp)
cmpl   $0xf4240,-0x4(%rbp)
jge    1344 <main+0x184>
cvtsi2ssl -0x4(%rbp),%xmm0
movss  0xcfa(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0xcf2(%rip),%xmm1
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movss  0xcdc(%rip),%xmm1
call   1030 <atan2@plt>
movsd  %xmm0,-0x18(%rbp)
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    12ec <main+0x12c>
mov    $0x0,%al
call   1040 <clock@plt>
sub    -0x8(%rbp),%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%esi
lea    0xcba(%rip),%rdi
call   1050 <printf@plt>
mov    $0x0,%al
call   1040 <clock@plt>
mov    %eax,-0x8(%rbp)
movl   $0x0,-0x4(%rbp)
cmpl   $0xf4240,-0x4(%rbp)
jge    13ca <main+0x20a>
cvtsi2ssl -0x4(%rbp),%xmm0
movss  0xc6c(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0xc64(%rip),%xmm1
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
call   10e0 <sqrt@plt>
movsd  %xmm0,-0x18(%rbp)
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    137a <main+0x1ba>
mov    $0x0,%al
call   1040 <clock@plt>
sub    -0x8(%rbp),%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%esi
lea    0xc3e(%rip),%rdi
call   1050 <printf@plt>
mov    $0x0,%al
call   1040 <clock@plt>
mov    %eax,-0x8(%rbp)
movl   $0x0,-0x4(%rbp)
cmpl   $0xf4240,-0x4(%rbp)
jge    1455 <main+0x295>
cvtsi2ssl -0x4(%rbp),%xmm0
movss  0xbe6(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0xbde(%rip),%xmm1
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
call   10c0 <pow@plt>
movsd  %xmm0,-0x18(%rbp)
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1400 <main+0x240>
mov    $0x0,%al
call   1040 <clock@plt>
sub    -0x8(%rbp),%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%esi
lea    0xbbc(%rip),%rdi
call   1050 <printf@plt>
mov    $0x0,%al
call   1040 <clock@plt>
mov    %eax,-0x8(%rbp)
movl   $0x0,-0x4(%rbp)
cmpl   $0xf4240,-0x4(%rbp)
jge    14db <main+0x31b>
cvtsi2ssl -0x4(%rbp),%xmm0
movss  0xb5b(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0xb53(%rip),%xmm1
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
call   1090 <exp@plt>
movsd  %xmm0,-0x18(%rbp)
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    148b <main+0x2cb>
mov    $0x0,%al
call   1040 <clock@plt>
sub    -0x8(%rbp),%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%esi
lea    0xb3e(%rip),%rdi
call   1050 <printf@plt>
mov    $0x0,%al
call   1040 <clock@plt>
mov    %eax,-0x8(%rbp)
movl   $0x0,-0x4(%rbp)
cmpl   $0xf4240,-0x4(%rbp)
jge    1561 <main+0x3a1>
cvtsi2ssl -0x4(%rbp),%xmm0
movss  0xad5(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0xacd(%rip),%xmm1
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
call   1070 <sin@plt>
movsd  %xmm0,-0x18(%rbp)
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1511 <main+0x351>
mov    $0x0,%al
call   1040 <clock@plt>
sub    -0x8(%rbp),%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%esi
lea    0xac0(%rip),%rdi
call   1050 <printf@plt>
mov    $0x0,%al
call   1040 <clock@plt>
mov    %eax,-0x8(%rbp)
movl   $0x0,-0x4(%rbp)
cmpl   $0xf4240,-0x4(%rbp)
jge    15e7 <main+0x427>
cvtsi2ssl -0x4(%rbp),%xmm0
movss  0xa4f(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0xa47(%rip),%xmm1
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
call   10a0 <cos@plt>
movsd  %xmm0,-0x18(%rbp)
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1597 <main+0x3d7>
mov    $0x0,%al
call   1040 <clock@plt>
sub    -0x8(%rbp),%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%esi
lea    0xa06(%rip),%rdi
call   1050 <printf@plt>
mov    $0x0,%al
call   1040 <clock@plt>
mov    %eax,-0x8(%rbp)
movl   $0x0,-0x4(%rbp)
cmpl   $0xf4240,-0x4(%rbp)
jge    166d <main+0x4ad>
cvtsi2ssl -0x4(%rbp),%xmm0
movss  0x9c9(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0x9c1(%rip),%xmm1
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
call   10b0 <log@plt>
movsd  %xmm0,-0x18(%rbp)
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    161d <main+0x45d>
mov    $0x0,%al
call   1040 <clock@plt>
sub    -0x8(%rbp),%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%esi
lea    0x9bc(%rip),%rdi
call   1050 <printf@plt>
mov    $0x0,%al
call   1040 <clock@plt>
mov    %eax,-0x8(%rbp)
movl   $0x0,-0x4(%rbp)
cmpl   $0xf4240,-0x4(%rbp)
jge    16f3 <main+0x533>
cvtsi2ssl -0x4(%rbp),%xmm0
movss  0x943(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0x93b(%rip),%xmm1
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
call   10d0 <log10@plt>
movsd  %xmm0,-0x18(%rbp)
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    16a3 <main+0x4e3>
mov    $0x0,%al
call   1040 <clock@plt>
sub    -0x8(%rbp),%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%esi
lea    0x93e(%rip),%rdi
call   1050 <printf@plt>
mov    -0xc(%rbp),%esi
lea    0x939(%rip),%rdi
call   1050 <printf@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
xor    %ebp,%ebp
xor    %eax,%eax
call   1040 <clock@plt>
mov    %eax,%ebx
movss  0xe1f(%rip),%xmm1
movss  0xe1b(%rip),%xmm2
movss  0xe17(%rip),%xmm3
movss  0xe13(%rip),%xmm4
nopl   0x0(%rax)
xorps  %xmm0,%xmm0
cvtsi2ss %ebp,%xmm0
mulss  %xmm1,%xmm0
addss  %xmm2,%xmm0
ucomiss %xmm0,%xmm3
ja     1226 <main+0x66>
ucomiss %xmm4,%xmm0
ja     1226 <main+0x66>
add    $0x1,%ebp
cmp    $0xf4240,%ebp
jne    1200 <main+0x40>
jmp    1251 <main+0x91>
cvtss2sd %xmm0,%xmm0
call   1060 <acos@plt>
movss  0xdd5(%rip),%xmm4
movss  0xdc9(%rip),%xmm3
movss  0xdbd(%rip),%xmm2
movss  0xdb1(%rip),%xmm1
jmp    1219 <main+0x59>
xor    %ebp,%ebp
xor    %eax,%eax
call   1040 <clock@plt>
sub    %ebx,%eax
lea    0xdc1(%rip),%rdi
mov    %eax,0x14(%rsp)
mov    %eax,%esi
call   1050 <printf@plt>
xor    %eax,%eax
call   1040 <clock@plt>
mov    %eax,%r14d
nopl   0x0(%rax,%rax,1)
xorps  %xmm0,%xmm0
cvtsi2ss %ebp,%xmm0
mulss  0xd71(%rip),%xmm0
addss  0xd6d(%rip),%xmm0
cvtss2sd %xmm0,%xmm0
call   1080 <atan@plt>
add    $0x1,%ebp
cmp    $0xf4240,%ebp
jne    1280 <main+0xc0>
xor    %ebx,%ebx
xor    %eax,%eax
call   1040 <clock@plt>
mov    %eax,%ebp
sub    %r14d,%ebp
lea    0xd6d(%rip),%rdi
mov    %ebp,%esi
call   1050 <printf@plt>
xor    %eax,%eax
call   1040 <clock@plt>
mov    %eax,%r14d
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
xorps  %xmm0,%xmm0
cvtsi2ss %ebx,%xmm0
mulss  0xd11(%rip),%xmm0
addss  0xd0d(%rip),%xmm0
cvtss2sd %xmm0,%xmm0
movss  0xd0d(%rip),%xmm1
call   1030 <atan2@plt>
add    $0x1,%ebx
cmp    $0xf4240,%ebx
jne    12e0 <main+0x120>
xor    %ebx,%ebx
xor    %eax,%eax
call   1040 <clock@plt>
sub    %r14d,%eax
lea    0xd10(%rip),%rdi
mov    %eax,0x10(%rsp)
mov    %eax,%esi
call   1050 <printf@plt>
xor    %eax,%eax
call   1040 <clock@plt>
mov    %eax,%r14d
xorps  %xmm3,%xmm3
movss  0xcba(%rip),%xmm1
movss  0xcb6(%rip),%xmm2
xchg   %ax,%ax
xorps  %xmm0,%xmm0
cvtsi2ss %ebx,%xmm0
mulss  %xmm1,%xmm0
addss  %xmm2,%xmm0
ucomiss %xmm0,%xmm3
ja     1388 <main+0x1c8>
add    $0x1,%ebx
xorps  %xmm0,%xmm0
cvtsi2ss %ebx,%xmm0
mulss  %xmm1,%xmm0
addss  %xmm2,%xmm0
ucomiss %xmm0,%xmm3
ja     13a7 <main+0x1e7>
add    $0x1,%ebx
cmp    $0xf4240,%ebx
jne    1350 <main+0x190>
jmp    13c6 <main+0x206>
ucomiss %xmm3,%xmm0
jae    1364 <main+0x1a4>
call   10a0 <sqrtf@plt>
xorps  %xmm3,%xmm3
movss  0xc67(%rip),%xmm2
movss  0xc5b(%rip),%xmm1
jmp    1364 <main+0x1a4>
ucomiss %xmm3,%xmm0
jae    137b <main+0x1bb>
call   10a0 <sqrtf@plt>
xorps  %xmm3,%xmm3
movss  0xc48(%rip),%xmm2
movss  0xc3c(%rip),%xmm1
jmp    137b <main+0x1bb>
xor    %ebx,%ebx
xor    %eax,%eax
call   1040 <clock@plt>
sub    %r14d,%eax
lea    0xc67(%rip),%rdi
mov    %eax,0xc(%rsp)
mov    %eax,%esi
call   1050 <printf@plt>
xor    %eax,%eax
call   1040 <clock@plt>
mov    %eax,%r14d
xchg   %ax,%ax
xorps  %xmm0,%xmm0
cvtsi2ss %ebx,%xmm0
movss  0xc01(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0xbf9(%rip),%xmm1
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movaps %xmm0,%xmm1
call   10d0 <pow@plt>
lea    0x1(%rbx),%eax
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
mulss  0xbd3(%rip),%xmm0
addss  0xbcf(%rip),%xmm0
cvtss2sd %xmm0,%xmm0
movaps %xmm0,%xmm1
call   10d0 <pow@plt>
lea    0x2(%rbx),%eax
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
mulss  0xbad(%rip),%xmm0
addss  0xba9(%rip),%xmm0
cvtss2sd %xmm0,%xmm0
movaps %xmm0,%xmm1
call   10d0 <pow@plt>
lea    0x3(%rbx),%eax
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
mulss  0xb87(%rip),%xmm0
addss  0xb83(%rip),%xmm0
cvtss2sd %xmm0,%xmm0
movaps %xmm0,%xmm1
call   10d0 <pow@plt>
add    $0x4,%ebx
cmp    $0xf4240,%ebx
jne    13f0 <main+0x230>
xor    %ebx,%ebx
xor    %eax,%eax
call   1040 <clock@plt>
sub    %r14d,%eax
lea    0xb9a(%rip),%rdi
mov    %eax,0x8(%rsp)
mov    %eax,%esi
call   1050 <printf@plt>
xor    %eax,%eax
call   1040 <clock@plt>
mov    %eax,%r14d
movss  0xb48(%rip),%xmm3
movss  0xb44(%rip),%xmm4
movss  0xb24(%rip),%xmm1
movss  0xb20(%rip),%xmm2
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
xorps  %xmm0,%xmm0
cvtsi2ss %ebx,%xmm0
mulss  %xmm1,%xmm0
addss  %xmm2,%xmm0
ucomiss %xmm3,%xmm0
ja     1516 <main+0x356>
ucomiss %xmm0,%xmm4
ja     1516 <main+0x356>
add    $0x1,%ebx
cmp    $0xf4240,%ebx
jne    14f0 <main+0x330>
jmp    1541 <main+0x381>
cvtss2sd %xmm0,%xmm0
call   1090 <exp@plt>
movss  0xaf1(%rip),%xmm4
movss  0xae5(%rip),%xmm3
movss  0xacd(%rip),%xmm2
movss  0xac1(%rip),%xmm1
jmp    1509 <main+0x349>
xor    %ebx,%ebx
xor    %eax,%eax
call   1040 <clock@plt>
sub    %r14d,%eax
lea    0xafd(%rip),%rdi
mov    %eax,0x4(%rsp)
mov    %eax,%esi
call   1050 <printf@plt>
xor    %eax,%eax
call   1040 <clock@plt>
movss  0xa96(%rip),%xmm2
movss  0xa8a(%rip),%xmm1
mov    %eax,%r15d
movss  0xa9b(%rip),%xmm3
movss  0xa97(%rip),%xmm4
nopl   0x0(%rax)
xorps  %xmm0,%xmm0
cvtsi2ss %ebx,%xmm0
mulss  %xmm1,%xmm0
addss  %xmm2,%xmm0
ucomiss %xmm3,%xmm0
jae    15d2 <main+0x412>
ucomiss %xmm0,%xmm4
jae    15d2 <main+0x412>
add    $0x1,%ebx
xorps  %xmm0,%xmm0
cvtsi2ss %ebx,%xmm0
mulss  %xmm1,%xmm0
addss  %xmm2,%xmm0
ucomiss %xmm3,%xmm0
jae    15fd <main+0x43d>
ucomiss %xmm0,%xmm4
jae    15fd <main+0x43d>
add    $0x1,%ebx
cmp    $0xf4240,%ebx
jne    1590 <main+0x3d0>
jmp    1628 <main+0x468>
cvtss2sd %xmm0,%xmm0
call   1070 <sin@plt>
movss  0xa3d(%rip),%xmm4
movss  0xa31(%rip),%xmm3
movss  0xa11(%rip),%xmm2
movss  0xa05(%rip),%xmm1
jmp    15a9 <main+0x3e9>
cvtss2sd %xmm0,%xmm0
call   1070 <sin@plt>
movss  0xa12(%rip),%xmm4
movss  0xa06(%rip),%xmm3
movss  0x9e6(%rip),%xmm2
movss  0x9da(%rip),%xmm1
jmp    15c5 <main+0x405>
xor    %ebx,%ebx
xor    %eax,%eax
call   1040 <clock@plt>
mov    %eax,%r14d
sub    %r15d,%r14d
lea    0xa1b(%rip),%rdi
mov    %r14d,%esi
call   1050 <printf@plt>
xor    %eax,%eax
call   1040 <clock@plt>
movss  0x9cb(%rip),%xmm4
movss  0x9bf(%rip),%xmm3
movss  0x99f(%rip),%xmm2
movss  0x993(%rip),%xmm1
mov    %eax,%r13d
xorps  %xmm0,%xmm0
cvtsi2ss %ebx,%xmm0
mulss  %xmm1,%xmm0
addss  %xmm2,%xmm0
ucomiss %xmm3,%xmm0
jae    16b2 <main+0x4f2>
ucomiss %xmm0,%xmm4
jae    16b2 <main+0x4f2>
add    $0x1,%ebx
xorps  %xmm0,%xmm0
cvtsi2ss %ebx,%xmm0
mulss  %xmm1,%xmm0
addss  %xmm2,%xmm0
ucomiss %xmm3,%xmm0
jae    16dd <main+0x51d>
ucomiss %xmm0,%xmm4
jae    16dd <main+0x51d>
add    $0x1,%ebx
cmp    $0xf4240,%ebx
jne    1670 <main+0x4b0>
jmp    1708 <main+0x548>
cvtss2sd %xmm0,%xmm0
call   10b0 <cos@plt>
movss  0x95d(%rip),%xmm4
movss  0x951(%rip),%xmm3
movss  0x931(%rip),%xmm2
movss  0x925(%rip),%xmm1
jmp    1689 <main+0x4c9>
cvtss2sd %xmm0,%xmm0
call   10b0 <cos@plt>
movss  0x932(%rip),%xmm4
movss  0x926(%rip),%xmm3
movss  0x906(%rip),%xmm2
movss  0x8fa(%rip),%xmm1
jmp    16a5 <main+0x4e5>
xor    %ebx,%ebx
xor    %eax,%eax
call   1040 <clock@plt>
mov    %eax,%r15d
sub    %r13d,%r15d
lea    0x907(%rip),%rdi
mov    %r15d,%esi
call   1050 <printf@plt>
xor    %eax,%eax
call   1040 <clock@plt>
movss  0x8cf(%rip),%xmm2
movss  0x8c3(%rip),%xmm1
mov    %eax,%r13d
xorps  %xmm3,%xmm3
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
xorps  %xmm0,%xmm0
cvtsi2ss %ebx,%xmm0
mulss  %xmm1,%xmm0
addss  %xmm2,%xmm0
ucomiss %xmm0,%xmm3
jae    1771 <main+0x5b1>
add    $0x1,%ebx
cmp    $0xf4240,%ebx
jne    1750 <main+0x590>
jmp    178f <main+0x5cf>
cvtss2sd %xmm0,%xmm0
call   10c0 <log@plt>
xorps  %xmm3,%xmm3
movss  0x87f(%rip),%xmm2
movss  0x873(%rip),%xmm1
jmp    1764 <main+0x5a4>
xor    %r12d,%r12d
xor    %eax,%eax
call   1040 <clock@plt>
mov    %eax,%ebx
sub    %r13d,%ebx
lea    0x8bc(%rip),%rdi
mov    %ebx,%esi
call   1050 <printf@plt>
xor    %eax,%eax
call   1040 <clock@plt>
movss  0x849(%rip),%xmm2
movss  0x83d(%rip),%xmm1
mov    %eax,%r13d
xorps  %xmm3,%xmm3
nopl   0x0(%rax)
xorps  %xmm0,%xmm0
cvtsi2ss %r12d,%xmm0
mulss  %xmm1,%xmm0
addss  %xmm2,%xmm0
ucomiss %xmm0,%xmm3
jae    17f4 <main+0x634>
add    $0x1,%r12d
cmp    $0xf4240,%r12d
jne    17d0 <main+0x610>
jmp    1812 <main+0x652>
cvtss2sd %xmm0,%xmm0
call   10e0 <log10@plt>
xorps  %xmm3,%xmm3
movss  0x7fc(%rip),%xmm2
movss  0x7f0(%rip),%xmm1
jmp    17e5 <main+0x625>
add    0x14(%rsp),%ebp
add    0x10(%rsp),%ebp
add    0xc(%rsp),%ebp
add    0x8(%rsp),%ebp
add    0x4(%rsp),%ebp
add    %r14d,%ebp
add    %r15d,%ebp
add    %ebx,%ebp
xor    %eax,%eax
call   1040 <clock@plt>
sub    %r13d,%eax
add    %eax,%ebp
lea    0x828(%rip),%rdi
mov    %eax,%esi
call   1050 <printf@plt>
lea    0x824(%rip),%rdi
mov    %ebp,%esi
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1050 <printf@plt>

LLVM IR (-O0):
@.str = [9 x i8] c"acos %d\0A\00"
@.str.1 = [9 x i8] c"atan %d\0A\00"
@.str.2 = [10 x i8] c"atan2 %d\0A\00"
@.str.3 = [9 x i8] c"sqrt %d\0A\00"
@.str.4 = [8 x i8] c"pow %d\0A\00"
@.str.5 = [8 x i8] c"exp %d\0A\00"
@.str.6 = [8 x i8] c"sin %d\0A\00"
@.str.7 = [8 x i8] c"cos %d\0A\00"
@.str.8 = [8 x i8] c"log %d\0A\00"
@.str.9 = [10 x i8] c"log10 %d\0A\00"
@.str.10 = [12 x i8] c"overall %d\0A\00"
define void @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca double
store i32 0, i32* %3
%5 = call i32 (...) @clock()
store i32 %5, i32* %2
store i32 0, i32* %1
br label %6
6: ; preds = %16, %0
%7 = load i32, i32* %1
%8 = icmp slt i32 %7, 1000000
br i1 %8, label %9, label %19
9: ; preds = %6
%10 = load i32, i32* %1
%11 = sitofp i32 %10 to float
%12 = call float @llvm.fmuladd.f32(float %11, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%13 = fpext float %12 to double
store double %13, double* %4
%14 = load double, double* %4
%15 = call double @acos(double %14)
store double %15, double* %4
br label %16
16: ; preds = %9
%17 = load i32, i32* %1
%18 = add nsw i32 %17, 1
store i32 %18, i32* %1
br label %6
19: ; preds = %6
%20 = call i32 (...) @clock()
%21 = load i32, i32* %2
%22 = sub nsw i32 %20, %21
store i32 %22, i32* %2
%23 = load i32, i32* %2
%24 = load i32, i32* %3
%25 = add nsw i32 %24, %23
store i32 %25, i32* %3
%26 = load i32, i32* %2
%27 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i64 0, i64 0), i32 %26)
%28 = call i32 (...) @clock()
store i32 %28, i32* %2
store i32 0, i32* %1
br label %29
29: ; preds = %39, %19
%30 = load i32, i32* %1
%31 = icmp slt i32 %30, 1000000
br i1 %31, label %32, label %42
32: ; preds = %29
%33 = load i32, i32* %1
%34 = sitofp i32 %33 to float
%35 = call float @llvm.fmuladd.f32(float %34, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%36 = fpext float %35 to double
store double %36, double* %4
%37 = load double, double* %4
%38 = call double @atan(double %37)
store double %38, double* %4
br label %39
39: ; preds = %32
%40 = load i32, i32* %1
%41 = add nsw i32 %40, 1
store i32 %41, i32* %1
br label %29
42: ; preds = %29
%43 = call i32 (...) @clock()
%44 = load i32, i32* %2
%45 = sub nsw i32 %43, %44
store i32 %45, i32* %2
%46 = load i32, i32* %2
%47 = load i32, i32* %3
%48 = add nsw i32 %47, %46
store i32 %48, i32* %3
%49 = load i32, i32* %2
%50 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0), i32 %49)
%51 = call i32 (...) @clock()
store i32 %51, i32* %2
store i32 0, i32* %1
br label %52
52: ; preds = %62, %42
%53 = load i32, i32* %1
%54 = icmp slt i32 %53, 1000000
br i1 %54, label %55, label %65
55: ; preds = %52
%56 = load i32, i32* %1
%57 = sitofp i32 %56 to float
%58 = call float @llvm.fmuladd.f32(float %57, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%59 = fpext float %58 to double
store double %59, double* %4
%60 = load double, double* %4
%61 = call double @atan2(double %60, float 0x3FF3C08320000000)
store double %61, double* %4
br label %62
62: ; preds = %55
%63 = load i32, i32* %1
%64 = add nsw i32 %63, 1
store i32 %64, i32* %1
br label %52
65: ; preds = %52
%66 = call i32 (...) @clock()
%67 = load i32, i32* %2
%68 = sub nsw i32 %66, %67
store i32 %68, i32* %2
%69 = load i32, i32* %2
%70 = load i32, i32* %3
%71 = add nsw i32 %70, %69
store i32 %71, i32* %3
%72 = load i32, i32* %2
%73 = call i32 @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.2, i64 0, i64 0), i32 %72)
%74 = call i32 (...) @clock()
store i32 %74, i32* %2
store i32 0, i32* %1
br label %75
75: ; preds = %85, %65
%76 = load i32, i32* %1
%77 = icmp slt i32 %76, 1000000
br i1 %77, label %78, label %88
78: ; preds = %75
%79 = load i32, i32* %1
%80 = sitofp i32 %79 to float
%81 = call float @llvm.fmuladd.f32(float %80, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%82 = fpext float %81 to double
store double %82, double* %4
%83 = load double, double* %4
%84 = call double @sqrt(double %83)
store double %84, double* %4
br label %85
85: ; preds = %78
%86 = load i32, i32* %1
%87 = add nsw i32 %86, 1
store i32 %87, i32* %1
br label %75
88: ; preds = %75
%89 = call i32 (...) @clock()
%90 = load i32, i32* %2
%91 = sub nsw i32 %89, %90
store i32 %91, i32* %2
%92 = load i32, i32* %2
%93 = load i32, i32* %3
%94 = add nsw i32 %93, %92
store i32 %94, i32* %3
%95 = load i32, i32* %2
%96 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0), i32 %95)
%97 = call i32 (...) @clock()
store i32 %97, i32* %2
store i32 0, i32* %1
br label %98
98: ; preds = %109, %88
%99 = load i32, i32* %1
%100 = icmp slt i32 %99, 1000000
br i1 %100, label %101, label %112
101: ; preds = %98
%102 = load i32, i32* %1
%103 = sitofp i32 %102 to float
%104 = call float @llvm.fmuladd.f32(float %103, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%105 = fpext float %104 to double
store double %105, double* %4
%106 = load double, double* %4
%107 = load double, double* %4
%108 = call double @pow(double %106, double %107)
store double %108, double* %4
br label %109
109: ; preds = %101
%110 = load i32, i32* %1
%111 = add nsw i32 %110, 1
store i32 %111, i32* %1
br label %98
112: ; preds = %98
%113 = call i32 (...) @clock()
%114 = load i32, i32* %2
%115 = sub nsw i32 %113, %114
store i32 %115, i32* %2
%116 = load i32, i32* %2
%117 = load i32, i32* %3
%118 = add nsw i32 %117, %116
store i32 %118, i32* %3
%119 = load i32, i32* %2
%120 = call i32 @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0), i32 %119)
%121 = call i32 (...) @clock()
store i32 %121, i32* %2
store i32 0, i32* %1
br label %122
122: ; preds = %132, %112
%123 = load i32, i32* %1
%124 = icmp slt i32 %123, 1000000
br i1 %124, label %125, label %135
125: ; preds = %122
%126 = load i32, i32* %1
%127 = sitofp i32 %126 to float
%128 = call float @llvm.fmuladd.f32(float %127, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%129 = fpext float %128 to double
store double %129, double* %4
%130 = load double, double* %4
%131 = call double @exp(double %130)
store double %131, double* %4
br label %132
132: ; preds = %125
%133 = load i32, i32* %1
%134 = add nsw i32 %133, 1
store i32 %134, i32* %1
br label %122
135: ; preds = %122
%136 = call i32 (...) @clock()
%137 = load i32, i32* %2
%138 = sub nsw i32 %136, %137
store i32 %138, i32* %2
%139 = load i32, i32* %2
%140 = load i32, i32* %3
%141 = add nsw i32 %140, %139
store i32 %141, i32* %3
%142 = load i32, i32* %2
%143 = call i32 @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0), i32 %142)
%144 = call i32 (...) @clock()
store i32 %144, i32* %2
store i32 0, i32* %1
br label %145
145: ; preds = %155, %135
%146 = load i32, i32* %1
%147 = icmp slt i32 %146, 1000000
br i1 %147, label %148, label %158
148: ; preds = %145
%149 = load i32, i32* %1
%150 = sitofp i32 %149 to float
%151 = call float @llvm.fmuladd.f32(float %150, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%152 = fpext float %151 to double
store double %152, double* %4
%153 = load double, double* %4
%154 = call double @sin(double %153)
store double %154, double* %4
br label %155
155: ; preds = %148
%156 = load i32, i32* %1
%157 = add nsw i32 %156, 1
store i32 %157, i32* %1
br label %145
158: ; preds = %145
%159 = call i32 (...) @clock()
%160 = load i32, i32* %2
%161 = sub nsw i32 %159, %160
store i32 %161, i32* %2
%162 = load i32, i32* %2
%163 = load i32, i32* %3
%164 = add nsw i32 %163, %162
store i32 %164, i32* %3
%165 = load i32, i32* %2
%166 = call i32 @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.6, i64 0, i64 0), i32 %165)
%167 = call i32 (...) @clock()
store i32 %167, i32* %2
store i32 0, i32* %1
br label %168
168: ; preds = %178, %158
%169 = load i32, i32* %1
%170 = icmp slt i32 %169, 1000000
br i1 %170, label %171, label %181
171: ; preds = %168
%172 = load i32, i32* %1
%173 = sitofp i32 %172 to float
%174 = call float @llvm.fmuladd.f32(float %173, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%175 = fpext float %174 to double
store double %175, double* %4
%176 = load double, double* %4
%177 = call double @cos(double %176)
store double %177, double* %4
br label %178
178: ; preds = %171
%179 = load i32, i32* %1
%180 = add nsw i32 %179, 1
store i32 %180, i32* %1
br label %168
181: ; preds = %168
%182 = call i32 (...) @clock()
%183 = load i32, i32* %2
%184 = sub nsw i32 %182, %183
store i32 %184, i32* %2
%185 = load i32, i32* %2
%186 = load i32, i32* %3
%187 = add nsw i32 %186, %185
store i32 %187, i32* %3
%188 = load i32, i32* %2
%189 = call i32 @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.7, i64 0, i64 0), i32 %188)
%190 = call i32 (...) @clock()
store i32 %190, i32* %2
store i32 0, i32* %1
br label %191
191: ; preds = %201, %181
%192 = load i32, i32* %1
%193 = icmp slt i32 %192, 1000000
br i1 %193, label %194, label %204
194: ; preds = %191
%195 = load i32, i32* %1
%196 = sitofp i32 %195 to float
%197 = call float @llvm.fmuladd.f32(float %196, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%198 = fpext float %197 to double
store double %198, double* %4
%199 = load double, double* %4
%200 = call double @log(double %199)
store double %200, double* %4
br label %201
201: ; preds = %194
%202 = load i32, i32* %1
%203 = add nsw i32 %202, 1
store i32 %203, i32* %1
br label %191
204: ; preds = %191
%205 = call i32 (...) @clock()
%206 = load i32, i32* %2
%207 = sub nsw i32 %205, %206
store i32 %207, i32* %2
%208 = load i32, i32* %2
%209 = load i32, i32* %3
%210 = add nsw i32 %209, %208
store i32 %210, i32* %3
%211 = load i32, i32* %2
%212 = call i32 @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 %211)
%213 = call i32 (...) @clock()
store i32 %213, i32* %2
store i32 0, i32* %1
br label %214
214: ; preds = %224, %204
%215 = load i32, i32* %1
%216 = icmp slt i32 %215, 1000000
br i1 %216, label %217, label %227
217: ; preds = %214
%218 = load i32, i32* %1
%219 = sitofp i32 %218 to float
%220 = call float @llvm.fmuladd.f32(float %219, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%221 = fpext float %220 to double
store double %221, double* %4
%222 = load double, double* %4
%223 = call double @log10(double %222)
store double %223, double* %4
br label %224
224: ; preds = %217
%225 = load i32, i32* %1
%226 = add nsw i32 %225, 1
store i32 %226, i32* %1
br label %214
227: ; preds = %214
%228 = call i32 (...) @clock()
%229 = load i32, i32* %2
%230 = sub nsw i32 %228, %229
store i32 %230, i32* %2
%231 = load i32, i32* %2
%232 = load i32, i32* %3
%233 = add nsw i32 %232, %231
store i32 %233, i32* %3
%234 = load i32, i32* %2
%235 = call i32 @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i32 %234)
%236 = load i32, i32* %3
%237 = call i32 @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.10, i64 0, i64 0), i32 %236)
ret void
}

LLVM IR (-O2):
@.str = [9 x i8] c"acos %d\0A\00"
@.str.1 = [9 x i8] c"atan %d\0A\00"
@.str.2 = [10 x i8] c"atan2 %d\0A\00"
@.str.3 = [9 x i8] c"sqrt %d\0A\00"
@.str.4 = [8 x i8] c"pow %d\0A\00"
@.str.5 = [8 x i8] c"exp %d\0A\00"
@.str.6 = [8 x i8] c"sin %d\0A\00"
@.str.7 = [8 x i8] c"cos %d\0A\00"
@.str.8 = [8 x i8] c"log %d\0A\00"
@.str.9 = [10 x i8] c"log10 %d\0A\00"
@.str.10 = [12 x i8] c"overall %d\0A\00"
define void @main() {
%1 = tail call i32 (...) @clock()
br label %2
2: ; preds = %0, %12
%3 = phi i32 [ 0, %0 ], [ %13, %12 ]
%4 = sitofp i32 %3 to float
%5 = tail call float @llvm.fmuladd.f32(float %4, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%6 = fcmp ogt float %5, 1.000000e+00
%7 = fcmp olt float %5, -1.000000e+00
%8 = or i1 %7, %6
br i1 %8, label %9, label %12
9: ; preds = %2
%10 = fpext float %5 to double
%11 = tail call double @acos(double %10)
br label %12
12: ; preds = %2, %9
%13 = add nuw nsw i32 %3, 1
%14 = icmp eq i32 %13, 1000000
br i1 %14, label %15, label %2
15: ; preds = %12
%16 = tail call i32 (...) @clock()
%17 = sub nsw i32 %16, %1
%18 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i64 0, i64 0), i32 %17)
%19 = tail call i32 (...) @clock()
br label %20
20: ; preds = %15, %20
%21 = phi i32 [ 0, %15 ], [ %26, %20 ]
%22 = sitofp i32 %21 to float
%23 = tail call float @llvm.fmuladd.f32(float %22, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%24 = fpext float %23 to double
%25 = tail call double @atan(double %24)
%26 = add nuw nsw i32 %21, 1
%27 = icmp eq i32 %26, 1000000
br i1 %27, label %28, label %20
28: ; preds = %20
%29 = tail call i32 (...) @clock()
%30 = sub nsw i32 %29, %19
%31 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0), i32 %30)
%32 = tail call i32 (...) @clock()
br label %33
33: ; preds = %28, %33
%34 = phi i32 [ 0, %28 ], [ %39, %33 ]
%35 = sitofp i32 %34 to float
%36 = tail call float @llvm.fmuladd.f32(float %35, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%37 = fpext float %36 to double
%38 = tail call double @atan2(double %37, float 0x3FF3C08320000000)
%39 = add nuw nsw i32 %34, 1
%40 = icmp eq i32 %39, 1000000
br i1 %40, label %41, label %33
41: ; preds = %33
%42 = tail call i32 (...) @clock()
%43 = sub nsw i32 %42, %32
%44 = tail call i32 @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.2, i64 0, i64 0), i32 %43)
%45 = tail call i32 (...) @clock()
br label %46
46: ; preds = %60, %41
%47 = phi i32 [ 0, %41 ], [ %61, %60 ]
%48 = sitofp i32 %47 to float
%49 = tail call float @llvm.fmuladd.f32(float %48, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%50 = fcmp olt float %49, 0.000000e+00
br i1 %50, label %51, label %53
51: ; preds = %46
%52 = tail call float @sqrtf(float %49)
br label %53
53: ; preds = %46, %51
%54 = or i32 %47, 1
%55 = sitofp i32 %54 to float
%56 = tail call float @llvm.fmuladd.f32(float %55, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%57 = fcmp olt float %56, 0.000000e+00
br i1 %57, label %58, label %60
58: ; preds = %53
%59 = tail call float @sqrtf(float %56)
br label %60
60: ; preds = %58, %53
%61 = add nuw nsw i32 %47, 2
%62 = icmp eq i32 %61, 1000000
br i1 %62, label %63, label %46
63: ; preds = %60
%64 = tail call i32 (...) @clock()
%65 = sub nsw i32 %64, %45
%66 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0), i32 %65)
%67 = tail call i32 (...) @clock()
br label %68
68: ; preds = %68, %63
%69 = phi i32 [ 0, %63 ], [ %89, %68 ]
%70 = sitofp i32 %69 to float
%71 = tail call float @llvm.fmuladd.f32(float %70, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%72 = fpext float %71 to double
%73 = tail call double @pow(double %72, double %72)
%74 = or i32 %69, 1
%75 = sitofp i32 %74 to float
%76 = tail call float @llvm.fmuladd.f32(float %75, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%77 = fpext float %76 to double
%78 = tail call double @pow(double %77, double %77)
%79 = or i32 %69, 2
%80 = sitofp i32 %79 to float
%81 = tail call float @llvm.fmuladd.f32(float %80, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%82 = fpext float %81 to double
%83 = tail call double @pow(double %82, double %82)
%84 = or i32 %69, 3
%85 = sitofp i32 %84 to float
%86 = tail call float @llvm.fmuladd.f32(float %85, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%87 = fpext float %86 to double
%88 = tail call double @pow(double %87, double %87)
%89 = add nuw nsw i32 %69, 4
%90 = icmp eq i32 %89, 1000000
br i1 %90, label %91, label %68
91: ; preds = %68
%92 = tail call i32 (...) @clock()
%93 = sub nsw i32 %92, %67
%94 = tail call i32 @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0), i32 %93)
%95 = tail call i32 (...) @clock()
br label %96
96: ; preds = %91, %106
%97 = phi i32 [ 0, %91 ], [ %107, %106 ]
%98 = sitofp i32 %97 to float
%99 = tail call float @llvm.fmuladd.f32(float %98, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%100 = fcmp olt float %99, -7.450000e+02
%101 = fcmp ogt float %99, 7.090000e+02
%102 = or i1 %101, %100
br i1 %102, label %103, label %106
103: ; preds = %96
%104 = fpext float %99 to double
%105 = tail call double @exp(double %104)
br label %106
106: ; preds = %96, %103
%107 = add nuw nsw i32 %97, 1
%108 = icmp eq i32 %107, 1000000
br i1 %108, label %109, label %96
109: ; preds = %106
%110 = tail call i32 (...) @clock()
%111 = sub nsw i32 %110, %95
%112 = tail call i32 @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0), i32 %111)
%113 = tail call i32 (...) @clock()
br label %114
114: ; preds = %134, %109
%115 = phi i32 [ 0, %109 ], [ %135, %134 ]
%116 = sitofp i32 %115 to float
%117 = tail call float @llvm.fmuladd.f32(float %116, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%118 = fcmp oeq float %117, 0xFFF0000000000000
%119 = fcmp oeq float %117, 0x7FF0000000000000
%120 = or i1 %119, %118
br i1 %120, label %121, label %124
121: ; preds = %114
%122 = fpext float %117 to double
%123 = tail call double @sin(double %122)
br label %124
124: ; preds = %114, %121
%125 = or i32 %115, 1
%126 = sitofp i32 %125 to float
%127 = tail call float @llvm.fmuladd.f32(float %126, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%128 = fcmp oeq float %127, 0xFFF0000000000000
%129 = fcmp oeq float %127, 0x7FF0000000000000
%130 = or i1 %129, %128
br i1 %130, label %131, label %134
131: ; preds = %124
%132 = fpext float %127 to double
%133 = tail call double @sin(double %132)
br label %134
134: ; preds = %131, %124
%135 = add nuw nsw i32 %115, 2
%136 = icmp eq i32 %135, 1000000
br i1 %136, label %137, label %114
137: ; preds = %134
%138 = tail call i32 (...) @clock()
%139 = sub nsw i32 %138, %113
%140 = tail call i32 @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.6, i64 0, i64 0), i32 %139)
%141 = tail call i32 (...) @clock()
br label %142
142: ; preds = %162, %137
%143 = phi i32 [ 0, %137 ], [ %163, %162 ]
%144 = sitofp i32 %143 to float
%145 = tail call float @llvm.fmuladd.f32(float %144, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%146 = fcmp oeq float %145, 0xFFF0000000000000
%147 = fcmp oeq float %145, 0x7FF0000000000000
%148 = or i1 %147, %146
br i1 %148, label %149, label %152
149: ; preds = %142
%150 = fpext float %145 to double
%151 = tail call double @cos(double %150)
br label %152
152: ; preds = %142, %149
%153 = or i32 %143, 1
%154 = sitofp i32 %153 to float
%155 = tail call float @llvm.fmuladd.f32(float %154, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%156 = fcmp oeq float %155, 0xFFF0000000000000
%157 = fcmp oeq float %155, 0x7FF0000000000000
%158 = or i1 %157, %156
br i1 %158, label %159, label %162
159: ; preds = %152
%160 = fpext float %155 to double
%161 = tail call double @cos(double %160)
br label %162
162: ; preds = %159, %152
%163 = add nuw nsw i32 %143, 2
%164 = icmp eq i32 %163, 1000000
br i1 %164, label %165, label %142
165: ; preds = %162
%166 = tail call i32 (...) @clock()
%167 = sub nsw i32 %166, %141
%168 = tail call i32 @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.7, i64 0, i64 0), i32 %167)
%169 = tail call i32 (...) @clock()
br label %170
170: ; preds = %165, %178
%171 = phi i32 [ 0, %165 ], [ %179, %178 ]
%172 = sitofp i32 %171 to float
%173 = tail call float @llvm.fmuladd.f32(float %172, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%174 = fcmp ugt float %173, 0.000000e+00
br i1 %174, label %178, label %175
175: ; preds = %170
%176 = fpext float %173 to double
%177 = tail call double @log(double %176)
br label %178
178: ; preds = %170, %175
%179 = add nuw nsw i32 %171, 1
%180 = icmp eq i32 %179, 1000000
br i1 %180, label %181, label %170
181: ; preds = %178
%182 = tail call i32 (...) @clock()
%183 = sub nsw i32 %182, %169
%184 = tail call i32 @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 %183)
%185 = tail call i32 (...) @clock()
br label %186
186: ; preds = %181, %194
%187 = phi i32 [ 0, %181 ], [ %195, %194 ]
%188 = sitofp i32 %187 to float
%189 = tail call float @llvm.fmuladd.f32(float %188, float 1.000000e+01, float 0x3FBF7CEDA0000000)
%190 = fcmp ugt float %189, 0.000000e+00
br i1 %190, label %194, label %191
191: ; preds = %186
%192 = fpext float %189 to double
%193 = tail call double @log10(double %192)
br label %194
194: ; preds = %186, %191
%195 = add nuw nsw i32 %187, 1
%196 = icmp eq i32 %195, 1000000
br i1 %196, label %197, label %186
197: ; preds = %194
%198 = add nsw i32 %30, %17
%199 = add nsw i32 %198, %43
%200 = add nsw i32 %199, %65
%201 = add nsw i32 %200, %93
%202 = add nsw i32 %201, %111
%203 = add nsw i32 %202, %139
%204 = add nsw i32 %203, %167
%205 = add nsw i32 %204, %183
%206 = tail call i32 (...) @clock()
%207 = sub nsw i32 %206, %185
%208 = add nsw i32 %205, %207
%209 = tail call i32 @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i32 %207)
%210 = tail call i32 @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.10, i64 0, i64 0), i32 %208)
ret void
}