void arithmetic() {
  int a;
  int b;
  int c;
  a = 6;
  b = 9;
  double aa = 6, bb = 9, cc;
  double fortyfive = 45, sixty = 60, thirty = 30;
  c = a + b;
  c = a - b;
  c = a * b;
  c = a / b;
  c = b / a;
  c = a % b;
  c = b % a;
  c = -a + b;
  c = -a - b;
  c = -a * b;
  c = -a / b;
  c = -b / a;
  c = -a % b;
  c = -b % a;
  c = pow(a, b);
  c = pow(b, a);
  c = pow(-a, b);
  c = pow(-b, a);
  c = pow(a, -b);
  c = pow(b, -a);
  c = pow(-a, -b);
  c = pow(-b, -a);
  c = sqrt(a);
  c = sqrt(-a);
  c = log(a);
  c = log(-a);
  c = log2(a);
  c = log2(-a);
  c = log10(a);
  c = log10(-a);
  cc = aa + bb;
  cc = aa - bb;
  cc = aa * bb;
  cc = aa / bb;
  cc = bb / aa;
  cc = -aa + bb;
  cc = -aa - bb;
  cc = -aa * bb;
  cc = -aa / bb;
  cc = -bb / aa;
  cc = pow(aa, bb);
  cc = pow(bb, aa);
  cc = pow(-aa, bb);
  cc = pow(-bb, aa);
  cc = pow(aa, -bb);
  cc = pow(bb, -aa);
  cc = pow(-aa, -bb);
  cc = pow(-bb, -aa);
  cc = sqrt(aa);
  cc = sqrt(-aa);
  cc = log(aa);
  cc = log(-aa);
  cc = log2(aa);
  cc = log2(-aa);
  cc = log10(aa);
  cc = log10(-aa);
  cc = sin(aa * 3.14159265);
  cc = sin(bb * 3.14159265);
  cc = sin(thirty * 3.14159265 / 180.0);
  cc = sin(fortyfive * 3.14159265 / 180.0);
  cc = sin(sixty * 3.14159265 / 180.0);
  cc = cos(aa * 3.14159265);
  cc = cos(bb * 3.14159265);
  cc = cos(thirty * 3.14159265 / 180.0);
  cc = cos(fortyfive * 3.14159265 / 180.0);
  cc = cos(sixty * 3.14159265 / 180.0);
  cc = tan(thirty * 3.14159265 / 180.0);
  cc = tan(fortyfive * 3.14159265 / 180.0);
  cc = tan(sixty * 3.14159265 / 180.0);
  cc = atan(aa / aa) * 180 / 3.14159265;
  cc = atan(bb / bb) * 180 / 3.14159265;
  cc = atan(aa / bb) * 180 / 3.14159265;
  cc = atan(bb / aa) * 180 / 3.14159265 + 0;
  cc = atan(bb / -aa) * 180 / 3.14159265 + 180;
  cc = atan(bb / aa) * 180 / 3.14159265 + 180;
  cc = atan(-bb / aa) * 180 / 3.14159265 + 360;
}


x86 assembly (clang, -O0):
<arithmetic>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
movl   $0x6,-0x4(%rbp)
movl   $0x9,-0x8(%rbp)
movsd  0xe8a(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0xe75(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xe60(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xe4b(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xe36(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x4(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x4(%rbp),%eax
sub    -0x8(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x4(%rbp),%eax
imul   -0x8(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x4(%rbp),%eax
cltd
idivl  -0x8(%rbp)
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%eax
cltd
idivl  -0x4(%rbp)
mov    %eax,-0xc(%rbp)
mov    -0x4(%rbp),%eax
cltd
idivl  -0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    -0x8(%rbp),%eax
cltd
idivl  -0x4(%rbp)
mov    %edx,-0xc(%rbp)
xor    %eax,%eax
sub    -0x4(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0xc(%rbp)
xor    %eax,%eax
sub    -0x4(%rbp),%eax
sub    -0x8(%rbp),%eax
mov    %eax,-0xc(%rbp)
xor    %eax,%eax
sub    -0x4(%rbp),%eax
imul   -0x8(%rbp),%eax
mov    %eax,-0xc(%rbp)
xor    %eax,%eax
sub    -0x4(%rbp),%eax
cltd
idivl  -0x8(%rbp)
mov    %eax,-0xc(%rbp)
xor    %eax,%eax
sub    -0x8(%rbp),%eax
cltd
idivl  -0x4(%rbp)
mov    %eax,-0xc(%rbp)
xor    %eax,%eax
sub    -0x4(%rbp),%eax
cltd
idivl  -0x8(%rbp)
mov    %edx,-0xc(%rbp)
xor    %eax,%eax
sub    -0x8(%rbp),%eax
cltd
idivl  -0x4(%rbp)
mov    %edx,-0xc(%rbp)
cvtsi2sdl -0x4(%rbp),%xmm0
cvtsi2sdl -0x8(%rbp),%xmm1
call   1090 <pow@plt>
cvttsd2si %xmm0,%eax
mov    %eax,-0xc(%rbp)
cvtsi2sdl -0x8(%rbp),%xmm0
cvtsi2sdl -0x4(%rbp),%xmm1
call   1090 <pow@plt>
cvttsd2si %xmm0,%eax
mov    %eax,-0xc(%rbp)
xor    %eax,%eax
sub    -0x4(%rbp),%eax
cvtsi2sd %eax,%xmm0
cvtsi2sdl -0x8(%rbp),%xmm1
call   1090 <pow@plt>
cvttsd2si %xmm0,%eax
mov    %eax,-0xc(%rbp)
xor    %eax,%eax
sub    -0x8(%rbp),%eax
cvtsi2sd %eax,%xmm0
cvtsi2sdl -0x4(%rbp),%xmm1
call   1090 <pow@plt>
cvttsd2si %xmm0,%eax
mov    %eax,-0xc(%rbp)
cvtsi2sdl -0x4(%rbp),%xmm0
xor    %eax,%eax
sub    -0x8(%rbp),%eax
cvtsi2sd %eax,%xmm1
call   1090 <pow@plt>
cvttsd2si %xmm0,%eax
mov    %eax,-0xc(%rbp)
cvtsi2sdl -0x8(%rbp),%xmm0
xor    %eax,%eax
sub    -0x4(%rbp),%eax
cvtsi2sd %eax,%xmm1
call   1090 <pow@plt>
cvttsd2si %xmm0,%eax
mov    %eax,-0xc(%rbp)
xor    %eax,%eax
sub    -0x4(%rbp),%eax
cvtsi2sd %eax,%xmm0
xor    %eax,%eax
sub    -0x8(%rbp),%eax
cvtsi2sd %eax,%xmm1
call   1090 <pow@plt>
cvttsd2si %xmm0,%eax
mov    %eax,-0xc(%rbp)
xor    %eax,%eax
sub    -0x8(%rbp),%eax
cvtsi2sd %eax,%xmm0
xor    %eax,%eax
sub    -0x4(%rbp),%eax
cvtsi2sd %eax,%xmm1
call   1090 <pow@plt>
cvttsd2si %xmm0,%eax
mov    %eax,-0xc(%rbp)
cvtsi2sdl -0x4(%rbp),%xmm0
call   10b0 <sqrt@plt>
cvttsd2si %xmm0,%eax
mov    %eax,-0xc(%rbp)
xor    %eax,%eax
sub    -0x4(%rbp),%eax
cvtsi2sd %eax,%xmm0
call   10b0 <sqrt@plt>
cvttsd2si %xmm0,%eax
mov    %eax,-0xc(%rbp)
cvtsi2sdl -0x4(%rbp),%xmm0
call   1080 <log@plt>
cvttsd2si %xmm0,%eax
mov    %eax,-0xc(%rbp)
xor    %eax,%eax
sub    -0x4(%rbp),%eax
cvtsi2sd %eax,%xmm0
call   1080 <log@plt>
cvttsd2si %xmm0,%eax
mov    %eax,-0xc(%rbp)
cvtsi2sdl -0x4(%rbp),%xmm0
call   1030 <log2@plt>
cvttsd2si %xmm0,%eax
mov    %eax,-0xc(%rbp)
xor    %eax,%eax
sub    -0x4(%rbp),%eax
cvtsi2sd %eax,%xmm0
call   1030 <log2@plt>
cvttsd2si %xmm0,%eax
mov    %eax,-0xc(%rbp)
cvtsi2sdl -0x4(%rbp),%xmm0
call   10a0 <log10@plt>
cvttsd2si %xmm0,%eax
mov    %eax,-0xc(%rbp)
xor    %eax,%eax
sub    -0x4(%rbp),%eax
cvtsi2sd %eax,%xmm0
call   10a0 <log10@plt>
cvttsd2si %xmm0,%eax
mov    %eax,-0xc(%rbp)
movsd  -0x18(%rbp),%xmm0
addsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
subsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
divsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x20(%rbp),%xmm0
divsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
addsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
subsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
divsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x20(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
divsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
call   1090 <pow@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
call   1090 <pow@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x20(%rbp),%xmm1
call   1090 <pow@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x20(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x18(%rbp),%xmm1
call   1090 <pow@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
call   1090 <pow@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
call   1090 <pow@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x20(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
call   1090 <pow@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x20(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x18(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
call   1090 <pow@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
call   10b0 <sqrt@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   10b0 <sqrt@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
call   1080 <log@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1080 <log@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
call   1030 <log2@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <log2@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
call   10a0 <log10@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   10a0 <log10@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  0x8e6(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  0x8cf(%rip),%xmm0
mulsd  -0x20(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  0x8b8(%rip),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  0x8b3(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  0x895(%rip),%xmm0
mulsd  -0x30(%rbp),%xmm0
movsd  0x890(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  0x872(%rip),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  0x86d(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  0x84f(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
call   1070 <cos@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  0x838(%rip),%xmm0
mulsd  -0x20(%rbp),%xmm0
call   1070 <cos@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  0x821(%rip),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  0x81c(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1070 <cos@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  0x7fe(%rip),%xmm0
mulsd  -0x30(%rbp),%xmm0
movsd  0x7f9(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1070 <cos@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  0x7db(%rip),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  0x7d6(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1070 <cos@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  0x7b8(%rip),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  0x7b3(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1060 <tan@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  0x795(%rip),%xmm0
mulsd  -0x30(%rbp),%xmm0
movsd  0x790(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1060 <tan@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  0x772(%rip),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  0x76d(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1060 <tan@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
divsd  -0x18(%rbp),%xmm0
call   1050 <atan@plt>
movsd  0x748(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x734(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x20(%rbp),%xmm0
divsd  -0x20(%rbp),%xmm0
call   1050 <atan@plt>
movsd  0x71c(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x708(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
divsd  -0x20(%rbp),%xmm0
call   1050 <atan@plt>
movsd  0x6f0(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x6dc(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x20(%rbp),%xmm0
divsd  -0x18(%rbp),%xmm0
call   1050 <atan@plt>
movsd  0x6c4(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x6b0(%rip),%xmm1
divsd  %xmm1,%xmm0
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
divsd  %xmm1,%xmm0
call   1050 <atan@plt>
movsd  0x676(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x662(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0x65e(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x20(%rbp),%xmm0
divsd  -0x18(%rbp),%xmm0
call   1050 <atan@plt>
movsd  0x63e(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x62a(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0x626(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x20(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
divsd  -0x18(%rbp),%xmm0
call   1050 <atan@plt>
movsd  0x5ef(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x5db(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0x5c7(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<arithmetic>:
push   %rax
movss  0xea7(%rip),%xmm0
call   1050 <sqrtf@plt>
movsd  0xea2(%rip),%xmm0
call   1060 <log@plt>
movsd  0xe95(%rip),%xmm0
call   1030 <log2@plt>
movsd  0xe88(%rip),%xmm0
call   1070 <log10@plt>
movss  0xe73(%rip),%xmm0
call   1050 <sqrtf@plt>
movsd  0xe6e(%rip),%xmm0
call   1060 <log@plt>
movsd  0xe61(%rip),%xmm0
call   1030 <log2@plt>
movsd  0xe54(%rip),%xmm0
call   1070 <log10@plt>
movsd  0xe4f(%rip),%xmm0
call   1040 <atan@plt>
movsd  0xe42(%rip),%xmm0
call   1040 <atan@plt>
movsd  0xe3d(%rip),%xmm0
call   1040 <atan@plt>
movsd  0xe38(%rip),%xmm0
call   1040 <atan@plt>
movsd  0xe33(%rip),%xmm0
call   1040 <atan@plt>
movsd  0xe1e(%rip),%xmm0
call   1040 <atan@plt>
movsd  0xe19(%rip),%xmm0
pop    %rax
jmp    1040 <atan@plt>

LLVM IR (-O0):
define void @arithmetic() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca double
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
store i32 6, i32* %1
store i32 9, i32* %2
store double 6.000000e+00, double* %4
store double 9.000000e+00, double* %5
store double 4.500000e+01, double* %7
store double 6.000000e+01, double* %8
store double 3.000000e+01, double* %9
%10 = load i32, i32* %1
%11 = load i32, i32* %2
%12 = add nsw i32 %10, %11
store i32 %12, i32* %3
%13 = load i32, i32* %1
%14 = load i32, i32* %2
%15 = sub nsw i32 %13, %14
store i32 %15, i32* %3
%16 = load i32, i32* %1
%17 = load i32, i32* %2
%18 = mul nsw i32 %16, %17
store i32 %18, i32* %3
%19 = load i32, i32* %1
%20 = load i32, i32* %2
%21 = sdiv i32 %19, %20
store i32 %21, i32* %3
%22 = load i32, i32* %2
%23 = load i32, i32* %1
%24 = sdiv i32 %22, %23
store i32 %24, i32* %3
%25 = load i32, i32* %1
%26 = load i32, i32* %2
%27 = srem i32 %25, %26
store i32 %27, i32* %3
%28 = load i32, i32* %2
%29 = load i32, i32* %1
%30 = srem i32 %28, %29
store i32 %30, i32* %3
%31 = load i32, i32* %1
%32 = sub nsw i32 0, %31
%33 = load i32, i32* %2
%34 = add nsw i32 %32, %33
store i32 %34, i32* %3
%35 = load i32, i32* %1
%36 = sub nsw i32 0, %35
%37 = load i32, i32* %2
%38 = sub nsw i32 %36, %37
store i32 %38, i32* %3
%39 = load i32, i32* %1
%40 = sub nsw i32 0, %39
%41 = load i32, i32* %2
%42 = mul nsw i32 %40, %41
store i32 %42, i32* %3
%43 = load i32, i32* %1
%44 = sub nsw i32 0, %43
%45 = load i32, i32* %2
%46 = sdiv i32 %44, %45
store i32 %46, i32* %3
%47 = load i32, i32* %2
%48 = sub nsw i32 0, %47
%49 = load i32, i32* %1
%50 = sdiv i32 %48, %49
store i32 %50, i32* %3
%51 = load i32, i32* %1
%52 = sub nsw i32 0, %51
%53 = load i32, i32* %2
%54 = srem i32 %52, %53
store i32 %54, i32* %3
%55 = load i32, i32* %2
%56 = sub nsw i32 0, %55
%57 = load i32, i32* %1
%58 = srem i32 %56, %57
store i32 %58, i32* %3
%59 = load i32, i32* %1
%60 = sitofp i32 %59 to double
%61 = load i32, i32* %2
%62 = sitofp i32 %61 to double
%63 = call double @pow(double %60, double %62)
%64 = fptosi double %63 to i32
store i32 %64, i32* %3
%65 = load i32, i32* %2
%66 = sitofp i32 %65 to double
%67 = load i32, i32* %1
%68 = sitofp i32 %67 to double
%69 = call double @pow(double %66, double %68)
%70 = fptosi double %69 to i32
store i32 %70, i32* %3
%71 = load i32, i32* %1
%72 = sub nsw i32 0, %71
%73 = sitofp i32 %72 to double
%74 = load i32, i32* %2
%75 = sitofp i32 %74 to double
%76 = call double @pow(double %73, double %75)
%77 = fptosi double %76 to i32
store i32 %77, i32* %3
%78 = load i32, i32* %2
%79 = sub nsw i32 0, %78
%80 = sitofp i32 %79 to double
%81 = load i32, i32* %1
%82 = sitofp i32 %81 to double
%83 = call double @pow(double %80, double %82)
%84 = fptosi double %83 to i32
store i32 %84, i32* %3
%85 = load i32, i32* %1
%86 = sitofp i32 %85 to double
%87 = load i32, i32* %2
%88 = sub nsw i32 0, %87
%89 = sitofp i32 %88 to double
%90 = call double @pow(double %86, double %89)
%91 = fptosi double %90 to i32
store i32 %91, i32* %3
%92 = load i32, i32* %2
%93 = sitofp i32 %92 to double
%94 = load i32, i32* %1
%95 = sub nsw i32 0, %94
%96 = sitofp i32 %95 to double
%97 = call double @pow(double %93, double %96)
%98 = fptosi double %97 to i32
store i32 %98, i32* %3
%99 = load i32, i32* %1
%100 = sub nsw i32 0, %99
%101 = sitofp i32 %100 to double
%102 = load i32, i32* %2
%103 = sub nsw i32 0, %102
%104 = sitofp i32 %103 to double
%105 = call double @pow(double %101, double %104)
%106 = fptosi double %105 to i32
store i32 %106, i32* %3
%107 = load i32, i32* %2
%108 = sub nsw i32 0, %107
%109 = sitofp i32 %108 to double
%110 = load i32, i32* %1
%111 = sub nsw i32 0, %110
%112 = sitofp i32 %111 to double
%113 = call double @pow(double %109, double %112)
%114 = fptosi double %113 to i32
store i32 %114, i32* %3
%115 = load i32, i32* %1
%116 = sitofp i32 %115 to double
%117 = call double @sqrt(double %116)
%118 = fptosi double %117 to i32
store i32 %118, i32* %3
%119 = load i32, i32* %1
%120 = sub nsw i32 0, %119
%121 = sitofp i32 %120 to double
%122 = call double @sqrt(double %121)
%123 = fptosi double %122 to i32
store i32 %123, i32* %3
%124 = load i32, i32* %1
%125 = sitofp i32 %124 to double
%126 = call double @log(double %125)
%127 = fptosi double %126 to i32
store i32 %127, i32* %3
%128 = load i32, i32* %1
%129 = sub nsw i32 0, %128
%130 = sitofp i32 %129 to double
%131 = call double @log(double %130)
%132 = fptosi double %131 to i32
store i32 %132, i32* %3
%133 = load i32, i32* %1
%134 = sitofp i32 %133 to double
%135 = call double @log2(double %134)
%136 = fptosi double %135 to i32
store i32 %136, i32* %3
%137 = load i32, i32* %1
%138 = sub nsw i32 0, %137
%139 = sitofp i32 %138 to double
%140 = call double @log2(double %139)
%141 = fptosi double %140 to i32
store i32 %141, i32* %3
%142 = load i32, i32* %1
%143 = sitofp i32 %142 to double
%144 = call double @log10(double %143)
%145 = fptosi double %144 to i32
store i32 %145, i32* %3
%146 = load i32, i32* %1
%147 = sub nsw i32 0, %146
%148 = sitofp i32 %147 to double
%149 = call double @log10(double %148)
%150 = fptosi double %149 to i32
store i32 %150, i32* %3
%151 = load double, double* %4
%152 = load double, double* %5
%153 = fadd double %151, %152
store double %153, double* %6
%154 = load double, double* %4
%155 = load double, double* %5
%156 = fsub double %154, %155
store double %156, double* %6
%157 = load double, double* %4
%158 = load double, double* %5
%159 = fmul double %157, %158
store double %159, double* %6
%160 = load double, double* %4
%161 = load double, double* %5
%162 = fdiv double %160, %161
store double %162, double* %6
%163 = load double, double* %5
%164 = load double, double* %4
%165 = fdiv double %163, %164
store double %165, double* %6
%166 = load double, double* %4
%167 = fneg double %166
%168 = load double, double* %5
%169 = fadd double %167, %168
store double %169, double* %6
%170 = load double, double* %4
%171 = fneg double %170
%172 = load double, double* %5
%173 = fsub double %171, %172
store double %173, double* %6
%174 = load double, double* %4
%175 = fneg double %174
%176 = load double, double* %5
%177 = fmul double %175, %176
store double %177, double* %6
%178 = load double, double* %4
%179 = fneg double %178
%180 = load double, double* %5
%181 = fdiv double %179, %180
store double %181, double* %6
%182 = load double, double* %5
%183 = fneg double %182
%184 = load double, double* %4
%185 = fdiv double %183, %184
store double %185, double* %6
%186 = load double, double* %4
%187 = load double, double* %5
%188 = call double @pow(double %186, double %187)
store double %188, double* %6
%189 = load double, double* %5
%190 = load double, double* %4
%191 = call double @pow(double %189, double %190)
store double %191, double* %6
%192 = load double, double* %4
%193 = fneg double %192
%194 = load double, double* %5
%195 = call double @pow(double %193, double %194)
store double %195, double* %6
%196 = load double, double* %5
%197 = fneg double %196
%198 = load double, double* %4
%199 = call double @pow(double %197, double %198)
store double %199, double* %6
%200 = load double, double* %4
%201 = load double, double* %5
%202 = fneg double %201
%203 = call double @pow(double %200, double %202)
store double %203, double* %6
%204 = load double, double* %5
%205 = load double, double* %4
%206 = fneg double %205
%207 = call double @pow(double %204, double %206)
store double %207, double* %6
%208 = load double, double* %4
%209 = fneg double %208
%210 = load double, double* %5
%211 = fneg double %210
%212 = call double @pow(double %209, double %211)
store double %212, double* %6
%213 = load double, double* %5
%214 = fneg double %213
%215 = load double, double* %4
%216 = fneg double %215
%217 = call double @pow(double %214, double %216)
store double %217, double* %6
%218 = load double, double* %4
%219 = call double @sqrt(double %218)
store double %219, double* %6
%220 = load double, double* %4
%221 = fneg double %220
%222 = call double @sqrt(double %221)
store double %222, double* %6
%223 = load double, double* %4
%224 = call double @log(double %223)
store double %224, double* %6
%225 = load double, double* %4
%226 = fneg double %225
%227 = call double @log(double %226)
store double %227, double* %6
%228 = load double, double* %4
%229 = call double @log2(double %228)
store double %229, double* %6
%230 = load double, double* %4
%231 = fneg double %230
%232 = call double @log2(double %231)
store double %232, double* %6
%233 = load double, double* %4
%234 = call double @log10(double %233)
store double %234, double* %6
%235 = load double, double* %4
%236 = fneg double %235
%237 = call double @log10(double %236)
store double %237, double* %6
%238 = load double, double* %4
%239 = fmul double %238, 0x400921FB53C8D4F1
%240 = call double @sin(double %239)
store double %240, double* %6
%241 = load double, double* %5
%242 = fmul double %241, 0x400921FB53C8D4F1
%243 = call double @sin(double %242)
store double %243, double* %6
%244 = load double, double* %9
%245 = fmul double %244, 0x400921FB53C8D4F1
%246 = fdiv double %245, 1.800000e+02
%247 = call double @sin(double %246)
store double %247, double* %6
%248 = load double, double* %7
%249 = fmul double %248, 0x400921FB53C8D4F1
%250 = fdiv double %249, 1.800000e+02
%251 = call double @sin(double %250)
store double %251, double* %6
%252 = load double, double* %8
%253 = fmul double %252, 0x400921FB53C8D4F1
%254 = fdiv double %253, 1.800000e+02
%255 = call double @sin(double %254)
store double %255, double* %6
%256 = load double, double* %4
%257 = fmul double %256, 0x400921FB53C8D4F1
%258 = call double @cos(double %257)
store double %258, double* %6
%259 = load double, double* %5
%260 = fmul double %259, 0x400921FB53C8D4F1
%261 = call double @cos(double %260)
store double %261, double* %6
%262 = load double, double* %9
%263 = fmul double %262, 0x400921FB53C8D4F1
%264 = fdiv double %263, 1.800000e+02
%265 = call double @cos(double %264)
store double %265, double* %6
%266 = load double, double* %7
%267 = fmul double %266, 0x400921FB53C8D4F1
%268 = fdiv double %267, 1.800000e+02
%269 = call double @cos(double %268)
store double %269, double* %6
%270 = load double, double* %8
%271 = fmul double %270, 0x400921FB53C8D4F1
%272 = fdiv double %271, 1.800000e+02
%273 = call double @cos(double %272)
store double %273, double* %6
%274 = load double, double* %9
%275 = fmul double %274, 0x400921FB53C8D4F1
%276 = fdiv double %275, 1.800000e+02
%277 = call double @tan(double %276)
store double %277, double* %6
%278 = load double, double* %7
%279 = fmul double %278, 0x400921FB53C8D4F1
%280 = fdiv double %279, 1.800000e+02
%281 = call double @tan(double %280)
store double %281, double* %6
%282 = load double, double* %8
%283 = fmul double %282, 0x400921FB53C8D4F1
%284 = fdiv double %283, 1.800000e+02
%285 = call double @tan(double %284)
store double %285, double* %6
%286 = load double, double* %4
%287 = load double, double* %4
%288 = fdiv double %286, %287
%289 = call double @atan(double %288)
%290 = fmul double %289, 1.800000e+02
%291 = fdiv double %290, 0x400921FB53C8D4F1
store double %291, double* %6
%292 = load double, double* %5
%293 = load double, double* %5
%294 = fdiv double %292, %293
%295 = call double @atan(double %294)
%296 = fmul double %295, 1.800000e+02
%297 = fdiv double %296, 0x400921FB53C8D4F1
store double %297, double* %6
%298 = load double, double* %4
%299 = load double, double* %5
%300 = fdiv double %298, %299
%301 = call double @atan(double %300)
%302 = fmul double %301, 1.800000e+02
%303 = fdiv double %302, 0x400921FB53C8D4F1
store double %303, double* %6
%304 = load double, double* %5
%305 = load double, double* %4
%306 = fdiv double %304, %305
%307 = call double @atan(double %306)
%308 = fmul double %307, 1.800000e+02
%309 = fdiv double %308, 0x400921FB53C8D4F1
%310 = fadd double %309, 0.000000e+00
store double %310, double* %6
%311 = load double, double* %5
%312 = load double, double* %4
%313 = fneg double %312
%314 = fdiv double %311, %313
%315 = call double @atan(double %314)
%316 = fmul double %315, 1.800000e+02
%317 = fdiv double %316, 0x400921FB53C8D4F1
%318 = fadd double %317, 1.800000e+02
store double %318, double* %6
%319 = load double, double* %5
%320 = load double, double* %4
%321 = fdiv double %319, %320
%322 = call double @atan(double %321)
%323 = fmul double %322, 1.800000e+02
%324 = fdiv double %323, 0x400921FB53C8D4F1
%325 = fadd double %324, 1.800000e+02
store double %325, double* %6
%326 = load double, double* %5
%327 = fneg double %326
%328 = load double, double* %4
%329 = fdiv double %327, %328
%330 = call double @atan(double %329)
%331 = fmul double %330, 1.800000e+02
%332 = fdiv double %331, 0x400921FB53C8D4F1
%333 = fadd double %332, 3.600000e+02
store double %333, double* %6
ret void
}

LLVM IR (-O2):
define void @arithmetic() {
%1 = tail call float @sqrtf(float -6.000000e+00)
%2 = tail call double @log(double -6.000000e+00)
%3 = tail call double @log2(double -6.000000e+00)
%4 = tail call double @log10(double -6.000000e+00)
%5 = tail call float @sqrtf(float -6.000000e+00)
%6 = tail call double @log(double -6.000000e+00)
%7 = tail call double @log2(double -6.000000e+00)
%8 = tail call double @log10(double -6.000000e+00)
%9 = tail call double @atan(double 1.000000e+00)
%10 = tail call double @atan(double 1.000000e+00)
%11 = tail call double @atan(double 0x3FE5555555555555)
%12 = tail call double @atan(double 1.500000e+00)
%13 = tail call double @atan(double -1.500000e+00)
%14 = tail call double @atan(double 1.500000e+00)
%15 = tail call double @atan(double -1.500000e+00)
ret void
}