#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
double acos(double);
double asin(double);
double atan(double);
double ceil(double);
double cos(double);
double cosh(double);
double exp(double);
double fabs(double);
double floor(double);
double log(double);
double log10(double);
double pow(double, double);
int /*<<< orphan*/ printf(char *, double);
double round(double);
double sin(double);
double sinh(double);
double sqrt(double);
double tan(double);
double tanh(double);
int main() {
  printf("%f\n", sin(0.12));
  printf("%f\n", cos(0.12));
  printf("%f\n", tan(0.12));
  printf("%f\n", asin(0.12));
  printf("%f\n", acos(0.12));
  printf("%f\n", atan(0.12));
  printf("%f\n", sinh(0.12));
  printf("%f\n", cosh(0.12));
  printf("%f\n", tanh(0.12));
  printf("%f\n", exp(0.12));
  printf("%f\n", fabs(-0.12));
  printf("%f\n", log(0.12));
  printf("%f\n", log10(0.12));
  printf("%f\n", pow(0.12, 0.12));
  printf("%f\n", sqrt(0.12));
  printf("%f\n", round(12.34));
  printf("%f\n", ceil(12.34));
  printf("%f\n", floor(12.34));
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
movsd  0xe01(%rip),%xmm0
call   1080 <sin@plt>
lea    0xdfd(%rip),%rdi
call   1060 <printf@plt>
movsd  0xde8(%rip),%xmm0
call   10d0 <cos@plt>
lea    0xde4(%rip),%rdi
call   1060 <printf@plt>
movsd  0xdcf(%rip),%xmm0
call   10c0 <tan@plt>
lea    0xdcb(%rip),%rdi
call   1060 <printf@plt>
movsd  0xdb6(%rip),%xmm0
call   10a0 <asin@plt>
lea    0xdb2(%rip),%rdi
call   1060 <printf@plt>
movsd  0xd9d(%rip),%xmm0
call   1070 <acos@plt>
lea    0xd99(%rip),%rdi
call   1060 <printf@plt>
movsd  0xd84(%rip),%xmm0
call   1090 <atan@plt>
lea    0xd80(%rip),%rdi
call   1060 <printf@plt>
movsd  0xd6b(%rip),%xmm0
call   1030 <sinh@plt>
lea    0xd67(%rip),%rdi
call   1060 <printf@plt>
movsd  0xd52(%rip),%xmm0
call   1050 <cosh@plt>
lea    0xd4e(%rip),%rdi
call   1060 <printf@plt>
movsd  0xd39(%rip),%xmm0
call   1040 <tanh@plt>
lea    0xd35(%rip),%rdi
call   1060 <printf@plt>
movsd  0xd20(%rip),%xmm0
call   10b0 <exp@plt>
lea    0xd1c(%rip),%rdi
call   1060 <printf@plt>
movsd  0xd07(%rip),%xmm0
lea    0xd08(%rip),%rdi
call   1060 <printf@plt>
movsd  0xcf3(%rip),%xmm0
call   10e0 <log@plt>
lea    0xcef(%rip),%rdi
call   1060 <printf@plt>
movsd  0xcda(%rip),%xmm0
call   1110 <log10@plt>
lea    0xcd6(%rip),%rdi
call   1060 <printf@plt>
movsd  0xcc1(%rip),%xmm1
movaps %xmm1,%xmm0
call   10f0 <pow@plt>
lea    0xcba(%rip),%rdi
call   1060 <printf@plt>
movsd  0xca5(%rip),%xmm0
call   1120 <sqrt@plt>
lea    0xca1(%rip),%rdi
call   1060 <printf@plt>
movsd  0xc84(%rip),%xmm0
call   1100 <round@plt>
lea    0xc88(%rip),%rdi
call   1060 <printf@plt>
movsd  0xc63(%rip),%xmm0
lea    0xc74(%rip),%rdi
call   1060 <printf@plt>
movsd  0xc47(%rip),%xmm0
lea    0xc60(%rip),%rdi
call   1060 <printf@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
lea    0xf50(%rip),%rbx
movsd  0xec0(%rip),%xmm0
mov    %rbx,%rdi
call   1040 <printf@plt>
movsd  0xeb8(%rip),%xmm0
mov    %rbx,%rdi
call   1040 <printf@plt>
movsd  0xeb0(%rip),%xmm0
mov    %rbx,%rdi
call   1040 <printf@plt>
movsd  0xea8(%rip),%xmm0
mov    %rbx,%rdi
call   1040 <printf@plt>
movsd  0xea0(%rip),%xmm0
mov    %rbx,%rdi
call   1040 <printf@plt>
movsd  0xe98(%rip),%xmm0
call   1050 <atan@plt>
movsd  0xe93(%rip),%xmm0
mov    %rbx,%rdi
call   1040 <printf@plt>
movsd  0xe8b(%rip),%xmm0
mov    %rbx,%rdi
call   1040 <printf@plt>
movsd  0xe83(%rip),%xmm0
mov    %rbx,%rdi
call   1040 <printf@plt>
movsd  0xe5b(%rip),%xmm0
call   1030 <tanh@plt>
movsd  0xe6e(%rip),%xmm0
mov    %rbx,%rdi
call   1040 <printf@plt>
movsd  0xe66(%rip),%xmm0
mov    %rbx,%rdi
call   1040 <printf@plt>
mov    %rbx,%rdi
movsd  0xe2b(%rip),%xmm0
call   1040 <printf@plt>
movsd  0xe4e(%rip),%xmm0
mov    %rbx,%rdi
call   1040 <printf@plt>
movsd  0xe46(%rip),%xmm0
mov    %rbx,%rdi
call   1040 <printf@plt>
movsd  0xe3e(%rip),%xmm0
mov    %rbx,%rdi
call   1040 <printf@plt>
movsd  0xe36(%rip),%xmm0
mov    %rbx,%rdi
call   1040 <printf@plt>
movsd  0xe2e(%rip),%xmm0
mov    %rbx,%rdi
call   1040 <printf@plt>
movsd  0xe26(%rip),%xmm0
mov    %rbx,%rdi
call   1040 <printf@plt>
mov    %rbx,%rdi
movsd  0xe0b(%rip),%xmm0
call   1040 <printf@plt>
xor    %eax,%eax
pop    %rbx
ret

LLVM IR (-O0):
@.str = [4 x i8] c"%f\0A\00"
define i32 @main() {
%1 = alloca i32
store i32 0, i32* %1
%2 = call double @sin(double 1.200000e-01)
%3 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %2)
%4 = call double @cos(double 1.200000e-01)
%5 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %4)
%6 = call double @tan(double 1.200000e-01)
%7 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %6)
%8 = call double @asin(double 1.200000e-01)
%9 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %8)
%10 = call double @acos(double 1.200000e-01)
%11 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %10)
%12 = call double @atan(double 1.200000e-01)
%13 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %12)
%14 = call double @sinh(double 1.200000e-01)
%15 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %14)
%16 = call double @cosh(double 1.200000e-01)
%17 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %16)
%18 = call double @tanh(double 1.200000e-01)
%19 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %18)
%20 = call double @exp(double 1.200000e-01)
%21 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %20)
%22 = call double @llvm.fabs.f64(double -1.200000e-01)
%23 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %22)
%24 = call double @log(double 1.200000e-01)
%25 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %24)
%26 = call double @log10(double 1.200000e-01)
%27 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %26)
%28 = call double @pow(double 1.200000e-01, double 1.200000e-01)
%29 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %28)
%30 = call double @sqrt(double 1.200000e-01)
%31 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %30)
%32 = call double @llvm.round.f64(double 1.234000e+01)
%33 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %32)
%34 = call double @llvm.ceil.f64(double 1.234000e+01)
%35 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %34)
%36 = call double @llvm.floor.f64(double 1.234000e+01)
%37 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %36)
ret i32 0
}

LLVM IR (-O2):
@.str = [4 x i8] c"%f\0A\00"
define i32 @main() {
%1 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double 0x3FBEA5758F3CE5CD)
%2 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double 0x3FEFC5169DC5B825)
%3 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double 0x3FBEDE4995E55A7F)
%4 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double 0x3FBECB5156ECE085)
%5 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double 0x3FF735463ED55F10)
%6 = tail call double @atan(double 1.200000e-01)
%7 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double 0x3FBE92E4E371F679)
%8 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double 0x3FBECB353D02D5FD)
%9 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double 0x3FF01D86CFADD84C)
%10 = tail call double @tanh(double 1.200000e-01)
%11 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double 0x3FBE92C995746ED4)
%12 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double 0x3FF20A3A237E05AC)
%13 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double 1.200000e-01)
%14 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double 0xC000F64CBA970BAE)
%15 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double 0xBFED7758E4389B03)
%16 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double 0x3FE8CFB99F97BD40)
%17 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double 0x3FD62B9586AD0A22)
%18 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double 1.200000e+01)
%19 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double 1.300000e+01)
%20 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double 1.200000e+01)
ret i32 0
}