#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*/ table;

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


x86 assembly (clang, -O0):
<prutenic_prop_luna>:
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_luna>:
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_luna.table = [181 x double] [double 0.000000e+00, double 0.000000e+00, double 0x3F91111111111111, double 5.000000e-02, double 1.000000e-01, double 1.500000e-01, double 0x3FCBBBBBBBBBBBBC, double 0x3FD2222222222222, double 0x3FD7777777777777, double 0x3FDDDDDDDDDDDDDE, double 0x3FE2AAAAAAAAAAAB, double 0x3FE6666666666666, double 0x3FEAAAAAAAAAAAAB, double 0x3FEEEEEEEEEEEEEF, double 0x3FF2222222222222, double 1.300000e+00, double 0x3FF7777777777778, double 1.650000e+00, double 1.850000e+00, double 0x4000888888888889, double 0x4002444444444444, double 0x4004222222222222, double 2.750000e+00, double 3.000000e+00, double 3.250000e+00, double 0x400C222222222222, double 3.800000e+00, double 0x4010555555555555, double 0x4011888888888889, double 0x4012BBBBBBBBBBBC, double 5.000000e+00, double 0x4015444444444444, double 5.650000e+00, double 6.000000e+00, double 6.350000e+00, double 6.700000e+00, double 0x401C444444444444, double 0x401DBBBBBBBBBBBC, double 0x401F444444444444, double 0x4020666666666666, double 8.600000e+00, double 9.000000e+00, double 9.400000e+00, double 0x4023A22222222222, double 0x4024777777777777, double 1.065000e+01, double 0x40262AAAAAAAAAAB, double 0x4027088888888889, double 0x4027EEEEEEEEEEEF, double 0x4028D55555555555, double 0x4029BBBBBBBBBBBC, double 0x402AAAAAAAAAAAAB, double 1.380000e+01, double 0x402C888888888889, double 0x402D777777777777, double 0x402E6EEEEEEEEEEF, double 1.570000e+01, double 0x40302EEEEEEEEEEF, double 0x4030AAAAAAAAAAAB, double 0x40312AAAAAAAAAAB, double 1.765000e+01, double 1.815000e+01, double 1.865000e+01, double 0x40332AAAAAAAAAAB, double 0x4033AAAAAAAAAAAB, double 0x40342AAAAAAAAAAB, double 0x4034AEEEEEEEEEEF, double 2.120000e+01, double 0x4035B77777777777, double 0x40363BBBBBBBBBBC, double 2.275000e+01, double 0x4037444444444444, double 0x4037C88888888889, double 2.430000e+01, double 0x4038D55555555555, double 2.535000e+01, double 0x4039E22222222222, double 2.640000e+01, double 0x403AEAAAAAAAAAAB, double 2.745000e+01, double 0x403BF77777777777, double 0x403C7BBBBBBBBBBC, double 0x403D044444444444, double 0x403D888888888889, double 3.005000e+01, double 0x403E955555555555, double 3.110000e+01, double 0x403F9DDDDDDDDDDE, double 0x4040111111111111, double 3.265000e+01, double 3.315000e+01, double 0x4040D55555555555, double 0x4041177777777777, double 0x4041577777777777, double 0x4041977777777777, double 3.570000e+01, double 3.620000e+01, double 0x4042577777777777, double 0x4042977777777777, double 0x4042D55555555555, double 0x4043155555555555, double 3.865000e+01, double 0x4043911111111111, double 0x4043CEEEEEEEEEEF, double 0x40440AAAAAAAAAAB, double 0x4044488888888889, double 0x4044844444444444, double 0x4044BDDDDDDDDDDE, double 4.195000e+01, double 0x4045355555555555, double 0x40456EEEEEEEEEEF, double 0x4045A88888888889, double 4.375000e+01, double 4.420000e+01, double 0x4046511111111111, double 0x4046888888888889, double 0x4046BDDDDDDDDDDE, double 0x4046F55555555555, double 0x40472AAAAAAAAAAB, double 4.675000e+01, double 4.715000e+01, double 4.755000e+01, double 4.795000e+01, double 0x40482AAAAAAAAAAB, double 0x40485BBBBBBBBBBC, double 4.910000e+01, double 0x4048BDDDDDDDDDDE, double 4.985000e+01, double 5.020000e+01, double 0x4049488888888889, double 0x4049755555555555, double 0x4049A22222222222, double 5.160000e+01, double 0x4049F77777777777, double 0x404A222222222222, double 0x404A4AAAAAAAAAAB, double 5.290000e+01, double 0x404A9BBBBBBBBBBC, double 0x404AC22222222222, double 0x404AE88888888889, double 0x404B0EEEEEEEEEEF, double 5.440000e+01, double 0x404B555555555555, double 0x404B777777777777, double 5.520000e+01, double 0x404BBBBBBBBBBBBC, double 0x404BDBBBBBBBBBBC, double 0x404BFBBBBBBBBBBC, double 5.620000e+01, double 0x404C377777777777, double 5.665000e+01, double 0x404C6EEEEEEEEEEF, double 0x404C8AAAAAAAAAAB, double 0x404CA44444444444, double 0x404CBDDDDDDDDDDE, double 0x404CD55555555555, double 5.785000e+01, double 0x404D022222222222, double 0x404D177777777777, double 5.835000e+01, double 5.850000e+01, double 0x404D533333333333, double 0x404D644444444444, double 0x404D755555555555, double 0x404D844444444444, double 0x404D933333333333, double 0x404DA22222222222, double 0x404DAEEEEEEEEEEF, double 5.945000e+01, double 5.955000e+01, double 0x404DD11111111111, double 5.970000e+01, double 0x404DE22222222222, double 0x404DE88888888889, double 0x404DEEEEEEEEEEEF, double 0x404DF33333333333, double 0x404DF77777777777, double 0x404DFBBBBBBBBBBC, double 0x404DFDDDDDDDDDDE, double 6.000000e+01, double 6.000000e+01]
define double @prutenic_prop_luna(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_luna.table = [181 x double] [double 0.000000e+00, double 0.000000e+00, double 0x3F91111111111111, double 5.000000e-02, double 1.000000e-01, double 1.500000e-01, double 0x3FCBBBBBBBBBBBBC, double 0x3FD2222222222222, double 0x3FD7777777777777, double 0x3FDDDDDDDDDDDDDE, double 0x3FE2AAAAAAAAAAAB, double 0x3FE6666666666666, double 0x3FEAAAAAAAAAAAAB, double 0x3FEEEEEEEEEEEEEF, double 0x3FF2222222222222, double 1.300000e+00, double 0x3FF7777777777778, double 1.650000e+00, double 1.850000e+00, double 0x4000888888888889, double 0x4002444444444444, double 0x4004222222222222, double 2.750000e+00, double 3.000000e+00, double 3.250000e+00, double 0x400C222222222222, double 3.800000e+00, double 0x4010555555555555, double 0x4011888888888889, double 0x4012BBBBBBBBBBBC, double 5.000000e+00, double 0x4015444444444444, double 5.650000e+00, double 6.000000e+00, double 6.350000e+00, double 6.700000e+00, double 0x401C444444444444, double 0x401DBBBBBBBBBBBC, double 0x401F444444444444, double 0x4020666666666666, double 8.600000e+00, double 9.000000e+00, double 9.400000e+00, double 0x4023A22222222222, double 0x4024777777777777, double 1.065000e+01, double 0x40262AAAAAAAAAAB, double 0x4027088888888889, double 0x4027EEEEEEEEEEEF, double 0x4028D55555555555, double 0x4029BBBBBBBBBBBC, double 0x402AAAAAAAAAAAAB, double 1.380000e+01, double 0x402C888888888889, double 0x402D777777777777, double 0x402E6EEEEEEEEEEF, double 1.570000e+01, double 0x40302EEEEEEEEEEF, double 0x4030AAAAAAAAAAAB, double 0x40312AAAAAAAAAAB, double 1.765000e+01, double 1.815000e+01, double 1.865000e+01, double 0x40332AAAAAAAAAAB, double 0x4033AAAAAAAAAAAB, double 0x40342AAAAAAAAAAB, double 0x4034AEEEEEEEEEEF, double 2.120000e+01, double 0x4035B77777777777, double 0x40363BBBBBBBBBBC, double 2.275000e+01, double 0x4037444444444444, double 0x4037C88888888889, double 2.430000e+01, double 0x4038D55555555555, double 2.535000e+01, double 0x4039E22222222222, double 2.640000e+01, double 0x403AEAAAAAAAAAAB, double 2.745000e+01, double 0x403BF77777777777, double 0x403C7BBBBBBBBBBC, double 0x403D044444444444, double 0x403D888888888889, double 3.005000e+01, double 0x403E955555555555, double 3.110000e+01, double 0x403F9DDDDDDDDDDE, double 0x4040111111111111, double 3.265000e+01, double 3.315000e+01, double 0x4040D55555555555, double 0x4041177777777777, double 0x4041577777777777, double 0x4041977777777777, double 3.570000e+01, double 3.620000e+01, double 0x4042577777777777, double 0x4042977777777777, double 0x4042D55555555555, double 0x4043155555555555, double 3.865000e+01, double 0x4043911111111111, double 0x4043CEEEEEEEEEEF, double 0x40440AAAAAAAAAAB, double 0x4044488888888889, double 0x4044844444444444, double 0x4044BDDDDDDDDDDE, double 4.195000e+01, double 0x4045355555555555, double 0x40456EEEEEEEEEEF, double 0x4045A88888888889, double 4.375000e+01, double 4.420000e+01, double 0x4046511111111111, double 0x4046888888888889, double 0x4046BDDDDDDDDDDE, double 0x4046F55555555555, double 0x40472AAAAAAAAAAB, double 4.675000e+01, double 4.715000e+01, double 4.755000e+01, double 4.795000e+01, double 0x40482AAAAAAAAAAB, double 0x40485BBBBBBBBBBC, double 4.910000e+01, double 0x4048BDDDDDDDDDDE, double 4.985000e+01, double 5.020000e+01, double 0x4049488888888889, double 0x4049755555555555, double 0x4049A22222222222, double 5.160000e+01, double 0x4049F77777777777, double 0x404A222222222222, double 0x404A4AAAAAAAAAAB, double 5.290000e+01, double 0x404A9BBBBBBBBBBC, double 0x404AC22222222222, double 0x404AE88888888889, double 0x404B0EEEEEEEEEEF, double 5.440000e+01, double 0x404B555555555555, double 0x404B777777777777, double 5.520000e+01, double 0x404BBBBBBBBBBBBC, double 0x404BDBBBBBBBBBBC, double 0x404BFBBBBBBBBBBC, double 5.620000e+01, double 0x404C377777777777, double 5.665000e+01, double 0x404C6EEEEEEEEEEF, double 0x404C8AAAAAAAAAAB, double 0x404CA44444444444, double 0x404CBDDDDDDDDDDE, double 0x404CD55555555555, double 5.785000e+01, double 0x404D022222222222, double 0x404D177777777777, double 5.835000e+01, double 5.850000e+01, double 0x404D533333333333, double 0x404D644444444444, double 0x404D755555555555, double 0x404D844444444444, double 0x404D933333333333, double 0x404DA22222222222, double 0x404DAEEEEEEEEEEF, double 5.945000e+01, double 5.955000e+01, double 0x404DD11111111111, double 5.970000e+01, double 0x404DE22222222222, double 0x404DE88888888889, double 0x404DEEEEEEEEEEEF, double 0x404DF33333333333, double 0x404DF77777777777, double 0x404DFBBBBBBBBBBC, double 0x404DFDDDDDDDDDDE, double 6.000000e+01, double 6.000000e+01]
define double @prutenic_prop_luna(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
}