#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 atan2(double, double);
int /*<<< orphan*/ ceil(float);
double cos(double);
int /*<<< orphan*/ cosh(double);
int /*<<< orphan*/ exp(double);
int /*<<< orphan*/ fabs(float);
int /*<<< orphan*/ floor(float);
double fmod(float, float);
double frexp(double, int *);
double ldexp(double, int);
double log(double);
double log10(double);
double modf(double, double *);
int /*<<< orphan*/ pow(double, double);
int /*<<< orphan*/ printf(char *, float, ...);
double sin(double);
double sinh(double);
int /*<<< orphan*/ sqrt(double);
double tanh(double);
int main() {
  double x, y, ret, val;
  x = 0.9;
  val = 180.0 / 3.14159265;
  ret = acos(x) * val;
  printf("The arc cosine of %lf is %lf degrees\n", x, ret);
  ret = asin(x) * val;
  printf("The arc sine of %lf is %lf degrees\n", x, ret);
  x = 1.0;
  val = 180.0 / 3.14159265;
  ret = atan(x) * val;
  printf("The arc tangent of %lf is %lf degrees\n", x, ret);
  x = -7.0;
  y = 7.0;
  val = 180.0 / 3.14159265;
  ret = atan2(y, x) * val;
  printf("The arc tangent of x = %lf, y = %lf ", x, y);
  printf("is %lf degrees\n", ret);
  x = 60.0;
  val = 3.14159265 / 180.0;
  ret = cos(x * val);
  printf("The cosine of %lf is %lf degrees\n", x, ret);
  x = 90.0;
  val = 3.14159265 / 180.0;
  ret = cos(x * val);
  printf("The cosine of %lf is %lf degrees\n", x, ret);
  x = 0.5;
  printf("The hyperbolic cosine of %lf is %lf\n", x, cosh(x));
  x = 1.0;
  printf("The hyperbolic cosine of %lf is %lf\n", x, cosh(x));
  x = 1.5;
  printf("The hyperbolic cosine of %lf is %lf\n", x, cosh(x));
  x = 45.0;
  val = 3.14159265 / 180;
  ret = sin(x * val);
  printf("The sine of %lf is %lf degrees\n", x, ret);
  x = 0.5;
  ret = sinh(x);
  printf("The hyperbolic sine of %lf is %lf degrees\n", x, ret);
  x = 0.5;
  ret = tanh(x);
  printf("The hyperbolic tangent of %lf is %lf degrees\n", x, ret);
  x = 0;
  printf("The exponential value of %lf is %lf\n", x, exp(x));
  printf("The exponential value of %lf is %lf\n", x + 1, exp(x + 1));
  printf("The exponential value of %lf is %lf\n", x + 2, exp(x + 2));
  double fraction;
  x = 1024;
  int e;
  fraction = frexp(x, &e);
  printf("x = %.2lf = %.2lf * 2^%d\n", x, fraction, e);
  int n;
  x = 0.65;
  n = 3;
  ret = ldexp(x, n);
  printf("%f * 2^%d = %f\n", x, n, ret);
  x = 2.7;
  ret = log(x);
  printf("log(%lf) = %lf\n", x, ret);
  x = 10000;
  ret = log10(x);
  printf("log10(%lf) = %lf\n", x, ret);
  double fractpart, intpart;
  x = 8.123456;
  fractpart = modf(x, &intpart);
  printf("Integral part = %lf\n", intpart);
  printf("Fraction Part = %lf \n", fractpart);
  printf("Value 8.0 ^ 3 = %lf\n", pow(8.0, 3));
  printf("Value 3.05 ^ 1.98 = %lf\n", pow(3.05, 1.98));
  printf("Square root of %lf is %lf\n", 4.0, sqrt(4.0));
  printf("Square root of %lf is %lf\n", 5.0, sqrt(5.0));
  float val1, val2, val3, val4;
  val1 = 1.6;
  val2 = 1.2;
  val3 = 2.8;
  val4 = 2.3;
  printf("value1 = %.1lf\n", ceil(val1));
  printf("value2 = %.1lf\n", ceil(val2));
  printf("value3 = %.1lf\n", ceil(val3));
  printf("value4 = %.1lf\n", ceil(val4));
  float a, b;
  a = 1234;
  b = -344;
  printf("The absolute value of %lf is %lf\n", a, fabs(a));
  printf("The absolute value of %lf is %lf\n", b, fabs(b));
  val1 = 1.6;
  val2 = 1.2;
  val3 = 2.8;
  val4 = 2.3;
  printf("Value1 = %.1lf\n", floor(val1));
  printf("Value2 = %.1lf\n", floor(val2));
  printf("Value3 = %.1lf\n", floor(val3));
  printf("Value4 = %.1lf\n", floor(val4));
  int c;
  a = 9.2;
  b = 3.7;
  c = 2;
  printf("Remainder of %f / %d is %lf\n", a, c, fmod(a, c));
  printf("Remainder of %f / %f is %lf\n", a, b, fmod(a, b));
  return (0);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xa0,%rsp
movl   $0x0,-0x4(%rbp)
movsd  0xe5e(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xe39(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x10(%rbp),%xmm0
call   10c0 <acos@plt>
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movsd  -0x20(%rbp),%xmm1
lea    0xe2b(%rip),%rdi
mov    $0x2,%al
call   1090 <printf@plt>
movsd  -0x10(%rbp),%xmm0
call   1110 <asin@plt>
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movsd  -0x20(%rbp),%xmm1
lea    0xe21(%rip),%rdi
mov    $0x2,%al
call   1090 <printf@plt>
movsd  0xd94(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xdbf(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x10(%rbp),%xmm0
call   1100 <atan@plt>
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movsd  -0x20(%rbp),%xmm1
lea    0xdfb(%rip),%rdi
mov    $0x2,%al
call   1090 <printf@plt>
movsd  0xd92(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xd7d(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0xd68(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
call   1060 <atan2@plt>
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movsd  -0x18(%rbp),%xmm1
lea    0xdc6(%rip),%rdi
mov    $0x2,%al
call   1090 <printf@plt>
movsd  -0x20(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
lea    0xe56(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movsd  0xd07(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xcda(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x10(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1130 <cos@plt>
movsd  %xmm0,-0x20(%rbp)
movsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movsd  -0x20(%rbp),%xmm1
lea    0xd8a(%rip),%rdi
mov    $0x2,%al
call   1090 <printf@plt>
movsd  0xcb5(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xc90(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x10(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1130 <cos@plt>
movsd  %xmm0,-0x20(%rbp)
movsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movsd  -0x20(%rbp),%xmm1
lea    0xd40(%rip),%rdi
mov    $0x2,%al
call   1090 <printf@plt>
movsd  0xc4b(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1080 <cosh@plt>
movss  -0x98(%rbp),%xmm0
ff
mov    %eax,%esi
lea    0xd22(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movsd  0xc03(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1080 <cosh@plt>
movss  -0x94(%rbp),%xmm0
ff
mov    %eax,%esi
lea    0xce2(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movsd  0xbe3(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1080 <cosh@plt>
movss  -0x90(%rbp),%xmm0
ff
mov    %eax,%esi
lea    0xca2(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movsd  0xb9b(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xb86(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x10(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
call   10f0 <sin@plt>
movsd  %xmm0,-0x20(%rbp)
movsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movsd  -0x20(%rbp),%xmm1
lea    0xc7d(%rip),%rdi
mov    $0x2,%al
call   1090 <printf@plt>
movsd  0xb41(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
call   1040 <sinh@plt>
movsd  %xmm0,-0x20(%rbp)
movsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movsd  -0x20(%rbp),%xmm1
lea    0xc65(%rip),%rdi
mov    $0x2,%al
call   1090 <printf@plt>
movsd  0xb09(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
call   1070 <tanh@plt>
movsd  %xmm0,-0x20(%rbp)
movsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movsd  -0x20(%rbp),%xmm1
lea    0xc58(%rip),%rdi
mov    $0x2,%al
call   1090 <printf@plt>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1120 <exp@plt>
movss  -0x8c(%rbp),%xmm0
ff
mov    %eax,%esi
lea    0xc4b(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movsd  0xa8e(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movsd  0xa75(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
call   1120 <exp@plt>
movss  -0x88(%rbp),%xmm0
ff
mov    %eax,%esi
lea    0xc08(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movsd  0xa43(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movsd  0xa2a(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
call   1120 <exp@plt>
movss  -0x84(%rbp),%xmm0
ff
mov    %eax,%esi
lea    0xbc5(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movsd  0x9f8(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
lea    -0x34(%rbp),%rdi
call   10d0 <frexp@plt>
movsd  %xmm0,-0x30(%rbp)
movsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movsd  -0x30(%rbp),%xmm1
mov    -0x34(%rbp),%esi
lea    0xbab(%rip),%rdi
mov    $0x2,%al
call   1090 <printf@plt>
movsd  0x9b1(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movl   $0x3,-0x38(%rbp)
movsd  -0x10(%rbp),%xmm0
mov    -0x38(%rbp),%edi
call   1030 <ldexp@plt>
movsd  %xmm0,-0x20(%rbp)
movsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x38(%rbp),%esi
movsd  -0x20(%rbp),%xmm1
lea    0xb80(%rip),%rdi
mov    $0x2,%al
call   1090 <printf@plt>
movsd  0x964(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
call   1140 <log@plt>
movsd  %xmm0,-0x20(%rbp)
movsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movsd  -0x20(%rbp),%xmm1
lea    0xb58(%rip),%rdi
mov    $0x2,%al
call   1090 <printf@plt>
movsd  0x924(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
call   1160 <log10@plt>
movsd  %xmm0,-0x20(%rbp)
movsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movsd  -0x20(%rbp),%xmm1
lea    0xb30(%rip),%rdi
mov    $0x2,%al
call   1090 <printf@plt>
movsd  0x8e4(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
lea    -0x48(%rbp),%rdi
call   10b0 <modf@plt>
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
lea    0xb0b(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movsd  -0x40(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
lea    0xb09(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movsd  0x886(%rip),%xmm0
movsd  0x886(%rip),%xmm1
call   1150 <pow@plt>
cvtsi2ss %eax,%xmm0
lea    0xaf8(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movsd  0x84f(%rip),%xmm0
movsd  0x84f(%rip),%xmm1
call   1150 <pow@plt>
cvtsi2ss %eax,%xmm0
lea    0xae6(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movsd  0x820(%rip),%xmm0
call   1170 <sqrt@plt>
mov    %eax,%esi
lea    0xae2(%rip),%rdi
movss  0x7fe(%rip),%xmm0
mov    $0x1,%al
call   1090 <printf@plt>
movsd  0x7f3(%rip),%xmm0
call   1170 <sqrt@plt>
mov    %eax,%esi
lea    0xabd(%rip),%rdi
movss  0x7d5(%rip),%xmm0
mov    $0x1,%al
call   1090 <printf@plt>
movss  0x7ba(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  0x7a9(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
movss  0x798(%rip),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  0x787(%rip),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x4c(%rbp),%xmm0
call   1050 <ceil@plt>
cvtsi2ss %eax,%xmm0
lea    0xa80(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movss  -0x50(%rbp),%xmm0
call   1050 <ceil@plt>
cvtsi2ss %eax,%xmm0
lea    0xa74(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movss  -0x54(%rbp),%xmm0
call   1050 <ceil@plt>
cvtsi2ss %eax,%xmm0
lea    0xa68(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movss  -0x58(%rbp),%xmm0
call   1050 <ceil@plt>
cvtsi2ss %eax,%xmm0
lea    0xa5c(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movss  0x71e(%rip),%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  0x70d(%rip),%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x5c(%rbp),%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x5c(%rbp),%xmm0
call   10e0 <fabs@plt>
movss  -0x80(%rbp),%xmm0
mov    %eax,%esi
lea    0xa29(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movss  -0x60(%rbp),%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x60(%rbp),%xmm0
call   10e0 <fabs@plt>
movss  -0x7c(%rbp),%xmm0
mov    %eax,%esi
lea    0xa00(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movss  0x6aa(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  0x699(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
movss  0x688(%rip),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  0x677(%rip),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x4c(%rbp),%xmm0
call   1180 <floor@plt>
cvtsi2ss %eax,%xmm0
lea    0x9d2(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movss  -0x50(%rbp),%xmm0
call   1180 <floor@plt>
cvtsi2ss %eax,%xmm0
lea    0x9c6(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movss  -0x54(%rbp),%xmm0
call   1180 <floor@plt>
cvtsi2ss %eax,%xmm0
lea    0x9ba(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movss  -0x58(%rbp),%xmm0
call   1180 <floor@plt>
cvtsi2ss %eax,%xmm0
lea    0x9ae(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
movss  0x5f6(%rip),%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  0x5e5(%rip),%xmm0
movss  %xmm0,-0x60(%rbp)
movl   $0x2,-0x64(%rbp)
movss  -0x5c(%rbp),%xmm0
movss  %xmm0,-0x74(%rbp)
mov    -0x64(%rbp),%eax
mov    %eax,-0x78(%rbp)
movss  -0x5c(%rbp),%xmm0
cvtsi2ssl -0x64(%rbp),%xmm1
call   10a0 <fmod@plt>
mov    -0x78(%rbp),%esi
movaps %xmm0,%xmm1
movss  -0x74(%rbp),%xmm0
lea    0x965(%rip),%rdi
mov    $0x2,%al
call   1090 <printf@plt>
movss  -0x5c(%rbp),%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x60(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x70(%rbp)
movss  -0x5c(%rbp),%xmm0
movss  -0x60(%rbp),%xmm1
call   10a0 <fmod@plt>
movsd  -0x70(%rbp),%xmm1
movaps %xmm0,%xmm2
movss  -0x68(%rbp),%xmm0
lea    0x940(%rip),%rdi
mov    $0x3,%al
call   1090 <printf@plt>
xor    %eax,%eax
add    $0xa0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
sub    $0x20,%rsp
lea    0xf2c(%rip),%rdi
movss  0xdfc(%rip),%xmm0
movsd  0xe54(%rip),%xmm1
mov    $0x2,%al
call   1080 <printf@plt>
lea    0xf34(%rip),%rdi
movsd  0xe46(%rip),%xmm1
movss  0xdd6(%rip),%xmm0
mov    $0x2,%al
call   1080 <printf@plt>
movsd  0xe37(%rip),%xmm0
call   10d0 <atan@plt>
lea    0xf2d(%rip),%rdi
movss  0xdb7(%rip),%xmm0
movsd  0xe23(%rip),%xmm1
mov    $0x2,%al
call   1080 <printf@plt>
movsd  0xe1c(%rip),%xmm0
movsd  0xe1c(%rip),%xmm1
call   1050 <atan2@plt>
lea    0xf21(%rip),%rdi
movss  0xd88(%rip),%xmm0
movsd  0xdf8(%rip),%xmm1
mov    $0x2,%al
call   1080 <printf@plt>
lea    0xfaa(%rip),%rdi
movss  0xd6e(%rip),%xmm0
mov    $0x1,%al
call   1080 <printf@plt>
lea    0xf12(%rip),%rbx
movss  0xd5c(%rip),%xmm0
movsd  0xdd4(%rip),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1080 <printf@plt>
movss  0xd46(%rip),%xmm0
movsd  0xdc2(%rip),%xmm1
mov    %rbx,%rdi
mov    $0x2,%al
call   1080 <printf@plt>
movsd  0xdb8(%rip),%xmm0
call   1070 <cosh@plt>
lea    0xeec(%rip),%rbx
movss  0xd1c(%rip),%xmm0
mov    %rbx,%rdi
mov    %eax,%esi
mov    $0x1,%al
call   1080 <printf@plt>
movsd  0xd60(%rip),%xmm0
call   1070 <cosh@plt>
mov    %rbx,%rdi
movss  0xce4(%rip),%xmm0
mov    %eax,%esi
mov    $0x1,%al
call   1080 <printf@plt>
movsd  0xd77(%rip),%xmm0
call   1070 <cosh@plt>
movss  0xcde(%rip),%xmm0
mov    %rbx,%rdi
mov    %eax,%esi
mov    $0x1,%al
call   1080 <printf@plt>
lea    0xeb4(%rip),%rdi
movss  0xcc7(%rip),%xmm0
movsd  0xd4f(%rip),%xmm1
mov    $0x2,%al
call   1080 <printf@plt>
lea    0xeb6(%rip),%rdi
movsd  0xd41(%rip),%xmm1
movss  0xc99(%rip),%xmm0
mov    $0x2,%al
call   1080 <printf@plt>
movsd  0xd12(%rip),%xmm0
call   1060 <tanh@plt>
lea    0xeb6(%rip),%rdi
movsd  0xd1e(%rip),%xmm1
movss  0xc6e(%rip),%xmm0
mov    $0x2,%al
call   1080 <printf@plt>
xorps  %xmm0,%xmm0
call   10e0 <exp@plt>
lea    0xebe(%rip),%rbx
xorps  %xmm0,%xmm0
mov    %rbx,%rdi
mov    %eax,%esi
mov    $0x1,%al
call   1080 <printf@plt>
movsd  0xc99(%rip),%xmm0
call   10e0 <exp@plt>
mov    %rbx,%rdi
movss  0xc1d(%rip),%xmm0
mov    %eax,%esi
mov    $0x1,%al
call   1080 <printf@plt>
movsd  0xcd0(%rip),%xmm0
call   10e0 <exp@plt>
movss  0xc1f(%rip),%xmm0
mov    %rbx,%rdi
mov    %eax,%esi
mov    $0x1,%al
call   1080 <printf@plt>
movsd  0xcb7(%rip),%xmm0
lea    0xc(%rsp),%rdi
call   10b0 <frexp@plt>
movaps %xmm0,%xmm1
mov    0xc(%rsp),%esi
lea    0xe72(%rip),%rdi
movss  0xbef(%rip),%xmm0
mov    $0x2,%al
call   1080 <printf@plt>
movsd  0xc90(%rip),%xmm0
mov    $0x3,%edi
call   1030 <ldexp@plt>
movaps %xmm0,%xmm1
lea    0xe61(%rip),%rdi
movss  0xbc8(%rip),%xmm0
mov    $0x3,%esi
mov    $0x2,%al
call   1080 <printf@plt>
lea    0xe56(%rip),%rdi
movss  0xbb1(%rip),%xmm0
movsd  0xc59(%rip),%xmm1
mov    $0x2,%al
call   1080 <printf@plt>
lea    0xe48(%rip),%rdi
movss  0xb97(%rip),%xmm0
movsd  0xc43(%rip),%xmm1
mov    $0x2,%al
call   1080 <printf@plt>
movsd  0xc3c(%rip),%xmm0
lea    0x18(%rsp),%rdi
call   10a0 <modf@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0x18(%rsp),%xmm0
cvtsd2ss %xmm0,%xmm0
lea    0xe1a(%rip),%rdi
mov    $0x1,%al
call   1080 <printf@plt>
movsd  0x10(%rsp),%xmm0
cvtsd2ss %xmm0,%xmm0
lea    0xe17(%rip),%rdi
mov    $0x1,%al
call   1080 <printf@plt>
movsd  0xbfc(%rip),%xmm0
movsd  0xbfc(%rip),%xmm1
call   10f0 <pow@plt>
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
lea    0xe03(%rip),%rdi
mov    $0x1,%al
call   1080 <printf@plt>
movsd  0xbe2(%rip),%xmm0
movsd  0xbe2(%rip),%xmm1
call   10f0 <pow@plt>
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
lea    0xdee(%rip),%rdi
mov    $0x1,%al
call   1080 <printf@plt>
movsd  0xb98(%rip),%xmm0
call   1100 <sqrt@plt>
lea    0xdec(%rip),%rbx
movss  0xad4(%rip),%xmm0
mov    %rbx,%rdi
mov    %eax,%esi
mov    $0x1,%al
call   1080 <printf@plt>
movsd  0xba0(%rip),%xmm0
call   1100 <sqrt@plt>
movss  0xab7(%rip),%xmm0
mov    %rbx,%rdi
mov    %eax,%esi
mov    $0x1,%al
call   1080 <printf@plt>
movss  0xaa7(%rip),%xmm0
call   1040 <ceil@plt>
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
lea    0xdb7(%rip),%rdi
mov    $0x1,%al
call   1080 <printf@plt>
movss  0xa89(%rip),%xmm0
call   1040 <ceil@plt>
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
lea    0xda5(%rip),%rdi
mov    $0x1,%al
call   1080 <printf@plt>
movss  0xa6b(%rip),%xmm0
call   1040 <ceil@plt>
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
lea    0xd93(%rip),%rdi
mov    $0x1,%al
call   1080 <printf@plt>
movss  0xa4d(%rip),%xmm0
call   1040 <ceil@plt>
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
lea    0xd81(%rip),%rdi
mov    $0x1,%al
call   1080 <printf@plt>
movss  0xa2f(%rip),%xmm0
call   10c0 <fabs@plt>
lea    0xd76(%rip),%rbx
mov    %rbx,%rdi
movss  0xa18(%rip),%xmm0
mov    %eax,%esi
mov    $0x1,%al
call   1080 <printf@plt>
movss  0xa0b(%rip),%xmm0
call   10c0 <fabs@plt>
mov    %rbx,%rdi
movss  0x9fb(%rip),%xmm0
mov    %eax,%esi
mov    $0x1,%al
call   1080 <printf@plt>
movss  0x9d6(%rip),%xmm0
call   1110 <floor@plt>
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
lea    0xd48(%rip),%rdi
mov    $0x1,%al
call   1080 <printf@plt>
movss  0x9b8(%rip),%xmm0
call   1110 <floor@plt>
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
lea    0xd36(%rip),%rdi
mov    $0x1,%al
call   1080 <printf@plt>
movss  0x99a(%rip),%xmm0
call   1110 <floor@plt>
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
lea    0xd24(%rip),%rdi
mov    $0x1,%al
call   1080 <printf@plt>
movss  0x97c(%rip),%xmm0
call   1110 <floor@plt>
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
lea    0xd12(%rip),%rdi
mov    $0x1,%al
call   1080 <printf@plt>
movss  0x966(%rip),%xmm0
movss  0x92a(%rip),%xmm1
call   1090 <fmod@plt>
movaps %xmm0,%xmm1
lea    0xcfc(%rip),%rdi
movss  0x947(%rip),%xmm0
mov    $0x2,%esi
mov    $0x2,%al
call   1080 <printf@plt>
movss  0x937(%rip),%xmm1
movss  0x92b(%rip),%xmm0
call   1090 <fmod@plt>
movaps %xmm0,%xmm2
lea    0xce6(%rip),%rdi
movsd  0x9dc(%rip),%xmm1
movss  0x90c(%rip),%xmm0
mov    $0x3,%al
call   1080 <printf@plt>
xor    %eax,%eax
add    $0x20,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@.str = [38 x i8] c"The arc cosine of %lf is %lf degrees\0A\00"
@.str.1 = [36 x i8] c"The arc sine of %lf is %lf degrees\0A\00"
@.str.2 = [39 x i8] c"The arc tangent of %lf is %lf degrees\0A\00"
@.str.3 = [37 x i8] c"The arc tangent of x = %lf, y = %lf \00"
@.str.4 = [16 x i8] c"is %lf degrees\0A\00"
@.str.5 = [34 x i8] c"The cosine of %lf is %lf degrees\0A\00"
@.str.6 = [37 x i8] c"The hyperbolic cosine of %lf is %lf\0A\00"
@.str.7 = [32 x i8] c"The sine of %lf is %lf degrees\0A\00"
@.str.8 = [43 x i8] c"The hyperbolic sine of %lf is %lf degrees\0A\00"
@.str.9 = [46 x i8] c"The hyperbolic tangent of %lf is %lf degrees\0A\00"
@.str.10 = [37 x i8] c"The exponential value of %lf is %lf\0A\00"
@.str.11 = [26 x i8] c"x = %.2lf = %.2lf * 2^%d\0A\00"
@.str.12 = [16 x i8] c"%f * 2^%d = %f\0A\00"
@.str.13 = [16 x i8] c"log(%lf) = %lf\0A\00"
@.str.14 = [18 x i8] c"log10(%lf) = %lf\0A\00"
@.str.15 = [21 x i8] c"Integral part = %lf\0A\00"
@.str.16 = [22 x i8] c"Fraction Part = %lf \0A\00"
@.str.17 = [21 x i8] c"Value 8.0 ^ 3 = %lf\0A\00"
@.str.18 = [25 x i8] c"Value 3.05 ^ 1.98 = %lf\0A\00"
@.str.19 = [27 x i8] c"Square root of %lf is %lf\0A\00"
@.str.20 = [16 x i8] c"value1 = %.1lf\0A\00"
@.str.21 = [16 x i8] c"value2 = %.1lf\0A\00"
@.str.22 = [16 x i8] c"value3 = %.1lf\0A\00"
@.str.23 = [16 x i8] c"value4 = %.1lf\0A\00"
@.str.24 = [34 x i8] c"The absolute value of %lf is %lf\0A\00"
@.str.25 = [16 x i8] c"Value1 = %.1lf\0A\00"
@.str.26 = [16 x i8] c"Value2 = %.1lf\0A\00"
@.str.27 = [16 x i8] c"Value3 = %.1lf\0A\00"
@.str.28 = [16 x i8] c"Value4 = %.1lf\0A\00"
@.str.29 = [29 x i8] c"Remainder of %f / %d is %lf\0A\00"
@.str.30 = [29 x i8] c"Remainder of %f / %f is %lf\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca double
%3 = alloca double
%4 = alloca double
%5 = alloca double
%6 = alloca double
%7 = alloca i32
%8 = alloca i32
%9 = alloca double
%10 = alloca double
%11 = alloca float
%12 = alloca float
%13 = alloca float
%14 = alloca float
%15 = alloca float
%16 = alloca float
%17 = alloca i32
store i32 0, i32* %1
store double 9.000000e-01, double* %2
store double 0x404CA5DC1AF05A77, double* %5
%18 = load double, double* %2
%19 = call double @acos(double %18)
%20 = load double, double* %5
%21 = fmul double %19, %20
store double %21, double* %4
%22 = load double, double* %2
%23 = fptrunc double %22 to float
%24 = load double, double* %4
%25 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), float %23, double %24)
%26 = load double, double* %2
%27 = call double @asin(double %26)
%28 = load double, double* %5
%29 = fmul double %27, %28
store double %29, double* %4
%30 = load double, double* %2
%31 = fptrunc double %30 to float
%32 = load double, double* %4
%33 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.1, i64 0, i64 0), float %31, double %32)
store double 1.000000e+00, double* %2
store double 0x404CA5DC1AF05A77, double* %5
%34 = load double, double* %2
%35 = call double @atan(double %34)
%36 = load double, double* %5
%37 = fmul double %35, %36
store double %37, double* %4
%38 = load double, double* %2
%39 = fptrunc double %38 to float
%40 = load double, double* %4
%41 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.2, i64 0, i64 0), float %39, double %40)
store double -7.000000e+00, double* %2
store double 7.000000e+00, double* %3
store double 0x404CA5DC1AF05A77, double* %5
%42 = load double, double* %3
%43 = load double, double* %2
%44 = call double @atan2(double %42, double %43)
%45 = load double, double* %5
%46 = fmul double %44, %45
store double %46, double* %4
%47 = load double, double* %2
%48 = fptrunc double %47 to float
%49 = load double, double* %3
%50 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.3, i64 0, i64 0), float %48, double %49)
%51 = load double, double* %4
%52 = fptrunc double %51 to float
%53 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.4, i64 0, i64 0), float %52)
store double 6.000000e+01, double* %2
store double 0x3F91DF46A1FAE712, double* %5
%54 = load double, double* %2
%55 = load double, double* %5
%56 = fmul double %54, %55
%57 = call double @cos(double %56)
store double %57, double* %4
%58 = load double, double* %2
%59 = fptrunc double %58 to float
%60 = load double, double* %4
%61 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.5, i64 0, i64 0), float %59, double %60)
store double 9.000000e+01, double* %2
store double 0x3F91DF46A1FAE712, double* %5
%62 = load double, double* %2
%63 = load double, double* %5
%64 = fmul double %62, %63
%65 = call double @cos(double %64)
store double %65, double* %4
%66 = load double, double* %2
%67 = fptrunc double %66 to float
%68 = load double, double* %4
%69 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.5, i64 0, i64 0), float %67, double %68)
store double 5.000000e-01, double* %2
%70 = load double, double* %2
%71 = fptrunc double %70 to float
%72 = load double, double* %2
%73 = call i32 @cosh(double %72)
%74 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.6, i64 0, i64 0), float %71, i32 %73)
store double 1.000000e+00, double* %2
%75 = load double, double* %2
%76 = fptrunc double %75 to float
%77 = load double, double* %2
%78 = call i32 @cosh(double %77)
%79 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.6, i64 0, i64 0), float %76, i32 %78)
store double 1.500000e+00, double* %2
%80 = load double, double* %2
%81 = fptrunc double %80 to float
%82 = load double, double* %2
%83 = call i32 @cosh(double %82)
%84 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.6, i64 0, i64 0), float %81, i32 %83)
store double 4.500000e+01, double* %2
store double 0x3F91DF46A1FAE712, double* %5
%85 = load double, double* %2
%86 = load double, double* %5
%87 = fmul double %85, %86
%88 = call double @sin(double %87)
store double %88, double* %4
%89 = load double, double* %2
%90 = fptrunc double %89 to float
%91 = load double, double* %4
%92 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.7, i64 0, i64 0), float %90, double %91)
store double 5.000000e-01, double* %2
%93 = load double, double* %2
%94 = call double @sinh(double %93)
store double %94, double* %4
%95 = load double, double* %2
%96 = fptrunc double %95 to float
%97 = load double, double* %4
%98 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.8, i64 0, i64 0), float %96, double %97)
store double 5.000000e-01, double* %2
%99 = load double, double* %2
%100 = call double @tanh(double %99)
store double %100, double* %4
%101 = load double, double* %2
%102 = fptrunc double %101 to float
%103 = load double, double* %4
%104 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.9, i64 0, i64 0), float %102, double %103)
store double 0.000000e+00, double* %2
%105 = load double, double* %2
%106 = fptrunc double %105 to float
%107 = load double, double* %2
%108 = call i32 @exp(double %107)
%109 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.10, i64 0, i64 0), float %106, i32 %108)
%110 = load double, double* %2
%111 = fadd double %110, 1.000000e+00
%112 = fptrunc double %111 to float
%113 = load double, double* %2
%114 = fadd double %113, 1.000000e+00
%115 = call i32 @exp(double %114)
%116 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.10, i64 0, i64 0), float %112, i32 %115)
%117 = load double, double* %2
%118 = fadd double %117, 2.000000e+00
%119 = fptrunc double %118 to float
%120 = load double, double* %2
%121 = fadd double %120, 2.000000e+00
%122 = call i32 @exp(double %121)
%123 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.10, i64 0, i64 0), float %119, i32 %122)
store double 1.024000e+03, double* %2
%124 = load double, double* %2
%125 = call double @frexp(double %124, i32* %7)
store double %125, double* %6
%126 = load double, double* %2
%127 = fptrunc double %126 to float
%128 = load double, double* %6
%129 = load i32, i32* %7
%130 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.11, i64 0, i64 0), float %127, double %128, i32 %129)
store double 6.500000e-01, double* %2
store i32 3, i32* %8
%131 = load double, double* %2
%132 = load i32, i32* %8
%133 = call double @ldexp(double %131, i32 %132)
store double %133, double* %4
%134 = load double, double* %2
%135 = fptrunc double %134 to float
%136 = load i32, i32* %8
%137 = load double, double* %4
%138 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.12, i64 0, i64 0), float %135, i32 %136, double %137)
store double 2.700000e+00, double* %2
%139 = load double, double* %2
%140 = call double @log(double %139)
store double %140, double* %4
%141 = load double, double* %2
%142 = fptrunc double %141 to float
%143 = load double, double* %4
%144 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.13, i64 0, i64 0), float %142, double %143)
store double 1.000000e+04, double* %2
%145 = load double, double* %2
%146 = call double @log10(double %145)
store double %146, double* %4
%147 = load double, double* %2
%148 = fptrunc double %147 to float
%149 = load double, double* %4
%150 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.14, i64 0, i64 0), float %148, double %149)
store double 0x40203F359FF4FD6D, double* %2
%151 = load double, double* %2
%152 = call double @modf(double %151, double* %10)
store double %152, double* %9
%153 = load double, double* %10
%154 = fptrunc double %153 to float
%155 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.15, i64 0, i64 0), float %154)
%156 = load double, double* %9
%157 = fptrunc double %156 to float
%158 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.16, i64 0, i64 0), float %157)
%159 = call i32 @pow(double 8.000000e+00, double 3.000000e+00)
%160 = sitofp i32 %159 to float
%161 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.17, i64 0, i64 0), float %160)
%162 = call i32 @pow(double 3.050000e+00, double 1.980000e+00)
%163 = sitofp i32 %162 to float
%164 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.18, i64 0, i64 0), float %163)
%165 = call i32 @sqrt(double 4.000000e+00)
%166 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), float 4.000000e+00, i32 %165)
%167 = call i32 @sqrt(double 5.000000e+00)
%168 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), float 5.000000e+00, i32 %167)
store float 0x3FF99999A0000000, float* %11
store float 0x3FF3333340000000, float* %12
store float 0x4006666660000000, float* %13
store float 0x4002666660000000, float* %14
%169 = load float, float* %11
%170 = call i32 @ceil(float %169)
%171 = sitofp i32 %170 to float
%172 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.20, i64 0, i64 0), float %171)
%173 = load float, float* %12
%174 = call i32 @ceil(float %173)
%175 = sitofp i32 %174 to float
%176 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.21, i64 0, i64 0), float %175)
%177 = load float, float* %13
%178 = call i32 @ceil(float %177)
%179 = sitofp i32 %178 to float
%180 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.22, i64 0, i64 0), float %179)
%181 = load float, float* %14
%182 = call i32 @ceil(float %181)
%183 = sitofp i32 %182 to float
%184 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.23, i64 0, i64 0), float %183)
store float 1.234000e+03, float* %15
store float -3.440000e+02, float* %16
%185 = load float, float* %15
%186 = load float, float* %15
%187 = call i32 @fabs(float %186)
%188 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.24, i64 0, i64 0), float %185, i32 %187)
%189 = load float, float* %16
%190 = load float, float* %16
%191 = call i32 @fabs(float %190)
%192 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.24, i64 0, i64 0), float %189, i32 %191)
store float 0x3FF99999A0000000, float* %11
store float 0x3FF3333340000000, float* %12
store float 0x4006666660000000, float* %13
store float 0x4002666660000000, float* %14
%193 = load float, float* %11
%194 = call i32 @floor(float %193)
%195 = sitofp i32 %194 to float
%196 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.25, i64 0, i64 0), float %195)
%197 = load float, float* %12
%198 = call i32 @floor(float %197)
%199 = sitofp i32 %198 to float
%200 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.26, i64 0, i64 0), float %199)
%201 = load float, float* %13
%202 = call i32 @floor(float %201)
%203 = sitofp i32 %202 to float
%204 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.27, i64 0, i64 0), float %203)
%205 = load float, float* %14
%206 = call i32 @floor(float %205)
%207 = sitofp i32 %206 to float
%208 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.28, i64 0, i64 0), float %207)
store float 0x4022666660000000, float* %15
store float 0x400D9999A0000000, float* %16
store i32 2, i32* %17
%209 = load float, float* %15
%210 = load i32, i32* %17
%211 = load float, float* %15
%212 = load i32, i32* %17
%213 = sitofp i32 %212 to float
%214 = call double @fmod(float %211, float %213)
%215 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.29, i64 0, i64 0), float %209, i32 %210, double %214)
%216 = load float, float* %15
%217 = load float, float* %16
%218 = fpext float %217 to double
%219 = load float, float* %15
%220 = load float, float* %16
%221 = call double @fmod(float %219, float %220)
%222 = call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.30, i64 0, i64 0), float %216, double %218, double %221)
ret i32 0
}

LLVM IR (-O2):
@.str = [38 x i8] c"The arc cosine of %lf is %lf degrees\0A\00"
@.str.1 = [36 x i8] c"The arc sine of %lf is %lf degrees\0A\00"
@.str.2 = [39 x i8] c"The arc tangent of %lf is %lf degrees\0A\00"
@.str.3 = [37 x i8] c"The arc tangent of x = %lf, y = %lf \00"
@.str.4 = [16 x i8] c"is %lf degrees\0A\00"
@.str.5 = [34 x i8] c"The cosine of %lf is %lf degrees\0A\00"
@.str.6 = [37 x i8] c"The hyperbolic cosine of %lf is %lf\0A\00"
@.str.7 = [32 x i8] c"The sine of %lf is %lf degrees\0A\00"
@.str.8 = [43 x i8] c"The hyperbolic sine of %lf is %lf degrees\0A\00"
@.str.9 = [46 x i8] c"The hyperbolic tangent of %lf is %lf degrees\0A\00"
@.str.10 = [37 x i8] c"The exponential value of %lf is %lf\0A\00"
@.str.11 = [26 x i8] c"x = %.2lf = %.2lf * 2^%d\0A\00"
@.str.12 = [16 x i8] c"%f * 2^%d = %f\0A\00"
@.str.13 = [16 x i8] c"log(%lf) = %lf\0A\00"
@.str.14 = [18 x i8] c"log10(%lf) = %lf\0A\00"
@.str.15 = [21 x i8] c"Integral part = %lf\0A\00"
@.str.16 = [22 x i8] c"Fraction Part = %lf \0A\00"
@.str.17 = [21 x i8] c"Value 8.0 ^ 3 = %lf\0A\00"
@.str.18 = [25 x i8] c"Value 3.05 ^ 1.98 = %lf\0A\00"
@.str.19 = [27 x i8] c"Square root of %lf is %lf\0A\00"
@.str.20 = [16 x i8] c"value1 = %.1lf\0A\00"
@.str.21 = [16 x i8] c"value2 = %.1lf\0A\00"
@.str.22 = [16 x i8] c"value3 = %.1lf\0A\00"
@.str.23 = [16 x i8] c"value4 = %.1lf\0A\00"
@.str.24 = [34 x i8] c"The absolute value of %lf is %lf\0A\00"
@.str.25 = [16 x i8] c"Value1 = %.1lf\0A\00"
@.str.26 = [16 x i8] c"Value2 = %.1lf\0A\00"
@.str.27 = [16 x i8] c"Value3 = %.1lf\0A\00"
@.str.28 = [16 x i8] c"Value4 = %.1lf\0A\00"
@.str.29 = [29 x i8] c"Remainder of %f / %d is %lf\0A\00"
@.str.30 = [29 x i8] c"Remainder of %f / %f is %lf\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca double
%3 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), float 0x3FECCCCCC0000000, double 0x4039D788E8520EFE)
%4 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.1, i64 0, i64 0), float 0x3FECCCCCC0000000, double 0x40500A1DC659E8B1)
%5 = tail call double @atan(double 1.000000e+00)
%6 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.2, i64 0, i64 0), float 1.000000e+00, double 0x40468000006E6C71)
%7 = tail call double @atan2(double 7.000000e+00, double -7.000000e+00)
%8 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.3, i64 0, i64 0), float -7.000000e+00, double 7.000000e+00)
%9 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.4, i64 0, i64 0), float 1.350000e+02)
%10 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.5, i64 0, i64 0), float 6.000000e+01, double 0x3FE00000008E6D00)
%11 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.5, i64 0, i64 0), float 9.000000e+01, double 0x3E1ED609D1A62633)
%12 = tail call i32 @cosh(double 5.000000e-01)
%13 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.6, i64 0, i64 0), float 5.000000e-01, i32 %12)
%14 = tail call i32 @cosh(double 1.000000e+00)
%15 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.6, i64 0, i64 0), float 1.000000e+00, i32 %14)
%16 = tail call i32 @cosh(double 1.500000e+00)
%17 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.6, i64 0, i64 0), float 1.500000e+00, i32 %16)
%18 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.7, i64 0, i64 0), float 4.500000e+01, double 0x3FE6A09E66280416)
%19 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.8, i64 0, i64 0), float 5.000000e-01, double 0x3FE0ACD00FE63B97)
%20 = tail call double @tanh(double 5.000000e-01)
%21 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.9, i64 0, i64 0), float 5.000000e-01, double 0x3FDD9353D7568AF3)
%22 = tail call i32 @exp(double 0.000000e+00)
%23 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.10, i64 0, i64 0), float 0.000000e+00, i32 %22)
%24 = tail call i32 @exp(double 1.000000e+00)
%25 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.10, i64 0, i64 0), float 1.000000e+00, i32 %24)
%26 = tail call i32 @exp(double 2.000000e+00)
%27 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.10, i64 0, i64 0), float 2.000000e+00, i32 %26)
%28 = bitcast i32* %1 to i8*
%29 = call double @frexp(double 1.024000e+03, i32* %1)
%30 = load i32, i32* %1
%31 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.11, i64 0, i64 0), float 1.024000e+03, double %29, i32 %30)
%32 = tail call double @ldexp(double 6.500000e-01, i32 3)
%33 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.12, i64 0, i64 0), float 0x3FE4CCCCC0000000, i32 3, double %32)
%34 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.13, i64 0, i64 0), float 0x40059999A0000000, double 0x3FEFC8B7F138BDEA)
%35 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.14, i64 0, i64 0), float 1.000000e+04, double 4.000000e+00)
%36 = bitcast double* %2 to i8*
%37 = call double @modf(double 0x40203F359FF4FD6D, double* %2)
%38 = load double, double* %2
%39 = fptrunc double %38 to float
%40 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.15, i64 0, i64 0), float %39)
%41 = fptrunc double %37 to float
%42 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.16, i64 0, i64 0), float %41)
%43 = tail call i32 @pow(double 8.000000e+00, double 3.000000e+00)
%44 = sitofp i32 %43 to float
%45 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.17, i64 0, i64 0), float %44)
%46 = tail call i32 @pow(double 3.050000e+00, double 1.980000e+00)
%47 = sitofp i32 %46 to float
%48 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.18, i64 0, i64 0), float %47)
%49 = tail call i32 @sqrt(double 4.000000e+00)
%50 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), float 4.000000e+00, i32 %49)
%51 = tail call i32 @sqrt(double 5.000000e+00)
%52 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.19, i64 0, i64 0), float 5.000000e+00, i32 %51)
%53 = tail call i32 @ceil(float 0x3FF99999A0000000)
%54 = sitofp i32 %53 to float
%55 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.20, i64 0, i64 0), float %54)
%56 = tail call i32 @ceil(float 0x3FF3333340000000)
%57 = sitofp i32 %56 to float
%58 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.21, i64 0, i64 0), float %57)
%59 = tail call i32 @ceil(float 0x4006666660000000)
%60 = sitofp i32 %59 to float
%61 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.22, i64 0, i64 0), float %60)
%62 = tail call i32 @ceil(float 0x4002666660000000)
%63 = sitofp i32 %62 to float
%64 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.23, i64 0, i64 0), float %63)
%65 = tail call i32 @fabs(float 1.234000e+03)
%66 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.24, i64 0, i64 0), float 1.234000e+03, i32 %65)
%67 = tail call i32 @fabs(float -3.440000e+02)
%68 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.24, i64 0, i64 0), float -3.440000e+02, i32 %67)
%69 = tail call i32 @floor(float 0x3FF99999A0000000)
%70 = sitofp i32 %69 to float
%71 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.25, i64 0, i64 0), float %70)
%72 = tail call i32 @floor(float 0x3FF3333340000000)
%73 = sitofp i32 %72 to float
%74 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.26, i64 0, i64 0), float %73)
%75 = tail call i32 @floor(float 0x4006666660000000)
%76 = sitofp i32 %75 to float
%77 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.27, i64 0, i64 0), float %76)
%78 = tail call i32 @floor(float 0x4002666660000000)
%79 = sitofp i32 %78 to float
%80 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.28, i64 0, i64 0), float %79)
%81 = tail call double @fmod(float 0x4022666660000000, float 2.000000e+00)
%82 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.29, i64 0, i64 0), float 0x4022666660000000, i32 2, double %81)
%83 = tail call double @fmod(float 0x4022666660000000, float 0x400D9999A0000000)
%84 = tail call i32 (i8*, float, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.30, i64 0, i64 0), float 0x4022666660000000, double 0x400D9999A0000000, double %83)
ret i32 0
}