#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 *, float, float);
int main() {
  int i;
  float I = 0, J = 1;
  for (i = 1; i <= 3; i++) {
    printf("I=%0.0f J=%0.0f\n", I, J);
    J++;
  }
  for (i = 1; i <= 3; i++) {
    printf("I=%0.1f J=%0.1f\n", I + 0.2, J - 2.8);
    J++;
  }
  for (i = 1; i <= 3; i++) {
    printf("I=%0.1f J=%0.1f\n", I + 0.4, J - 5.6);
    J++;
  }
  for (i = 1; i <= 3; i++) {
    printf("I=%0.1f J=%0.1f\n", I + 0.6, J - 8.4);
    J++;
  }
  for (i = 1; i <= 3; i++) {
    printf("I=%0.1f J=%0.1f\n", I + 0.8, J - 11.2);
    J++;
  }
  for (i = 1; i <= 3; i++) {
    printf("I=%0.0f J=%0.0f\n", I + 1, J - 14);
    J++;
  }
  for (i = 1; i <= 3; i++) {
    printf("I=%0.1f J=%0.1f\n", I + 1.2, J - 16.8);
    J++;
  }
  for (i = 1; i <= 3; i++) {
    printf("I=%0.1f J=%0.1f\n", I + 1.4, J - 19.6);
    J++;
  }
  for (i = 1; i <= 3; i++) {
    printf("I=%0.1f J=%0.1f\n", I + 1.6, J - 22.4);
    J++;
  }
  for (i = 1; i <= 3; i++) {
    printf("I=%0.1f J=%0.1f\n", I + 1.8, J - 25.2);
    J++;
  }
  for (i = 1; i <= 3; i++) {
    printf("I=%0.0f J=%0.0f\n", I + 2, J - 28);
    J++;
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0xc(%rbp)
movss  0xed1(%rip),%xmm0
movss  %xmm0,-0x10(%rbp)
movl   $0x1,-0x8(%rbp)
cmpl   $0x3,-0x8(%rbp)
jg     117b <main+0x6b>
movss  -0xc(%rbp),%xmm0
movss  -0x10(%rbp),%xmm1
lea    0xf3a(%rip),%rdi
call   1030 <printf@plt>
movss  0xe9d(%rip),%xmm0
addss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    113b <main+0x2b>
movl   $0x1,-0x8(%rbp)
cmpl   $0x3,-0x8(%rbp)
jg     11ea <main+0xda>
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xeeb(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  -0x10(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xeca(%rip),%xmm2
subsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
lea    0xedc(%rip),%rdi
call   1030 <printf@plt>
movss  0xe2e(%rip),%xmm0
addss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1182 <main+0x72>
movl   $0x1,-0x8(%rbp)
cmpl   $0x3,-0x8(%rbp)
jg     1259 <main+0x149>
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xe6c(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  -0x10(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xe4b(%rip),%xmm2
subsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
lea    0xe6d(%rip),%rdi
call   1030 <printf@plt>
movss  0xdbf(%rip),%xmm0
addss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    11f1 <main+0xe1>
movl   $0x1,-0x8(%rbp)
cmpl   $0x3,-0x8(%rbp)
jg     12c8 <main+0x1b8>
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xded(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  -0x10(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xdcc(%rip),%xmm2
subsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
lea    0xdfe(%rip),%rdi
call   1030 <printf@plt>
movss  0xd50(%rip),%xmm0
addss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1260 <main+0x150>
movl   $0x1,-0x8(%rbp)
cmpl   $0x3,-0x8(%rbp)
jg     1337 <main+0x227>
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd6e(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  -0x10(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xd4d(%rip),%xmm2
subsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
lea    0xd8f(%rip),%rdi
call   1030 <printf@plt>
movss  0xce1(%rip),%xmm0
addss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    12cf <main+0x1bf>
movl   $0x1,-0x8(%rbp)
cmpl   $0x3,-0x8(%rbp)
jg     1392 <main+0x282>
movss  0xcb0(%rip),%xmm0
addss  -0xc(%rbp),%xmm0
movss  -0x10(%rbp),%xmm1
movss  0xcaa(%rip),%xmm2
subss  %xmm2,%xmm1
lea    0xd23(%rip),%rdi
call   1030 <printf@plt>
movss  0xc86(%rip),%xmm0
addss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    133e <main+0x22e>
movl   $0x1,-0x8(%rbp)
cmpl   $0x3,-0x8(%rbp)
jg     1401 <main+0x2f1>
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xc94(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  -0x10(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xc73(%rip),%xmm2
subsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
lea    0xcc5(%rip),%rdi
call   1030 <printf@plt>
movss  0xc17(%rip),%xmm0
addss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1399 <main+0x289>
movl   $0x1,-0x8(%rbp)
cmpl   $0x3,-0x8(%rbp)
jg     1470 <main+0x360>
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xc15(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  -0x10(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xbf4(%rip),%xmm2
subsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
lea    0xc56(%rip),%rdi
call   1030 <printf@plt>
movss  0xba8(%rip),%xmm0
addss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1408 <main+0x2f8>
movl   $0x1,-0x8(%rbp)
cmpl   $0x3,-0x8(%rbp)
jg     14df <main+0x3cf>
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xb96(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  -0x10(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xb75(%rip),%xmm2
subsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
lea    0xbe7(%rip),%rdi
call   1030 <printf@plt>
movss  0xb39(%rip),%xmm0
addss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1477 <main+0x367>
movl   $0x1,-0x8(%rbp)
cmpl   $0x3,-0x8(%rbp)
jg     154e <main+0x43e>
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xb17(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  -0x10(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xaf6(%rip),%xmm2
subsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
lea    0xb78(%rip),%rdi
call   1030 <printf@plt>
movss  0xaca(%rip),%xmm0
addss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    14e6 <main+0x3d6>
movl   $0x1,-0x8(%rbp)
cmpl   $0x3,-0x8(%rbp)
jg     15a9 <main+0x499>
movss  0xaa1(%rip),%xmm0
addss  -0xc(%rbp),%xmm0
movss  -0x10(%rbp),%xmm1
movss  0xa8b(%rip),%xmm2
subss  %xmm2,%xmm1
lea    0xb0c(%rip),%rdi
call   1030 <printf@plt>
movss  0xa6f(%rip),%xmm0
addss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1555 <main+0x445>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r14
push   %rbx
push   %rax
lea    0xf49(%rip),%r14
movss  0xedd(%rip),%xmm1
xorps  %xmm0,%xmm0
mov    %r14,%rdi
call   1030 <printf@plt>
movss  0xece(%rip),%xmm1
xorps  %xmm0,%xmm0
mov    %r14,%rdi
call   1030 <printf@plt>
movss  0xebf(%rip),%xmm1
xorps  %xmm0,%xmm0
mov    %r14,%rdi
call   1030 <printf@plt>
lea    0xf1a(%rip),%rbx
movss  0xea9(%rip),%xmm0
movss  0xea5(%rip),%xmm1
mov    %rbx,%rdi
call   1030 <printf@plt>
movss  0xe99(%rip),%xmm1
mov    %rbx,%rdi
movss  0xe86(%rip),%xmm0
call   1030 <printf@plt>
movss  0xe85(%rip),%xmm1
mov    %rbx,%rdi
movss  0xe6e(%rip),%xmm0
call   1030 <printf@plt>
movss  0xe71(%rip),%xmm0
movss  0xe6d(%rip),%xmm1
mov    %rbx,%rdi
call   1030 <printf@plt>
movss  0xe61(%rip),%xmm1
mov    %rbx,%rdi
movss  0xe4e(%rip),%xmm0
call   1030 <printf@plt>
movss  0xe4d(%rip),%xmm1
mov    %rbx,%rdi
movss  0xe36(%rip),%xmm0
call   1030 <printf@plt>
movss  0xe39(%rip),%xmm0
movss  0xe35(%rip),%xmm1
mov    %rbx,%rdi
call   1030 <printf@plt>
movss  0xe29(%rip),%xmm1
mov    %rbx,%rdi
movss  0xe16(%rip),%xmm0
call   1030 <printf@plt>
movss  0xe15(%rip),%xmm1
mov    %rbx,%rdi
movss  0xdfe(%rip),%xmm0
call   1030 <printf@plt>
movss  0xe01(%rip),%xmm0
movss  0xdfd(%rip),%xmm1
mov    %rbx,%rdi
call   1030 <printf@plt>
movss  0xdf1(%rip),%xmm1
mov    %rbx,%rdi
movss  0xdde(%rip),%xmm0
call   1030 <printf@plt>
movss  0xddd(%rip),%xmm1
mov    %rbx,%rdi
movss  0xdc6(%rip),%xmm0
call   1030 <printf@plt>
mov    %r14,%rdi
movss  0xd7a(%rip),%xmm0
movss  0xd76(%rip),%xmm1
call   1030 <printf@plt>
mov    %r14,%rdi
movss  0xd62(%rip),%xmm0
movss  0xd62(%rip),%xmm1
call   1030 <printf@plt>
movss  0xd99(%rip),%xmm1
mov    %r14,%rdi
movss  0xd42(%rip),%xmm0
call   1030 <printf@plt>
mov    %rbx,%rdi
movss  0xd42(%rip),%xmm0
movss  0xd3e(%rip),%xmm1
call   1030 <printf@plt>
mov    %rbx,%rdi
movss  0xd2a(%rip),%xmm0
movss  0xd2a(%rip),%xmm1
call   1030 <printf@plt>
movss  0xd55(%rip),%xmm1
mov    %rbx,%rdi
movss  0xd0a(%rip),%xmm0
call   1030 <printf@plt>
mov    %rbx,%rdi
movss  0xd0a(%rip),%xmm0
movss  0xd06(%rip),%xmm1
call   1030 <printf@plt>
mov    %rbx,%rdi
movss  0xcf2(%rip),%xmm0
movss  0xcf2(%rip),%xmm1
call   1030 <printf@plt>
movss  0xd11(%rip),%xmm1
mov    %rbx,%rdi
movss  0xcd2(%rip),%xmm0
call   1030 <printf@plt>
mov    %rbx,%rdi
movss  0xcd2(%rip),%xmm0
movss  0xcce(%rip),%xmm1
call   1030 <printf@plt>
mov    %rbx,%rdi
movss  0xcba(%rip),%xmm0
movss  0xcba(%rip),%xmm1
call   1030 <printf@plt>
movss  0xccd(%rip),%xmm1
mov    %rbx,%rdi
movss  0xc9a(%rip),%xmm0
call   1030 <printf@plt>
mov    %rbx,%rdi
movss  0xc9a(%rip),%xmm0
movss  0xc96(%rip),%xmm1
call   1030 <printf@plt>
mov    %rbx,%rdi
movss  0xc82(%rip),%xmm0
movss  0xc82(%rip),%xmm1
call   1030 <printf@plt>
movss  0xc89(%rip),%xmm1
mov    %rbx,%rdi
movss  0xc62(%rip),%xmm0
call   1030 <printf@plt>
mov    %r14,%rdi
movss  0xc16(%rip),%xmm0
movss  0xc12(%rip),%xmm1
call   1030 <printf@plt>
mov    %r14,%rdi
movss  0xbfe(%rip),%xmm0
movss  0xc3e(%rip),%xmm1
call   1030 <printf@plt>
movss  0xc45(%rip),%xmm1
mov    %r14,%rdi
movss  0xbde(%rip),%xmm0
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
@.str = [17 x i8] c"I=%0.0f J=%0.0f\0A\00"
@.str.1 = [17 x i8] c"I=%0.1f J=%0.1f\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca float
%4 = alloca float
store i32 0, i32* %1
store float 0.000000e+00, float* %3
store float 1.000000e+00, float* %4
store i32 1, i32* %2
br label %5
5: ; preds = %14, %0
%6 = load i32, i32* %2
%7 = icmp sle i32 %6, 3
br i1 %7, label %8, label %17
8: ; preds = %5
%9 = load float, float* %3
%10 = load float, float* %4
%11 = call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str, i64 0, i64 0), float %9, float %10)
%12 = load float, float* %4
%13 = fadd float %12, 1.000000e+00
store float %13, float* %4
br label %14
14: ; preds = %8
%15 = load i32, i32* %2
%16 = add nsw i32 %15, 1
store i32 %16, i32* %2
br label %5
17: ; preds = %5
store i32 1, i32* %2
br label %18
18: ; preds = %33, %17
%19 = load i32, i32* %2
%20 = icmp sle i32 %19, 3
br i1 %20, label %21, label %36
21: ; preds = %18
%22 = load float, float* %3
%23 = fpext float %22 to double
%24 = fadd double %23, 2.000000e-01
%25 = fptrunc double %24 to float
%26 = load float, float* %4
%27 = fpext float %26 to double
%28 = fsub double %27, 2.800000e+00
%29 = fptrunc double %28 to float
%30 = call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float %25, float %29)
%31 = load float, float* %4
%32 = fadd float %31, 1.000000e+00
store float %32, float* %4
br label %33
33: ; preds = %21
%34 = load i32, i32* %2
%35 = add nsw i32 %34, 1
store i32 %35, i32* %2
br label %18
36: ; preds = %18
store i32 1, i32* %2
br label %37
37: ; preds = %52, %36
%38 = load i32, i32* %2
%39 = icmp sle i32 %38, 3
br i1 %39, label %40, label %55
40: ; preds = %37
%41 = load float, float* %3
%42 = fpext float %41 to double
%43 = fadd double %42, 4.000000e-01
%44 = fptrunc double %43 to float
%45 = load float, float* %4
%46 = fpext float %45 to double
%47 = fsub double %46, 5.600000e+00
%48 = fptrunc double %47 to float
%49 = call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float %44, float %48)
%50 = load float, float* %4
%51 = fadd float %50, 1.000000e+00
store float %51, float* %4
br label %52
52: ; preds = %40
%53 = load i32, i32* %2
%54 = add nsw i32 %53, 1
store i32 %54, i32* %2
br label %37
55: ; preds = %37
store i32 1, i32* %2
br label %56
56: ; preds = %71, %55
%57 = load i32, i32* %2
%58 = icmp sle i32 %57, 3
br i1 %58, label %59, label %74
59: ; preds = %56
%60 = load float, float* %3
%61 = fpext float %60 to double
%62 = fadd double %61, 6.000000e-01
%63 = fptrunc double %62 to float
%64 = load float, float* %4
%65 = fpext float %64 to double
%66 = fsub double %65, 8.400000e+00
%67 = fptrunc double %66 to float
%68 = call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float %63, float %67)
%69 = load float, float* %4
%70 = fadd float %69, 1.000000e+00
store float %70, float* %4
br label %71
71: ; preds = %59
%72 = load i32, i32* %2
%73 = add nsw i32 %72, 1
store i32 %73, i32* %2
br label %56
74: ; preds = %56
store i32 1, i32* %2
br label %75
75: ; preds = %90, %74
%76 = load i32, i32* %2
%77 = icmp sle i32 %76, 3
br i1 %77, label %78, label %93
78: ; preds = %75
%79 = load float, float* %3
%80 = fpext float %79 to double
%81 = fadd double %80, 8.000000e-01
%82 = fptrunc double %81 to float
%83 = load float, float* %4
%84 = fpext float %83 to double
%85 = fsub double %84, 1.120000e+01
%86 = fptrunc double %85 to float
%87 = call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float %82, float %86)
%88 = load float, float* %4
%89 = fadd float %88, 1.000000e+00
store float %89, float* %4
br label %90
90: ; preds = %78
%91 = load i32, i32* %2
%92 = add nsw i32 %91, 1
store i32 %92, i32* %2
br label %75
93: ; preds = %75
store i32 1, i32* %2
br label %94
94: ; preds = %105, %93
%95 = load i32, i32* %2
%96 = icmp sle i32 %95, 3
br i1 %96, label %97, label %108
97: ; preds = %94
%98 = load float, float* %3
%99 = fadd float %98, 1.000000e+00
%100 = load float, float* %4
%101 = fsub float %100, 1.400000e+01
%102 = call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str, i64 0, i64 0), float %99, float %101)
%103 = load float, float* %4
%104 = fadd float %103, 1.000000e+00
store float %104, float* %4
br label %105
105: ; preds = %97
%106 = load i32, i32* %2
%107 = add nsw i32 %106, 1
store i32 %107, i32* %2
br label %94
108: ; preds = %94
store i32 1, i32* %2
br label %109
109: ; preds = %124, %108
%110 = load i32, i32* %2
%111 = icmp sle i32 %110, 3
br i1 %111, label %112, label %127
112: ; preds = %109
%113 = load float, float* %3
%114 = fpext float %113 to double
%115 = fadd double %114, 1.200000e+00
%116 = fptrunc double %115 to float
%117 = load float, float* %4
%118 = fpext float %117 to double
%119 = fsub double %118, 1.680000e+01
%120 = fptrunc double %119 to float
%121 = call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float %116, float %120)
%122 = load float, float* %4
%123 = fadd float %122, 1.000000e+00
store float %123, float* %4
br label %124
124: ; preds = %112
%125 = load i32, i32* %2
%126 = add nsw i32 %125, 1
store i32 %126, i32* %2
br label %109
127: ; preds = %109
store i32 1, i32* %2
br label %128
128: ; preds = %143, %127
%129 = load i32, i32* %2
%130 = icmp sle i32 %129, 3
br i1 %130, label %131, label %146
131: ; preds = %128
%132 = load float, float* %3
%133 = fpext float %132 to double
%134 = fadd double %133, 1.400000e+00
%135 = fptrunc double %134 to float
%136 = load float, float* %4
%137 = fpext float %136 to double
%138 = fsub double %137, 1.960000e+01
%139 = fptrunc double %138 to float
%140 = call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float %135, float %139)
%141 = load float, float* %4
%142 = fadd float %141, 1.000000e+00
store float %142, float* %4
br label %143
143: ; preds = %131
%144 = load i32, i32* %2
%145 = add nsw i32 %144, 1
store i32 %145, i32* %2
br label %128
146: ; preds = %128
store i32 1, i32* %2
br label %147
147: ; preds = %162, %146
%148 = load i32, i32* %2
%149 = icmp sle i32 %148, 3
br i1 %149, label %150, label %165
150: ; preds = %147
%151 = load float, float* %3
%152 = fpext float %151 to double
%153 = fadd double %152, 1.600000e+00
%154 = fptrunc double %153 to float
%155 = load float, float* %4
%156 = fpext float %155 to double
%157 = fsub double %156, 2.240000e+01
%158 = fptrunc double %157 to float
%159 = call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float %154, float %158)
%160 = load float, float* %4
%161 = fadd float %160, 1.000000e+00
store float %161, float* %4
br label %162
162: ; preds = %150
%163 = load i32, i32* %2
%164 = add nsw i32 %163, 1
store i32 %164, i32* %2
br label %147
165: ; preds = %147
store i32 1, i32* %2
br label %166
166: ; preds = %181, %165
%167 = load i32, i32* %2
%168 = icmp sle i32 %167, 3
br i1 %168, label %169, label %184
169: ; preds = %166
%170 = load float, float* %3
%171 = fpext float %170 to double
%172 = fadd double %171, 1.800000e+00
%173 = fptrunc double %172 to float
%174 = load float, float* %4
%175 = fpext float %174 to double
%176 = fsub double %175, 2.520000e+01
%177 = fptrunc double %176 to float
%178 = call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float %173, float %177)
%179 = load float, float* %4
%180 = fadd float %179, 1.000000e+00
store float %180, float* %4
br label %181
181: ; preds = %169
%182 = load i32, i32* %2
%183 = add nsw i32 %182, 1
store i32 %183, i32* %2
br label %166
184: ; preds = %166
store i32 1, i32* %2
br label %185
185: ; preds = %196, %184
%186 = load i32, i32* %2
%187 = icmp sle i32 %186, 3
br i1 %187, label %188, label %199
188: ; preds = %185
%189 = load float, float* %3
%190 = fadd float %189, 2.000000e+00
%191 = load float, float* %4
%192 = fsub float %191, 2.800000e+01
%193 = call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str, i64 0, i64 0), float %190, float %192)
%194 = load float, float* %4
%195 = fadd float %194, 1.000000e+00
store float %195, float* %4
br label %196
196: ; preds = %188
%197 = load i32, i32* %2
%198 = add nsw i32 %197, 1
store i32 %198, i32* %2
br label %185
199: ; preds = %185
ret i32 0
}

LLVM IR (-O2):
@.str = [17 x i8] c"I=%0.0f J=%0.0f\0A\00"
@.str.1 = [17 x i8] c"I=%0.1f J=%0.1f\0A\00"
define i32 @main() {
%1 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str, i64 0, i64 0), float 0.000000e+00, float 1.000000e+00)
%2 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str, i64 0, i64 0), float 0.000000e+00, float 2.000000e+00)
%3 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str, i64 0, i64 0), float 0.000000e+00, float 3.000000e+00)
%4 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FC99999A0000000, float 0x3FF3333340000000)
%5 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FC99999A0000000, float 0x40019999A0000000)
%6 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FC99999A0000000, float 0x40099999A0000000)
%7 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FD99999A0000000, float 0x3FF6666660000000)
%8 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FD99999A0000000, float 0x4003333340000000)
%9 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FD99999A0000000, float 0x400B333340000000)
%10 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FE3333340000000, float 0x3FF99999A0000000)
%11 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FE3333340000000, float 0x4004CCCCC0000000)
%12 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FE3333340000000, float 0x400CCCCCC0000000)
%13 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FE99999A0000000, float 0x3FFCCCCCC0000000)
%14 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FE99999A0000000, float 0x4006666660000000)
%15 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FE99999A0000000, float 0x400E666660000000)
%16 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str, i64 0, i64 0), float 1.000000e+00, float 2.000000e+00)
%17 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str, i64 0, i64 0), float 1.000000e+00, float 3.000000e+00)
%18 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str, i64 0, i64 0), float 1.000000e+00, float 4.000000e+00)
%19 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FF3333340000000, float 0x40019999A0000000)
%20 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FF3333340000000, float 0x40099999A0000000)
%21 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FF3333340000000, float 0x4010CCCCC0000000)
%22 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FF6666660000000, float 0x4003333340000000)
%23 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FF6666660000000, float 0x400B333340000000)
%24 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FF6666660000000, float 0x40119999A0000000)
%25 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FF99999A0000000, float 0x4004CCCCC0000000)
%26 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FF99999A0000000, float 0x400CCCCCC0000000)
%27 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FF99999A0000000, float 0x4012666660000000)
%28 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FFCCCCCC0000000, float 0x4006666660000000)
%29 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FFCCCCCC0000000, float 0x400E666660000000)
%30 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0), float 0x3FFCCCCCC0000000, float 0x4013333340000000)
%31 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str, i64 0, i64 0), float 2.000000e+00, float 3.000000e+00)
%32 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str, i64 0, i64 0), float 2.000000e+00, float 4.000000e+00)
%33 = tail call i32 @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str, i64 0, i64 0), float 2.000000e+00, float 5.000000e+00)
ret i32 0
}