39 lines
3.8 KiB
Plaintext
39 lines
3.8 KiB
Plaintext
#include "../test_static.isph"
|
|
// sincos() function is available only on Linux.
|
|
// rule: skip on OS=*
|
|
// rule: run on OS=linux
|
|
// rule: skip on cpu=tgllp
|
|
// rule: skip on cpu=dg2
|
|
task void f_du(uniform float RET[], uniform double aFOO[], uniform double b) {
|
|
double a = aFOO[programIndex];
|
|
uniform double sin_a[] = {0.8414709848078965, 0.9092974268256817, 0.1411200080598672, -0.7568024953079282, -0.9589242746631385, -0.2794154981989259, 0.6569865987187891, 0.9893582466233818,
|
|
0.4121184852417566, -0.5440211108893698, -0.9999902065507035, -0.5365729180004349, 0.4201670368266409, 0.9906073556948704, 0.6502878401571168, -0.2879033166650653,
|
|
-0.9613974918795568, -0.7509872467716761, 0.1498772096629523, 0.9129452507276277, 0.8366556385360561, -0.0088513092904039, -0.8462204041751706, -0.9055783620066239,
|
|
-0.1323517500977730, 0.7625584504796027, 0.9563759284045030, 0.2709057883078690, -0.6636338842129675, -0.9880316240928618, -0.4040376453230650, 0.5514266812416906,
|
|
0.9999118601072672, 0.5290826861200238, -0.4281826694961510, -0.9917788534431158, -0.6435381333569995, 0.2963685787093853, 0.9637953862840878, 0.7451131604793488,
|
|
-0.1586226688047090, -0.9165215479156338, -0.8317747426285983, 0.0177019251054136, 0.8509035245341184, 0.9017883476488092, 0.1235731227452240, -0.7682546613236668,
|
|
-0.9537526527594719, -0.2623748537039288, 0.6702291758433747, 0.9866275920404853, 0.3959251501818342, -0.5587890488516163, -0.9997551733586199, -0.5215510020869119,
|
|
0.4361647552478249, 0.9928726480845371, 0.6367380071391379, -0.3048106211022167, -0.9661177700083929, -0.7391806966492228, 0.1673557003028069, 0.9200260381967906};
|
|
uniform double cos_a[] = {0.5403023058681398, -0.4161468365471424, -0.9899924966004454, -0.6536436208636119, 0.2836621854632262, 0.9601702866503660, 0.7539022543433046, -0.1455000338086135,
|
|
-0.9111302618846769, -0.8390715290764524, 0.0044256979880508, 0.8438539587324921, 0.9074467814501962, 0.1367372182078336, -0.7596879128588213, -0.9576594803233847,
|
|
-0.2751633380515969, 0.6603167082440802, 0.9887046181866692, 0.4080820618133920, -0.5477292602242684, -0.9999608263946371, -0.5328330203333975, 0.4241790073369970,
|
|
0.9912028118634736, 0.6469193223286404, -0.2921388087338362, -0.9626058663135666, -0.7480575296890003, 0.1542514498875840, 0.9147423578045313, 0.8342233605065102,
|
|
-0.0132767472230595, -0.8485702747846052, -0.9036922050915067, -0.1279636896274047, 0.7654140519453434, 0.9550736440472949, 0.2666429323599372, -0.6669380616522619,
|
|
-0.9873392775238264, -0.3999853149883513, 0.5551133015206257, 0.9998433086476912, 0.5253219888177297, -0.4321779448847783, -0.9923354691509287, -0.6401443394691997,
|
|
0.3005925437436371, 0.9649660284921133, 0.7421541968137826, -0.1629907807957055, -0.9182827862121189, -0.8293098328631502, 0.0221267562619557, 0.8532201077225842,
|
|
0.8998668269691937, 0.1191801354488193, -0.7710802229758452, -0.9524129804151563, -0.2581016359382675, 0.6735071623235862, 0.9858965815825497, 0.3918572304295500};
|
|
|
|
RET[programIndex] = abs(sin(a) - sin_a[programIndex]) < 1d-7 ? 0 : 1;
|
|
RET[programIndex] += abs(cos(a) - cos_a[programIndex]) < 1d-7 ? 0 : 1;
|
|
|
|
double sincos_s, sincos_c;
|
|
sincos(a, &sincos_s, &sincos_c);
|
|
|
|
RET[programIndex] += abs(sincos_s - sin_a[programIndex]) < 1d-7 ? 0 : 1;
|
|
RET[programIndex] += abs(sincos_c - cos_a[programIndex]) < 1d-7 ? 0 : 1;
|
|
}
|
|
|
|
task void result(uniform float RET[]) {
|
|
RET[programIndex] = 0;
|
|
}
|