144 double pi2 = 0.5 * M_PI;
150 for(k = 0; k < n; k++)
152 RE(y[k]) = pi2 -
RE(y[k]);
153 IM(y[k]) = -
IM(y[k]);
161 #ifdef DOXYGEN_ENGLISH
214 #ifdef DOXYGEN_RUSSIAN
280 for(k = 0; k < n; k++)
282 RE(tmp) = 1.0 - CMRE(x[k], x[k]);
283 IM(tmp) = - CMIM(x[k], x[k]);
285 RE(y[k]) -=
IM(x[k]);
286 IM(y[k]) +=
RE(x[k]);
298 #ifdef DOXYGEN_ENGLISH
339 #ifdef DOXYGEN_RUSSIAN
388 double P16[17] = { 1.0000000000000000000000801e+00,
389 2.4999999999999999999629693e-01,
390 2.7777777777777777805664954e-02,
391 1.7361111111111110294015271e-03,
392 6.9444444444444568581891535e-05,
393 1.9290123456788994104574754e-06,
394 3.9367598891475388547279760e-08,
395 6.1511873265092916275099070e-10,
396 7.5940584360755226536109511e-12,
397 7.5940582595094190098755663e-14,
398 6.2760839879536225394314453e-16,
399 4.3583591008893599099577755e-18,
400 2.5791926805873898803749321e-20,
401 1.3141332422663039834197910e-22,
402 5.9203280572170548134753422e-25,
403 2.0732014503197852176921968e-27,
404 1.1497640034400735733456400e-29};
406 double P22[23] = { 3.9894228040143265335649948e-01,
407 4.9867785050353992900698488e-02,
408 2.8050628884163787533196746e-02,
409 2.9219501690198775910219311e-02,
410 4.4718622769244715693031735e-02,
411 9.4085204199017869159183831e-02,
412 -1.0699095472110916094973951e-01,
413 2.2725199603010833194037016e+01,
414 -1.0026890180180668595066918e+03,
415 3.1275740782277570164423916e+04,
416 -5.9355022509673600842060002e+05,
417 2.6092888649549172879282592e+06,
418 2.3518420447411254516178388e+08,
419 -8.9270060370015930749184222e+09,
420 1.8592340458074104721496236e+11,
421 -2.6632742974569782078420204e+12,
422 2.7752144774934763122129261e+13,
423 -2.1323049786724612220362154e+14,
424 1.1989242681178569338129044e+15,
425 -4.8049082153027457378879746e+15,
426 1.3012646806421079076251950e+16,
427 -2.1363029690365351606041265e+16,
428 1.6069467093441596329340754e+16};
438 for(k =0; k < n; k++)
445 x2 = x[k] * x[k] * 0.25;
446 polyval(P16, 16, &x2, 1, y+k);
447 y[k] = x2 * y[k] + 1.0;
452 polyval(P22, 22, &x2, 1, y+k);
453 y[k] *= exp(x[k]) / sqrt(x[k]);
461 #ifdef DOXYGEN_ENGLISH
464 #ifdef DOXYGEN_RUSSIAN
467 double DSPL_API dmod (
double x,
double y)
471 return x - floor(x/y) * y;
477 #ifdef DOXYGEN_ENGLISH
530 #ifdef DOXYGEN_RUSSIAN
588 double ep, em, sx, cx;
594 for(k = 0; k < n; k++)
598 sx = 0.5 * sin(
RE(x[k]));
599 cx = 0.5 * cos(
RE(x[k]));
600 RE(y[k]) = cx * (em + ep);
601 IM(y[k]) = sx * (em - ep);
608 #ifdef DOXYGEN_ENGLISH
662 #ifdef DOXYGEN_RUSSIAN
726 for(k = 0; k < n; k++)
729 IM(y[k]) = atan2(
IM(x[k]),
RE(x[k]));
740 #ifdef DOXYGEN_ENGLISH
794 #ifdef DOXYGEN_RUSSIAN
852 double ep, em, sx, cx;
858 for(k = 0; k < n; k++)
862 sx = 0.5 * sin(
RE(x[k]));
863 cx = 0.5 * cos(
RE(x[k]));
864 RE(y[k]) = sx * (em + ep);
865 IM(y[k]) = cx * (ep - em);
874 #ifdef DOXYGEN_ENGLISH
903 #ifdef DOXYGEN_RUSSIAN
936 int DSPL_API
sinc(
double* x,
int n,
double a,
double* y)
945 for(k = 0; k < n; k++)
946 y[k] = (x[k]==0.0) ? 1.0 : sin(a*x[k])/(a*x[k]);
955 #ifdef DOXYGEN_ENGLISH
1000 #ifdef DOXYGEN_RUSSIAN
1046 double num, den, y, x2, x22, z, f, g;
1048 double A[8] = {+1.00000000000000000E0,
1049 -4.54393409816329991E-2,
1050 +1.15457225751016682E-3,
1051 -1.41018536821330254E-5,
1052 +9.43280809438713025E-8,
1053 -3.53201978997168357E-10,
1054 +7.08240282274875911E-13,
1055 -6.05338212010422477E-16};
1059 double B[7] = {+1.0,
1060 +1.01162145739225565E-2,
1061 +4.99175116169755106E-5,
1062 +1.55654986308745614E-7,
1063 +3.28067571055789734E-10,
1064 +4.50490975753865810E-13,
1065 +3.21107051193712168E-16};
1069 double FA[11] = {+1.000000000000000000000E0,
1070 +7.444370681619367006180E2,
1071 +1.963963728951468698010E5,
1072 +2.377503101254318340340E7,
1073 +1.430734038212746368880E9,
1074 +4.33736238870432522765E10,
1075 +6.40533830574022022911E11,
1076 +4.20968180571076940208E12,
1077 +1.00795182980368574617E13,
1078 +4.94816688199951963482E12,
1079 -4.94701168645415959931E11};
1081 double FB[10] = {+1.000000000000000000000E0,
1082 +7.464370681619276780310E2,
1083 +1.978652470315839514500E5,
1084 +2.415356701651268451440E7,
1085 +1.474789521929854649580E9,
1086 +4.58595115847765779830E10,
1087 +7.08501308149515401563E11,
1088 +5.06084464593475076774E12,
1089 +1.43468549171581016479E13,
1090 +1.11535493509914254097E13};
1094 double GA[11] = {+1.000000000000000000E0,
1095 +8.135952011516861500E2,
1096 +2.352391816264782000E5,
1097 +3.125575707957787310E7,
1098 +2.062975951467633540E9,
1099 +6.83052205423625007E10,
1100 +1.09049528450362786E12,
1101 +7.57664583257834349E12,
1102 +1.81004487464664575E13,
1103 +6.43291613143049485E12,
1104 -1.36517137670871689E12};
1107 double GB[10] = {+1.000000000000000000E0,
1108 +8.195952011514515640E2,
1109 +2.400367528355787770E5,
1110 +3.260266616470908220E7,
1111 +2.233555432780993600E9,
1112 +7.87465017341829930E10,
1113 +1.39866710696414565E12,
1114 +1.17164723371736605E13,
1115 +4.01839087307656620E13,
1116 +3.99653257887490811E13};
1124 for(p = 0; p < n; p++)
1126 sgn = x[p] > 0.0 ? 0 : 1;
1127 y = x[p] < 0.0 ? -x[p] : x[p];
1134 for(k = 0; k < 8; k++)
1141 for(k = 0; k < 7; k++)
1146 si[p] = x[p] * num/den;
1155 for(k = 0; k < 11; k++)
1162 for(k = 0; k < 10; k++)
1172 for(k = 0; k < 11; k++)
1179 for(k = 0; k < 10; k++)
1185 g = x22 * num / den;
1187 si[p] = sgn ? f * cos(y) + g * sin(y) - M_PI * 0.5 :
1188 M_PI * 0.5 - f * cos(y) - g * sin(y);
1199 #ifdef DOXYGEN_ENGLISH
1252 #ifdef DOXYGEN_RUSSIAN
1317 for(k = 0; k < n; k++)
1327 RE(t) =
RE(x[k]) + r;
1339 RE(y[k]) =
RE(t) * zr * r;
1340 IM(y[k]) =
IM(t) * zr * r;