123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #include "slatec-internal.hpp"
- static integer const c__1 = 1;
- static integer const c__2 = 2;
- int dgamlm_(double *xmin, double *xmax)
- {
-
- double d__1, d__2;
-
- integer i__;
- double xln, xold;
- double alnbig, alnsml;
- alnsml = log(d1mach_(1));
- *xmin = -alnsml;
- for (i__ = 1; i__ <= 10; ++i__) {
- xold = *xmin;
- xln = log(*xmin);
- *xmin -= *xmin * ((*xmin + .5) * xln - *xmin - .2258 + alnsml) / (*
- xmin * xln + .5);
- if ((d__1 = *xmin - xold, abs(d__1)) < .005) {
- goto L20;
- }
- }
- xermsg_("SLATEC", "DGAMLM", "UNABLE TO FIND XMIN", &c__1, &c__2, (ftnlen)
- 6, (ftnlen)6, (ftnlen)19);
- L20:
- *xmin = -(*xmin) + .01;
- alnbig = log(d1mach_(2));
- *xmax = alnbig;
- for (i__ = 1; i__ <= 10; ++i__) {
- xold = *xmax;
- xln = log(*xmax);
- *xmax -= *xmax * ((*xmax - .5) * xln - *xmax + .9189 - alnbig) / (*
- xmax * xln - .5);
- if ((d__1 = *xmax - xold, abs(d__1)) < .005) {
- goto L40;
- }
- }
- xermsg_("SLATEC", "DGAMLM", "UNABLE TO FIND XMAX", &c__2, &c__2, (ftnlen)
- 6, (ftnlen)6, (ftnlen)19);
- L40:
- *xmax += -.01;
- d__1 = *xmin, d__2 = -(*xmax) + 1.;
- *xmin = max(d__1,d__2);
- return 0;
- }
|