From GOLUB@SU-SCORE.ARPA Wed Oct 16 22:05:26 1985 Received: from SU-SCORE.ARPA (su-score.arpa.ARPA) by anl-mcs.ARPA ; Wed, 16 Oct 85 22:05:03 cdt Return-Path: Received: from CSNET-RELAY.ARPA by SU-SCORE.ARPA with TCP; Wed 16 Oct 85 13:53:44-PDT Received: from waterloo by csnet-relay.csnet id al25408; 16 Oct 85 16:50 EDT Date: Wed, 16 Oct 85 12:48:58 edt From: Richard Bartels Message-Id: <8510161648.AA02190@watcgl.UUCP> To: na.dis@su-score.ARPA Subject: UNIX/f77 dpmpar Resent-Date: Wed 16 Oct 85 18:48:26-PDT Resent-From: Gene Golub (415/497-3124) Resent-To: :; Resent-Message-Id: <12151704861.14.GOLUB@SU-SCORE.ARPA> Status: RO The following is a version of the MINPACK routine DPMPAR, which provides double-precision machine constants, suitable for use with UNIX/f77. This is being circulated because it was discovered that nobody here at Waterloo knew how to specify these constants -- including Esmond Ng (and that is pretty shocking). This version of DPMPAR checks out correctly with the MINPACK machine-constant verifier run under UNIX/f77. Bug fixes, comments, and improvements solicited. ------------------ cut here --------------------------------------- DOUBLE PRECISION FUNCTION DPMPAR(I) INTEGER I C ********** C C FUNCTION DPMPAR C C THIS FUNCTION PROVIDES DOUBLE PRECISION MACHINE PARAMETERS C WHEN THE APPROPRIATE SET OF DATA STATEMENTS IS ACTIVATED (BY C REMOVING THE C FROM COLUMN 1) AND ALL OTHER DATA STATEMENTS ARE C RENDERED INACTIVE. MOST OF THE PARAMETER VALUES WERE OBTAINED C FROM THE CORRESPONDING BELL LABORATORIES PORT LIBRARY FUNCTION. C C THE FUNCTION STATEMENT IS C C DOUBLE PRECISION FUNCTION DPMPAR(I) C C WHERE C C I IS AN INTEGER INPUT VARIABLE SET TO 1, 2, OR 3 WHICH C SELECTS THE DESIRED MACHINE PARAMETER. IF THE MACHINE HAS C T BASE B DIGITS AND ITS SMALLEST AND LARGEST EXPONENTS ARE C EMIN AND EMAX, RESPECTIVELY, THEN THESE PARAMETERS ARE C C DPMPAR(1) = B**(1 - T), THE MACHINE PRECISION, C C DPMPAR(2) = B**(EMIN - 1), THE SMALLEST MAGNITUDE, C C DPMPAR(3) = B**EMAX*(1 - B**(-T)), THE LARGEST MAGNITUDE. C C MINPACK. VERSION OF NOVEMBER 1979. C BURTON S. GARBOW, KENNETH E. HILLSTROM, JORGE J. MORE C C UNIX/F77 VERSION OF OCTOBER 16, 1985 C RICHARD BARTELS C C ********** DOUBLE PRECISION RMACH(3) INTEGER NMAX(2) EQUIVALENCE(NMAX(1),RMACH(3)) C DATA RMACH(1) /O'22200'/ DATA RMACH(2) /O'200'/ DATA NMAX(1) /O'37777677777'/ DATA NMAX(2) /O'37777777777'/ C DPMPAR = RMACH(I) RETURN C C LAST CARD OF FUNCTION DPMPAR. C END .