#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*/ fprintf(int /*<<< orphan*/, char *, double, ...);
int /*<<< orphan*/ stderr;
void printnumber(long double x) {
  unsigned exp = 0;
  if (x < 9.999995)
    fprintf(stderr, "%7.5f", (double)x);
  else if (x < 99.99995)
    fprintf(stderr, "%7.4f", (double)x);
  else if (x < 999.9995)
    fprintf(stderr, "%7.3f", (double)x);
  else if (x < 9999.995)
    fprintf(stderr, "%7.2f", (double)x);
  else if (x < 99999.95)
    fprintf(stderr, "%7.1f", (double)x);
  else if (x < 999999.5)
    fprintf(stderr, "%6.0f.", (double)x);
  else if (x < 9999999.5)
    fprintf(stderr, "%7.0f", (double)x);
  else if (x < 9.9995e9) {
    while (x >= 9.9995)
      exp++, x /= 10;
    fprintf(stderr, "%5.3fe%01u", (double)x, exp);
  } else if (x < 9.995e99) {
    while (x >= 9.5e6)
      exp += 6, x /= 1.e6;
    while (x >= 9.995)
      exp++, x /= 10;
    fprintf(stderr, "%4.2fe%02u", (double)x, exp);
  } else if (x < 9.95e999L) {
    while (x >= 9.5e18)
      exp += 18, x /= 1.e18;
    while (x >= 9.95)
      exp++, x /= 10;
    fprintf(stderr, "%3.1fe%03u", (double)x, exp);
  } else {
    while (x >= 9.5e48)
      exp += 48, x /= 1.e48;
    while (x >= 9.5)
      exp++, x /= 10;
    fprintf(stderr, "%1.0f.e%04u", (double)x, exp);
  }
}


x86 assembly (clang, -O0):
<printnumber>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
fldt   0x10(%rbp)
fstpt  -0x10(%rbp)
movl   $0x0,-0x14(%rbp)
fldt   -0x10(%rbp)
fldl   0xed2(%rip)
fucomip %st(1),%st
fstp   %st(0)
jbe    1164 <printnumber+0x54>
jmp    113d <printnumber+0x2d>
mov    0x2e9c(%rip),%rax
mov    (%rax),%edi
fldt   -0x10(%rbp)
fstpl  -0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
lea    0xf48(%rip),%rsi
mov    $0x1,%al
call   1030 <fprintf@plt>
jmp    1593 <printnumber+0x483>
fldt   -0x10(%rbp)
fldl   0xe9b(%rip)
fucomip %st(1),%st
fstp   %st(0)
jbe    11a3 <printnumber+0x93>
jmp    117c <printnumber+0x6c>
mov    0x2e5d(%rip),%rax
mov    (%rax),%edi
fldt   -0x10(%rbp)
fstpl  -0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
lea    0xf0f(%rip),%rsi
mov    $0x1,%al
call   1030 <fprintf@plt>
jmp    158e <printnumber+0x47e>
fldt   -0x10(%rbp)
fldl   0xe64(%rip)
fucomip %st(1),%st
fstp   %st(0)
jbe    11e2 <printnumber+0xd2>
jmp    11bb <printnumber+0xab>
mov    0x2e1e(%rip),%rax
mov    (%rax),%edi
fldt   -0x10(%rbp)
fstpl  -0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
lea    0xed6(%rip),%rsi
mov    $0x1,%al
call   1030 <fprintf@plt>
jmp    1589 <printnumber+0x479>
fldt   -0x10(%rbp)
fldl   0xe2d(%rip)
fucomip %st(1),%st
fstp   %st(0)
jbe    1221 <printnumber+0x111>
jmp    11fa <printnumber+0xea>
mov    0x2ddf(%rip),%rax
mov    (%rax),%edi
fldt   -0x10(%rbp)
fstpl  -0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
lea    0xe9d(%rip),%rsi
mov    $0x1,%al
call   1030 <fprintf@plt>
jmp    1584 <printnumber+0x474>
fldt   -0x10(%rbp)
fldl   0xdf6(%rip)
fucomip %st(1),%st
fstp   %st(0)
jbe    1260 <printnumber+0x150>
jmp    1239 <printnumber+0x129>
mov    0x2da0(%rip),%rax
mov    (%rax),%edi
fldt   -0x10(%rbp)
fstpl  -0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
lea    0xe64(%rip),%rsi
mov    $0x1,%al
call   1030 <fprintf@plt>
jmp    157f <printnumber+0x46f>
fldt   -0x10(%rbp)
flds   0xe0f(%rip)
fucomip %st(1),%st
fstp   %st(0)
jbe    129f <printnumber+0x18f>
jmp    1278 <printnumber+0x168>
mov    0x2d61(%rip),%rax
mov    (%rax),%edi
fldt   -0x10(%rbp)
fstpl  -0x48(%rbp)
movsd  -0x48(%rbp),%xmm0
lea    0xe2b(%rip),%rsi
mov    $0x1,%al
call   1030 <fprintf@plt>
jmp    157a <printnumber+0x46a>
fldt   -0x10(%rbp)
fldl   0xd80(%rip)
fucomip %st(1),%st
fstp   %st(0)
jbe    12de <printnumber+0x1ce>
jmp    12b7 <printnumber+0x1a7>
mov    0x2d22(%rip),%rax
mov    (%rax),%edi
fldt   -0x10(%rbp)
fstpl  -0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
lea    0xdf3(%rip),%rsi
mov    $0x1,%al
call   1030 <fprintf@plt>
jmp    1575 <printnumber+0x465>
fldt   -0x10(%rbp)
fldl   0xd49(%rip)
fucomip %st(1),%st
fstp   %st(0)
jbe    135b <printnumber+0x24b>
jmp    12f6 <printnumber+0x1e6>
jmp    12fb <printnumber+0x1eb>
fldt   -0x10(%rbp)
fldl   0xd6c(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jb     1331 <printnumber+0x221>
jmp    1315 <printnumber+0x205>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
fldt   -0x10(%rbp)
flds   0xd59(%rip)
fdivrp %st,%st(1)
fstpt  -0x10(%rbp)
jmp    12fb <printnumber+0x1eb>
mov    0x2ca8(%rip),%rax
mov    (%rax),%edi
fldt   -0x10(%rbp)
fstpl  -0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
mov    -0x14(%rbp),%edx
lea    0xd7c(%rip),%rsi
mov    $0x1,%al
call   1030 <fprintf@plt>
jmp    1570 <printnumber+0x460>
fldt   -0x10(%rbp)
fldl   0xcd4(%rip)
fucomip %st(1),%st
fstp   %st(0)
jbe    1413 <printnumber+0x303>
jmp    1373 <printnumber+0x263>
jmp    1378 <printnumber+0x268>
fldt   -0x10(%rbp)
flds   0xd03(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jb     13ae <printnumber+0x29e>
jmp    1392 <printnumber+0x282>
mov    -0x14(%rbp),%eax
add    $0x6,%eax
mov    %eax,-0x14(%rbp)
fldt   -0x10(%rbp)
flds   0xce4(%rip)
fdivrp %st,%st(1)
fstpt  -0x10(%rbp)
jmp    1378 <printnumber+0x268>
jmp    13b3 <printnumber+0x2a3>
fldt   -0x10(%rbp)
fldl   0xcac(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jb     13e9 <printnumber+0x2d9>
jmp    13cd <printnumber+0x2bd>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
fldt   -0x10(%rbp)
flds   0xca1(%rip)
fdivrp %st,%st(1)
fstpt  -0x10(%rbp)
jmp    13b3 <printnumber+0x2a3>
mov    0x2bf0(%rip),%rax
mov    (%rax),%edi
fldt   -0x10(%rbp)
fstpl  -0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
mov    -0x14(%rbp),%edx
lea    0xccf(%rip),%rsi
mov    $0x1,%al
call   1030 <fprintf@plt>
jmp    156b <printnumber+0x45b>
fldt   -0x10(%rbp)
fldt   0xc74(%rip)
fucomip %st(1),%st
fstp   %st(0)
jbe    14cb <printnumber+0x3bb>
jmp    142b <printnumber+0x31b>
jmp    1430 <printnumber+0x320>
fldt   -0x10(%rbp)
fldl   0xc17(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jb     1466 <printnumber+0x356>
jmp    144a <printnumber+0x33a>
mov    -0x14(%rbp),%eax
add    $0x12,%eax
mov    %eax,-0x14(%rbp)
fldt   -0x10(%rbp)
fldl   0xc04(%rip)
fdivrp %st,%st(1)
fstpt  -0x10(%rbp)
jmp    1430 <printnumber+0x320>
jmp    146b <printnumber+0x35b>
fldt   -0x10(%rbp)
fldl   0xbe4(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jb     14a1 <printnumber+0x391>
jmp    1485 <printnumber+0x375>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
fldt   -0x10(%rbp)
flds   0xbe9(%rip)
fdivrp %st,%st(1)
fstpt  -0x10(%rbp)
jmp    146b <printnumber+0x35b>
mov    0x2b38(%rip),%rax
mov    (%rax),%edi
fldt   -0x10(%rbp)
fstpl  -0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
mov    -0x14(%rbp),%edx
lea    0xc22(%rip),%rsi
mov    $0x1,%al
call   1030 <fprintf@plt>
jmp    1566 <printnumber+0x456>
jmp    14d0 <printnumber+0x3c0>
fldt   -0x10(%rbp)
fldl   0xb67(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jb     1506 <printnumber+0x3f6>
jmp    14ea <printnumber+0x3da>
mov    -0x14(%rbp),%eax
add    $0x30,%eax
mov    %eax,-0x14(%rbp)
fldt   -0x10(%rbp)
fldl   0xb4c(%rip)
fdivrp %st,%st(1)
fstpt  -0x10(%rbp)
jmp    14d0 <printnumber+0x3c0>
jmp    150b <printnumber+0x3fb>
fldt   -0x10(%rbp)
flds   0xb68(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jb     1541 <printnumber+0x431>
jmp    1525 <printnumber+0x415>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
fldt   -0x10(%rbp)
flds   0xb49(%rip)
fdivrp %st,%st(1)
fstpt  -0x10(%rbp)
jmp    150b <printnumber+0x3fb>
mov    0x2a98(%rip),%rax
mov    (%rax),%edi
fldt   -0x10(%rbp)
fstpl  -0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
mov    -0x14(%rbp),%edx
lea    0xb8d(%rip),%rsi
mov    $0x1,%al
call   1030 <fprintf@plt>
jmp    156b <printnumber+0x45b>
jmp    1570 <printnumber+0x460>
jmp    1575 <printnumber+0x465>
jmp    157a <printnumber+0x46a>
jmp    157f <printnumber+0x46f>
jmp    1584 <printnumber+0x474>
jmp    1589 <printnumber+0x479>
jmp    158e <printnumber+0x47e>
jmp    1593 <printnumber+0x483>
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<printnumber>:
fldt   0x8(%rsp)
fldl   0xee6(%rip)
fucomip %st(1),%st
jbe    113f <printnumber+0x2f>
mov    0x2ebb(%rip),%rax
mov    (%rax),%edi
fstpl  -0x58(%rsp)
movsd  -0x58(%rsp),%xmm0
lea    0xf68(%rip),%rsi
mov    $0x1,%al
jmp    1030 <fprintf@plt>
fldl   0xec3(%rip)
fucomip %st(1),%st
jbe    116a <printnumber+0x5a>
mov    0x2e90(%rip),%rax
mov    (%rax),%edi
fstpl  -0x50(%rsp)
movsd  -0x50(%rsp),%xmm0
lea    0xf43(%rip),%rsi
mov    $0x1,%al
jmp    1030 <fprintf@plt>
fldl   0xea0(%rip)
fucomip %st(1),%st
jbe    1195 <printnumber+0x85>
mov    0x2e65(%rip),%rax
mov    (%rax),%edi
fstpl  -0x48(%rsp)
movsd  -0x48(%rsp),%xmm0
lea    0xf1e(%rip),%rsi
mov    $0x1,%al
jmp    1030 <fprintf@plt>
fldl   0xe7d(%rip)
fucomip %st(1),%st
jbe    11c0 <printnumber+0xb0>
mov    0x2e3a(%rip),%rax
mov    (%rax),%edi
fstpl  -0x40(%rsp)
movsd  -0x40(%rsp),%xmm0
lea    0xef9(%rip),%rsi
mov    $0x1,%al
jmp    1030 <fprintf@plt>
fldl   0xe5a(%rip)
fucomip %st(1),%st
jbe    11eb <printnumber+0xdb>
mov    0x2e0f(%rip),%rax
mov    (%rax),%edi
fstpl  -0x38(%rsp)
movsd  -0x38(%rsp),%xmm0
lea    0xed4(%rip),%rsi
mov    $0x1,%al
jmp    1030 <fprintf@plt>
flds   0xe87(%rip)
fucomip %st(1),%st
jbe    1216 <printnumber+0x106>
mov    0x2de4(%rip),%rax
mov    (%rax),%edi
fstpl  -0x30(%rsp)
movsd  -0x30(%rsp),%xmm0
lea    0xeaf(%rip),%rsi
mov    $0x1,%al
jmp    1030 <fprintf@plt>
fldl   0xe0c(%rip)
fucomip %st(1),%st
jbe    1241 <printnumber+0x131>
mov    0x2db9(%rip),%rax
mov    (%rax),%edi
fstpl  -0x28(%rsp)
movsd  -0x28(%rsp),%xmm0
lea    0xe8b(%rip),%rsi
mov    $0x1,%al
jmp    1030 <fprintf@plt>
fldl   0xde9(%rip)
fucomip %st(1),%st
jbe    125f <printnumber+0x14f>
xor    %edx,%edx
fldl   0xe1d(%rip)
fxch   %st(1)
fucomi %st(1),%st
jae    127d <printnumber+0x16d>
fstp   %st(1)
fldz
jmp    1292 <printnumber+0x182>
fldl   0xdd3(%rip)
fucomip %st(1),%st
jbe    12b5 <printnumber+0x1a5>
xor    %edx,%edx
flds   0xe13(%rip)
fxch   %st(1)
fucomi %st(1),%st
jae    12d6 <printnumber+0x1c6>
fstp   %st(1)
fldz
jmp    12eb <printnumber+0x1db>
xor    %edx,%edx
fxch   %st(1)
add    $0x1,%edx
fxch   %st(1)
fdivs  0xdf4(%rip)
fucomi %st(1),%st
fxch   %st(1)
jae    1281 <printnumber+0x171>
fstp   %st(0)
mov    0x2d45(%rip),%rax
mov    (%rax),%edi
fstpl  -0x20(%rsp)
movsd  -0x20(%rsp),%xmm0
lea    0xe1d(%rip),%rsi
mov    $0x1,%al
jmp    1030 <fprintf@plt>
fldt   0xdd5(%rip)
fucomip %st(1),%st
jbe    12ff <printnumber+0x1ef>
xor    %edx,%edx
fldl   0xd89(%rip)
fxch   %st(1)
fucomi %st(1),%st
jae    1349 <printnumber+0x239>
fstp   %st(1)
fldz
jmp    135e <printnumber+0x24e>
xor    %edx,%edx
fxch   %st(1)
add    $0x6,%edx
fxch   %st(1)
fdivs  0xda3(%rip)
fucomi %st(1),%st
fxch   %st(1)
jae    12da <printnumber+0x1ca>
fstp   %st(0)
fldl   0xd75(%rip)
fxch   %st(1)
fucomi %st(1),%st
jae    1313 <printnumber+0x203>
fstp   %st(1)
fldz
jmp    1326 <printnumber+0x216>
xor    %edx,%edx
fldl   0xd39(%rip)
fxch   %st(1)
fucomi %st(1),%st
jae    1372 <printnumber+0x262>
fstp   %st(1)
fldz
jmp    1387 <printnumber+0x277>
fxch   %st(1)
add    $0x1,%edx
fxch   %st(1)
fdivs  0xd60(%rip)
fucomi %st(1),%st
fxch   %st(1)
jae    1315 <printnumber+0x205>
fstp   %st(0)
mov    0x2cb1(%rip),%rax
mov    (%rax),%edi
fstpl  -0x18(%rsp)
movsd  -0x18(%rsp),%xmm0
lea    0xd94(%rip),%rsi
mov    $0x1,%al
jmp    1030 <fprintf@plt>
xor    %edx,%edx
fxch   %st(1)
add    $0x12,%edx
fxch   %st(1)
fdivl  0xd00(%rip)
fucomi %st(1),%st
fxch   %st(1)
jae    134d <printnumber+0x23d>
fstp   %st(0)
fldl   0xcfa(%rip)
fxch   %st(1)
fucomi %st(1),%st
jae    139b <printnumber+0x28b>
fstp   %st(1)
fldz
jmp    13ae <printnumber+0x29e>
xor    %edx,%edx
fxch   %st(1)
add    $0x30,%edx
fxch   %st(1)
fdivl  0xcc7(%rip)
fucomi %st(1),%st
fxch   %st(1)
jae    1376 <printnumber+0x266>
fstp   %st(0)
flds   0xced(%rip)
fxch   %st(1)
fucomi %st(1),%st
jae    13d1 <printnumber+0x2c1>
fstp   %st(1)
fldz
jmp    13e4 <printnumber+0x2d4>
fxch   %st(1)
add    $0x1,%edx
fxch   %st(1)
fdivs  0xcd8(%rip)
fucomi %st(1),%st
fxch   %st(1)
jae    139d <printnumber+0x28d>
fstp   %st(0)
mov    0x2c29(%rip),%rax
mov    (%rax),%edi
fstpl  -0x10(%rsp)
movsd  -0x10(%rsp),%xmm0
lea    0xd17(%rip),%rsi
mov    $0x1,%al
jmp    1030 <fprintf@plt>
fxch   %st(1)
add    $0x1,%edx
fxch   %st(1)
fdivs  0xca2(%rip)
fucomi %st(1),%st
fxch   %st(1)
jae    13d3 <printnumber+0x2c3>
fstp   %st(0)
mov    0x2bf3(%rip),%rax
mov    (%rax),%edi
fstpl  -0x8(%rsp)
movsd  -0x8(%rsp),%xmm0
lea    0xcec(%rip),%rsi
mov    $0x1,%al
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [6 x i8] c"%7.5f\00"
@.str.1 = [6 x i8] c"%7.4f\00"
@.str.2 = [6 x i8] c"%7.3f\00"
@.str.3 = [6 x i8] c"%7.2f\00"
@.str.4 = [6 x i8] c"%7.1f\00"
@.str.5 = [7 x i8] c"%6.0f.\00"
@.str.6 = [6 x i8] c"%7.0f\00"
@.str.7 = [11 x i8] c"%5.3fe%01u\00"
@.str.8 = [11 x i8] c"%4.2fe%02u\00"
@.str.9 = [11 x i8] c"%3.1fe%03u\00"
@.str.10 = [12 x i8] c"%1.0f.e%04u\00"
define void @printnumber(x86_fp80 %0) {
%2 = alloca x86_fp80
%3 = alloca i32
store x86_fp80 %0, x86_fp80* %2
store i32 0, i32* %3
%4 = load x86_fp80, x86_fp80* %2
%5 = fcmp olt x86_fp80 %4, 0xK40029FFFFAC1D29DC800
br i1 %5, label %6, label %11
6: ; preds = %1
%7 = load i32, i32* @stderr
%8 = load x86_fp80, x86_fp80* %2
%9 = fptrunc x86_fp80 %8 to double
%10 = call i32 (i32, i8*, double, ...) @fprintf(i32 %7, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0), double %9)
br label %164
11: ; preds = %1
%12 = load x86_fp80, x86_fp80* %2
%13 = fcmp olt x86_fp80 %12, 0xK4005C7FFF97247453800
br i1 %13, label %14, label %19
14: ; preds = %11
%15 = load i32, i32* @stderr
%16 = load x86_fp80, x86_fp80* %2
%17 = fptrunc x86_fp80 %16 to double
%18 = call i32 (i32, i8*, double, ...) @fprintf(i32 %15, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), double %17)
br label %163
19: ; preds = %11
%20 = load x86_fp80, x86_fp80* %2
%21 = fcmp olt x86_fp80 %20, 0xK4008F9FFF7CED9168800
br i1 %21, label %22, label %27
22: ; preds = %19
%23 = load i32, i32* @stderr
%24 = load x86_fp80, x86_fp80* %2
%25 = fptrunc x86_fp80 %24 to double
%26 = call i32 (i32, i8*, double, ...) @fprintf(i32 %23, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), double %25)
br label %162
27: ; preds = %19
%28 = load x86_fp80, x86_fp80* %2
%29 = fcmp olt x86_fp80 %28, 0xK400C9C3FFAE147AE1800
br i1 %29, label %30, label %35
30: ; preds = %27
%31 = load i32, i32* @stderr
%32 = load x86_fp80, x86_fp80* %2
%33 = fptrunc x86_fp80 %32 to double
%34 = call i32 (i32, i8*, double, ...) @fprintf(i32 %31, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0), double %33)
br label %161
35: ; preds = %27
%36 = load x86_fp80, x86_fp80* %2
%37 = fcmp olt x86_fp80 %36, 0xK400FC34FF99999999800
br i1 %37, label %38, label %43
38: ; preds = %35
%39 = load i32, i32* @stderr
%40 = load x86_fp80, x86_fp80* %2
%41 = fptrunc x86_fp80 %40 to double
%42 = call i32 (i32, i8*, double, ...) @fprintf(i32 %39, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0), double %41)
br label %160
43: ; preds = %35
%44 = load x86_fp80, x86_fp80* %2
%45 = fcmp olt x86_fp80 %44, 0xK4012F423F80000000000
br i1 %45, label %46, label %51
46: ; preds = %43
%47 = load i32, i32* @stderr
%48 = load x86_fp80, x86_fp80* %2
%49 = fptrunc x86_fp80 %48 to double
%50 = call i32 (i32, i8*, double, ...) @fprintf(i32 %47, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0), double %49)
br label %159
51: ; preds = %43
%52 = load x86_fp80, x86_fp80* %2
%53 = fcmp olt x86_fp80 %52, 0xK401698967F8000000000
br i1 %53, label %54, label %59
54: ; preds = %51
%55 = load i32, i32* @stderr
%56 = load x86_fp80, x86_fp80* %2
%57 = fptrunc x86_fp80 %56 to double
%58 = call i32 (i32, i8*, double, ...) @fprintf(i32 %55, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0), double %57)
br label %158
59: ; preds = %51
%60 = load x86_fp80, x86_fp80* %2
%61 = fcmp olt x86_fp80 %60, 0xK4020950110B800000000
br i1 %61, label %62, label %77
62: ; preds = %59
br label %63
63: ; preds = %66, %62
%64 = load x86_fp80, x86_fp80* %2
%65 = fcmp oge x86_fp80 %64, 0xK40029FFDF3B645A1C800
br i1 %65, label %66, label %71
66: ; preds = %63
%67 = load i32, i32* %3
%68 = add i32 %67, 1
store i32 %68, i32* %3
%69 = load x86_fp80, x86_fp80* %2
%70 = fdiv x86_fp80 %69, 0xK4002A000000000000000
store x86_fp80 %70, x86_fp80* %2
br label %63
71: ; preds = %63
%72 = load i32, i32* @stderr
%73 = load x86_fp80, x86_fp80* %2
%74 = fptrunc x86_fp80 %73 to double
%75 = load i32, i32* %3
%76 = call i32 (i32, i8*, double, ...) @fprintf(i32 %72, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.7, i64 0, i64 0), double %74, i32 %75)
br label %157
77: ; preds = %59
%78 = load x86_fp80, x86_fp80* %2
%79 = fcmp olt x86_fp80 %78, 0xK414B923AAF2348547800
br i1 %79, label %80, label %104
80: ; preds = %77
br label %81
81: ; preds = %84, %80
%82 = load x86_fp80, x86_fp80* %2
%83 = fcmp oge x86_fp80 %82, 0xK401690F5600000000000
br i1 %83, label %84, label %89
84: ; preds = %81
%85 = load i32, i32* %3
%86 = add i32 %85, 6
store i32 %86, i32* %3
%87 = load x86_fp80, x86_fp80* %2
%88 = fdiv x86_fp80 %87, 0xK4012F424000000000000
store x86_fp80 %88, x86_fp80* %2
br label %81
89: ; preds = %81
br label %90
90: ; preds = %93, %89
%91 = load x86_fp80, x86_fp80* %2
%92 = fcmp oge x86_fp80 %91, 0xK40029FEB851EB851E800
br i1 %92, label %93, label %98
93: ; preds = %90
%94 = load i32, i32* %3
%95 = add i32 %94, 1
store i32 %95, i32* %3
%96 = load x86_fp80, x86_fp80* %2
%97 = fdiv x86_fp80 %96, 0xK4002A000000000000000
store x86_fp80 %97, x86_fp80* %2
br label %90
98: ; preds = %90
%99 = load i32, i32* @stderr
%100 = load x86_fp80, x86_fp80* %2
%101 = fptrunc x86_fp80 %100 to double
%102 = load i32, i32* %3
%103 = call i32 (i32, i8*, double, ...) @fprintf(i32 %99, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.8, i64 0, i64 0), double %101, i32 %102)
br label %156
104: ; preds = %77
%105 = load x86_fp80, x86_fp80* %2
%106 = fcmp olt x86_fp80 %105, 0xK4CF8F255F25DBC227BCD
br i1 %106, label %107, label %131
107: ; preds = %104
br label %108
108: ; preds = %111, %107
%109 = load x86_fp80, x86_fp80* %2
%110 = fcmp oge x86_fp80 %109, 0xK403E83D6C7AAB6360000
br i1 %110, label %111, label %116
111: ; preds = %108
%112 = load i32, i32* %3
%113 = add i32 %112, 18
store i32 %113, i32* %3
%114 = load x86_fp80, x86_fp80* %2
%115 = fdiv x86_fp80 %114, 0xK403ADE0B6B3A76400000
store x86_fp80 %115, x86_fp80* %2
br label %108
116: ; preds = %108
br label %117
117: ; preds = %120, %116
%118 = load x86_fp80, x86_fp80* %2
%119 = fcmp oge x86_fp80 %118, 0xK40029F33333333333000
br i1 %119, label %120, label %125
120: ; preds = %117
%121 = load i32, i32* %3
%122 = add i32 %121, 1
store i32 %122, i32* %3
%123 = load x86_fp80, x86_fp80* %2
%124 = fdiv x86_fp80 %123, 0xK4002A000000000000000
store x86_fp80 %124, x86_fp80* %2
br label %117
125: ; preds = %117
%126 = load i32, i32* @stderr
%127 = load x86_fp80, x86_fp80* %2
%128 = fptrunc x86_fp80 %127 to double
%129 = load i32, i32* %3
%130 = call i32 (i32, i8*, double, ...) @fprintf(i32 %126, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.9, i64 0, i64 0), double %128, i32 %129)
br label %155
131: ; preds = %104
br label %132
132: ; preds = %135, %131
%133 = load x86_fp80, x86_fp80* %2
%134 = fcmp oge x86_fp80 %133, 0xK40A1D001577600F04000
br i1 %134, label %135, label %140
135: ; preds = %132
%136 = load i32, i32* %3
%137 = add i32 %136, 48
store i32 %137, i32* %3
%138 = load x86_fp80, x86_fp80* %2
%139 = fdiv x86_fp80 %138, 0xK409EAF298D050E439800
store x86_fp80 %139, x86_fp80* %2
br label %132
140: ; preds = %132
br label %141
141: ; preds = %144, %140
%142 = load x86_fp80, x86_fp80* %2
%143 = fcmp oge x86_fp80 %142, 0xK40029800000000000000
br i1 %143, label %144, label %149
144: ; preds = %141
%145 = load i32, i32* %3
%146 = add i32 %145, 1
store i32 %146, i32* %3
%147 = load x86_fp80, x86_fp80* %2
%148 = fdiv x86_fp80 %147, 0xK4002A000000000000000
store x86_fp80 %148, x86_fp80* %2
br label %141
149: ; preds = %141
%150 = load i32, i32* @stderr
%151 = load x86_fp80, x86_fp80* %2
%152 = fptrunc x86_fp80 %151 to double
%153 = load i32, i32* %3
%154 = call i32 (i32, i8*, double, ...) @fprintf(i32 %150, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.10, i64 0, i64 0), double %152, i32 %153)
br label %155
155: ; preds = %149, %125
br label %156
156: ; preds = %155, %98
br label %157
157: ; preds = %156, %71
br label %158
158: ; preds = %157, %54
br label %159
159: ; preds = %158, %46
br label %160
160: ; preds = %159, %38
br label %161
161: ; preds = %160, %30
br label %162
162: ; preds = %161, %22
br label %163
163: ; preds = %162, %14
br label %164
164: ; preds = %163, %6
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [6 x i8] c"%7.5f\00"
@.str.1 = [6 x i8] c"%7.4f\00"
@.str.2 = [6 x i8] c"%7.3f\00"
@.str.3 = [6 x i8] c"%7.2f\00"
@.str.4 = [6 x i8] c"%7.1f\00"
@.str.5 = [7 x i8] c"%6.0f.\00"
@.str.6 = [6 x i8] c"%7.0f\00"
@.str.7 = [11 x i8] c"%5.3fe%01u\00"
@.str.8 = [11 x i8] c"%4.2fe%02u\00"
@.str.9 = [11 x i8] c"%3.1fe%03u\00"
@.str.10 = [12 x i8] c"%1.0f.e%04u\00"
define void @printnumber(x86_fp80 %0) {
%2 = fcmp olt x86_fp80 %0, 0xK40029FFFFAC1D29DC800
br i1 %2, label %3, label %7
3: ; preds = %1
%4 = load i32, i32* @stderr
%5 = fptrunc x86_fp80 %0 to double
%6 = tail call i32 (i32, i8*, double, ...) @fprintf(i32 %4, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0), double %5)
br label %135
7: ; preds = %1
%8 = fcmp olt x86_fp80 %0, 0xK4005C7FFF97247453800
br i1 %8, label %9, label %13
9: ; preds = %7
%10 = load i32, i32* @stderr
%11 = fptrunc x86_fp80 %0 to double
%12 = tail call i32 (i32, i8*, double, ...) @fprintf(i32 %10, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), double %11)
br label %135
13: ; preds = %7
%14 = fcmp olt x86_fp80 %0, 0xK4008F9FFF7CED9168800
br i1 %14, label %15, label %19
15: ; preds = %13
%16 = load i32, i32* @stderr
%17 = fptrunc x86_fp80 %0 to double
%18 = tail call i32 (i32, i8*, double, ...) @fprintf(i32 %16, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), double %17)
br label %135
19: ; preds = %13
%20 = fcmp olt x86_fp80 %0, 0xK400C9C3FFAE147AE1800
br i1 %20, label %21, label %25
21: ; preds = %19
%22 = load i32, i32* @stderr
%23 = fptrunc x86_fp80 %0 to double
%24 = tail call i32 (i32, i8*, double, ...) @fprintf(i32 %22, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0), double %23)
br label %135
25: ; preds = %19
%26 = fcmp olt x86_fp80 %0, 0xK400FC34FF99999999800
br i1 %26, label %27, label %31
27: ; preds = %25
%28 = load i32, i32* @stderr
%29 = fptrunc x86_fp80 %0 to double
%30 = tail call i32 (i32, i8*, double, ...) @fprintf(i32 %28, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0), double %29)
br label %135
31: ; preds = %25
%32 = fcmp olt x86_fp80 %0, 0xK4012F423F80000000000
br i1 %32, label %33, label %37
33: ; preds = %31
%34 = load i32, i32* @stderr
%35 = fptrunc x86_fp80 %0 to double
%36 = tail call i32 (i32, i8*, double, ...) @fprintf(i32 %34, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0), double %35)
br label %135
37: ; preds = %31
%38 = fcmp olt x86_fp80 %0, 0xK401698967F8000000000
br i1 %38, label %39, label %43
39: ; preds = %37
%40 = load i32, i32* @stderr
%41 = fptrunc x86_fp80 %0 to double
%42 = tail call i32 (i32, i8*, double, ...) @fprintf(i32 %40, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0), double %41)
br label %135
43: ; preds = %37
%44 = fcmp olt x86_fp80 %0, 0xK4020950110B800000000
br i1 %44, label %45, label %59
45: ; preds = %43
%46 = fcmp ult x86_fp80 %0, 0xK40029FFDF3B645A1C800
br i1 %46, label %53, label %47
47: ; preds = %45, %47
%48 = phi i32 [ %50, %47 ], [ 0, %45 ]
%49 = phi x86_fp80 [ %51, %47 ], [ %0, %45 ]
%50 = add i32 %48, 1
%51 = fdiv x86_fp80 %49, 0xK4002A000000000000000
%52 = fcmp ult x86_fp80 %51, 0xK40029FFDF3B645A1C800
br i1 %52, label %53, label %47
53: ; preds = %47, %45
%54 = phi x86_fp80 [ %0, %45 ], [ %51, %47 ]
%55 = phi i32 [ 0, %45 ], [ %50, %47 ]
%56 = load i32, i32* @stderr
%57 = fptrunc x86_fp80 %54 to double
%58 = tail call i32 (i32, i8*, double, ...) @fprintf(i32 %56, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.7, i64 0, i64 0), double %57, i32 %55)
br label %135
59: ; preds = %43
%60 = fcmp olt x86_fp80 %0, 0xK414B923AAF2348547800
br i1 %60, label %61, label %85
61: ; preds = %59
%62 = fcmp ult x86_fp80 %0, 0xK401690F5600000000000
br i1 %62, label %63, label %67
63: ; preds = %67, %61
%64 = phi x86_fp80 [ %0, %61 ], [ %71, %67 ]
%65 = phi i32 [ 0, %61 ], [ %70, %67 ]
%66 = fcmp ult x86_fp80 %64, 0xK40029FEB851EB851E800
br i1 %66, label %79, label %73
67: ; preds = %61, %67
%68 = phi i32 [ %70, %67 ], [ 0, %61 ]
%69 = phi x86_fp80 [ %71, %67 ], [ %0, %61 ]
%70 = add i32 %68, 6
%71 = fdiv x86_fp80 %69, 0xK4012F424000000000000
%72 = fcmp ult x86_fp80 %71, 0xK401690F5600000000000
br i1 %72, label %63, label %67
73: ; preds = %63, %73
%74 = phi i32 [ %76, %73 ], [ %65, %63 ]
%75 = phi x86_fp80 [ %77, %73 ], [ %64, %63 ]
%76 = add i32 %74, 1
%77 = fdiv x86_fp80 %75, 0xK4002A000000000000000
%78 = fcmp ult x86_fp80 %77, 0xK40029FEB851EB851E800
br i1 %78, label %79, label %73
79: ; preds = %73, %63
%80 = phi x86_fp80 [ %64, %63 ], [ %77, %73 ]
%81 = phi i32 [ %65, %63 ], [ %76, %73 ]
%82 = load i32, i32* @stderr
%83 = fptrunc x86_fp80 %80 to double
%84 = tail call i32 (i32, i8*, double, ...) @fprintf(i32 %82, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.8, i64 0, i64 0), double %83, i32 %81)
br label %135
85: ; preds = %59
%86 = fcmp olt x86_fp80 %0, 0xK4CF8F255F25DBC227BCD
br i1 %86, label %89, label %87
87: ; preds = %85
%88 = fcmp ult x86_fp80 %0, 0xK40A1D001577600F04000
br i1 %88, label %113, label %117
89: ; preds = %85
%90 = fcmp ult x86_fp80 %0, 0xK403E83D6C7AAB6360000
br i1 %90, label %91, label %95
91: ; preds = %95, %89
%92 = phi x86_fp80 [ %0, %89 ], [ %99, %95 ]
%93 = phi i32 [ 0, %89 ], [ %98, %95 ]
%94 = fcmp ult x86_fp80 %92, 0xK40029F33333333333000
br i1 %94, label %107, label %101
95: ; preds = %89, %95
%96 = phi i32 [ %98, %95 ], [ 0, %89 ]
%97 = phi x86_fp80 [ %99, %95 ], [ %0, %89 ]
%98 = add i32 %96, 18
%99 = fdiv x86_fp80 %97, 0xK403ADE0B6B3A76400000
%100 = fcmp ult x86_fp80 %99, 0xK403E83D6C7AAB6360000
br i1 %100, label %91, label %95
101: ; preds = %91, %101
%102 = phi i32 [ %104, %101 ], [ %93, %91 ]
%103 = phi x86_fp80 [ %105, %101 ], [ %92, %91 ]
%104 = add i32 %102, 1
%105 = fdiv x86_fp80 %103, 0xK4002A000000000000000
%106 = fcmp ult x86_fp80 %105, 0xK40029F33333333333000
br i1 %106, label %107, label %101
107: ; preds = %101, %91
%108 = phi x86_fp80 [ %92, %91 ], [ %105, %101 ]
%109 = phi i32 [ %93, %91 ], [ %104, %101 ]
%110 = load i32, i32* @stderr
%111 = fptrunc x86_fp80 %108 to double
%112 = tail call i32 (i32, i8*, double, ...) @fprintf(i32 %110, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.9, i64 0, i64 0), double %111, i32 %109)
br label %135
113: ; preds = %117, %87
%114 = phi x86_fp80 [ %0, %87 ], [ %121, %117 ]
%115 = phi i32 [ 0, %87 ], [ %120, %117 ]
%116 = fcmp ult x86_fp80 %114, 0xK40029800000000000000
br i1 %116, label %129, label %123
117: ; preds = %87, %117
%118 = phi i32 [ %120, %117 ], [ 0, %87 ]
%119 = phi x86_fp80 [ %121, %117 ], [ %0, %87 ]
%120 = add i32 %118, 48
%121 = fdiv x86_fp80 %119, 0xK409EAF298D050E439800
%122 = fcmp ult x86_fp80 %121, 0xK40A1D001577600F04000
br i1 %122, label %113, label %117
123: ; preds = %113, %123
%124 = phi i32 [ %126, %123 ], [ %115, %113 ]
%125 = phi x86_fp80 [ %127, %123 ], [ %114, %113 ]
%126 = add i32 %124, 1
%127 = fdiv x86_fp80 %125, 0xK4002A000000000000000
%128 = fcmp ult x86_fp80 %127, 0xK40029800000000000000
br i1 %128, label %129, label %123
129: ; preds = %123, %113
%130 = phi x86_fp80 [ %114, %113 ], [ %127, %123 ]
%131 = phi i32 [ %115, %113 ], [ %126, %123 ]
%132 = load i32, i32* @stderr
%133 = fptrunc x86_fp80 %130 to double
%134 = tail call i32 (i32, i8*, double, ...) @fprintf(i32 %132, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.10, i64 0, i64 0), double %133, i32 %131)
br label %135
135: ; preds = %9, %21, %33, %53, %107, %129, %79, %39, %27, %15, %3
ret void
}