/*Translated by FOR_C, v3.4.2 (-), on 07/09/115 at 08:30:11 */ /*FOR_C Options SET: ftn=u io=c no=p op=aimnv s=dbov str=l x=f - prototypes */ #include #include "fcrt.h" #include "sxparg.h" #include #include float /*FUNCTION*/ sxparg( long l) { long int _l0; float fac, sxparg_v; static float xmin; static float xmax = -1.0e0; /* Copyright (c) 1996 California Institute of Technology, Pasadena, CA. * ALL RIGHTS RESERVED. * Based on Government Sponsored Research NAS7-03001. *>> 1998-10-29 SXPARG Krogh Moved external statement up for mangle. *>> 1994-10-20 SXPARG Krogh Changes to use M77CON *>> 1993-05-06 SXPARG WVS JPL Conversion from NSWC to Math 77 *--S replaces "?": ?XPARG * ------------------------------------------------------------------- * IF L = 0 THEN SXPARG(L) = THE LARGEST POSITIVE W FOR WHICH * EXP(W) CAN BE COMPUTED. * * IF L IS NONZERO THEN SXPARG(L) = THE LARGEST NEGATIVE W FOR * WHICH THE COMPUTED VALUE OF EXP(W) IS NONZERO. * * NOTE... ONLY AN APPROXIMATE VALUE FOR SXPARG(L) IS NEEDED. * ------------------------------------------------------------------- */ if (xmax < 0.0) { fac = 1.0e0 - FLT_EPSILON/FLT_RADIX; xmax = fac*logf( FLT_MAX ); xmin = fac*logf( FLT_MIN ); } if (l != 0) { sxparg_v = xmin; } else { sxparg_v = xmax; } return( sxparg_v ); } /* end of function */