Average Error: 30.2 → 0.0
Time: 1.7s
Precision: 64
\[\log \left(\sqrt{re \cdot re + im \cdot im}\right)\]
\[\log \left(\sqrt{re^2 + im^2}^*\right)\]
double f(double re, double im) {
        double r290857 = re;
        double r290858 = r290857 * r290857;
        double r290859 = im;
        double r290860 = r290859 * r290859;
        double r290861 = r290858 + r290860;
        double r290862 = sqrt(r290861);
        double r290863 = log(r290862);
        return r290863;
}

double f(double re, double im) {
        double r290864 = re;
        double r290865 = im;
        double r290866 = hypot(r290864, r290865);
        double r290867 = log(r290866);
        return r290867;
}

\log \left(\sqrt{re \cdot re + im \cdot im}\right)
\log \left(\sqrt{re^2 + im^2}^*\right)

Error

Bits error versus re

Bits error versus im

Derivation

  1. Initial program 30.2

    \[\log \left(\sqrt{re \cdot re + im \cdot im}\right)\]
  2. Simplified0.0

    \[\leadsto \color{blue}{\log \left(\sqrt{re^2 + im^2}^*\right)}\]
  3. Final simplification0.0

    \[\leadsto \log \left(\sqrt{re^2 + im^2}^*\right)\]

Reproduce

herbie shell --seed 2019101 +o rules:numerics
(FPCore (re im)
  :name "math.log/1 on complex, real part"
  (log (sqrt (+ (* re re) (* im im)))))