* ************************************************************************ subroutine dcmach( epsmch, huge, tiny ) * ************************************************************************ * Purpose : * --------- * This routine computes the relative machine precision EPSMCH, a * very large number HUGE and a very small number TINY, depending * on the machine that is used. It also sets the constants ZERO * and ONE to these values in double precision. * Parameters : * ------------ * epsmch ( dble ) * input : arbitrary. * output : the relative machine precision. * huge ( dble ) * input : arbitrary. * output : the overflow limit of the machine. * tiny ( dble ) * input : arbitrary. * output : the underflow limit of the machine. * Routines used : * --------------- * dmach (blasd) * Programming : * ------------- * Ph.L. Toint * ************************************************************************ * Routine parameters double precision epsmch, huge, tiny * Internal variable integer job double precision zero, one, two, three, half, tenm1, tenm2, tenm4 common / prbcst / zero, one, two, three, half, tenm1, tenm2, tenm4 * Define the routine from blasd double precision dmach * * Set 0.0 and 1.0 * zero = 0.0d0 one = 1.0d0 two = 2.0d0 three = 3.0d0 half = 0.5d0 tenm1 = 1.0d-1 tenm2 = 1.0d-2 tenm4 = 1.0d-4 * * Compute the machine epsilon * job = 1 epsmch = dmach(job) * * Compute the overflow limit * job = 3 huge = dmach(job) * * Compute the underflow limit * job = 2 tiny = dmach(job) return end