math.log/2 on complex, real part

Time bar (total: 2.7s)

analyze225.0ms (8.2%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%49.9%0.1%0%49.9%0%4
0%0%49.9%0.1%0%49.9%0%5
0%0%49.9%0.1%0%49.9%0%6
9.4%4.7%45.2%0.1%0%49.9%0%7
17.2%8.6%41.3%0.1%0%49.9%0%8
27.3%13.7%36.3%0.1%0%49.9%0%9
41%20.5%29.4%0.1%0%49.9%0%10
48.6%24.3%25.6%0.1%0%49.9%0%11
57.1%28.5%21.4%0.1%0%49.9%0%12
Compiler

Compiled 32 to 21 computations (34.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 136.0ms
Operation ival-mult, time spent: 53.0ms, 39.0% of total-time
Operation ival-log, time spent: 33.0ms, 24.0% of total-time
Operation ival-add, time spent: 19.0ms, 14.0% of total-time
Operation ival-atan2, time spent: 12.0ms, 9.0% of total-time
Operation ival-sqrt, time spent: 10.0ms, 7.0% of total-time
Operation ival-div, time spent: 6.0ms, 4.0% of total-time
Operation const, time spent: 3.0ms, 2.0% of total-time

sample2.2s (81.4%)

Results
2.0s8255×256valid
0.0ms256valid
Precisions
Click to see histograms. Total time spent on operations: 1.1s
Operation ival-mult, time spent: 389.0ms, 34.0% of total-time
Operation ival-log, time spent: 345.0ms, 30.0% of total-time
Operation ival-add, time spent: 147.0ms, 13.0% of total-time
Operation ival-atan2, time spent: 86.0ms, 8.0% of total-time
Operation ival-sqrt, time spent: 72.0ms, 6.0% of total-time
Operation ival-div, time spent: 68.0ms, 6.0% of total-time
Operation const, time spent: 24.0ms, 2.0% of total-time
Bogosity

preprocess284.0ms (10.4%)

Algorithm
egg-herbie
Rules
1168×times-frac
1024×fma-neg
980×associate-*r/
874×distribute-rgt-neg-out
870×associate-*l/
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
086674
1185652
2306652
3568398
41055350
51803350
65717350
Stop Event
node limit
Calls
Call 1
Inputs
(/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) (log.f64 base)) (*.f64 (atan2.f64 im re) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
(/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) (log.f64 base)) (*.f64 (atan2.f64 im re) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
(/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 (neg.f64 re) (neg.f64 re)) (*.f64 im im)))) (log.f64 base)) (*.f64 (atan2.f64 im (neg.f64 re)) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
(/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 (neg.f64 im) (neg.f64 im))))) (log.f64 base)) (*.f64 (atan2.f64 (neg.f64 im) re) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
(/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) (log.f64 (neg.f64 base))) (*.f64 (atan2.f64 im re) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 (neg.f64 base)) (log.f64 (neg.f64 base))) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
(neg.f64 (/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 (neg.f64 re) (neg.f64 re)) (*.f64 im im)))) (log.f64 base)) (*.f64 (atan2.f64 im (neg.f64 re)) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64)))))
(neg.f64 (/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 (neg.f64 im) (neg.f64 im))))) (log.f64 base)) (*.f64 (atan2.f64 (neg.f64 im) re) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64)))))
(neg.f64 (/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) (log.f64 (neg.f64 base))) (*.f64 (atan2.f64 im re) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 (neg.f64 base)) (log.f64 (neg.f64 base))) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64)))))
(/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 im im) (*.f64 re re)))) (log.f64 base)) (*.f64 (atan2.f64 re im) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
(/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 base base) (*.f64 im im)))) (log.f64 re)) (*.f64 (atan2.f64 im base) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 re) (log.f64 re)) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
(/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 base base)))) (log.f64 im)) (*.f64 (atan2.f64 base re) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 im) (log.f64 im)) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
Outputs
(/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) (log.f64 base)) (*.f64 (atan2.f64 im re) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
(/.f64 (fma.f64 (log.f64 (hypot.f64 re im)) (log.f64 base) #s(literal 0 binary64)) (*.f64 (log.f64 base) (log.f64 base)))
(/.f64 (*.f64 (log.f64 (hypot.f64 re im)) (log.f64 base)) (*.f64 (log.f64 base) (log.f64 base)))
(*.f64 (log.f64 (hypot.f64 re im)) (/.f64 (log.f64 base) (*.f64 (log.f64 base) (log.f64 base))))
(*.f64 (log.f64 (hypot.f64 re im)) (/.f64 #s(literal 1 binary64) (log.f64 base)))
(/.f64 (log.f64 (hypot.f64 re im)) (log.f64 base))
(/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) (log.f64 base)) (*.f64 (atan2.f64 im re) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
(/.f64 (fma.f64 (log.f64 (hypot.f64 re im)) (log.f64 base) #s(literal 0 binary64)) (*.f64 (log.f64 base) (log.f64 base)))
(/.f64 (*.f64 (log.f64 (hypot.f64 re im)) (log.f64 base)) (*.f64 (log.f64 base) (log.f64 base)))
(*.f64 (log.f64 (hypot.f64 re im)) (/.f64 (log.f64 base) (*.f64 (log.f64 base) (log.f64 base))))
(*.f64 (log.f64 (hypot.f64 re im)) (/.f64 #s(literal 1 binary64) (log.f64 base)))
(/.f64 (log.f64 (hypot.f64 re im)) (log.f64 base))
(/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 (neg.f64 re) (neg.f64 re)) (*.f64 im im)))) (log.f64 base)) (*.f64 (atan2.f64 im (neg.f64 re)) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
(/.f64 (fma.f64 (log.f64 (hypot.f64 re im)) (log.f64 base) #s(literal 0 binary64)) (*.f64 (log.f64 base) (log.f64 base)))
(/.f64 (*.f64 (log.f64 (hypot.f64 re im)) (log.f64 base)) (*.f64 (log.f64 base) (log.f64 base)))
(*.f64 (log.f64 (hypot.f64 re im)) (/.f64 (log.f64 base) (*.f64 (log.f64 base) (log.f64 base))))
(*.f64 (log.f64 (hypot.f64 re im)) (/.f64 #s(literal 1 binary64) (log.f64 base)))
(/.f64 (log.f64 (hypot.f64 re im)) (log.f64 base))
(/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 (neg.f64 im) (neg.f64 im))))) (log.f64 base)) (*.f64 (atan2.f64 (neg.f64 im) re) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
(/.f64 (fma.f64 (log.f64 (hypot.f64 re im)) (log.f64 base) #s(literal 0 binary64)) (*.f64 (log.f64 base) (log.f64 base)))
(/.f64 (*.f64 (log.f64 (hypot.f64 re im)) (log.f64 base)) (*.f64 (log.f64 base) (log.f64 base)))
(*.f64 (log.f64 (hypot.f64 re im)) (/.f64 (log.f64 base) (*.f64 (log.f64 base) (log.f64 base))))
(*.f64 (log.f64 (hypot.f64 re im)) (/.f64 #s(literal 1 binary64) (log.f64 base)))
(/.f64 (log.f64 (hypot.f64 re im)) (log.f64 base))
(/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) (log.f64 (neg.f64 base))) (*.f64 (atan2.f64 im re) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 (neg.f64 base)) (log.f64 (neg.f64 base))) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
(/.f64 (fma.f64 (log.f64 (hypot.f64 re im)) (log.f64 (neg.f64 base)) #s(literal 0 binary64)) (*.f64 (log.f64 (neg.f64 base)) (log.f64 (neg.f64 base))))
(/.f64 (*.f64 (log.f64 (hypot.f64 re im)) (log.f64 (neg.f64 base))) (*.f64 (log.f64 (neg.f64 base)) (log.f64 (neg.f64 base))))
(*.f64 (log.f64 (hypot.f64 re im)) (/.f64 (log.f64 (neg.f64 base)) (*.f64 (log.f64 (neg.f64 base)) (log.f64 (neg.f64 base)))))
(*.f64 (log.f64 (hypot.f64 re im)) (/.f64 #s(literal 1 binary64) (log.f64 (neg.f64 base))))
(/.f64 (log.f64 (hypot.f64 re im)) (log.f64 (neg.f64 base)))
(neg.f64 (/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 (neg.f64 re) (neg.f64 re)) (*.f64 im im)))) (log.f64 base)) (*.f64 (atan2.f64 im (neg.f64 re)) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64)))))
(/.f64 (fma.f64 (log.f64 (hypot.f64 re im)) (log.f64 base) #s(literal 0 binary64)) (neg.f64 (*.f64 (log.f64 base) (log.f64 base))))
(/.f64 (*.f64 (log.f64 (hypot.f64 re im)) (log.f64 base)) (neg.f64 (*.f64 (log.f64 base) (log.f64 base))))
(*.f64 (log.f64 (hypot.f64 re im)) (/.f64 (log.f64 base) (*.f64 (log.f64 base) (neg.f64 (log.f64 base)))))
(/.f64 (neg.f64 (log.f64 (hypot.f64 re im))) (log.f64 base))
(/.f64 (log.f64 (hypot.f64 re im)) (neg.f64 (log.f64 base)))
(neg.f64 (/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 (neg.f64 im) (neg.f64 im))))) (log.f64 base)) (*.f64 (atan2.f64 (neg.f64 im) re) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64)))))
(/.f64 (fma.f64 (log.f64 (hypot.f64 re im)) (log.f64 base) #s(literal 0 binary64)) (neg.f64 (*.f64 (log.f64 base) (log.f64 base))))
(/.f64 (*.f64 (log.f64 (hypot.f64 re im)) (log.f64 base)) (neg.f64 (*.f64 (log.f64 base) (log.f64 base))))
(*.f64 (log.f64 (hypot.f64 re im)) (/.f64 (log.f64 base) (*.f64 (log.f64 base) (neg.f64 (log.f64 base)))))
(/.f64 (neg.f64 (log.f64 (hypot.f64 re im))) (log.f64 base))
(/.f64 (log.f64 (hypot.f64 re im)) (neg.f64 (log.f64 base)))
(neg.f64 (/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) (log.f64 (neg.f64 base))) (*.f64 (atan2.f64 im re) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 (neg.f64 base)) (log.f64 (neg.f64 base))) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64)))))
(/.f64 (fma.f64 (log.f64 (hypot.f64 re im)) (log.f64 (neg.f64 base)) #s(literal 0 binary64)) (neg.f64 (*.f64 (log.f64 (neg.f64 base)) (log.f64 (neg.f64 base)))))
(/.f64 (*.f64 (log.f64 (hypot.f64 re im)) (log.f64 (neg.f64 base))) (*.f64 (log.f64 (neg.f64 base)) (neg.f64 (log.f64 (neg.f64 base)))))
(*.f64 (log.f64 (hypot.f64 re im)) (/.f64 (log.f64 (neg.f64 base)) (*.f64 (log.f64 (neg.f64 base)) (neg.f64 (log.f64 (neg.f64 base))))))
(/.f64 (neg.f64 (log.f64 (hypot.f64 re im))) (log.f64 (neg.f64 base)))
(/.f64 (log.f64 (hypot.f64 re im)) (neg.f64 (log.f64 (neg.f64 base))))
(/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 im im) (*.f64 re re)))) (log.f64 base)) (*.f64 (atan2.f64 re im) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
(/.f64 (fma.f64 (log.f64 (hypot.f64 re im)) (log.f64 base) #s(literal 0 binary64)) (*.f64 (log.f64 base) (log.f64 base)))
(/.f64 (*.f64 (log.f64 (hypot.f64 re im)) (log.f64 base)) (*.f64 (log.f64 base) (log.f64 base)))
(*.f64 (log.f64 (hypot.f64 re im)) (/.f64 (log.f64 base) (*.f64 (log.f64 base) (log.f64 base))))
(*.f64 (log.f64 (hypot.f64 re im)) (/.f64 #s(literal 1 binary64) (log.f64 base)))
(/.f64 (log.f64 (hypot.f64 re im)) (log.f64 base))
(/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 base base) (*.f64 im im)))) (log.f64 re)) (*.f64 (atan2.f64 im base) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 re) (log.f64 re)) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
(/.f64 (fma.f64 (log.f64 (hypot.f64 base im)) (log.f64 re) #s(literal 0 binary64)) (*.f64 (log.f64 re) (log.f64 re)))
(/.f64 (*.f64 (log.f64 (hypot.f64 im base)) (log.f64 re)) (*.f64 (log.f64 re) (log.f64 re)))
(*.f64 (log.f64 (hypot.f64 im base)) (/.f64 (log.f64 re) (*.f64 (log.f64 re) (log.f64 re))))
(*.f64 (log.f64 (hypot.f64 im base)) (/.f64 #s(literal 1 binary64) (log.f64 re)))
(/.f64 (log.f64 (hypot.f64 im base)) (log.f64 re))
(/.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 base base)))) (log.f64 im)) (*.f64 (atan2.f64 base re) #s(literal 0 binary64))) (+.f64 (*.f64 (log.f64 im) (log.f64 im)) (*.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
(/.f64 (fma.f64 (log.f64 (hypot.f64 re base)) (log.f64 im) #s(literal 0 binary64)) (*.f64 (log.f64 im) (log.f64 im)))
(/.f64 (*.f64 (log.f64 (hypot.f64 re base)) (log.f64 im)) (*.f64 (log.f64 im) (log.f64 im)))
(*.f64 (log.f64 (hypot.f64 re base)) (/.f64 (log.f64 im) (*.f64 (log.f64 im) (log.f64 im))))
(/.f64 (*.f64 (log.f64 (hypot.f64 re base)) #s(literal 1 binary64)) (log.f64 im))
(/.f64 (log.f64 (hypot.f64 re base)) (log.f64 im))
Symmetry

(abs re)

(abs im)

(sort re im)

Compiler

Compiled 135 to 36 computations (73.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 44.0ms
Operation ival-mult, time spent: 17.0ms, 39.0% of total-time
Operation ival-add, time spent: 9.0ms, 21.0% of total-time
Operation ival-log, time spent: 8.0ms, 18.0% of total-time
Operation ival-atan2, time spent: 3.0ms, 7.0% of total-time
Operation const, time spent: 2.0ms, 5.0% of total-time
Operation ival-div, time spent: 2.0ms, 5.0% of total-time
Operation ival-sqrt, time spent: 2.0ms, 5.0% of total-time

end0.0ms (0%)

Profiling

Loading profile data...