math.log/2 on complex, real part

Time bar (total: 9.9s)

analyze361.0ms (3.7%)

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 19 computations (40.6% saved)

sample9.1s (92.6%)

Results
2.0s8256×0valid-rival
1.4s8225×0valid-sollya
155.0ms31×0exit-sollya
Bogosity

preprocess225.0ms (2.3%)

Algorithm
egg-herbie
Rules
584×times-frac
512×fma-neg
490×associate-*r/
437×distribute-rgt-neg-out
435×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 31 to 18 computations (41.9% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune13.0ms (0.1%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
48.0%
(/.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))))
Compiler

Compiled 62 to 36 computations (41.9% saved)

simplify21.0ms (0.2%)

Algorithm
egg-herbie
Rules
+-commutative
*-commutative
+-rgt-identity
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
025102
131102
Stop Event
saturated
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))))
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 (+.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 (log.f64 base) (log.f64 base)))

soundness1.0ms (0%)

Stop Event
fuel
Compiler

Compiled 27 to 16 computations (40.7% saved)

preprocess110.0ms (1.1%)

Remove

(sort re im)

(abs im)

(abs re)

Compiler

Compiled 440 to 260 computations (40.9% saved)

end0.0ms (0%)

Profiling

Loading profile data...