Average Error: 30.6 → 17.3
Time: 21.4s
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.98901646800801 \cdot 10^{+52}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log 10}\\ \mathbf{elif}\;re \le 2.7167323166120062 \cdot 10^{+127}:\\ \;\;\;\;\frac{\frac{\frac{1}{2}}{\sqrt{\log 10}}}{\frac{\sqrt{\log 10}}{\log \left(im \cdot im + re \cdot re\right)}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log re}{\log 10}\\ \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.98901646800801e+52

    1. Initial program 42.7

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

      \[\leadsto \frac{\log \left(\sqrt{\color{blue}{\left(\sqrt[3]{re \cdot re + im \cdot im} \cdot \sqrt[3]{re \cdot re + im \cdot im}\right) \cdot \sqrt[3]{re \cdot re + im \cdot im}}}\right)}{\log 10}\]
    4. Using strategy rm
    5. Applied add-exp-log42.7

      \[\leadsto \frac{\log \left(\sqrt{\left(\sqrt[3]{re \cdot re + im \cdot im} \cdot \sqrt[3]{re \cdot re + im \cdot im}\right) \cdot \color{blue}{e^{\log \left(\sqrt[3]{re \cdot re + im \cdot im}\right)}}}\right)}{\log 10}\]
    6. Taylor expanded around -inf 11.2

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

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

    if -1.98901646800801e+52 < re < 2.7167323166120062e+127

    1. Initial program 21.4

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log 10}\]
    2. Using strategy rm
    3. Applied pow1/221.4

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

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

      \[\leadsto \color{blue}{\frac{\frac{1}{2}}{\frac{\log 10}{\log \left(re \cdot re + im \cdot im\right)}}}\]
    6. Using strategy rm
    7. Applied *-un-lft-identity21.4

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

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

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

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

    if 2.7167323166120062e+127 < re

    1. Initial program 55.2

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

      \[\leadsto \frac{\log \left(\sqrt{\color{blue}{\left(\sqrt[3]{re \cdot re + im \cdot im} \cdot \sqrt[3]{re \cdot re + im \cdot im}\right) \cdot \sqrt[3]{re \cdot re + im \cdot im}}}\right)}{\log 10}\]
    4. Taylor expanded around inf 7.6

      \[\leadsto \frac{\log \color{blue}{re}}{\log 10}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification17.3

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

Reproduce

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

Details

Time bar (total: 19.5s)Debug log

sample55.0ms

Algorithm
intervals
Results
42.0ms256×body80valid

simplify8.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
8.0ms
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10))

prune12.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 28.7b

localize55.0ms

Local error

Found 3 expressions with local error:

27.4b
(sqrt (+ (* re re) (* im im)))
0.6b
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10))
0.0b
(+ (* re re) (* im im))

rewrite24.0ms

Algorithm
rewrite-expression-head
Rules
15×times-frac
15×add-sqr-sqrt
14×add-cube-cbrt
14×*-un-lft-identity
log-pow
pow1
add-log-exp
associate-/l*
add-exp-log
pow1/2
add-cbrt-cube
sqrt-div
flip-+
sqrt-prod
flip3-+
associate-/r*
div-sub
log-div
div-inv
div-exp
frac-2neg
sum-log
clear-num
rem-sqrt-square
+-commutative
cbrt-undiv
Counts
3 → 62
Calls
3 calls:
Slowest
14.0ms
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10))
6.0ms
(sqrt (+ (* re re) (* im im)))
2.0ms
(+ (* re re) (* im im))

series184.0ms

Counts
3 → 9
Calls
3 calls:
Slowest
137.0ms
(/ (log (sqrt (+ (* re re) (* im im)))) (log 10))
30.0ms
(sqrt (+ (* re re) (* im im)))
16.0ms
(+ (* re re) (* im im))

simplify980.0ms

Counts
55 → 71
Calls
55 calls:
Slowest
172.0ms
(sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))
154.0ms
(/ (log (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))) (log 10))
151.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)))
70.0ms
(* -1 (/ (log (/ 1 re)) (log 10)))
70.0ms
(/ (log (sqrt (+ (pow (* re re) 3) (pow (* im im) 3)))) (log 10))

prune762.0ms

Pruning

15 alts after pruning (15 fresh and 0 done)

Merged error: 6.5b

localize35.0ms

Local error

Found 4 expressions with local error:

28.3b
(cbrt (+ (* re re) (* im im)))
28.3b
(cbrt (+ (* re re) (* im im)))
28.3b
(cbrt (+ (* re re) (* im im)))
27.4b
(sqrt (* (* (cbrt (+ (* re re) (* im im))) (cbrt (+ (* re re) (* im im)))) (cbrt (+ (* re re) (* im im)))))

rewrite19.0ms

Algorithm
rewrite-expression-head
Rules
60×cbrt-div
30×flip-+
30×flip3-+
28×frac-times
26×sqrt-div
14×associate-*l/
cbrt-prod
associate-*r/
add-cube-cbrt
*-un-lft-identity
add-sqr-sqrt
add-log-exp
add-exp-log
add-cbrt-cube
pow1
pow1/3
sqrt-prod
pow1/2
Counts
4 → 74
Calls
4 calls:
Slowest
10.0ms
(sqrt (* (* (cbrt (+ (* re re) (* im im))) (cbrt (+ (* re re) (* im im)))) (cbrt (+ (* re re) (* im im)))))
2.0ms
(cbrt (+ (* re re) (* im im)))
2.0ms
(cbrt (+ (* re re) (* im im)))
2.0ms
(cbrt (+ (* re re) (* im im)))

series334.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
120.0ms
(cbrt (+ (* re re) (* im im)))
99.0ms
(cbrt (+ (* re re) (* im im)))
94.0ms
(cbrt (+ (* re re) (* im im)))
21.0ms
(sqrt (* (* (cbrt (+ (* re re) (* im im))) (cbrt (+ (* re re) (* im im)))) (cbrt (+ (* re re) (* im im)))))

simplify4.3s

Counts
54 → 86
Calls
54 calls:
Slowest
201.0ms
(sqrt (* (* (cbrt (+ (pow (* re re) 3) (pow (* im im) 3))) (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))) (cbrt (+ (* re re) (* im im)))))
197.0ms
(sqrt (* (* (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) (cbrt (+ (* re re) (* im im)))) (cbrt (+ (pow (* re re) 3) (pow (* im im) 3)))))
193.0ms
(sqrt (* (* (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))) (cbrt (+ (pow (* re re) 3) (pow (* im im) 3)))))
190.0ms
(sqrt (* (* (cbrt (+ (pow (* re re) 3) (pow (* im im) 3))) (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))) (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))))
187.0ms
(sqrt (* (* (cbrt (+ (* re re) (* im im))) (cbrt (+ (* re re) (* im im)))) (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))))

prune1.4s

Pruning

16 alts after pruning (15 fresh and 1 done)

Merged error: 6.5b

localize28.0ms

Local error

Found 4 expressions with local error:

28.3b
(cbrt (+ (* re re) (* im im)))
28.3b
(cbrt (+ (* re re) (* im im)))
28.3b
(cbrt (+ (* re re) (* im im)))
27.4b
(sqrt (* (* (cbrt (+ (* re re) (* im im))) (cbrt (+ (* re re) (* im im)))) (exp (log (cbrt (+ (* re re) (* im im)))))))

rewrite28.0ms

Algorithm
rewrite-expression-head
Rules
60×cbrt-div
30×flip-+
30×flip3-+
28×frac-times
26×sqrt-div
18×exp-diff
18×log-div
14×associate-*l/
cbrt-prod
associate-*r/
add-cube-cbrt
*-un-lft-identity
add-sqr-sqrt
add-log-exp
add-exp-log
add-cbrt-cube
pow1
pow1/3
sqrt-prod
pow1/2
Counts
4 → 74
Calls
4 calls:
Slowest
17.0ms
(sqrt (* (* (cbrt (+ (* re re) (* im im))) (cbrt (+ (* re re) (* im im)))) (exp (log (cbrt (+ (* re re) (* im im)))))))
2.0ms
(cbrt (+ (* re re) (* im im)))
2.0ms
(cbrt (+ (* re re) (* im im)))
2.0ms
(cbrt (+ (* re re) (* im im)))

series361.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
135.0ms
(cbrt (+ (* re re) (* im im)))
115.0ms
(cbrt (+ (* re re) (* im im)))
90.0ms
(cbrt (+ (* re re) (* im im)))
21.0ms
(sqrt (* (* (cbrt (+ (* re re) (* im im))) (cbrt (+ (* re re) (* im im)))) (exp (log (cbrt (+ (* re re) (* im im)))))))

simplify4.1s

Counts
54 → 86
Calls
54 calls:
Slowest
202.0ms
(sqrt (* (* (cbrt (+ (pow (* re re) 3) (pow (* im im) 3))) (cbrt (+ (pow (* re re) 3) (pow (* im im) 3)))) (exp (log (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))))))
191.0ms
(sqrt (* (* (cbrt (+ (pow (* re re) 3) (pow (* im im) 3))) (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))) (exp (log (cbrt (+ (* re re) (* im im)))))))
189.0ms
(sqrt (* (* (cbrt (+ (* re re) (* im im))) (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))) (exp (log (cbrt (+ (* re re) (* im im)))))))
187.0ms
(sqrt (* (* (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) (cbrt (+ (pow (* re re) 3) (pow (* im im) 3)))) (exp (log (cbrt (+ (pow (* re re) 3) (pow (* im im) 3)))))))
185.0ms
(sqrt (* (* (cbrt (+ (* re re) (* im im))) (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))) (exp (log (cbrt (+ (pow (* re re) 3) (pow (* im im) 3)))))))

prune1.5s

Pruning

16 alts after pruning (14 fresh and 2 done)

Merged error: 6.5b

localize13.0ms

Local error

Found 4 expressions with local error:

28.4b
(log (+ (* re re) (* im im)))
0.6b
(/ (log 10) (log (+ (* re re) (* im im))))
0.3b
(/ 1/2 (/ (log 10) (log (+ (* re re) (* im im)))))
0.0b
(+ (* re re) (* im im))

rewrite13.0ms

Algorithm
rewrite-expression-head
Rules
24×times-frac
22×add-cube-cbrt
22×*-un-lft-identity
22×add-sqr-sqrt
20×associate-/r*
12×pow1
log-pow
add-exp-log
add-log-exp
add-cbrt-cube
associate-/l*
div-inv
log-prod
flip-+
flip3-+
frac-2neg
clear-num
log-div
associate-/r/
rem-log-exp
div-exp
sum-log
+-commutative
cbrt-undiv
Counts
4 → 83
Calls
4 calls:
Slowest
6.0ms
(/ (log 10) (log (+ (* re re) (* im im))))
3.0ms
(log (+ (* re re) (* im im)))
2.0ms
(+ (* re re) (* im im))
1.0ms
(/ 1/2 (/ (log 10) (log (+ (* re re) (* im im)))))

series322.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
132.0ms
(/ (log 10) (log (+ (* re re) (* im im))))
131.0ms
(/ 1/2 (/ (log 10) (log (+ (* re re) (* im im)))))
43.0ms
(log (+ (* re re) (* im im)))
15.0ms
(+ (* re re) (* im im))

simplify916.0ms

Counts
68 → 95
Calls
68 calls:
Slowest
134.0ms
(/ (* (* (log 10) (log 10)) (log 10)) (* (* (log (+ (* re re) (* im im))) (log (+ (* re re) (* im im)))) (log (+ (* re re) (* im im)))))
111.0ms
(log (- (* (* re re) (* re re)) (* (* im im) (* im im))))
91.0ms
(* -1 (/ (log (/ -1 re)) (log 10)))
83.0ms
(* -1 (/ (log (/ 1 re)) (log 10)))
47.0ms
(log (+ (pow (* re re) 3) (pow (* im im) 3)))

prune797.0ms

Pruning

19 alts after pruning (18 fresh and 1 done)

Merged error: 6.5b

regimes1.7s

Accuracy

56.5% (10.3b remaining)

Error of 17.3b against oracle of 7.0b and baseline of 30.6b

bsearch150.0ms

end0.0ms

sample1.5s

Algorithm
intervals
Results
1.4s8000×body80valid