ln(1 + x)

Time bar (total: 2.3s)

analyze3.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%100%0%0%0%0%2
33.3%25%50%0%0%25%0%3
66.7%50%25%0%0%25%0%4
83.3%62.5%12.5%0%0%25%0%5
91.7%68.7%6.2%0%0%25%0%6
95.8%71.8%3.1%0%0%25%0%7
97.9%73.4%1.6%0%0%25%0%8
99%74.2%0.8%0%0%25%0%9
99.5%74.6%0.4%0%0%25%0%10
99.7%74.8%0.2%0%0%25%0%11
99.9%74.9%0.1%0%0%25%0%12
Compiler

Compiled 6 to 5 computations (16.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 1.0ms
Operation ival-log, time spent: 1.0ms, 89.0% of total-time
Operation ival-add, time spent: 0.0ms, 0.0% of total-time
Operation const, time spent: 0.0ms, 0.0% of total-time

sample1.5s (64.4%)

Results
828.0ms4264×1valid
502.0ms3991×0valid
0.0ms1valid
0.0ms0invalid
Precisions
Click to see histograms. Total time spent on operations: 748.0ms
Operation ival-add, time spent: 374.0ms, 50.0% of total-time
Operation ival-log, time spent: 346.0ms, 46.0% of total-time
Operation const, time spent: 28.0ms, 4.0% of total-time
Bogosity

preprocess148.0ms (6.5%)

Algorithm
egg-herbie
Rules
104×fma-def
42×sub-neg
22×cancel-sign-sub-inv
20×associate-+l-
18×distribute-lft-neg-in
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
490-0-(log.f64 (+.f64 1 x))
00-0-x
00-0-(+.f64 1 x)
00-0-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01344
12844
23744
34644
46044
57744
611044
714544
816344
918644
1020044
1123544
1225044
1325544
1425644
Stop Event
saturated
Calls
Call 1
Inputs
(log.f64 (+.f64 1 x))
(log.f64 (+.f64 1 x))
(log.f64 (+.f64 1 (neg.f64 x)))
(neg.f64 (log.f64 (+.f64 1 (neg.f64 x))))
Outputs
(log.f64 (+.f64 1 x))
(log1p.f64 x)
(log.f64 (+.f64 1 x))
(log1p.f64 x)
(log.f64 (+.f64 1 (neg.f64 x)))
(log1p.f64 (neg.f64 x))
(neg.f64 (log.f64 (+.f64 1 (neg.f64 x))))
(neg.f64 (log1p.f64 (neg.f64 x)))
Compiler

Compiled 27 to 20 computations (25.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 55.0ms
Operation ival-add, time spent: 28.0ms, 51.0% of total-time
Operation ival-log, time spent: 23.0ms, 42.0% of total-time
Operation const, time spent: 3.0ms, 6.0% of total-time

eval0.0ms (0%)

Compiler

Compiled 3 to 2 computations (33.3% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
48.1%
(log1p.f64 x)
86.8%
(log.f64 (+.f64 1 x))
Compiler

Compiled 8 to 6 computations (25% saved)

localize130.0ms (5.7%)

Localize:

Found 1 expressions with local error:

NewAccuracyProgram
82.7%
(log.f64 (+.f64 1 x))
Compiler

Compiled 14 to 9 computations (35.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 105.0ms
Operation ival-add, time spent: 74.0ms, 71.0% of total-time
Operation ival-log, time spent: 23.0ms, 22.0% of total-time
Operation ival-log1p, time spent: 6.0ms, 6.0% of total-time
Operation const, time spent: 2.0ms, 2.0% of total-time

series1.0ms (0.1%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@-inf
(log.f64 (+.f64 1 x))
0.0ms
x
@0
(log.f64 (+.f64 1 x))
0.0ms
x
@inf
(log.f64 (+.f64 1 x))

rewrite176.0ms (7.8%)

Algorithm
batch-egg-rewrite
Rules
928×frac-times
402×unpow-prod-down
315×log1p-expm1-u
314×expm1-log1p-u
297×add-exp-log
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
098
1788
28698
Stop Event
node limit
Counts
1 → 52
Calls
Call 1
Inputs
(log.f64 (+.f64 1 x))
Outputs
(+.f64 (log1p.f64 x) 0)
(+.f64 0 (log1p.f64 x))
(+.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (/.f64 1 (fma.f64 x (-.f64 x 1) 1))))
(+.f64 (*.f64 2 (*.f64 1/3 (log1p.f64 x))) (*.f64 1/3 (log1p.f64 x)))
(+.f64 (*.f64 1/3 (log1p.f64 x)) (*.f64 2 (*.f64 1/3 (log1p.f64 x))))
(+.f64 (*.f64 1/2 (log1p.f64 x)) (*.f64 1/2 (log1p.f64 x)))
(+.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (log.f64 (/.f64 1 (-.f64 1 x))))
(-.f64 0 (log.f64 (/.f64 (fma.f64 x (-.f64 x 1) 1) (+.f64 1 (pow.f64 x 3)))))
(-.f64 0 (log.f64 (/.f64 (-.f64 1 x) (-.f64 1 (pow.f64 x 2)))))
(-.f64 (+.f64 1 (log1p.f64 x)) 1)
(-.f64 (log1p.f64 (pow.f64 x 3)) (log1p.f64 (*.f64 x (-.f64 x 1))))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (fma.f64 x x (-.f64 1 x))))
(-.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (log1p.f64 (neg.f64 x)))
(-.f64 (log.f64 (neg.f64 (+.f64 1 (pow.f64 x 3)))) (log.f64 (neg.f64 (fma.f64 x (-.f64 x 1) 1))))
(-.f64 (log.f64 (neg.f64 (-.f64 1 (pow.f64 x 2)))) (log.f64 (neg.f64 (-.f64 1 x))))
(-.f64 (log.f64 (fma.f64 x x -1)) (log.f64 (-.f64 x 1)))
(*.f64 1 (log1p.f64 x))
(*.f64 (log1p.f64 x) 1)
(*.f64 (log1p.f64 x) (log.f64 (E.f64)))
(*.f64 (cbrt.f64 (log1p.f64 x)) (pow.f64 (cbrt.f64 (log1p.f64 x)) 2))
(*.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 2) (cbrt.f64 (log1p.f64 x)))
(*.f64 (sqrt.f64 (log1p.f64 x)) (sqrt.f64 (log1p.f64 x)))
(*.f64 3 (*.f64 1/3 (log1p.f64 x)))
(*.f64 2 (*.f64 1/2 (log1p.f64 x)))
(*.f64 1/3 (*.f64 3 (log1p.f64 x)))
(*.f64 (pow.f64 (log1p.f64 x) 1/4) (sqrt.f64 (pow.f64 (log1p.f64 x) 3/2)))
(*.f64 (pow.f64 1 1/3) (log1p.f64 x))
(*.f64 (pow.f64 (pow.f64 (*.f64 (log1p.f64 x) (cbrt.f64 (log1p.f64 x))) 2) 1/3) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (pow.f64 (pow.f64 (log1p.f64 x) 5/2) 1/3) (pow.f64 (log1p.f64 x) 1/6))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 (log1p.f64 x) (cbrt.f64 (log1p.f64 x))) 2)) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (cbrt.f64 (pow.f64 (log1p.f64 x) 5/2)) (pow.f64 (log1p.f64 x) 1/6))
(*.f64 (sqrt.f64 (pow.f64 (log1p.f64 x) 3/2)) (pow.f64 (log1p.f64 x) 1/4))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 5)) (pow.f64 (log1p.f64 x) 1/6))
(pow.f64 (log1p.f64 x) 1)
(pow.f64 (cbrt.f64 (log1p.f64 x)) 3)
(pow.f64 (pow.f64 (log1p.f64 x) 2) 1/2)
(pow.f64 (pow.f64 (log1p.f64 x) 3) 1/3)
(pow.f64 (sqrt.f64 (log1p.f64 x)) 2)
(pow.f64 (E.f64) (log.f64 (log1p.f64 x)))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (log1p.f64 x))) 2)) (cbrt.f64 (log.f64 (log1p.f64 x))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (log1p.f64 x)))) (sqrt.f64 (log.f64 (log1p.f64 x))))
(neg.f64 (log.f64 (/.f64 (fma.f64 x (-.f64 x 1) 1) (+.f64 1 (pow.f64 x 3)))))
(neg.f64 (log.f64 (/.f64 (-.f64 1 x) (-.f64 1 (pow.f64 x 2)))))
(sqrt.f64 (pow.f64 (log1p.f64 x) 2))
(fabs.f64 (log1p.f64 x))
(cbrt.f64 (pow.f64 (log1p.f64 x) 3))
(expm1.f64 (log1p.f64 (log1p.f64 x)))
(exp.f64 (log.f64 (log1p.f64 x)))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (log1p.f64 x))) 3))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (log1p.f64 x))) 1/3))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (log1p.f64 x))) 2))
(log1p.f64 x)

simplify75.0ms (3.3%)

Algorithm
egg-herbie
Rules
1350×log-prod
806×fma-neg
774×cube-prod
686×associate-+l+
670×associate-+r+
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01821703
14251583
215581547
358801547
Stop Event
node limit
Counts
64 → 104
Calls
Call 1
Inputs
x
(+.f64 x (*.f64 -1/2 (pow.f64 x 2)))
(+.f64 x (+.f64 (*.f64 -1/2 (pow.f64 x 2)) (*.f64 1/3 (pow.f64 x 3))))
(+.f64 x (+.f64 (*.f64 -1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/4 (pow.f64 x 4)) (*.f64 1/3 (pow.f64 x 3)))))
(*.f64 -1 (log.f64 (/.f64 1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (/.f64 1 x))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (/.f64 1 x)) (*.f64 1/2 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (+.f64 (*.f64 1/3 (/.f64 1 (pow.f64 x 3))) (/.f64 1 x))) (*.f64 1/2 (/.f64 1 (pow.f64 x 2))))
(+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 x))))
(+.f64 (log.f64 -1) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (/.f64 1 x)))
(-.f64 (+.f64 (log.f64 -1) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (/.f64 1 x))) (*.f64 1/2 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 (log.f64 -1) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (*.f64 1/3 (/.f64 1 (pow.f64 x 3))) (/.f64 1 x)))) (*.f64 1/2 (/.f64 1 (pow.f64 x 2))))
(+.f64 (log1p.f64 x) 0)
(+.f64 0 (log1p.f64 x))
(+.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (/.f64 1 (fma.f64 x (-.f64 x 1) 1))))
(+.f64 (*.f64 2 (*.f64 1/3 (log1p.f64 x))) (*.f64 1/3 (log1p.f64 x)))
(+.f64 (*.f64 1/3 (log1p.f64 x)) (*.f64 2 (*.f64 1/3 (log1p.f64 x))))
(+.f64 (*.f64 1/2 (log1p.f64 x)) (*.f64 1/2 (log1p.f64 x)))
(+.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (log.f64 (/.f64 1 (-.f64 1 x))))
(-.f64 0 (log.f64 (/.f64 (fma.f64 x (-.f64 x 1) 1) (+.f64 1 (pow.f64 x 3)))))
(-.f64 0 (log.f64 (/.f64 (-.f64 1 x) (-.f64 1 (pow.f64 x 2)))))
(-.f64 (+.f64 1 (log1p.f64 x)) 1)
(-.f64 (log1p.f64 (pow.f64 x 3)) (log1p.f64 (*.f64 x (-.f64 x 1))))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (fma.f64 x x (-.f64 1 x))))
(-.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (log1p.f64 (neg.f64 x)))
(-.f64 (log.f64 (neg.f64 (+.f64 1 (pow.f64 x 3)))) (log.f64 (neg.f64 (fma.f64 x (-.f64 x 1) 1))))
(-.f64 (log.f64 (neg.f64 (-.f64 1 (pow.f64 x 2)))) (log.f64 (neg.f64 (-.f64 1 x))))
(-.f64 (log.f64 (fma.f64 x x -1)) (log.f64 (-.f64 x 1)))
(*.f64 1 (log1p.f64 x))
(*.f64 (log1p.f64 x) 1)
(*.f64 (log1p.f64 x) (log.f64 (E.f64)))
(*.f64 (cbrt.f64 (log1p.f64 x)) (pow.f64 (cbrt.f64 (log1p.f64 x)) 2))
(*.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 2) (cbrt.f64 (log1p.f64 x)))
(*.f64 (sqrt.f64 (log1p.f64 x)) (sqrt.f64 (log1p.f64 x)))
(*.f64 3 (*.f64 1/3 (log1p.f64 x)))
(*.f64 2 (*.f64 1/2 (log1p.f64 x)))
(*.f64 1/3 (*.f64 3 (log1p.f64 x)))
(*.f64 (pow.f64 (log1p.f64 x) 1/4) (sqrt.f64 (pow.f64 (log1p.f64 x) 3/2)))
(*.f64 (pow.f64 1 1/3) (log1p.f64 x))
(*.f64 (pow.f64 (pow.f64 (*.f64 (log1p.f64 x) (cbrt.f64 (log1p.f64 x))) 2) 1/3) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (pow.f64 (pow.f64 (log1p.f64 x) 5/2) 1/3) (pow.f64 (log1p.f64 x) 1/6))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 (log1p.f64 x) (cbrt.f64 (log1p.f64 x))) 2)) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (cbrt.f64 (pow.f64 (log1p.f64 x) 5/2)) (pow.f64 (log1p.f64 x) 1/6))
(*.f64 (sqrt.f64 (pow.f64 (log1p.f64 x) 3/2)) (pow.f64 (log1p.f64 x) 1/4))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 5)) (pow.f64 (log1p.f64 x) 1/6))
(pow.f64 (log1p.f64 x) 1)
(pow.f64 (cbrt.f64 (log1p.f64 x)) 3)
(pow.f64 (pow.f64 (log1p.f64 x) 2) 1/2)
(pow.f64 (pow.f64 (log1p.f64 x) 3) 1/3)
(pow.f64 (sqrt.f64 (log1p.f64 x)) 2)
(pow.f64 (E.f64) (log.f64 (log1p.f64 x)))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (log1p.f64 x))) 2)) (cbrt.f64 (log.f64 (log1p.f64 x))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (log1p.f64 x)))) (sqrt.f64 (log.f64 (log1p.f64 x))))
(neg.f64 (log.f64 (/.f64 (fma.f64 x (-.f64 x 1) 1) (+.f64 1 (pow.f64 x 3)))))
(neg.f64 (log.f64 (/.f64 (-.f64 1 x) (-.f64 1 (pow.f64 x 2)))))
(sqrt.f64 (pow.f64 (log1p.f64 x) 2))
(fabs.f64 (log1p.f64 x))
(cbrt.f64 (pow.f64 (log1p.f64 x) 3))
(expm1.f64 (log1p.f64 (log1p.f64 x)))
(exp.f64 (log.f64 (log1p.f64 x)))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (log1p.f64 x))) 3))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (log1p.f64 x))) 1/3))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (log1p.f64 x))) 2))
(log1p.f64 x)
Outputs
x
(+.f64 x (*.f64 -1/2 (pow.f64 x 2)))
(fma.f64 -1/2 (pow.f64 x 2) x)
(+.f64 x (+.f64 (*.f64 -1/2 (pow.f64 x 2)) (*.f64 1/3 (pow.f64 x 3))))
(+.f64 x (fma.f64 -1/2 (pow.f64 x 2) (*.f64 1/3 (pow.f64 x 3))))
(+.f64 (fma.f64 -1/2 (pow.f64 x 2) x) (*.f64 1/3 (pow.f64 x 3)))
(+.f64 x (*.f64 (pow.f64 x 2) (+.f64 -1/2 (*.f64 x 1/3))))
(+.f64 x (+.f64 (*.f64 -1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/4 (pow.f64 x 4)) (*.f64 1/3 (pow.f64 x 3)))))
(+.f64 x (fma.f64 -1/2 (pow.f64 x 2) (fma.f64 -1/4 (pow.f64 x 4) (*.f64 1/3 (pow.f64 x 3)))))
(+.f64 (fma.f64 -1/2 (pow.f64 x 2) x) (fma.f64 1/3 (pow.f64 x 3) (*.f64 -1/4 (pow.f64 x 4))))
(*.f64 -1 (log.f64 (/.f64 1 x)))
(neg.f64 (neg.f64 (log.f64 x)))
(log.f64 x)
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (/.f64 1 x))
(fma.f64 -1 (neg.f64 (log.f64 x)) (/.f64 1 x))
(+.f64 (/.f64 1 x) (log.f64 x))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (/.f64 1 x)) (*.f64 1/2 (/.f64 1 (pow.f64 x 2))))
(-.f64 (fma.f64 -1 (neg.f64 (log.f64 x)) (/.f64 1 x)) (/.f64 1/2 (pow.f64 x 2)))
(+.f64 (/.f64 1 x) (-.f64 (log.f64 x) (/.f64 1/2 (pow.f64 x 2))))
(+.f64 (log.f64 x) (+.f64 (/.f64 1 x) (/.f64 -1/2 (pow.f64 x 2))))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (+.f64 (*.f64 1/3 (/.f64 1 (pow.f64 x 3))) (/.f64 1 x))) (*.f64 1/2 (/.f64 1 (pow.f64 x 2))))
(-.f64 (fma.f64 -1 (neg.f64 (log.f64 x)) (+.f64 (/.f64 1 x) (/.f64 1/3 (pow.f64 x 3)))) (/.f64 1/2 (pow.f64 x 2)))
(+.f64 (log.f64 x) (+.f64 (/.f64 1 x) (-.f64 (/.f64 1/3 (pow.f64 x 3)) (/.f64 1/2 (pow.f64 x 2)))))
(+.f64 (/.f64 1 x) (-.f64 (+.f64 (log.f64 x) (/.f64 1/3 (pow.f64 x 3))) (/.f64 1/2 (pow.f64 x 2))))
(+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 x))))
(+.f64 (log.f64 -1) (neg.f64 (log.f64 (/.f64 -1 x))))
(-.f64 (log.f64 -1) (log.f64 (/.f64 -1 x)))
(+.f64 (log.f64 -1) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (/.f64 1 x)))
(+.f64 (log.f64 -1) (fma.f64 -1 (log.f64 (/.f64 -1 x)) (/.f64 1 x)))
(+.f64 (/.f64 1 x) (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 x))))
(-.f64 (+.f64 (log.f64 -1) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (/.f64 1 x))) (*.f64 1/2 (/.f64 1 (pow.f64 x 2))))
(+.f64 (log.f64 -1) (-.f64 (fma.f64 -1 (log.f64 (/.f64 -1 x)) (/.f64 1 x)) (/.f64 1/2 (pow.f64 x 2))))
(+.f64 (log.f64 -1) (+.f64 (-.f64 (/.f64 1 x) (log.f64 (/.f64 -1 x))) (/.f64 -1/2 (pow.f64 x 2))))
(+.f64 (/.f64 1 x) (+.f64 (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 x))) (/.f64 -1/2 (pow.f64 x 2))))
(-.f64 (+.f64 (log.f64 -1) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (*.f64 1/3 (/.f64 1 (pow.f64 x 3))) (/.f64 1 x)))) (*.f64 1/2 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 (log.f64 -1) (fma.f64 -1 (log.f64 (/.f64 -1 x)) (+.f64 (/.f64 1 x) (/.f64 1/3 (pow.f64 x 3))))) (/.f64 1/2 (pow.f64 x 2)))
(+.f64 (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 x))) (+.f64 (/.f64 1 x) (-.f64 (/.f64 1/3 (pow.f64 x 3)) (/.f64 1/2 (pow.f64 x 2)))))
(+.f64 (+.f64 (/.f64 1 x) (/.f64 1/3 (pow.f64 x 3))) (+.f64 (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 x))) (/.f64 -1/2 (pow.f64 x 2))))
(+.f64 (log1p.f64 x) 0)
(log1p.f64 x)
(+.f64 0 (log1p.f64 x))
(log1p.f64 x)
(+.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (/.f64 1 (fma.f64 x (-.f64 x 1) 1))))
(+.f64 (log1p.f64 (pow.f64 x 3)) (neg.f64 (log.f64 (fma.f64 x (+.f64 x -1) 1))))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (fma.f64 x (+.f64 x -1) 1)))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log1p.f64 (-.f64 (pow.f64 x 2) x)))
(+.f64 (*.f64 2 (*.f64 1/3 (log1p.f64 x))) (*.f64 1/3 (log1p.f64 x)))
(log1p.f64 x)
(+.f64 (*.f64 1/3 (log1p.f64 x)) (*.f64 2 (*.f64 1/3 (log1p.f64 x))))
(log1p.f64 x)
(+.f64 (*.f64 1/2 (log1p.f64 x)) (*.f64 1/2 (log1p.f64 x)))
(log1p.f64 x)
(+.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (log.f64 (/.f64 1 (-.f64 1 x))))
(+.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (neg.f64 (log.f64 (-.f64 1 x))))
(-.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (log1p.f64 (neg.f64 x)))
(-.f64 0 (log.f64 (/.f64 (fma.f64 x (-.f64 x 1) 1) (+.f64 1 (pow.f64 x 3)))))
(+.f64 (log1p.f64 (pow.f64 x 3)) (neg.f64 (log.f64 (fma.f64 x (+.f64 x -1) 1))))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (fma.f64 x (+.f64 x -1) 1)))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log1p.f64 (-.f64 (pow.f64 x 2) x)))
(-.f64 0 (log.f64 (/.f64 (-.f64 1 x) (-.f64 1 (pow.f64 x 2)))))
(+.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (neg.f64 (log.f64 (-.f64 1 x))))
(-.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (log1p.f64 (neg.f64 x)))
(-.f64 (+.f64 1 (log1p.f64 x)) 1)
(log1p.f64 x)
(-.f64 (log1p.f64 (pow.f64 x 3)) (log1p.f64 (*.f64 x (-.f64 x 1))))
(+.f64 (log1p.f64 (pow.f64 x 3)) (neg.f64 (log.f64 (fma.f64 x (+.f64 x -1) 1))))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (fma.f64 x (+.f64 x -1) 1)))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log1p.f64 (-.f64 (pow.f64 x 2) x)))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (fma.f64 x x (-.f64 1 x))))
(+.f64 (log1p.f64 (pow.f64 x 3)) (neg.f64 (log.f64 (fma.f64 x (+.f64 x -1) 1))))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (fma.f64 x (+.f64 x -1) 1)))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log1p.f64 (-.f64 (pow.f64 x 2) x)))
(-.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (log1p.f64 (neg.f64 x)))
(+.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (neg.f64 (log.f64 (-.f64 1 x))))
(-.f64 (log.f64 (neg.f64 (+.f64 1 (pow.f64 x 3)))) (log.f64 (neg.f64 (fma.f64 x (-.f64 x 1) 1))))
(-.f64 (log.f64 (+.f64 -1 (neg.f64 (pow.f64 x 3)))) (log.f64 (neg.f64 (fma.f64 x (+.f64 x -1) 1))))
(-.f64 (log.f64 (-.f64 -1 (pow.f64 x 3))) (log.f64 (neg.f64 (fma.f64 x (+.f64 x -1) 1))))
(-.f64 (log.f64 (-.f64 -1 (pow.f64 x 3))) (log.f64 (-.f64 -1 (-.f64 (pow.f64 x 2) x))))
(-.f64 (log.f64 (neg.f64 (-.f64 1 (pow.f64 x 2)))) (log.f64 (neg.f64 (-.f64 1 x))))
(-.f64 (log.f64 (fma.f64 x x -1)) (log.f64 (+.f64 x -1)))
(-.f64 (log.f64 (fma.f64 x x -1)) (log.f64 (-.f64 x 1)))
(-.f64 (log.f64 (neg.f64 (-.f64 1 (pow.f64 x 2)))) (log.f64 (neg.f64 (-.f64 1 x))))
(-.f64 (log.f64 (fma.f64 x x -1)) (log.f64 (+.f64 x -1)))
(*.f64 1 (log1p.f64 x))
(log1p.f64 x)
(*.f64 (log1p.f64 x) 1)
(log1p.f64 x)
(*.f64 (log1p.f64 x) (log.f64 (E.f64)))
(log1p.f64 x)
(*.f64 (cbrt.f64 (log1p.f64 x)) (pow.f64 (cbrt.f64 (log1p.f64 x)) 2))
(log1p.f64 x)
(*.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 2) (cbrt.f64 (log1p.f64 x)))
(log1p.f64 x)
(*.f64 (sqrt.f64 (log1p.f64 x)) (sqrt.f64 (log1p.f64 x)))
(log1p.f64 x)
(*.f64 3 (*.f64 1/3 (log1p.f64 x)))
(log1p.f64 x)
(*.f64 2 (*.f64 1/2 (log1p.f64 x)))
(log1p.f64 x)
(*.f64 1/3 (*.f64 3 (log1p.f64 x)))
(log1p.f64 x)
(*.f64 (pow.f64 (log1p.f64 x) 1/4) (sqrt.f64 (pow.f64 (log1p.f64 x) 3/2)))
(*.f64 (pow.f64 (log1p.f64 x) 1/4) (fabs.f64 (pow.f64 (log1p.f64 x) 3/4)))
(*.f64 (pow.f64 (log1p.f64 x) 1/4) (pow.f64 (log1p.f64 x) 3/4))
(*.f64 (pow.f64 1 1/3) (log1p.f64 x))
(log1p.f64 x)
(*.f64 (pow.f64 (pow.f64 (*.f64 (log1p.f64 x) (cbrt.f64 (log1p.f64 x))) 2) 1/3) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 (log1p.f64 x) (cbrt.f64 (log1p.f64 x))) 2)) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (cbrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 4) 2)) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 8)) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (pow.f64 (pow.f64 (log1p.f64 x) 5/2) 1/3) (pow.f64 (log1p.f64 x) 1/6))
(*.f64 (cbrt.f64 (pow.f64 (log1p.f64 x) 5/2)) (pow.f64 (log1p.f64 x) 1/6))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 (log1p.f64 x) (cbrt.f64 (log1p.f64 x))) 2)) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (cbrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 4) 2)) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 8)) (cbrt.f64 (cbrt.f64 (log1p.f64 x))))
(*.f64 (cbrt.f64 (pow.f64 (log1p.f64 x) 5/2)) (pow.f64 (log1p.f64 x) 1/6))
(*.f64 (sqrt.f64 (pow.f64 (log1p.f64 x) 3/2)) (pow.f64 (log1p.f64 x) 1/4))
(*.f64 (pow.f64 (log1p.f64 x) 1/4) (sqrt.f64 (pow.f64 (log1p.f64 x) 3/2)))
(*.f64 (pow.f64 (log1p.f64 x) 1/4) (fabs.f64 (pow.f64 (log1p.f64 x) 3/4)))
(*.f64 (pow.f64 (log1p.f64 x) 1/4) (pow.f64 (log1p.f64 x) 3/4))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 5)) (pow.f64 (log1p.f64 x) 1/6))
(*.f64 (pow.f64 (log1p.f64 x) 1/6) (sqrt.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 5)))
(*.f64 (pow.f64 (log1p.f64 x) 1/6) (pow.f64 (cbrt.f64 (log1p.f64 x)) 5/2))
(pow.f64 (log1p.f64 x) 1)
(log1p.f64 x)
(pow.f64 (cbrt.f64 (log1p.f64 x)) 3)
(log1p.f64 x)
(pow.f64 (pow.f64 (log1p.f64 x) 2) 1/2)
(log1p.f64 x)
(pow.f64 (pow.f64 (log1p.f64 x) 3) 1/3)
(log1p.f64 x)
(pow.f64 (sqrt.f64 (log1p.f64 x)) 2)
(log1p.f64 x)
(pow.f64 (E.f64) (log.f64 (log1p.f64 x)))
(log1p.f64 x)
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (log1p.f64 x))) 2)) (cbrt.f64 (log.f64 (log1p.f64 x))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (log1p.f64 x)))) (sqrt.f64 (log.f64 (log1p.f64 x))))
(neg.f64 (log.f64 (/.f64 (fma.f64 x (-.f64 x 1) 1) (+.f64 1 (pow.f64 x 3)))))
(+.f64 (log1p.f64 (pow.f64 x 3)) (neg.f64 (log.f64 (fma.f64 x (+.f64 x -1) 1))))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (fma.f64 x (+.f64 x -1) 1)))
(-.f64 (log1p.f64 (pow.f64 x 3)) (log1p.f64 (-.f64 (pow.f64 x 2) x)))
(neg.f64 (log.f64 (/.f64 (-.f64 1 x) (-.f64 1 (pow.f64 x 2)))))
(+.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (neg.f64 (log.f64 (-.f64 1 x))))
(-.f64 (log1p.f64 (neg.f64 (pow.f64 x 2))) (log1p.f64 (neg.f64 x)))
(sqrt.f64 (pow.f64 (log1p.f64 x) 2))
(log1p.f64 x)
(fabs.f64 (log1p.f64 x))
(log1p.f64 x)
(cbrt.f64 (pow.f64 (log1p.f64 x) 3))
(log1p.f64 x)
(expm1.f64 (log1p.f64 (log1p.f64 x)))
(log1p.f64 x)
(exp.f64 (log.f64 (log1p.f64 x)))
(log1p.f64 x)
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (log1p.f64 x))) 3))
(log1p.f64 x)
(exp.f64 (*.f64 (*.f64 3 (log.f64 (log1p.f64 x))) 1/3))
(log1p.f64 x)
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (log1p.f64 x))) 2))
(log1p.f64 x)
(log1p.f64 x)

eval31.0ms (1.4%)

Compiler

Compiled 1124 to 785 computations (30.2% saved)

prune12.0ms (0.5%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New1031104
Fresh000
Picked022
Done000
Total1033106
Accuracy
100.0%
Counts
106 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
48.1%
(log1p.f64 x)
86.8%
(log.f64 (+.f64 1 x))
19.1%
x
Compiler

Compiled 10 to 7 computations (30% saved)

localize13.0ms (0.6%)

Compiler

Compiled 3 to 2 computations (33.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 0.0ms
Operation const, time spent: 0.0ms, 0.0% of total-time

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune2.0ms (0.1%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New000
Fresh000
Picked011
Done022
Total033
Accuracy
100.0%
Counts
3 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
48.1%
(log1p.f64 x)
86.8%
(log.f64 (+.f64 1 x))
19.1%
x
Compiler

Compiled 18 to 12 computations (33.3% saved)

regimes84.0ms (3.7%)

Counts
3 → 3
Calls
Call 1
Inputs
x
(log1p.f64 x)
(log.f64 (+.f64 1 x))
Outputs
(log1p.f64 x)
(log.f64 (+.f64 1 x))
(log1p.f64 x)
Calls

3 calls:

79.0ms
x
2.0ms
(log.f64 (+.f64 1 x))
2.0ms
(+.f64 1 x)
Results
AccuracySegmentsBranch
100.0%3x
86.8%1(log.f64 (+.f64 1 x))
86.8%1(+.f64 1 x)
Compiler

Compiled 11 to 8 computations (27.3% saved)

regimes3.0ms (0.1%)

Counts
2 → 1
Calls
Call 1
Inputs
x
(log1p.f64 x)
Outputs
(log1p.f64 x)
Calls

1 calls:

3.0ms
x
Results
AccuracySegmentsBranch
48.1%1x
Compiler

Compiled 2 to 1 computations (50% saved)

regimes3.0ms (0.1%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
x
Outputs
x
Calls

1 calls:

3.0ms
x
Results
AccuracySegmentsBranch
19.1%1x
Compiler

Compiled 2 to 1 computations (50% saved)

bsearch49.0ms (2.2%)

Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
26.0ms
7.122426354438476e-70
2.3858538536378892e-61
23.0ms
-2.2289240492920794e-67
-1.1381979430026928e-70
Results
28.0ms159×1valid
16.0ms112×0valid
0.0ms1valid
Compiler

Compiled 179 to 143 computations (20.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 22.0ms
Operation ival-log, time spent: 13.0ms, 60.0% of total-time
Operation ival-add, time spent: 8.0ms, 37.0% of total-time
Operation const, time spent: 1.0ms, 5.0% of total-time

simplify4.0ms (0.2%)

Algorithm
egg-herbie
Rules
1-exp
+-commutative
if-if-or-not
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01965
13065
Stop Event
done
saturated
Calls
Call 1
Inputs
(if (<=.f64 x -8984843626543997/485667223056432267729865476705879726660601709763034880312953102434726071301302124544) (log1p.f64 x) (if (<=.f64 x 6313673899733619/242833611528216133864932738352939863330300854881517440156476551217363035650651062272) (log.f64 (+.f64 1 x)) (log1p.f64 x)))
(log1p.f64 x)
x
Outputs
(if (<=.f64 x -8984843626543997/485667223056432267729865476705879726660601709763034880312953102434726071301302124544) (log1p.f64 x) (if (<=.f64 x 6313673899733619/242833611528216133864932738352939863330300854881517440156476551217363035650651062272) (log.f64 (+.f64 1 x)) (log1p.f64 x)))
(if (or (<=.f64 x -8984843626543997/485667223056432267729865476705879726660601709763034880312953102434726071301302124544) (not (<=.f64 x 6313673899733619/242833611528216133864932738352939863330300854881517440156476551217363035650651062272))) (log1p.f64 x) (log.f64 (+.f64 x 1)))
(log1p.f64 x)
x
Compiler

Compiled 21 to 15 computations (28.6% saved)

soundness30.0ms (1.3%)

Rules
104×fma-def
42×sub-neg
22×cancel-sign-sub-inv
20×associate-+l-
18×distribute-lft-neg-in
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01344
12844
23744
34644
46044
57744
611044
714544
816344
918644
1020044
1123544
1225044
1325544
1425644
Stop Event
saturated
Compiler

Compiled 7 to 5 computations (28.6% saved)

end0.0ms (0%)

preprocess45.0ms (2%)

Compiler

Compiled 88 to 62 computations (29.5% saved)

Profiling

Loading profile data...