Average Error: 31.3 → 17.3
Time: 1.1m
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 -3.1081298705219617 \cdot 10^{+147}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;im \le -1.40953206047104 \cdot 10^{-24}:\\ \;\;\;\;\frac{\log \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}}\right)}{\log base}\\ \mathbf{elif}\;im \le 1.5692519200089908 \cdot 10^{-156}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;im \le 30377.714423513702:\\ \;\;\;\;\frac{\log \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}}\right)}{\log base}\\ \mathbf{elif}\;im \le 5827938310.190218:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;im \le 8.022256849779051 \cdot 10^{+143}:\\ \;\;\;\;\frac{\log \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}}\right)}{\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 3 regimes
  2. if im < -3.1081298705219617e+147 or -1.40953206047104e-24 < im < 1.5692519200089908e-156 or 30377.714423513702 < im < 5827938310.190218

    1. Initial program 35.6

      \[\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. Simplified35.6

      \[\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-frac35.5

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

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

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

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

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

    if -3.1081298705219617e+147 < im < -1.40953206047104e-24 or 1.5692519200089908e-156 < im < 30377.714423513702 or 5827938310.190218 < im < 8.022256849779051e+143

    1. Initial program 15.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. Simplified15.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-frac15.8

      \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}{\log base} \cdot \frac{\log base}{\log base}}\]
    5. Simplified15.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 add-sqr-sqrt15.8

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

    if 8.022256849779051e+143 < im

    1. Initial program 58.8

      \[\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. Simplified58.8

      \[\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 6.8

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \le -3.1081298705219617 \cdot 10^{+147}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;im \le -1.40953206047104 \cdot 10^{-24}:\\ \;\;\;\;\frac{\log \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}}\right)}{\log base}\\ \mathbf{elif}\;im \le 1.5692519200089908 \cdot 10^{-156}:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;im \le 30377.714423513702:\\ \;\;\;\;\frac{\log \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}}\right)}{\log base}\\ \mathbf{elif}\;im \le 5827938310.190218:\\ \;\;\;\;\frac{\log \left(-re\right)}{\log base}\\ \mathbf{elif}\;im \le 8.022256849779051 \cdot 10^{+143}:\\ \;\;\;\;\frac{\log \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}}\right)}{\log base}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log im}{\log base}\\ \end{array}\]

Reproduce

herbie shell --seed 2019016 
(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: 1.1m)Debug log

sample1.1s

Algorithm
intervals
Results
941×(pre true 80)
457×(body nan 80)
256×(body real 80)
228×(body exit 10240)

simplify12.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
12.0ms
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0)) (+ (* (log base) (log base)) (* 0 0)))

prune42.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 27.6b

localize39.0ms

Local error

Found 4 expressions with local error:

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

rewrite21.0ms

Algorithm
rewrite-expression-head
Rules
20×add-exp-log
20×add-cbrt-cube
12×pow1
10×add-sqr-sqrt
add-cube-cbrt
*-un-lft-identity
associate-*l*
cbrt-unprod
prod-exp
associate-*r*
add-log-exp
div-exp
cbrt-undiv
sqrt-prod
*-commutative
log-pow
pow-prod-down
sqrt-div
pow1/2
associate-/l*
div-inv
flip-+
pow-prod-up
pow-plus
times-frac
flip3-+
frac-2neg
associate-/r*
clear-num
rem-sqrt-square
pow2
Counts
4 → 74
Calls
4 calls:
Slowest
10.0ms
(/ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (log base) (log base)))
5.0ms
(* (log (sqrt (+ (* re re) (* im im)))) (log base))
4.0ms
(* (log base) (log base))
2.0ms
(sqrt (+ (* re re) (* im im)))

series397.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
173.0ms
(* (log base) (log base))
106.0ms
(/ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (log base) (log base)))
90.0ms
(* (log (sqrt (+ (* re re) (* im im)))) (log base))
27.0ms
(sqrt (+ (* re re) (* im im)))

simplify3.0s

Counts
49 → 86
Calls
49 calls:
Slowest
357.0ms
(- (+ (log (log (sqrt (+ (* re re) (* im im))))) (log (log base))) (+ (log (log base)) (log (log base))))
346.0ms
(- (+ (log (log (sqrt (+ (* re re) (* im im))))) (log (log base))) (log (* (log base) (log base))))
283.0ms
(* -1 (* (log (/ -1 re)) (- (log -1) (log (/ -1 base)))))
261.0ms
(- (log (* (log (sqrt (+ (* re re) (* im im)))) (log base))) (log (* (log base) (log base))))
253.0ms
(- (log (* (log (sqrt (+ (* re re) (* im im)))) (log base))) (+ (log (log base)) (log (log base))))

prune1.2s

Pruning

16 alts after pruning (16 fresh and 0 done)

Merged error: 6.1b

localize6.0ms

Local error

Found 2 expressions with local error:

26.2b
(sqrt (+ (* re re) (* im im)))
0.3b
(/ (log (sqrt (+ (* re re) (* im im)))) (log base))

rewrite11.0ms

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

series107.0ms

Counts
2 → 6
Calls
2 calls:
Slowest
88.0ms
(/ (log (sqrt (+ (* re re) (* im im)))) (log base))
19.0ms
(sqrt (+ (* re re) (* im im)))

simplify853.0ms

Counts
51 → 57
Calls
51 calls:
Slowest
169.0ms
(/ (log (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))) (log base))
130.0ms
(* -1 (/ (log (/ -1 re)) (- (log -1) (log (/ -1 base)))))
106.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)))
100.0ms
(sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))
59.0ms
(/ (log (sqrt (+ (pow (* re re) 3) (pow (* im im) 3)))) (log base))

prune741.0ms

Pruning

15 alts after pruning (15 fresh and 0 done)

Merged error: 6.1b

localize27.0ms

Local error

Found 4 expressions with local error:

26.2b
(sqrt (+ (* re re) (* im im)))
26.2b
(sqrt (+ (* re re) (* im im)))
0.4b
(* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im)))))
0.3b
(/ (log (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im)))))) (log base))

rewrite77.0ms

Algorithm
rewrite-expression-head
Rules
52×sqrt-div
33×pow1
30×times-frac
29×add-sqr-sqrt
28×log-pow
27×add-cube-cbrt
27×*-un-lft-identity
24×sqrt-prod
22×pow1/2
14×flip-+
14×flip3-+
10×associate-/l*
10×pow-prod-up
10×pow-prod-down
associate-*l*
associate-*r*
add-exp-log
div-sub
add-cbrt-cube
log-div
frac-times
pow-plus
pow2
add-log-exp
associate-*r/
associate-*l/
associate-/r*
rem-sqrt-square
div-inv
cbrt-unprod
*-commutative
prod-exp
div-exp
sqrt-unprod
frac-2neg
rem-square-sqrt
clear-num
cbrt-undiv
Counts
4 → 135
Calls
4 calls:
Slowest
47.0ms
(/ (log (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im)))))) (log base))
20.0ms
(* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im)))))
4.0ms
(sqrt (+ (* re re) (* im im)))
4.0ms
(sqrt (+ (* re re) (* im im)))

series201.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
113.0ms
(/ (log (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im)))))) (log base))
31.0ms
(sqrt (+ (* re re) (* im im)))
29.0ms
(* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im)))))
28.0ms
(sqrt (+ (* re re) (* im im)))

simplify4.0s

Counts
142 → 147
Calls
142 calls:
Slowest
343.0ms
(/ (* (* (log (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im)))))) (log (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))))) (log (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))))) (* (* (log base) (log base)) (log base)))
205.0ms
(/ (log (* (sqrt (sqrt (+ (pow (* re re) 3) (pow (* im im) 3)))) (sqrt (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))))) (log base))
199.0ms
(* (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im)))))) (sqrt (sqrt (- (* re re) (* im im)))))
188.0ms
(* (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im)))))) (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im)))))))
177.0ms
(* (sqrt (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))) (sqrt (sqrt (+ (pow (* re re) 3) (pow (* im im) 3)))))

prune2.2s

Pruning

15 alts after pruning (14 fresh and 1 done)

Merged error: 6.1b

localize9.0ms

Local error

Found 4 expressions with local error:

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

rewrite34.0ms

Algorithm
rewrite-expression-head
Rules
25×add-exp-log
17×pow1
13×prod-exp
13×add-cbrt-cube
11×add-sqr-sqrt
10×add-cube-cbrt
10×associate-*r*
10×*-un-lft-identity
associate-*l*
cbrt-unprod
pow-prod-down
add-log-exp
rec-exp
sqrt-prod
*-commutative
log-pow
sqrt-div
pow1/2
div-inv
flip-+
pow-prod-up
un-div-inv
associate-*r/
pow-plus
flip3-+
rem-sqrt-square
pow2
Counts
4 → 78
Calls
4 calls:
Slowest
22.0ms
(* (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (/ 1 (* (log base) (log base))))
5.0ms
(* (log (sqrt (+ (* re re) (* im im)))) (log base))
4.0ms
(* (log base) (log base))
2.0ms
(sqrt (+ (* re re) (* im im)))

series421.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
178.0ms
(* (log base) (log base))
119.0ms
(* (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (/ 1 (* (log base) (log base))))
105.0ms
(* (log (sqrt (+ (* re re) (* im im)))) (log base))
19.0ms
(sqrt (+ (* re re) (* im im)))

simplify7.2s

Counts
54 → 90
Calls
54 calls:
Slowest
1.9s
(* (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (/ 1 (* (log base) (log base))))
1.4s
(* (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (/ 1 (* (log base) (log base))))
749.0ms
(* (* (* (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (log (sqrt (+ (* re re) (* im im)))) (log base))) (* (log (sqrt (+ (* re re) (* im im)))) (log base))) (* (* (/ 1 (* (log base) (log base))) (/ 1 (* (log base) (log base)))) (/ 1 (* (log base) (log base)))))
503.0ms
(+ (log (* (log (sqrt (+ (* re re) (* im im)))) (log base))) (- (log (* (log base) (log base)))))
372.0ms
(pow (- (log -1) (log (/ -1 base))) 2)

prune1.1s

Pruning

15 alts after pruning (13 fresh and 2 done)

Merged error: 6.1b

regimes682.0ms

Accuracy

58.1% (10.1b remaining)

Error of 17.3b against oracle of 7.2b and baseline of 31.3b

bsearch5.5s

end0.0ms

sample36.5s

Algorithm
intervals
Results
31577×(pre true 80)
15613×(body nan 80)
8000×(body real 80)
7964×(body exit 10240)