Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/Isabelle/Archive-of-Formal-Proofs/thys/Matroids/   (Sammlung formaler Beweise Version 2026-5©)  Datei vom 29.4.2026 mit Größe 52 kB image not shown  

SSL 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.5 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.