# HG changeset patch # User jwe # Date 814076197 0 # Node ID b10436a98aa7eb45c58824191a2abfcd79f99164 # Parent b221bae7ca15a12dadca312223643e347a6a7d1c [project @ 1995-10-19 04:16:37 by jwe] diff -r b221bae7ca15 -r b10436a98aa7 src/expm.cc --- a/src/expm.cc Thu Oct 19 03:43:37 1995 +0000 +++ b/src/expm.cc Thu Oct 19 04:16:37 1995 +0000 @@ -140,13 +140,16 @@ m.fortran_vec (), nc, work.fortran_vec ()); - sqpow = (int) (1.0 + log (inf_norm) / log (2.0)); + sqpow = (int) (inf_norm > 0.0 + ? (1.0 + log (inf_norm) / log (2.0)) + : 0.0); // Check whether we need to square at all. if (sqpow < 0) sqpow = 0; - else + + if (sqpow > 0) { for (inf_norm = 1.0, i = 0; i < sqpow; i++) inf_norm *= 2.0; @@ -234,13 +237,16 @@ m.fortran_vec (), nc, work.fortran_vec ()); - sqpow = (int) (1.0 + log (inf_norm) / log (2.0)); + sqpow = (int) (inf_norm > 0.0 + ? (1.0 + log (inf_norm) / log (2.0)) + : 0.0); // Check whether we need to square at all. if (sqpow < 0) sqpow = 0; - else + + if (sqpow > 0) { for (inf_norm = 1.0, i = 0; i < sqpow; i++) inf_norm *= 2.0;