Jmat.Real.lambertw, estimator

Time bar (total: 1.8s)

analyze2.0ms (0.1%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%100%0%0%0%0%1
0%0%50%0%0%50%0%2
50%25%25%0%0%50%0%3
66.7%25%12.5%0%0%62.5%0%4
80%25%6.2%0%0%68.7%0%5
88.9%25%3.1%0%0%71.8%0%6
94.1%25%1.6%0%0%73.4%0%7
97%25%0.8%0%0%74.2%0%8
98.5%25%0.4%0%0%74.6%0%9
99.2%25%0.2%0%0%74.8%0%10
99.6%25%0.1%0%0%74.9%0%11
99.8%25%0%0%0%74.9%0%12
Compiler

Compiled 8 to 5 computations (37.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 1.0ms
ival-sub: 0.0ms (0% of total)
ival-log: 0.0ms (0% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

sample742.0ms (41.4%)

Results
563.0ms8256×0valid
1.0ms15×0invalid
Precisions
Click to see histograms. Total time spent on operations: 324.0ms
ival-log: 240.0ms (74% of total)
ival-sub: 73.0ms (22.5% of total)
const: 8.0ms (2.5% of total)
backward-pass: 3.0ms (0.9% of total)
Bogosity

preprocess39.0ms (2.2%)

Algorithm
egg-herbie
Rules
244×fnmadd-define
234×sum3-define
176×fmsub-define
168×fnmsub-define
160×fma-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0923
11923
24122
38222
416922
535422
653422
769622
878622
989222
1097022
1197622
046
166
2116
3186
4286
5606
61196
72086
82916
93976
104756
114816
04816
Stop Event
iter limit
saturated
saturated
Calls
Call 1
Inputs
(- (log x) (log (log x)))
Outputs
(- (log x) (log (log x)))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
Call 2
Inputs
(- (log x) (log (log x)))
(- (log (neg x)) (log (log (neg x))))
(neg (- (log (neg x)) (log (log (neg x)))))
Outputs
(- (log x) (log (log x)))
(- (log (neg x)) (log (log (neg x))))
(neg (- (log (neg x)) (log (log (neg x)))))
(- (log (log (neg x))) (log (neg x)))

explain68.0ms (3.8%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
00-0-x
00-0-(log.f64 x)
00-0-(log.f64 (log.f64 x))
Results
45.0ms512×0valid
Compiler

Compiled 35 to 14 computations (60% saved)

Precisions
Click to see histograms. Total time spent on operations: 17.0ms
ival-log: 13.0ms (76.2% of total)
ival-sub: 4.0ms (23.4% of total)
const: 1.0ms (5.9% of total)
backward-pass: 0.0ms (0% of total)

eval0.0ms (0%)

Compiler

Compiled 7 to 4 computations (42.9% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
99.7%
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
Compiler

Compiled 7 to 4 computations (42.9% saved)

simplify17.0ms (0.9%)

Algorithm
egg-herbie
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff0
(log.f64 (log.f64 x))
cost-diff0
(log.f64 x)
cost-diff0
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
Rules
124×fnmadd-define
122×sum3-define
80×fma-lowering-fma.f32
80×fnmsub-define
80×fmsub-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0412
1612
21112
31812
42812
56012
611912
720812
829112
939712
1047512
1148112
048112
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(- (log x) (log (log x)))
(log x)
x
(log (log x))
Outputs
(- (log x) (log (log x)))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(log x)
(log.f64 x)
x
(log (log x))
(log.f64 (log.f64 x))

localize27.0ms (1.5%)

Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(log.f64 x)
accuracy99.9%
(log.f64 (log.f64 x))
accuracy99.7%
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
Results
20.0ms256×0valid
Compiler

Compiled 14 to 5 computations (64.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 8.0ms
ival-log: 6.0ms (74% of total)
ival-sub: 1.0ms (12.3% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series136.0ms (7.6%)

Counts
3 → 36
Calls
Call 1
Inputs
#<alt (- (log x) (log (log x)))>
#<alt (log x)>
#<alt (log (log x))>
Outputs
#<alt (- (log x) (log (log x)))>
#<alt (- (log x) (log (log x)))>
#<alt (- (log x) (log (log x)))>
#<alt (- (log x) (log (log x)))>
#<alt (- (* -1 (log (/ 1 x))) (log (* -1 (log (/ 1 x)))))>
#<alt (- (* -1 (log (/ 1 x))) (log (* -1 (log (/ 1 x)))))>
#<alt (- (* -1 (log (/ 1 x))) (log (* -1 (log (/ 1 x)))))>
#<alt (- (* -1 (log (/ 1 x))) (log (* -1 (log (/ 1 x)))))>
#<alt (- (+ (log -1) (* -1 (log (/ -1 x)))) (log (+ (log -1) (* -1 (log (/ -1 x))))))>
#<alt (- (+ (log -1) (* -1 (log (/ -1 x)))) (log (+ (log -1) (* -1 (log (/ -1 x))))))>
#<alt (- (+ (log -1) (* -1 (log (/ -1 x)))) (log (+ (log -1) (* -1 (log (/ -1 x))))))>
#<alt (- (+ (log -1) (* -1 (log (/ -1 x)))) (log (+ (log -1) (* -1 (log (/ -1 x))))))>
#<alt (log x)>
#<alt (log x)>
#<alt (log x)>
#<alt (log x)>
#<alt (* -1 (log (/ 1 x)))>
#<alt (* -1 (log (/ 1 x)))>
#<alt (* -1 (log (/ 1 x)))>
#<alt (* -1 (log (/ 1 x)))>
#<alt (+ (log -1) (* -1 (log (/ -1 x))))>
#<alt (+ (log -1) (* -1 (log (/ -1 x))))>
#<alt (+ (log -1) (* -1 (log (/ -1 x))))>
#<alt (+ (log -1) (* -1 (log (/ -1 x))))>
#<alt (log (log x))>
#<alt (log (log x))>
#<alt (log (log x))>
#<alt (log (log x))>
#<alt (log (* -1 (log (/ 1 x))))>
#<alt (log (* -1 (log (/ 1 x))))>
#<alt (log (* -1 (log (/ 1 x))))>
#<alt (log (* -1 (log (/ 1 x))))>
#<alt (log (+ (log -1) (* -1 (log (/ -1 x)))))>
#<alt (log (+ (log -1) (* -1 (log (/ -1 x)))))>
#<alt (log (+ (log -1) (* -1 (log (/ -1 x)))))>
#<alt (log (+ (log -1) (* -1 (log (/ -1 x)))))>
Calls

9 calls:

TimeVariablePointExpression
48.0ms
x
@-inf
(- (log x) (log (log x)))
48.0ms
x
@0
(- (log x) (log (log x)))
39.0ms
x
@inf
(- (log x) (log (log x)))
0.0ms
x
@0
(log x)
0.0ms
x
@inf
(log x)

rewrite130.0ms (7.3%)

Algorithm
batch-egg-rewrite
Rules
600×/-lowering-/.f32
600×/-lowering-/.f64
596×*-lowering-*.f32
596×*-lowering-*.f64
412×frac-times
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0410
1810
22210
37310
425010
575810
0275210
Stop Event
iter limit
iter limit
node limit
Counts
3 → 93
Calls
Call 1
Inputs
(- (log x) (log (log x)))
(log x)
(log (log x))
Outputs
(log.f64 (/.f64 x (log.f64 x)))
(+.f64 (log.f64 x) (log.f64 (/.f64 #s(literal 1 binary64) (log.f64 x))))
(+.f64 (log.f64 (/.f64 x (log.f64 x))) #s(literal 0 binary64))
(+.f64 (log.f64 (/.f64 x (log.f64 x))) (fma.f64 #s(literal 1 binary64) (log.f64 x) (log.f64 (/.f64 #s(literal 1 binary64) x))))
(+.f64 (log.f64 (/.f64 x (log.f64 x))) (fma.f64 (log.f64 x) #s(literal 1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) x))))
(+.f64 (log.f64 (/.f64 x (log.f64 x))) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) x)) (log.f64 (/.f64 #s(literal 1 binary64) x))))
(+.f64 (log.f64 (/.f64 x (log.f64 x))) (fma.f64 (log.f64 (/.f64 #s(literal 1 binary64) x)) #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) x))))
(+.f64 (log.f64 (/.f64 #s(literal 1 binary64) (log.f64 x))) (log.f64 x))
(+.f64 #s(literal 0 binary64) (log.f64 (/.f64 x (log.f64 x))))
(+.f64 (log.f64 (-.f64 #s(literal 0 binary64) x)) (log.f64 (/.f64 #s(literal -1 binary64) (log.f64 x))))
(+.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (-.f64 #s(literal 0 binary64) (/.f64 x (log.f64 x)))))
(+.f64 (log.f64 (/.f64 #s(literal -1 binary64) (log.f64 x))) (log.f64 (-.f64 #s(literal 0 binary64) x)))
(+.f64 (log.f64 (/.f64 #s(literal -1 binary64) (log.f64 x))) (*.f64 (log.f64 (/.f64 #s(literal -1 binary64) x)) #s(literal -1 binary64)))
(+.f64 (log.f64 (/.f64 #s(literal -1 binary64) (log.f64 x))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) x))))
(+.f64 (log.f64 (-.f64 #s(literal 0 binary64) (/.f64 x (log.f64 x)))) (log.f64 #s(literal -1 binary64)))
(+.f64 (*.f64 (log.f64 (/.f64 #s(literal -1 binary64) x)) #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) (log.f64 x))))
(+.f64 (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) x))) (log.f64 (/.f64 #s(literal -1 binary64) (log.f64 x))))
(+.f64 (*.f64 (log.f64 #s(literal -1 binary64)) #s(literal -1 binary64)) (*.f64 (log.f64 (-.f64 #s(literal 0 binary64) (/.f64 (log.f64 x) x))) #s(literal -1 binary64)))
(+.f64 (-.f64 (log.f64 #s(literal -1 binary64)) #s(literal 0 binary64)) (log.f64 (-.f64 #s(literal 0 binary64) (/.f64 x (log.f64 x)))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(-.f64 (log.f64 (log.f64 x)) (log.f64 (/.f64 (pow.f64 (log.f64 x) #s(literal 2 binary64)) x)))
(-.f64 (log.f64 (/.f64 x (log.f64 x))) #s(literal 0 binary64))
(-.f64 (log.f64 (/.f64 #s(literal 1 binary64) (log.f64 x))) (log.f64 (/.f64 #s(literal 1 binary64) x)))
(-.f64 #s(literal 0 binary64) (log.f64 (/.f64 (log.f64 x) x)))
(-.f64 (log.f64 (-.f64 #s(literal 0 binary64) x)) (log.f64 (log.f64 (/.f64 #s(literal 1 binary64) x))))
(-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (-.f64 #s(literal 0 binary64) (/.f64 (log.f64 x) x))))
(-.f64 (log.f64 (/.f64 #s(literal -1 binary64) (log.f64 x))) (log.f64 (/.f64 #s(literal -1 binary64) x)))
(-.f64 (log.f64 (-.f64 #s(literal 0 binary64) (/.f64 x (log.f64 x)))) (log.f64 #s(literal -1 binary64)))
(-.f64 (log.f64 (-.f64 #s(literal 0 binary64) (*.f64 x (log.f64 x)))) (log.f64 (/.f64 (pow.f64 (log.f64 x) #s(literal 2 binary64)) #s(literal -1 binary64))))
(-.f64 (log.f64 (*.f64 x (log.f64 x))) (log.f64 (pow.f64 (log.f64 x) #s(literal 2 binary64))))
(fma.f64 (log.f64 x) #s(literal 1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) (log.f64 x))))
(fma.f64 (log.f64 (log.f64 x)) #s(literal -1 binary64) (log.f64 x))
(fma.f64 #s(literal 1 binary64) (log.f64 x) (log.f64 (/.f64 #s(literal 1 binary64) (log.f64 x))))
(fma.f64 (log.f64 (/.f64 #s(literal 1 binary64) x)) #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) (log.f64 x))))
(fma.f64 #s(literal -1 binary64) (log.f64 (log.f64 x)) (log.f64 x))
(fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) x)) (log.f64 (/.f64 #s(literal 1 binary64) (log.f64 x))))
(fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 (log.f64 x) x)) #s(literal 0 binary64))
(fma.f64 #s(literal -1 binary64) (log.f64 (log.f64 (/.f64 #s(literal 1 binary64) x))) (log.f64 (-.f64 #s(literal 0 binary64) x)))
(fma.f64 (log.f64 (/.f64 (log.f64 x) x)) #s(literal -1 binary64) #s(literal 0 binary64))
(neg.f64 (log.f64 (/.f64 (log.f64 x) x)))
(*.f64 (log.f64 (/.f64 x (log.f64 x))) #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) (log.f64 (/.f64 x (log.f64 x))))
(*.f64 #s(literal -1 binary64) (log.f64 (/.f64 (log.f64 x) x)))
(*.f64 (log.f64 (/.f64 (log.f64 x) x)) #s(literal -1 binary64))
(log.f64 x)
(+.f64 (log.f64 x) #s(literal 0 binary64))
(+.f64 (log.f64 x) (fma.f64 #s(literal 1 binary64) (log.f64 x) (log.f64 (/.f64 #s(literal 1 binary64) x))))
(+.f64 (log.f64 x) (fma.f64 (log.f64 x) #s(literal 1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) x))))
(+.f64 (log.f64 x) (fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) x)) (log.f64 (/.f64 #s(literal 1 binary64) x))))
(+.f64 (log.f64 x) (fma.f64 (log.f64 (/.f64 #s(literal 1 binary64) x)) #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) x))))
(+.f64 #s(literal 0 binary64) (log.f64 x))
(+.f64 (log.f64 (-.f64 #s(literal 0 binary64) x)) (log.f64 #s(literal -1 binary64)))
(+.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (-.f64 #s(literal 0 binary64) x)))
(+.f64 (*.f64 #s(literal 1 binary64) (log.f64 #s(literal -1 binary64))) (*.f64 #s(literal 1 binary64) (log.f64 (-.f64 #s(literal 0 binary64) x))))
(+.f64 (*.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1 binary64)) (*.f64 (log.f64 (-.f64 #s(literal 0 binary64) x)) #s(literal 1 binary64)))
(exp.f64 (log.f64 (log.f64 x)))
(-.f64 (log.f64 x) #s(literal 0 binary64))
(-.f64 #s(literal 0 binary64) (log.f64 (/.f64 #s(literal 1 binary64) x)))
(-.f64 (log.f64 (-.f64 #s(literal 0 binary64) x)) (log.f64 #s(literal -1 binary64)))
(-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x)))
(-.f64 (/.f64 (log.f64 #s(literal -1 binary64)) #s(literal -1 binary64)) (/.f64 (log.f64 (-.f64 #s(literal 0 binary64) x)) #s(literal -1 binary64)))
(fma.f64 (log.f64 x) #s(literal 1 binary64) #s(literal 0 binary64))
(fma.f64 #s(literal 1 binary64) (log.f64 x) #s(literal 0 binary64))
(fma.f64 (log.f64 (/.f64 #s(literal 1 binary64) x)) #s(literal -1 binary64) #s(literal 0 binary64))
(fma.f64 #s(literal 0 binary64) (-.f64 #s(literal 0 binary64) (/.f64 (log.f64 x) x)) (log.f64 x))
(fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) x)) #s(literal 0 binary64))
(neg.f64 (log.f64 (/.f64 #s(literal 1 binary64) x)))
(/.f64 (log.f64 x) #s(literal 1 binary64))
(/.f64 #s(literal 1 binary64) (/.f64 #s(literal 1 binary64) (log.f64 x)))
(/.f64 (log.f64 (/.f64 #s(literal 1 binary64) x)) #s(literal -1 binary64))
(/.f64 #s(literal -1 binary64) (/.f64 #s(literal -1 binary64) (log.f64 x)))
(pow.f64 (log.f64 x) #s(literal 1 binary64))
(pow.f64 (/.f64 #s(literal 1 binary64) (log.f64 x)) #s(literal -1 binary64))
(pow.f64 (exp.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal 1 binary64) (log.f64 x))))
(*.f64 (log.f64 x) #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) (log.f64 x))
(*.f64 (log.f64 (/.f64 #s(literal 1 binary64) x)) #s(literal -1 binary64))
(*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) x)))
(log.f64 (log.f64 x))
(+.f64 (log.f64 (log.f64 x)) #s(literal 0 binary64))
(+.f64 #s(literal 0 binary64) (log.f64 (log.f64 x)))
(+.f64 (log.f64 (log.f64 (/.f64 #s(literal 1 binary64) x))) (log.f64 #s(literal -1 binary64)))
(+.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (log.f64 (/.f64 #s(literal 1 binary64) x))))
(-.f64 (log.f64 (log.f64 x)) #s(literal 0 binary64))
(-.f64 #s(literal 0 binary64) (log.f64 (/.f64 #s(literal 1 binary64) (log.f64 x))))
(-.f64 (log.f64 (log.f64 (/.f64 #s(literal 1 binary64) x))) (log.f64 #s(literal -1 binary64)))
(-.f64 (log.f64 (log.f64 (/.f64 #s(literal 1 binary64) x))) (-.f64 (log.f64 #s(literal -1 binary64)) #s(literal 0 binary64)))
(-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) (log.f64 x))))
(neg.f64 (log.f64 (/.f64 #s(literal 1 binary64) (log.f64 x))))
(*.f64 (log.f64 (log.f64 x)) #s(literal 1 binary64))
(*.f64 (log.f64 (/.f64 #s(literal 1 binary64) (log.f64 x))) #s(literal -1 binary64))
(*.f64 #s(literal 1 binary64) (log.f64 (log.f64 x)))
(*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) (log.f64 x))))

simplify67.0ms (3.7%)

Algorithm
egg-herbie
Rules
568×sum5-define
474×fnmadd-define
444×sum4-define
426×sum3-define
392×fmsub-define
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
018228
137212
273212
3152212
4351212
5644212
61274212
71843212
82066212
92092212
02092212
Stop Event
iter limit
saturated
Counts
36 → 36
Calls
Call 1
Inputs
(- (log x) (log (log x)))
(- (log x) (log (log x)))
(- (log x) (log (log x)))
(- (log x) (log (log x)))
(- (* -1 (log (/ 1 x))) (log (* -1 (log (/ 1 x)))))
(- (* -1 (log (/ 1 x))) (log (* -1 (log (/ 1 x)))))
(- (* -1 (log (/ 1 x))) (log (* -1 (log (/ 1 x)))))
(- (* -1 (log (/ 1 x))) (log (* -1 (log (/ 1 x)))))
(- (+ (log -1) (* -1 (log (/ -1 x)))) (log (+ (log -1) (* -1 (log (/ -1 x))))))
(- (+ (log -1) (* -1 (log (/ -1 x)))) (log (+ (log -1) (* -1 (log (/ -1 x))))))
(- (+ (log -1) (* -1 (log (/ -1 x)))) (log (+ (log -1) (* -1 (log (/ -1 x))))))
(- (+ (log -1) (* -1 (log (/ -1 x)))) (log (+ (log -1) (* -1 (log (/ -1 x))))))
(log x)
(log x)
(log x)
(log x)
(* -1 (log (/ 1 x)))
(* -1 (log (/ 1 x)))
(* -1 (log (/ 1 x)))
(* -1 (log (/ 1 x)))
(+ (log -1) (* -1 (log (/ -1 x))))
(+ (log -1) (* -1 (log (/ -1 x))))
(+ (log -1) (* -1 (log (/ -1 x))))
(+ (log -1) (* -1 (log (/ -1 x))))
(log (log x))
(log (log x))
(log (log x))
(log (log x))
(log (* -1 (log (/ 1 x))))
(log (* -1 (log (/ 1 x))))
(log (* -1 (log (/ 1 x))))
(log (* -1 (log (/ 1 x))))
(log (+ (log -1) (* -1 (log (/ -1 x)))))
(log (+ (log -1) (* -1 (log (/ -1 x)))))
(log (+ (log -1) (* -1 (log (/ -1 x)))))
(log (+ (log -1) (* -1 (log (/ -1 x)))))
Outputs
(- (log x) (log (log x)))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(- (log x) (log (log x)))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(- (log x) (log (log x)))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(- (log x) (log (log x)))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(- (* -1 (log (/ 1 x))) (log (* -1 (log (/ 1 x)))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(- (* -1 (log (/ 1 x))) (log (* -1 (log (/ 1 x)))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(- (* -1 (log (/ 1 x))) (log (* -1 (log (/ 1 x)))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(- (* -1 (log (/ 1 x))) (log (* -1 (log (/ 1 x)))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(- (+ (log -1) (* -1 (log (/ -1 x)))) (log (+ (log -1) (* -1 (log (/ -1 x))))))
(-.f64 (-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x))) (log.f64 (-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x)))))
(- (+ (log -1) (* -1 (log (/ -1 x)))) (log (+ (log -1) (* -1 (log (/ -1 x))))))
(-.f64 (-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x))) (log.f64 (-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x)))))
(- (+ (log -1) (* -1 (log (/ -1 x)))) (log (+ (log -1) (* -1 (log (/ -1 x))))))
(-.f64 (-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x))) (log.f64 (-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x)))))
(- (+ (log -1) (* -1 (log (/ -1 x)))) (log (+ (log -1) (* -1 (log (/ -1 x))))))
(-.f64 (-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x))) (log.f64 (-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x)))))
(log x)
(log.f64 x)
(log x)
(log.f64 x)
(log x)
(log.f64 x)
(log x)
(log.f64 x)
(* -1 (log (/ 1 x)))
(log.f64 x)
(* -1 (log (/ 1 x)))
(log.f64 x)
(* -1 (log (/ 1 x)))
(log.f64 x)
(* -1 (log (/ 1 x)))
(log.f64 x)
(+ (log -1) (* -1 (log (/ -1 x))))
(-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x)))
(+ (log -1) (* -1 (log (/ -1 x))))
(-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x)))
(+ (log -1) (* -1 (log (/ -1 x))))
(-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x)))
(+ (log -1) (* -1 (log (/ -1 x))))
(-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x)))
(log (log x))
(log.f64 (log.f64 x))
(log (log x))
(log.f64 (log.f64 x))
(log (log x))
(log.f64 (log.f64 x))
(log (log x))
(log.f64 (log.f64 x))
(log (* -1 (log (/ 1 x))))
(log.f64 (log.f64 x))
(log (* -1 (log (/ 1 x))))
(log.f64 (log.f64 x))
(log (* -1 (log (/ 1 x))))
(log.f64 (log.f64 x))
(log (* -1 (log (/ 1 x))))
(log.f64 (log.f64 x))
(log (+ (log -1) (* -1 (log (/ -1 x)))))
(log.f64 (-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x))))
(log (+ (log -1) (* -1 (log (/ -1 x)))))
(log.f64 (-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x))))
(log (+ (log -1) (* -1 (log (/ -1 x)))))
(log.f64 (-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x))))
(log (+ (log -1) (* -1 (log (/ -1 x)))))
(log.f64 (-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x))))

eval18.0ms (1%)

Compiler

Compiled 1698 to 257 computations (84.9% saved)

prune15.0ms (0.8%)

Pruning

2 alts after pruning (1 fresh and 1 done)

PrunedKeptTotal
New1741175
Fresh000
Picked011
Done000
Total1742176
Accuracy
100.0%
Counts
176 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.7%
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
100.0%
(log.f64 (/.f64 x (log.f64 x)))
Compiler

Compiled 13 to 8 computations (38.5% saved)

simplify4.0ms (0.2%)

Algorithm
egg-herbie
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff0
(log.f64 x)
cost-diff0
(/.f64 x (log.f64 x))
cost-diff0
(log.f64 (/.f64 x (log.f64 x)))
Rules
log-lowering-log.f64
log-lowering-log.f32
/-lowering-/.f32
/-lowering-/.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0412
0412
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(log (/ x (log x)))
(/ x (log x))
x
(log x)
Outputs
(log (/ x (log x)))
(log.f64 (/.f64 x (log.f64 x)))
(/ x (log x))
(/.f64 x (log.f64 x))
x
(log x)
(log.f64 x)

localize33.0ms (1.9%)

Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(log.f64 x)
accuracy100.0%
(log.f64 (/.f64 x (log.f64 x)))
accuracy99.6%
(/.f64 x (log.f64 x))
Results
25.0ms256×0valid
Compiler

Compiled 14 to 5 computations (64.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 9.0ms
ival-log: 6.0ms (68.9% of total)
ival-div: 2.0ms (23% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series67.0ms (3.7%)

Counts
3 → 36
Calls
Call 1
Inputs
#<alt (log (/ x (log x)))>
#<alt (/ x (log x))>
#<alt (log x)>
Outputs
#<alt (+ (log x) (log (/ 1 (log x))))>
#<alt (+ (log x) (log (/ 1 (log x))))>
#<alt (+ (log x) (log (/ 1 (log x))))>
#<alt (+ (log x) (log (/ 1 (log x))))>
#<alt (+ (log (/ -1 (log (/ 1 x)))) (* -1 (log (/ 1 x))))>
#<alt (+ (log (/ -1 (log (/ 1 x)))) (* -1 (log (/ 1 x))))>
#<alt (+ (log (/ -1 (log (/ 1 x)))) (* -1 (log (/ 1 x))))>
#<alt (+ (log (/ -1 (log (/ 1 x)))) (* -1 (log (/ 1 x))))>
#<alt (+ (log (/ -1 (+ (log -1) (* -1 (log (/ -1 x)))))) (* -1 (log (/ -1 x))))>
#<alt (+ (log (/ -1 (+ (log -1) (* -1 (log (/ -1 x)))))) (* -1 (log (/ -1 x))))>
#<alt (+ (log (/ -1 (+ (log -1) (* -1 (log (/ -1 x)))))) (* -1 (log (/ -1 x))))>
#<alt (+ (log (/ -1 (+ (log -1) (* -1 (log (/ -1 x)))))) (* -1 (log (/ -1 x))))>
#<alt (/ x (log x))>
#<alt (/ x (log x))>
#<alt (/ x (log x))>
#<alt (/ x (log x))>
#<alt (* -1 (/ x (log (/ 1 x))))>
#<alt (* -1 (/ x (log (/ 1 x))))>
#<alt (* -1 (/ x (log (/ 1 x))))>
#<alt (* -1 (/ x (log (/ 1 x))))>
#<alt (/ x (+ (log -1) (* -1 (log (/ -1 x)))))>
#<alt (/ x (+ (log -1) (* -1 (log (/ -1 x)))))>
#<alt (/ x (+ (log -1) (* -1 (log (/ -1 x)))))>
#<alt (/ x (+ (log -1) (* -1 (log (/ -1 x)))))>
#<alt (log x)>
#<alt (log x)>
#<alt (log x)>
#<alt (log x)>
#<alt (* -1 (log (/ 1 x)))>
#<alt (* -1 (log (/ 1 x)))>
#<alt (* -1 (log (/ 1 x)))>
#<alt (* -1 (log (/ 1 x)))>
#<alt (+ (log -1) (* -1 (log (/ -1 x))))>
#<alt (+ (log -1) (* -1 (log (/ -1 x))))>
#<alt (+ (log -1) (* -1 (log (/ -1 x))))>
#<alt (+ (log -1) (* -1 (log (/ -1 x))))>
Calls

9 calls:

TimeVariablePointExpression
28.0ms
x
@inf
(log (/ x (log x)))
24.0ms
x
@-inf
(log (/ x (log x)))
15.0ms
x
@0
(log (/ x (log x)))
0.0ms
x
@0
(/ x (log x))
0.0ms
x
@-inf
(/ x (log x))

rewrite119.0ms (6.6%)

Algorithm
batch-egg-rewrite
Rules
608×/-lowering-/.f32
608×/-lowering-/.f64
598×*-lowering-*.f32
598×*-lowering-*.f64
412×frac-times
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0411
11411
26311
324211
471911
0261411
Stop Event
iter limit
iter limit
node limit
Counts
3 → 130
Calls
Call 1
Inputs
(log (/ x (log x)))
(/ x (log x))
(log x)
Outputs
(log.f64 (/.f64 x (log.f64 x)))
(+.f64 (log.f64 x) (log.f64 (/.f64 #s(literal 1 binary64) (log.f64 x))))
(+.f64 (log.f64 (/.f64 x (log.f64 x))) #s(literal 0 binary64))
(+.f64 (log.f64 (/.f64 x (log.f64 x))) (fma.f64 #s(literal 1 binary64) (log.f64 x) (-.f64 #s(literal 0 binary64) (log.f64 x))))
(+.f64 (log.f64 (/.f64 x (log.f64 x))) (fma.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (log.f64 x)) (-.f64 #s(literal 0 binary64) (log.f64 x))))
(+.f64 (log.f64 (/.f64 x (log.f64 x))) (fma.f64 (log.f64 x) #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) (log.f64 x))))
(+.f64 (log.f64 (/.f64 x (log.f64 x))) (fma.f64 (-.f64 #s(literal 0 binary64) (log.f64 x)) #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (log.f64 x))))
(+.f64 (log.f64 (-.f64 #s(literal 0 binary64) x)) (log.f64 (/.f64 #s(literal -1 binary64) (log.f64 x))))
(+.f64 #s(literal 0 binary64) (log.f64 (/.f64 x (log.f64 x))))
(+.f64 (log.f64 (/.f64 #s(literal 1 binary64) (log.f64 x))) (log.f64 x))
(+.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 x (-.f64 #s(literal 0 binary64) (log.f64 x)))))
(+.f64 (log.f64 (/.f64 #s(literal -1 binary64) (log.f64 x))) (log.f64 (-.f64 #s(literal 0 binary64) x)))
(+.f64 (log.f64 (/.f64 #s(literal -1 binary64) (log.f64 x))) (*.f64 (log.f64 (/.f64 #s(literal -1 binary64) x)) #s(literal -1 binary64)))
(+.f64 (log.f64 (/.f64 #s(literal -1 binary64) (log.f64 x))) (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) x))))
(+.f64 (log.f64 (/.f64 x (-.f64 #s(literal 0 binary64) (log.f64 x)))) (log.f64 #s(literal -1 binary64)))
(+.f64 (*.f64 (log.f64 (/.f64 #s(literal -1 binary64) x)) #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) (log.f64 x))))
(+.f64 (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal -1 binary64) x))) (log.f64 (/.f64 #s(literal -1 binary64) (log.f64 x))))
(+.f64 (*.f64 (log.f64 #s(literal -1 binary64)) #s(literal -1 binary64)) (*.f64 (log.f64 (-.f64 #s(literal 0 binary64) (/.f64 (log.f64 x) x))) #s(literal -1 binary64)))
(+.f64 (-.f64 (log.f64 #s(literal -1 binary64)) #s(literal 0 binary64)) (log.f64 (/.f64 x (-.f64 #s(literal 0 binary64) (log.f64 x)))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(-.f64 (log.f64 (/.f64 x (log.f64 x))) #s(literal 0 binary64))
(-.f64 (log.f64 (log.f64 x)) (log.f64 (/.f64 (pow.f64 (log.f64 x) #s(literal 2 binary64)) x)))
(-.f64 (log.f64 (-.f64 #s(literal 0 binary64) x)) (log.f64 (-.f64 #s(literal 0 binary64) (log.f64 x))))
(-.f64 #s(literal 0 binary64) (log.f64 (/.f64 (log.f64 x) x)))
(-.f64 (log.f64 (/.f64 #s(literal 1 binary64) (log.f64 x))) (-.f64 #s(literal 0 binary64) (log.f64 x)))
(-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (-.f64 #s(literal 0 binary64) (/.f64 (log.f64 x) x))))
(-.f64 (log.f64 (/.f64 #s(literal -1 binary64) (log.f64 x))) (log.f64 (/.f64 #s(literal -1 binary64) x)))
(-.f64 (log.f64 (/.f64 x (-.f64 #s(literal 0 binary64) (log.f64 x)))) (log.f64 #s(literal -1 binary64)))
(-.f64 (log.f64 (-.f64 #s(literal 0 binary64) (*.f64 x (log.f64 x)))) (log.f64 (neg.f64 (pow.f64 (log.f64 x) #s(literal 2 binary64)))))
(-.f64 (log.f64 (*.f64 x (log.f64 x))) (log.f64 (pow.f64 (log.f64 x) #s(literal 2 binary64))))
(fma.f64 (log.f64 x) #s(literal 1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) (log.f64 x))))
(fma.f64 (log.f64 (log.f64 x)) #s(literal -1 binary64) (log.f64 x))
(fma.f64 (-.f64 #s(literal 0 binary64) (log.f64 x)) #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) (log.f64 x))))
(fma.f64 #s(literal 1 binary64) (log.f64 x) (log.f64 (/.f64 #s(literal 1 binary64) (log.f64 x))))
(fma.f64 (log.f64 (/.f64 (log.f64 x) x)) #s(literal -1 binary64) #s(literal 0 binary64))
(fma.f64 #s(literal -1 binary64) (log.f64 (log.f64 x)) (log.f64 x))
(fma.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (log.f64 x)) (log.f64 (/.f64 #s(literal 1 binary64) (log.f64 x))))
(fma.f64 #s(literal -1 binary64) (log.f64 (-.f64 #s(literal 0 binary64) (log.f64 x))) (log.f64 (-.f64 #s(literal 0 binary64) x)))
(fma.f64 #s(literal -1 binary64) (log.f64 (/.f64 (log.f64 x) x)) #s(literal 0 binary64))
(neg.f64 (log.f64 (/.f64 (log.f64 x) x)))
(*.f64 (log.f64 (/.f64 x (log.f64 x))) #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) (log.f64 (/.f64 x (log.f64 x))))
(*.f64 (log.f64 (/.f64 (log.f64 x) x)) #s(literal -1 binary64))
(*.f64 #s(literal -1 binary64) (log.f64 (/.f64 (log.f64 x) x)))
(+.f64 (/.f64 x (log.f64 x)) #s(literal 0 binary64))
(+.f64 #s(literal 0 binary64) (/.f64 x (log.f64 x)))
(exp.f64 (log.f64 (/.f64 x (log.f64 x))))
(-.f64 #s(literal 0 binary64) (/.f64 x (-.f64 #s(literal 0 binary64) (log.f64 x))))
(-.f64 (/.f64 #s(literal 0 binary64) (pow.f64 (log.f64 x) #s(literal 2 binary64))) (/.f64 x (-.f64 #s(literal 0 binary64) (log.f64 x))))
(-.f64 (/.f64 #s(literal 0 binary64) (neg.f64 (pow.f64 (log.f64 x) #s(literal 2 binary64)))) (/.f64 x (-.f64 #s(literal 0 binary64) (log.f64 x))))
(fma.f64 (/.f64 #s(literal -1 binary64) (log.f64 x)) #s(literal 0 binary64) (/.f64 x (log.f64 x)))
(neg.f64 (/.f64 x (-.f64 #s(literal 0 binary64) (log.f64 x))))
(/.f64 x (log.f64 x))
(/.f64 (log.f64 x) (/.f64 (pow.f64 (log.f64 x) #s(literal 2 binary64)) x))
(/.f64 (/.f64 x (log.f64 x)) #s(literal 1 binary64))
(/.f64 (-.f64 #s(literal 0 binary64) x) (-.f64 #s(literal 0 binary64) (log.f64 x)))
(/.f64 (-.f64 #s(literal 0 binary64) (log.f64 x)) (neg.f64 (/.f64 (pow.f64 (log.f64 x) #s(literal 2 binary64)) x)))
(/.f64 #s(literal 1 binary64) (/.f64 (log.f64 x) x))
(/.f64 #s(literal 1 binary64) (/.f64 (pow.f64 (log.f64 x) #s(literal 2 binary64)) (*.f64 x (log.f64 x))))
(/.f64 #s(literal 1 binary64) (/.f64 (neg.f64 (pow.f64 (log.f64 x) #s(literal 2 binary64))) (-.f64 #s(literal 0 binary64) (*.f64 x (log.f64 x)))))
(/.f64 #s(literal 1 binary64) (/.f64 (/.f64 (pow.f64 (log.f64 x) #s(literal 2 binary64)) x) (log.f64 x)))
(/.f64 (/.f64 #s(literal 1 binary64) (log.f64 x)) (/.f64 #s(literal 1 binary64) x))
(/.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (/.f64 (log.f64 x) x)))
(/.f64 (/.f64 #s(literal -1 binary64) (log.f64 x)) (/.f64 #s(literal -1 binary64) x))
(/.f64 (/.f64 x (-.f64 #s(literal 0 binary64) (log.f64 x))) #s(literal -1 binary64))
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 x (log.f64 x))) (neg.f64 (pow.f64 (log.f64 x) #s(literal 2 binary64))))
(/.f64 (*.f64 x (log.f64 x)) (pow.f64 (log.f64 x) #s(literal 2 binary64)))
(/.f64 (exp.f64 (log.f64 #s(literal -1 binary64))) (-.f64 #s(literal 0 binary64) (/.f64 (log.f64 x) x)))
(/.f64 (exp.f64 (log.f64 (-.f64 #s(literal 0 binary64) x))) (-.f64 #s(literal 0 binary64) (log.f64 x)))
(/.f64 (/.f64 (*.f64 x (log.f64 x)) (-.f64 #s(literal 0 binary64) (log.f64 x))) (-.f64 #s(literal 0 binary64) (log.f64 x)))
(/.f64 (/.f64 (-.f64 #s(literal 0 binary64) (*.f64 x (log.f64 x))) (-.f64 #s(literal 0 binary64) (log.f64 x))) (log.f64 x))
(/.f64 (/.f64 (log.f64 x) (-.f64 #s(literal 0 binary64) (log.f64 x))) (-.f64 #s(literal 0 binary64) (/.f64 (log.f64 x) x)))
(pow.f64 (/.f64 x (log.f64 x)) #s(literal 1 binary64))
(pow.f64 (/.f64 (log.f64 x) x) #s(literal -1 binary64))
(pow.f64 (exp.f64 #s(literal -1 binary64)) (log.f64 (/.f64 (log.f64 x) x)))
(*.f64 x (/.f64 #s(literal 1 binary64) (log.f64 x)))
(*.f64 (log.f64 x) (/.f64 #s(literal 1 binary64) (/.f64 (pow.f64 (log.f64 x) #s(literal 2 binary64)) x)))
(*.f64 (/.f64 x (log.f64 x)) #s(literal 1 binary64))
(*.f64 (-.f64 #s(literal 0 binary64) x) (/.f64 #s(literal -1 binary64) (log.f64 x)))
(*.f64 (-.f64 #s(literal 0 binary64) x) (pow.f64 (/.f64 #s(literal -1 binary64) (log.f64 x)) #s(literal 1 binary64)))
(*.f64 #s(literal 1 binary64) (/.f64 x (log.f64 x)))
(*.f64 (/.f64 #s(literal 1 binary64) (log.f64 x)) x)
(*.f64 (/.f64 #s(literal 1 binary64) x) (/.f64 x (/.f64 (log.f64 x) x)))
(*.f64 #s(literal -1 binary64) (/.f64 x (-.f64 #s(literal 0 binary64) (log.f64 x))))
(*.f64 (/.f64 #s(literal -1 binary64) (log.f64 x)) (-.f64 #s(literal 0 binary64) x))
(*.f64 (/.f64 #s(literal -1 binary64) (log.f64 x)) (exp.f64 (log.f64 (-.f64 #s(literal 0 binary64) x))))
(*.f64 (/.f64 x (-.f64 #s(literal 0 binary64) (log.f64 x))) #s(literal -1 binary64))
(*.f64 (/.f64 #s(literal -1 binary64) x) (*.f64 x (/.f64 x (-.f64 #s(literal 0 binary64) (log.f64 x)))))
(*.f64 (-.f64 #s(literal 0 binary64) (*.f64 x (log.f64 x))) (/.f64 #s(literal 1 binary64) (neg.f64 (pow.f64 (log.f64 x) #s(literal 2 binary64)))))
(*.f64 (*.f64 x (log.f64 x)) (/.f64 #s(literal 1 binary64) (pow.f64 (log.f64 x) #s(literal 2 binary64))))
(*.f64 (pow.f64 (/.f64 #s(literal -1 binary64) (log.f64 x)) #s(literal 1 binary64)) (-.f64 #s(literal 0 binary64) x))
(*.f64 (exp.f64 (log.f64 #s(literal -1 binary64))) (/.f64 x (-.f64 #s(literal 0 binary64) (log.f64 x))))
(*.f64 (exp.f64 (log.f64 (-.f64 #s(literal 0 binary64) x))) (/.f64 #s(literal -1 binary64) (log.f64 x)))
(*.f64 (/.f64 #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) (*.f64 x (log.f64 x)))) (/.f64 x (/.f64 #s(literal -1 binary64) x)))
(*.f64 (/.f64 #s(literal 1 binary64) (*.f64 x (log.f64 x))) (*.f64 x x))
(log.f64 x)
(+.f64 (log.f64 x) #s(literal 0 binary64))
(+.f64 (log.f64 x) (fma.f64 #s(literal 1 binary64) (log.f64 x) (-.f64 #s(literal 0 binary64) (log.f64 x))))
(+.f64 (log.f64 x) (fma.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (log.f64 x)) (-.f64 #s(literal 0 binary64) (log.f64 x))))
(+.f64 (log.f64 x) (fma.f64 (log.f64 x) #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) (log.f64 x))))
(+.f64 (log.f64 x) (fma.f64 (-.f64 #s(literal 0 binary64) (log.f64 x)) #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (log.f64 x))))
(+.f64 (log.f64 (-.f64 #s(literal 0 binary64) x)) (log.f64 #s(literal -1 binary64)))
(+.f64 #s(literal 0 binary64) (log.f64 x))
(+.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (-.f64 #s(literal 0 binary64) x)))
(+.f64 (*.f64 #s(literal 1 binary64) (log.f64 #s(literal -1 binary64))) (*.f64 #s(literal 1 binary64) (log.f64 (-.f64 #s(literal 0 binary64) x))))
(+.f64 (*.f64 (log.f64 #s(literal -1 binary64)) #s(literal 1 binary64)) (*.f64 (log.f64 (-.f64 #s(literal 0 binary64) x)) #s(literal 1 binary64)))
(exp.f64 (log.f64 (log.f64 x)))
(-.f64 (log.f64 x) #s(literal 0 binary64))
(-.f64 (log.f64 (-.f64 #s(literal 0 binary64) x)) (log.f64 #s(literal -1 binary64)))
(-.f64 #s(literal 0 binary64) (-.f64 #s(literal 0 binary64) (log.f64 x)))
(-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x)))
(-.f64 (/.f64 (log.f64 #s(literal -1 binary64)) #s(literal -1 binary64)) (/.f64 (log.f64 (-.f64 #s(literal 0 binary64) x)) #s(literal -1 binary64)))
(fma.f64 (log.f64 x) #s(literal 1 binary64) #s(literal 0 binary64))
(fma.f64 (-.f64 #s(literal 0 binary64) (log.f64 x)) #s(literal -1 binary64) #s(literal 0 binary64))
(fma.f64 #s(literal 1 binary64) (log.f64 x) #s(literal 0 binary64))
(fma.f64 #s(literal 0 binary64) (-.f64 #s(literal 0 binary64) (/.f64 (log.f64 x) x)) (log.f64 x))
(fma.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (log.f64 x)) #s(literal 0 binary64))
(neg.f64 (-.f64 #s(literal 0 binary64) (log.f64 x)))
(/.f64 (log.f64 x) #s(literal 1 binary64))
(/.f64 (-.f64 #s(literal 0 binary64) (log.f64 x)) #s(literal -1 binary64))
(/.f64 (-.f64 #s(literal 0 binary64) (log.f64 x)) (exp.f64 (log.f64 #s(literal -1 binary64))))
(/.f64 #s(literal 1 binary64) (/.f64 #s(literal 1 binary64) (log.f64 x)))
(/.f64 #s(literal -1 binary64) (/.f64 #s(literal -1 binary64) (log.f64 x)))
(pow.f64 (log.f64 x) #s(literal 1 binary64))
(pow.f64 (/.f64 #s(literal 1 binary64) (log.f64 x)) #s(literal -1 binary64))
(*.f64 (log.f64 x) #s(literal 1 binary64))
(*.f64 (-.f64 #s(literal 0 binary64) (log.f64 x)) #s(literal -1 binary64))
(*.f64 #s(literal 1 binary64) (log.f64 x))
(*.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (log.f64 x)))
(*.f64 (exp.f64 (log.f64 #s(literal -1 binary64))) (-.f64 #s(literal 0 binary64) (log.f64 x)))

simplify74.0ms (4.1%)

Algorithm
egg-herbie
Rules
544×fnmadd-define
444×sum3-define
384×fma-lowering-fma.f32
384×fma-lowering-fma.f64
356×fnmsub-define
Iterations

Useful iterations: 7 (0.0ms)

IterNodesCost
025244
144220
273220
3169220
4395220
5694220
61086204
71574200
81958200
92096200
102137200
112145200
02145200
Stop Event
iter limit
saturated
Counts
36 → 36
Calls
Call 1
Inputs
(+ (log x) (log (/ 1 (log x))))
(+ (log x) (log (/ 1 (log x))))
(+ (log x) (log (/ 1 (log x))))
(+ (log x) (log (/ 1 (log x))))
(+ (log (/ -1 (log (/ 1 x)))) (* -1 (log (/ 1 x))))
(+ (log (/ -1 (log (/ 1 x)))) (* -1 (log (/ 1 x))))
(+ (log (/ -1 (log (/ 1 x)))) (* -1 (log (/ 1 x))))
(+ (log (/ -1 (log (/ 1 x)))) (* -1 (log (/ 1 x))))
(+ (log (/ -1 (+ (log -1) (* -1 (log (/ -1 x)))))) (* -1 (log (/ -1 x))))
(+ (log (/ -1 (+ (log -1) (* -1 (log (/ -1 x)))))) (* -1 (log (/ -1 x))))
(+ (log (/ -1 (+ (log -1) (* -1 (log (/ -1 x)))))) (* -1 (log (/ -1 x))))
(+ (log (/ -1 (+ (log -1) (* -1 (log (/ -1 x)))))) (* -1 (log (/ -1 x))))
(/ x (log x))
(/ x (log x))
(/ x (log x))
(/ x (log x))
(* -1 (/ x (log (/ 1 x))))
(* -1 (/ x (log (/ 1 x))))
(* -1 (/ x (log (/ 1 x))))
(* -1 (/ x (log (/ 1 x))))
(/ x (+ (log -1) (* -1 (log (/ -1 x)))))
(/ x (+ (log -1) (* -1 (log (/ -1 x)))))
(/ x (+ (log -1) (* -1 (log (/ -1 x)))))
(/ x (+ (log -1) (* -1 (log (/ -1 x)))))
(log x)
(log x)
(log x)
(log x)
(* -1 (log (/ 1 x)))
(* -1 (log (/ 1 x)))
(* -1 (log (/ 1 x)))
(* -1 (log (/ 1 x)))
(+ (log -1) (* -1 (log (/ -1 x))))
(+ (log -1) (* -1 (log (/ -1 x))))
(+ (log -1) (* -1 (log (/ -1 x))))
(+ (log -1) (* -1 (log (/ -1 x))))
Outputs
(+ (log x) (log (/ 1 (log x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(+ (log x) (log (/ 1 (log x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(+ (log x) (log (/ 1 (log x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(+ (log x) (log (/ 1 (log x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(+ (log (/ -1 (log (/ 1 x)))) (* -1 (log (/ 1 x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(+ (log (/ -1 (log (/ 1 x)))) (* -1 (log (/ 1 x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(+ (log (/ -1 (log (/ 1 x)))) (* -1 (log (/ 1 x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(+ (log (/ -1 (log (/ 1 x)))) (* -1 (log (/ 1 x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(+ (log (/ -1 (+ (log -1) (* -1 (log (/ -1 x)))))) (* -1 (log (/ -1 x))))
(-.f64 (log.f64 (-.f64 #s(literal 0 binary64) x)) (log.f64 (-.f64 (log.f64 (/.f64 #s(literal -1 binary64) x)) (log.f64 #s(literal -1 binary64)))))
(+ (log (/ -1 (+ (log -1) (* -1 (log (/ -1 x)))))) (* -1 (log (/ -1 x))))
(-.f64 (log.f64 (-.f64 #s(literal 0 binary64) x)) (log.f64 (-.f64 (log.f64 (/.f64 #s(literal -1 binary64) x)) (log.f64 #s(literal -1 binary64)))))
(+ (log (/ -1 (+ (log -1) (* -1 (log (/ -1 x)))))) (* -1 (log (/ -1 x))))
(-.f64 (log.f64 (-.f64 #s(literal 0 binary64) x)) (log.f64 (-.f64 (log.f64 (/.f64 #s(literal -1 binary64) x)) (log.f64 #s(literal -1 binary64)))))
(+ (log (/ -1 (+ (log -1) (* -1 (log (/ -1 x)))))) (* -1 (log (/ -1 x))))
(-.f64 (log.f64 (-.f64 #s(literal 0 binary64) x)) (log.f64 (-.f64 (log.f64 (/.f64 #s(literal -1 binary64) x)) (log.f64 #s(literal -1 binary64)))))
(/ x (log x))
(/.f64 x (log.f64 x))
(/ x (log x))
(/.f64 x (log.f64 x))
(/ x (log x))
(/.f64 x (log.f64 x))
(/ x (log x))
(/.f64 x (log.f64 x))
(* -1 (/ x (log (/ 1 x))))
(/.f64 x (log.f64 x))
(* -1 (/ x (log (/ 1 x))))
(/.f64 x (log.f64 x))
(* -1 (/ x (log (/ 1 x))))
(/.f64 x (log.f64 x))
(* -1 (/ x (log (/ 1 x))))
(/.f64 x (log.f64 x))
(/ x (+ (log -1) (* -1 (log (/ -1 x)))))
(/.f64 x (-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x))))
(/ x (+ (log -1) (* -1 (log (/ -1 x)))))
(/.f64 x (-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x))))
(/ x (+ (log -1) (* -1 (log (/ -1 x)))))
(/.f64 x (-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x))))
(/ x (+ (log -1) (* -1 (log (/ -1 x)))))
(/.f64 x (-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x))))
(log x)
(log.f64 x)
(log x)
(log.f64 x)
(log x)
(log.f64 x)
(log x)
(log.f64 x)
(* -1 (log (/ 1 x)))
(log.f64 x)
(* -1 (log (/ 1 x)))
(log.f64 x)
(* -1 (log (/ 1 x)))
(log.f64 x)
(* -1 (log (/ 1 x)))
(log.f64 x)
(+ (log -1) (* -1 (log (/ -1 x))))
(-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x)))
(+ (log -1) (* -1 (log (/ -1 x))))
(-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x)))
(+ (log -1) (* -1 (log (/ -1 x))))
(-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x)))
(+ (log -1) (* -1 (log (/ -1 x))))
(-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) x)))

eval18.0ms (1%)

Compiler

Compiled 1561 to 322 computations (79.4% saved)

prune17.0ms (0.9%)

Pruning

2 alts after pruning (0 fresh and 2 done)

PrunedKeptTotal
New1660166
Fresh000
Picked011
Done011
Total1662168
Accuracy
100.0%
Counts
168 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.7%
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
100.0%
(log.f64 (/.f64 x (log.f64 x)))
Compiler

Compiled 25 to 14 computations (44% saved)

regimes5.0ms (0.3%)

Accuracy

Total -0.2b remaining (-5300%)

Threshold costs -0.2b (-5300%)

Counts
2 → 1
Calls
Call 1
Inputs
(log.f64 (/.f64 x (log.f64 x)))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
Outputs
(log.f64 (/.f64 x (log.f64 x)))
Calls

3 calls:

1.0ms
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
1.0ms
(log.f64 x)
1.0ms
x
Results
AccuracySegmentsBranch
100.0%1x
100.0%1(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
100.0%1(log.f64 x)
Compiler

Compiled 12 to 7 computations (41.7% saved)

simplify7.0ms (0.4%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
045
Stop Event
saturated
Calls
Call 1
Inputs
(log.f64 (/.f64 x (log.f64 x)))
Outputs
(log.f64 (/.f64 x (log.f64 x)))

soundness166.0ms (9.3%)

Rules
600×/-lowering-/.f32
600×/-lowering-/.f64
596×*-lowering-*.f32
596×*-lowering-*.f64
412×frac-times
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0410
1810
22210
37310
425010
575810
0275210
Stop Event
done
iter limit
iter limit
node limit
Compiler

Compiled 12 to 8 computations (33.3% saved)

preprocess24.0ms (1.3%)

Compiler

Compiled 26 to 16 computations (38.5% saved)

end0.0ms (0%)

Profiling

Loading profile data...