Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Cephes/   (Cephes Mathematical Library ©)  Datei vom 9.5.2026 mit Größe 27 kB image not shown  

Quelle  ei.c

  Sprache: C
 

/* ei.c
 *
 * Exponential integral
 *
 *
 * SYNOPSIS:
 *
 * double x, y, ei();
 *
 * y = ei( x );
 *
 *
 *
 * DESCRIPTION:
 *
 *               x
 *                -     t
 *               | |   e
 *    Ei(x) =   -|-   ---  dt .
 *             | |     t
 *              -
 *             -inf
 *
 * Not defined for x <= 0.
 * See also expn.c.
 *
 *
 *
 * ACCURACY:
 *
 *                      Relative error:
 * arithmetic   domain     # trials      peak         rms
 *    IEEE       0,100       50000      8.6e-16     1.3e-16
 *
 */


/*
Cephes Math Library Release 2.8:  May, 1999
Copyright 1999 by Stephen L. Moshier
*/


#include "mconf.h"
#ifdef ANSIPROT
extern double log(double);
extern double exp(double);
extern double polevl(doublevoid *, int);
extern double p1evl(doublevoid *, int);
#else
extern double log(), exp(), polevl(), p1evl();
#endif

#define EUL 5.772156649015328606065e-1

/* 0 < x <= 2
   Ei(x) - EUL - ln(x) = x A(x)/B(x)
   Theoretical peak relative error 9.73e-18  */

#if UNK
static double A[6] = {
    -5.350447357812542947283E0, 2.185049168816613393830E2,
    -4.176572384826693777058E3, 5.541176756393557601232E4,
    -3.313381331178144034309E5, 1.592627163384945414220E6,
};
static double B[6] = {
    /*  1.000000000000000000000E0, */
    -5.250547959112862969197E1, 1.259616186786790571525E3,
    -1.756549581973534652631E4, 1.493062117002725991967E5,
    -7.294949239640527645655E5, 1.592627163384945429726E6,
};
#endif
#if DEC
static short A[24] = {
    01406530033335006023001442170042132010050200356250167413,
    01432020102224003717601754030044130007170400774210170343,
    01446410144504004120000451540045302006463100472340142052,
};
static short B[24] = {
    /* 0040200,0000000,0000000,0000000, */
    01415220002634007044201426140042635007166701465320027705,
    01436110035375015602501140150044421014721501061770046330,
    01450620014556014421601037250045302006463100472340142052,
};
#endif
#if IBMPC
static short A[24] = {
    0x1912, 0xac13, 0x66db, 0xc015, 0xbde1, 0x4772, 0x5028, 0x406b,
    0xdf60, 0x87cf, 0x5092, 0xc0b0, 0x3e1c, 0x8fe2, 0x0e78, 0x40eb,
    0x094e, 0x8850, 0x3928, 0xc114, 0x9885, 0x29d3, 0x4d33, 0x4138,
};
static short B[24] = {
    /* 0x0000,0x0000,0x0000,0x3ff0, */
    0x58b1, 0x8e24, 0x40b3, 0xc04a, 0x45f9, 0xf9ab, 0xae76, 0x4093,
    0xb302, 0xbb82, 0x275f, 0xc0d1, 0xe99b, 0xb18f, 0x39d1, 0x4102,
    0xd0fb, 0xd911, 0x432d, 0xc126, 0x9885, 0x29d3, 0x4d33, 0x4138,
};
#endif
#if MIEEE
static short A[24] = {
    0xc015, 0x66db, 0xac13, 0x1912, 0x406b, 0x5028, 0x4772, 0xbde1,
    0xc0b0, 0x5092, 0x87cf, 0xdf60, 0x40eb, 0x0e78, 0x8fe2, 0x3e1c,
    0xc114, 0x3928, 0x8850, 0x094e, 0x4138, 0x4d33, 0x29d3, 0x9885,
};
static short B[24] = {
    /* 0x3ff0,0x0000,0x0000,0x0000, */
    0xc04a, 0x40b3, 0x8e24, 0x58b1, 0x4093, 0xae76, 0xf9ab, 0x45f9,
    0xc0d1, 0x275f, 0xbb82, 0xb302, 0x4102, 0x39d1, 0xb18f, 0xe99b,
    0xc126, 0x432d, 0xd911, 0xd0fb, 0x4138, 0x4d33, 0x29d3, 0x9885,
};
#endif

#if 0
/* 0 < x <= 4
   Ei(x) - EUL - ln(x) = x A(x)/B(x)
   Theoretical peak relative error 4.75e-17  */

#if UNK
static double A[7] = {
-6.831869820732773831942E0,
 2.920190530726774500309E2,
-1.195883839286649567993E4,
 1.761045255472548975666E5,
-2.623034438354006526979E6,
 1.472430336917880803157E7,
-8.205359388213261174960E7,
};
static double B[7] = {
  /* 1.000000000000000000000E0, */
-7.731946237840033971071E1,
 2.751808700543578450827E3,
-5.829268609072186897994E4,
 7.916610857961870631379E5,
-6.873926904825733094076E6,
 3.523770183971164032710E7,
-8.205359388213260785363E7,
};
#endif
#if DEC
static short A[28] = {
0140732,0117255,0072522,0071743,
0042222,0001160,0052302,0002334,
0143472,0155532,0101650,0155462,
0044453,0175041,0121220,0172022,
0145440,0014351,0140337,0157550,
0046140,0126317,0057202,0100233,
0146634,0100473,0036072,0067054,
};
static short B[28] = {
  /* 0040200,0000000,0000000,0000000, */
0141632,0121620,0111247,0010115,
0043053,0176360,0067773,0027324,
0144143,0132257,0121644,0036204,
0045101,0043321,0057553,0151231,
0145721,0143215,0147505,0050610,
0046406,0065721,0072675,0152744,
0146634,0100473,0036072,0067052,
};
#endif
#if IBMPC
static short A[28] = {
0x4e7c,0xaeaa,0x53d5,0xc01b,
0x409b,0x0a98,0x404e,0x4072,
0x1b66,0x5075,0x5b6b,0xc0c7,
0x1e82,0x3452,0x7f44,0x4105,
0xfbed,0x381b,0x031d,0xc144,
0x5013,0xebd0,0x1599,0x416c,
0x4dc5,0x6787,0x9027,0xc193,
};
static short B[28] = {
  /* 0x0000,0x0000,0x0000,0x3ff0, */
0xe20a,0x1254,0x5472,0xc053,
0x65db,0x0dff,0x7f9e,0x40a5,
0x8791,0xf474,0x7695,0xc0ec,
0x7a53,0x2bed,0x28da,0x4128,
0xaa31,0xb9e8,0x38d1,0xc15a,
0xbabd,0x2eb7,0xcd7a,0x4180,
0x4dc5,0x6787,0x9027,0xc193,
};
#endif
#if MIEEE
static short A[28] = {
0xc01b,0x53d5,0xaeaa,0x4e7c,
0x4072,0x404e,0x0a98,0x409b,
0xc0c7,0x5b6b,0x5075,0x1b66,
0x4105,0x7f44,0x3452,0x1e82,
0xc144,0x031d,0x381b,0xfbed,
0x416c,0x1599,0xebd0,0x5013,
0xc193,0x9027,0x6787,0x4dc5,
};
static short B[28] = {
  /* 0x3ff0,0x0000,0x0000,0x0000, */
0xc053,0x5472,0x1254,0xe20a,
0x40a5,0x7f9e,0x0dff,0x65db,
0xc0ec,0x7695,0xf474,0x8791,
0x4128,0x28da,0x2bed,0x7a53,
0xc15a,0x38d1,0xb9e8,0xaa31,
0x4180,0xcd7a,0x2eb7,0xbabd,
0xc193,0x9027,0x6787,0x4dc5,
};
#endif
#endif /* 0 */

#if 0
/* 0 < x <= 8
   Ei(x) - EUL - ln(x) = x A(x)/B(x)
   Theoretical peak relative error 2.14e-17  */


#if UNK
static double A[9] = {
-1.111230942210860450145E1,
 3.688203982071386319616E2,
-4.924786153494029574350E4,
 1.050677503345557903241E6,
-3.626713709916703688968E7,
 4.353499908839918635414E8,
-6.454613717232006895409E9,
 3.408243056457762907071E10,
-1.995466674647028468613E11,
};
static double B[9] = {
  /*  1.000000000000000000000E0, */
-1.356757648138514017969E2,
 8.562181317107341736606E3,
-3.298257180413775117555E5,
 8.543534058481435917210E6,
-1.542380618535140055068E8,
 1.939251779195993632028E9,
-1.636096210465615015435E10,
 8.396909743075306970605E10,
-1.995466674647028425886E11,
};
#endif
#if DEC
static short A[36] = {
0141061,0146004,0173357,0151553,
0042270,0064402,0147366,0126701,
0144100,0057734,0106615,0144356,
0045200,0040654,0003332,0004456,
0146412,0054440,0043130,0140263,
0047317,0113517,0033422,0065123,
0150300,0056313,0065235,0131147,
0050775,0167423,0146222,0075760,
0151471,0153642,0003442,0147667,
};
static short B[36] = {
  /* 0040200,0000000,0000000,0000000, */
0142007,0126376,0166077,0043600,
0043405,0144271,0125461,0014364,
0144641,0006066,0175061,0164463,
0046002,0056456,0007370,0121657,
0147023,0013706,0156647,0177115,
0047747,0026504,0103144,0054507,
0150563,0146036,0007051,0177135,
0051234,0063625,0173266,0003111,
0151471,0153642,0003442,0147666,
};
#endif
#if IBMPC
static short A[36] = {
0xfa6d,0x9edd,0x3980,0xc026,
0xd5b8,0x59de,0x0d20,0x4077,
0xb91e,0x91b1,0x0bfb,0xc0e8,
0x4126,0x80db,0x0835,0x4130,
0x1816,0x08cb,0x4b24,0xc181,
0x4d4a,0xe6e2,0xf2e9,0x41b9,
0xb64d,0x6d53,0x0b99,0xc1f8,
0x4f7e,0x7992,0xbde2,0x421f,
0x59f7,0x40e4,0x3af4,0xc247,
};
static short B[36] = {
  /* 0x0000,0x0000,0x0000,0x3ff0, */
0xe8f0,0xdd87,0xf59f,0xc060,
0x231e,0x3566,0xb917,0x40c0,
0x3d26,0xdf46,0x2186,0xc114,
0x1476,0xc1df,0x4ba5,0x4160,
0xffca,0xdbb4,0x62f8,0xc1a2,
0x8b29,0x90cc,0xe5a8,0x41dc,
0x3fcc,0xc1c5,0x7983,0xc20e,
0xc0c9,0xbed6,0x8cf2,0x4233,
0x59f7,0x40e4,0x3af4,0xc247,
};
#endif
#if MIEEE
static short A[36] = {
0xc026,0x3980,0x9edd,0xfa6d,
0x4077,0x0d20,0x59de,0xd5b8,
0xc0e8,0x0bfb,0x91b1,0xb91e,
0x4130,0x0835,0x80db,0x4126,
0xc181,0x4b24,0x08cb,0x1816,
0x41b9,0xf2e9,0xe6e2,0x4d4a,
0xc1f8,0x0b99,0x6d53,0xb64d,
0x421f,0xbde2,0x7992,0x4f7e,
0xc247,0x3af4,0x40e4,0x59f7,
};
static short B[36] = {
  /* 0x3ff0,0x0000,0x0000,0x0000, */
0xc060,0xf59f,0xdd87,0xe8f0,
0x40c0,0xb917,0x3566,0x231e,
0xc114,0x2186,0xdf46,0x3d26,
0x4160,0x4ba5,0xc1df,0x1476,
0xc1a2,0x62f8,0xdbb4,0xffca,
0x41dc,0xe5a8,0x90cc,0x8b29,
0xc20e,0x7983,0xc1c5,0x3fcc,
0x4233,0x8cf2,0xbed6,0xc0c9,
0xc247,0x3af4,0x40e4,0x59f7,
};
#endif
#endif /* 0 */

/* 8 <= x <= 20
   x exp(-x) Ei(x) - 1 = 1/x R(1/x)
   Theoretical peak absolute error = 1.07e-17  */

#if UNK
static double A2[10] = {
    -2.106934601691916512584E0,  1.732733869664688041885E0,
    -2.423619178935841904839E-12.322724180937565842585E-2,
    2.372880440493179832059E-4,  -8.343219561192552752335E-5,
    1.363408795605250394881E-5,  -3.655412321999253963714E-7,
    1.464941733975961318456E-8,  6.176407863710360207074E-10,
};
static double B2[9] = {
    /* 1.000000000000000000000E0, */
    -2.298062239901678075778E-11.105077041474037862347E-1,
    -1.566542966630792353556E-22.761106850817352773874E-3,
    -2.089148012284048449115E-41.708528938807675304186E-5,
    -4.459311796356686423199E-71.394634930353847498145E-8,
    6.150865933977338354138E-10,
};
#endif
#if DEC
static short A2[40] = {
    01404060154004003510401733360040335014507100315600150165,
    01375700026670017623000550400036676004341600771220054476,
    00351700150206003440701755710134656017412101232310021751,
    00341440136766003674601211150132704003763201350770107300,
    00315730126321011707600043140030451014323300413520172464,
};
static short B2[36] = {
    /* 0040200,0000000,0000000,0000000, */
    01375530051122012072101704370037342005073401750470032132,
    01366000052311010140601470500036064017165701200010071165,
    01351330010043015124400663400034217005114100261150043305,
    01327570064120010634100512170031557011426100606630135017,
    0030451001133700013440175542,
};
#endif
#if IBMPC
static short A2[40] = {
    0x9edc, 0x8748, 0xdb00, 0xc000, 0x1a0f, 0x266e, 0xb947, 0x3ffb,
    0x0b44, 0x1f93, 0x05b7, 0xbfcf, 0x4b28, 0xcfca, 0xc8e1, 0x3f97,
    0xff6f, 0xc720, 0x1a10, 0x3f2f, 0x247d, 0x34d3, 0xdf0a, 0xbf15,
    0xd44a, 0xc7bc, 0x97be, 0x3eec, 0xf1d8, 0x5747, 0x87f3, 0xbe98,
    0xc119, 0x33c7, 0x759a, 0x3e4f, 0x5ea6, 0x685d, 0x38d3, 0x3e05,
};
static short B2[36] = {
    /* 0x0000,0x0000,0x0000,0x3ff0, */
    0x3e24, 0x543a, 0x6a4a, 0xbfcd, 0xe68b, 0x9f44, 0x4a3b, 0x3fbc, 0xd9c5,
    0x3060, 0x0a99, 0xbf90, 0x2e4f, 0xf400, 0x9e75, 0x3f66, 0x8d9c, 0x7a54,
    0x6204, 0xbf2b, 0xa8d9, 0x2589, 0xea4c, 0x3ef1, 0x2a52, 0x119c, 0xed0a,
    0xbe9d, 0x7742, 0x2c36, 0xf316, 0x3e4d, 0x9f6c, 0xe05c, 0x225b, 0x3e05,
};
#endif
#if MIEEE
static short A2[40] = {
    0xc000, 0xdb00, 0x8748, 0x9edc, 0x3ffb, 0xb947, 0x266e, 0x1a0f,
    0xbfcf, 0x05b7, 0x1f93, 0x0b44, 0x3f97, 0xc8e1, 0xcfca, 0x4b28,
    0x3f2f, 0x1a10, 0xc720, 0xff6f, 0xbf15, 0xdf0a, 0x34d3, 0x247d,
    0x3eec, 0x97be, 0xc7bc, 0xd44a, 0xbe98, 0x87f3, 0x5747, 0xf1d8,
    0x3e4f, 0x759a, 0x33c7, 0xc119, 0x3e05, 0x38d3, 0x685d, 0x5ea6,
};
static short B2[36] = {
    /* 0x3ff0,0x0000,0x0000,0x0000, */
    0xbfcd, 0x6a4a, 0x543a, 0x3e24, 0x3fbc, 0x4a3b, 0x9f44, 0xe68b, 0xbf90,
    0x0a99, 0x3060, 0xd9c5, 0x3f66, 0x9e75, 0xf400, 0x2e4f, 0xbf2b, 0x6204,
    0x7a54, 0x8d9c, 0x3ef1, 0xea4c, 0x2589, 0xa8d9, 0xbe9d, 0xed0a, 0x119c,
    0x2a52, 0x3e4d, 0xf316, 0x2c36, 0x7742, 0x3e05, 0x225b, 0xe05c, 0x9f6c,
};
#endif

/* x > 20
   x exp(-x) Ei(x) - 1  =  1/x A3(1/x)/B3(1/x)
   Theoretical absolute error = 6.15e-17  */

#if UNK
static double A3[9] = {
    -7.657847078286127362028E-16.886192415566705051750E-1,
    -2.132598113545206124553E-13.346107552384193813594E-2,
    -3.076541477344756050249E-31.747119316454907477380E-4,
    -6.103711682274170530369E-61.218032765428652199087E-7,
    -1.086076102793290233007E-9,
};
static double B3[9] = {
    /* 1.000000000000000000000E0, */
    -1.888802868662308731041E0,  1.066691687211408896850E0,
    -2.751915982306380647738E-13.930852688233823569726E-2,
    -3.414684558602365085394E-31.866844370703555398195E-4,
    -6.345146083130515357861E-61.239754287483206878024E-7,
    -1.086076102793126632978E-9,
};
#endif
#if DEC
static short A3[36] = {
    01401040005167007174601155100040060004453101407410154556,
    01375320060307012650600711230037011000717300104050127224,
    01361110117715000365401755770035067003134001026570147714,
    01337140147173016747301366400032402014440701155470060114,
    0130625004234701564310113425,
};
static short B3[36] = {
    /* 0040200,0000000,0000000,0000000, */
    01403610142112015527700677140040210010453200656760074326,
    01376140162751014242101310330037041000077200532360002632,
    01361370144346010053601531360035103014027001522110166215,
    01337240164143014576300211530032405001703300353330025736,
    0130625004234701564310077134,
};
#endif
#if IBMPC
static short A3[36] = {
    0xd369, 0xee7c, 0x814e, 0xbfe8, 0x3b2e, 0x383c, 0x092b, 0x3fe6, 0xce4a,
    0xf5a8, 0x4c18, 0xbfcb, 0xb5d2, 0x6220, 0x21cf, 0x3fa1, 0x9f70, 0xa0f5,
    0x33f9, 0xbf69, 0xf9f9, 0x10b5, 0xe65c, 0x3f26, 0x77b4, 0x7de7, 0x99cf,
    0xbed9, 0xec09, 0xf36c, 0x5920, 0x3e80, 0x32e3, 0xfba3, 0xa89c, 0xbe12,
};
static short B3[36] = {
    /* 0x0000,0x0000,0x0000,0x3ff0, */
    0xedf9, 0x5b57, 0x3889, 0xbffe, 0xcf1b, 0x4d77, 0x112b, 0x3ff1, 0x3643,
    0x38a2, 0x9cbd, 0xbfd1, 0xc0b3, 0x4ad3, 0x203f, 0x3fa4, 0xdacc, 0xd02b,
    0xf91c, 0xbf6b, 0x3d92, 0x1a91, 0x7817, 0x3f28, 0x644d, 0x797e, 0x9d0c,
    0xbeda, 0x657c, 0x675b, 0xa3c3, 0x3e80, 0x2fcb, 0xfba3, 0xa89c, 0xbe12,
};
#endif
#if MIEEE
static short A3[36] = {
    0xbfe8, 0x814e, 0xee7c, 0xd369, 0x3fe6, 0x092b, 0x383c, 0x3b2e, 0xbfcb,
    0x4c18, 0xf5a8, 0xce4a, 0x3fa1, 0x21cf, 0x6220, 0xb5d2, 0xbf69, 0x33f9,
    0xa0f5, 0x9f70, 0x3f26, 0xe65c, 0x10b5, 0xf9f9, 0xbed9, 0x99cf, 0x7de7,
    0x77b4, 0x3e80, 0x5920, 0xf36c, 0xec09, 0xbe12, 0xa89c, 0xfba3, 0x32e3,
};
static short B3[36] = {
    /* 0x3ff0,0x0000,0x0000,0x0000, */
    0xbffe, 0x3889, 0x5b57, 0xedf9, 0x3ff1, 0x112b, 0x4d77, 0xcf1b, 0xbfd1,
    0x9cbd, 0x38a2, 0x3643, 0x3fa4, 0x203f, 0x4ad3, 0xc0b3, 0xbf6b, 0xf91c,
    0xd02b, 0xdacc, 0x3f28, 0x7817, 0x1a91, 0x3d92, 0xbeda, 0x9d0c, 0x797e,
    0x644d, 0x3e80, 0xa3c3, 0x675b, 0x657c, 0xbe12, 0xa89c, 0xfba3, 0x2fcb,
};
#endif

/* 16 <= x <= 32
   x exp(-x) Ei(x) - 1  =  1/x A4(1/x) / B4(1/x)
   Theoretical absolute error = 1.22e-17  */

#if UNK
static double A4[8] = {
    -2.458119367674020323359E-1, -1.483382253322077687183E-1,
    7.248291795735551591813E-2,  -1.348315687380940523823E-2,
    1.342775069788636972294E-3,  -7.942465637159712264564E-5,
    2.644179518984235952241E-6,  -4.239473659313765177195E-8,
};
static double B4[8] = {
    /* 1.000000000000000000000E0, */
    -1.044225908443871106315E-1, -2.676453128101402655055E-1,
    9.695000254621984627876E-2,  -1.601745692712991078208E-2,
    1.496414899205908021882E-3,  -8.462452563778485013756E-5,
    2.728938403476726394024E-6,  -4.239462431819542051337E-8,
};
#endif
#if DEC
static short A4[32] = {
    01375730133037015260701133560137427016277101450610126345,
    00372240070754011045101741040136534016416500721700063753,
    00356600000016000256001477510134646011031101233160047432,
    00334610071250010103100752020132066001260100773050170177,
};
static short B4[32] = {
    /* 0040200,0000000,0000000,0000000, */
    01373250155602016243700307100137611000431600713440176361,
    00373060106671001110301550530136603003341201325300175171,
    00357040021532001551601661300134661007416200367410073466,
    00334670021316000310001713250132066001254101622020150160,
};
#endif
#if IBMPC
static short A4[] = {
    0xf2de, 0xfab0, 0x76c3, 0xbfcf, 0x359d, 0x3946, 0xfcbf, 0xbfc2,
    0x3f09, 0x9225, 0x8e3d, 0x3fb2, 0x0cfd, 0xae8f, 0x9d0e, 0xbf8b,
    0x19fd, 0xc0ae, 0x0001, 0x3f56, 0xc9e3, 0x34d9, 0xd219, 0xbf14,
    0x2f50, 0x1043, 0x2e55, 0x3ec6, 0xbe10, 0x2fd8, 0xc2b0, 0xbe66,
};
static short B4[] = {
    /* 0x0000,0x0000,0x0000,0x3ff0, */
    0xe639, 0x5ca3, 0xbb70, 0xbfba, 0x9f9e, 0xce5c, 0x2119, 0xbfd1,
    0x7b45, 0x2248, 0xd1b7, 0x3fb8, 0x1f4f, 0x56ab, 0x66e1, 0xbf90,
    0xdd8b, 0x4369, 0x846b, 0x3f58, 0x2ee7, 0x47bc, 0x2f0e, 0xbf16,
    0x1e5b, 0xc0c8, 0xe459, 0x3ec6, 0x5a0e, 0x3c90, 0xc2ac, 0xbe66,
};
#endif
#if MIEEE
static short A4[32] = {
    0xbfcf, 0x76c3, 0xfab0, 0xf2de, 0xbfc2, 0xfcbf, 0x3946, 0x359d,
    0x3fb2, 0x8e3d, 0x9225, 0x3f09, 0xbf8b, 0x9d0e, 0xae8f, 0x0cfd,
    0x3f56, 0x0001, 0xc0ae, 0x19fd, 0xbf14, 0xd219, 0x34d9, 0xc9e3,
    0x3ec6, 0x2e55, 0x1043, 0x2f50, 0xbe66, 0xc2b0, 0x2fd8, 0xbe10,
};
static short B4[32] = {
    /* 0x3ff0,0x0000,0x0000,0x0000, */
    0xbfba, 0xbb70, 0x5ca3, 0xe639, 0xbfd1, 0x2119, 0xce5c, 0x9f9e,
    0x3fb8, 0xd1b7, 0x2248, 0x7b45, 0xbf90, 0x66e1, 0x56ab, 0x1f4f,
    0x3f58, 0x846b, 0x4369, 0xdd8b, 0xbf16, 0x2f0e, 0x47bc, 0x2ee7,
    0x3ec6, 0xe459, 0xc0c8, 0x1e5b, 0xbe66, 0xc2ac, 0x3c90, 0x5a0e,
};
#endif

#if 0
/* 20 <= x <= 40
   x exp(-x) Ei(x) - 1  =  1/x A4(1/x) / B4(1/x)
   Theoretical absolute error = 1.78e-17  */

#if UNK
static double A4[8] = {
 2.067245813525780707978E-1,
-5.153749551345223645670E-1,
 1.928289589546695033096E-1,
-3.124468842857260044075E-2,
 2.740283734277352539912E-3,
-1.377775664366875175601E-4,
 3.803788980664744242323E-6,
-4.611038277393688031154E-8,
};
static double B4[8] = {
  /*  1.000000000000000000000E0, */
-8.544436025219516861531E-1,
 2.507436807692907385181E-1,
-3.647688090228423114064E-2,
 3.008576950332041388892E-3,
-1.452926405348421286334E-4,
 3.896007735260115431965E-6,
-4.611037642697098234083E-8,
};
#endif
#if DEC
static short A4[32] = {
0037523,0127633,0150301,0022031,
0140003,0167634,0170572,0170420,
0037505,0072364,0060672,0063220,
0136777,0172334,0057456,0102640,
0036063,0113125,0002476,0047251,
0135020,0074142,0042600,0043630,
0033577,0042230,0155372,0136105,
0132106,0005346,0165333,0114541,
};
static short B4[28] = {
  /* 0040200,0000000,0000000,0000000, */
0140132,0136320,0160433,0131535,
0037600,0060571,0144452,0060214,
0137025,0064310,0024220,0176472,
0036105,0025613,0115762,0166605,
0135030,0054662,0035454,0061763,
0033602,0135163,0116430,0000066,
0132106,0005345,0020602,0137133,
};
#endif
#if IBMPC
static short A4[32] = {
0x2483,0x7a18,0x75f3,0x3fca,
0x5e22,0x9e2f,0x7df3,0xbfe0,
0x4cd2,0x8c37,0xae9e,0x3fc8,
0xd0b4,0x8be5,0xfe9b,0xbf9f,
0xc9d5,0xa0a7,0x72ca,0x3f66,
0x08f3,0x48b0,0x0f0c,0xbf22,
0x5789,0x1b5f,0xe893,0x3ecf,
0x732c,0xdd5b,0xc15c,0xbe68,
};
static short B4[28] = {
  /* 0x0000,0x0000,0x0000,0x3ff0, */
0x766c,0x1c23,0x579a,0xbfeb,
0x4c11,0x3925,0x0c2f,0x3fd0,
0x1fa7,0x0512,0xad19,0xbfa2,
0x5db1,0x737e,0xa571,0x3f68,
0x8c7e,0x4765,0x0b36,0xbf23,
0x0007,0x73a3,0x574e,0x3ed0,
0x57cb,0xa430,0xc15c,0xbe68,
};
#endif
#if MIEEE
static short A4[32] = {
0x3fca,0x75f3,0x7a18,0x2483,
0xbfe0,0x7df3,0x9e2f,0x5e22,
0x3fc8,0xae9e,0x8c37,0x4cd2,
0xbf9f,0xfe9b,0x8be5,0xd0b4,
0x3f66,0x72ca,0xa0a7,0xc9d5,
0xbf22,0x0f0c,0x48b0,0x08f3,
0x3ecf,0xe893,0x1b5f,0x5789,
0xbe68,0xc15c,0xdd5b,0x732c,
};
static short B4[28] = {
  /* 0x3ff0,0x0000,0x0000,0x0000, */
0xbfeb,0x579a,0x1c23,0x766c,
0x3fd0,0x0c2f,0x3925,0x4c11,
0xbfa2,0xad19,0x0512,0x1fa7,
0x3f68,0xa571,0x737e,0x5db1,
0xbf23,0x0b36,0x4765,0x8c7e,
0x3ed0,0x574e,0x73a3,0x0007,
0xbe68,0xc15c,0xa430,0x57cb,
};
#endif
#endif /* 0 */

/* 4 <= x <= 8
   x exp(-x) Ei(x) - 1  =  1/x A5(1/x) / B5(1/x)
   Theoretical absolute error = 2.20e-17  */

#if UNK
static double A5[8] = {
    -1.373215375871208729803E0, -7.084559133740838761406E-1,
    1.580806855547941010501E0,  -2.601500427425622944234E-1,
    2.994674694113713763365E-2, -1.038086040188744005513E-3,
    4.371064420753005429514E-52.141783679522602903795E-6,
};
static double B5[8] = {
    /* 1.000000000000000000000E0, */
    8.585231423622028380768E-1,  4.483285822873995129957E-1,
    7.687932158124475434091E-2,  2.449868241021887685904E-2,
    8.832165941927796567926E-4,  4.590952299511353531215E-4,
    -4.729848351866523044863E-62.665195537390710170105E-6,
};
#endif
#if DEC
static short A5[32] = {
    01402570142605007633501136320140065005653501612310074311,
    00403120053741000435700764050137605003114201655030136705,
    00367650051341005357300076020135610001014300276430110522,
    00344670052762006202401201610033417013562000365000062647,
};
static short B[32] = {
    /* 0040200,0000000,0000000,0000000, */
    00401330144054003151600041000037745010552201666220123146,
    00372350071347015756001574640036710013056501737470041670,
    00355470103651010624301012400035360013126701762630140257,
    01336360132426010253701025310033462015566501675030176350,
};
#endif
#if IBMPC
static short A5[32] = {
    0xb2f3, 0xaf9b, 0xf8b0, 0xbff5, 0x2f19, 0xbc53, 0xabab, 0xbfe6,
    0xefa1, 0x211d, 0x4afc, 0x3ff9, 0x77b9, 0x5d68, 0xa64c, 0xbfd0,
    0x61f0, 0x2aef, 0xaa5c, 0x3f9e, 0x722a, 0x65f4, 0x020c, 0xbf51,
    0x940e, 0x4c82, 0xeabe, 0x3f06, 0x0cb5, 0x07a8, 0xf772, 0x3ec1,
};
static short B5[32] = {
    /* 0x0000,0x0000,0x0000,0x3ff0, */
    0xc108, 0x8669, 0x7905, 0x3feb, 0x54cd, 0x5db2, 0xb16a, 0x3fdc,
    0x1be7, 0xfbee, 0xae5c, 0x3fb3, 0xe877, 0xbefc, 0x162e, 0x3f99,
    0x7054, 0x3194, 0xf0f5, 0x3f4c, 0x7816, 0xff96, 0x1656, 0x3f3e,
    0xf0ab, 0xd0ab, 0xd6a2, 0xbed3, 0x7f9d, 0xbde8, 0x5b76, 0x3ec6,
};
#endif
#if MIEEE
static short A5[32] = {
    0xbff5, 0xf8b0, 0xaf9b, 0xb2f3, 0xbfe6, 0xabab, 0xbc53, 0x2f19,
    0x3ff9, 0x4afc, 0x211d, 0xefa1, 0xbfd0, 0xa64c, 0x5d68, 0x77b9,
    0x3f9e, 0xaa5c, 0x2aef, 0x61f0, 0xbf51, 0x020c, 0x65f4, 0x722a,
    0x3f06, 0xeabe, 0x4c82, 0x940e, 0x3ec1, 0xf772, 0x07a8, 0x0cb5,
};
static short B5[32] = {
    /* 0x3ff0,0x0000,0x0000,0x0000, */
    0x3feb, 0x7905, 0x8669, 0xc108, 0x3fdc, 0xb16a, 0x5db2, 0x54cd,
    0x3fb3, 0xae5c, 0xfbee, 0x1be7, 0x3f99, 0x162e, 0xbefc, 0xe877,
    0x3f4c, 0xf0f5, 0x3194, 0x7054, 0x3f3e, 0x1656, 0xff96, 0x7816,
    0xbed3, 0xd6a2, 0xd0ab, 0xf0ab, 0x3ec6, 0x5b76, 0xbde8, 0x7f9d,
};
#endif
/* 2 <= x <= 4
   x exp(-x) Ei(x) - 1  =  1/x A6(1/x) / B6(1/x)
   Theoretical absolute error = 4.89e-17  */

#if UNK
static double A6[8] = {
    1.981808503259689673238E-2,  -1.271645625984917501326E0,
    -2.088160335681228318920E0,  2.755544509187936721172E0,
    -4.409507048701600257171E-14.665623805935891391017E-2,
    -1.545042679673485262580E-37.059980605299617478514E-5,
};
static double B6[7] = {
    /* 1.000000000000000000000E0, */
    1.476498670914921440652E0,  5.629177174822436244827E-1,
    1.699017897879307263248E-12.291647179034212017463E-2,
    4.450150439728752875043E-31.727439612206521482874E-4,
    3.953167195549672482304E-5,
};
#endif
#if DEC
static short A6[32] = {
    00366420054611006126300001400140242014251001257320072035,
    01404050122153003764301045270040460005532700555500116240,
    01377410142112007044101035100037077001523401047500146765,
    01357120101407010755400202530034624000737300726210063735,
};
static short B6[28] = {
    /* 0040200,0000000,0000000,0000000, */
    0040274017675001100250061006004002000155400021354,
    0155050003745501752740015257002111200366730135523,
    0016042011720300362210151221004635201441740035065,
    0021232011772701524320034445014731700373000067123,
};
#endif
#if IBMPC
static short A6[32] = {
    0x600c, 0x2c56, 0x4b31, 0x3f94, 0x4e84, 0x157b, 0x58a9, 0xbff4,
    0x712b, 0x67f4, 0xb48d, 0xc000, 0x1394, 0xeb6d, 0x0b5a, 0x4006,
    0x30e9, 0x4e24, 0x3889, 0xbfdc, 0x19bf, 0x913d, 0xe353, 0x3fa7,
    0x8415, 0xf1ed, 0x5060, 0xbf59, 0x2cfc, 0x6eb2, 0x81df, 0x3f12,
};
static short B6[28] = {
    /* 0x0000,0x0000,0x0000,0x3ff0, */
    0xac41, 0x1202, 0x9fbd, 0x3ff7, 0x9b45, 0x045d, 0x036c,
    0x3fe2, 0xe449, 0x8355, 0xbf57, 0x3fc5, 0x53d0, 0x6384,
    0x776a, 0x3f97, 0x590f, 0x299d, 0x3a52, 0x3f72, 0xfaa3,
    0x53fa, 0xa453, 0x3f26, 0x0dca, 0xe7d8, 0xb9d9, 0x3f04,
};
#endif
#if MIEEE
static short A6[32] = {
    0x3f94, 0x4b31, 0x2c56, 0x600c, 0xbff4, 0x58a9, 0x157b, 0x4e84,
    0xc000, 0xb48d, 0x67f4, 0x712b, 0x4006, 0x0b5a, 0xeb6d, 0x1394,
    0xbfdc, 0x3889, 0x4e24, 0x30e9, 0x3fa7, 0xe353, 0x913d, 0x19bf,
    0xbf59, 0x5060, 0xf1ed, 0x8415, 0x3f12, 0x81df, 0x6eb2, 0x2cfc,
};
static short B6[28] = {
    /* 0x3ff0,0x0000,0x0000,0x0000, */
    0x3ff7, 0x9fbd, 0x1202, 0xac41, 0x3fe2, 0x036c, 0x045d,
    0x9b45, 0x3fc5, 0xbf57, 0x8355, 0xe449, 0x3f97, 0x776a,
    0x6384, 0x53d0, 0x3f72, 0x3a52, 0x299d, 0x590f, 0x3f26,
    0xa453, 0x53fa, 0xfaa3, 0x3f04, 0xb9d9, 0xe7d8, 0x0dca,
};
#endif
/* 32 <= x <= 64
   x exp(-x) Ei(x) - 1  =  1/x A7(1/x) / B7(1/x)
   Theoretical absolute error = 7.71e-18  */

#if UNK
static double A7[6] = {
    1.212561118105456670844E-1, -5.823133179043894485122E-1,
    2.348887314557016779211E-1, -3.040034318113248237280E-2,
    1.510082146865190661777E-3, -2.523137095499571377122E-5,
};
static double B7[5] = {
    /* 1.000000000000000000000E0, */
    -1.002252150365854016662E0,  2.928709694872224144953E-1,
    -3.337004338674007801307E-21.560544881127388842819E-3,
    -2.523137093603234562648E-5,
};
#endif
#if DEC
static short A7[24] = {
    00373700052437015252401501250140025001117400501540131330,
    00375600103253016746400622450136771000504301740010023345,
    00357050166762015730000164510134323012376401577670134477,
};
static short B7[20] = {
    /* 0040200,0000000,0000000,0000000, */
    0140200004471400640250060324003762501714570003712,
    0073131013701001274060150061014174600357140105462,
    007235601037120134323012376401565140077414,
};
#endif
#if IBMPC
static short A7[24] = {
    0x9a0b, 0xfaaa, 0x0aa3, 0x3fbf, 0x965b, 0x8a0d, 0xa24f, 0xbfe2,
    0x8c95, 0x7de6, 0x10d5, 0x3fce, 0x24dd, 0x7f00, 0x2144, 0xbf9f,
    0x03a5, 0x5bd8, 0xbdbe, 0x3f58, 0xf728, 0x9bfe, 0x74fe, 0xbefa,
};
static short B7[20] = {
    /* 0x0000,0x0000,0x0000,0x3ff0, */
    0xac1a, 0x8d02, 0x0939, 0xbff0, 0x4ecb, 0xe0f9, 0xbe65,
    0x3fd2, 0x387d, 0xda06, 0x15e0, 0xbfa1, 0xd0f9, 0x4e9d,
    0x9166, 0x3f59, 0x8fe2, 0x9ba9, 0x74fe, 0xbefa,
};
#endif
#if MIEEE
static short A7[24] = {
    0x3fbf, 0x0aa3, 0xfaaa, 0x9a0b, 0xbfe2, 0xa24f, 0x8a0d, 0x965b,
    0x3fce, 0x10d5, 0x7de6, 0x8c95, 0xbf9f, 0x2144, 0x7f00, 0x24dd,
    0x3f58, 0xbdbe, 0x5bd8, 0x03a5, 0xbefa, 0x74fe, 0x9bfe, 0xf728,
};
static short B7[20] = {
    /* 0x3ff0,0x0000,0x0000,0x0000, */
    0xbff0, 0x0939, 0x8d02, 0xac1a, 0x3fd2, 0xbe65, 0xe0f9,
    0x4ecb, 0xbfa1, 0x15e0, 0xda06, 0x387d, 0x3f59, 0x9166,
    0x4e9d, 0xd0f9, 0xbefa, 0x74fe, 0x9ba9, 0x8fe2,
};
#endif

double ei(x) double x;
{
  double f, w;

  if (x <= 0.0) {
    mtherr("ei", DOMAIN);
    return 0.0;
  } else if (x < 2.0) {
    /* Power series.
                              inf    n
                               -    x
       Ei(x) = EUL + ln x  +   >   ----
                               -   n n!
                              n=1
    */

    f = polevl(x, A, 5) / p1evl(x, B, 6);
    /*      f = polevl(x,A,6) / p1evl(x,B,7); */
    /*      f = polevl(x,A,8) / p1evl(x,B,9); */
    return (EUL + log(x) + x * f);
  } else if (x < 4.0) {
    /* Asymptotic expansion.
                              1       2       6
      x exp(-x) Ei(x) =  1 + ---  +  ---  +  ---- + ...
                              x        2       3
                                      x       x
    */

    w = 1.0 / x;
    f = polevl(w, A6, 7) / p1evl(w, B6, 7);
    return (exp(x) * w * (1.0 + w * f));
  } else if (x < 8.0) {
    w = 1.0 / x;
    f = polevl(w, A5, 7) / p1evl(w, B5, 8);
    return (exp(x) * w * (1.0 + w * f));
  } else if (x < 16.0) {
    w = 1.0 / x;
    f = polevl(w, A2, 9) / p1evl(w, B2, 9);
    return (exp(x) * w * (1.0 + w * f));
  } else if (x < 32.0) {
    w = 1.0 / x;
    f = polevl(w, A4, 7) / p1evl(w, B4, 8);
    return (exp(x) * w * (1.0 + w * f));
  } else if (x < 64.0) {
    w = 1.0 / x;
    f = polevl(w, A7, 5) / p1evl(w, B7, 5);
    return (exp(x) * w * (1.0 + w * f));
  } else {
    w = 1.0 / x;
    f = polevl(w, A3, 8) / p1evl(w, B3, 9);
    return (exp(x) * w * (1.0 + w * f));
  }
}

Messung V0.5 in Prozent
C=96 H=95 G=95

¤ Dauer der Verarbeitung: 0.15 Sekunden  (vorverarbeitet am  2026-06-10) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.