Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Cephes/misc/   (Cephes Mathematical Library ©)  Datei vom 12.5.2026 mit Größe 25 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] = {
0140653,0033335,0060230,0144217,
0042132,0100502,0035625,0167413,
0143202,0102224,0037176,0175403,
0044130,0071704,0077421,0170343,
0144641,0144504,0041200,0045154,
0045302,0064631,0047234,0142052,
};
static short B[24] = {
  /* 0040200,0000000,0000000,0000000, */
0141522,0002634,0070442,0142614,
0042635,0071667,0146532,0027705,
0143611,0035375,0156025,0114015,
0044421,0147215,0106177,0046330,
0145062,0014556,0144216,0103725,
0045302,0064631,0047234,0142052,
};
#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-1,
 2.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-1,
 1.105077041474037862347E-1,
-1.566542966630792353556E-2,
 2.761106850817352773874E-3,
-2.089148012284048449115E-4,
 1.708528938807675304186E-5,
-4.459311796356686423199E-7,
 1.394634930353847498145E-8,
 6.150865933977338354138E-10,
};
#endif
#if DEC
static short A2[40] = {
0140406,0154004,0035104,0173336,
0040335,0145071,0031560,0150165,
0137570,0026670,0176230,0055040,
0036676,0043416,0077122,0054476,
0035170,0150206,0034407,0175571,
0134656,0174121,0123231,0021751,
0034144,0136766,0036746,0121115,
0132704,0037632,0135077,0107300,
0031573,0126321,0117076,0004314,
0030451,0143233,0041352,0172464,
};
static short B2[36] = {
  /* 0040200,0000000,0000000,0000000, */
0137553,0051122,0120721,0170437,
0037342,0050734,0175047,0032132,
0136600,0052311,0101406,0147050,
0036064,0171657,0120001,0071165,
0135133,0010043,0151244,0066340,
0034217,0051141,0026115,0043305,
0132757,0064120,0106341,0051217,
0031557,0114261,0060663,0135017,
0030451,0011337,0001344,0175542,
};
#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-1,
 6.886192415566705051750E-1,
-2.132598113545206124553E-1,
 3.346107552384193813594E-2,
-3.076541477344756050249E-3,
 1.747119316454907477380E-4,
-6.103711682274170530369E-6,
 1.218032765428652199087E-7,
-1.086076102793290233007E-9,
};
static double B3[9] = {
  /* 1.000000000000000000000E0, */
-1.888802868662308731041E0,
 1.066691687211408896850E0,
-2.751915982306380647738E-1,
 3.930852688233823569726E-2,
-3.414684558602365085394E-3,
 1.866844370703555398195E-4,
-6.345146083130515357861E-6,
 1.239754287483206878024E-7,
-1.086076102793126632978E-9,
};
#endif
#if DEC
static short A3[36] = {
0140104,0005167,0071746,0115510,
0040060,0044531,0140741,0154556,
0137532,0060307,0126506,0071123,
0037011,0007173,0010405,0127224,
0136111,0117715,0003654,0175577,
0035067,0031340,0102657,0147714,
0133714,0147173,0167473,0136640,
0032402,0144407,0115547,0060114,
0130625,0042347,0156431,0113425,
};
static short B3[36] = {
  /* 0040200,0000000,0000000,0000000, */
0140361,0142112,0155277,0067714,
0040210,0104532,0065676,0074326,
0137614,0162751,0142421,0131033,
0037041,0000772,0053236,0002632,
0136137,0144346,0100536,0153136,
0035103,0140270,0152211,0166215,
0133724,0164143,0145763,0021153,
0032405,0017033,0035333,0025736,
0130625,0042347,0156431,0077134,
};
#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] = {
0137573,0133037,0152607,0113356,
0137427,0162771,0145061,0126345,
0037224,0070754,0110451,0174104,
0136534,0164165,0072170,0063753,
0035660,0000016,0002560,0147751,
0134646,0110311,0123316,0047432,
0033461,0071250,0101031,0075202,
0132066,0012601,0077305,0170177,
};
static short B4[32] = {
  /* 0040200,0000000,0000000,0000000, */
0137325,0155602,0162437,0030710,
0137611,0004316,0071344,0176361,
0037306,0106671,0011103,0155053,
0136603,0033412,0132530,0175171,
0035704,0021532,0015516,0166130,
0134661,0074162,0036741,0073466,
0033467,0021316,0003100,0171325,
0132066,0012541,0162202,0150160,
};
#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-5,
 2.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-6,
 2.665195537390710170105E-6,
};
#endif
#if DEC
static short A5[32] = {
0140257,0142605,0076335,0113632,
0140065,0056535,0161231,0074311,
0040312,0053741,0004357,0076405,
0137605,0031142,0165503,0136705,
0036765,0051341,0053573,0007602,
0135610,0010143,0027643,0110522,
0034467,0052762,0062024,0120161,
0033417,0135620,0036500,0062647,
};
static short B[32] = {
  /* 0040200,0000000,0000000,0000000, */
0040133,0144054,0031516,0004100,
0037745,0105522,0166622,0123146,
0037235,0071347,0157560,0157464,
0036710,0130565,0173747,0041670,
0035547,0103651,0106243,0101240,
0035360,0131267,0176263,0140257,
0133636,0132426,0102537,0102531,
0033462,0155665,0167503,0176350,
};
#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-1,
 4.665623805935891391017E-2,
-1.545042679673485262580E-3,
 7.059980605299617478514E-5,
};
static double B6[7] = {
  /* 1.000000000000000000000E0, */
 1.476498670914921440652E0,
 5.629177174822436244827E-1,
 1.699017897879307263248E-1,
 2.291647179034212017463E-2,
 4.450150439728752875043E-3,
 1.727439612206521482874E-4,
 3.953167195549672482304E-5,
};
#endif
#if DEC
static short A6[32] = {
0036642,0054611,0061263,0000140,
0140242,0142510,0125732,0072035,
0140405,0122153,0037643,0104527,
0040460,0055327,0055550,0116240,
0137741,0142112,0070441,0103510,
0037077,0015234,0104750,0146765,
0135712,0101407,0107554,0020253,
0034624,0007373,0072621,0063735,
};
static short B6[28] = {
  /* 0040200,0000000,0000000,0000000, */
0040274,0176750,0110025,0061006,
0040020,0015540,0021354,0155050,
0037455,0175274,0015257,0021112,
0036673,0135523,0016042,0117203,
0036221,0151221,0046352,0144174,
0035065,0021232,0117727,0152432,
0034445,0147317,0037300,0067123,
};
#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-2,
 1.560544881127388842819E-3,
-2.523137093603234562648E-5,
};
#endif
#if DEC
static short A7[24] = {
0037370,0052437,0152524,0150125,
0140025,0011174,0050154,0131330,
0037560,0103253,0167464,0062245,
0136771,0005043,0174001,0023345,
0035705,0166762,0157300,0016451,
0134323,0123764,0157767,0134477,
};
static short B7[20] = {
  /* 0040200,0000000,0000000,0000000, */
0140200,0044714,0064025,0060324,
0037625,0171457,0003712,0073131,
0137010,0127406,0150061,0141746,
0035714,0105462,0072356,0103712,
0134323,0123764,0156514,0077414,
};
#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=95 H=100 G=97

¤ Dauer der Verarbeitung: 0.6 Sekunden  (vorverarbeitet am  2026-06-17) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

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.