#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 fabs(double);
int /*<<< orphan*/ printf(char *, ...);
int truncf(int);
main() {
  double x = 0.71428571;
  double y = 0.33333333;
  double u = 0.714251;
  double v = 98765.9;
  double w = 0.0000111111;
  double r0 = x + y;
  double r0_5 =
      truncf(((truncf(x * 1e5) / 1e5) + (truncf(y * 1e5) / 1e5)) * 1e5) / 1e5;
  double err_abs0 = fabs(r0 - r0_5);
  double err_rel0 = fabs(err_abs0) / fabs(r0);
  printf("------------------------------------------\n");
  printf(" x+y: \n val8 %1.8f \n Aritmetica máquina %1.5f \n Error Absoluto "
         "%1.8f \n Error Relativo %1.8f \n",
         r0, r0_5, err_abs0, err_rel0);
  printf("------------------------------------------\n");
  double r1 = x - y;
  double r1_5 =
      truncf(((truncf(x * 1e5) / 1e5) - (truncf(y * 1e5) / 1e5)) * 1e5) / 1e5;
  double err_abs1 = fabs(r1 - r1_5);
  double err_rel1 = fabs(err_abs1) / fabs(r1);
  printf("------------------------------------------\n");
  printf(" x-y: \n val8 %1.8f \n Aritmetica máquina %1.5f \n Error Absoluto "
         "%1.8f \n Error Relativo %1.8f \n",
         r1, r1_5, err_abs1, err_rel1);
  printf("------------------------------------------\n");
  double r2 = x / y;
  double r2_5 =
      truncf(((truncf(x * 1e5) / 1e5) / (truncf(y * 1e5) / 1e5)) * 1e5) / 1e5;
  double err_abs2 = fabs(r2 - r2_5);
  double err_rel2 = fabs(err_abs2) / fabs(r2);
  printf("------------------------------------------\n");
  printf(" x/y: \n val8 %1.8f \n Aritmetica máquina %1.5f \n Error Absoluto "
         "%1.8f \n Error Relativo %1.8f \n",
         r2, r2_5, err_abs2, err_rel2);
  printf("------------------------------------------\n");
  double r3 = (x - u) / w;
  double r3_5 = truncf((((truncf(x * 1e5) / 1e5) - (truncf(u * 1e5) / 1e5)) /
                        (truncf(w * 1e5) / 1e5)) *
                       1e5) /
                1e5;
  double err_abs3 = fabs(r3 - r3_5);
  double err_rel3 = fabs(err_abs3) / fabs(r3);
  printf("------------------------------------------\n");
  printf(" (x-u)/w: \n val8 %1.8f \n Aritmetica máquina %1.5f \n Error "
         "Absoluto %1.8f \n Error Relativo %1.8f \n",
         r3, r3_5, err_abs3, err_rel3);
  printf("------------------------------------------\n");
  double r4 = u + v;
  double r4_5 =
      truncf(((truncf(u * 1e5) / 1e5) + (truncf(v * 1e5) / 1e5)) * 1e5) / 1e5;
  double err_abs4 = fabs(r4 - r4_5);
  double err_rel4 = fabs(err_abs4) / fabs(r4);
  printf("------------------------------------------\n");
  printf(" u+v: \n val8 %1.8f \n Aritmetica máquina %1.5f \n Error Absoluto "
         "%1.8f \n Error Relativo %1.8f \n",
         r4, r4_5, err_abs4, err_rel4);
  printf("------------------------------------------\n");
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x100,%rsp
movsd  0xf05(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  0xef0(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xedb(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0xec6(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xeb1(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x8(%rbp),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xe8d(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xe73(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  0xe5f(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
movsd  -0xf8(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
movsd  0xe3d(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  0xe2d(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xe14(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x30(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
movaps 0xdea(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
movaps 0xdd5(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
movaps 0xdc5(%rip),%xmm2
pand   %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
lea    0xdf1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movsd  -0x30(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm3
lea    0xdfb(%rip),%rdi
mov    $0x4,%al
call   1030 <printf@plt>
lea    0xdc1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movsd  -0x8(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0xd73(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xd59(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  0xd45(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
movsd  -0xf0(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
movsd  0xd23(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  0xd13(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xcfa(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
subsd  -0x58(%rbp),%xmm0
movaps 0xcd0(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
movaps 0xcbb(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  -0x50(%rbp),%xmm1
movaps 0xcab(%rip),%xmm2
pand   %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
lea    0xcd7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movsd  -0x50(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm3
lea    0xd40(%rip),%rdi
mov    $0x4,%al
call   1030 <printf@plt>
lea    0xca7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movsd  -0x8(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  0xc59(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xc3f(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  0xc2b(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
movsd  -0xe8(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
movsd  0xc09(%rip),%xmm2
divsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  0xbf9(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xbe0(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x70(%rbp),%xmm0
subsd  -0x78(%rbp),%xmm0
movaps 0xbb6(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
movaps 0xba1(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  -0x70(%rbp),%xmm1
movaps 0xb91(%rip),%xmm2
pand   %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
lea    0xbba(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movsd  -0x70(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm1
movsd  -0x80(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm3
ff
lea    0xc7f(%rip),%rdi
mov    $0x4,%al
call   1030 <printf@plt>
lea    0xb87(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movsd  -0x8(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
divsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xb31(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xb17(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  0xb03(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
movsd  -0xe0(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
movsd  0xae1(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  0xac9(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
movsd  -0xd8(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
movsd  0xaa7(%rip),%xmm2
divsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  0xa97(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xa7e(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
subsd  -0x98(%rbp),%xmm0
ff
movaps 0xa4b(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movaps 0xa30(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  -0x90(%rbp),%xmm1
ff
movaps 0xa1d(%rip),%xmm2
pand   %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
lea    0xa46(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm1
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm3
ff
lea    0xb61(%rip),%rdi
mov    $0x4,%al
call   1030 <printf@plt>
lea    0xa0a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movsd  -0x18(%rbp),%xmm0
addsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  0x9b9(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0x99f(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  0x98b(%rip),%xmm0
mulsd  -0x20(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
movsd  -0xd0(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
movsd  0x969(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  0x959(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0x940(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
subsd  -0xb8(%rbp),%xmm0
ff
movaps 0x90d(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movaps 0x8f2(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  -0xb0(%rbp),%xmm1
ff
movaps 0x8df(%rip),%xmm2
pand   %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
lea    0x908(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movsd  -0xb0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
movsd  -0xc0(%rbp),%xmm2
ff
movsd  -0xc8(%rbp),%xmm3
ff
lea    0xa86(%rip),%rdi
mov    $0x4,%al
call   1030 <printf@plt>
lea    0x8cc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x100,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %rbx
sub    $0x38,%rsp
mov    $0x11704,%edi
call   1050 <truncf@plt>
mov    %eax,%ebx
mov    $0x8235,%edi
call   1050 <truncf@plt>
movd   %ebx,%xmm0
movd   %eax,%xmm1
punpckldq %xmm1,%xmm0
cvtdq2pd %xmm0,%xmm0
divpd  0xe9c(%rip),%xmm0
movapd %xmm0,%xmm1
unpckhpd %xmm0,%xmm1
addsd  %xmm0,%xmm1
mulsd  0xea8(%rip),%xmm1
cvttsd2si %xmm1,%edi
call   1050 <truncf@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
divsd  0xe90(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0xe8a(%rip),%xmm2
movapd %xmm2,%xmm1
subsd  %xmm0,%xmm1
andpd  0xe62(%rip),%xmm1
movapd %xmm1,0x10(%rsp)
movapd %xmm1,%xmm0
divsd  %xmm2,%xmm0
movapd %xmm0,0x20(%rsp)
lea    0x1066(%rip),%rbx
mov    %rbx,%rdi
call   1030 <puts@plt>
lea    0xe78(%rip),%rdi
movsd  0xe48(%rip),%xmm0
movsd  0x8(%rsp),%xmm1
movaps 0x10(%rsp),%xmm2
movaps 0x20(%rsp),%xmm3
mov    $0x4,%al
call   1040 <printf@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    $0x11704,%edi
call   1050 <truncf@plt>
mov    %eax,%ebp
mov    $0x8235,%edi
call   1050 <truncf@plt>
movd   %ebp,%xmm0
movd   %eax,%xmm1
punpckldq %xmm1,%xmm0
cvtdq2pd %xmm0,%xmm0
divpd  0xdd3(%rip),%xmm0
movapd %xmm0,%xmm1
unpckhpd %xmm0,%xmm1
subsd  %xmm1,%xmm0
mulsd  0xddf(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1050 <truncf@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
divsd  0xdc7(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0xdc9(%rip),%xmm2
movapd %xmm2,%xmm1
subsd  %xmm0,%xmm1
andpd  0xd99(%rip),%xmm1
movapd %xmm1,0x10(%rsp)
movapd %xmm1,%xmm0
divsd  %xmm2,%xmm0
movapd %xmm0,0x20(%rsp)
mov    %rbx,%rdi
call   1030 <puts@plt>
lea    0xe15(%rip),%rdi
movsd  0xd8e(%rip),%xmm0
movsd  0x8(%rsp),%xmm1
movaps 0x10(%rsp),%xmm2
movaps 0x20(%rsp),%xmm3
mov    $0x4,%al
call   1040 <printf@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    $0x11704,%edi
call   1050 <truncf@plt>
mov    %eax,%ebp
mov    $0x8235,%edi
call   1050 <truncf@plt>
movd   %ebp,%xmm0
movd   %eax,%xmm1
punpckldq %xmm1,%xmm0
cvtdq2pd %xmm0,%xmm0
divpd  0xd11(%rip),%xmm0
movapd %xmm0,%xmm1
unpckhpd %xmm0,%xmm1
divsd  %xmm1,%xmm0
mulsd  0xd1d(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1050 <truncf@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
divsd  0xd05(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0xd0f(%rip),%xmm2
movapd %xmm2,%xmm1
subsd  %xmm0,%xmm1
andpd  0xcd7(%rip),%xmm1
movapd %xmm1,0x10(%rsp)
movapd %xmm1,%xmm0
divsd  %xmm2,%xmm0
movapd %xmm0,0x20(%rsp)
mov    %rbx,%rdi
call   1030 <puts@plt>
lea    0xdb2(%rip),%rdi
movsd  0xcd4(%rip),%xmm0
movsd  0x8(%rsp),%xmm1
movaps 0x10(%rsp),%xmm2
movaps 0x20(%rsp),%xmm3
mov    $0x4,%al
call   1040 <printf@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    $0x11704,%edi
call   1050 <truncf@plt>
mov    %eax,%ebp
mov    $0x11701,%edi
call   1050 <truncf@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
divsd  0xc78(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
mov    $0x1,%edi
call   1050 <truncf@plt>
movd   %ebp,%xmm0
movd   %eax,%xmm1
punpckldq %xmm1,%xmm0
cvtdq2pd %xmm0,%xmm0
divpd  0xc30(%rip),%xmm0
movapd %xmm0,%xmm1
subsd  0x8(%rsp),%xmm1
unpckhpd %xmm0,%xmm0
divsd  %xmm0,%xmm1
mulsd  0xc36(%rip),%xmm1
cvttsd2si %xmm1,%edi
call   1050 <truncf@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
divsd  0xc1e(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0xc30(%rip),%xmm2
movapd %xmm2,%xmm1
subsd  %xmm0,%xmm1
andpd  0xbf0(%rip),%xmm1
movapd %xmm1,0x10(%rsp)
movapd %xmm1,%xmm0
divsd  %xmm2,%xmm0
movapd %xmm0,0x20(%rsp)
mov    %rbx,%rdi
call   1030 <puts@plt>
lea    0xd2a(%rip),%rdi
movsd  0xbf5(%rip),%xmm0
movsd  0x8(%rsp),%xmm1
movaps 0x10(%rsp),%xmm2
movaps 0x20(%rsp),%xmm3
mov    $0x4,%al
call   1040 <printf@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    $0x11701,%edi
call   1050 <truncf@plt>
mov    %eax,%ebp
call   1050 <truncf@plt>
movd   %ebp,%xmm0
movd   %eax,%xmm1
punpckldq %xmm1,%xmm0
cvtdq2pd %xmm0,%xmm0
divpd  0xb6d(%rip),%xmm0
movapd %xmm0,%xmm1
unpckhpd %xmm0,%xmm1
addsd  %xmm0,%xmm1
mulsd  0xb79(%rip),%xmm1
cvttsd2si %xmm1,%edi
call   1050 <truncf@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
divsd  0xb61(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0xb7b(%rip),%xmm2
movapd %xmm2,%xmm1
subsd  %xmm0,%xmm1
andpd  0xb33(%rip),%xmm1
movapd %xmm1,0x10(%rsp)
movapd %xmm1,%xmm0
divsd  %xmm2,%xmm0
movapd %xmm0,0x20(%rsp)
mov    %rbx,%rdi
call   1030 <puts@plt>
lea    0xcd0(%rip),%rdi
movsd  0xb40(%rip),%xmm0
movsd  0x8(%rsp),%xmm1
movaps 0x10(%rsp),%xmm2
movaps 0x20(%rsp),%xmm3
mov    $0x4,%al
call   1040 <printf@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
xor    %eax,%eax
add    $0x38,%rsp
pop    %rbx
pop    %rbp
ret

LLVM IR (-O0):
@.str = [44 x i8] c"------------------------------------------\0A\00"
@.str.1 = [95 x i8] c" x+y: \0A val8 %1.8f \0A Aritmetica m\C3\A1quina %1.5f \0A Error Absoluto %1.8f \0A Error Relativo %1.8f \0A\00"
@.str.2 = [95 x i8] c" x-y: \0A val8 %1.8f \0A Aritmetica m\C3\A1quina %1.5f \0A Error Absoluto %1.8f \0A Error Relativo %1.8f \0A\00"
@.str.3 = [95 x i8] c" x/y: \0A val8 %1.8f \0A Aritmetica m\C3\A1quina %1.5f \0A Error Absoluto %1.8f \0A Error Relativo %1.8f \0A\00"
@.str.4 = [99 x i8] c" (x-u)/w: \0A val8 %1.8f \0A Aritmetica m\C3\A1quina %1.5f \0A Error Absoluto %1.8f \0A Error Relativo %1.8f \0A\00"
@.str.5 = [95 x i8] c" u+v: \0A val8 %1.8f \0A Aritmetica m\C3\A1quina %1.5f \0A Error Absoluto %1.8f \0A Error Relativo %1.8f \0A\00"
define i32 @main() {
%1 = alloca double
%2 = alloca double
%3 = alloca double
%4 = alloca double
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
store double 0x3FE6DB6DB48E678C, double* %1
store double 0x3FD5555551C112DA, double* %2
store double 7.142510e-01, double* %3
store double 0x40F81CDE66666666, double* %4
store double 1.111110e-05, double* %5
%26 = load double, double* %1
%27 = load double, double* %2
%28 = fadd double %26, %27
store double %28, double* %6
%29 = load double, double* %1
%30 = fmul double %29, 1.000000e+05
%31 = fptosi double %30 to i32
%32 = call i32 @truncf(i32 %31)
%33 = sitofp i32 %32 to double
%34 = fdiv double %33, 1.000000e+05
%35 = load double, double* %2
%36 = fmul double %35, 1.000000e+05
%37 = fptosi double %36 to i32
%38 = call i32 @truncf(i32 %37)
%39 = sitofp i32 %38 to double
%40 = fdiv double %39, 1.000000e+05
%41 = fadd double %34, %40
%42 = fmul double %41, 1.000000e+05
%43 = fptosi double %42 to i32
%44 = call i32 @truncf(i32 %43)
%45 = sitofp i32 %44 to double
%46 = fdiv double %45, 1.000000e+05
store double %46, double* %7
%47 = load double, double* %6
%48 = load double, double* %7
%49 = fsub double %47, %48
%50 = call double @llvm.fabs.f64(double %49)
store double %50, double* %8
%51 = load double, double* %8
%52 = call double @llvm.fabs.f64(double %51)
%53 = load double, double* %6
%54 = call double @llvm.fabs.f64(double %53)
%55 = fdiv double %52, %54
store double %55, double* %9
%56 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str, i64 0, i64 0))
%57 = load double, double* %6
%58 = load double, double* %7
%59 = load double, double* %8
%60 = load double, double* %9
%61 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([95 x i8], [95 x i8]* @.str.1, i64 0, i64 0), double %57, double %58, double %59, double %60)
%62 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str, i64 0, i64 0))
%63 = load double, double* %1
%64 = load double, double* %2
%65 = fsub double %63, %64
store double %65, double* %10
%66 = load double, double* %1
%67 = fmul double %66, 1.000000e+05
%68 = fptosi double %67 to i32
%69 = call i32 @truncf(i32 %68)
%70 = sitofp i32 %69 to double
%71 = fdiv double %70, 1.000000e+05
%72 = load double, double* %2
%73 = fmul double %72, 1.000000e+05
%74 = fptosi double %73 to i32
%75 = call i32 @truncf(i32 %74)
%76 = sitofp i32 %75 to double
%77 = fdiv double %76, 1.000000e+05
%78 = fsub double %71, %77
%79 = fmul double %78, 1.000000e+05
%80 = fptosi double %79 to i32
%81 = call i32 @truncf(i32 %80)
%82 = sitofp i32 %81 to double
%83 = fdiv double %82, 1.000000e+05
store double %83, double* %11
%84 = load double, double* %10
%85 = load double, double* %11
%86 = fsub double %84, %85
%87 = call double @llvm.fabs.f64(double %86)
store double %87, double* %12
%88 = load double, double* %12
%89 = call double @llvm.fabs.f64(double %88)
%90 = load double, double* %10
%91 = call double @llvm.fabs.f64(double %90)
%92 = fdiv double %89, %91
store double %92, double* %13
%93 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str, i64 0, i64 0))
%94 = load double, double* %10
%95 = load double, double* %11
%96 = load double, double* %12
%97 = load double, double* %13
%98 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([95 x i8], [95 x i8]* @.str.2, i64 0, i64 0), double %94, double %95, double %96, double %97)
%99 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str, i64 0, i64 0))
%100 = load double, double* %1
%101 = load double, double* %2
%102 = fdiv double %100, %101
store double %102, double* %14
%103 = load double, double* %1
%104 = fmul double %103, 1.000000e+05
%105 = fptosi double %104 to i32
%106 = call i32 @truncf(i32 %105)
%107 = sitofp i32 %106 to double
%108 = fdiv double %107, 1.000000e+05
%109 = load double, double* %2
%110 = fmul double %109, 1.000000e+05
%111 = fptosi double %110 to i32
%112 = call i32 @truncf(i32 %111)
%113 = sitofp i32 %112 to double
%114 = fdiv double %113, 1.000000e+05
%115 = fdiv double %108, %114
%116 = fmul double %115, 1.000000e+05
%117 = fptosi double %116 to i32
%118 = call i32 @truncf(i32 %117)
%119 = sitofp i32 %118 to double
%120 = fdiv double %119, 1.000000e+05
store double %120, double* %15
%121 = load double, double* %14
%122 = load double, double* %15
%123 = fsub double %121, %122
%124 = call double @llvm.fabs.f64(double %123)
store double %124, double* %16
%125 = load double, double* %16
%126 = call double @llvm.fabs.f64(double %125)
%127 = load double, double* %14
%128 = call double @llvm.fabs.f64(double %127)
%129 = fdiv double %126, %128
store double %129, double* %17
%130 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str, i64 0, i64 0))
%131 = load double, double* %14
%132 = load double, double* %15
%133 = load double, double* %16
%134 = load double, double* %17
%135 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([95 x i8], [95 x i8]* @.str.3, i64 0, i64 0), double %131, double %132, double %133, double %134)
%136 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str, i64 0, i64 0))
%137 = load double, double* %1
%138 = load double, double* %3
%139 = fsub double %137, %138
%140 = load double, double* %5
%141 = fdiv double %139, %140
store double %141, double* %18
%142 = load double, double* %1
%143 = fmul double %142, 1.000000e+05
%144 = fptosi double %143 to i32
%145 = call i32 @truncf(i32 %144)
%146 = sitofp i32 %145 to double
%147 = fdiv double %146, 1.000000e+05
%148 = load double, double* %3
%149 = fmul double %148, 1.000000e+05
%150 = fptosi double %149 to i32
%151 = call i32 @truncf(i32 %150)
%152 = sitofp i32 %151 to double
%153 = fdiv double %152, 1.000000e+05
%154 = fsub double %147, %153
%155 = load double, double* %5
%156 = fmul double %155, 1.000000e+05
%157 = fptosi double %156 to i32
%158 = call i32 @truncf(i32 %157)
%159 = sitofp i32 %158 to double
%160 = fdiv double %159, 1.000000e+05
%161 = fdiv double %154, %160
%162 = fmul double %161, 1.000000e+05
%163 = fptosi double %162 to i32
%164 = call i32 @truncf(i32 %163)
%165 = sitofp i32 %164 to double
%166 = fdiv double %165, 1.000000e+05
store double %166, double* %19
%167 = load double, double* %18
%168 = load double, double* %19
%169 = fsub double %167, %168
%170 = call double @llvm.fabs.f64(double %169)
store double %170, double* %20
%171 = load double, double* %20
%172 = call double @llvm.fabs.f64(double %171)
%173 = load double, double* %18
%174 = call double @llvm.fabs.f64(double %173)
%175 = fdiv double %172, %174
store double %175, double* %21
%176 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str, i64 0, i64 0))
%177 = load double, double* %18
%178 = load double, double* %19
%179 = load double, double* %20
%180 = load double, double* %21
%181 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([99 x i8], [99 x i8]* @.str.4, i64 0, i64 0), double %177, double %178, double %179, double %180)
%182 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str, i64 0, i64 0))
%183 = load double, double* %3
%184 = load double, double* %4
%185 = fadd double %183, %184
store double %185, double* %22
%186 = load double, double* %3
%187 = fmul double %186, 1.000000e+05
%188 = fptosi double %187 to i32
%189 = call i32 @truncf(i32 %188)
%190 = sitofp i32 %189 to double
%191 = fdiv double %190, 1.000000e+05
%192 = load double, double* %4
%193 = fmul double %192, 1.000000e+05
%194 = fptosi double %193 to i32
%195 = call i32 @truncf(i32 %194)
%196 = sitofp i32 %195 to double
%197 = fdiv double %196, 1.000000e+05
%198 = fadd double %191, %197
%199 = fmul double %198, 1.000000e+05
%200 = fptosi double %199 to i32
%201 = call i32 @truncf(i32 %200)
%202 = sitofp i32 %201 to double
%203 = fdiv double %202, 1.000000e+05
store double %203, double* %23
%204 = load double, double* %22
%205 = load double, double* %23
%206 = fsub double %204, %205
%207 = call double @llvm.fabs.f64(double %206)
store double %207, double* %24
%208 = load double, double* %24
%209 = call double @llvm.fabs.f64(double %208)
%210 = load double, double* %22
%211 = call double @llvm.fabs.f64(double %210)
%212 = fdiv double %209, %211
store double %212, double* %25
%213 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str, i64 0, i64 0))
%214 = load double, double* %22
%215 = load double, double* %23
%216 = load double, double* %24
%217 = load double, double* %25
%218 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([95 x i8], [95 x i8]* @.str.5, i64 0, i64 0), double %214, double %215, double %216, double %217)
%219 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str, i64 0, i64 0))
ret i32 0
}

LLVM IR (-O2):
@.str.1 = [95 x i8] c" x+y: \0A val8 %1.8f \0A Aritmetica m\C3\A1quina %1.5f \0A Error Absoluto %1.8f \0A Error Relativo %1.8f \0A\00"
@.str.2 = [95 x i8] c" x-y: \0A val8 %1.8f \0A Aritmetica m\C3\A1quina %1.5f \0A Error Absoluto %1.8f \0A Error Relativo %1.8f \0A\00"
@.str.3 = [95 x i8] c" x/y: \0A val8 %1.8f \0A Aritmetica m\C3\A1quina %1.5f \0A Error Absoluto %1.8f \0A Error Relativo %1.8f \0A\00"
@.str.4 = [99 x i8] c" (x-u)/w: \0A val8 %1.8f \0A Aritmetica m\C3\A1quina %1.5f \0A Error Absoluto %1.8f \0A Error Relativo %1.8f \0A\00"
@.str.5 = [95 x i8] c" u+v: \0A val8 %1.8f \0A Aritmetica m\C3\A1quina %1.5f \0A Error Absoluto %1.8f \0A Error Relativo %1.8f \0A\00"
@str.14 = [43 x i8] c"------------------------------------------\00"
define i32 @main() {
%1 = tail call i32 @truncf(i32 71428)
%2 = tail call i32 @truncf(i32 33333)
%3 = insertelement <2 x i32> poison, i32 %1, i64 0
%4 = insertelement <2 x i32> %3, i32 %2, i64 1
%5 = sitofp <2 x i32> %4 to <2 x double>
%6 = fdiv <2 x double> %5, <double 1.000000e+05, double 1.000000e+05>
%7 = shufflevector <2 x double> %6, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%8 = fadd <2 x double> %6, %7
%9 = extractelement <2 x double> %8, i64 0
%10 = fmul double %9, 1.000000e+05
%11 = fptosi double %10 to i32
%12 = tail call i32 @truncf(i32 %11)
%13 = sitofp i32 %12 to double
%14 = fdiv double %13, 1.000000e+05
%15 = fsub double 0x3FF0C30C2EB7787C, %14
%16 = tail call double @llvm.fabs.f64(double %15)
%17 = fdiv double %16, 0x3FF0C30C2EB7787C
%18 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str.14, i64 0, i64 0))
%19 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([95 x i8], [95 x i8]* @.str.1, i64 0, i64 0), double 0x3FF0C30C2EB7787C, double %14, double %16, double %17)
%20 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str.14, i64 0, i64 0))
%21 = tail call i32 @truncf(i32 71428)
%22 = tail call i32 @truncf(i32 33333)
%23 = insertelement <2 x i32> poison, i32 %21, i64 0
%24 = insertelement <2 x i32> %23, i32 %22, i64 1
%25 = sitofp <2 x i32> %24 to <2 x double>
%26 = fdiv <2 x double> %25, <double 1.000000e+05, double 1.000000e+05>
%27 = shufflevector <2 x double> %26, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%28 = fsub <2 x double> %26, %27
%29 = extractelement <2 x double> %28, i64 0
%30 = fmul double %29, 1.000000e+05
%31 = fptosi double %30 to i32
%32 = tail call i32 @truncf(i32 %31)
%33 = sitofp i32 %32 to double
%34 = fdiv double %33, 1.000000e+05
%35 = fsub double 0x3FD86186175BBC3E, %34
%36 = tail call double @llvm.fabs.f64(double %35)
%37 = fdiv double %36, 0x3FD86186175BBC3E
%38 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str.14, i64 0, i64 0))
%39 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([95 x i8], [95 x i8]* @.str.2, i64 0, i64 0), double 0x3FD86186175BBC3E, double %34, double %36, double %37)
%40 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str.14, i64 0, i64 0))
%41 = tail call i32 @truncf(i32 71428)
%42 = tail call i32 @truncf(i32 33333)
%43 = insertelement <2 x i32> poison, i32 %41, i64 0
%44 = insertelement <2 x i32> %43, i32 %42, i64 1
%45 = sitofp <2 x i32> %44 to <2 x double>
%46 = fdiv <2 x double> %45, <double 1.000000e+05, double 1.000000e+05>
%47 = extractelement <2 x double> %46, i64 0
%48 = extractelement <2 x double> %46, i64 1
%49 = fdiv double %47, %48
%50 = fmul double %49, 1.000000e+05
%51 = fptosi double %50 to i32
%52 = tail call i32 @truncf(i32 %51)
%53 = sitofp i32 %52 to double
%54 = fdiv double %53, 1.000000e+05
%55 = fsub double 0x400124924A4B155F, %54
%56 = tail call double @llvm.fabs.f64(double %55)
%57 = fdiv double %56, 0x400124924A4B155F
%58 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str.14, i64 0, i64 0))
%59 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([95 x i8], [95 x i8]* @.str.3, i64 0, i64 0), double 0x400124924A4B155F, double %54, double %56, double %57)
%60 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str.14, i64 0, i64 0))
%61 = tail call i32 @truncf(i32 71428)
%62 = tail call i32 @truncf(i32 71425)
%63 = sitofp i32 %62 to double
%64 = fdiv double %63, 1.000000e+05
%65 = tail call i32 @truncf(i32 1)
%66 = insertelement <2 x i32> poison, i32 %61, i64 0
%67 = insertelement <2 x i32> %66, i32 %65, i64 1
%68 = sitofp <2 x i32> %67 to <2 x double>
%69 = fdiv <2 x double> %68, <double 1.000000e+05, double 1.000000e+05>
%70 = extractelement <2 x double> %69, i64 0
%71 = fsub double %70, %64
%72 = extractelement <2 x double> %69, i64 1
%73 = fdiv double %71, %72
%74 = fmul double %73, 1.000000e+05
%75 = fptosi double %74 to i32
%76 = tail call i32 @truncf(i32 %75)
%77 = sitofp i32 %76 to double
%78 = fdiv double %77, 1.000000e+05
%79 = fsub double 0x4008FDC0EBC844C9, %78
%80 = tail call double @llvm.fabs.f64(double %79)
%81 = fdiv double %80, 0x4008FDC0EBC844C9
%82 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str.14, i64 0, i64 0))
%83 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([99 x i8], [99 x i8]* @.str.4, i64 0, i64 0), double 0x4008FDC0EBC844C9, double %78, double %80, double %81)
%84 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str.14, i64 0, i64 0))
%85 = tail call i32 @truncf(i32 71425)
%86 = tail call i32 @truncf(i32 poison)
%87 = insertelement <2 x i32> poison, i32 %85, i64 0
%88 = insertelement <2 x i32> %87, i32 %86, i64 1
%89 = sitofp <2 x i32> %88 to <2 x double>
%90 = fdiv <2 x double> %89, <double 1.000000e+05, double 1.000000e+05>
%91 = shufflevector <2 x double> %90, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%92 = fadd <2 x double> %90, %91
%93 = extractelement <2 x double> %92, i64 0
%94 = fmul double %93, 1.000000e+05
%95 = fptosi double %94 to i32
%96 = tail call i32 @truncf(i32 %95)
%97 = sitofp i32 %96 to double
%98 = fdiv double %97, 1.000000e+05
%99 = fsub double 0x40F81CE9D3F8DB48, %98
%100 = tail call double @llvm.fabs.f64(double %99)
%101 = fdiv double %100, 0x40F81CE9D3F8DB48
%102 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str.14, i64 0, i64 0))
%103 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([95 x i8], [95 x i8]* @.str.5, i64 0, i64 0), double 0x40F81CE9D3F8DB48, double %98, double %100, double %101)
%104 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str.14, i64 0, i64 0))
ret i32 0
}