#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 pow(float, int);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ scanf(char *, float *);
int /*<<< orphan*/ system(char *);
void trapecio_multiple() {
  system("cls");
  printf("\t\tMETODO DE INTEGRACION DEL TRAPECIO MULTIPLE\n\n");
  float a, b, n = 3, h, x0, x3, x1, x2, r;
  printf("La integral que se va a realizar es  de la siguiente funcion: \n "
         "f(x)=0.2+25x-200x^2+675x^3-900x^4+400x^5\n\n");
  printf("Dame el valor de a:\n");
  scanf("%f", &a);
  printf("Dame el valor de b:\n");
  scanf("%f", &b);
  h = (b - a) / n;
  x0 = (.2 + 25 * a - 200 * pow(a, 2) + 675 * pow(a, 3) - 900 * pow(a, 4) +
        400 * pow(a, 5));
  x1 = (.2667 + 25 * h - 200 * pow(h, 2) + 675 * pow(h, 3) - 900 * pow(h, 4) +
        400 * pow(h, 5));
  x2 = (.2 + 25 * (2 * h) - 200 * pow((2 * h), 2) + 675 * pow((2 * h), 3) -
        900 * pow((2 * h), 4) + 400 * pow((2 * h), 5));
  x3 = (.2 + 25 * b - 200 * pow(b, 2) + 675 * pow(b, 3) - 900 * pow(b, 4) +
        400 * pow(b, 5));
  r = h / 2 * (x0 + 2 * (x1 + x2) + x3);
  printf("El resultado de la integral es:\n %f+2*(%f+%f)+%f=%f", x0, x1, x2, x3,
         r);
  system("pause");
}


x86 assembly (clang, -O0):
<trapecio_multiple>:
push   %rbp
mov    %rsp,%rbp
sub    $0xb0,%rsp
lea    0xece(%rip),%rdi
call   1030 <system@plt>
lea    0xec6(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movss  0xe9b(%rip),%xmm0
movss  %xmm0,-0xc(%rbp)
lea    0xedb(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xf38(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xf85(%rip),%rdi
lea    -0x4(%rbp),%rsi
call   1050 <scanf@plt>
lea    0xf2f(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xf67(%rip),%rdi
lea    -0x8(%rbp),%rsi
call   1050 <scanf@plt>
movss  -0x8(%rbp),%xmm0
subss  -0x4(%rbp),%xmm0
divss  -0xc(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
movss  0xe2c(%rip),%xmm0
mulss  -0x4(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xe27(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movss  -0x4(%rbp),%xmm0
mov    $0x2,%edi
call   1060 <pow@plt>
movsd  -0xa8(%rbp),%xmm0
ff
imul   $0xc8,%eax,%eax
cvtsi2sd %eax,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movss  -0x4(%rbp),%xmm0
mov    $0x3,%edi
call   1060 <pow@plt>
movsd  -0xa0(%rbp),%xmm0
ff
imul   $0x2a3,%eax,%eax
cvtsi2sd %eax,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movss  -0x4(%rbp),%xmm0
mov    $0x4,%edi
call   1060 <pow@plt>
movsd  -0x98(%rbp),%xmm0
ff
imul   $0x384,%eax,%eax
cvtsi2sd %eax,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movss  -0x4(%rbp),%xmm0
mov    $0x5,%edi
call   1060 <pow@plt>
movsd  -0x90(%rbp),%xmm0
ff
imul   $0x190,%eax,%eax
cvtsi2sd %eax,%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x14(%rbp)
movss  0xd52(%rip),%xmm0
mulss  -0x10(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xd55(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movss  -0x10(%rbp),%xmm0
mov    $0x2,%edi
call   1060 <pow@plt>
movsd  -0x88(%rbp),%xmm0
ff
imul   $0xc8,%eax,%eax
cvtsi2sd %eax,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movss  -0x10(%rbp),%xmm0
mov    $0x3,%edi
call   1060 <pow@plt>
movsd  -0x80(%rbp),%xmm0
imul   $0x2a3,%eax,%eax
cvtsi2sd %eax,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movss  -0x10(%rbp),%xmm0
mov    $0x4,%edi
call   1060 <pow@plt>
movsd  -0x78(%rbp),%xmm0
imul   $0x384,%eax,%eax
cvtsi2sd %eax,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movss  -0x10(%rbp),%xmm0
mov    $0x5,%edi
call   1060 <pow@plt>
movsd  -0x70(%rbp),%xmm0
imul   $0x190,%eax,%eax
cvtsi2sd %eax,%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x1c(%rbp)
movss  0xc86(%rip),%xmm1
mulss  -0x10(%rbp),%xmm1
movss  0xc7d(%rip),%xmm0
mulss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xc79(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movss  0xc58(%rip),%xmm0
mulss  -0x10(%rbp),%xmm0
mov    $0x2,%edi
call   1060 <pow@plt>
movsd  -0x68(%rbp),%xmm0
imul   $0xc8,%eax,%eax
cvtsi2sd %eax,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movss  0xc29(%rip),%xmm0
mulss  -0x10(%rbp),%xmm0
mov    $0x3,%edi
call   1060 <pow@plt>
movsd  -0x60(%rbp),%xmm0
imul   $0x2a3,%eax,%eax
cvtsi2sd %eax,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movss  0xbfa(%rip),%xmm0
mulss  -0x10(%rbp),%xmm0
mov    $0x4,%edi
call   1060 <pow@plt>
movsd  -0x58(%rbp),%xmm0
imul   $0x384,%eax,%eax
cvtsi2sd %eax,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movss  0xbcb(%rip),%xmm0
mulss  -0x10(%rbp),%xmm0
mov    $0x5,%edi
call   1060 <pow@plt>
movsd  -0x50(%rbp),%xmm0
imul   $0x190,%eax,%eax
cvtsi2sd %eax,%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x20(%rbp)
movss  0xb9c(%rip),%xmm0
mulss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xb97(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movss  -0x8(%rbp),%xmm0
mov    $0x2,%edi
call   1060 <pow@plt>
movsd  -0x48(%rbp),%xmm0
imul   $0xc8,%eax,%eax
cvtsi2sd %eax,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movss  -0x8(%rbp),%xmm0
mov    $0x3,%edi
call   1060 <pow@plt>
movsd  -0x40(%rbp),%xmm0
imul   $0x2a3,%eax,%eax
cvtsi2sd %eax,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movss  -0x8(%rbp),%xmm0
mov    $0x4,%edi
call   1060 <pow@plt>
movsd  -0x38(%rbp),%xmm0
imul   $0x384,%eax,%eax
cvtsi2sd %eax,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movss  -0x8(%rbp),%xmm0
mov    $0x5,%edi
call   1060 <pow@plt>
movsd  -0x30(%rbp),%xmm0
imul   $0x190,%eax,%eax
cvtsi2sd %eax,%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x18(%rbp)
movss  -0x10(%rbp),%xmm0
movss  0xad1(%rip),%xmm1
divss  %xmm1,%xmm0
movss  -0x14(%rbp),%xmm2
movss  -0x1c(%rbp),%xmm1
addss  -0x20(%rbp),%xmm1
addss  %xmm1,%xmm1
addss  %xmm2,%xmm1
addss  -0x18(%rbp),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x14(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x1c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movss  -0x20(%rbp),%xmm2
cvtss2sd %xmm2,%xmm2
movss  -0x18(%rbp),%xmm3
cvtss2sd %xmm3,%xmm3
movss  -0x24(%rbp),%xmm4
cvtss2sd %xmm4,%xmm4
lea    0xb5d(%rip),%rdi
mov    $0x5,%al
call   1040 <printf@plt>
lea    0xb83(%rip),%rdi
call   1030 <system@plt>
add    $0xb0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<trapecio_multiple>:
push   %rbx
sub    $0x30,%rsp
lea    0xec4(%rip),%rdi
call   1040 <system@plt>
lea    0xef6(%rip),%rdi
call   1030 <puts@plt>
lea    0xf19(%rip),%rdi
call   1030 <puts@plt>
lea    0xf77(%rip),%rdi
call   1030 <puts@plt>
lea    0xec9(%rip),%rbx
lea    0x24(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
lea    0xf6b(%rip),%rdi
call   1030 <puts@plt>
lea    0x14(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
movss  0x14(%rsp),%xmm1
movss  0x24(%rsp),%xmm0
subss  %xmm0,%xmm1
divss  0xe36(%rip),%xmm1
movss  %xmm1,0x10(%rsp)
movaps %xmm0,%xmm1
mulss  0xe29(%rip),%xmm1
cvtss2sd %xmm1,%xmm1
addsd  0xe29(%rip),%xmm1
movsd  %xmm1,0x8(%rsp)
mov    $0x2,%edi
call   1070 <pow@plt>
imul   $0xc8,%eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x8(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
movss  0x24(%rsp),%xmm0
mov    $0x3,%edi
call   1070 <pow@plt>
imul   $0x2a3,%eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movss  0x24(%rsp),%xmm0
mov    $0x4,%edi
call   1070 <pow@plt>
imul   $0x384,%eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x8(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
movss  0x24(%rsp),%xmm0
mov    $0x5,%edi
call   1070 <pow@plt>
imul   $0x190,%eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x8(%rsp),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x2c(%rsp)
movss  0x10(%rsp),%xmm0
movaps %xmm0,%xmm1
mulss  0xd5c(%rip),%xmm1
cvtss2sd %xmm1,%xmm1
addsd  0xd64(%rip),%xmm1
movsd  %xmm1,0x8(%rsp)
mov    $0x2,%edi
call   1070 <pow@plt>
imul   $0xc8,%eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x8(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
movss  0x10(%rsp),%xmm0
mov    $0x3,%edi
call   1070 <pow@plt>
imul   $0x2a3,%eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movss  0x10(%rsp),%xmm0
mov    $0x4,%edi
call   1070 <pow@plt>
imul   $0x384,%eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x8(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
movss  0x10(%rsp),%xmm0
mov    $0x5,%edi
call   1070 <pow@plt>
imul   $0x190,%eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x8(%rsp),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x28(%rsp)
movss  0x10(%rsp),%xmm0
addss  %xmm0,%xmm0
movss  %xmm0,0x8(%rsp)
movaps %xmm0,%xmm1
mulss  0xc85(%rip),%xmm1
cvtss2sd %xmm1,%xmm1
addsd  0xc85(%rip),%xmm1
movsd  %xmm1,0x18(%rsp)
mov    $0x2,%edi
call   1070 <pow@plt>
imul   $0xc8,%eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x18(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x18(%rsp)
movss  0x8(%rsp),%xmm0
mov    $0x3,%edi
call   1070 <pow@plt>
imul   $0x2a3,%eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movss  0x8(%rsp),%xmm0
mov    $0x4,%edi
call   1070 <pow@plt>
imul   $0x384,%eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x18(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x18(%rsp)
movss  0x8(%rsp),%xmm0
mov    $0x5,%edi
call   1070 <pow@plt>
imul   $0x190,%eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x18(%rsp),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x18(%rsp)
movss  0x14(%rsp),%xmm0
movss  0xbbb(%rip),%xmm1
mulss  %xmm0,%xmm1
cvtss2sd %xmm1,%xmm1
addsd  0xbb7(%rip),%xmm1
movsd  %xmm1,0x8(%rsp)
mov    $0x2,%edi
call   1070 <pow@plt>
imul   $0xc8,%eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x8(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
movss  0x14(%rsp),%xmm0
mov    $0x3,%edi
call   1070 <pow@plt>
imul   $0x2a3,%eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movss  0x14(%rsp),%xmm0
mov    $0x4,%edi
call   1070 <pow@plt>
imul   $0x384,%eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x8(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
movss  0x14(%rsp),%xmm0
mov    $0x5,%edi
call   1070 <pow@plt>
imul   $0x190,%eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x8(%rsp),%xmm0
cvtsd2ss %xmm0,%xmm3
movss  0x10(%rsp),%xmm2
mulss  0xaf7(%rip),%xmm2
movss  0x28(%rsp),%xmm4
xorps  %xmm1,%xmm1
cvtss2sd %xmm4,%xmm1
movss  0x18(%rsp),%xmm5
addss  %xmm5,%xmm4
addss  %xmm4,%xmm4
movss  0x2c(%rsp),%xmm0
addss  %xmm0,%xmm4
addss  %xmm3,%xmm4
mulss  %xmm2,%xmm4
cvtss2sd %xmm0,%xmm0
xorps  %xmm2,%xmm2
cvtss2sd %xmm5,%xmm2
cvtss2sd %xmm3,%xmm3
cvtss2sd %xmm4,%xmm4
lea    0xacc(%rip),%rdi
mov    $0x5,%al
call   1050 <printf@plt>
lea    0xaf2(%rip),%rdi
call   1040 <system@plt>
add    $0x30,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@.str = [4 x i8] c"cls\00"
@.str.1 = [48 x i8] c"\09\09METODO DE INTEGRACION DEL TRAPECIO MULTIPLE\0A\0A\00"
@.str.2 = [107 x i8] c"La integral que se va a realizar es de la siguiente funcion: \0A f(x)=0.2+25x-200x^2+675x^3-900x^4+400x^5\0A\0A\00"
@.str.3 = [21 x i8] c"Dame el valor de a:\0A\00"
@.str.4 = [3 x i8] c"%f\00"
@.str.5 = [21 x i8] c"Dame el valor de b:\0A\00"
@.str.6 = [52 x i8] c"El resultado de la integral es:\0A %f+2*(%f+%f)+%f=%f\00"
@.str.7 = [6 x i8] c"pause\00"
define void @trapecio_multiple() {
%1 = alloca float
%2 = alloca float
%3 = alloca float
%4 = alloca float
%5 = alloca float
%6 = alloca float
%7 = alloca float
%8 = alloca float
%9 = alloca float
%10 = call i32 @system(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
%11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.1, i64 0, i64 0))
store float 3.000000e+00, float* %3
%12 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([107 x i8], [107 x i8]* @.str.2, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.3, i64 0, i64 0))
%14 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), float* %1)
%15 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.5, i64 0, i64 0))
%16 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), float* %2)
%17 = load float, float* %2
%18 = load float, float* %1
%19 = fsub float %17, %18
%20 = load float, float* %3
%21 = fdiv float %19, %20
store float %21, float* %4
%22 = load float, float* %1
%23 = fmul float 2.500000e+01, %22
%24 = fpext float %23 to double
%25 = fadd double 2.000000e-01, %24
%26 = load float, float* %1
%27 = call i32 @pow(float %26, i32 2)
%28 = mul nsw i32 200, %27
%29 = sitofp i32 %28 to double
%30 = fsub double %25, %29
%31 = load float, float* %1
%32 = call i32 @pow(float %31, i32 3)
%33 = mul nsw i32 675, %32
%34 = sitofp i32 %33 to double
%35 = fadd double %30, %34
%36 = load float, float* %1
%37 = call i32 @pow(float %36, i32 4)
%38 = mul nsw i32 900, %37
%39 = sitofp i32 %38 to double
%40 = fsub double %35, %39
%41 = load float, float* %1
%42 = call i32 @pow(float %41, i32 5)
%43 = mul nsw i32 400, %42
%44 = sitofp i32 %43 to double
%45 = fadd double %40, %44
%46 = fptrunc double %45 to float
store float %46, float* %5
%47 = load float, float* %4
%48 = fmul float 2.500000e+01, %47
%49 = fpext float %48 to double
%50 = fadd double 2.667000e-01, %49
%51 = load float, float* %4
%52 = call i32 @pow(float %51, i32 2)
%53 = mul nsw i32 200, %52
%54 = sitofp i32 %53 to double
%55 = fsub double %50, %54
%56 = load float, float* %4
%57 = call i32 @pow(float %56, i32 3)
%58 = mul nsw i32 675, %57
%59 = sitofp i32 %58 to double
%60 = fadd double %55, %59
%61 = load float, float* %4
%62 = call i32 @pow(float %61, i32 4)
%63 = mul nsw i32 900, %62
%64 = sitofp i32 %63 to double
%65 = fsub double %60, %64
%66 = load float, float* %4
%67 = call i32 @pow(float %66, i32 5)
%68 = mul nsw i32 400, %67
%69 = sitofp i32 %68 to double
%70 = fadd double %65, %69
%71 = fptrunc double %70 to float
store float %71, float* %7
%72 = load float, float* %4
%73 = fmul float 2.000000e+00, %72
%74 = fmul float 2.500000e+01, %73
%75 = fpext float %74 to double
%76 = fadd double 2.000000e-01, %75
%77 = load float, float* %4
%78 = fmul float 2.000000e+00, %77
%79 = call i32 @pow(float %78, i32 2)
%80 = mul nsw i32 200, %79
%81 = sitofp i32 %80 to double
%82 = fsub double %76, %81
%83 = load float, float* %4
%84 = fmul float 2.000000e+00, %83
%85 = call i32 @pow(float %84, i32 3)
%86 = mul nsw i32 675, %85
%87 = sitofp i32 %86 to double
%88 = fadd double %82, %87
%89 = load float, float* %4
%90 = fmul float 2.000000e+00, %89
%91 = call i32 @pow(float %90, i32 4)
%92 = mul nsw i32 900, %91
%93 = sitofp i32 %92 to double
%94 = fsub double %88, %93
%95 = load float, float* %4
%96 = fmul float 2.000000e+00, %95
%97 = call i32 @pow(float %96, i32 5)
%98 = mul nsw i32 400, %97
%99 = sitofp i32 %98 to double
%100 = fadd double %94, %99
%101 = fptrunc double %100 to float
store float %101, float* %8
%102 = load float, float* %2
%103 = fmul float 2.500000e+01, %102
%104 = fpext float %103 to double
%105 = fadd double 2.000000e-01, %104
%106 = load float, float* %2
%107 = call i32 @pow(float %106, i32 2)
%108 = mul nsw i32 200, %107
%109 = sitofp i32 %108 to double
%110 = fsub double %105, %109
%111 = load float, float* %2
%112 = call i32 @pow(float %111, i32 3)
%113 = mul nsw i32 675, %112
%114 = sitofp i32 %113 to double
%115 = fadd double %110, %114
%116 = load float, float* %2
%117 = call i32 @pow(float %116, i32 4)
%118 = mul nsw i32 900, %117
%119 = sitofp i32 %118 to double
%120 = fsub double %115, %119
%121 = load float, float* %2
%122 = call i32 @pow(float %121, i32 5)
%123 = mul nsw i32 400, %122
%124 = sitofp i32 %123 to double
%125 = fadd double %120, %124
%126 = fptrunc double %125 to float
store float %126, float* %6
%127 = load float, float* %4
%128 = fdiv float %127, 2.000000e+00
%129 = load float, float* %5
%130 = load float, float* %7
%131 = load float, float* %8
%132 = fadd float %130, %131
%133 = call float @llvm.fmuladd.f32(float 2.000000e+00, float %132, float %129)
%134 = load float, float* %6
%135 = fadd float %133, %134
%136 = fmul float %128, %135
store float %136, float* %9
%137 = load float, float* %5
%138 = fpext float %137 to double
%139 = load float, float* %7
%140 = fpext float %139 to double
%141 = load float, float* %8
%142 = fpext float %141 to double
%143 = load float, float* %6
%144 = fpext float %143 to double
%145 = load float, float* %9
%146 = fpext float %145 to double
%147 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.6, i64 0, i64 0), double %138, double %140, double %142, double %144, double %146)
%148 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [4 x i8] c"cls\00"
@.str.4 = [3 x i8] c"%f\00"
@.str.6 = [52 x i8] c"El resultado de la integral es:\0A %f+2*(%f+%f)+%f=%f\00"
@.str.7 = [6 x i8] c"pause\00"
@str = [47 x i8] c"\09\09METODO DE INTEGRACION DEL TRAPECIO MULTIPLE\0A\00"
@str.8 = [106 x i8] c"La integral que se va a realizar es de la siguiente funcion: \0A f(x)=0.2+25x-200x^2+675x^3-900x^4+400x^5\0A\00"
@str.9 = [20 x i8] c"Dame el valor de a:\00"
@str.10 = [20 x i8] c"Dame el valor de b:\00"
define void @trapecio_multiple() {
%1 = alloca float
%2 = alloca float
%3 = tail call i32 @system(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @str, i64 0, i64 0))
%5 = bitcast float* %1 to i8*
%6 = bitcast float* %2 to i8*
%7 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([106 x i8], [106 x i8]* @str.8, i64 0, i64 0))
%8 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @str.9, i64 0, i64 0))
%9 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), float* %1)
%10 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @str.10, i64 0, i64 0))
%11 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), float* %2)
%12 = load float, float* %2
%13 = load float, float* %1
%14 = fsub float %12, %13
%15 = fdiv float %14, 3.000000e+00
%16 = fmul float %13, 2.500000e+01
%17 = fpext float %16 to double
%18 = fadd double %17, 2.000000e-01
%19 = call i32 @pow(float %13, i32 2)
%20 = mul nsw i32 %19, 200
%21 = sitofp i32 %20 to double
%22 = fsub double %18, %21
%23 = load float, float* %1
%24 = call i32 @pow(float %23, i32 3)
%25 = mul nsw i32 %24, 675
%26 = sitofp i32 %25 to double
%27 = fadd double %22, %26
%28 = load float, float* %1
%29 = call i32 @pow(float %28, i32 4)
%30 = mul nsw i32 %29, 900
%31 = sitofp i32 %30 to double
%32 = fsub double %27, %31
%33 = load float, float* %1
%34 = call i32 @pow(float %33, i32 5)
%35 = mul nsw i32 %34, 400
%36 = sitofp i32 %35 to double
%37 = fadd double %32, %36
%38 = fptrunc double %37 to float
%39 = fmul float %15, 2.500000e+01
%40 = fpext float %39 to double
%41 = fadd double %40, 2.667000e-01
%42 = call i32 @pow(float %15, i32 2)
%43 = mul nsw i32 %42, 200
%44 = sitofp i32 %43 to double
%45 = fsub double %41, %44
%46 = call i32 @pow(float %15, i32 3)
%47 = mul nsw i32 %46, 675
%48 = sitofp i32 %47 to double
%49 = fadd double %45, %48
%50 = call i32 @pow(float %15, i32 4)
%51 = mul nsw i32 %50, 900
%52 = sitofp i32 %51 to double
%53 = fsub double %49, %52
%54 = call i32 @pow(float %15, i32 5)
%55 = mul nsw i32 %54, 400
%56 = sitofp i32 %55 to double
%57 = fadd double %53, %56
%58 = fptrunc double %57 to float
%59 = fmul float %15, 2.000000e+00
%60 = fmul float %59, 2.500000e+01
%61 = fpext float %60 to double
%62 = fadd double %61, 2.000000e-01
%63 = call i32 @pow(float %59, i32 2)
%64 = mul nsw i32 %63, 200
%65 = sitofp i32 %64 to double
%66 = fsub double %62, %65
%67 = call i32 @pow(float %59, i32 3)
%68 = mul nsw i32 %67, 675
%69 = sitofp i32 %68 to double
%70 = fadd double %66, %69
%71 = call i32 @pow(float %59, i32 4)
%72 = mul nsw i32 %71, 900
%73 = sitofp i32 %72 to double
%74 = fsub double %70, %73
%75 = call i32 @pow(float %59, i32 5)
%76 = mul nsw i32 %75, 400
%77 = sitofp i32 %76 to double
%78 = fadd double %74, %77
%79 = fptrunc double %78 to float
%80 = load float, float* %2
%81 = fmul float %80, 2.500000e+01
%82 = fpext float %81 to double
%83 = fadd double %82, 2.000000e-01
%84 = call i32 @pow(float %80, i32 2)
%85 = mul nsw i32 %84, 200
%86 = sitofp i32 %85 to double
%87 = fsub double %83, %86
%88 = load float, float* %2
%89 = call i32 @pow(float %88, i32 3)
%90 = mul nsw i32 %89, 675
%91 = sitofp i32 %90 to double
%92 = fadd double %87, %91
%93 = load float, float* %2
%94 = call i32 @pow(float %93, i32 4)
%95 = mul nsw i32 %94, 900
%96 = sitofp i32 %95 to double
%97 = fsub double %92, %96
%98 = load float, float* %2
%99 = call i32 @pow(float %98, i32 5)
%100 = mul nsw i32 %99, 400
%101 = sitofp i32 %100 to double
%102 = fadd double %97, %101
%103 = fptrunc double %102 to float
%104 = fmul float %15, 5.000000e-01
%105 = fadd float %58, %79
%106 = call float @llvm.fmuladd.f32(float %105, float 2.000000e+00, float %38)
%107 = fadd float %106, %103
%108 = fmul float %104, %107
%109 = fpext float %38 to double
%110 = fpext float %58 to double
%111 = fpext float %79 to double
%112 = fpext float %103 to double
%113 = fpext float %108 to double
%114 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.6, i64 0, i64 0), double %109, double %110, double %111, double %112, double %113)
%115 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0))
ret void
}