Average Error: 30.9 → 0.4
Time: 1.4m
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}\]
\[\log \left(\sqrt{re^2 + im^2}^*\right) \cdot \frac{1}{\log base}\]

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. Initial program 30.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. Simplified0.3

    \[\leadsto \color{blue}{\frac{\log \left(\sqrt{re^2 + im^2}^*\right)}{\log base}}\]
  3. Using strategy rm
  4. Applied div-inv0.4

    \[\leadsto \color{blue}{\log \left(\sqrt{re^2 + im^2}^*\right) \cdot \frac{1}{\log base}}\]
  5. Final simplification0.4

    \[\leadsto \log \left(\sqrt{re^2 + im^2}^*\right) \cdot \frac{1}{\log base}\]

Reproduce

herbie shell --seed 2019022 +o rules:numerics
(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.3m)Debug log

sample986.0ms

Algorithm
intervals
Results
761.0ms279×body10240exit
138.0ms556×body80nan
51.0ms256×body80valid

simplify67.0ms

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

prune44.0ms

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 0.3b

localize20.0ms

Local error

Found 1 expressions with local error:

0.3b
(/ (log (hypot re im)) (log base))

rewrite5.0ms

Algorithm
rewrite-expression-head
Rules
12×times-frac
10×add-cube-cbrt
10×*-un-lft-identity
10×add-sqr-sqrt
pow1
associate-/l*
log-pow
add-exp-log
add-cbrt-cube
associate-/r*
add-log-exp
div-inv
log1p-expm1-u
div-exp
frac-2neg
clear-num
cbrt-undiv
expm1-log1p-u
Counts
1 → 33
Calls
1 calls:
Slowest
5.0ms
(/ (log (hypot re im)) (log base))

series90.0ms

Counts
1 → 3
Calls
1 calls:
Slowest
90.0ms
(/ (log (hypot re im)) (log base))

simplify440.0ms

Counts
34 → 36
Calls
34 calls:
Slowest
197.0ms
(* -1 (/ (log (/ -1 re)) (- (log -1) (log (/ -1 base)))))
123.0ms
(/ (* (* (log (hypot re im)) (log (hypot re im))) (log (hypot re im))) (* (* (log base) (log base)) (log base)))
30.0ms
(/ (* (cbrt (log (hypot re im))) (cbrt (log (hypot re im)))) (* (cbrt (log base)) (cbrt (log base))))
12.0ms
(/ (* (cbrt (log (hypot re im))) (cbrt (log (hypot re im)))) 1)
9.0ms
(/ (log (/ 1 re)) (log (/ 1 base)))

prune447.0ms

Pruning

11 alts after pruning (11 fresh and 0 done)

Merged error: 0.0b

localize5.0ms

Local error

Found 2 expressions with local error:

0.3b
(* (log (hypot re im)) (/ 1 (log base)))
0.2b
(/ 1 (log base))

rewrite6.0ms

Algorithm
rewrite-expression-head
Rules
add-exp-log
pow1
add-cube-cbrt
*-un-lft-identity
add-sqr-sqrt
associate-*l*
associate-*r*
add-cbrt-cube
associate-/r*
add-log-exp
div-inv
log1p-expm1-u
prod-exp
rec-exp
expm1-log1p-u
inv-pow
pow-flip
cbrt-unprod
*-commutative
un-div-inv
log-pow
associate-*r/
pow-prod-down
frac-2neg
clear-num
Counts
2 → 42
Calls
2 calls:
Slowest
5.0ms
(* (log (hypot re im)) (/ 1 (log base)))
1.0ms
(/ 1 (log base))

series283.0ms

Counts
2 → 6
Calls
2 calls:
Slowest
190.0ms
(/ 1 (log base))
92.0ms
(* (log (hypot re im)) (/ 1 (log base)))

simplify566.0ms

Counts
22 → 48
Calls
22 calls:
Slowest
241.0ms
(* (* (* (log (hypot re im)) (log (hypot re im))) (log (hypot re im))) (* (* (/ 1 (log base)) (/ 1 (log base))) (/ 1 (log base))))
173.0ms
(* -1 (/ (log (/ -1 re)) (- (log -1) (log (/ -1 base)))))
36.0ms
(/ 1 (- (log -1) (log (/ -1 base))))
34.0ms
(+ (log (log (hypot re im))) (log (/ 1 (log base))))
29.0ms
(* (log (hypot re im)) (/ 1 (log base)))

prune641.0ms

Pruning

14 alts after pruning (13 fresh and 1 done)

Merged error: 0.0b

localize17.0ms

Local error

Found 4 expressions with local error:

0.7b
(pow (log base) 3)
0.5b
(cbrt (/ (* (log (hypot re im)) (log (hypot re im))) (/ (pow (log base) 3) (log (hypot re im)))))
0.5b
(* (log (hypot re im)) (log (hypot re im)))
0.3b
(/ (pow (log base) 3) (log (hypot re im)))

rewrite19.0ms

Algorithm
rewrite-expression-head
Rules
136×times-frac
62×add-cube-cbrt
62×*-un-lft-identity
62×add-sqr-sqrt
53×cbrt-prod
35×pow1
30×cube-prod
30×unpow-prod-down
25×log-pow
12×add-exp-log
11×associate-/l*
10×unpow3
10×cube-mult
add-cbrt-cube
log-prod
add-log-exp
log1p-expm1-u
associate-*l*
associate-*r*
associate-/r*
expm1-log1p-u
div-inv
div-exp
distribute-lft-in
distribute-rgt-in
pow-exp
pow-to-exp
rem-cube-cbrt
cbrt-unprod
pow-prod-up
*-commutative
associate-/r/
prod-exp
pow-prod-down
pow1/3
pow-plus
frac-2neg
pow-pow
clear-num
cbrt-div
cbrt-undiv
pow2
Counts
4 → 190
Calls
4 calls:
Slowest
5.0ms
(* (log (hypot re im)) (log (hypot re im)))
5.0ms
(/ (pow (log base) 3) (log (hypot re im)))
3.0ms
(cbrt (/ (* (log (hypot re im)) (log (hypot re im))) (/ (pow (log base) 3) (log (hypot re im)))))
1.0ms
(pow (log base) 3)

series641.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
236.0ms
(pow (log base) 3)
206.0ms
(/ (pow (log base) 3) (log (hypot re im)))
121.0ms
(cbrt (/ (* (log (hypot re im)) (log (hypot re im))) (/ (pow (log base) 3) (log (hypot re im)))))
79.0ms
(* (log (hypot re im)) (log (hypot re im)))

simplify8.0s

Counts
199 → 202
Calls
199 calls:
Slowest
534.0ms
(cbrt (/ (log (hypot re im)) (/ (pow (* (cbrt (log base)) (cbrt (log base))) 3) (* (cbrt (log (hypot re im))) (cbrt (log (hypot re im)))))))
381.0ms
(pow (- (log -1) (log (/ -1 base))) 3)
352.0ms
(/ (* (* (pow (log base) 3) (pow (log base) 3)) (pow (log base) 3)) (* (* (log (hypot re im)) (log (hypot re im))) (log (hypot re im))))
335.0ms
(/ (pow (* (cbrt (log base)) (cbrt (log base))) 3) (* (cbrt (log (hypot re im))) (cbrt (log (hypot re im)))))
314.0ms
(/ (pow (* (cbrt (log base)) (cbrt (log base))) 3) (* (cbrt (log (hypot re im))) (cbrt (log (hypot re im)))))

prune2.5s

Pruning

11 alts after pruning (10 fresh and 1 done)

Merged error: 0b

localize14.0ms

Local error

Found 4 expressions with local error:

0.7b
(pow (log base) 3)
0.6b
(* (* (log (hypot re im)) (log (hypot re im))) (* (log (hypot re im)) (log (hypot re im))))
0.5b
(cbrt (/ (cbrt (* (* (* (log (hypot re im)) (log (hypot re im))) (* (log (hypot re im)) (log (hypot re im)))) (* (log (hypot re im)) (log (hypot re im))))) (/ (pow (log base) 3) (log (hypot re im)))))
0.5b
(* (log (hypot re im)) (log (hypot re im)))

rewrite36.0ms

Algorithm
rewrite-expression-head
Rules
368×times-frac
245×cbrt-prod
159×add-cube-cbrt
159×*-un-lft-identity
159×add-sqr-sqrt
113×pow1
51×cube-prod
51×unpow-prod-down
46×log-pow
24×pow-prod-up
19×add-exp-log
19×pow-prod-down
19×add-cbrt-cube
18×log-prod
17×unpow3
17×cube-mult
15×distribute-lft-in
15×distribute-rgt-in
13×pow-plus
10×pow2
cbrt-unprod
prod-exp
div-inv
associate-*l*
associate-*r*
add-log-exp
log1p-expm1-u
expm1-log1p-u
*-commutative
rem-cube-cbrt
associate-/r/
pow-exp
pow1/3
pow-pow
cbrt-div
pow-to-exp
Counts
4 → 316
Calls
4 calls:
Slowest
20.0ms
(* (* (log (hypot re im)) (log (hypot re im))) (* (log (hypot re im)) (log (hypot re im))))
5.0ms
(* (log (hypot re im)) (log (hypot re im)))
3.0ms
(cbrt (/ (cbrt (* (* (* (log (hypot re im)) (log (hypot re im))) (* (log (hypot re im)) (log (hypot re im)))) (* (log (hypot re im)) (log (hypot re im))))) (/ (pow (log base) 3) (log (hypot re im)))))
1.0ms
(pow (log base) 3)

series475.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
172.0ms
(pow (log base) 3)
115.0ms
(cbrt (/ (cbrt (* (* (* (log (hypot re im)) (log (hypot re im))) (* (log (hypot re im)) (log (hypot re im)))) (* (log (hypot re im)) (log (hypot re im))))) (/ (pow (log base) 3) (log (hypot re im)))))
112.0ms
(* (* (log (hypot re im)) (log (hypot re im))) (* (log (hypot re im)) (log (hypot re im))))
76.0ms
(* (log (hypot re im)) (log (hypot re im)))

simplify23.0s

Counts
300 → 328
Calls
300 calls:
Slowest
458.0ms
(pow (- (log -1) (log (/ -1 base))) 3)
453.0ms
(cbrt (/ (* (cbrt (cbrt (* (* (* (log (hypot re im)) (log (hypot re im))) (* (log (hypot re im)) (log (hypot re im)))) (* (log (hypot re im)) (log (hypot re im)))))) (cbrt (cbrt (* (* (* (log (hypot re im)) (log (hypot re im))) (* (log (hypot re im)) (log (hypot re im)))) (* (log (hypot re im)) (log (hypot re im))))))) (/ (pow (sqrt (log base)) 3) 1)))
433.0ms
(cbrt (/ (* (cbrt (cbrt (* (* (* (log (hypot re im)) (log (hypot re im))) (* (log (hypot re im)) (log (hypot re im)))) (* (log (hypot re im)) (log (hypot re im)))))) (cbrt (cbrt (* (* (* (log (hypot re im)) (log (hypot re im))) (* (log (hypot re im)) (log (hypot re im)))) (* (log (hypot re im)) (log (hypot re im))))))) (/ (pow (sqrt (log base)) 3) 1)))
407.0ms
(cbrt (/ (* (cbrt (cbrt (* (* (* (log (hypot re im)) (log (hypot re im))) (* (log (hypot re im)) (log (hypot re im)))) (* (log (hypot re im)) (log (hypot re im)))))) (cbrt (cbrt (* (* (* (log (hypot re im)) (log (hypot re im))) (* (log (hypot re im)) (log (hypot re im)))) (* (log (hypot re im)) (log (hypot re im))))))) (/ (* (cbrt (pow (log base) 3)) (cbrt (pow (log base) 3))) (* (cbrt (log (hypot re im))) (cbrt (log (hypot re im)))))))
392.0ms
(cbrt (/ (* (cbrt (cbrt (* (* (* (log (hypot re im)) (log (hypot re im))) (* (log (hypot re im)) (log (hypot re im)))) (* (log (hypot re im)) (log (hypot re im)))))) (cbrt (cbrt (* (* (* (log (hypot re im)) (log (hypot re im))) (* (log (hypot re im)) (log (hypot re im)))) (* (log (hypot re im)) (log (hypot re im))))))) (/ (pow (sqrt (log base)) 3) 1)))

prune5.5s

Pruning

10 alts after pruning (9 fresh and 1 done)

Merged error: 0b

regimes395.0ms

Accuracy

0% (0.4b remaining)

Error of 0.4b against oracle of 0.0b and baseline of 0.4b

bsearch2.0ms

end0.0ms

sample36.2s

Algorithm
intervals
Results
27.8s7990×body10240exit
5.3s16018×body80nan
2.3s8000×body80valid