#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 */
int /*<<< orphan*/ printf(char *, ...);
int truncf(int);
int main() {
  double x = 5 / 7.0;
  double y = 1 / 3.0;
  double u = 0.71428571;
  double v = 0.33333333;
  double xf = (truncf(x * 1e5)) * 1e-5;
  double yf = (truncf(y * 1e5)) * 1e-5;
  double uf = (truncf(u * 1e5)) * 1e-5;
  double vf = (truncf(v * 1e5)) * 1e-5;
  double op1_5 = (truncf((xf + yf) * 1e5)) * 1e-5;
  double op2_5 = (truncf((xf * yf) * 1e5)) * 1e-5;
  double op3_5 = (truncf((xf - uf) * 1e5)) * 1e-5;
  double op4_5 = truncf((truncf((xf - uf) * 1e5)) * 1e-5 * vf * 1e5) * 1e-5;
  double xf8 = (truncf(x * 1e8)) * 1e-8;
  double yf8 = (truncf(y * 1e8)) * 1e-8;
  double op1_8 = (truncf((xf8 + yf8) * 1e8)) * 1e-8;
  double op2_8 = (truncf((xf8 * yf8) * 1e8)) * 1e-8;
  double op3_8 = (truncf((xf8 - u) * 1e8)) * 1e-8;
  double op4_8 = truncf((truncf((xf8 - u) * 1e8)) * 1e-8 * v * 1e8) * 1e-8;
  double err_abs1 = op1_8 - op1_5;
  double err_rel1 = (op1_8 - op1_5) / op1_8;
  double err_abs2 = op2_8 - op2_5;
  double err_rel2 = (op2_8 - op2_5) / op2_8;
  double err_abs3 = op3_8 - op3_5;
  double err_rel3 = (op3_8 - op3_5) / op3_8;
  double err_abs4 = op4_8 - op4_5;
  double err_rel4 = (op4_8 - op4_5) / op4_8;
  printf("\nOperacion\t\tValor 8\t\t     Aritmetica maquina    "
         "\tErrorA\t\tErrorR\n");
  printf("\nx+y          \t\t%1.7e \t      %1.4e\t\t %e \t %e", op1_8, op1_5,
         err_abs1, err_rel1);
  printf("\nx*y          \t\t%1.7e \t      %1.4e\t\t %e \t %e", op2_8, op2_5,
         err_abs2, err_rel2);
  printf("\nx+y          \t\t%1.7e       %1.4e\t         %e  %e", op3_8, op3_5,
         err_abs3, err_rel3);
  printf("\nx+y          \t\t%1.7e       %1.4e\t         %e  %e", op4_8, op4_5,
         err_abs4, err_rel4);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xe0,%rsp
movl   $0x0,-0x4(%rbp)
movsd  0xefe(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xee9(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0xed4(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xebf(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xeaa(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xe88(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xe7f(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xe5d(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xe54(%rip),%xmm0
mulsd  -0x20(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xe32(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xe29(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xe07(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x30(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  0xdf4(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xdd3(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x30(%rbp),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  0xdc0(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xd9f(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
movsd  0xd8c(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xd6b(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x30(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
movsd  0xd58(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xd37(%rip),%xmm1
mulsd  %xmm1,%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  0xd2e(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xd0d(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  0xcf4(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xcd2(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  0xcc9(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xca7(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x70(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  0xc94(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xc73(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x70(%rbp),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  0xc60(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xc3f(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
subsd  -0x20(%rbp),%xmm0
movsd  0xc29(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xc08(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
subsd  -0x20(%rbp),%xmm0
movsd  0xbf2(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xbd1(%rip),%xmm1
mulsd  %xmm1,%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  0xbc8(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <truncf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xba7(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
subsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
subsd  -0x50(%rbp),%xmm0
divsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
subsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
subsd  -0x58(%rbp),%xmm0
divsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
subsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
subsd  -0x60(%rbp),%xmm0
divsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
subsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
subsd  -0x68(%rbp),%xmm0
divsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
lea    0xb15(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movsd  -0x80(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm3
ff
lea    0xb2e(%rip),%rdi
mov    $0x4,%al
call   1030 <printf@plt>
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x58(%rbp),%xmm1
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm3
ff
lea    0xb30(%rip),%rdi
mov    $0x4,%al
call   1030 <printf@plt>
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x60(%rbp),%xmm1
movsd  -0xc0(%rbp),%xmm2
ff
movsd  -0xc8(%rbp),%xmm3
ff
lea    0xb32(%rip),%rdi
mov    $0x4,%al
call   1030 <printf@plt>
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0x68(%rbp),%xmm1
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0xd8(%rbp),%xmm3
ff
lea    0xb07(%rip),%rdi
mov    $0x4,%al
call   1030 <printf@plt>
xor    %eax,%eax
add    $0xe0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
sub    $0x80,%rsp
mov    $0x11704,%edi
call   1050 <truncf@plt>
cvtsi2sd %eax,%xmm0
mulsd  0xeb2(%rip),%xmm0
movsd  %xmm0,(%rsp)
mov    $0x8235,%edi
call   1050 <truncf@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xe94(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
mov    $0x11704,%edi
call   1050 <truncf@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xe75(%rip),%xmm0
movsd  %xmm0,0x20(%rsp)
mov    $0x8235,%edi
call   1050 <truncf@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xe56(%rip),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  (%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
mulsd  0xe45(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1050 <truncf@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xe25(%rip),%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x8(%rsp),%xmm0
mulsd  (%rsp),%xmm0
mulsd  0xe14(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1050 <truncf@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xdf4(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
subsd  0x20(%rsp),%xmm0
mulsd  0xde3(%rip),%xmm0
cvttsd2si %xmm0,%ebx
mov    %ebx,%edi
call   1050 <truncf@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xdc1(%rip),%xmm0
movsd  %xmm0,0x20(%rsp)
mov    %ebx,%edi
call   1050 <truncf@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xda5(%rip),%xmm0
mulsd  0x18(%rsp),%xmm0
mulsd  0xd9f(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1050 <truncf@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xd7f(%rip),%xmm0
movsd  %xmm0,0x18(%rsp)
mov    $0x441e9db,%edi
call   1050 <truncf@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xd70(%rip),%xmm0
movsd  %xmm0,(%rsp)
mov    $0x1fca055,%edi
call   1050 <truncf@plt>
cvtsi2sd %eax,%xmm1
mulsd  0xd55(%rip),%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  (%rsp),%xmm0
addsd  %xmm1,%xmm0
mulsd  0xd46(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1050 <truncf@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xd26(%rip),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x10(%rsp),%xmm0
mulsd  (%rsp),%xmm0
mulsd  0xd15(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1050 <truncf@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  (%rsp),%xmm0
addsd  0xd00(%rip),%xmm0
mulsd  0xce8(%rip),%xmm1
movsd  %xmm1,(%rsp)
mulsd  0xce3(%rip),%xmm0
cvttsd2si %xmm0,%ebx
mov    %ebx,%edi
call   1050 <truncf@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xcc1(%rip),%xmm0
movsd  %xmm0,0x10(%rsp)
mov    %ebx,%edi
call   1050 <truncf@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xca5(%rip),%xmm0
mulsd  0xcb5(%rip),%xmm0
mulsd  0xc9d(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1050 <truncf@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
mulsd  0xc7d(%rip),%xmm1
movsd  0x28(%rsp),%xmm0
movapd %xmm0,%xmm2
subsd  0x30(%rsp),%xmm2
movsd  %xmm2,0x38(%rsp)
movapd %xmm2,%xmm3
divsd  %xmm0,%xmm3
movsd  %xmm3,0x40(%rsp)
movsd  (%rsp),%xmm0
movapd %xmm0,%xmm2
subsd  0x8(%rsp),%xmm2
movsd  %xmm2,0x48(%rsp)
movapd %xmm2,%xmm3
divsd  %xmm0,%xmm3
movsd  %xmm3,0x50(%rsp)
movsd  0x10(%rsp),%xmm0
movapd %xmm0,%xmm2
subsd  0x20(%rsp),%xmm2
movsd  %xmm2,0x58(%rsp)
movapd %xmm2,%xmm3
divsd  %xmm0,%xmm3
movsd  %xmm3,0x60(%rsp)
movsd  %xmm1,0x68(%rsp)
movapd %xmm1,%xmm0
subsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x70(%rsp)
movapd %xmm0,%xmm2
divsd  %xmm1,%xmm2
movsd  %xmm2,0x78(%rsp)
lea    0xc93(%rip),%rdi
call   1030 <puts@plt>
lea    0xbfb(%rip),%rdi
movsd  0x28(%rsp),%xmm0
movsd  0x30(%rsp),%xmm1
movsd  0x38(%rsp),%xmm2
movsd  0x40(%rsp),%xmm3
mov    $0x4,%al
call   1040 <printf@plt>
lea    0xc02(%rip),%rdi
movsd  (%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
movsd  0x48(%rsp),%xmm2
movsd  0x50(%rsp),%xmm3
mov    $0x4,%al
call   1040 <printf@plt>
lea    0xc0a(%rip),%rbx
mov    %rbx,%rdi
movsd  0x10(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
movsd  0x58(%rsp),%xmm2
movsd  0x60(%rsp),%xmm3
mov    $0x4,%al
call   1040 <printf@plt>
mov    %rbx,%rdi
movsd  0x68(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
movsd  0x70(%rsp),%xmm2
movsd  0x78(%rsp),%xmm3
mov    $0x4,%al
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x80,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@.str = [65 x i8] c"\0AOperacion\09\09Valor 8\09\09 Aritmetica maquina \09ErrorA\09\09ErrorR\0A\00"
@.str.1 = [45 x i8] c"\0Ax+y \09\09%1.7e \09 %1.4e\09\09 %e \09 %e\00"
@.str.2 = [45 x i8] c"\0Ax*y \09\09%1.7e \09 %1.4e\09\09 %e \09 %e\00"
@.str.3 = [50 x i8] c"\0Ax+y \09\09%1.7e %1.4e\09 %e %e\00"
define i32 @main() {
%1 = alloca i32
%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
%26 = alloca double
%27 = alloca double
store i32 0, i32* %1
store double 0x3FE6DB6DB6DB6DB7, double* %2
store double 0x3FD5555555555555, double* %3
store double 0x3FE6DB6DB48E678C, double* %4
store double 0x3FD5555551C112DA, double* %5
%28 = load double, double* %2
%29 = fmul double %28, 1.000000e+05
%30 = fptosi double %29 to i32
%31 = call i32 @truncf(i32 %30)
%32 = sitofp i32 %31 to double
%33 = fmul double %32, 1.000000e-05
store double %33, double* %6
%34 = load double, double* %3
%35 = fmul double %34, 1.000000e+05
%36 = fptosi double %35 to i32
%37 = call i32 @truncf(i32 %36)
%38 = sitofp i32 %37 to double
%39 = fmul double %38, 1.000000e-05
store double %39, double* %7
%40 = load double, double* %4
%41 = fmul double %40, 1.000000e+05
%42 = fptosi double %41 to i32
%43 = call i32 @truncf(i32 %42)
%44 = sitofp i32 %43 to double
%45 = fmul double %44, 1.000000e-05
store double %45, double* %8
%46 = load double, double* %5
%47 = fmul double %46, 1.000000e+05
%48 = fptosi double %47 to i32
%49 = call i32 @truncf(i32 %48)
%50 = sitofp i32 %49 to double
%51 = fmul double %50, 1.000000e-05
store double %51, double* %9
%52 = load double, double* %6
%53 = load double, double* %7
%54 = fadd double %52, %53
%55 = fmul double %54, 1.000000e+05
%56 = fptosi double %55 to i32
%57 = call i32 @truncf(i32 %56)
%58 = sitofp i32 %57 to double
%59 = fmul double %58, 1.000000e-05
store double %59, double* %10
%60 = load double, double* %6
%61 = load double, double* %7
%62 = fmul double %60, %61
%63 = fmul double %62, 1.000000e+05
%64 = fptosi double %63 to i32
%65 = call i32 @truncf(i32 %64)
%66 = sitofp i32 %65 to double
%67 = fmul double %66, 1.000000e-05
store double %67, double* %11
%68 = load double, double* %6
%69 = load double, double* %8
%70 = fsub double %68, %69
%71 = fmul double %70, 1.000000e+05
%72 = fptosi double %71 to i32
%73 = call i32 @truncf(i32 %72)
%74 = sitofp i32 %73 to double
%75 = fmul double %74, 1.000000e-05
store double %75, double* %12
%76 = load double, double* %6
%77 = load double, double* %8
%78 = fsub double %76, %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 = fmul double %82, 1.000000e-05
%84 = load double, double* %9
%85 = fmul double %83, %84
%86 = fmul double %85, 1.000000e+05
%87 = fptosi double %86 to i32
%88 = call i32 @truncf(i32 %87)
%89 = sitofp i32 %88 to double
%90 = fmul double %89, 1.000000e-05
store double %90, double* %13
%91 = load double, double* %2
%92 = fmul double %91, 1.000000e+08
%93 = fptosi double %92 to i32
%94 = call i32 @truncf(i32 %93)
%95 = sitofp i32 %94 to double
%96 = fmul double %95, 1.000000e-08
store double %96, double* %14
%97 = load double, double* %3
%98 = fmul double %97, 1.000000e+08
%99 = fptosi double %98 to i32
%100 = call i32 @truncf(i32 %99)
%101 = sitofp i32 %100 to double
%102 = fmul double %101, 1.000000e-08
store double %102, double* %15
%103 = load double, double* %14
%104 = load double, double* %15
%105 = fadd double %103, %104
%106 = fmul double %105, 1.000000e+08
%107 = fptosi double %106 to i32
%108 = call i32 @truncf(i32 %107)
%109 = sitofp i32 %108 to double
%110 = fmul double %109, 1.000000e-08
store double %110, double* %16
%111 = load double, double* %14
%112 = load double, double* %15
%113 = fmul double %111, %112
%114 = fmul double %113, 1.000000e+08
%115 = fptosi double %114 to i32
%116 = call i32 @truncf(i32 %115)
%117 = sitofp i32 %116 to double
%118 = fmul double %117, 1.000000e-08
store double %118, double* %17
%119 = load double, double* %14
%120 = load double, double* %4
%121 = fsub double %119, %120
%122 = fmul double %121, 1.000000e+08
%123 = fptosi double %122 to i32
%124 = call i32 @truncf(i32 %123)
%125 = sitofp i32 %124 to double
%126 = fmul double %125, 1.000000e-08
store double %126, double* %18
%127 = load double, double* %14
%128 = load double, double* %4
%129 = fsub double %127, %128
%130 = fmul double %129, 1.000000e+08
%131 = fptosi double %130 to i32
%132 = call i32 @truncf(i32 %131)
%133 = sitofp i32 %132 to double
%134 = fmul double %133, 1.000000e-08
%135 = load double, double* %5
%136 = fmul double %134, %135
%137 = fmul double %136, 1.000000e+08
%138 = fptosi double %137 to i32
%139 = call i32 @truncf(i32 %138)
%140 = sitofp i32 %139 to double
%141 = fmul double %140, 1.000000e-08
store double %141, double* %19
%142 = load double, double* %16
%143 = load double, double* %10
%144 = fsub double %142, %143
store double %144, double* %20
%145 = load double, double* %16
%146 = load double, double* %10
%147 = fsub double %145, %146
%148 = load double, double* %16
%149 = fdiv double %147, %148
store double %149, double* %21
%150 = load double, double* %17
%151 = load double, double* %11
%152 = fsub double %150, %151
store double %152, double* %22
%153 = load double, double* %17
%154 = load double, double* %11
%155 = fsub double %153, %154
%156 = load double, double* %17
%157 = fdiv double %155, %156
store double %157, double* %23
%158 = load double, double* %18
%159 = load double, double* %12
%160 = fsub double %158, %159
store double %160, double* %24
%161 = load double, double* %18
%162 = load double, double* %12
%163 = fsub double %161, %162
%164 = load double, double* %18
%165 = fdiv double %163, %164
store double %165, double* %25
%166 = load double, double* %19
%167 = load double, double* %13
%168 = fsub double %166, %167
store double %168, double* %26
%169 = load double, double* %19
%170 = load double, double* %13
%171 = fsub double %169, %170
%172 = load double, double* %19
%173 = fdiv double %171, %172
store double %173, double* %27
%174 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str, i64 0, i64 0))
%175 = load double, double* %16
%176 = load double, double* %10
%177 = load double, double* %20
%178 = load double, double* %21
%179 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.1, i64 0, i64 0), double %175, double %176, double %177, double %178)
%180 = load double, double* %17
%181 = load double, double* %11
%182 = load double, double* %22
%183 = load double, double* %23
%184 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.2, i64 0, i64 0), double %180, double %181, double %182, double %183)
%185 = load double, double* %18
%186 = load double, double* %12
%187 = load double, double* %24
%188 = load double, double* %25
%189 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.3, i64 0, i64 0), double %185, double %186, double %187, double %188)
%190 = load double, double* %19
%191 = load double, double* %13
%192 = load double, double* %26
%193 = load double, double* %27
%194 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.3, i64 0, i64 0), double %190, double %191, double %192, double %193)
ret i32 0
}

LLVM IR (-O2):
@.str.1 = [45 x i8] c"\0Ax+y \09\09%1.7e \09 %1.4e\09\09 %e \09 %e\00"
@.str.2 = [45 x i8] c"\0Ax*y \09\09%1.7e \09 %1.4e\09\09 %e \09 %e\00"
@.str.3 = [50 x i8] c"\0Ax+y \09\09%1.7e %1.4e\09 %e %e\00"
@str = [64 x i8] c"\0AOperacion\09\09Valor 8\09\09 Aritmetica maquina \09ErrorA\09\09ErrorR\00"
define i32 @main() {
%1 = tail call i32 @truncf(i32 71428)
%2 = sitofp i32 %1 to double
%3 = fmul double %2, 1.000000e-05
%4 = tail call i32 @truncf(i32 33333)
%5 = sitofp i32 %4 to double
%6 = fmul double %5, 1.000000e-05
%7 = tail call i32 @truncf(i32 71428)
%8 = sitofp i32 %7 to double
%9 = fmul double %8, 1.000000e-05
%10 = tail call i32 @truncf(i32 33333)
%11 = sitofp i32 %10 to double
%12 = fmul double %11, 1.000000e-05
%13 = fadd double %3, %6
%14 = fmul double %13, 1.000000e+05
%15 = fptosi double %14 to i32
%16 = tail call i32 @truncf(i32 %15)
%17 = sitofp i32 %16 to double
%18 = fmul double %17, 1.000000e-05
%19 = fmul double %3, %6
%20 = fmul double %19, 1.000000e+05
%21 = fptosi double %20 to i32
%22 = tail call i32 @truncf(i32 %21)
%23 = sitofp i32 %22 to double
%24 = fmul double %23, 1.000000e-05
%25 = fsub double %3, %9
%26 = fmul double %25, 1.000000e+05
%27 = fptosi double %26 to i32
%28 = tail call i32 @truncf(i32 %27)
%29 = sitofp i32 %28 to double
%30 = fmul double %29, 1.000000e-05
%31 = tail call i32 @truncf(i32 %27)
%32 = sitofp i32 %31 to double
%33 = fmul double %32, 1.000000e-05
%34 = fmul double %12, %33
%35 = fmul double %34, 1.000000e+05
%36 = fptosi double %35 to i32
%37 = tail call i32 @truncf(i32 %36)
%38 = sitofp i32 %37 to double
%39 = fmul double %38, 1.000000e-05
%40 = tail call i32 @truncf(i32 71428571)
%41 = sitofp i32 %40 to double
%42 = fmul double %41, 1.000000e-08
%43 = tail call i32 @truncf(i32 33333333)
%44 = sitofp i32 %43 to double
%45 = fmul double %44, 1.000000e-08
%46 = fadd double %42, %45
%47 = fmul double %46, 1.000000e+08
%48 = fptosi double %47 to i32
%49 = tail call i32 @truncf(i32 %48)
%50 = sitofp i32 %49 to double
%51 = fmul double %50, 1.000000e-08
%52 = fmul double %42, %45
%53 = fmul double %52, 1.000000e+08
%54 = fptosi double %53 to i32
%55 = tail call i32 @truncf(i32 %54)
%56 = sitofp i32 %55 to double
%57 = fmul double %56, 1.000000e-08
%58 = fadd double %42, 0xBFE6DB6DB48E678C
%59 = fmul double %58, 1.000000e+08
%60 = fptosi double %59 to i32
%61 = tail call i32 @truncf(i32 %60)
%62 = sitofp i32 %61 to double
%63 = fmul double %62, 1.000000e-08
%64 = tail call i32 @truncf(i32 %60)
%65 = sitofp i32 %64 to double
%66 = fmul double %65, 1.000000e-08
%67 = fmul double %66, 0x3FD5555551C112DA
%68 = fmul double %67, 1.000000e+08
%69 = fptosi double %68 to i32
%70 = tail call i32 @truncf(i32 %69)
%71 = sitofp i32 %70 to double
%72 = fmul double %71, 1.000000e-08
%73 = fsub double %51, %18
%74 = fdiv double %73, %51
%75 = fsub double %57, %24
%76 = fdiv double %75, %57
%77 = fsub double %63, %30
%78 = fdiv double %77, %63
%79 = fsub double %72, %39
%80 = fdiv double %79, %72
%81 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([64 x i8], [64 x i8]* @str, i64 0, i64 0))
%82 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str.1, i64 0, i64 0), double %51, double %18, double %73, double %74)
%83 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str.2, i64 0, i64 0), double %57, double %24, double %75, double %76)
%84 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @.str.3, i64 0, i64 0), double %63, double %30, double %77, double %78)
%85 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @.str.3, i64 0, i64 0), double %72, double %39, double %79, double %80)
ret i32 0
}