Average Error: 32.4 → 0.6
Time: 4.4s
Precision: 64
\[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\]
\[\frac{\log \left(\left(\sqrt[3]{\mathsf{hypot}\left(re, im\right)} \cdot \sqrt[3]{\mathsf{hypot}\left(re, im\right)}\right) \cdot \left(\sqrt[3]{\sqrt{\mathsf{hypot}\left(re, im\right)}} \cdot \sqrt[3]{\sqrt{\mathsf{hypot}\left(re, im\right)}}\right)\right)}{\log 10}\]
\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}
\frac{\log \left(\left(\sqrt[3]{\mathsf{hypot}\left(re, im\right)} \cdot \sqrt[3]{\mathsf{hypot}\left(re, im\right)}\right) \cdot \left(\sqrt[3]{\sqrt{\mathsf{hypot}\left(re, im\right)}} \cdot \sqrt[3]{\sqrt{\mathsf{hypot}\left(re, im\right)}}\right)\right)}{\log 10}
double f(double re, double im) {
        double r76950 = re;
        double r76951 = r76950 * r76950;
        double r76952 = im;
        double r76953 = r76952 * r76952;
        double r76954 = r76951 + r76953;
        double r76955 = sqrt(r76954);
        double r76956 = log(r76955);
        double r76957 = 10.0;
        double r76958 = log(r76957);
        double r76959 = r76956 / r76958;
        return r76959;
}

double f(double re, double im) {
        double r76960 = re;
        double r76961 = im;
        double r76962 = hypot(r76960, r76961);
        double r76963 = cbrt(r76962);
        double r76964 = r76963 * r76963;
        double r76965 = sqrt(r76962);
        double r76966 = cbrt(r76965);
        double r76967 = r76966 * r76966;
        double r76968 = r76964 * r76967;
        double r76969 = log(r76968);
        double r76970 = 10.0;
        double r76971 = log(r76970);
        double r76972 = r76969 / r76971;
        return r76972;
}

Error

Bits error versus re

Bits error versus im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 32.4

    \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\]
  2. Using strategy rm
  3. Applied hypot-def0.6

    \[\leadsto \frac{\log \color{blue}{\left(\mathsf{hypot}\left(re, im\right)\right)}}{\log 10}\]
  4. Using strategy rm
  5. Applied add-cube-cbrt0.6

    \[\leadsto \frac{\log \color{blue}{\left(\left(\sqrt[3]{\mathsf{hypot}\left(re, im\right)} \cdot \sqrt[3]{\mathsf{hypot}\left(re, im\right)}\right) \cdot \sqrt[3]{\mathsf{hypot}\left(re, im\right)}\right)}}{\log 10}\]
  6. Using strategy rm
  7. Applied add-sqr-sqrt0.6

    \[\leadsto \frac{\log \left(\left(\sqrt[3]{\mathsf{hypot}\left(re, im\right)} \cdot \sqrt[3]{\mathsf{hypot}\left(re, im\right)}\right) \cdot \sqrt[3]{\color{blue}{\sqrt{\mathsf{hypot}\left(re, im\right)} \cdot \sqrt{\mathsf{hypot}\left(re, im\right)}}}\right)}{\log 10}\]
  8. Applied cbrt-prod0.6

    \[\leadsto \frac{\log \left(\left(\sqrt[3]{\mathsf{hypot}\left(re, im\right)} \cdot \sqrt[3]{\mathsf{hypot}\left(re, im\right)}\right) \cdot \color{blue}{\left(\sqrt[3]{\sqrt{\mathsf{hypot}\left(re, im\right)}} \cdot \sqrt[3]{\sqrt{\mathsf{hypot}\left(re, im\right)}}\right)}\right)}{\log 10}\]
  9. Final simplification0.6

    \[\leadsto \frac{\log \left(\left(\sqrt[3]{\mathsf{hypot}\left(re, im\right)} \cdot \sqrt[3]{\mathsf{hypot}\left(re, im\right)}\right) \cdot \left(\sqrt[3]{\sqrt{\mathsf{hypot}\left(re, im\right)}} \cdot \sqrt[3]{\sqrt{\mathsf{hypot}\left(re, im\right)}}\right)\right)}{\log 10}\]

Reproduce

herbie shell --seed 2020089 +o rules:numerics
(FPCore (re im)
  :name "math.log10 on complex, real part"
  :precision binary64
  (/ (log (sqrt (+ (* re re) (* im im)))) (log 10)))