#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(float);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ scanf(char *, float *, float *);
int main() {
  float x0, xn, h, s = 0, s_old = 0, err = 0, err_old = 0;
  float val;
  int i = 0, n = 1, count = 0;
  printf("Input the Lower and Upper Limits :");
  scanf("%f%f", &x0, &xn);
  val = err - err_old;
  printf("---------------------------------------------------------------------"
         "--------\n");
  printf("ite\tn\tI\t\tabs err\t\t(abs error - old abs error)\n");
  printf("---------------------------------------------------------------------"
         "--------\n");
  while (!((count > 0) && (val < 0.00005))) {
    h = (xn - x0) / n;
    s_old = s;
    s = (1 / (1 + x0)) + (1 / (1 + xn)) + 4 * (1 / (1 + x0 + h));
    for (i = 3; i <= n - 1; i += 2) {
      s += 4 * (1 / (1 + x0 + i * h)) + 2 * (1 / (1 + x0 + (i - 1) * h));
    }
    s *= (h / 3);
    err_old = err;
    err = s - s_old;
    val = fabs(fabs(err) - fabs(err_old));
    if (count >= 2)
      printf("%d\t%d\t%f\t%f\t%f\n", count, n, s, fabs(err), val);
    else if (count == 0)
      printf("%d\t%d\t%f\t----\t\t----\n", count, n, s);
    else
      printf("%d\t%d\t%f\t%f\t----\n", count, n, s, fabs(err));
    count++;
    n++;
  }
  printf("\n\nI = %f\n", s);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
movl   $0x0,-0x4(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x14(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x18(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x1c(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x20(%rbp)
movl   $0x0,-0x28(%rbp)
movl   $0x1,-0x2c(%rbp)
movl   $0x0,-0x30(%rbp)
lea    0xe9d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xeb2(%rip),%rdi
lea    -0x8(%rbp),%rsi
lea    -0xc(%rbp),%rdx
call   1050 <scanf@plt>
movss  -0x1c(%rbp),%xmm0
subss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
lea    0xe94(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xed5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe78(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
xor    %eax,%eax
cmpl   $0x0,-0x30(%rbp)
mov    %al,-0x31(%rbp)
jle    11f9 <main+0xc9>
movss  -0x24(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xe11(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
mov    %al,-0x31(%rbp)
mov    -0x31(%rbp),%al
xor    $0xff,%al
test   $0x1,%al
jne    120b <main+0xdb>
jmp    1488 <main+0x358>
movss  -0xc(%rbp),%xmm0
subss  -0x8(%rbp),%xmm0
cvtsi2ssl -0x2c(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x10(%rbp)
movss  -0x14(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  0xdd7(%rip),%xmm0
addss  -0x8(%rbp),%xmm0
movss  0xdca(%rip),%xmm1
divss  %xmm0,%xmm1
movss  0xdbe(%rip),%xmm2
addss  -0xc(%rbp),%xmm2
movss  0xdb1(%rip),%xmm0
divss  %xmm2,%xmm0
addss  %xmm0,%xmm1
movss  0xda1(%rip),%xmm2
addss  -0x8(%rbp),%xmm2
addss  -0x10(%rbp),%xmm2
movss  0xd8f(%rip),%xmm0
divss  %xmm2,%xmm0
movss  0xd7f(%rip),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x14(%rbp)
movl   $0x3,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     133d <main+0x20d>
movss  0xd56(%rip),%xmm0
addss  -0x8(%rbp),%xmm0
cvtsi2ssl -0x28(%rbp),%xmm1
movss  -0x10(%rbp),%xmm2
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  0xd37(%rip),%xmm0
divss  %xmm1,%xmm0
movss  0xd2b(%rip),%xmm2
addss  -0x8(%rbp),%xmm2
mov    -0x28(%rbp),%eax
sub    $0x1,%eax
cvtsi2ss %eax,%xmm1
movss  -0x10(%rbp),%xmm3
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
movss  0xd07(%rip),%xmm2
divss  %xmm1,%xmm2
movss  0xd03(%rip),%xmm1
mulss  %xmm2,%xmm1
movss  0xceb(%rip),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
addss  -0x14(%rbp),%xmm0
movss  %xmm0,-0x14(%rbp)
mov    -0x28(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x28(%rbp)
jmp    129d <main+0x16d>
movss  -0x10(%rbp),%xmm0
movss  0xcc6(%rip),%xmm1
divss  %xmm1,%xmm0
mulss  -0x14(%rbp),%xmm0
movss  %xmm0,-0x14(%rbp)
movss  -0x1c(%rbp),%xmm0
movss  %xmm0,-0x20(%rbp)
movss  -0x14(%rbp),%xmm0
subss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x1c(%rbp)
movss  -0x1c(%rbp),%xmm0
call   1040 <fabs@plt>
movsd  %xmm0,-0x40(%rbp)
movss  -0x20(%rbp),%xmm0
call   1040 <fabs@plt>
movaps %xmm0,%xmm1
movsd  -0x40(%rbp),%xmm0
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
call   1040 <fabs@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x24(%rbp)
cmpl   $0x2,-0x30(%rbp)
jl     1400 <main+0x2d0>
mov    -0x30(%rbp),%eax
mov    %eax,-0x50(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x4c(%rbp)
movss  -0x14(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x48(%rbp)
movss  -0x1c(%rbp),%xmm0
call   1040 <fabs@plt>
mov    -0x50(%rbp),%esi
mov    -0x4c(%rbp),%edx
movaps %xmm0,%xmm1
movsd  -0x48(%rbp),%xmm0
movss  -0x24(%rbp),%xmm2
cvtss2sd %xmm2,%xmm2
lea    0xcca(%rip),%rdi
mov    $0x3,%al
call   1030 <printf@plt>
jmp    1471 <main+0x341>
cmpl   $0x0,-0x30(%rbp)
jne    142c <main+0x2fc>
mov    -0x30(%rbp),%esi
mov    -0x2c(%rbp),%edx
movss  -0x14(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xcae(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
jmp    146c <main+0x33c>
mov    -0x30(%rbp),%eax
mov    %eax,-0x60(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x5c(%rbp)
movss  -0x14(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x58(%rbp)
movss  -0x1c(%rbp),%xmm0
call   1040 <fabs@plt>
mov    -0x60(%rbp),%esi
mov    -0x5c(%rbp),%edx
movaps %xmm0,%xmm1
movsd  -0x58(%rbp),%xmm0
lea    0xc7e(%rip),%rdi
mov    $0x2,%al
call   1030 <printf@plt>
jmp    1471 <main+0x341>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    11cf <main+0x9f>
movss  -0x14(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xc5d(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
lea    0xed3(%rip),%rdi
xor    %ebx,%ebx
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xee6(%rip),%rdi
lea    0x1c(%rsp),%rsi
lea    0x18(%rsp),%rdx
call   1060 <scanf@plt>
lea    0xf44(%rip),%rbp
mov    %rbp,%rdi
call   1030 <puts@plt>
lea    0xf07(%rip),%rdi
call   1030 <puts@plt>
mov    %rbp,%rdi
call   1030 <puts@plt>
xorps  %xmm4,%xmm4
mov    $0x1,%ebp
mov    $0x1,%r13b
movss  0xe66(%rip),%xmm6
movss  0xe62(%rip),%xmm0
lea    0xe97(%rip),%r14
lea    0xea0(%rip),%r15
lea    0xeae(%rip),%r12
xorps  %xmm2,%xmm2
jmp    1240 <main+0x100>
nopl   0x0(%rax)
movaps 0x20(%rsp),%xmm0
call   1050 <fabs@plt>
movaps %xmm0,%xmm1
movss  0xc(%rsp),%xmm0
xorps  %xmm2,%xmm2
cvtss2sd %xmm0,%xmm2
mov    %r14,%rdi
mov    %ebx,%esi
mov    %ebp,%edx
movsd  0x10(%rsp),%xmm0
mov    $0x3,%al
call   1040 <printf@plt>
movss  0xc(%rsp),%xmm1
movaps 0x30(%rsp),%xmm2
movss  0xdff(%rip),%xmm6
movss  0xdfb(%rip),%xmm0
movaps 0x20(%rsp),%xmm4
add    $0x1,%ebx
add    $0x1,%ebp
xorps  %xmm3,%xmm3
cvtss2sd %xmm1,%xmm3
xor    %r13d,%r13d
movsd  0xdea(%rip),%xmm1
ucomisd %xmm3,%xmm1
ja     13d6 <main+0x296>
movaps %xmm2,%xmm8
movaps %xmm4,%xmm5
movss  0x18(%rsp),%xmm1
movss  0x1c(%rsp),%xmm2
movaps %xmm1,%xmm7
subss  %xmm2,%xmm7
xorps  %xmm3,%xmm3
cvtsi2ss %ebp,%xmm3
divss  %xmm3,%xmm7
unpcklps %xmm2,%xmm1
movaps 0xd91(%rip),%xmm2
addps  %xmm2,%xmm1
divps  %xmm1,%xmm2
movaps %xmm2,%xmm3
shufps $0x55,%xmm2,%xmm3
addss  %xmm2,%xmm3
shufps $0x55,%xmm1,%xmm1
movaps %xmm1,%xmm4
addss  %xmm7,%xmm4
movaps %xmm6,%xmm2
divss  %xmm4,%xmm2
mulss  %xmm0,%xmm2
addss  %xmm3,%xmm2
cmp    $0x4,%ebp
movss  %xmm5,0xc(%rsp)
jb     12f6 <main+0x1b6>
mov    $0x3,%eax
nopw   0x0(%rax,%rax,1)
xorps  %xmm3,%xmm3
cvtsi2ss %eax,%xmm3
mulss  %xmm7,%xmm3
addss  %xmm1,%xmm3
movaps %xmm6,%xmm4
divss  %xmm3,%xmm4
lea    -0x1(%rax),%ecx
xorps  %xmm3,%xmm3
cvtsi2ss %ecx,%xmm3
mulss  %xmm7,%xmm3
addss  %xmm1,%xmm3
movaps %xmm6,%xmm5
divss  %xmm3,%xmm5
addss  %xmm5,%xmm5
mulss  %xmm0,%xmm4
addss  %xmm5,%xmm4
addss  %xmm4,%xmm2
add    $0x2,%eax
cmp    %ebp,%eax
jb     12b0 <main+0x170>
divss  0xd1a(%rip),%xmm7
mulss  %xmm2,%xmm7
movaps %xmm7,0x30(%rsp)
movaps %xmm7,%xmm0
subss  %xmm8,%xmm0
movaps %xmm0,0x20(%rsp)
call   1050 <fabs@plt>
movsd  %xmm0,0x10(%rsp)
movss  0xc(%rsp),%xmm0
call   1050 <fabs@plt>
movsd  0x10(%rsp),%xmm1
subsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
call   1050 <fabs@plt>
xorps  %xmm1,%xmm1
cvtsd2ss %xmm0,%xmm1
movaps 0x30(%rsp),%xmm0
xorps  %xmm2,%xmm2
cvtss2sd %xmm0,%xmm2
cmp    $0x2,%ebx
movsd  %xmm2,0x10(%rsp)
movss  %xmm1,0xc(%rsp)
jae    11d0 <main+0x90>
test   $0x1,%r13b
je     1390 <main+0x250>
mov    %r15,%rdi
xor    %esi,%esi
mov    %ebp,%edx
movaps %xmm2,%xmm0
mov    $0x1,%al
call   1040 <printf@plt>
jmp    11fe <main+0xbe>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movaps 0x20(%rsp),%xmm0
call   1050 <fabs@plt>
movaps %xmm0,%xmm1
mov    %r12,%rdi
mov    %ebx,%esi
mov    %ebp,%edx
movsd  0x10(%rsp),%xmm0
mov    $0x2,%al
call   1040 <printf@plt>
movss  0xc(%rsp),%xmm1
movaps 0x20(%rsp),%xmm4
movaps 0x30(%rsp),%xmm2
movss  0xc47(%rip),%xmm6
movss  0xc43(%rip),%xmm0
jmp    121e <main+0xde>
lea    0xcaa(%rip),%rdi
movsd  0x10(%rsp),%xmm0
mov    $0x1,%al
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x48,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [35 x i8] c"Input the Lower and Upper Limits :\00"
@.str.1 = [5 x i8] c"%f%f\00"
@.str.2 = [79 x i8] c"-----------------------------------------------------------------------------\0A\00"
@.str.3 = [47 x i8] c"ite\09n\09I\09\09abs err\09\09(abs error - old abs error)\0A\00"
@.str.4 = [16 x i8] c"%d\09%d\09%f\09%f\09%f\0A\00"
@.str.5 = [21 x i8] c"%d\09%d\09%f\09----\09\09----\0A\00"
@.str.6 = [18 x i8] c"%d\09%d\09%f\09%f\09----\0A\00"
@.str.7 = [10 x i8] c"\0A\0AI = %f\0A\00"
define i32 @main() {
%1 = alloca i32
%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 = alloca i32
%11 = alloca i32
%12 = alloca i32
store i32 0, i32* %1
store float 0.000000e+00, float* %5
store float 0.000000e+00, float* %6
store float 0.000000e+00, float* %7
store float 0.000000e+00, float* %8
store i32 0, i32* %10
store i32 1, i32* %11
store i32 0, i32* %12
%13 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str, i64 0, i64 0))
%14 = call i32 @scanf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), float* %2, float* %3)
%15 = load float, float* %7
%16 = load float, float* %8
%17 = fsub float %15, %16
store float %17, float* %9
%18 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.2, i64 0, i64 0))
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.3, i64 0, i64 0))
%20 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.2, i64 0, i64 0))
br label %21
21: ; preds = %127, %0
%22 = load i32, i32* %12
%23 = icmp sgt i32 %22, 0
br i1 %23, label %24, label %28
24: ; preds = %21
%25 = load float, float* %9
%26 = fpext float %25 to double
%27 = fcmp olt double %26, 5.000000e-05
br label %28
28: ; preds = %24, %21
%29 = phi i1 [ false, %21 ], [ %27, %24 ]
%30 = xor i1 %29, true
br i1 %30, label %31, label %132
31: ; preds = %28
%32 = load float, float* %3
%33 = load float, float* %2
%34 = fsub float %32, %33
%35 = load i32, i32* %11
%36 = sitofp i32 %35 to float
%37 = fdiv float %34, %36
store float %37, float* %4
%38 = load float, float* %5
store float %38, float* %6
%39 = load float, float* %2
%40 = fadd float 1.000000e+00, %39
%41 = fdiv float 1.000000e+00, %40
%42 = load float, float* %3
%43 = fadd float 1.000000e+00, %42
%44 = fdiv float 1.000000e+00, %43
%45 = fadd float %41, %44
%46 = load float, float* %2
%47 = fadd float 1.000000e+00, %46
%48 = load float, float* %4
%49 = fadd float %47, %48
%50 = fdiv float 1.000000e+00, %49
%51 = call float @llvm.fmuladd.f32(float 4.000000e+00, float %50, float %45)
store float %51, float* %5
store i32 3, i32* %10
br label %52
52: ; preds = %77, %31
%53 = load i32, i32* %10
%54 = load i32, i32* %11
%55 = sub nsw i32 %54, 1
%56 = icmp sle i32 %53, %55
br i1 %56, label %57, label %80
57: ; preds = %52
%58 = load float, float* %2
%59 = fadd float 1.000000e+00, %58
%60 = load i32, i32* %10
%61 = sitofp i32 %60 to float
%62 = load float, float* %4
%63 = call float @llvm.fmuladd.f32(float %61, float %62, float %59)
%64 = fdiv float 1.000000e+00, %63
%65 = load float, float* %2
%66 = fadd float 1.000000e+00, %65
%67 = load i32, i32* %10
%68 = sub nsw i32 %67, 1
%69 = sitofp i32 %68 to float
%70 = load float, float* %4
%71 = call float @llvm.fmuladd.f32(float %69, float %70, float %66)
%72 = fdiv float 1.000000e+00, %71
%73 = fmul float 2.000000e+00, %72
%74 = call float @llvm.fmuladd.f32(float 4.000000e+00, float %64, float %73)
%75 = load float, float* %5
%76 = fadd float %75, %74
store float %76, float* %5
br label %77
77: ; preds = %57
%78 = load i32, i32* %10
%79 = add nsw i32 %78, 2
store i32 %79, i32* %10
br label %52
80: ; preds = %52
%81 = load float, float* %4
%82 = fdiv float %81, 3.000000e+00
%83 = load float, float* %5
%84 = fmul float %83, %82
store float %84, float* %5
%85 = load float, float* %7
store float %85, float* %8
%86 = load float, float* %5
%87 = load float, float* %6
%88 = fsub float %86, %87
store float %88, float* %7
%89 = load float, float* %7
%90 = call double @fabs(float %89)
%91 = load float, float* %8
%92 = call double @fabs(float %91)
%93 = fsub double %90, %92
%94 = fptrunc double %93 to float
%95 = call double @fabs(float %94)
%96 = fptrunc double %95 to float
store float %96, float* %9
%97 = load i32, i32* %12
%98 = icmp sge i32 %97, 2
br i1 %98, label %99, label %109
99: ; preds = %80
%100 = load i32, i32* %12
%101 = load i32, i32* %11
%102 = load float, float* %5
%103 = fpext float %102 to double
%104 = load float, float* %7
%105 = call double @fabs(float %104)
%106 = load float, float* %9
%107 = fpext float %106 to double
%108 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.4, i64 0, i64 0), i32 %100, i32 %101, double %103, double %105, double %107)
br label %127
109: ; preds = %80
%110 = load i32, i32* %12
%111 = icmp eq i32 %110, 0
br i1 %111, label %112, label %118
112: ; preds = %109
%113 = load i32, i32* %12
%114 = load i32, i32* %11
%115 = load float, float* %5
%116 = fpext float %115 to double
%117 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.5, i64 0, i64 0), i32 %113, i32 %114, double %116)
br label %126
118: ; preds = %109
%119 = load i32, i32* %12
%120 = load i32, i32* %11
%121 = load float, float* %5
%122 = fpext float %121 to double
%123 = load float, float* %7
%124 = call double @fabs(float %123)
%125 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.6, i64 0, i64 0), i32 %119, i32 %120, double %122, double %124)
br label %126
126: ; preds = %118, %112
br label %127
127: ; preds = %126, %99
%128 = load i32, i32* %12
%129 = add nsw i32 %128, 1
store i32 %129, i32* %12
%130 = load i32, i32* %11
%131 = add nsw i32 %130, 1
store i32 %131, i32* %11
br label %21
132: ; preds = %28
%133 = load float, float* %5
%134 = fpext float %133 to double
%135 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.7, i64 0, i64 0), double %134)
%136 = load i32, i32* %1
ret i32 %136
}

LLVM IR (-O2):
@.str = [35 x i8] c"Input the Lower and Upper Limits :\00"
@.str.1 = [5 x i8] c"%f%f\00"
@.str.4 = [16 x i8] c"%d\09%d\09%f\09%f\09%f\0A\00"
@.str.5 = [21 x i8] c"%d\09%d\09%f\09----\09\09----\0A\00"
@.str.6 = [18 x i8] c"%d\09%d\09%f\09%f\09----\0A\00"
@.str.7 = [10 x i8] c"\0A\0AI = %f\0A\00"
@str.8 = [46 x i8] c"ite\09n\09I\09\09abs err\09\09(abs error - old abs error)\00"
@str.9 = [78 x i8] c"-----------------------------------------------------------------------------\00"
define i32 @main() {
%1 = alloca float
%2 = alloca float
%3 = bitcast float* %1 to i8*
%4 = bitcast float* %2 to i8*
%5 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str, i64 0, i64 0))
%6 = call i32 @scanf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), float* %1, float* %2)
%7 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([78 x i8], [78 x i8]* @str.9, i64 0, i64 0))
%8 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @str.8, i64 0, i64 0))
%9 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([78 x i8], [78 x i8]* @str.9, i64 0, i64 0))
br label %10
10: ; preds = %0, %71
%11 = phi i1 [ true, %0 ], [ false, %71 ]
%12 = phi i32 [ 0, %0 ], [ %72, %71 ]
%13 = phi i32 [ 1, %0 ], [ %73, %71 ]
%14 = phi float [ 0.000000e+00, %0 ], [ %52, %71 ]
%15 = phi float [ 0.000000e+00, %0 ], [ %51, %71 ]
%16 = load float, float* %2
%17 = load float, float* %1
%18 = fsub float %16, %17
%19 = sitofp i32 %13 to float
%20 = fdiv float %18, %19
%21 = insertelement <2 x float> poison, float %16, i64 0
%22 = insertelement <2 x float> %21, float %17, i64 1
%23 = fadd <2 x float> %22, <float 1.000000e+00, float 1.000000e+00>
%24 = fdiv <2 x float> <float 1.000000e+00, float 1.000000e+00>, %23
%25 = shufflevector <2 x float> %24, <2 x float> poison, <2 x i32> <i32 1, i32 undef>
%26 = fadd <2 x float> %24, %25
%27 = extractelement <2 x float> %26, i64 0
%28 = extractelement <2 x float> %23, i64 1
%29 = fadd float %28, %20
%30 = fdiv float 1.000000e+00, %29
%31 = call float @llvm.fmuladd.f32(float %30, float 4.000000e+00, float %27)
%32 = icmp ugt i32 %13, 3
br i1 %32, label %33, label %48
33: ; preds = %10, %33
%34 = phi i32 [ %46, %33 ], [ 3, %10 ]
%35 = phi float [ %45, %33 ], [ %31, %10 ]
%36 = sitofp i32 %34 to float
%37 = call float @llvm.fmuladd.f32(float %36, float %20, float %28)
%38 = fdiv float 1.000000e+00, %37
%39 = add nsw i32 %34, -1
%40 = sitofp i32 %39 to float
%41 = call float @llvm.fmuladd.f32(float %40, float %20, float %28)
%42 = fdiv float 1.000000e+00, %41
%43 = fmul float %42, 2.000000e+00
%44 = call float @llvm.fmuladd.f32(float %38, float 4.000000e+00, float %43)
%45 = fadd float %35, %44
%46 = add nuw nsw i32 %34, 2
%47 = icmp ult i32 %46, %13
br i1 %47, label %33, label %48
48: ; preds = %33, %10
%49 = phi float [ %31, %10 ], [ %45, %33 ]
%50 = fdiv float %20, 3.000000e+00
%51 = fmul float %50, %49
%52 = fsub float %51, %15
%53 = call double @fabs(float %52)
%54 = call double @fabs(float %14)
%55 = fsub double %53, %54
%56 = fptrunc double %55 to float
%57 = call double @fabs(float %56)
%58 = fptrunc double %57 to float
%59 = icmp ugt i32 %12, 1
%60 = fpext float %51 to double
br i1 %59, label %61, label %65
61: ; preds = %48
%62 = call double @fabs(float %52)
%63 = fpext float %58 to double
%64 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.4, i64 0, i64 0), i32 %12, i32 %13, double %60, double %62, double %63)
br label %71
65: ; preds = %48
br i1 %11, label %66, label %68
66: ; preds = %65
%67 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.5, i64 0, i64 0), i32 0, i32 %13, double %60)
br label %71
68: ; preds = %65
%69 = call double @fabs(float %52)
%70 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.6, i64 0, i64 0), i32 %12, i32 %13, double %60, double %69)
br label %71
71: ; preds = %66, %68, %61
%72 = add nuw nsw i32 %12, 1
%73 = add nuw nsw i32 %13, 1
%74 = fpext float %58 to double
%75 = fcmp uge double %74, 5.000000e-05
br i1 %75, label %10, label %76
76: ; preds = %71
%77 = fpext float %51 to double
%78 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.7, i64 0, i64 0), double %77)
ret i32 0
}