#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(int);
int /*<<< orphan*/ angle_degree_to_radian(double);
int /*<<< orphan*/ assertDoubleEquals(int /*<<< orphan*/, double);
void test_angle_degree_to_radian() {
  assertDoubleEquals(angle_degree_to_radian(-1), -0.0174533);
  assertDoubleEquals(angle_degree_to_radian(1), 0.0174533);
  assertDoubleEquals(angle_degree_to_radian(2), 0.0349066);
  assertDoubleEquals(angle_degree_to_radian(0), 0);
  assertDoubleEquals(angle_degree_to_radian(9999999), 174532.9077);
  assertDoubleEquals(angle_degree_to_radian(-0.999999), -0.017453275067);
  assertDoubleEquals(angle_degree_to_radian((180 / acos(-1))), 1);
  assertDoubleEquals(angle_degree_to_radian(180), acos(-1));
  assertDoubleEquals(angle_degree_to_radian(0.01), 0.0001745329);
}


x86 assembly (clang, -O0):
<test_angle_degree_to_radian>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movsd  0xf20(%rip),%xmm0
call   1040 <angle_degree_to_radian@plt>
mov    %eax,%edi
movsd  0xf09(%rip),%xmm0
call   1050 <assertDoubleEquals@plt>
movsd  0xebc(%rip),%xmm0
call   1040 <angle_degree_to_radian@plt>
mov    %eax,%edi
movsd  0xee5(%rip),%xmm0
call   1050 <assertDoubleEquals@plt>
movsd  0xed0(%rip),%xmm0
call   1040 <angle_degree_to_radian@plt>
mov    %eax,%edi
movsd  0xeb9(%rip),%xmm0
call   1050 <assertDoubleEquals@plt>
xorps  %xmm0,%xmm0
call   1040 <angle_degree_to_radian@plt>
mov    %eax,%edi
xorps  %xmm0,%xmm0
call   1050 <assertDoubleEquals@plt>
movsd  0xe92(%rip),%xmm0
call   1040 <angle_degree_to_radian@plt>
mov    %eax,%edi
movsd  0xe7b(%rip),%xmm0
call   1050 <assertDoubleEquals@plt>
movsd  0xe66(%rip),%xmm0
call   1040 <angle_degree_to_radian@plt>
mov    %eax,%edi
movsd  0xe4f(%rip),%xmm0
call   1050 <assertDoubleEquals@plt>
mov    $0xffffffff,%edi
call   1030 <acos@plt>
movaps %xmm0,%xmm1
movsd  0xe25(%rip),%xmm0
divsd  %xmm1,%xmm0
call   1040 <angle_degree_to_radian@plt>
mov    %eax,%edi
movsd  0xe1a(%rip),%xmm0
call   1050 <assertDoubleEquals@plt>
movsd  0xe05(%rip),%xmm0
call   1040 <angle_degree_to_radian@plt>
mov    %eax,-0x4(%rbp)
mov    $0xffffffff,%edi
call   1030 <acos@plt>
mov    -0x4(%rbp),%edi
call   1050 <assertDoubleEquals@plt>
movsd  0xddb(%rip),%xmm0
call   1040 <angle_degree_to_radian@plt>
mov    %eax,%edi
movsd  0xdc4(%rip),%xmm0
call   1050 <assertDoubleEquals@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test_angle_degree_to_radian>:
push   %rbx
movsd  0xec7(%rip),%xmm0
call   1040 <angle_degree_to_radian@plt>
movsd  0xec2(%rip),%xmm0
mov    %eax,%edi
call   1050 <assertDoubleEquals@plt>
movsd  0xebb(%rip),%xmm0
call   1040 <angle_degree_to_radian@plt>
movsd  0xeb6(%rip),%xmm0
mov    %eax,%edi
call   1050 <assertDoubleEquals@plt>
movsd  0xeaf(%rip),%xmm0
call   1040 <angle_degree_to_radian@plt>
movsd  0xeaa(%rip),%xmm0
mov    %eax,%edi
call   1050 <assertDoubleEquals@plt>
xorps  %xmm0,%xmm0
call   1040 <angle_degree_to_radian@plt>
xorps  %xmm0,%xmm0
mov    %eax,%edi
call   1050 <assertDoubleEquals@plt>
movsd  0xe91(%rip),%xmm0
call   1040 <angle_degree_to_radian@plt>
movsd  0xe8c(%rip),%xmm0
mov    %eax,%edi
call   1050 <assertDoubleEquals@plt>
movsd  0xe85(%rip),%xmm0
call   1040 <angle_degree_to_radian@plt>
movsd  0xe80(%rip),%xmm0
mov    %eax,%edi
call   1050 <assertDoubleEquals@plt>
mov    $0xffffffff,%edi
call   1030 <acos@plt>
movsd  0xe6f(%rip),%xmm1
divsd  %xmm0,%xmm1
movapd %xmm1,%xmm0
call   1040 <angle_degree_to_radian@plt>
mov    %eax,%edi
movsd  0xe18(%rip),%xmm0
call   1050 <assertDoubleEquals@plt>
movsd  0xe4b(%rip),%xmm0
call   1040 <angle_degree_to_radian@plt>
mov    %eax,%ebx
mov    $0xffffffff,%edi
call   1030 <acos@plt>
mov    %ebx,%edi
call   1050 <assertDoubleEquals@plt>
movsd  0xe33(%rip),%xmm0
call   1040 <angle_degree_to_radian@plt>
movsd  0xe2e(%rip),%xmm0
mov    %eax,%edi
pop    %rbx
jmp    1050 <assertDoubleEquals@plt>

LLVM IR (-O0):
define void @test_angle_degree_to_radian() {
%1 = call i32 @angle_degree_to_radian(double -1.000000e+00)
%2 = call i32 @assertDoubleEquals(i32 %1, double -1.745330e-02)
%3 = call i32 @angle_degree_to_radian(double 1.000000e+00)
%4 = call i32 @assertDoubleEquals(i32 %3, double 1.745330e-02)
%5 = call i32 @angle_degree_to_radian(double 2.000000e+00)
%6 = call i32 @assertDoubleEquals(i32 %5, double 3.490660e-02)
%7 = call i32 @angle_degree_to_radian(double 0.000000e+00)
%8 = call i32 @assertDoubleEquals(i32 %7, double 0.000000e+00)
%9 = call i32 @angle_degree_to_radian(double 0x416312CFE0000000)
%10 = call i32 @assertDoubleEquals(i32 %9, double 0x41054E2742F837B5)
%11 = call i32 @angle_degree_to_radian(double 0xBFEFFFFDE7210BE9)
%12 = call i32 @assertDoubleEquals(i32 %11, double 0xBF91DF45767BC1FE)
%13 = call double @acos(i32 -1)
%14 = fdiv double 1.800000e+02, %13
%15 = call i32 @angle_degree_to_radian(double %14)
%16 = call i32 @assertDoubleEquals(i32 %15, double 1.000000e+00)
%17 = call i32 @angle_degree_to_radian(double 1.800000e+02)
%18 = call double @acos(i32 -1)
%19 = call i32 @assertDoubleEquals(i32 %17, double %18)
%20 = call i32 @angle_degree_to_radian(double 1.000000e-02)
%21 = call i32 @assertDoubleEquals(i32 %20, double 0x3F26E05A31F57C8C)
ret void
}

LLVM IR (-O2):
define void @test_angle_degree_to_radian() {
%1 = tail call i32 @angle_degree_to_radian(double -1.000000e+00)
%2 = tail call i32 @assertDoubleEquals(i32 %1, double -1.745330e-02)
%3 = tail call i32 @angle_degree_to_radian(double 1.000000e+00)
%4 = tail call i32 @assertDoubleEquals(i32 %3, double 1.745330e-02)
%5 = tail call i32 @angle_degree_to_radian(double 2.000000e+00)
%6 = tail call i32 @assertDoubleEquals(i32 %5, double 3.490660e-02)
%7 = tail call i32 @angle_degree_to_radian(double 0.000000e+00)
%8 = tail call i32 @assertDoubleEquals(i32 %7, double 0.000000e+00)
%9 = tail call i32 @angle_degree_to_radian(double 0x416312CFE0000000)
%10 = tail call i32 @assertDoubleEquals(i32 %9, double 0x41054E2742F837B5)
%11 = tail call i32 @angle_degree_to_radian(double 0xBFEFFFFDE7210BE9)
%12 = tail call i32 @assertDoubleEquals(i32 %11, double 0xBF91DF45767BC1FE)
%13 = tail call double @acos(i32 -1)
%14 = fdiv double 1.800000e+02, %13
%15 = tail call i32 @angle_degree_to_radian(double %14)
%16 = tail call i32 @assertDoubleEquals(i32 %15, double 1.000000e+00)
%17 = tail call i32 @angle_degree_to_radian(double 1.800000e+02)
%18 = tail call double @acos(i32 -1)
%19 = tail call i32 @assertDoubleEquals(i32 %17, double %18)
%20 = tail call i32 @angle_degree_to_radian(double 1.000000e-02)
%21 = tail call i32 @assertDoubleEquals(i32 %20, double 0x3F26E05A31F57C8C)
ret void
}