Average Error: 30.9 → 17.7
Time: 55.1s
Precision: 64
Internal Precision: 128
\[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\]
\[\begin{array}{l} \mathbf{if}\;im \le -1.3909444433223192 \cdot 10^{+163}:\\ \;\;\;\;\frac{\sqrt{\log \left(-re\right)}}{\log base} \cdot \sqrt{\log \left(-re\right)}\\ \mathbf{elif}\;im \le -2.897340525820373 \cdot 10^{-111}:\\ \;\;\;\;\frac{\frac{1}{2}}{\frac{\log base}{\log \left(im \cdot im + re \cdot re\right)}}\\ \mathbf{elif}\;im \le 1.505571081103404 \cdot 10^{-136}:\\ \;\;\;\;\frac{\log base \cdot \log \left(-re\right)}{\log base \cdot \log base}\\ \mathbf{elif}\;im \le 7.693766194139374 \cdot 10^{+18}:\\ \;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right) \cdot \frac{1}{\log base}\\ \mathbf{elif}\;im \le 1.511238324259529 \cdot 10^{+52}:\\ \;\;\;\;\frac{\log base \cdot \log \left(-re\right)}{\log base \cdot \log base}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \end{array}\]

Error

Bits error versus re

Bits error versus im

Bits error versus base

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 5 regimes
  2. if im < -1.3909444433223192e+163

    1. Initial program 62.0

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\]
    2. Simplified62.0

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base}{\log base \cdot \log base}}\]
    3. Using strategy rm
    4. Applied times-frac62.0

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base} \cdot \frac{\log base}{\log base}}\]
    5. Simplified62.0

      \[\leadsto \frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base} \cdot \color{blue}{1}\]
    6. Taylor expanded around -inf 51.7

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

      \[\leadsto \frac{\log \color{blue}{\left(-re\right)}}{\log base} \cdot 1\]
    8. Using strategy rm
    9. Applied *-un-lft-identity51.7

      \[\leadsto \frac{\log \left(-re\right)}{\color{blue}{1 \cdot \log base}} \cdot 1\]
    10. Applied add-sqr-sqrt51.6

      \[\leadsto \frac{\color{blue}{\sqrt{\log \left(-re\right)} \cdot \sqrt{\log \left(-re\right)}}}{1 \cdot \log base} \cdot 1\]
    11. Applied times-frac51.6

      \[\leadsto \color{blue}{\left(\frac{\sqrt{\log \left(-re\right)}}{1} \cdot \frac{\sqrt{\log \left(-re\right)}}{\log base}\right)} \cdot 1\]
    12. Simplified51.6

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

    if -1.3909444433223192e+163 < im < -2.897340525820373e-111

    1. Initial program 16.9

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\]
    2. Simplified16.9

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base}{\log base \cdot \log base}}\]
    3. Using strategy rm
    4. Applied times-frac16.8

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base} \cdot \frac{\log base}{\log base}}\]
    5. Simplified16.8

      \[\leadsto \frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base} \cdot \color{blue}{1}\]
    6. Using strategy rm
    7. Applied pow1/216.8

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

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

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

    if -2.897340525820373e-111 < im < 1.505571081103404e-136 or 7.693766194139374e+18 < im < 1.511238324259529e+52

    1. Initial program 26.9

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\]
    2. Simplified26.9

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

      \[\leadsto \frac{\log \color{blue}{\left(-1 \cdot re\right)} \cdot \log base}{\log base \cdot \log base}\]
    4. Simplified10.4

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

    if 1.505571081103404e-136 < im < 7.693766194139374e+18

    1. Initial program 16.2

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\]
    2. Simplified16.2

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base}{\log base \cdot \log base}}\]
    3. Using strategy rm
    4. Applied times-frac16.1

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base} \cdot \frac{\log base}{\log base}}\]
    5. Simplified16.1

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

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

    if 1.511238324259529e+52 < im

    1. Initial program 43.3

      \[\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base + \tan^{-1}_* \frac{im}{re} \cdot 0}{\log base \cdot \log base + 0 \cdot 0}\]
    2. Simplified43.3

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right) \cdot \log base}{\log base \cdot \log base}}\]
    3. Taylor expanded around 0 11.1

      \[\leadsto \color{blue}{\frac{\log im}{\log base}}\]
  3. Recombined 5 regimes into one program.
  4. Final simplification17.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \le -1.3909444433223192 \cdot 10^{+163}:\\ \;\;\;\;\frac{\sqrt{\log \left(-re\right)}}{\log base} \cdot \sqrt{\log \left(-re\right)}\\ \mathbf{elif}\;im \le -2.897340525820373 \cdot 10^{-111}:\\ \;\;\;\;\frac{\frac{1}{2}}{\frac{\log base}{\log \left(im \cdot im + re \cdot re\right)}}\\ \mathbf{elif}\;im \le 1.505571081103404 \cdot 10^{-136}:\\ \;\;\;\;\frac{\log base \cdot \log \left(-re\right)}{\log base \cdot \log base}\\ \mathbf{elif}\;im \le 7.693766194139374 \cdot 10^{+18}:\\ \;\;\;\;\log \left(\sqrt{im \cdot im + re \cdot re}\right) \cdot \frac{1}{\log base}\\ \mathbf{elif}\;im \le 1.511238324259529 \cdot 10^{+52}:\\ \;\;\;\;\frac{\log base \cdot \log \left(-re\right)}{\log base \cdot \log base}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \end{array}\]

Reproduce

herbie shell --seed 2019002 
(FPCore (re im base)
  :name "math.log/2 on complex, real part"
  (/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0)) (+ (* (log base) (log base)) (* 0 0))))

Details

Time bar (total: 52.0s)Debug log

sample1.4s

Algorithm
intervals

simplify6.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

6.0ms
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0)) (+ (* (log base) (log base)) (* 0 0)))

prune11.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 30.3b

localize39.0ms

Local error

Found 4 expressions with local error:

28.9b
(sqrt (+ (* re re) (* im im)))
0.5b
(* (log base) (log base))
0.4b
(/ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (log base) (log base)))
0.4b
(* (log (sqrt (+ (* re re) (* im im)))) (log base))

rewrite27.0ms

Algorithm
rewrite-expression-head
Counts
4 → 74
Calls

4 calls. Slowest were:

16.0ms
(/ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (log base) (log base)))
4.0ms
(* (log (sqrt (+ (* re re) (* im im)))) (log base))
4.0ms
(* (log base) (log base))

series426.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

184.0ms
(* (log base) (log base))
124.0ms
(/ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (log base) (log base)))
98.0ms
(* (log (sqrt (+ (* re re) (* im im)))) (log base))
19.0ms
(sqrt (+ (* re re) (* im im)))

simplify3.6s

Counts
49 → 86
Calls

49 calls. Slowest were:

489.0ms
(- (+ (log (log (sqrt (+ (* re re) (* im im))))) (log (log base))) (+ (log (log base)) (log (log base))))
461.0ms
(- (+ (log (log (sqrt (+ (* re re) (* im im))))) (log (log base))) (log (* (log base) (log base))))
396.0ms
(* -1 (* (log (/ -1 re)) (- (log -1) (log (/ -1 base)))))

prune1.1s

Pruning

17 alts after pruning (17 fresh and 0 done)

Merged error: 7.0b

localize6.0ms

Local error

Found 3 expressions with local error:

28.9b
(sqrt (+ (* re re) (* im im)))
0.4b
(/ (log (sqrt (+ (* re re) (* im im)))) (log base))
0.0b
(+ (* re re) (* im im))

rewrite13.0ms

Algorithm
rewrite-expression-head
Counts
3 → 62
Calls

3 calls. Slowest were:

8.0ms
(/ (log (sqrt (+ (* re re) (* im im)))) (log base))
2.0ms
(+ (* re re) (* im im))
2.0ms
(sqrt (+ (* re re) (* im im)))

series136.0ms

Counts
3 → 9
Calls

3 calls. Slowest were:

90.0ms
(/ (log (sqrt (+ (* re re) (* im im)))) (log base))
32.0ms
(sqrt (+ (* re re) (* im im)))
15.0ms
(+ (* re re) (* im im))

simplify1.0s

Counts
55 → 71
Calls

55 calls. Slowest were:

180.0ms
(* -1 (/ (log (/ -1 re)) (- (log -1) (log (/ -1 base)))))
176.0ms
(/ (* (* (log (sqrt (+ (* re re) (* im im)))) (log (sqrt (+ (* re re) (* im im))))) (log (sqrt (+ (* re re) (* im im))))) (* (* (log base) (log base)) (log base)))
165.0ms
(/ (log (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))) (log base))

prune1.0s

Pruning

16 alts after pruning (16 fresh and 0 done)

Merged error: 7.0b

localize16.0ms

Local error

Found 1 expressions with local error:

0.3b
(/ (log (- re)) (log base))

rewrite5.0ms

Algorithm
rewrite-expression-head
Counts
1 → 31
Calls

1 calls. Slowest were:

5.0ms
(/ (log (- re)) (log base))

series102.0ms

Counts
1 → 3
Calls

1 calls. Slowest were:

102.0ms
(/ (log (- re)) (log base))

simplify565.0ms

Counts
34 → 34
Calls

34 calls. Slowest were:

192.0ms
(* -1 (/ (- (log -1) (log (/ 1 re))) (log (/ 1 base))))
147.0ms
(* -1 (/ (log (/ -1 re)) (- (log -1) (log (/ -1 base)))))
113.0ms
(/ (* (* (log (- re)) (log (- re))) (log (- re))) (* (* (log base) (log base)) (log base)))

prune327.0ms

Pruning

23 alts after pruning (23 fresh and 0 done)

Merged error: 6.9b

localize5.0ms

Local error

Found 1 expressions with local error:

0.3b
(/ (log (- re)) (log base))

rewrite5.0ms

Algorithm
rewrite-expression-head
Counts
1 → 31
Calls

1 calls. Slowest were:

4.0ms
(/ (log (- re)) (log base))

series104.0ms

Counts
1 → 3
Calls

1 calls. Slowest were:

103.0ms
(/ (log (- re)) (log base))

simplify527.0ms

Counts
34 → 34
Calls

34 calls. Slowest were:

174.0ms
(* -1 (/ (- (log -1) (log (/ 1 re))) (log (/ 1 base))))
123.0ms
(* -1 (/ (log (/ -1 re)) (- (log -1) (log (/ -1 base)))))
113.0ms
(/ (* (* (log (- re)) (log (- re))) (log (- re))) (* (* (log base) (log base)) (log base)))

prune272.0ms

Pruning

22 alts after pruning (22 fresh and 0 done)

Merged error: 6.9b

regimes762.0ms

Accuracy

53.2% (10.3b remaining)

Error of 17.7b against oracle of 7.4b and baseline of 29.3b

bsearch3.6s

end0.0ms

sample36.9s

Algorithm
intervals