#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 */
typedef struct TYPE_12__ TYPE_6__;
typedef struct TYPE_11__ TYPE_5__;
typedef struct TYPE_10__ TYPE_4__;
typedef struct TYPE_9__ TYPE_3__;
typedef struct TYPE_8__ TYPE_2__;
typedef struct TYPE_7__ TYPE_1__;

/* Type definitions */
struct TYPE_12__ {
  double member_0;
  double member_1;
  double member_2;
  double member_3;
  double member_4;
  double member_5;
  double member_6;
};
struct TYPE_11__ {
  double member_0;
  double member_1;
  double member_2;
  double member_3;
  double member_4;
  double member_5;
  double member_6;
};
struct TYPE_10__ {
  double member_0;
  double member_1;
  double member_2;
  double member_3;
  double member_4;
  double member_5;
  double member_6;
};
struct TYPE_9__ {
  double member_0;
  double member_1;
  double member_2;
  double member_3;
  double member_4;
  double member_5;
  double member_6;
};
struct TYPE_8__ {
  double member_0;
  double member_1;
  double member_2;
  double member_3;
  double member_4;
  double member_5;
  double member_6;
};
struct TYPE_7__ {
  double member_0;
  double member_1;
  double member_2;
  double member_3;
  double member_4;
  double member_5;
  double member_6;
};

/* Variables and functions */
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stderr;
int holbergcoeff(int FDORDER, int MAXRELERROR, double *hc) {
  int i;
  int state = 0;
  float hcall[5][6][7] = {
      {{23.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0},
       {8.0, 9.0 / 8.0, -1.0 / 24.0, 0.0, 0.0, 0.0, 0.0},
       {6.0, 75.0 / 64.0, -25.0 / 384.0, 3.0 / 640.0, 0.0, 0.0, 0.0},
       {5.0, 1225.0 / 1024.0, -245.0 / 3072.0, 49.0 / 5120.0, -5.0 / 7168.0,
        0.0, 0.0},
       {5.0, 19845.0 / 16384.0, -735.0 / 8192.0, 567.0 / 40960.0,
        -405.0 / 229376.0, 35.0 / 294912.0, 0.0},
       {4.0, 160083.0 / 131072.0, -12705.0 / 131072.0, 22869.0 / 1310720.0,
        -5445.0 / 1835008.0, 847.0 / 2359296.0, -63.0 / 2883584.0}},
      {{49.7, 1.0010, 0.0, 0.0, 0.0, 0.0, 0.0},
       {8.32, 1.1382, -0.046414, 0.0, 0.0, 0.0, 0.0},
       {4.77, 1.1965, -0.078804, 0.0081781, 0.0, 0.0, 0.0},
       {3.69, 1.2257, -0.099537, 0.018063, -0.0026274, 0.0, 0.0},
       {3.19, 1.2415, -0.11231, 0.026191, -0.0064682, 0.001191, 0.0},
       {2.91, 1.2508, -0.12034, 0.032131, -0.010142, 0.0029857, -0.00066667}},
      {{22.2, 1.0050, 0.0, 0.0, 0.0, 0.0, 0.0},
       {5.65, 1.1534, -0.052806, 0.0, 0.0, 0.0, 0.0},
       {3.74, 1.2111, -0.088313, 0.011768, 0.0, 0.0, 0.0},
       {3.11, 1.2367, -0.10815, 0.023113, -0.0046905, 0.0, 0.0},
       {2.80, 1.2496, -0.11921, 0.031130, -0.0093272, 0.0025161, 0.0},
       {2.62, 1.2568, -0.12573, 0.036423, -0.013132, 0.0047484, -0.0015979}},
      {{15.8, 1.0100, 0.0, 0.0, 0.0, 0.0, 0.0},
       {4.80, 1.1640, -0.057991, 0.0, 0.0, 0.0, 0.0},
       {3.39, 1.2192, -0.094070, 0.014608, 0.0, 0.0, 0.0},
       {2.90, 1.2422, -0.11269, 0.026140, -0.0064054, 0.0, 0.0},
       {2.65, 1.2534, -0.12257, 0.033755, -0.011081, 0.0036784, 0.0},
       {2.51, 1.2596, -0.12825, 0.038550, -0.014763, 0.0058619, -0.0024538}},
      {{9.16, 1.0300, 0.0, 0.0, 0.0, 0.0, 0.0},
       {3.47, 1.1876, -0.072518, 0.0, 0.0, 0.0, 0.0},
       {2.91, 1.2341, -0.10569, 0.022589, 0.0, 0.0, 0.0},
       {2.61, 1.2516, -0.12085, 0.032236, -0.011459, 0.0, 0.0},
       {2.45, 1.2596, -0.12829, 0.038533, -0.014681, 0.0072580, 0.0},
       {2.36, 1.2640, -0.13239, 0.042217, -0.017803, 0.0081959, -0.0051848}},
  };
  if ((FDORDER != 2) && (FDORDER != 4) && (FDORDER != 6) && (FDORDER != 8) &&
      (FDORDER != 10) && (FDORDER != 12)) {
    state = 1;
    fprintf(stderr, "Error in selection of FD coefficients: wrong FDORDER! ");
  }
  if ((MAXRELERROR < 0) || (MAXRELERROR > 4)) {
    state = 1;
    fprintf(stderr, "Error in selection of FD coefficients: wrong choice of "
                    "maximum relative error! ");
  }
  for (i = 0; i <= 6; i++) {
    hc[i] = hcall[MAXRELERROR][FDORDER / 2 - 1][i];
  }
  return state;
}


x86 assembly (clang, -O0):
<holbergcoeff>:
push   %rbp
mov    %rsp,%rbp
sub    $0x370,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
movl   $0x0,-0x18(%rbp)
lea    -0x360(%rbp),%rdi
lea    0xeb6(%rip),%rsi
mov    $0x348,%edx
call   1040 <memcpy@plt>
cmpl   $0x2,-0x4(%rbp)
je     11ac <holbergcoeff+0x8c>
cmpl   $0x4,-0x4(%rbp)
je     11ac <holbergcoeff+0x8c>
cmpl   $0x6,-0x4(%rbp)
je     11ac <holbergcoeff+0x8c>
cmpl   $0x8,-0x4(%rbp)
je     11ac <holbergcoeff+0x8c>
cmpl   $0xa,-0x4(%rbp)
je     11ac <holbergcoeff+0x8c>
cmpl   $0xc,-0x4(%rbp)
je     11ac <holbergcoeff+0x8c>
movl   $0x1,-0x18(%rbp)
mov    0x2e42(%rip),%rax
mov    (%rax),%edi
lea    0x11a1(%rip),%rsi
call   1030 <fprintf@plt>
cmpl   $0x0,-0x8(%rbp)
jl     11c0 <holbergcoeff+0xa0>
cmpl   $0x4,-0x8(%rbp)
jle    11dc <holbergcoeff+0xbc>
movl   $0x1,-0x18(%rbp)
mov    0x2e12(%rip),%rax
mov    (%rax),%edi
lea    0x11a8(%rip),%rsi
call   1030 <fprintf@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0x6,-0x14(%rbp)
jg     1252 <holbergcoeff+0x132>
movslq -0x8(%rbp),%rcx
lea    -0x360(%rbp),%rax
imul   $0xa8,%rcx,%rcx
add    %rcx,%rax
mov    %rax,-0x368(%rbp)
mov    -0x4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x368(%rbp),%rax
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    11e3 <holbergcoeff+0xc3>
mov    -0x18(%rbp),%eax
add    $0x370,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<holbergcoeff>:
push   %rbp
push   %r14
push   %rbx
mov    %rdx,%r14
mov    %esi,%ebp
mov    %edi,%ebx
lea    -0x2(%rbx),%ecx
cmp    $0xb,%ecx
jae    112f <holbergcoeff+0x1f>
xor    %eax,%eax
mov    $0x555,%edx
bt     %ecx,%edx
jb     1149 <holbergcoeff+0x39>
mov    0x2eaa(%rip),%rax
mov    (%rax),%edi
lea    0x1209(%rip),%rsi
call   1030 <fprintf@plt>
mov    $0x1,%eax
cmp    $0x5,%ebp
jb     1168 <holbergcoeff+0x58>
mov    0x2e8b(%rip),%rax
mov    (%rax),%edi
lea    0x1221(%rip),%rsi
call   1030 <fprintf@plt>
mov    $0x1,%eax
movslq %ebp,%rcx
mov    %ebx,%edx
shr    $0x1f,%edx
add    %ebx,%edx
sar    %edx
add    $0xffffffff,%edx
movslq %edx,%rdx
lea    (%rdx,%rdx,8),%rsi
lea    (%rsi,%rsi,2),%rsi
add    %rdx,%rsi
imul   $0xa8,%rcx,%rcx
lea    0xe6d(%rip),%rdx
add    %rcx,%rdx
cvtps2pd (%rdx,%rsi,1),%xmm0
cvtps2pd 0x8(%rdx,%rsi,1),%xmm1
movups %xmm0,(%r14)
movups %xmm1,0x10(%r14)
cvtps2pd 0x10(%rdx,%rsi,1),%xmm0
movups %xmm0,0x20(%r14)
movss  0x18(%rdx,%rsi,1),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,0x30(%r14)
pop    %rbx
pop    %r14
pop    %rbp
ret

LLVM IR (-O0):
@__const.holbergcoeff.hcall = [5 x [6 x [7 x float]]] [[6 x [7 x float]] [[7 x float] [float 2.300000e+01, float 1.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 8.000000e+00, float 1.125000e+00, float 0xBFA5555560000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 6.000000e+00, float 0x3FF2C00000000000, float 0xBFB0AAAAA0000000, float 0x3F73333340000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 5.000000e+00, float 0x3FF3240000000000, float 0xBFB46AAAA0000000, float 0x3F839999A0000000, float 0xBF46DB6DC0000000, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 5.000000e+00, float 0x3FF3614000000000, float 0xBFB6F80000000000, float 0x3F8C5999A0000000, float 0xBF5CEDB6E0000000, float 0x3F1F1C71C0000000, float 0.000000e+00], [7 x float] [float 4.000000e+00, float 0x3FF38A9800000000, float 0xBFB8D08000000000, float 0x3F91DDCCC0000000, float 0xBF684EDB60000000, float 0x3F37871C80000000, float 0xBEF6E8BA20000000]], [6 x [7 x float]] [[7 x float] [float 0x4048D999A0000000, float 0x3FF00418A0000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x4020A3D700000000, float 0x3FF2361140000000, float 0xBFA7C39360000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x4013147AE0000000, float 0x3FF324DD20000000, float 0xBFB42C7FC0000000, float 0x3F80BFAE00000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x400D851EC0000000, float 0x3FF39C77A0000000, float 0xBFB97B41C0000000, float 0x3F927F1B60000000, float 0xBF65860EA0000000, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x4009851EC0000000, float 0x3FF3DD2F20000000, float 0xBFBCC05920000000, float 0x3F9AD1D040000000, float 0xBF7A7E6640000000, float 0x3F53836A80000000, float 0.000000e+00], [7 x float] [float 0x400747AE20000000, float 0x3FF40346E0000000, float 0xBFBECE9A20000000, float 0x3FA0737980000000, float 0xBF84C55440000000, float 0x3F68757780000000, float 0xBF45D86EE0000000]], [6 x [7 x float]] [[7 x float] [float 0x4036333340000000, float 0x3FF0147AE0000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x40169999A0000000, float 0x3FF2745380000000, float 0xBFAB096360000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x400DEB8520000000, float 0x3FF360AA60000000, float 0xBFB69BAE40000000, float 0x3F8819D240000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x4008E147A0000000, float 0x3FF3C98600000000, float 0xBFBBAFB7E0000000, float 0x3F97AAEF20000000, float 0xBF73365880000000, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x4006666660000000, float 0x3FF3FE5CA0000000, float 0xBFBE848BE0000000, float 0x3F9FE08AE0000000, float 0xBF831A23A0000000, float 0x3F649CA4E0000000, float 0.000000e+00], [7 x float] [float 0x4004F5C280000000, float 0x3FF41BDA60000000, float 0xBFC017EBA0000000, float 0x3FA2A60920000000, float 0xBF8AE4F340000000, float 0x3F73730EE0000000, float 0xBF5A2E1400000000]], [6 x [7 x float]] [[7 x float] [float 0x402F9999A0000000, float 0x3FF028F5C0000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x4013333340000000, float 0x3FF29FBE80000000, float 0xBFADB0FF20000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x400B1EB860000000, float 0x3FF381D7E0000000, float 0xBFB814F8C0000000, float 0x3F8DEACCA0000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x4007333340000000, float 0x3FF3E00D20000000, float 0xBFBCD94080000000, float 0x3F9AC471C0000000, float 0xBF7A3C8C80000000, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x4005333340000000, float 0x3FF40DED20000000, float 0xBFBF60BF60000000, float 0x3FA14855E0000000, float 0xBF86B1A2A0000000, float 0x3F6E222A00000000, float 0.000000e+00], [7 x float] [float 0x4004147AE0000000, float 0x3FF4275260000000, float 0xBFC06A7F00000000, float 0x3FA3BCD360000000, float 0xBF8E3C1060000000, float 0x3F7802A5C0000000, float 0xBF6419FDE0000000]], [6 x [7 x float]] [[7 x float] [float 0x402251EB80000000, float 0x3FF07AE140000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x400BC28F60000000, float 0x3FF30068E0000000, float 0xBFB2908A20000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x400747AE20000000, float 0x3FF3BEDFA0000000, float 0xBFBB0E8000000000, float 0x3F97219220000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x4004E147A0000000, float 0x3FF4068DC0000000, float 0xBFBEF00680000000, float 0x3FA0813CA0000000, float 0xBF8777D100000000, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x40039999A0000000, float 0x3FF4275260000000, float 0xBFC06BCE80000000, float 0x3FA3BA98E0000000, float 0xBF8E111280000000, float 0x3F7DBA9080000000, float 0.000000e+00], [7 x float] [float 0x4002E147A0000000, float 0x3FF4395820000000, float 0xBFC0F227E0000000, float 0x3FA59D7780000000, float 0xBF923AF320000000, float 0x3F80C90320000000, float 0xBF753CA820000000]]]
@stderr = global i32 0
@.str = [55 x i8] c"Error in selection of FD coefficients: wrong FDORDER! \00"
@.str.1 = [80 x i8] c"Error in selection of FD coefficients: wrong choice of maximum relative error! \00"
define i32 @holbergcoeff(i32 %0, i32 %1, double* %2) {
%4 = alloca i32
%5 = alloca i32
%6 = alloca double*
%7 = alloca i32
%8 = alloca i32
%9 = alloca [5 x [6 x [7 x float]]]
store i32 %0, i32* %4
store i32 %1, i32* %5
store double* %2, double** %6
store i32 0, i32* %8
%10 = bitcast [5 x [6 x [7 x float]]]* %9 to i8*
%11 = load i32, i32* %4
%12 = icmp ne i32 %11, 2
br i1 %12, label %13, label %31
13: ; preds = %3
%14 = load i32, i32* %4
%15 = icmp ne i32 %14, 4
br i1 %15, label %16, label %31
16: ; preds = %13
%17 = load i32, i32* %4
%18 = icmp ne i32 %17, 6
br i1 %18, label %19, label %31
19: ; preds = %16
%20 = load i32, i32* %4
%21 = icmp ne i32 %20, 8
br i1 %21, label %22, label %31
22: ; preds = %19
%23 = load i32, i32* %4
%24 = icmp ne i32 %23, 10
br i1 %24, label %25, label %31
25: ; preds = %22
%26 = load i32, i32* %4
%27 = icmp ne i32 %26, 12
br i1 %27, label %28, label %31
28: ; preds = %25
store i32 1, i32* %8
%29 = load i32, i32* @stderr
%30 = call i32 @fprintf(i32 %29, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str, i64 0, i64 0))
br label %31
31: ; preds = %28, %25, %22, %19, %16, %13, %3
%32 = load i32, i32* %5
%33 = icmp slt i32 %32, 0
br i1 %33, label %37, label %34
34: ; preds = %31
%35 = load i32, i32* %5
%36 = icmp sgt i32 %35, 4
br i1 %36, label %37, label %40
37: ; preds = %34, %31
store i32 1, i32* %8
%38 = load i32, i32* @stderr
%39 = call i32 @fprintf(i32 %38, i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.1, i64 0, i64 0))
br label %40
40: ; preds = %37, %34
store i32 0, i32* %7
br label %41
41: ; preds = %62, %40
%42 = load i32, i32* %7
%43 = icmp sle i32 %42, 6
br i1 %43, label %44, label %65
44: ; preds = %41
%45 = load i32, i32* %5
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds [5 x [6 x [7 x float]]], [5 x [6 x [7 x float]]]* %9, i64 0, i64 %46
%48 = load i32, i32* %4
%49 = sdiv i32 %48, 2
%50 = sub nsw i32 %49, 1
%51 = sext i32 %50 to i64
%52 = getelementptr inbounds [6 x [7 x float]], [6 x [7 x float]]* %47, i64 0, i64 %51
%53 = load i32, i32* %7
%54 = sext i32 %53 to i64
%55 = getelementptr inbounds [7 x float], [7 x float]* %52, i64 0, i64 %54
%56 = load float, float* %55
%57 = fpext float %56 to double
%58 = load double*, double** %6
%59 = load i32, i32* %7
%60 = sext i32 %59 to i64
%61 = getelementptr inbounds double, double* %58, i64 %60
store double %57, double* %61
br label %62
62: ; preds = %44
%63 = load i32, i32* %7
%64 = add nsw i32 %63, 1
store i32 %64, i32* %7
br label %41
65: ; preds = %41
%66 = load i32, i32* %8
ret i32 %66
}

LLVM IR (-O2):
@__const.holbergcoeff.hcall = [5 x [6 x [7 x float]]] [[6 x [7 x float]] [[7 x float] [float 2.300000e+01, float 1.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 8.000000e+00, float 1.125000e+00, float 0xBFA5555560000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 6.000000e+00, float 0x3FF2C00000000000, float 0xBFB0AAAAA0000000, float 0x3F73333340000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 5.000000e+00, float 0x3FF3240000000000, float 0xBFB46AAAA0000000, float 0x3F839999A0000000, float 0xBF46DB6DC0000000, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 5.000000e+00, float 0x3FF3614000000000, float 0xBFB6F80000000000, float 0x3F8C5999A0000000, float 0xBF5CEDB6E0000000, float 0x3F1F1C71C0000000, float 0.000000e+00], [7 x float] [float 4.000000e+00, float 0x3FF38A9800000000, float 0xBFB8D08000000000, float 0x3F91DDCCC0000000, float 0xBF684EDB60000000, float 0x3F37871C80000000, float 0xBEF6E8BA20000000]], [6 x [7 x float]] [[7 x float] [float 0x4048D999A0000000, float 0x3FF00418A0000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x4020A3D700000000, float 0x3FF2361140000000, float 0xBFA7C39360000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x4013147AE0000000, float 0x3FF324DD20000000, float 0xBFB42C7FC0000000, float 0x3F80BFAE00000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x400D851EC0000000, float 0x3FF39C77A0000000, float 0xBFB97B41C0000000, float 0x3F927F1B60000000, float 0xBF65860EA0000000, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x4009851EC0000000, float 0x3FF3DD2F20000000, float 0xBFBCC05920000000, float 0x3F9AD1D040000000, float 0xBF7A7E6640000000, float 0x3F53836A80000000, float 0.000000e+00], [7 x float] [float 0x400747AE20000000, float 0x3FF40346E0000000, float 0xBFBECE9A20000000, float 0x3FA0737980000000, float 0xBF84C55440000000, float 0x3F68757780000000, float 0xBF45D86EE0000000]], [6 x [7 x float]] [[7 x float] [float 0x4036333340000000, float 0x3FF0147AE0000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x40169999A0000000, float 0x3FF2745380000000, float 0xBFAB096360000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x400DEB8520000000, float 0x3FF360AA60000000, float 0xBFB69BAE40000000, float 0x3F8819D240000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x4008E147A0000000, float 0x3FF3C98600000000, float 0xBFBBAFB7E0000000, float 0x3F97AAEF20000000, float 0xBF73365880000000, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x4006666660000000, float 0x3FF3FE5CA0000000, float 0xBFBE848BE0000000, float 0x3F9FE08AE0000000, float 0xBF831A23A0000000, float 0x3F649CA4E0000000, float 0.000000e+00], [7 x float] [float 0x4004F5C280000000, float 0x3FF41BDA60000000, float 0xBFC017EBA0000000, float 0x3FA2A60920000000, float 0xBF8AE4F340000000, float 0x3F73730EE0000000, float 0xBF5A2E1400000000]], [6 x [7 x float]] [[7 x float] [float 0x402F9999A0000000, float 0x3FF028F5C0000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x4013333340000000, float 0x3FF29FBE80000000, float 0xBFADB0FF20000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x400B1EB860000000, float 0x3FF381D7E0000000, float 0xBFB814F8C0000000, float 0x3F8DEACCA0000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x4007333340000000, float 0x3FF3E00D20000000, float 0xBFBCD94080000000, float 0x3F9AC471C0000000, float 0xBF7A3C8C80000000, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x4005333340000000, float 0x3FF40DED20000000, float 0xBFBF60BF60000000, float 0x3FA14855E0000000, float 0xBF86B1A2A0000000, float 0x3F6E222A00000000, float 0.000000e+00], [7 x float] [float 0x4004147AE0000000, float 0x3FF4275260000000, float 0xBFC06A7F00000000, float 0x3FA3BCD360000000, float 0xBF8E3C1060000000, float 0x3F7802A5C0000000, float 0xBF6419FDE0000000]], [6 x [7 x float]] [[7 x float] [float 0x402251EB80000000, float 0x3FF07AE140000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x400BC28F60000000, float 0x3FF30068E0000000, float 0xBFB2908A20000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x400747AE20000000, float 0x3FF3BEDFA0000000, float 0xBFBB0E8000000000, float 0x3F97219220000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x4004E147A0000000, float 0x3FF4068DC0000000, float 0xBFBEF00680000000, float 0x3FA0813CA0000000, float 0xBF8777D100000000, float 0.000000e+00, float 0.000000e+00], [7 x float] [float 0x40039999A0000000, float 0x3FF4275260000000, float 0xBFC06BCE80000000, float 0x3FA3BA98E0000000, float 0xBF8E111280000000, float 0x3F7DBA9080000000, float 0.000000e+00], [7 x float] [float 0x4002E147A0000000, float 0x3FF4395820000000, float 0xBFC0F227E0000000, float 0x3FA59D7780000000, float 0xBF923AF320000000, float 0x3F80C90320000000, float 0xBF753CA820000000]]]
@stderr = global i32 0
@.str = [55 x i8] c"Error in selection of FD coefficients: wrong FDORDER! \00"
@.str.1 = [80 x i8] c"Error in selection of FD coefficients: wrong choice of maximum relative error! \00"
define i32 @holbergcoeff(i32 %0, i32 %1, double* nocapture writeonly %2) {
%4 = add i32 %0, -2
%5 = icmp ult i32 %4, 11
br i1 %5, label %9, label %6
6: ; preds = %9, %3
%7 = load i32, i32* @stderr
%8 = tail call i32 @fprintf(i32 %7, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str, i64 0, i64 0))
br label %14
9: ; preds = %3
%10 = trunc i32 %4 to i16
%11 = lshr i16 1365, %10
%12 = and i16 %11, 1
%13 = icmp eq i16 %12, 0
br i1 %13, label %6, label %14
14: ; preds = %9, %6
%15 = phi i32 [ 1, %6 ], [ 0, %9 ]
%16 = icmp ugt i32 %1, 4
br i1 %16, label %17, label %20
17: ; preds = %14
%18 = load i32, i32* @stderr
%19 = tail call i32 @fprintf(i32 %18, i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.1, i64 0, i64 0))
br label %20
20: ; preds = %14, %17
%21 = phi i32 [ 1, %17 ], [ %15, %14 ]
%22 = sext i32 %1 to i64
%23 = sdiv i32 %0, 2
%24 = add nsw i32 %23, -1
%25 = sext i32 %24 to i64
%26 = getelementptr inbounds [5 x [6 x [7 x float]]], [5 x [6 x [7 x float]]]* @__const.holbergcoeff.hcall, i64 0, i64 %22, i64 %25, i64 0
%27 = bitcast float* %26 to <2 x float>*
%28 = load <2 x float>, <2 x float>* %27
%29 = fpext <2 x float> %28 to <2 x double>
%30 = bitcast double* %2 to <2 x double>*
store <2 x double> %29, <2 x double>* %30
%31 = getelementptr inbounds [5 x [6 x [7 x float]]], [5 x [6 x [7 x float]]]* @__const.holbergcoeff.hcall, i64 0, i64 %22, i64 %25, i64 2
%32 = getelementptr inbounds double, double* %2, i64 2
%33 = bitcast float* %31 to <2 x float>*
%34 = load <2 x float>, <2 x float>* %33
%35 = fpext <2 x float> %34 to <2 x double>
%36 = bitcast double* %32 to <2 x double>*
store <2 x double> %35, <2 x double>* %36
%37 = getelementptr inbounds [5 x [6 x [7 x float]]], [5 x [6 x [7 x float]]]* @__const.holbergcoeff.hcall, i64 0, i64 %22, i64 %25, i64 4
%38 = getelementptr inbounds double, double* %2, i64 4
%39 = bitcast float* %37 to <2 x float>*
%40 = load <2 x float>, <2 x float>* %39
%41 = fpext <2 x float> %40 to <2 x double>
%42 = bitcast double* %38 to <2 x double>*
store <2 x double> %41, <2 x double>* %42
%43 = getelementptr inbounds [5 x [6 x [7 x float]]], [5 x [6 x [7 x float]]]* @__const.holbergcoeff.hcall, i64 0, i64 %22, i64 %25, i64 6
%44 = load float, float* %43
%45 = fpext float %44 to double
%46 = getelementptr inbounds double, double* %2, i64 6
store double %45, double* %46
ret i32 %21
}