#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 */
typedef int /*<<< orphan*/ prop;

/* Variables and functions */
double interpolate_symmetric_linear(int, double *, double);
double prutenic_prop_sol(double angle) {
  double prop[] = {
      ((60) + (0) / 60.),  ((60) + (0) / 60.),  ((59) + (59) / 60.),
      ((59) + (58) / 60.), ((59) + (56) / 60.), ((59) + (54) / 60.),
      ((59) + (51) / 60.), ((59) + (48) / 60.), ((59) + (44) / 60.),
      ((59) + (40) / 60.), ((59) + (36) / 60.), ((59) + (30) / 60.),
      ((59) + (25) / 60.), ((59) + (19) / 60.), ((59) + (12) / 60.),
      ((59) + (5) / 60.),  ((58) + (58) / 60.), ((58) + (50) / 60.),
      ((58) + (42) / 60.), ((58) + (33) / 60.), ((58) + (23) / 60.),
      ((58) + (14) / 60.), ((58) + (3) / 60.),  ((57) + (53) / 60.),
      ((57) + (41) / 60.), ((57) + (30) / 60.), ((57) + (18) / 60.),
      ((57) + (5) / 60.),  ((56) + (52) / 60.), ((56) + (39) / 60.),
      ((56) + (25) / 60.), ((56) + (10) / 60.), ((55) + (56) / 60.),
      ((55) + (41) / 60.), ((55) + (25) / 60.), ((55) + (9) / 60.),
      ((54) + (52) / 60.), ((54) + (35) / 60.), ((54) + (18) / 60.),
      ((54) + (0) / 60.),  ((53) + (42) / 60.), ((53) + (24) / 60.),
      ((53) + (5) / 60.),  ((52) + (46) / 60.), ((52) + (26) / 60.),
      ((52) + (6) / 60.),  ((51) + (45) / 60.), ((51) + (24) / 60.),
      ((51) + (3) / 60.),  ((50) + (42) / 60.), ((50) + (20) / 60.),
      ((49) + (57) / 60.), ((49) + (35) / 60.), ((49) + (12) / 60.),
      ((48) + (48) / 60.), ((48) + (24) / 60.), ((48) + (0) / 60.),
      ((47) + (36) / 60.), ((47) + (12) / 60.), ((46) + (47) / 60.),
      ((46) + (21) / 60.), ((45) + (56) / 60.), ((45) + (30) / 60.),
      ((45) + (4) / 60.),  ((44) + (37) / 60.), ((44) + (11) / 60.),
      ((43) + (44) / 60.), ((43) + (16) / 60.), ((42) + (49) / 60.),
      ((42) + (21) / 60.), ((41) + (53) / 60.), ((41) + (25) / 60.),
      ((40) + (57) / 60.), ((40) + (28) / 60.), ((39) + (59) / 60.),
      ((39) + (30) / 60.), ((39) + (1) / 60.),  ((38) + (31) / 60.),
      ((38) + (2) / 60.),  ((37) + (32) / 60.), ((37) + (2) / 60.),
      ((36) + (32) / 60.), ((36) + (2) / 60.),  ((35) + (31) / 60.),
      ((35) + (1) / 60.),  ((34) + (30) / 60.), ((33) + (59) / 60.),
      ((33) + (28) / 60.), ((32) + (57) / 60.), ((32) + (26) / 60.),
      ((31) + (55) / 60.), ((31) + (24) / 60.), ((30) + (53) / 60.),
      ((30) + (21) / 60.), ((29) + (50) / 60.), ((29) + (19) / 60.),
      ((28) + (47) / 60.), ((28) + (16) / 60.), ((27) + (45) / 60.),
      ((27) + (13) / 60.), ((26) + (42) / 60.), ((26) + (10) / 60.),
      ((25) + (39) / 60.), ((25) + (8) / 60.),  ((24) + (36) / 60.),
      ((24) + (5) / 60.),  ((23) + (34) / 60.), ((23) + (3) / 60.),
      ((22) + (32) / 60.), ((22) + (1) / 60.),  ((21) + (31) / 60.),
      ((21) + (0) / 60.),  ((20) + (30) / 60.), ((19) + (59) / 60.),
      ((19) + (29) / 60.), ((18) + (59) / 60.), ((18) + (30) / 60.),
      ((18) + (0) / 60.),  ((17) + (31) / 60.), ((17) + (1) / 60.),
      ((16) + (32) / 60.), ((16) + (4) / 60.),  ((15) + (35) / 60.),
      ((15) + (7) / 60.),  ((14) + (39) / 60.), ((14) + (11) / 60.),
      ((13) + (44) / 60.), ((13) + (16) / 60.), ((12) + (50) / 60.),
      ((12) + (23) / 60.), ((11) + (57) / 60.), ((11) + (31) / 60.),
      ((11) + (5) / 60.),  ((10) + (40) / 60.), ((10) + (15) / 60.),
      ((9) + (51) / 60.),  ((9) + (27) / 60.),  ((9) + (3) / 60.),
      ((8) + (39) / 60.),  ((8) + (17) / 60.),  ((7) + (54) / 60.),
      ((7) + (32) / 60.),  ((7) + (10) / 60.),  ((6) + (49) / 60.),
      ((6) + (28) / 60.),  ((6) + (8) / 60.),   ((5) + (48) / 60.),
      ((5) + (29) / 60.),  ((5) + (10) / 60.),  ((4) + (52) / 60.),
      ((4) + (34) / 60.),  ((4) + (16) / 60.),  ((3) + (59) / 60.),
      ((3) + (43) / 60.),  ((3) + (27) / 60.),  ((3) + (12) / 60.),
      ((2) + (57) / 60.),  ((2) + (43) / 60.),  ((2) + (29) / 60.),
      ((2) + (16) / 60.),  ((2) + (4) / 60.),   ((1) + (52) / 60.),
      ((1) + (41) / 60.),  ((1) + (30) / 60.),  ((1) + (20) / 60.),
      ((1) + (10) / 60.),  ((1) + (1) / 60.),   ((0) + (53) / 60.),
      ((0) + (45) / 60.),  ((0) + (38) / 60.),  ((0) + (31) / 60.),
      ((0) + (25) / 60.),  ((0) + (20) / 60.),  ((0) + (15) / 60.),
      ((0) + (11) / 60.),  ((0) + (8) / 60.),   ((0) + (5) / 60.),
      ((0) + (3) / 60.),   ((0) + (1) / 60.),   ((0) + (0) / 60.),
      ((0) + (0) / 60.),
  };
  return interpolate_symmetric_linear(sizeof(prop) / sizeof(*prop), prop,
                                      angle);
}


x86 assembly (clang, -O0):
<prutenic_prop_sol>:
push   %rbp
mov    %rsp,%rbp
sub    $0x5b0,%rsp
movsd  %xmm0,-0x8(%rbp)
lea    -0x5b0(%rbp),%rdi
lea    0xec2(%rip),%rsi
mov    $0x5a8,%edx
call   1040 <memcpy@plt>
lea    -0x5b0(%rbp),%rsi
movsd  -0x8(%rbp),%xmm0
mov    $0xb5,%edi
call   1030 <interpolate_symmetric_linear@plt>
add    $0x5b0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<prutenic_prop_sol>:
push   %rbx
sub    $0x5c0,%rsp
movsd  %xmm0,0x8(%rsp)
lea    0xecb(%rip),%rsi
lea    0x10(%rsp),%rbx
mov    $0x5a8,%edx
mov    %rbx,%rdi
call   1040 <memcpy@plt>
mov    $0xb5,%edi
mov    %rbx,%rsi
movsd  0x8(%rsp),%xmm0
call   1030 <interpolate_symmetric_linear@plt>
add    $0x5c0,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@__const.prutenic_prop_sol.prop = [181 x double] [double 6.000000e+01, double 6.000000e+01, double 0x404DFDDDDDDDDDDE, double 0x404DFBBBBBBBBBBC, double 0x404DF77777777777, double 0x404DF33333333333, double 5.985000e+01, double 5.980000e+01, double 0x404DDDDDDDDDDDDE, double 0x404DD55555555555, double 5.960000e+01, double 5.950000e+01, double 0x404DB55555555555, double 0x404DA88888888889, double 5.920000e+01, double 0x404D8AAAAAAAAAAB, double 0x404D7BBBBBBBBBBC, double 0x404D6AAAAAAAAAAB, double 5.870000e+01, double 5.855000e+01, double 0x404D311111111111, double 0x404D1DDDDDDDDDDE, double 5.805000e+01, double 0x404CF11111111111, double 0x404CD77777777777, double 5.750000e+01, double 5.730000e+01, double 0x404C8AAAAAAAAAAB, double 0x404C6EEEEEEEEEEF, double 5.665000e+01, double 0x404C355555555555, double 0x404C155555555555, double 0x404BF77777777777, double 0x404BD77777777777, double 0x404BB55555555555, double 5.515000e+01, double 0x404B6EEEEEEEEEEF, double 0x404B4AAAAAAAAAAB, double 5.430000e+01, double 5.400000e+01, double 5.370000e+01, double 5.340000e+01, double 0x404A8AAAAAAAAAAB, double 0x404A622222222222, double 0x404A377777777777, double 5.210000e+01, double 5.175000e+01, double 5.140000e+01, double 5.105000e+01, double 5.070000e+01, double 0x40492AAAAAAAAAAB, double 4.995000e+01, double 0x4048CAAAAAAAAAAB, double 4.920000e+01, double 4.880000e+01, double 4.840000e+01, double 4.800000e+01, double 4.760000e+01, double 4.720000e+01, double 0x4047644444444444, double 4.635000e+01, double 0x4046F77777777777, double 4.550000e+01, double 0x4046888888888889, double 0x40464EEEEEEEEEEF, double 0x4046177777777777, double 0x4045DDDDDDDDDDDE, double 0x4045A22222222222, double 0x4045688888888889, double 4.235000e+01, double 0x4044F11111111111, double 0x4044B55555555555, double 4.095000e+01, double 0x40443BBBBBBBBBBC, double 0x4043FDDDDDDDDDDE, double 3.950000e+01, double 0x4043822222222222, double 0x4043422222222222, double 0x4043044444444444, double 0x4042C44444444444, double 0x4042844444444444, double 0x4042444444444444, double 0x4042044444444444, double 0x4041C22222222222, double 0x4041822222222222, double 3.450000e+01, double 0x4040FDDDDDDDDDDE, double 0x4040BBBBBBBBBBBC, double 3.295000e+01, double 0x4040377777777777, double 0x403FEAAAAAAAAAAB, double 3.140000e+01, double 0x403EE22222222222, double 3.035000e+01, double 0x403DD55555555555, double 0x403D511111111111, double 0x403CC88888888889, double 0x403C444444444444, double 2.775000e+01, double 0x403B377777777777, double 2.670000e+01, double 0x403A2AAAAAAAAAAB, double 2.565000e+01, double 0x4039222222222222, double 2.460000e+01, double 0x4038155555555555, double 0x4037911111111111, double 2.305000e+01, double 0x4036888888888889, double 0x4036044444444444, double 0x4035844444444444, double 2.100000e+01, double 2.050000e+01, double 0x4033FBBBBBBBBBBC, double 0x40337BBBBBBBBBBC, double 0x4032FBBBBBBBBBBC, double 1.850000e+01, double 1.800000e+01, double 0x4031844444444444, double 0x4031044444444444, double 0x4030888888888889, double 0x4030111111111111, double 0x402F2AAAAAAAAAAB, double 0x402E3BBBBBBBBBBC, double 1.465000e+01, double 0x402C5DDDDDDDDDDE, double 0x402B777777777777, double 0x402A888888888889, double 0x4029AAAAAAAAAAAB, double 0x4028C44444444444, double 1.195000e+01, double 0x4027088888888889, double 0x40262AAAAAAAAAAB, double 0x4025555555555555, double 1.025000e+01, double 0x4023B33333333333, double 0x4022E66666666666, double 9.050000e+00, double 8.650000e+00, double 0x4020911111111111, double 7.900000e+00, double 0x401E222222222222, double 0x401CAAAAAAAAAAAB, double 0x401B444444444444, double 0x4019DDDDDDDDDDDE, double 0x4018888888888889, double 5.800000e+00, double 0x4015EEEEEEEEEEEF, double 0x4014AAAAAAAAAAAB, double 0x4013777777777778, double 0x4012444444444444, double 0x4011111111111111, double 0x400FDDDDDDDDDDDE, double 0x400DBBBBBBBBBBBC, double 3.450000e+00, double 3.200000e+00, double 2.950000e+00, double 0x4005BBBBBBBBBBBC, double 0x4003DDDDDDDDDDDE, double 0x4002222222222222, double 0x4000888888888889, double 0x3FFDDDDDDDDDDDDE, double 0x3FFAEEEEEEEEEEEF, double 1.500000e+00, double 0x3FF5555555555555, double 0x3FF2AAAAAAAAAAAB, double 0x3FF0444444444444, double 0x3FEC444444444444, double 7.500000e-01, double 0x3FE4444444444444, double 0x3FE0888888888889, double 0x3FDAAAAAAAAAAAAB, double 0x3FD5555555555555, double 2.500000e-01, double 0x3FC7777777777777, double 0x3FC1111111111111, double 0x3FB5555555555555, double 5.000000e-02, double 0x3F91111111111111, double 0.000000e+00, double 0.000000e+00]
define double @prutenic_prop_sol(double %0) {
%2 = alloca double
%3 = alloca [181 x double]
store double %0, double* %2
%4 = bitcast [181 x double]* %3 to i8*
%5 = getelementptr inbounds [181 x double], [181 x double]* %3, i64 0, i64 0
%6 = load double, double* %2
%7 = call double @interpolate_symmetric_linear(i32 181, double* %5, double %6)
ret double %7
}

LLVM IR (-O2):
@__const.prutenic_prop_sol.prop = [181 x double] [double 6.000000e+01, double 6.000000e+01, double 0x404DFDDDDDDDDDDE, double 0x404DFBBBBBBBBBBC, double 0x404DF77777777777, double 0x404DF33333333333, double 5.985000e+01, double 5.980000e+01, double 0x404DDDDDDDDDDDDE, double 0x404DD55555555555, double 5.960000e+01, double 5.950000e+01, double 0x404DB55555555555, double 0x404DA88888888889, double 5.920000e+01, double 0x404D8AAAAAAAAAAB, double 0x404D7BBBBBBBBBBC, double 0x404D6AAAAAAAAAAB, double 5.870000e+01, double 5.855000e+01, double 0x404D311111111111, double 0x404D1DDDDDDDDDDE, double 5.805000e+01, double 0x404CF11111111111, double 0x404CD77777777777, double 5.750000e+01, double 5.730000e+01, double 0x404C8AAAAAAAAAAB, double 0x404C6EEEEEEEEEEF, double 5.665000e+01, double 0x404C355555555555, double 0x404C155555555555, double 0x404BF77777777777, double 0x404BD77777777777, double 0x404BB55555555555, double 5.515000e+01, double 0x404B6EEEEEEEEEEF, double 0x404B4AAAAAAAAAAB, double 5.430000e+01, double 5.400000e+01, double 5.370000e+01, double 5.340000e+01, double 0x404A8AAAAAAAAAAB, double 0x404A622222222222, double 0x404A377777777777, double 5.210000e+01, double 5.175000e+01, double 5.140000e+01, double 5.105000e+01, double 5.070000e+01, double 0x40492AAAAAAAAAAB, double 4.995000e+01, double 0x4048CAAAAAAAAAAB, double 4.920000e+01, double 4.880000e+01, double 4.840000e+01, double 4.800000e+01, double 4.760000e+01, double 4.720000e+01, double 0x4047644444444444, double 4.635000e+01, double 0x4046F77777777777, double 4.550000e+01, double 0x4046888888888889, double 0x40464EEEEEEEEEEF, double 0x4046177777777777, double 0x4045DDDDDDDDDDDE, double 0x4045A22222222222, double 0x4045688888888889, double 4.235000e+01, double 0x4044F11111111111, double 0x4044B55555555555, double 4.095000e+01, double 0x40443BBBBBBBBBBC, double 0x4043FDDDDDDDDDDE, double 3.950000e+01, double 0x4043822222222222, double 0x4043422222222222, double 0x4043044444444444, double 0x4042C44444444444, double 0x4042844444444444, double 0x4042444444444444, double 0x4042044444444444, double 0x4041C22222222222, double 0x4041822222222222, double 3.450000e+01, double 0x4040FDDDDDDDDDDE, double 0x4040BBBBBBBBBBBC, double 3.295000e+01, double 0x4040377777777777, double 0x403FEAAAAAAAAAAB, double 3.140000e+01, double 0x403EE22222222222, double 3.035000e+01, double 0x403DD55555555555, double 0x403D511111111111, double 0x403CC88888888889, double 0x403C444444444444, double 2.775000e+01, double 0x403B377777777777, double 2.670000e+01, double 0x403A2AAAAAAAAAAB, double 2.565000e+01, double 0x4039222222222222, double 2.460000e+01, double 0x4038155555555555, double 0x4037911111111111, double 2.305000e+01, double 0x4036888888888889, double 0x4036044444444444, double 0x4035844444444444, double 2.100000e+01, double 2.050000e+01, double 0x4033FBBBBBBBBBBC, double 0x40337BBBBBBBBBBC, double 0x4032FBBBBBBBBBBC, double 1.850000e+01, double 1.800000e+01, double 0x4031844444444444, double 0x4031044444444444, double 0x4030888888888889, double 0x4030111111111111, double 0x402F2AAAAAAAAAAB, double 0x402E3BBBBBBBBBBC, double 1.465000e+01, double 0x402C5DDDDDDDDDDE, double 0x402B777777777777, double 0x402A888888888889, double 0x4029AAAAAAAAAAAB, double 0x4028C44444444444, double 1.195000e+01, double 0x4027088888888889, double 0x40262AAAAAAAAAAB, double 0x4025555555555555, double 1.025000e+01, double 0x4023B33333333333, double 0x4022E66666666666, double 9.050000e+00, double 8.650000e+00, double 0x4020911111111111, double 7.900000e+00, double 0x401E222222222222, double 0x401CAAAAAAAAAAAB, double 0x401B444444444444, double 0x4019DDDDDDDDDDDE, double 0x4018888888888889, double 5.800000e+00, double 0x4015EEEEEEEEEEEF, double 0x4014AAAAAAAAAAAB, double 0x4013777777777778, double 0x4012444444444444, double 0x4011111111111111, double 0x400FDDDDDDDDDDDE, double 0x400DBBBBBBBBBBBC, double 3.450000e+00, double 3.200000e+00, double 2.950000e+00, double 0x4005BBBBBBBBBBBC, double 0x4003DDDDDDDDDDDE, double 0x4002222222222222, double 0x4000888888888889, double 0x3FFDDDDDDDDDDDDE, double 0x3FFAEEEEEEEEEEEF, double 1.500000e+00, double 0x3FF5555555555555, double 0x3FF2AAAAAAAAAAAB, double 0x3FF0444444444444, double 0x3FEC444444444444, double 7.500000e-01, double 0x3FE4444444444444, double 0x3FE0888888888889, double 0x3FDAAAAAAAAAAAAB, double 0x3FD5555555555555, double 2.500000e-01, double 0x3FC7777777777777, double 0x3FC1111111111111, double 0x3FB5555555555555, double 5.000000e-02, double 0x3F91111111111111, double 0.000000e+00, double 0.000000e+00]
define double @prutenic_prop_sol(double %0) {
%2 = alloca [181 x double]
%3 = bitcast [181 x double]* %2 to i8*
%4 = getelementptr inbounds [181 x double], [181 x double]* %2, i64 0, i64 0
%5 = call double @interpolate_symmetric_linear(i32 181, double* %4, double %0)
ret double %5
}