#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 EXIT_SUCCESS;
double M_PI;
double M_SQRT1_2;
double M_SQRT2;
double err_bound(int, double, double, double);
scalar_t__ f(double);
double fabs(scalar_t__);
int /*<<< orphan*/ printf(char *, int, double, double);
scalar_t__ sinc_approx(int, double, double, double);
int main() {
  int i, N;
  double K = 1.5;
  double d = M_PI / 6.0;
  double mu = 2.0;
  double s, t;
  double err, maxerr;
  for (N = 2; N <= 95; N += 5) {
    t = 0;
    maxerr = fabs(f(t) - sinc_approx(N, d, mu, t));
    s = 1;
    t = 1;
    err = fabs(f(t) - sinc_approx(N, d, mu, t));
    if (maxerr < err)
      maxerr = err;
    err = fabs(f(-t) - sinc_approx(N, d, mu, -t));
    if (maxerr < err)
      maxerr = err;
    for (i = 1; i <= 100; i++) {
      s *= M_SQRT1_2;
      t *= M_SQRT2;
      err = fabs(f(s) - sinc_approx(N, d, mu, s));
      if (maxerr < err)
        maxerr = err;
      err = fabs(f(-s) - sinc_approx(N, d, mu, -s));
      if (maxerr < err)
        maxerr = err;
      err = fabs(f(t) - sinc_approx(N, d, mu, t));
      if (maxerr < err)
        maxerr = err;
      err = fabs(f(-t) - sinc_approx(N, d, mu, -t));
      if (maxerr < err)
        maxerr = err;
    }
    printf("%d\t%e\t%e\n", N, maxerr, err_bound(N, K, d, mu));
  }
  return EXIT_SUCCESS;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
movl   $0x0,-0x4(%rbp)
movsd  0xea6(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    0x2e72(%rip),%rax
movsd  (%rax),%xmm0
movsd  0xe86(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xe6d(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movl   $0x2,-0xc(%rbp)
cmpl   $0x5f,-0xc(%rbp)
jg     1529 <main+0x3d9>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
call   1030 <f@plt>
mov    %rax,-0x58(%rbp)
mov    -0xc(%rbp),%edi
movsd  -0x20(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
call   1070 <sinc_approx@plt>
mov    -0x58(%rbp),%rdi
sub    %rax,%rdi
call   1050 <fabs@plt>
movsd  %xmm0,-0x48(%rbp)
movsd  0xe29(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xe1c(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
call   1030 <f@plt>
mov    %rax,-0x50(%rbp)
mov    -0xc(%rbp),%edi
movsd  -0x20(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
call   1070 <sinc_approx@plt>
mov    -0x50(%rbp),%rdi
sub    %rax,%rdi
call   1050 <fabs@plt>
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1255 <main+0x105>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <f@plt>
mov    %rax,-0x60(%rbp)
mov    -0xc(%rbp),%edi
movsd  -0x20(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
call   1070 <sinc_approx@plt>
mov    -0x60(%rbp),%rdi
sub    %rax,%rdi
call   1050 <fabs@plt>
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    12d7 <main+0x187>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movl   $0x1,-0x8(%rbp)
cmpl   $0x64,-0x8(%rbp)
jg     14d1 <main+0x381>
mov    0x2ce1(%rip),%rax
movsd  (%rax),%xmm0
mulsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    0x2cd4(%rip),%rax
movsd  (%rax),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x30(%rbp),%xmm0
call   1030 <f@plt>
mov    %rax,-0x68(%rbp)
mov    -0xc(%rbp),%edi
movsd  -0x20(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
movsd  -0x30(%rbp),%xmm2
call   1070 <sinc_approx@plt>
mov    -0x68(%rbp),%rdi
sub    %rax,%rdi
call   1050 <fabs@plt>
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1366 <main+0x216>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x30(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <f@plt>
mov    %rax,-0x70(%rbp)
mov    -0xc(%rbp),%edi
movsd  -0x20(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
movsd  -0x30(%rbp),%xmm2
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
call   1070 <sinc_approx@plt>
mov    -0x70(%rbp),%rdi
sub    %rax,%rdi
call   1050 <fabs@plt>
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    13e8 <main+0x298>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x38(%rbp),%xmm0
call   1030 <f@plt>
mov    %rax,-0x78(%rbp)
mov    -0xc(%rbp),%edi
movsd  -0x20(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
call   1070 <sinc_approx@plt>
mov    -0x78(%rbp),%rdi
sub    %rax,%rdi
call   1050 <fabs@plt>
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    143c <main+0x2ec>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <f@plt>
mov    %rax,-0x80(%rbp)
mov    -0xc(%rbp),%edi
movsd  -0x20(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
call   1070 <sinc_approx@plt>
mov    -0x80(%rbp),%rdi
sub    %rax,%rdi
call   1050 <fabs@plt>
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    14be <main+0x36e>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
jmp    14c3 <main+0x373>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    12de <main+0x18e>
mov    -0xc(%rbp),%eax
mov    %eax,-0x8c(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0xc(%rbp),%edi
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm2
call   1060 <err_bound@plt>
mov    -0x8c(%rbp),%esi
movaps %xmm0,%xmm1
movsd  -0x88(%rbp),%xmm0
ff
lea    0xb0a(%rip),%rdi
call   1040 <printf@plt>
mov    -0xc(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0xc(%rbp)
jmp    119f <main+0x4f>
mov    0x2a98(%rip),%rax
mov    (%rax),%eax
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
mov    0x2e83(%rip),%rax
movsd  (%rax),%xmm0
divsd  0xe8f(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
mov    $0x2,%r12d
mov    0x2e4c(%rip),%r13
mov    0x2e4d(%rip),%r14
nopl   0x0(%rax,%rax,1)
xorpd  %xmm0,%xmm0
call   1030 <f@plt>
mov    %rax,%r15
xorps  %xmm2,%xmm2
mov    %r12d,%edi
movsd  0x8(%rsp),%xmm0
movsd  0xe58(%rip),%xmm1
call   1070 <sinc_approx@plt>
sub    %rax,%r15
mov    %r15,%rdi
call   1050 <fabs@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0xe42(%rip),%xmm0
call   1030 <f@plt>
mov    %rax,%r15
mov    %r12d,%edi
movsd  0x8(%rsp),%xmm0
movsd  0xe21(%rip),%xmm1
movsd  0xe21(%rip),%xmm2
call   1070 <sinc_approx@plt>
sub    %rax,%r15
mov    %r15,%rdi
call   1050 <fabs@plt>
maxsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0xe05(%rip),%xmm0
call   1030 <f@plt>
mov    %rax,%r15
mov    %r12d,%edi
movsd  0x8(%rsp),%xmm0
movsd  0xddc(%rip),%xmm1
movsd  0xde4(%rip),%xmm2
call   1070 <sinc_approx@plt>
sub    %rax,%r15
mov    %r15,%rdi
call   1050 <fabs@plt>
maxsd  0x10(%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    $0x64,%ebp
movsd  0xdb4(%rip),%xmm1
movaps %xmm1,%xmm0
movaps %xmm1,0x10(%rsp)
movaps %xmm1,0x20(%rsp)
nopl   0x0(%rax)
movapd 0x20(%rsp),%xmm1
mulsd  0x0(%r13),%xmm1
movapd %xmm1,0x20(%rsp)
movapd 0x10(%rsp),%xmm0
mulsd  (%r14),%xmm0
movapd %xmm0,0x10(%rsp)
movapd %xmm1,%xmm0
call   1030 <f@plt>
mov    %rax,%rbx
mov    %r12d,%edi
movsd  0x8(%rsp),%xmm0
movsd  0xd58(%rip),%xmm1
movaps 0x20(%rsp),%xmm2
call   1070 <sinc_approx@plt>
sub    %rax,%rbx
mov    %rbx,%rdi
call   1050 <fabs@plt>
maxsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
movaps 0x20(%rsp),%xmm1
movaps 0xd55(%rip),%xmm0
xorps  %xmm0,%xmm1
movaps %xmm1,0x30(%rsp)
movaps %xmm1,%xmm0
call   1030 <f@plt>
mov    %rax,%rbx
mov    %r12d,%edi
movsd  0x8(%rsp),%xmm0
movsd  0xd09(%rip),%xmm1
movaps 0x30(%rsp),%xmm2
call   1070 <sinc_approx@plt>
sub    %rax,%rbx
mov    %rbx,%rdi
call   1050 <fabs@plt>
maxsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
movaps 0x10(%rsp),%xmm0
call   1030 <f@plt>
mov    %rax,%rbx
mov    %r12d,%edi
movsd  0x8(%rsp),%xmm0
movsd  0xccc(%rip),%xmm1
movaps 0x10(%rsp),%xmm2
call   1070 <sinc_approx@plt>
sub    %rax,%rbx
mov    %rbx,%rdi
call   1050 <fabs@plt>
maxsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
movaps 0x10(%rsp),%xmm0
xorps  0xcc9(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
call   1030 <f@plt>
mov    %rax,%rbx
mov    %r12d,%edi
movsd  0x8(%rsp),%xmm0
movsd  0xc83(%rip),%xmm1
movaps 0x30(%rsp),%xmm2
call   1070 <sinc_approx@plt>
sub    %rax,%rbx
mov    %rbx,%rdi
call   1050 <fabs@plt>
maxsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
add    $0xffffffff,%ebp
jne    1270 <main+0x120>
mov    %r12d,%edi
movsd  0xc68(%rip),%xmm0
movsd  0x8(%rsp),%xmm1
movsd  0xc42(%rip),%xmm2
call   1060 <err_bound@plt>
movaps %xmm0,%xmm1
lea    0xc6b(%rip),%rdi
mov    %r12d,%esi
movsd  (%rsp),%xmm0
call   1040 <printf@plt>
lea    0x5(%r12),%eax
cmp    $0x5b,%r12d
mov    %eax,%r12d
jb     1190 <main+0x40>
mov    0x2bcd(%rip),%rax
mov    (%rax),%eax
add    $0x48,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@M_PI = global double 0.000000e+00
@M_SQRT1_2 = global double 0.000000e+00
@M_SQRT2 = global double 0.000000e+00
@.str = [10 x i8] c"%d\09%e\09%e\0A\00"
@EXIT_SUCCESS = global i32 0
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca double
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
store i32 0, i32* %1
store double 1.500000e+00, double* %4
%11 = load double, double* @M_PI
%12 = fdiv double %11, 6.000000e+00
store double %12, double* %5
store double 2.000000e+00, double* %6
store i32 2, i32* %3
br label %13
13: ; preds = %144, %0
%14 = load i32, i32* %3
%15 = icmp sle i32 %14, 95
br i1 %15, label %16, label %147
16: ; preds = %13
store double 0.000000e+00, double* %8
%17 = load double, double* %8
%18 = call i64 @f(double %17)
%19 = load i32, i32* %3
%20 = load double, double* %5
%21 = load double, double* %6
%22 = load double, double* %8
%23 = call i64 @sinc_approx(i32 %19, double %20, double %21, double %22)
%24 = sub nsw i64 %18, %23
%25 = call double @fabs(i64 %24)
store double %25, double* %10
store double 1.000000e+00, double* %7
store double 1.000000e+00, double* %8
%26 = load double, double* %8
%27 = call i64 @f(double %26)
%28 = load i32, i32* %3
%29 = load double, double* %5
%30 = load double, double* %6
%31 = load double, double* %8
%32 = call i64 @sinc_approx(i32 %28, double %29, double %30, double %31)
%33 = sub nsw i64 %27, %32
%34 = call double @fabs(i64 %33)
store double %34, double* %9
%35 = load double, double* %10
%36 = load double, double* %9
%37 = fcmp olt double %35, %36
br i1 %37, label %38, label %40
38: ; preds = %16
%39 = load double, double* %9
store double %39, double* %10
br label %40
40: ; preds = %38, %16
%41 = load double, double* %8
%42 = fneg double %41
%43 = call i64 @f(double %42)
%44 = load i32, i32* %3
%45 = load double, double* %5
%46 = load double, double* %6
%47 = load double, double* %8
%48 = fneg double %47
%49 = call i64 @sinc_approx(i32 %44, double %45, double %46, double %48)
%50 = sub nsw i64 %43, %49
%51 = call double @fabs(i64 %50)
store double %51, double* %9
%52 = load double, double* %10
%53 = load double, double* %9
%54 = fcmp olt double %52, %53
br i1 %54, label %55, label %57
55: ; preds = %40
%56 = load double, double* %9
store double %56, double* %10
br label %57
57: ; preds = %55, %40
store i32 1, i32* %2
br label %58
58: ; preds = %132, %57
%59 = load i32, i32* %2
%60 = icmp sle i32 %59, 100
br i1 %60, label %61, label %135
61: ; preds = %58
%62 = load double, double* @M_SQRT1_2
%63 = load double, double* %7
%64 = fmul double %63, %62
store double %64, double* %7
%65 = load double, double* @M_SQRT2
%66 = load double, double* %8
%67 = fmul double %66, %65
store double %67, double* %8
%68 = load double, double* %7
%69 = call i64 @f(double %68)
%70 = load i32, i32* %3
%71 = load double, double* %5
%72 = load double, double* %6
%73 = load double, double* %7
%74 = call i64 @sinc_approx(i32 %70, double %71, double %72, double %73)
%75 = sub nsw i64 %69, %74
%76 = call double @fabs(i64 %75)
store double %76, double* %9
%77 = load double, double* %10
%78 = load double, double* %9
%79 = fcmp olt double %77, %78
br i1 %79, label %80, label %82
80: ; preds = %61
%81 = load double, double* %9
store double %81, double* %10
br label %82
82: ; preds = %80, %61
%83 = load double, double* %7
%84 = fneg double %83
%85 = call i64 @f(double %84)
%86 = load i32, i32* %3
%87 = load double, double* %5
%88 = load double, double* %6
%89 = load double, double* %7
%90 = fneg double %89
%91 = call i64 @sinc_approx(i32 %86, double %87, double %88, double %90)
%92 = sub nsw i64 %85, %91
%93 = call double @fabs(i64 %92)
store double %93, double* %9
%94 = load double, double* %10
%95 = load double, double* %9
%96 = fcmp olt double %94, %95
br i1 %96, label %97, label %99
97: ; preds = %82
%98 = load double, double* %9
store double %98, double* %10
br label %99
99: ; preds = %97, %82
%100 = load double, double* %8
%101 = call i64 @f(double %100)
%102 = load i32, i32* %3
%103 = load double, double* %5
%104 = load double, double* %6
%105 = load double, double* %8
%106 = call i64 @sinc_approx(i32 %102, double %103, double %104, double %105)
%107 = sub nsw i64 %101, %106
%108 = call double @fabs(i64 %107)
store double %108, double* %9
%109 = load double, double* %10
%110 = load double, double* %9
%111 = fcmp olt double %109, %110
br i1 %111, label %112, label %114
112: ; preds = %99
%113 = load double, double* %9
store double %113, double* %10
br label %114
114: ; preds = %112, %99
%115 = load double, double* %8
%116 = fneg double %115
%117 = call i64 @f(double %116)
%118 = load i32, i32* %3
%119 = load double, double* %5
%120 = load double, double* %6
%121 = load double, double* %8
%122 = fneg double %121
%123 = call i64 @sinc_approx(i32 %118, double %119, double %120, double %122)
%124 = sub nsw i64 %117, %123
%125 = call double @fabs(i64 %124)
store double %125, double* %9
%126 = load double, double* %10
%127 = load double, double* %9
%128 = fcmp olt double %126, %127
br i1 %128, label %129, label %131
129: ; preds = %114
%130 = load double, double* %9
store double %130, double* %10
br label %131
131: ; preds = %129, %114
br label %132
132: ; preds = %131
%133 = load i32, i32* %2
%134 = add nsw i32 %133, 1
store i32 %134, i32* %2
br label %58
135: ; preds = %58
%136 = load i32, i32* %3
%137 = load double, double* %10
%138 = load i32, i32* %3
%139 = load double, double* %4
%140 = load double, double* %5
%141 = load double, double* %6
%142 = call double @err_bound(i32 %138, double %139, double %140, double %141)
%143 = call i32 @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0), i32 %136, double %137, double %142)
br label %144
144: ; preds = %135
%145 = load i32, i32* %3
%146 = add nsw i32 %145, 5
store i32 %146, i32* %3
br label %13
147: ; preds = %13
%148 = load i32, i32* @EXIT_SUCCESS
ret i32 %148
}

LLVM IR (-O2):
@M_PI = global double 0.000000e+00
@M_SQRT1_2 = global double 0.000000e+00
@M_SQRT2 = global double 0.000000e+00
@.str = [10 x i8] c"%d\09%e\09%e\0A\00"
@EXIT_SUCCESS = global i32 0
define i32 @main() {
%1 = load double, double* @M_PI
%2 = fdiv double %1, 6.000000e+00
br label %3
3: ; preds = %0, %58
%4 = phi i32 [ 2, %0 ], [ %61, %58 ]
%5 = tail call i64 @f(double 0.000000e+00)
%6 = tail call i64 @sinc_approx(i32 %4, double %2, double 2.000000e+00, double 0.000000e+00)
%7 = sub nsw i64 %5, %6
%8 = tail call double @fabs(i64 %7)
%9 = tail call i64 @f(double 1.000000e+00)
%10 = tail call i64 @sinc_approx(i32 %4, double %2, double 2.000000e+00, double 1.000000e+00)
%11 = sub nsw i64 %9, %10
%12 = tail call double @fabs(i64 %11)
%13 = fcmp olt double %8, %12
%14 = select i1 %13, double %12, double %8
%15 = tail call i64 @f(double -1.000000e+00)
%16 = tail call i64 @sinc_approx(i32 %4, double %2, double 2.000000e+00, double -1.000000e+00)
%17 = sub nsw i64 %15, %16
%18 = tail call double @fabs(i64 %17)
%19 = fcmp olt double %14, %18
%20 = select i1 %19, double %18, double %14
br label %21
21: ; preds = %3, %21
%22 = phi double [ %20, %3 ], [ %55, %21 ]
%23 = phi double [ 1.000000e+00, %3 ], [ %29, %21 ]
%24 = phi double [ 1.000000e+00, %3 ], [ %27, %21 ]
%25 = phi i32 [ 1, %3 ], [ %56, %21 ]
%26 = load double, double* @M_SQRT1_2
%27 = fmul double %24, %26
%28 = load double, double* @M_SQRT2
%29 = fmul double %23, %28
%30 = tail call i64 @f(double %27)
%31 = tail call i64 @sinc_approx(i32 %4, double %2, double 2.000000e+00, double %27)
%32 = sub nsw i64 %30, %31
%33 = tail call double @fabs(i64 %32)
%34 = fcmp olt double %22, %33
%35 = select i1 %34, double %33, double %22
%36 = fneg double %27
%37 = tail call i64 @f(double %36)
%38 = tail call i64 @sinc_approx(i32 %4, double %2, double 2.000000e+00, double %36)
%39 = sub nsw i64 %37, %38
%40 = tail call double @fabs(i64 %39)
%41 = fcmp olt double %35, %40
%42 = select i1 %41, double %40, double %35
%43 = tail call i64 @f(double %29)
%44 = tail call i64 @sinc_approx(i32 %4, double %2, double 2.000000e+00, double %29)
%45 = sub nsw i64 %43, %44
%46 = tail call double @fabs(i64 %45)
%47 = fcmp olt double %42, %46
%48 = select i1 %47, double %46, double %42
%49 = fneg double %29
%50 = tail call i64 @f(double %49)
%51 = tail call i64 @sinc_approx(i32 %4, double %2, double 2.000000e+00, double %49)
%52 = sub nsw i64 %50, %51
%53 = tail call double @fabs(i64 %52)
%54 = fcmp olt double %48, %53
%55 = select i1 %54, double %53, double %48
%56 = add nuw nsw i32 %25, 1
%57 = icmp eq i32 %56, 101
br i1 %57, label %58, label %21
58: ; preds = %21
%59 = tail call double @err_bound(i32 %4, double 1.500000e+00, double %2, double 2.000000e+00)
%60 = tail call i32 @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0), i32 %4, double %55, double %59)
%61 = add nuw nsw i32 %4, 5
%62 = icmp ult i32 %4, 91
br i1 %62, label %3, label %63
63: ; preds = %58
%64 = load i32, i32* @EXIT_SUCCESS
ret i32 %64
}