#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; }