📄 airy.c
字号:
static unsigned short AFD[36] = {/*0x3ff0,0x0000,0x0000,0x0000,*/0x402a,0xb64b,0x2572,0xedf2,0x4040,0x575c,0x4478,0x7b1a,0x403a,0xbc98,0xa3b7,0x3410,0x4022,0x5fc8,0x2ac9,0x9873,0x3ff7,0x9acb,0x39de,0x9319,0x3fbd,0x9dac,0xb404,0x5a2b,0x3f72,0x08ca,0xe03a,0xf617,0x3f13,0xc8d7,0xaf76,0xe73b,0x3e9e,0x52b9,0xb995,0x18a7,};#endif#ifdef UNKstatic double AGN[11] = { 1.97339932091685679179E-2, 3.91103029615688277255E-1, 1.06579897599595591108E0, 9.39169229816650230044E-1, 3.51465656105547619242E-1, 6.33888919628925490927E-2, 5.85804113048388458567E-3, 2.82851600836737019778E-4, 6.98793669997260967291E-6, 8.11789239554389293311E-8, 3.41551784765923618484E-10,};static double AGD[10] = {/* 1.00000000000000000000E0,*/ 9.30892908077441974853E0, 1.98352928718312140417E1, 1.55646628932864612953E1, 5.47686069422975497931E0, 9.54293611618961883998E-1, 8.64580826352392193095E-2, 4.12656523824222607191E-3, 1.01259085116509135510E-4, 1.17166733214413521882E-6, 4.91834570062930015649E-9,};#endif#ifdef DECstatic unsigned short AGN[44] = {0036641,0124456,0167175,0157354,0037710,0037250,0001441,0136671,0040210,0066031,0150401,0123532,0040160,0066545,0003570,0153133,0037663,0171516,0072507,0170345,0037201,0151011,0007510,0045702,0036277,0172317,0104572,0101030,0035224,0045663,0000160,0136422,0033752,0074753,0047702,0135160,0032256,0052225,0156550,0107103,0030273,0142443,0166277,0071720,};static unsigned short AGD[40] = {/*0040200,0000000,0000000,0000000,*/0041024,0170537,0117253,0055003,0041236,0127256,0003570,0143240,0041171,0004333,0172476,0160645,0040657,0041161,0055716,0157161,0040164,0046226,0006257,0063431,0037261,0010357,0065445,0047563,0036207,0034043,0057434,0116732,0034724,0055416,0130035,0026377,0033235,0041056,0154071,0023502,0031250,0177071,0167254,0047242,};#endif#ifdef IBMPCstatic unsigned short AGN[44] = {0xbbde,0xddcf,0x3525,0x3f94,0x37b7,0x0064,0x07d5,0x3fd9,0x34eb,0x3a20,0x0d83,0x3ff1,0x1acb,0xa0ef,0x0dac,0x3fee,0xfe1d,0xcea8,0x7e69,0x3fd6,0x0978,0x21e9,0x3a41,0x3fb0,0x5043,0xf12f,0xfe99,0x3f77,0x17a2,0x600e,0x8976,0x3f32,0x574e,0x69f8,0x4f3d,0x3edd,0x11c8,0xbbad,0xca92,0x3e75,0xee7a,0x7d97,0x78a4,0x3df7,};static unsigned short AGD[40] = {/*0x0000,0x0000,0x0000,0x3ff0,*/0x6b40,0xf3d5,0x9e2b,0x4022,0x18d4,0xc0ef,0xd5d5,0x4033,0xdc35,0x7ea7,0x211b,0x402f,0xdbce,0x2b79,0xe84e,0x4015,0xece3,0xc195,0x8992,0x3fee,0xa9ee,0xed64,0x221d,0x3fb6,0x93bb,0x6be3,0xe704,0x3f70,0xa5a0,0xd603,0x8b61,0x3f1a,0x24e8,0xdb07,0xa845,0x3eb3,0x89d4,0x3dd5,0x1fc7,0x3e35,};#endif#ifdef MIEEEstatic unsigned short AGN[44] = {0x3f94,0x3525,0xddcf,0xbbde,0x3fd9,0x07d5,0x0064,0x37b7,0x3ff1,0x0d83,0x3a20,0x34eb,0x3fee,0x0dac,0xa0ef,0x1acb,0x3fd6,0x7e69,0xcea8,0xfe1d,0x3fb0,0x3a41,0x21e9,0x0978,0x3f77,0xfe99,0xf12f,0x5043,0x3f32,0x8976,0x600e,0x17a2,0x3edd,0x4f3d,0x69f8,0x574e,0x3e75,0xca92,0xbbad,0x11c8,0x3df7,0x78a4,0x7d97,0xee7a,};static unsigned short AGD[40] = {/*0x3ff0,0x0000,0x0000,0x0000,*/0x4022,0x9e2b,0xf3d5,0x6b40,0x4033,0xd5d5,0xc0ef,0x18d4,0x402f,0x211b,0x7ea7,0xdc35,0x4015,0xe84e,0x2b79,0xdbce,0x3fee,0x8992,0xc195,0xece3,0x3fb6,0x221d,0xed64,0xa9ee,0x3f70,0xe704,0x6be3,0x93bb,0x3f1a,0x8b61,0xd603,0xa5a0,0x3eb3,0xa845,0xdb07,0x24e8,0x3e35,0x1fc7,0x3dd5,0x89d4,};#endif#ifdef UNKstatic double APFN[9] = { 1.85365624022535566142E-1, 8.86712188052584095637E-1, 9.87391981747398547272E-1, 4.01241082318003734092E-1, 7.10304926289631174579E-2, 5.90618657995661810071E-3, 2.33051409401776799569E-4, 4.08718778289035454598E-6, 2.48379932900442457853E-8,};static double APFD[9] = {/* 1.00000000000000000000E0,*/ 1.47345854687502542552E1, 3.75423933435489594466E1, 3.14657751203046424330E1, 1.09969125207298778536E1, 1.78885054766999417817E0, 1.41733275753662636873E-1, 5.44066067017226003627E-3, 9.39421290654511171663E-5, 5.65978713036027009243E-7,};#endif#ifdef DECstatic unsigned short APFN[36] = {0037475,0150174,0071752,0166651,0040142,0177621,0164246,0101757,0040174,0142670,0106760,0006573,0037715,0067570,0116274,0022404,0037221,0074157,0053341,0117207,0036301,0104257,0015075,0004777,0035164,0057502,0164034,0001313,0033611,0022254,0176000,0112565,0031725,0055523,0025153,0166057,};static unsigned short APFD[36] = {/*0040200,0000000,0000000,0000000,*/0041153,0140334,0130506,0061402,0041426,0025551,0024440,0070611,0041373,0134750,0047147,0176702,0041057,0171532,0105430,0017674,0040344,0174416,0001726,0047754,0037421,0021207,0020167,0136264,0036262,0043621,0151321,0124324,0034705,0001313,0163733,0016407,0033027,0166702,0150440,0170561,};#endif#ifdef IBMPCstatic unsigned short APFN[36] = {0x5db5,0x8e7d,0xba0f,0x3fc7,0xd07e,0x3d14,0x5ff2,0x3fec,0x01af,0x11be,0x98b7,0x3fef,0x84a1,0x1397,0xadef,0x3fd9,0x33d1,0xeadc,0x2f0d,0x3fb2,0xa140,0xe347,0x3115,0x3f78,0x8059,0x5d03,0x8be8,0x3f2e,0x12af,0x9f80,0x2495,0x3ed1,0x7d86,0x654d,0xab6a,0x3e5a,};static unsigned short APFD[36] = {/*0x0000,0x0000,0x0000,0x3ff0,*/0xcc60,0x9628,0x781b,0x402d,0x0e31,0x2524,0xc56d,0x4042,0xffb8,0x09cc,0x773d,0x403f,0x03f7,0x5163,0xfe6b,0x4025,0xc9fd,0xc07a,0x9f21,0x3ffc,0xf796,0xe40e,0x2450,0x3fc2,0x351a,0x3a5a,0x48f2,0x3f76,0x63a1,0x7cfb,0xa059,0x3f18,0x1e2e,0x5a24,0xfdb8,0x3ea2,};#endif#ifdef MIEEEstatic unsigned short APFN[36] = {0x3fc7,0xba0f,0x8e7d,0x5db5,0x3fec,0x5ff2,0x3d14,0xd07e,0x3fef,0x98b7,0x11be,0x01af,0x3fd9,0xadef,0x1397,0x84a1,0x3fb2,0x2f0d,0xeadc,0x33d1,0x3f78,0x3115,0xe347,0xa140,0x3f2e,0x8be8,0x5d03,0x8059,0x3ed1,0x2495,0x9f80,0x12af,0x3e5a,0xab6a,0x654d,0x7d86,};static unsigned short APFD[36] = {/*0x3ff0,0x0000,0x0000,0x0000,*/0x402d,0x781b,0x9628,0xcc60,0x4042,0xc56d,0x2524,0x0e31,0x403f,0x773d,0x09cc,0xffb8,0x4025,0xfe6b,0x5163,0x03f7,0x3ffc,0x9f21,0xc07a,0xc9fd,0x3fc2,0x2450,0xe40e,0xf796,0x3f76,0x48f2,0x3a5a,0x351a,0x3f18,0xa059,0x7cfb,0x63a1,0x3ea2,0xfdb8,0x5a24,0x1e2e,};#endif#ifdef UNKstatic double APGN[11] = {-3.55615429033082288335E-2,-6.37311518129435504426E-1,-1.70856738884312371053E0,-1.50221872117316635393E0,-5.63606665822102676611E-1,-1.02101031120216891789E-1,-9.48396695961445269093E-3,-4.60325307486780994357E-4,-1.14300836484517375919E-5,-1.33415518685547420648E-7,-5.63803833958893494476E-10,};static double APGD[11] = {/* 1.00000000000000000000E0,*/ 9.85865801696130355144E0, 2.16401867356585941885E1, 1.73130776389749389525E1, 6.17872175280828766327E0, 1.08848694396321495475E0, 9.95005543440888479402E-2, 4.78468199683886610842E-3, 1.18159633322838625562E-4, 1.37480673554219441465E-6, 5.79912514929147598821E-9,};#endif#ifdef DECstatic unsigned short APGN[44] = {0137021,0124372,0176075,0075331,0140043,0023330,0177672,0161655,0140332,0131126,0010413,0171112,0140300,0044263,0175560,0054070,0140020,0044206,0142603,0073324,0137321,0015130,0066144,0144033,0136433,0061243,0175542,0103373,0135361,0053721,0020441,0053203,0134077,0141725,0160277,0130612,0132417,0040372,0100363,0060200,0130432,0175052,0171064,0034147,};static unsigned short APGD[40] = {/*0040200,0000000,0000000,0000000,*/0041035,0136420,0030124,0140220,0041255,0017432,0034447,0162256,0041212,0100456,0154544,0006321,0040705,0134026,0127154,0123414,0040213,0051612,0044470,0172607,0037313,0143362,0053273,0157051,0036234,0144322,0054536,0007264,0034767,0146170,0054265,0170342,0033270,0102777,0167362,0073631,0031307,0040644,0167103,0021763,};#endif#ifdef IBMPCstatic unsigned short APGN[44] = {0xaf5b,0x5f87,0x351f,0xbfa2,0x5c76,0x1ff7,0x64db,0xbfe4,0x7e49,0xc221,0x564a,0xbffb,0x0b07,0x7f6e,0x0916,0xbff8,0x6edb,0xd8b0,0x0910,0xbfe2,0x9903,0x0d8c,0x234b,0xbfba,0x50df,0x7f6c,0x6c54,0xbf83,0x2ad0,0x2424,0x2afa,0xbf3e,0xf631,0xbc17,0xf87a,0xbee7,0x6c10,0x501e,0xe81f,0xbe81,0x870d,0x5e46,0x5f45,0xbe03,};static unsigned short APGD[40] = {/*0x0000,0x0000,0x0000,0x3ff0,*/0x9812,0x060a,0xb7a2,0x4023,0xfc96,0x4724,0xa3e3,0x4035,0x819a,0xdb2c,0x5025,0x4031,0x94e2,0xd5cd,0xb702,0x4018,0x1eb1,0x4927,0x6a71,0x3ff1,0x7bc5,0x4ad7,0x78de,0x3fb9,0xc1d7,0x4b2b,0x991a,0x3f73,0xbe1c,0x0b16,0xf98f,0x3f1e,0x4ef3,0xfdde,0x10bf,0x3eb7,0x647e,0x9dc8,0xe834,0x3e38,};#endif#ifdef MIEEEstatic unsigned short APGN[44] = {0xbfa2,0x351f,0x5f87,0xaf5b,0xbfe4,0x64db,0x1ff7,0x5c76,0xbffb,0x564a,0xc221,0x7e49,0xbff8,0x0916,0x7f6e,0x0b07,0xbfe2,0x0910,0xd8b0,0x6edb,0xbfba,0x234b,0x0d8c,0x9903,0xbf83,0x6c54,0x7f6c,0x50df,0xbf3e,0x2afa,0x2424,0x2ad0,0xbee7,0xf87a,0xbc17,0xf631,0xbe81,0xe81f,0x501e,0x6c10,0xbe03,0x5f45,0x5e46,0x870d,};static unsigned short APGD[40] = {/*0x3ff0,0x0000,0x0000,0x0000,*/0x4023,0xb7a2,0x060a,0x9812,0x4035,0xa3e3,0x4724,0xfc96,0x4031,0x5025,0xdb2c,0x819a,0x4018,0xb702,0xd5cd,0x94e2,0x3ff1,0x6a71,0x4927,0x1eb1,0x3fb9,0x78de,0x4ad7,0x7bc5,0x3f73,0x991a,0x4b2b,0xc1d7,0x3f1e,0xf98f,0x0b16,0xbe1c,0x3eb7,0x10bf,0xfdde,0x4ef3,0x3e38,0xe834,0x9dc8,0x647e,};#endif#ifdef ANSIPROTextern double fabs ( double );extern double exp ( double );extern double sqrt ( double );extern double polevl ( double, void *, int );extern double p1evl ( double, void *, int );extern double sin ( double );extern double cos ( double );#elsedouble fabs(), exp(), sqrt();double polevl(), p1evl(), sin(), cos();#endifint airy( x, ai, aip, bi, bip )double x, *ai, *aip, *bi, *bip;{double z, zz, t, f, g, uf, ug, k, zeta, theta;int domflg;domflg = 0;if( x > MAXAIRY ) { *ai = 0; *aip = 0; *bi = MAXNUM; *bip = MAXNUM; return(-1); }if( x < -2.09 ) { domflg = 15; t = sqrt(-x); zeta = -2.0 * x * t / 3.0; t = sqrt(t); k = sqpii / t; z = 1.0/zeta; zz = z * z; uf = 1.0 + zz * polevl( zz, AFN, 8 ) / p1evl( zz, AFD, 9 ); ug = z * polevl( zz, AGN, 10 ) / p1evl( zz, AGD, 10 ); theta = zeta + 0.25 * PI; f = sin( theta ); g = cos( theta ); *ai = k * (f * uf - g * ug); *bi = k * (g * uf + f * ug); uf = 1.0 + zz * polevl( zz, APFN, 8 ) / p1evl( zz, APFD, 9 ); ug = z * polevl( zz, APGN, 10 ) / p1evl( zz, APGD, 10 ); k = sqpii * t; *aip = -k * (g * uf + f * ug); *bip = k * (f * uf - g * ug); return(0); }if( x >= 2.09 ) /* cbrt(9) */ { domflg = 5; t = sqrt(x); zeta = 2.0 * x * t / 3.0; g = exp( zeta ); t = sqrt(t); k = 2.0 * t * g; z = 1.0/zeta; f = polevl( z, AN, 7 ) / polevl( z, AD, 7 ); *ai = sqpii * f / k; k = -0.5 * sqpii * t / g; f = polevl( z, APN, 7 ) / polevl( z, APD, 7 ); *aip = f * k; if( x > 8.3203353 ) /* zeta > 16 */ { f = z * polevl( z, BN16, 4 ) / p1evl( z, BD16, 5 ); k = sqpii * g; *bi = k * (1.0 + f) / t; f = z * polevl( z, BPPN, 4 ) / p1evl( z, BPPD, 5 ); *bip = k * t * (1.0 + f); return(0); } }f = 1.0;g = x;t = 1.0;uf = 1.0;ug = x;k = 1.0;z = x * x * x;while( t > MACHEP ) { uf *= z; k += 1.0; uf /=k; ug *= z; k += 1.0; ug /=k; uf /=k; f += uf; k += 1.0; ug /=k; g += ug; t = fabs(uf/f); }uf = c1 * f;ug = c2 * g;if( (domflg & 1) == 0 ) *ai = uf - ug;if( (domflg & 2) == 0 ) *bi = sqrt3 * (uf + ug);/* the deriviative of ai */k = 4.0;uf = x * x/2.0;ug = z/3.0;f = uf;g = 1.0 + ug;uf /= 3.0;t = 1.0;while( t > MACHEP ) { uf *= z; ug /=k; k += 1.0; ug *= z; uf /=k; f += uf; k += 1.0; ug /=k; uf /=k; g += ug; k += 1.0; t = fabs(ug/g); }uf = c1 * f;ug = c2 * g;if( (domflg & 4) == 0 ) *aip = uf - ug;if( (domflg & 8) == 0 ) *bip = sqrt3 * (uf + ug);return(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -