Average Error: 31.6 → 17.5
Time: 23.9s
Precision: 64
Internal Precision: 128
\[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\]
\[\begin{array}{l} \mathbf{if}\;re \le -1.6714086592074158 \cdot 10^{+118}:\\ \;\;\;\;\left(\left(\log \left(\frac{-1}{re}\right) \cdot -2\right) \cdot \frac{1}{\sqrt{\log 10}}\right) \cdot \frac{\frac{1}{2}}{\sqrt{\log 10}}\\ \mathbf{elif}\;re \le 1.8014191728219844 \cdot 10^{+103}:\\ \;\;\;\;\sqrt{\frac{\frac{1}{2}}{\sqrt{\log 10}}} \cdot \left(\sqrt{\frac{\frac{1}{2}}{\sqrt{\log 10}}} \cdot \frac{\log \left(re \cdot re + im \cdot im\right)}{\sqrt{\log 10}}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{2}}{\sqrt{\log 10}} \cdot \left(\left(2 \cdot \log re\right) \cdot \frac{1}{\sqrt{\log 10}}\right)\\ \end{array}\]

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. Split input into 3 regimes
  2. if re < -1.6714086592074158e+118

    1. Initial program 53.4

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt53.4

      \[\leadsto \frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\color{blue}{\sqrt{\log 10} \cdot \sqrt{\log 10}}}\]
    4. Applied pow1/253.4

      \[\leadsto \frac{\log \color{blue}{\left({\left(re \cdot re + im \cdot im\right)}^{\frac{1}{2}}\right)}}{\sqrt{\log 10} \cdot \sqrt{\log 10}}\]
    5. Applied log-pow53.4

      \[\leadsto \frac{\color{blue}{\frac{1}{2} \cdot \log \left(re \cdot re + im \cdot im\right)}}{\sqrt{\log 10} \cdot \sqrt{\log 10}}\]
    6. Applied times-frac53.4

      \[\leadsto \color{blue}{\frac{\frac{1}{2}}{\sqrt{\log 10}} \cdot \frac{\log \left(re \cdot re + im \cdot im\right)}{\sqrt{\log 10}}}\]
    7. Using strategy rm
    8. Applied div-inv53.3

      \[\leadsto \frac{\frac{1}{2}}{\sqrt{\log 10}} \cdot \color{blue}{\left(\log \left(re \cdot re + im \cdot im\right) \cdot \frac{1}{\sqrt{\log 10}}\right)}\]
    9. Taylor expanded around -inf 8.5

      \[\leadsto \frac{\frac{1}{2}}{\sqrt{\log 10}} \cdot \left(\color{blue}{\left(-2 \cdot \log \left(\frac{-1}{re}\right)\right)} \cdot \frac{1}{\sqrt{\log 10}}\right)\]
    10. Simplified8.5

      \[\leadsto \frac{\frac{1}{2}}{\sqrt{\log 10}} \cdot \left(\color{blue}{\left(\log \left(\frac{-1}{re}\right) \cdot -2\right)} \cdot \frac{1}{\sqrt{\log 10}}\right)\]

    if -1.6714086592074158e+118 < re < 1.8014191728219844e+103

    1. Initial program 21.7

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt21.7

      \[\leadsto \frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\color{blue}{\sqrt{\log 10} \cdot \sqrt{\log 10}}}\]
    4. Applied pow1/221.7

      \[\leadsto \frac{\log \color{blue}{\left({\left(re \cdot re + im \cdot im\right)}^{\frac{1}{2}}\right)}}{\sqrt{\log 10} \cdot \sqrt{\log 10}}\]
    5. Applied log-pow21.7

      \[\leadsto \frac{\color{blue}{\frac{1}{2} \cdot \log \left(re \cdot re + im \cdot im\right)}}{\sqrt{\log 10} \cdot \sqrt{\log 10}}\]
    6. Applied times-frac21.7

      \[\leadsto \color{blue}{\frac{\frac{1}{2}}{\sqrt{\log 10}} \cdot \frac{\log \left(re \cdot re + im \cdot im\right)}{\sqrt{\log 10}}}\]
    7. Using strategy rm
    8. Applied add-sqr-sqrt21.7

      \[\leadsto \color{blue}{\left(\sqrt{\frac{\frac{1}{2}}{\sqrt{\log 10}}} \cdot \sqrt{\frac{\frac{1}{2}}{\sqrt{\log 10}}}\right)} \cdot \frac{\log \left(re \cdot re + im \cdot im\right)}{\sqrt{\log 10}}\]
    9. Applied associate-*l*21.6

      \[\leadsto \color{blue}{\sqrt{\frac{\frac{1}{2}}{\sqrt{\log 10}}} \cdot \left(\sqrt{\frac{\frac{1}{2}}{\sqrt{\log 10}}} \cdot \frac{\log \left(re \cdot re + im \cdot im\right)}{\sqrt{\log 10}}\right)}\]

    if 1.8014191728219844e+103 < re

    1. Initial program 51.8

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt51.8

      \[\leadsto \frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\color{blue}{\sqrt{\log 10} \cdot \sqrt{\log 10}}}\]
    4. Applied pow1/251.8

      \[\leadsto \frac{\log \color{blue}{\left({\left(re \cdot re + im \cdot im\right)}^{\frac{1}{2}}\right)}}{\sqrt{\log 10} \cdot \sqrt{\log 10}}\]
    5. Applied log-pow51.8

      \[\leadsto \frac{\color{blue}{\frac{1}{2} \cdot \log \left(re \cdot re + im \cdot im\right)}}{\sqrt{\log 10} \cdot \sqrt{\log 10}}\]
    6. Applied times-frac51.8

      \[\leadsto \color{blue}{\frac{\frac{1}{2}}{\sqrt{\log 10}} \cdot \frac{\log \left(re \cdot re + im \cdot im\right)}{\sqrt{\log 10}}}\]
    7. Using strategy rm
    8. Applied div-inv51.8

      \[\leadsto \frac{\frac{1}{2}}{\sqrt{\log 10}} \cdot \color{blue}{\left(\log \left(re \cdot re + im \cdot im\right) \cdot \frac{1}{\sqrt{\log 10}}\right)}\]
    9. Taylor expanded around inf 9.3

      \[\leadsto \frac{\frac{1}{2}}{\sqrt{\log 10}} \cdot \left(\color{blue}{\left(-2 \cdot \log \left(\frac{1}{re}\right)\right)} \cdot \frac{1}{\sqrt{\log 10}}\right)\]
    10. Simplified9.3

      \[\leadsto \frac{\frac{1}{2}}{\sqrt{\log 10}} \cdot \left(\color{blue}{\left(\log re \cdot 2\right)} \cdot \frac{1}{\sqrt{\log 10}}\right)\]
  3. Recombined 3 regimes into one program.
  4. Final simplification17.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -1.6714086592074158 \cdot 10^{+118}:\\ \;\;\;\;\left(\left(\log \left(\frac{-1}{re}\right) \cdot -2\right) \cdot \frac{1}{\sqrt{\log 10}}\right) \cdot \frac{\frac{1}{2}}{\sqrt{\log 10}}\\ \mathbf{elif}\;re \le 1.8014191728219844 \cdot 10^{+103}:\\ \;\;\;\;\sqrt{\frac{\frac{1}{2}}{\sqrt{\log 10}}} \cdot \left(\sqrt{\frac{\frac{1}{2}}{\sqrt{\log 10}}} \cdot \frac{\log \left(re \cdot re + im \cdot im\right)}{\sqrt{\log 10}}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{2}}{\sqrt{\log 10}} \cdot \left(\left(2 \cdot \log re\right) \cdot \frac{1}{\sqrt{\log 10}}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019008 
(FPCore (re im)
  :name "math.log10 on complex, real part"
  (/ (log (sqrt (+ (* re re) (* im im)))) (log 10)))

Details

Time bar (total: 22.1s)Debug log

sample50.0ms

Algorithm
intervals

simplify8.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

8.0ms
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10))

prune13.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 29.7b

localize42.0ms

Local error

Found 3 expressions with local error:

28.3b
(sqrt (+ (* re re) (* im im)))
0.7b
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10))
0.0b
(+ (* re re) (* im im))

rewrite15.0ms

Algorithm
rewrite-expression-head
Counts
3 → 62
Calls

3 calls. Slowest were:

9.0ms
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10))
4.0ms
(sqrt (+ (* re re) (* im im)))
2.0ms
(+ (* re re) (* im im))

series201.0ms

Counts
3 → 9
Calls

3 calls. Slowest were:

145.0ms
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10))
40.0ms
(sqrt (+ (* re re) (* im im)))
15.0ms
(+ (* re re) (* im im))

simplify967.0ms

Counts
55 → 71
Calls

55 calls. Slowest were:

151.0ms
(/ (log (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))) (log 10))
144.0ms
(/ (* (* (log (sqrt (+ (* re re) (* im im)))) (log (sqrt (+ (* re re) (* im im))))) (log (sqrt (+ (* re re) (* im im))))) (* (* (log 10) (log 10)) (log 10)))
115.0ms
(sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))

prune924.0ms

Pruning

14 alts after pruning (14 fresh and 0 done)

Merged error: 6.1b

localize29.0ms

Local error

Found 4 expressions with local error:

29.3b
(log (+ (* re re) (* im im)))
0.5b
(/ (log (+ (* re re) (* im im))) (sqrt (log 10)))
0.3b
(* (/ 1/2 (sqrt (log 10))) (/ (log (+ (* re re) (* im im))) (sqrt (log 10))))
0.0b
(+ (* re re) (* im im))

rewrite27.0ms

Algorithm
rewrite-expression-head
Counts
4 → 121
Calls

4 calls. Slowest were:

14.0ms
(/ (log (+ (* re re) (* im im))) (sqrt (log 10)))
6.0ms
(* (/ 1/2 (sqrt (log 10))) (/ (log (+ (* re re) (* im im))) (sqrt (log 10))))
4.0ms
(log (+ (* re re) (* im im)))

series412.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

185.0ms
(/ (log (+ (* re re) (* im im))) (sqrt (log 10)))
168.0ms
(* (/ 1/2 (sqrt (log 10))) (/ (log (+ (* re re) (* im im))) (sqrt (log 10))))
42.0ms
(log (+ (* re re) (* im im)))
17.0ms
(+ (* re re) (* im im))

simplify2.5s

Counts
118 → 133
Calls

118 calls. Slowest were:

522.0ms
(* (* (* (/ 1/2 (sqrt (log 10))) (/ 1/2 (sqrt (log 10)))) (/ 1/2 (sqrt (log 10)))) (* (* (/ (log (+ (* re re) (* im im))) (sqrt (log 10))) (/ (log (+ (* re re) (* im im))) (sqrt (log 10)))) (/ (log (+ (* re re) (* im im))) (sqrt (log 10)))))
182.0ms
(+ (log (/ 1/2 (sqrt (log 10)))) (- (log (log (+ (* re re) (* im im)))) (log (sqrt (log 10)))))
169.0ms
(/ (* (* (log (+ (* re re) (* im im))) (log (+ (* re re) (* im im)))) (log (+ (* re re) (* im im)))) (* (* (sqrt (log 10)) (sqrt (log 10))) (sqrt (log 10))))

prune1.7s

Pruning

14 alts after pruning (14 fresh and 0 done)

Merged error: 5.9b

localize20.0ms

Local error

Found 4 expressions with local error:

29.3b
(log (+ (* re re) (* im im)))
0.3b
(* (log (+ (* re re) (* im im))) (/ 1 (sqrt (log 10))))
0.3b
(* (/ 1/2 (sqrt (log 10))) (* (log (+ (* re re) (* im im))) (/ 1 (sqrt (log 10)))))
0.0b
(+ (* re re) (* im im))

rewrite41.0ms

Algorithm
rewrite-expression-head
Counts
4 → 72
Calls

4 calls. Slowest were:

21.0ms
(* (/ 1/2 (sqrt (log 10))) (* (log (+ (* re re) (* im im))) (/ 1 (sqrt (log 10)))))
10.0ms
(* (log (+ (* re re) (* im im))) (/ 1 (sqrt (log 10))))
4.0ms
(+ (* re re) (* im im))

series400.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

209.0ms
(* (log (+ (* re re) (* im im))) (/ 1 (sqrt (log 10))))
128.0ms
(* (/ 1/2 (sqrt (log 10))) (* (log (+ (* re re) (* im im))) (/ 1 (sqrt (log 10)))))
47.0ms
(log (+ (* re re) (* im im)))
16.0ms
(+ (* re re) (* im im))

simplify3.2s

Counts
48 → 84
Calls

48 calls. Slowest were:

726.0ms
(+ (log (/ 1/2 (sqrt (log 10)))) (log (* (log (+ (* re re) (* im im))) (/ 1 (sqrt (log 10))))))
449.0ms
(+ (log (/ 1/2 (sqrt (log 10)))) (+ (log (log (+ (* re re) (* im im)))) (log (/ 1 (sqrt (log 10))))))
371.0ms
(* (* (* (log (+ (* re re) (* im im))) (log (+ (* re re) (* im im)))) (log (+ (* re re) (* im im)))) (* (* (/ 1 (sqrt (log 10))) (/ 1 (sqrt (log 10)))) (/ 1 (sqrt (log 10)))))

prune1.1s

Pruning

12 alts after pruning (12 fresh and 0 done)

Merged error: 5.9b

localize8.0ms

Local error

Found 4 expressions with local error:

29.3b
(log (+ (* re re) (* im im)))
0.5b
(/ (log (+ (* re re) (* im im))) (sqrt (log 10)))
0.4b
(* (sqrt (/ 1/2 (sqrt (log 10)))) (/ (log (+ (* re re) (* im im))) (sqrt (log 10))))
0.3b
(* (sqrt (/ 1/2 (sqrt (log 10)))) (* (sqrt (/ 1/2 (sqrt (log 10)))) (/ (log (+ (* re re) (* im im))) (sqrt (log 10)))))

rewrite38.0ms

Algorithm
rewrite-expression-head
Counts
4 → 144
Calls

4 calls. Slowest were:

16.0ms
(* (sqrt (/ 1/2 (sqrt (log 10)))) (* (sqrt (/ 1/2 (sqrt (log 10)))) (/ (log (+ (* re re) (* im im))) (sqrt (log 10)))))
9.0ms
(/ (log (+ (* re re) (* im im))) (sqrt (log 10)))
7.0ms
(* (sqrt (/ 1/2 (sqrt (log 10)))) (/ (log (+ (* re re) (* im im))) (sqrt (log 10))))

series1.1s

Counts
4 → 12
Calls

4 calls. Slowest were:

602.0ms
(* (sqrt (/ 1/2 (sqrt (log 10)))) (/ (log (+ (* re re) (* im im))) (sqrt (log 10))))
249.0ms
(* (sqrt (/ 1/2 (sqrt (log 10)))) (* (sqrt (/ 1/2 (sqrt (log 10)))) (/ (log (+ (* re re) (* im im))) (sqrt (log 10)))))
215.0ms
(/ (log (+ (* re re) (* im im))) (sqrt (log 10)))
62.0ms
(log (+ (* re re) (* im im)))

simplify4.8s

Counts
146 → 156
Calls

146 calls. Slowest were:

581.0ms
(* (* (* (sqrt (/ 1/2 (sqrt (log 10)))) (sqrt (/ 1/2 (sqrt (log 10))))) (sqrt (/ 1/2 (sqrt (log 10))))) (* (* (* (sqrt (/ 1/2 (sqrt (log 10)))) (/ (log (+ (* re re) (* im im))) (sqrt (log 10)))) (* (sqrt (/ 1/2 (sqrt (log 10)))) (/ (log (+ (* re re) (* im im))) (sqrt (log 10))))) (* (sqrt (/ 1/2 (sqrt (log 10)))) (/ (log (+ (* re re) (* im im))) (sqrt (log 10))))))
338.0ms
(* -2 (/ (* (log (/ -1 re)) (pow (sqrt 1/2) 2)) (log 10)))
254.0ms
(* (* (* (sqrt (/ 1/2 (sqrt (log 10)))) (sqrt (/ 1/2 (sqrt (log 10))))) (sqrt (/ 1/2 (sqrt (log 10))))) (* (* (/ (log (+ (* re re) (* im im))) (sqrt (log 10))) (/ (log (+ (* re re) (* im im))) (sqrt (log 10)))) (/ (log (+ (* re re) (* im im))) (sqrt (log 10)))))

prune2.1s

Pruning

15 alts after pruning (14 fresh and 1 done)

Merged error: 5.8b

regimes762.0ms

Accuracy

58.2% (10.0b remaining)

Error of 17.5b against oracle of 7.5b and baseline of 31.5b

bsearch112.0ms

end0.0ms

sample1.4s

Algorithm
intervals