Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

volk_32f_cos_32f/volk_32f_sin_32f error #52

Closed
hutiantian opened this issue Oct 16, 2015 · 11 comments
Closed

volk_32f_cos_32f/volk_32f_sin_32f error #52

hutiantian opened this issue Oct 16, 2015 · 11 comments

Comments

@hutiantian
Copy link

output phase error
input is -38.1703:-0.0746:-53.0061
please see the result in the attachment

cosine_output

@hutiantian
Copy link
Author

volk version is 1.1
and kernel is sse4.1 with alignment

@drmpeg
Copy link
Member

drmpeg commented Oct 18, 2015

Seeing the same issue here in gr-paint. A random angle is created, and volk_32f_cos_32f and volk_32f_sin_32f are used to generate the constellation point.

volksine

Forcing volk_32f_cos_32f and volk_32f_sin_32f to generic in volk_config generates the correct constellation.

volkgood

@n-west
Copy link
Member

n-west commented Oct 19, 2015

Yikes! That looks pretty bad. Thanks for the report. I'll look in to this. Just to clarify, it's passing QA and volk_profile gives no errors, but the result is negative for those 3 chunks of angles?

@drmpeg
Copy link
Member

drmpeg commented Oct 19, 2015

Here's the error in tabular format.

angle = 0, 0.000000, sin = 0.000000, volk sin = 0.000000, cos = 1.000000, volk cos = 1.000000
angle = 1, 0.017453, sin = 0.017452, volk sin = 0.017452, cos = 0.999848, volk cos = 0.999848
angle = 2, 0.034907, sin = 0.034899, volk sin = 0.034899, cos = 0.999391, volk cos = 0.999391
angle = 3, 0.052360, sin = 0.052336, volk sin = 0.052336, cos = 0.998630, volk cos = 0.998630
angle = 4, 0.069813, sin = 0.069756, volk sin = 0.069756, cos = 0.997564, volk cos = 0.997564
angle = 5, 0.087266, sin = 0.087156, volk sin = 0.087156, cos = 0.996195, volk cos = 0.996195
angle = 6, 0.104720, sin = 0.104528, volk sin = 0.104528, cos = 0.994522, volk cos = 0.994522
angle = 7, 0.122173, sin = 0.121869, volk sin = 0.121869, cos = 0.992546, volk cos = 0.992546
angle = 8, 0.139626, sin = 0.139173, volk sin = 0.139173, cos = 0.990268, volk cos = 0.990268
angle = 9, 0.157080, sin = 0.156434, volk sin = 0.156434, cos = 0.987688, volk cos = 0.987688
angle = 10, 0.174533, sin = 0.173648, volk sin = 0.173648, cos = 0.984808, volk cos = 0.984808
angle = 11, 0.191986, sin = 0.190809, volk sin = 0.190809, cos = 0.981627, volk cos = 0.981627
angle = 12, 0.209440, sin = 0.207912, volk sin = 0.207912, cos = 0.978148, volk cos = 0.978148
angle = 13, 0.226893, sin = 0.224951, volk sin = 0.224951, cos = 0.974370, volk cos = 0.974370
angle = 14, 0.244346, sin = 0.241922, volk sin = 0.241922, cos = 0.970296, volk cos = 0.970296
angle = 15, 0.261799, sin = 0.258819, volk sin = 0.258819, cos = 0.965926, volk cos = 0.965926
angle = 16, 0.279253, sin = 0.275637, volk sin = 0.275637, cos = 0.961262, volk cos = 0.961262
angle = 17, 0.296706, sin = 0.292372, volk sin = 0.292372, cos = 0.956305, volk cos = 0.956305
angle = 18, 0.314159, sin = 0.309017, volk sin = 0.309017, cos = 0.951057, volk cos = 0.951056
angle = 19, 0.331613, sin = 0.325568, volk sin = 0.325568, cos = 0.945519, volk cos = 0.945519
angle = 20, 0.349066, sin = 0.342020, volk sin = 0.342020, cos = 0.939693, volk cos = 0.939693
angle = 21, 0.366519, sin = 0.358368, volk sin = 0.358368, cos = 0.933580, volk cos = 0.933580
angle = 22, 0.383972, sin = 0.374607, volk sin = 0.374607, cos = 0.927184, volk cos = 0.927184
angle = 23, 0.401426, sin = 0.390731, volk sin = 0.390731, cos = 0.920505, volk cos = 0.920505
angle = 24, 0.418879, sin = 0.406737, volk sin = 0.406737, cos = 0.913545, volk cos = 0.913545
angle = 25, 0.436332, sin = 0.422618, volk sin = 0.422618, cos = 0.906308, volk cos = 0.906308
angle = 26, 0.453786, sin = 0.438371, volk sin = 0.438371, cos = 0.898794, volk cos = 0.898794
angle = 27, 0.471239, sin = 0.453991, volk sin = 0.453991, cos = 0.891007, volk cos = 0.891006
angle = 28, 0.488692, sin = 0.469472, volk sin = 0.469472, cos = 0.882948, volk cos = 0.882948
angle = 29, 0.506145, sin = 0.484810, volk sin = 0.484810, cos = 0.874620, volk cos = 0.874620
angle = 30, 0.523599, sin = 0.500000, volk sin = 0.500000, cos = 0.866025, volk cos = 0.866025
angle = 31, 0.541052, sin = 0.515038, volk sin = 0.515038, cos = 0.857167, volk cos = 0.857167
angle = 32, 0.558505, sin = 0.529919, volk sin = 0.529919, cos = 0.848048, volk cos = 0.848048
angle = 33, 0.575959, sin = 0.544639, volk sin = 0.544639, cos = 0.838671, volk cos = 0.838671
angle = 34, 0.593412, sin = 0.559193, volk sin = 0.559193, cos = 0.829038, volk cos = 0.829037
angle = 35, 0.610865, sin = 0.573576, volk sin = 0.573577, cos = 0.819152, volk cos = 0.819152
angle = 36, 0.628319, sin = 0.587785, volk sin = 0.587785, cos = 0.809017, volk cos = 0.809017
angle = 37, 0.645772, sin = 0.601815, volk sin = 0.601815, cos = 0.798636, volk cos = 0.798635
angle = 38, 0.663225, sin = 0.615661, volk sin = 0.615662, cos = 0.788011, volk cos = 0.788011
angle = 39, 0.680678, sin = 0.629320, volk sin = 0.629321, cos = 0.777146, volk cos = 0.777146
angle = 40, 0.698132, sin = 0.642788, volk sin = 0.642788, cos = 0.766044, volk cos = 0.766044
angle = 41, 0.715585, sin = 0.656059, volk sin = 0.656059, cos = 0.754710, volk cos = 0.754710
angle = 42, 0.733038, sin = 0.669131, volk sin = 0.669131, cos = 0.743145, volk cos = 0.743145
angle = 43, 0.750492, sin = 0.681998, volk sin = 0.681998, cos = 0.731354, volk cos = 0.731354
angle = 44, 0.767945, sin = 0.694658, volk sin = 0.694658, cos = 0.719340, volk cos = 0.719340
angle = 45, 0.785398, sin = 0.707107, volk sin = 0.707107, cos = 0.707107, volk cos = 0.707107
angle = 46, 0.802851, sin = 0.719340, volk sin = 0.719340, cos = 0.694658, volk cos = 0.694658
angle = 47, 0.820305, sin = 0.731354, volk sin = 0.731354, cos = 0.681998, volk cos = 0.681998
angle = 48, 0.837758, sin = 0.743145, volk sin = 0.743145, cos = 0.669131, volk cos = 0.669131
angle = 49, 0.855211, sin = 0.754710, volk sin = 0.754710, cos = 0.656059, volk cos = 0.656059
angle = 50, 0.872665, sin = 0.766044, volk sin = 0.766044, cos = 0.642788, volk cos = 0.642788
angle = 51, 0.890118, sin = 0.777146, volk sin = 0.777146, cos = 0.629320, volk cos = 0.629320
angle = 52, 0.907571, sin = 0.788011, volk sin = 0.788011, cos = 0.615661, volk cos = 0.615661
angle = 53, 0.925025, sin = 0.798636, volk sin = 0.798636, cos = 0.601815, volk cos = 0.601815
angle = 54, 0.942478, sin = 0.809017, volk sin = 0.809017, cos = 0.587785, volk cos = 0.587785
angle = 55, 0.959931, sin = 0.819152, volk sin = 0.819152, cos = 0.573576, volk cos = 0.573576
angle = 56, 0.977384, sin = 0.829038, volk sin = 0.829038, cos = 0.559193, volk cos = 0.559193
angle = 57, 0.994838, sin = 0.838671, volk sin = 0.838671, cos = 0.544639, volk cos = 0.544639
angle = 58, 1.012291, sin = 0.848048, volk sin = 0.848048, cos = 0.529919, volk cos = 0.529919
angle = 59, 1.029744, sin = 0.857167, volk sin = 0.857167, cos = 0.515038, volk cos = 0.515038
angle = 60, 1.047198, sin = 0.866025, volk sin = 0.866025, cos = 0.500000, volk cos = 0.500000
angle = 61, 1.064651, sin = 0.874620, volk sin = 0.874620, cos = 0.484810, volk cos = 0.484809
angle = 62, 1.082104, sin = 0.882948, volk sin = 0.882948, cos = 0.469472, volk cos = 0.469472
angle = 63, 1.099557, sin = 0.891007, volk sin = 0.891007, cos = 0.453991, volk cos = 0.453990
angle = 64, 1.117011, sin = 0.898794, volk sin = 0.898794, cos = 0.438371, volk cos = 0.438371
angle = 65, 1.134464, sin = 0.906308, volk sin = 0.906308, cos = 0.422618, volk cos = 0.422618
angle = 66, 1.151917, sin = 0.913545, volk sin = 0.913545, cos = 0.406737, volk cos = 0.406737
angle = 67, 1.169371, sin = 0.920505, volk sin = 0.920505, cos = 0.390731, volk cos = 0.390731
angle = 68, 1.186824, sin = 0.927184, volk sin = 0.927184, cos = 0.374607, volk cos = -0.374607 cosine error
angle = 69, 1.204277, sin = 0.933580, volk sin = 0.933581, cos = 0.358368, volk cos = -0.358368 "
angle = 70, 1.221730, sin = 0.939693, volk sin = 0.939693, cos = 0.342020, volk cos = -0.342020 "
angle = 71, 1.239184, sin = 0.945519, volk sin = 0.945519, cos = 0.325568, volk cos = -0.325568 "
angle = 72, 1.256637, sin = 0.951057, volk sin = 0.951057, cos = 0.309017, volk cos = -0.309017 "
angle = 73, 1.274090, sin = 0.956305, volk sin = 0.956305, cos = 0.292372, volk cos = -0.292372 "
angle = 74, 1.291544, sin = 0.961262, volk sin = 0.961262, cos = 0.275637, volk cos = -0.275637 "
angle = 75, 1.308997, sin = 0.965926, volk sin = 0.965926, cos = 0.258819, volk cos = -0.258819 "
angle = 76, 1.326450, sin = 0.970296, volk sin = 0.970296, cos = 0.241922, volk cos = -0.241922 "
angle = 77, 1.343904, sin = 0.974370, volk sin = 0.974370, cos = 0.224951, volk cos = -0.224951 "
angle = 78, 1.361357, sin = 0.978148, volk sin = 0.978148, cos = 0.207912, volk cos = -0.207912 "
angle = 79, 1.378810, sin = 0.981627, volk sin = 0.981627, cos = 0.190809, volk cos = -0.190809 "
angle = 80, 1.396263, sin = 0.984808, volk sin = 0.984808, cos = 0.173648, volk cos = -0.173648 "
angle = 81, 1.413717, sin = 0.987688, volk sin = 0.987688, cos = 0.156434, volk cos = -0.156434 "
angle = 82, 1.431170, sin = 0.990268, volk sin = 0.990268, cos = 0.139173, volk cos = -0.139173 "
angle = 83, 1.448623, sin = 0.992546, volk sin = 0.992546, cos = 0.121869, volk cos = -0.121869 "
angle = 84, 1.466077, sin = 0.994522, volk sin = 0.994522, cos = 0.104528, volk cos = -0.104528 "
angle = 85, 1.483530, sin = 0.996195, volk sin = 0.996195, cos = 0.087156, volk cos = -0.087156 "
angle = 86, 1.500983, sin = 0.997564, volk sin = 0.997564, cos = 0.069757, volk cos = -0.069756 "
angle = 87, 1.518436, sin = 0.998630, volk sin = 0.998630, cos = 0.052336, volk cos = -0.052336 "
angle = 88, 1.535890, sin = 0.999391, volk sin = 0.999391, cos = 0.034899, volk cos = -0.034899 "
angle = 89, 1.553343, sin = 0.999848, volk sin = 0.999848, cos = 0.017452, volk cos = -0.017452 cosine error

angle = 90, 1.570796, sin = 1.000000, volk sin = 1.000000, cos = -0.000000, volk cos = -0.000000
angle = 91, 1.588250, sin = 0.999848, volk sin = 0.999848, cos = -0.017452, volk cos = -0.017452
angle = 92, 1.605703, sin = 0.999391, volk sin = 0.999391, cos = -0.034899, volk cos = -0.034900
angle = 93, 1.623156, sin = 0.998630, volk sin = 0.998630, cos = -0.052336, volk cos = -0.052336
angle = 94, 1.640610, sin = 0.997564, volk sin = 0.997564, cos = -0.069756, volk cos = -0.069757
angle = 95, 1.658063, sin = 0.996195, volk sin = 0.996195, cos = -0.087156, volk cos = -0.087156
angle = 96, 1.675516, sin = 0.994522, volk sin = 0.994522, cos = -0.104529, volk cos = -0.104529
angle = 97, 1.692969, sin = 0.992546, volk sin = 0.992546, cos = -0.121869, volk cos = -0.121869
angle = 98, 1.710423, sin = 0.990268, volk sin = 0.990268, cos = -0.139173, volk cos = -0.139173
angle = 99, 1.727876, sin = 0.987688, volk sin = 0.987688, cos = -0.156434, volk cos = -0.156435
angle = 100, 1.745329, sin = 0.984808, volk sin = 0.984808, cos = -0.173648, volk cos = -0.173648
angle = 101, 1.762783, sin = 0.981627, volk sin = 0.981627, cos = -0.190809, volk cos = -0.190809
angle = 102, 1.780236, sin = 0.978148, volk sin = 0.978148, cos = -0.207912, volk cos = -0.207912
angle = 103, 1.797689, sin = 0.974370, volk sin = 0.974370, cos = -0.224951, volk cos = -0.224951
angle = 104, 1.815142, sin = 0.970296, volk sin = 0.970296, cos = -0.241922, volk cos = -0.241922
angle = 105, 1.832596, sin = 0.965926, volk sin = 0.965926, cos = -0.258819, volk cos = -0.258819
angle = 106, 1.850049, sin = 0.961262, volk sin = 0.961262, cos = -0.275637, volk cos = -0.275637
angle = 107, 1.867502, sin = 0.956305, volk sin = 0.956305, cos = -0.292372, volk cos = -0.292372
angle = 108, 1.884956, sin = 0.951057, volk sin = 0.951056, cos = -0.309017, volk cos = -0.309017
angle = 109, 1.902409, sin = 0.945519, volk sin = 0.945519, cos = -0.325568, volk cos = -0.325568
angle = 110, 1.919862, sin = 0.939693, volk sin = 0.939693, cos = -0.342020, volk cos = -0.342020
angle = 111, 1.937315, sin = 0.933580, volk sin = 0.933580, cos = -0.358368, volk cos = -0.358368
angle = 112, 1.954769, sin = 0.927184, volk sin = 0.927184, cos = -0.374607, volk cos = -0.374607
angle = 113, 1.972222, sin = 0.920505, volk sin = 0.920505, cos = -0.390731, volk cos = -0.390731
angle = 114, 1.989675, sin = 0.913545, volk sin = 0.913545, cos = -0.406737, volk cos = -0.406737
angle = 115, 2.007129, sin = 0.906308, volk sin = 0.906308, cos = -0.422618, volk cos = -0.422618
angle = 116, 2.024582, sin = 0.898794, volk sin = 0.898794, cos = -0.438371, volk cos = -0.438371
angle = 117, 2.042035, sin = 0.891006, volk sin = 0.891006, cos = -0.453991, volk cos = -0.453991
angle = 118, 2.059489, sin = 0.882948, volk sin = 0.882948, cos = -0.469472, volk cos = -0.469472
angle = 119, 2.076942, sin = 0.874620, volk sin = 0.874620, cos = -0.484810, volk cos = -0.484810
angle = 120, 2.094395, sin = 0.866025, volk sin = 0.866025, cos = -0.500000, volk cos = -0.500000
angle = 121, 2.111848, sin = 0.857167, volk sin = 0.857167, cos = -0.515038, volk cos = -0.515038
angle = 122, 2.129302, sin = 0.848048, volk sin = 0.848048, cos = -0.529919, volk cos = -0.529920
angle = 123, 2.146755, sin = 0.838671, volk sin = 0.838670, cos = -0.544639, volk cos = -0.544639
angle = 124, 2.164208, sin = 0.829038, volk sin = 0.829037, cos = -0.559193, volk cos = -0.559193
angle = 125, 2.181662, sin = 0.819152, volk sin = 0.819152, cos = -0.573576, volk cos = -0.573577
angle = 126, 2.199115, sin = 0.809017, volk sin = 0.809017, cos = -0.587785, volk cos = -0.587785
angle = 127, 2.216568, sin = 0.798635, volk sin = 0.798635, cos = -0.601815, volk cos = -0.601815
angle = 128, 2.234021, sin = 0.788011, volk sin = 0.788011, cos = -0.615661, volk cos = -0.615662
angle = 129, 2.251475, sin = 0.777146, volk sin = 0.777146, cos = -0.629320, volk cos = -0.629320
angle = 130, 2.268928, sin = 0.766044, volk sin = 0.766044, cos = -0.642788, volk cos = -0.642788
angle = 131, 2.286381, sin = 0.754710, volk sin = 0.754710, cos = -0.656059, volk cos = -0.656059
angle = 132, 2.303835, sin = 0.743145, volk sin = 0.743145, cos = -0.669131, volk cos = -0.669131
angle = 133, 2.321288, sin = 0.731354, volk sin = 0.731354, cos = -0.681998, volk cos = -0.681998
angle = 134, 2.338741, sin = 0.719340, volk sin = 0.719340, cos = -0.694658, volk cos = -0.694659
angle = 135, 2.356194, sin = 0.707107, volk sin = 0.707107, cos = -0.707107, volk cos = -0.707107
angle = 136, 2.373648, sin = 0.694658, volk sin = 0.694658, cos = -0.719340, volk cos = -0.719340
angle = 137, 2.391101, sin = 0.681998, volk sin = 0.681998, cos = -0.731354, volk cos = -0.731354
angle = 138, 2.408554, sin = 0.669131, volk sin = 0.669131, cos = -0.743145, volk cos = -0.743145
angle = 139, 2.426008, sin = 0.656059, volk sin = 0.656059, cos = -0.754710, volk cos = -0.754710
angle = 140, 2.443461, sin = 0.642788, volk sin = 0.642788, cos = -0.766044, volk cos = -0.766044
angle = 141, 2.460914, sin = 0.629320, volk sin = 0.629320, cos = -0.777146, volk cos = -0.777146
angle = 142, 2.478368, sin = 0.615661, volk sin = 0.615661, cos = -0.788011, volk cos = -0.788011
angle = 143, 2.495821, sin = 0.601815, volk sin = 0.601815, cos = -0.798635, volk cos = -0.798636
angle = 144, 2.513274, sin = 0.587785, volk sin = 0.587785, cos = -0.809017, volk cos = -0.809017
angle = 145, 2.530727, sin = 0.573576, volk sin = 0.573576, cos = -0.819152, volk cos = -0.819152
angle = 146, 2.548181, sin = 0.559193, volk sin = 0.559193, cos = -0.829038, volk cos = -0.829038
angle = 147, 2.565634, sin = 0.544639, volk sin = 0.544639, cos = -0.838671, volk cos = -0.838671
angle = 148, 2.583087, sin = 0.529919, volk sin = 0.529919, cos = -0.848048, volk cos = -0.848048
angle = 149, 2.600541, sin = 0.515038, volk sin = 0.515038, cos = -0.857167, volk cos = -0.857167
angle = 150, 2.617994, sin = 0.500000, volk sin = 0.500000, cos = -0.866025, volk cos = -0.866025
angle = 151, 2.635447, sin = 0.484810, volk sin = 0.484809, cos = -0.874620, volk cos = -0.874620
angle = 152, 2.652900, sin = 0.469472, volk sin = 0.469471, cos = -0.882948, volk cos = -0.882948
angle = 153, 2.670354, sin = 0.453991, volk sin = 0.453990, cos = -0.891006, volk cos = -0.891007
angle = 154, 2.687807, sin = 0.438371, volk sin = 0.438371, cos = -0.898794, volk cos = -0.898794
angle = 155, 2.705260, sin = 0.422618, volk sin = 0.422618, cos = -0.906308, volk cos = -0.906308
angle = 156, 2.722714, sin = 0.406737, volk sin = 0.406736, cos = -0.913545, volk cos = -0.913546
angle = 157, 2.740167, sin = 0.390731, volk sin = 0.390731, cos = -0.920505, volk cos = -0.920505
angle = 158, 2.757620, sin = 0.374606, volk sin = -0.374606, cos = -0.927184, volk cos = -0.927184 sine error
angle = 159, 2.775074, sin = 0.358368, volk sin = -0.358368, cos = -0.933580, volk cos = -0.933581 "
angle = 160, 2.792527, sin = 0.342020, volk sin = -0.342020, cos = -0.939693, volk cos = -0.939693 "
angle = 161, 2.809980, sin = 0.325568, volk sin = -0.325568, cos = -0.945519, volk cos = -0.945519 "
angle = 162, 2.827433, sin = 0.309017, volk sin = -0.309017, cos = -0.951057, volk cos = -0.951057 "
angle = 163, 2.844887, sin = 0.292372, volk sin = -0.292371, cos = -0.956305, volk cos = -0.956305 "
angle = 164, 2.862340, sin = 0.275637, volk sin = -0.275637, cos = -0.961262, volk cos = -0.961262 "
angle = 165, 2.879793, sin = 0.258819, volk sin = -0.258819, cos = -0.965926, volk cos = -0.965926 "
angle = 166, 2.897247, sin = 0.241922, volk sin = -0.241922, cos = -0.970296, volk cos = -0.970296 "
angle = 167, 2.914700, sin = 0.224951, volk sin = -0.224951, cos = -0.974370, volk cos = -0.974370 "
angle = 168, 2.932153, sin = 0.207912, volk sin = -0.207911, cos = -0.978148, volk cos = -0.978148 "
angle = 169, 2.949606, sin = 0.190809, volk sin = -0.190809, cos = -0.981627, volk cos = -0.981627 "
angle = 170, 2.967060, sin = 0.173648, volk sin = -0.173648, cos = -0.984808, volk cos = -0.984808 "
angle = 171, 2.984513, sin = 0.156434, volk sin = -0.156434, cos = -0.987688, volk cos = -0.987688 "
angle = 172, 3.001966, sin = 0.139173, volk sin = -0.139173, cos = -0.990268, volk cos = -0.990268 "
angle = 173, 3.019420, sin = 0.121869, volk sin = -0.121869, cos = -0.992546, volk cos = -0.992546 "
angle = 174, 3.036873, sin = 0.104528, volk sin = -0.104528, cos = -0.994522, volk cos = -0.994522 "
angle = 175, 3.054326, sin = 0.087156, volk sin = -0.087155, cos = -0.996195, volk cos = -0.996195 "
angle = 176, 3.071779, sin = 0.069756, volk sin = -0.069756, cos = -0.997564, volk cos = -0.997564 "
angle = 177, 3.089233, sin = 0.052336, volk sin = -0.052336, cos = -0.998630, volk cos = -0.998630 "
angle = 178, 3.106686, sin = 0.034899, volk sin = -0.034899, cos = -0.999391, volk cos = -0.999391 "
angle = 179, 3.124139, sin = 0.017452, volk sin = -0.017452, cos = -0.999848, volk cos = -0.999848 sine error

angle = 180, 3.141593, sin = -0.000000, volk sin = -0.000000, cos = -1.000000, volk cos = -1.000000
angle = 181, 3.159046, sin = -0.017452, volk sin = -0.017453, cos = -0.999848, volk cos = -0.999848
angle = 182, 3.176499, sin = -0.034899, volk sin = -0.034900, cos = -0.999391, volk cos = -0.999391
angle = 183, 3.193953, sin = -0.052336, volk sin = -0.052336, cos = -0.998630, volk cos = -0.998630
angle = 184, 3.211406, sin = -0.069756, volk sin = -0.069757, cos = -0.997564, volk cos = -0.997564
angle = 185, 3.228859, sin = -0.087156, volk sin = -0.087156, cos = -0.996195, volk cos = -0.996195
angle = 186, 3.246312, sin = -0.104528, volk sin = -0.104529, cos = -0.994522, volk cos = -0.994522
angle = 187, 3.263766, sin = -0.121869, volk sin = -0.121870, cos = -0.992546, volk cos = -0.992546
angle = 188, 3.281219, sin = -0.139173, volk sin = -0.139173, cos = -0.990268, volk cos = -0.990268
angle = 189, 3.298672, sin = -0.156434, volk sin = -0.156435, cos = -0.987688, volk cos = -0.987688
angle = 190, 3.316126, sin = -0.173648, volk sin = -0.173648, cos = -0.984808, volk cos = -0.984808
angle = 191, 3.333579, sin = -0.190809, volk sin = -0.190809, cos = -0.981627, volk cos = -0.981627
angle = 192, 3.351032, sin = -0.207912, volk sin = -0.207912, cos = -0.978148, volk cos = -0.978148
angle = 193, 3.368485, sin = -0.224951, volk sin = -0.224951, cos = -0.974370, volk cos = -0.974370
angle = 194, 3.385939, sin = -0.241922, volk sin = -0.241922, cos = -0.970296, volk cos = -0.970296
angle = 195, 3.403392, sin = -0.258819, volk sin = -0.258819, cos = -0.965926, volk cos = -0.965926
angle = 196, 3.420845, sin = -0.275637, volk sin = -0.275637, cos = -0.961262, volk cos = -0.961262
angle = 197, 3.438299, sin = -0.292372, volk sin = -0.292372, cos = -0.956305, volk cos = -0.956305
angle = 198, 3.455752, sin = -0.309017, volk sin = -0.309017, cos = -0.951057, volk cos = -0.951056
angle = 199, 3.473205, sin = -0.325568, volk sin = -0.325568, cos = -0.945519, volk cos = -0.945518
angle = 200, 3.490659, sin = -0.342020, volk sin = -0.342020, cos = -0.939693, volk cos = -0.939693
angle = 201, 3.508112, sin = -0.358368, volk sin = -0.358368, cos = -0.933580, volk cos = -0.933580
angle = 202, 3.525565, sin = -0.374607, volk sin = -0.374607, cos = -0.927184, volk cos = -0.927184
angle = 203, 3.543018, sin = -0.390731, volk sin = -0.390731, cos = -0.920505, volk cos = -0.920505
angle = 204, 3.560472, sin = -0.406737, volk sin = -0.406737, cos = -0.913545, volk cos = -0.913545
angle = 205, 3.577925, sin = -0.422618, volk sin = -0.422618, cos = -0.906308, volk cos = -0.906308
angle = 206, 3.595378, sin = -0.438371, volk sin = -0.438371, cos = -0.898794, volk cos = -0.898794
angle = 207, 3.612832, sin = -0.453991, volk sin = -0.453991, cos = -0.891007, volk cos = -0.891006
angle = 208, 3.630285, sin = -0.469472, volk sin = -0.469472, cos = -0.882948, volk cos = -0.882948
angle = 209, 3.647738, sin = -0.484810, volk sin = -0.484810, cos = -0.874620, volk cos = -0.874620
angle = 210, 3.665191, sin = -0.500000, volk sin = -0.500000, cos = -0.866025, volk cos = -0.866025
angle = 211, 3.682645, sin = -0.515038, volk sin = -0.515038, cos = -0.857167, volk cos = -0.857167
angle = 212, 3.700098, sin = -0.529919, volk sin = -0.529920, cos = -0.848048, volk cos = -0.848048
angle = 213, 3.717551, sin = -0.544639, volk sin = -0.544639, cos = -0.838671, volk cos = -0.838670
angle = 214, 3.735005, sin = -0.559193, volk sin = -0.559193, cos = -0.829038, volk cos = -0.829037
angle = 215, 3.752458, sin = -0.573576, volk sin = -0.573577, cos = -0.819152, volk cos = -0.819152
angle = 216, 3.769911, sin = -0.587785, volk sin = -0.587785, cos = -0.809017, volk cos = -0.809017
angle = 217, 3.787364, sin = -0.601815, volk sin = -0.601815, cos = -0.798636, volk cos = -0.798635
angle = 218, 3.804818, sin = -0.615661, volk sin = -0.615662, cos = -0.788011, volk cos = -0.788011
angle = 219, 3.822271, sin = -0.629320, volk sin = -0.629321, cos = -0.777146, volk cos = -0.777146
angle = 220, 3.839724, sin = -0.642788, volk sin = -0.642788, cos = -0.766044, volk cos = -0.766044
angle = 221, 3.857178, sin = -0.656059, volk sin = -0.656059, cos = -0.754710, volk cos = -0.754709
angle = 222, 3.874631, sin = -0.669131, volk sin = -0.669131, cos = -0.743145, volk cos = -0.743145
angle = 223, 3.892084, sin = -0.681998, volk sin = -0.681998, cos = -0.731354, volk cos = -0.731354
angle = 224, 3.909538, sin = -0.694658, volk sin = -0.694659, cos = -0.719340, volk cos = -0.719340
angle = 225, 3.926991, sin = -0.707107, volk sin = -0.707107, cos = -0.707107, volk cos = -0.707107
angle = 226, 3.944444, sin = -0.719340, volk sin = -0.719340, cos = -0.694658, volk cos = -0.694658
angle = 227, 3.961897, sin = -0.731354, volk sin = -0.731354, cos = -0.681998, volk cos = -0.681998
angle = 228, 3.979351, sin = -0.743145, volk sin = -0.743145, cos = -0.669131, volk cos = -0.669130
angle = 229, 3.996804, sin = -0.754710, volk sin = -0.754710, cos = -0.656059, volk cos = -0.656059
angle = 230, 4.014257, sin = -0.766045, volk sin = -0.766045, cos = -0.642787, volk cos = -0.642787
angle = 231, 4.031711, sin = -0.777146, volk sin = -0.777146, cos = -0.629320, volk cos = -0.629320
angle = 232, 4.049164, sin = -0.788011, volk sin = -0.788011, cos = -0.615662, volk cos = -0.615661
angle = 233, 4.066617, sin = -0.798635, volk sin = -0.798636, cos = -0.601815, volk cos = -0.601815
angle = 234, 4.084071, sin = -0.809017, volk sin = -0.809017, cos = -0.587785, volk cos = -0.587785
angle = 235, 4.101524, sin = -0.819152, volk sin = -0.819152, cos = -0.573576, volk cos = -0.573576
angle = 236, 4.118977, sin = -0.829038, volk sin = -0.829038, cos = -0.559193, volk cos = -0.559193
angle = 237, 4.136430, sin = -0.838671, volk sin = -0.838671, cos = -0.544639, volk cos = -0.544639
angle = 238, 4.153883, sin = -0.848048, volk sin = -0.848048, cos = -0.529919, volk cos = -0.529919
angle = 239, 4.171337, sin = -0.857167, volk sin = -0.857168, cos = -0.515038, volk cos = -0.515038
angle = 240, 4.188790, sin = -0.866025, volk sin = -0.866026, cos = -0.500000, volk cos = -0.500000
angle = 241, 4.206244, sin = -0.874620, volk sin = -0.874620, cos = -0.484810, volk cos = -0.484809
angle = 242, 4.223697, sin = -0.882948, volk sin = -0.882948, cos = -0.469472, volk cos = -0.469471
angle = 243, 4.241150, sin = -0.891006, volk sin = -0.891007, cos = -0.453991, volk cos = -0.453990
angle = 244, 4.258604, sin = -0.898794, volk sin = -0.898794, cos = -0.438371, volk cos = -0.438371
angle = 245, 4.276057, sin = -0.906308, volk sin = -0.906308, cos = -0.422618, volk cos = -0.422618
angle = 246, 4.293510, sin = -0.913545, volk sin = -0.913546, cos = -0.406737, volk cos = -0.406736
angle = 247, 4.310963, sin = -0.920505, volk sin = -0.920505, cos = -0.390731, volk cos = -0.390731
angle = 248, 4.328416, sin = -0.927184, volk sin = -0.927184, cos = -0.374607, volk cos = 0.374607 cosine error
angle = 249, 4.345870, sin = -0.933580, volk sin = -0.933581, cos = -0.358368, volk cos = 0.358368 "
angle = 250, 4.363323, sin = -0.939693, volk sin = -0.939693, cos = -0.342020, volk cos = 0.342020 "
angle = 251, 4.380776, sin = -0.945519, volk sin = -0.945519, cos = -0.325568, volk cos = 0.325568 "
angle = 252, 4.398230, sin = -0.951056, volk sin = -0.951057, cos = -0.309017, volk cos = 0.309017 "
angle = 253, 4.415683, sin = -0.956305, volk sin = -0.956305, cos = -0.292372, volk cos = 0.292372 "
angle = 254, 4.433136, sin = -0.961262, volk sin = -0.961262, cos = -0.275637, volk cos = 0.275637 "
angle = 255, 4.450590, sin = -0.965926, volk sin = -0.965926, cos = -0.258819, volk cos = 0.258819 "
angle = 256, 4.468043, sin = -0.970296, volk sin = -0.970296, cos = -0.241922, volk cos = 0.241922 "
angle = 257, 4.485496, sin = -0.974370, volk sin = -0.974370, cos = -0.224951, volk cos = 0.224951 "
angle = 258, 4.502949, sin = -0.978148, volk sin = -0.978148, cos = -0.207912, volk cos = 0.207912 "
angle = 259, 4.520403, sin = -0.981627, volk sin = -0.981627, cos = -0.190809, volk cos = 0.190809 "
angle = 260, 4.537856, sin = -0.984808, volk sin = -0.984808, cos = -0.173648, volk cos = 0.173648 "
angle = 261, 4.555309, sin = -0.987688, volk sin = -0.987688, cos = -0.156435, volk cos = 0.156434 "
angle = 262, 4.572762, sin = -0.990268, volk sin = -0.990268, cos = -0.139173, volk cos = 0.139173 "
angle = 263, 4.590216, sin = -0.992546, volk sin = -0.992546, cos = -0.121869, volk cos = 0.121869 "
angle = 264, 4.607669, sin = -0.994522, volk sin = -0.994522, cos = -0.104528, volk cos = 0.104528 "
angle = 265, 4.625123, sin = -0.996195, volk sin = -0.996195, cos = -0.087156, volk cos = 0.087155 "
angle = 266, 4.642576, sin = -0.997564, volk sin = -0.997564, cos = -0.069757, volk cos = 0.069756 "
angle = 267, 4.660029, sin = -0.998630, volk sin = -0.998630, cos = -0.052336, volk cos = 0.052336 "
angle = 268, 4.677483, sin = -0.999391, volk sin = -0.999391, cos = -0.034899, volk cos = 0.034899 "
angle = 269, 4.694936, sin = -0.999848, volk sin = -0.999848, cos = -0.017452, volk cos = 0.017452 cosine error

angle = 270, 4.712389, sin = -1.000000, volk sin = -1.000000, cos = 0.000000, volk cos = 0.000000
angle = 271, 4.729842, sin = -0.999848, volk sin = -0.999848, cos = 0.017452, volk cos = 0.017453
angle = 272, 4.747295, sin = -0.999391, volk sin = -0.999391, cos = 0.034899, volk cos = 0.034900
angle = 273, 4.764749, sin = -0.998630, volk sin = -0.998630, cos = 0.052336, volk cos = 0.052336
angle = 274, 4.782202, sin = -0.997564, volk sin = -0.997564, cos = 0.069757, volk cos = 0.069757
angle = 275, 4.799655, sin = -0.996195, volk sin = -0.996195, cos = 0.087156, volk cos = 0.087156
angle = 276, 4.817109, sin = -0.994522, volk sin = -0.994522, cos = 0.104528, volk cos = 0.104529
angle = 277, 4.834562, sin = -0.992546, volk sin = -0.992546, cos = 0.121869, volk cos = 0.121869
angle = 278, 4.852015, sin = -0.990268, volk sin = -0.990268, cos = 0.139173, volk cos = 0.139174
angle = 279, 4.869469, sin = -0.987688, volk sin = -0.987688, cos = 0.156435, volk cos = 0.156435
angle = 280, 4.886922, sin = -0.984808, volk sin = -0.984808, cos = 0.173648, volk cos = 0.173648
angle = 281, 4.904375, sin = -0.981627, volk sin = -0.981627, cos = 0.190809, volk cos = 0.190809
angle = 282, 4.921828, sin = -0.978148, volk sin = -0.978148, cos = 0.207911, volk cos = 0.207912
angle = 283, 4.939282, sin = -0.974370, volk sin = -0.974370, cos = 0.224951, volk cos = 0.224951
angle = 284, 4.956735, sin = -0.970296, volk sin = -0.970296, cos = 0.241922, volk cos = 0.241922
angle = 285, 4.974188, sin = -0.965926, volk sin = -0.965926, cos = 0.258819, volk cos = 0.258819
angle = 286, 4.991642, sin = -0.961262, volk sin = -0.961262, cos = 0.275637, volk cos = 0.275637
angle = 287, 5.009095, sin = -0.956305, volk sin = -0.956305, cos = 0.292371, volk cos = 0.292372
angle = 288, 5.026548, sin = -0.951056, volk sin = -0.951056, cos = 0.309017, volk cos = 0.309017
angle = 289, 5.044002, sin = -0.945519, volk sin = -0.945518, cos = 0.325568, volk cos = 0.325568
angle = 290, 5.061455, sin = -0.939693, volk sin = -0.939692, cos = 0.342020, volk cos = 0.342020
angle = 291, 5.078908, sin = -0.933580, volk sin = -0.933580, cos = 0.358368, volk cos = 0.358368
angle = 292, 5.096362, sin = -0.927184, volk sin = -0.927184, cos = 0.374607, volk cos = 0.374607
angle = 293, 5.113815, sin = -0.920505, volk sin = -0.920505, cos = 0.390731, volk cos = 0.390732
angle = 294, 5.131268, sin = -0.913545, volk sin = -0.913545, cos = 0.406737, volk cos = 0.406737
angle = 295, 5.148721, sin = -0.906308, volk sin = -0.906308, cos = 0.422618, volk cos = 0.422618
angle = 296, 5.166174, sin = -0.898794, volk sin = -0.898794, cos = 0.438371, volk cos = 0.438371
angle = 297, 5.183628, sin = -0.891006, volk sin = -0.891006, cos = 0.453991, volk cos = 0.453991
angle = 298, 5.201081, sin = -0.882948, volk sin = -0.882947, cos = 0.469472, volk cos = 0.469472
angle = 299, 5.218534, sin = -0.874620, volk sin = -0.874620, cos = 0.484810, volk cos = 0.484810
angle = 300, 5.235988, sin = -0.866025, volk sin = -0.866025, cos = 0.500000, volk cos = 0.500000
angle = 301, 5.253441, sin = -0.857167, volk sin = -0.857167, cos = 0.515038, volk cos = 0.515038
angle = 302, 5.270895, sin = -0.848048, volk sin = -0.848048, cos = 0.529919, volk cos = 0.529920
angle = 303, 5.288348, sin = -0.838671, volk sin = -0.838670, cos = 0.544639, volk cos = 0.544639
angle = 304, 5.305801, sin = -0.829038, volk sin = -0.829037, cos = 0.559193, volk cos = 0.559193
angle = 305, 5.323254, sin = -0.819152, volk sin = -0.819152, cos = 0.573576, volk cos = 0.573577
angle = 306, 5.340707, sin = -0.809017, volk sin = -0.809017, cos = 0.587785, volk cos = 0.587785
angle = 307, 5.358161, sin = -0.798635, volk sin = -0.798635, cos = 0.601815, volk cos = 0.601815
angle = 308, 5.375614, sin = -0.788011, volk sin = -0.788011, cos = 0.615662, volk cos = 0.615662
angle = 309, 5.393067, sin = -0.777146, volk sin = -0.777146, cos = 0.629320, volk cos = 0.629321
angle = 310, 5.410521, sin = -0.766045, volk sin = -0.766044, cos = 0.642788, volk cos = 0.642788
angle = 311, 5.427974, sin = -0.754710, volk sin = -0.754710, cos = 0.656059, volk cos = 0.656059
angle = 312, 5.445427, sin = -0.743145, volk sin = -0.743145, cos = 0.669131, volk cos = 0.669131
angle = 313, 5.462881, sin = -0.731354, volk sin = -0.731353, cos = 0.681998, volk cos = 0.681999
angle = 314, 5.480334, sin = -0.719340, volk sin = -0.719340, cos = 0.694658, volk cos = 0.694659
angle = 315, 5.497787, sin = -0.707107, volk sin = -0.707107, cos = 0.707107, volk cos = 0.707107
angle = 316, 5.515241, sin = -0.694658, volk sin = -0.694658, cos = 0.719340, volk cos = 0.719340
angle = 317, 5.532694, sin = -0.681998, volk sin = -0.681998, cos = 0.731354, volk cos = 0.731354
angle = 318, 5.550147, sin = -0.669131, volk sin = -0.669130, cos = 0.743145, volk cos = 0.743145
angle = 319, 5.567600, sin = -0.656059, volk sin = -0.656059, cos = 0.754710, volk cos = 0.754710
angle = 320, 5.585053, sin = -0.642788, volk sin = -0.642788, cos = 0.766044, volk cos = 0.766044
angle = 321, 5.602507, sin = -0.629320, volk sin = -0.629320, cos = 0.777146, volk cos = 0.777146
angle = 322, 5.619960, sin = -0.615661, volk sin = -0.615661, cos = 0.788011, volk cos = 0.788011
angle = 323, 5.637414, sin = -0.601815, volk sin = -0.601815, cos = 0.798636, volk cos = 0.798636
angle = 324, 5.654867, sin = -0.587785, volk sin = -0.587785, cos = 0.809017, volk cos = 0.809017
angle = 325, 5.672320, sin = -0.573577, volk sin = -0.573576, cos = 0.819152, volk cos = 0.819152
angle = 326, 5.689774, sin = -0.559193, volk sin = -0.559192, cos = 0.829038, volk cos = 0.829038
angle = 327, 5.707227, sin = -0.544639, volk sin = -0.544639, cos = 0.838671, volk cos = 0.838671
angle = 328, 5.724680, sin = -0.529919, volk sin = -0.529919, cos = 0.848048, volk cos = 0.848048
angle = 329, 5.742133, sin = -0.515038, volk sin = -0.515038, cos = 0.857167, volk cos = 0.857167
angle = 330, 5.759586, sin = -0.500000, volk sin = -0.500000, cos = 0.866025, volk cos = 0.866025
angle = 331, 5.777040, sin = -0.484809, volk sin = -0.484809, cos = 0.874620, volk cos = 0.874620
angle = 332, 5.794493, sin = -0.469471, volk sin = -0.469471, cos = 0.882948, volk cos = 0.882948
angle = 333, 5.811946, sin = -0.453991, volk sin = -0.453990, cos = 0.891007, volk cos = 0.891007
angle = 334, 5.829400, sin = -0.438371, volk sin = -0.438371, cos = 0.898794, volk cos = 0.898794
angle = 335, 5.846853, sin = -0.422618, volk sin = -0.422618, cos = 0.906308, volk cos = 0.906308
angle = 336, 5.864306, sin = -0.406736, volk sin = -0.406736, cos = 0.913546, volk cos = 0.913546
angle = 337, 5.881760, sin = -0.390731, volk sin = -0.390731, cos = 0.920505, volk cos = 0.920505
angle = 338, 5.899213, sin = -0.374607, volk sin = 0.374606, cos = 0.927184, volk cos = 0.927184 sine error
angle = 339, 5.916666, sin = -0.358368, volk sin = 0.358368, cos = 0.933580, volk cos = 0.933581 "
angle = 340, 5.934119, sin = -0.342020, volk sin = 0.342020, cos = 0.939693, volk cos = 0.939693 "
angle = 341, 5.951573, sin = -0.325568, volk sin = 0.325568, cos = 0.945519, volk cos = 0.945519 "
angle = 342, 5.969026, sin = -0.309017, volk sin = 0.309017, cos = 0.951057, volk cos = 0.951057 "
angle = 343, 5.986479, sin = -0.292372, volk sin = 0.292371, cos = 0.956305, volk cos = 0.956305 "
angle = 344, 6.003932, sin = -0.275638, volk sin = 0.275637, cos = 0.961262, volk cos = 0.961262 "
angle = 345, 6.021386, sin = -0.258819, volk sin = 0.258819, cos = 0.965926, volk cos = 0.965926 "
angle = 346, 6.038839, sin = -0.241922, volk sin = 0.241921, cos = 0.970296, volk cos = 0.970296 "
angle = 347, 6.056293, sin = -0.224951, volk sin = 0.224951, cos = 0.974370, volk cos = 0.974370 "
angle = 348, 6.073746, sin = -0.207912, volk sin = 0.207911, cos = 0.978148, volk cos = 0.978148 "
angle = 349, 6.091199, sin = -0.190809, volk sin = 0.190809, cos = 0.981627, volk cos = 0.981627 "
angle = 350, 6.108653, sin = -0.173648, volk sin = 0.173648, cos = 0.984808, volk cos = 0.984808 "
angle = 351, 6.126106, sin = -0.156434, volk sin = 0.156434, cos = 0.987688, volk cos = 0.987688 "
angle = 352, 6.143559, sin = -0.139173, volk sin = 0.139173, cos = 0.990268, volk cos = 0.990268 "
angle = 353, 6.161012, sin = -0.121869, volk sin = 0.121869, cos = 0.992546, volk cos = 0.992546 "
angle = 354, 6.178465, sin = -0.104529, volk sin = 0.104528, cos = 0.994522, volk cos = 0.994522 "
angle = 355, 6.195919, sin = -0.087156, volk sin = 0.087155, cos = 0.996195, volk cos = 0.996195 "
angle = 356, 6.213372, sin = -0.069756, volk sin = 0.069756, cos = 0.997564, volk cos = 0.997564 "
angle = 357, 6.230825, sin = -0.052336, volk sin = 0.052336, cos = 0.998630, volk cos = 0.998630 "
angle = 358, 6.248279, sin = -0.034900, volk sin = 0.034899, cos = 0.999391, volk cos = 0.999391 "
angle = 359, 6.265732, sin = -0.017453, volk sin = 0.017452, cos = 0.999848, volk cos = 0.999848 sine error

@n-west
Copy link
Member

n-west commented Nov 4, 2015

OK, just got around to this today. My first step whenever I look at this stuff is to figure out why our QA fails. In this case it's because our auto-generated numbers are (-1,1). When I change that to (-pi, pi) I get failures for the trig functions (tan is also off, tanh is too, but that's just a tolerance problem for high input vals).

Unfortunately I haven't seen an obvious transition/pattern with where the sign errors are (please tell me if you do, which may help exploring the math). I didn't actually write the original code, so it'll take another night of re-deriving the appromixations.

@drmpeg
Copy link
Member

drmpeg commented Nov 4, 2015

For cosine, the sign errors are from 3/8 pi to 1/2 pi and 11/8 pi to 3/2 pi.

For sine, the sign errors are from 7/8 pi to pi and 15/8 pi to 2 pi.

@stwunsch
Copy link
Contributor

Just looked through the code and tried to fix it, no luck :/ But I don't think that sse 4.1 is necessary, sse 2 should be sufficient for this kernel. I could be wrong!

n-west added a commit to n-west/volk that referenced this issue Dec 1, 2015
The value of q is supposed to be floored rather than rounded. This
fixes the issue in the cosine kernel and adds a generic version using
the same approximation for the cosine as well as updating some constants
to be more precise for the cosine.
@n-west
Copy link
Member

n-west commented Dec 1, 2015

@stwunsch, I think you're correct that we only need SSE2 for this, but that's an API change since the name of protokernels do get exported publicly. For now, I found the paper this is based on and discovered a missing floor operation on a value used in a if-branch to flip the sign. This should be fixed. Sorry for the long delay, and I appreciate the patience :-)

While I was at it I updated the QA to test from [-pi, pi] so we test all around the unit circle. As a result these moved in to the "inaccurate" section of kernels because the normal tolerance is quite tight, but in reality these are very good approximations.

I'm going to close this since I think the issue is fixed. Holler if you see any issues.

@n-west n-west closed this as completed Dec 1, 2015
@n-west
Copy link
Member

n-west commented Dec 1, 2015

Heh, ok... This will still fail QA because the randomly generated numbers provide some really small angles and the % difference used in the QA makes it tough to do these comparisons. That's been on my TODO list for a while and it looks like I have a good reason to do it now..

For now ignore really small errors even though the QA will fail. Example:
1: offset 10269 in1: -7.58967e-07 in2: -8.34465e-07 tolerance was: 0.001. The difference is more decimal places out than we normally care, but since we use % difference it's a rather large error.

@stwunsch
Copy link
Contributor

stwunsch commented Dec 1, 2015

Can you post the name of the paper? Thx in advance!

@n-west
Copy link
Member

n-west commented Dec 1, 2015

Efficient evaluation methods of elementary functions suitable for SIMD computation.
Link: http://link.springer.com/article/10.1007%2Fs00450-010-0108-2

The basic idea is to get the form s + pi/4 * q, where q is an integer that represents the quadrant, then put use cosine double angle identity (3 times in this case) to put s in to a smaller range so it's good for a taylor series approximation and use q to recover the correct sign. Taking advantage of the double-angle multiple times (along with the math to unwind) to get a nicely linearized region is the clever bit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants