ENA, Section 1.4, Exercise 4b, n=2

Time bar (total: 4.4s)

start0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated; 0ms collecting garbage

analyze0.0ms (0%)

Memory
0.6MiB live, 0.6MiB allocated; 0ms collecting garbage
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%25.7%74.3%0%0%0%0
100%25.7%0%74.3%0%0%0%1
Compiler

Compiled 25 to 18 computations (28% saved)

sample1.7s (37.6%)

Memory
37.0MiB live, 2 113.8MiB allocated; 569ms collecting garbage
Samples
563.0ms5 158×0valid
471.0ms2 536×1valid
204.0ms562×2valid
Precisions
Click to see histograms. Total time spent on operations: 1.0s
ival-pow2: 389.0ms (38.5% of total)
ival-add: 170.0ms (16.8% of total)
ival-sub: 159.0ms (15.7% of total)
ival-<=: 140.0ms (13.8% of total)
adjust: 116.0ms (11.5% of total)
ival-and: 21.0ms (2.1% of total)
exact: 15.0ms (1.5% of total)
ival-assert: 3.0ms (0.3% of total)
Bogosity

explain158.0ms (3.6%)

Memory
-14.1MiB live, 275.3MiB allocated; 37ms collecting garbage
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
710-0-(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
00-0-eps
00-0-(pow.f64 x #s(literal 2 binary64))
00-0-#s(literal 2 binary64)
00-0-(pow.f64 (+.f64 x eps) #s(literal 2 binary64))
00-0-(+.f64 x eps)
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
-.f64(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))cancellation710
Confusion
Predicted +Predicted -
+710
-0185
Precision
1.0
Recall
1.0
Confusion?
Predicted +Predicted MaybePredicted -
+7100
-00185
Precision?
1.0
Recall?
1.0
Freqs
test
numberfreq
0185
171
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
23.0ms164×1valid
21.0ms320×0valid
5.0ms28×2valid
Compiler

Compiled 59 to 25 computations (57.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 32.0ms
ival-pow2: 16.0ms (49.8% of total)
adjust: 6.0ms (18.7% of total)
ival-sub: 5.0ms (15.6% of total)
ival-add: 4.0ms (12.5% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

preprocess188.0ms (4.2%)

Memory
17.6MiB live, 204.9MiB allocated; 31ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01955
13051
211051
348649
4152137
5431237
079
0119
1169
2449
31579
45707
518127
085886
Stop Event
iter limit
node limit
iter limit
node limit
Calls
Call 1
Inputs
(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
Outputs
(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
Compiler

Compiled 9 to 7 computations (22.2% saved)

eval0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated; 0ms collecting garbage
Compiler

Compiled 0 to 2 computations (-∞% saved)

prune0.0ms (0%)

Memory
1.0MiB live, 1.0MiB allocated; 0ms collecting garbage
Alt Table
Click to see full alt table
StatusAccuracyProgram
75.8%
(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
Compiler

Compiled 9 to 7 computations (22.2% saved)

simplify109.0ms (2.5%)

Memory
7.9MiB live, 138.6MiB allocated; 24ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(pow.f64 x #s(literal 2 binary64))
cost-diff0
(+.f64 x eps)
cost-diff0
(pow.f64 (+.f64 x eps) #s(literal 2 binary64))
cost-diff3
(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0723
01123
11623
24423
315723
457021
5181221
0858820
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
(pow.f64 (+.f64 x eps) #s(literal 2 binary64))
(+.f64 x eps)
x
eps
#s(literal 2 binary64)
(pow.f64 x #s(literal 2 binary64))
Outputs
(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(pow.f64 (+.f64 x eps) #s(literal 2 binary64))
(pow.f64 (+.f64 eps x) #s(literal 2 binary64))
(+.f64 x eps)
(+.f64 eps x)
x
eps
#s(literal 2 binary64)
(pow.f64 x #s(literal 2 binary64))
(*.f64 x x)

localize68.0ms (1.5%)

Memory
7.8MiB live, 62.8MiB allocated; 42ms collecting garbage
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(+.f64 x eps)
accuracy0.0078125
(pow.f64 x #s(literal 2 binary64))
accuracy0.03515625
(pow.f64 (+.f64 x eps) #s(literal 2 binary64))
accuracy15.432710834864105
(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
Samples
49.0ms160×0valid
10.0ms82×1valid
2.0ms14×2valid
Compiler

Compiled 25 to 9 computations (64% saved)

Precisions
Click to see histograms. Total time spent on operations: 53.0ms
ival-pow2: 33.0ms (62.5% of total)
ival-add: 15.0ms (28.4% of total)
adjust: 3.0ms (5.7% of total)
ival-sub: 2.0ms (3.8% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series11.0ms (0.2%)

Memory
-25.8MiB live, 19.4MiB allocated; 13ms collecting garbage
Counts
4 → 23
Calls
Call 1
Inputs
(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
(pow.f64 (+.f64 x eps) #s(literal 2 binary64))
(+.f64 x eps)
(pow.f64 x #s(literal 2 binary64))
Outputs
(pow eps 2)
(+ (* 2 (* eps x)) (pow eps 2))
(+ (* x (+ x (* 2 eps))) (pow eps 2))
eps
(+ eps x)
(pow x 2)
(* 2 (* eps x))
(* x (+ (* 2 eps) (/ (pow eps 2) x)))
(* (pow x 2) (+ 1 (* 2 (/ eps x))))
(* (pow x 2) (+ 1 (+ (* 2 (/ eps x)) (/ (pow eps 2) (pow x 2)))))
x
(* x (+ 1 (/ eps x)))
(* -1 (* x (+ (* -2 eps) (* -1 (/ (pow eps 2) x)))))
(* (pow x 2) (+ 1 (* -1 (/ (+ (* -2 eps) (* -1 (/ (pow eps 2) x))) x))))
(* -1 (* x (- (* -1 (/ eps x)) 1)))
(* eps (+ eps (* 2 x)))
(+ (* 2 (* eps x)) (pow x 2))
(+ (* eps (+ eps (* 2 x))) (pow x 2))
(* (pow eps 2) (+ 1 (* 2 (/ x eps))))
(* (pow eps 2) (+ 1 (+ (* 2 (/ x eps)) (/ (pow x 2) (pow eps 2)))))
(* eps (+ 1 (/ x eps)))
(* (pow eps 2) (+ 1 (* -1 (/ (+ (* -2 x) (* -1 (/ (pow x 2) eps))) eps))))
(* -1 (* eps (- (* -1 (/ x eps)) 1)))
Calls

6 calls:

TimeVariablePointExpression
7.0ms
x
@inf
((- (pow (+ x eps) 2) (pow x 2)) (pow (+ x eps) 2) (+ x eps) (pow x 2))
1.0ms
x
@-inf
((- (pow (+ x eps) 2) (pow x 2)) (pow (+ x eps) 2) (+ x eps) (pow x 2))
1.0ms
x
@0
((- (pow (+ x eps) 2) (pow x 2)) (pow (+ x eps) 2) (+ x eps) (pow x 2))
1.0ms
eps
@-inf
((- (pow (+ x eps) 2) (pow x 2)) (pow (+ x eps) 2) (+ x eps) (pow x 2))
1.0ms
eps
@inf
((- (pow (+ x eps) 2) (pow x 2)) (pow (+ x eps) 2) (+ x eps) (pow x 2))

simplify204.0ms (4.6%)

Memory
9.7MiB live, 242.3MiB allocated; 29ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
069215
1239203
2874191
33924183
08175172
Stop Event
iter limit
node limit
Counts
23 → 21
Calls
Call 1
Inputs
(pow eps 2)
(+ (* 2 (* eps x)) (pow eps 2))
(+ (* x (+ x (* 2 eps))) (pow eps 2))
eps
(+ eps x)
(pow x 2)
(* 2 (* eps x))
(* x (+ (* 2 eps) (/ (pow eps 2) x)))
(* (pow x 2) (+ 1 (* 2 (/ eps x))))
(* (pow x 2) (+ 1 (+ (* 2 (/ eps x)) (/ (pow eps 2) (pow x 2)))))
x
(* x (+ 1 (/ eps x)))
(* -1 (* x (+ (* -2 eps) (* -1 (/ (pow eps 2) x)))))
(* (pow x 2) (+ 1 (* -1 (/ (+ (* -2 eps) (* -1 (/ (pow eps 2) x))) x))))
(* -1 (* x (- (* -1 (/ eps x)) 1)))
(* eps (+ eps (* 2 x)))
(+ (* 2 (* eps x)) (pow x 2))
(+ (* eps (+ eps (* 2 x))) (pow x 2))
(* (pow eps 2) (+ 1 (* 2 (/ x eps))))
(* (pow eps 2) (+ 1 (+ (* 2 (/ x eps)) (/ (pow x 2) (pow eps 2)))))
(* eps (+ 1 (/ x eps)))
(* (pow eps 2) (+ 1 (* -1 (/ (+ (* -2 x) (* -1 (/ (pow x 2) eps))) eps))))
(* -1 (* eps (- (* -1 (/ x eps)) 1)))
Outputs
(pow eps 2)
(*.f64 eps eps)
(+ (* 2 (* eps x)) (pow eps 2))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(+ (* x (+ x (* 2 eps))) (pow eps 2))
(*.f64 (+.f64 eps x) (+.f64 eps x))
eps
(+ eps x)
(+.f64 eps x)
(pow x 2)
(*.f64 x x)
(* 2 (* eps x))
(*.f64 (*.f64 eps x) #s(literal 2 binary64))
(* x (+ (* 2 eps) (/ (pow eps 2) x)))
(*.f64 (*.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)))
(* (pow x 2) (+ 1 (* 2 (/ eps x))))
(*.f64 (*.f64 (fma.f64 (/.f64 eps x) #s(literal 2 binary64) #s(literal 1 binary64)) x) x)
(* (pow x 2) (+ 1 (+ (* 2 (/ eps x)) (/ (pow eps 2) (pow x 2)))))
(*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x)
x
(* x (+ 1 (/ eps x)))
(fma.f64 (/.f64 eps x) x x)
(* -1 (* x (+ (* -2 eps) (* -1 (/ (pow eps 2) x)))))
(*.f64 (*.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)))
(* (pow x 2) (+ 1 (* -1 (/ (+ (* -2 eps) (* -1 (/ (pow eps 2) x))) x))))
(*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x)
(* -1 (* x (- (* -1 (/ eps x)) 1)))
(*.f64 (neg.f64 x) (-.f64 (/.f64 (neg.f64 eps) x) #s(literal 1 binary64)))
(* eps (+ eps (* 2 x)))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(+ (* 2 (* eps x)) (pow x 2))
(*.f64 (fma.f64 #s(literal 2 binary64) eps x) x)
(+ (* eps (+ eps (* 2 x))) (pow x 2))
(*.f64 (+.f64 eps x) (+.f64 eps x))
(* (pow eps 2) (+ 1 (* 2 (/ x eps))))
(*.f64 (*.f64 (fma.f64 (/.f64 x eps) #s(literal 2 binary64) #s(literal 1 binary64)) eps) eps)
(* (pow eps 2) (+ 1 (+ (* 2 (/ x eps)) (/ (pow x 2) (pow eps 2)))))
(*.f64 (*.f64 (fma.f64 (/.f64 x eps) (-.f64 (/.f64 x eps) #s(literal -2 binary64)) #s(literal 1 binary64)) eps) eps)
(* eps (+ 1 (/ x eps)))
(fma.f64 (/.f64 x eps) eps eps)
(* (pow eps 2) (+ 1 (* -1 (/ (+ (* -2 x) (* -1 (/ (pow x 2) eps))) eps))))
(*.f64 (*.f64 (fma.f64 (/.f64 x eps) (-.f64 (/.f64 x eps) #s(literal -2 binary64)) #s(literal 1 binary64)) eps) eps)
(* -1 (* eps (- (* -1 (/ x eps)) 1)))
(*.f64 (neg.f64 eps) (-.f64 (/.f64 (neg.f64 x) eps) #s(literal 1 binary64)))

rewrite58.0ms (1.3%)

Memory
-1.4MiB live, 44.1MiB allocated; 5ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0720
01120
15120
038620
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
4 → 61
Calls
Call 1
Inputs
(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
(pow.f64 (+.f64 x eps) #s(literal 2 binary64))
(+.f64 x eps)
(pow.f64 x #s(literal 2 binary64))
Outputs
(*.f64 (+.f64 (+.f64 eps x) x) (-.f64 (+.f64 eps x) x))
(/.f64 (neg.f64 (-.f64 (pow.f64 (+.f64 eps x) #s(literal 4 binary64)) (pow.f64 x #s(literal 4 binary64)))) (neg.f64 (fma.f64 x x (pow.f64 (+.f64 eps x) #s(literal 2 binary64)))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (+.f64 eps x) #s(literal 6 binary64)) (pow.f64 x #s(literal 6 binary64)))) (neg.f64 (fma.f64 (*.f64 x x) (fma.f64 x x (pow.f64 (+.f64 eps x) #s(literal 2 binary64))) (pow.f64 (+.f64 eps x) #s(literal 4 binary64)))))
(/.f64 (-.f64 (pow.f64 (+.f64 eps x) #s(literal 4 binary64)) (pow.f64 x #s(literal 4 binary64))) (fma.f64 x x (pow.f64 (+.f64 eps x) #s(literal 2 binary64))))
(/.f64 (-.f64 (pow.f64 (+.f64 eps x) #s(literal 6 binary64)) (pow.f64 x #s(literal 6 binary64))) (fma.f64 (*.f64 x x) (fma.f64 x x (pow.f64 (+.f64 eps x) #s(literal 2 binary64))) (pow.f64 (+.f64 eps x) #s(literal 4 binary64))))
(fma.f64 (neg.f64 (+.f64 eps x)) (neg.f64 (+.f64 eps x)) (*.f64 (neg.f64 x) x))
(fma.f64 (fabs.f64 (+.f64 eps x)) (fabs.f64 (+.f64 eps x)) (*.f64 (neg.f64 x) x))
(fma.f64 (exp.f64 (log.f64 (+.f64 eps x))) (exp.f64 (log.f64 (+.f64 eps x))) (*.f64 (neg.f64 x) x))
(fma.f64 (+.f64 eps x) (+.f64 eps x) (*.f64 (neg.f64 x) x))
(-.f64 (/.f64 (pow.f64 (+.f64 eps x) #s(literal 4 binary64)) (fma.f64 x x (pow.f64 (+.f64 eps x) #s(literal 2 binary64)))) (/.f64 (pow.f64 x #s(literal 4 binary64)) (fma.f64 x x (pow.f64 (+.f64 eps x) #s(literal 2 binary64)))))
(-.f64 (/.f64 (pow.f64 (+.f64 eps x) #s(literal 6 binary64)) (fma.f64 (*.f64 x x) (fma.f64 x x (pow.f64 (+.f64 eps x) #s(literal 2 binary64))) (pow.f64 (+.f64 eps x) #s(literal 4 binary64)))) (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (*.f64 x x) (fma.f64 x x (pow.f64 (+.f64 eps x) #s(literal 2 binary64))) (pow.f64 (+.f64 eps x) #s(literal 4 binary64)))))
(-.f64 (pow.f64 (+.f64 eps x) #s(literal 2 binary64)) (*.f64 x x))
(+.f64 (pow.f64 (+.f64 eps x) #s(literal 2 binary64)) (*.f64 (neg.f64 x) x))
(*.f64 (neg.f64 (+.f64 eps x)) (neg.f64 (+.f64 eps x)))
(*.f64 (fabs.f64 (+.f64 eps x)) (fabs.f64 (+.f64 eps x)))
(*.f64 (exp.f64 (log.f64 (+.f64 eps x))) (exp.f64 (log.f64 (+.f64 eps x))))
(*.f64 (+.f64 eps x) (+.f64 eps x))
(pow.f64 (exp.f64 (log.f64 (+.f64 eps x))) #s(literal 2 binary64))
(pow.f64 (pow.f64 (+.f64 eps x) #s(literal 2 binary64)) #s(literal 1 binary64))
(pow.f64 (+.f64 eps x) #s(literal 2 binary64))
(/.f64 (*.f64 (*.f64 (+.f64 eps x) (-.f64 x eps)) (+.f64 eps x)) (-.f64 x eps))
(/.f64 (*.f64 (+.f64 (pow.f64 eps #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64))) (+.f64 eps x)) (fma.f64 eps (-.f64 eps x) (*.f64 x x)))
(/.f64 (*.f64 (+.f64 eps x) (*.f64 (+.f64 eps x) (-.f64 x eps))) (-.f64 x eps))
(/.f64 (*.f64 (+.f64 eps x) (+.f64 (pow.f64 eps #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64)))) (fma.f64 eps (-.f64 eps x) (*.f64 x x)))
(/.f64 (*.f64 (*.f64 (+.f64 eps x) (-.f64 x eps)) (*.f64 (+.f64 eps x) (-.f64 x eps))) (*.f64 (-.f64 x eps) (-.f64 x eps)))
(/.f64 (*.f64 (*.f64 (+.f64 eps x) (-.f64 x eps)) (+.f64 (pow.f64 eps #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64)))) (*.f64 (-.f64 x eps) (fma.f64 eps (-.f64 eps x) (*.f64 x x))))
(/.f64 (*.f64 (+.f64 (pow.f64 eps #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64))) (*.f64 (+.f64 eps x) (-.f64 x eps))) (*.f64 (fma.f64 eps (-.f64 eps x) (*.f64 x x)) (-.f64 x eps)))
(/.f64 (*.f64 (+.f64 (pow.f64 eps #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64))) (+.f64 (pow.f64 eps #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64)))) (*.f64 (fma.f64 eps (-.f64 eps x) (*.f64 x x)) (fma.f64 eps (-.f64 eps x) (*.f64 x x))))
(fma.f64 (+.f64 eps x) eps (*.f64 (+.f64 eps x) x))
(fma.f64 (+.f64 eps x) x (*.f64 (+.f64 eps x) eps))
(fma.f64 eps (+.f64 eps x) (*.f64 x (+.f64 eps x)))
(fma.f64 x (+.f64 eps x) (*.f64 eps (+.f64 eps x)))
(exp.f64 (*.f64 (log.f64 (+.f64 eps x)) #s(literal 2 binary64)))
(+.f64 (*.f64 eps (+.f64 eps x)) (*.f64 x (+.f64 eps x)))
(+.f64 (*.f64 x (+.f64 eps x)) (*.f64 eps (+.f64 eps x)))
(+.f64 (*.f64 (+.f64 eps x) eps) (*.f64 (+.f64 eps x) x))
(+.f64 (*.f64 (+.f64 eps x) x) (*.f64 (+.f64 eps x) eps))
(+.f64 (cosh.f64 (*.f64 (log.f64 (+.f64 eps x)) #s(literal 2 binary64))) (sinh.f64 (*.f64 (log.f64 (+.f64 eps x)) #s(literal 2 binary64))))
(*.f64 (pow.f64 (+.f64 eps x) #s(literal 1/2 binary64)) (pow.f64 (+.f64 eps x) #s(literal 1/2 binary64)))
(pow.f64 (+.f64 eps x) #s(literal 1 binary64))
(/.f64 (-.f64 (*.f64 eps eps) (*.f64 x x)) (-.f64 eps x))
(/.f64 (neg.f64 (*.f64 (+.f64 eps x) (-.f64 x eps))) (neg.f64 (-.f64 x eps)))
(/.f64 (neg.f64 (+.f64 (pow.f64 eps #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64)))) (neg.f64 (fma.f64 eps (-.f64 eps x) (*.f64 x x))))
(/.f64 (*.f64 (+.f64 eps x) (-.f64 x eps)) (-.f64 x eps))
(/.f64 (+.f64 (pow.f64 eps #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64))) (fma.f64 eps eps (-.f64 (*.f64 x x) (*.f64 eps x))))
(/.f64 (+.f64 (pow.f64 eps #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64))) (fma.f64 eps (-.f64 eps x) (*.f64 x x)))
(fma.f64 (pow.f64 x #s(literal 1/2 binary64)) (pow.f64 x #s(literal 1/2 binary64)) eps)
(-.f64 (/.f64 (*.f64 x x) (-.f64 x eps)) (/.f64 (*.f64 eps eps) (-.f64 x eps)))
(exp.f64 (*.f64 (log.f64 (+.f64 eps x)) #s(literal 1 binary64)))
(+.f64 (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 eps (-.f64 eps x) (*.f64 x x))) (/.f64 (pow.f64 eps #s(literal 3 binary64)) (fma.f64 eps (-.f64 eps x) (*.f64 x x))))
(+.f64 eps x)
(+.f64 x eps)
(*.f64 (neg.f64 x) (neg.f64 x))
(*.f64 (fabs.f64 x) (fabs.f64 x))
(*.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)))
(*.f64 x x)
(pow.f64 (exp.f64 (log.f64 x)) #s(literal 2 binary64))
(pow.f64 (*.f64 x x) #s(literal 1 binary64))
(pow.f64 x #s(literal 2 binary64))
(exp.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))
(+.f64 (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) (sinh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))))

eval8.0ms (0.2%)

Memory
12.4MiB live, 12.4MiB allocated; 0ms collecting garbage
Compiler

Compiled 1 322 to 269 computations (79.7% saved)

prune4.0ms (0.1%)

Memory
7.0MiB live, 7.0MiB allocated; 0ms collecting garbage
Pruning

5 alts after pruning (5 fresh and 0 done)

PrunedKeptTotal
New72577
Fresh000
Picked101
Done000
Total73578
Accuracy
100.0%
Counts
78 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
64.1%
(-.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x)) (pow.f64 x #s(literal 2 binary64)))
100.0%
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
87.7%
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64))))
61.6%
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps x) #s(literal 2 binary64)))
73.8%
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))
Compiler

Compiled 174 to 120 computations (31% saved)

simplify170.0ms (3.8%)

Memory
-29.2MiB live, 116.7MiB allocated; 21ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 16 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x)
cost-diff0
#s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x))
cost-diff0
(-.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x)) (pow.f64 x #s(literal 2 binary64)))
cost-diff4
(*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x)
cost-diff0
(-.f64 (/.f64 eps x) #s(literal -2 binary64))
cost-diff0
(*.f64 eps x)
cost-diff0
(*.f64 (*.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)))
cost-diff0
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64))))
cost-diff0
(*.f64 eps x)
cost-diff0
(*.f64 (*.f64 eps x) #s(literal 2 binary64))
cost-diff0
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps x) #s(literal 2 binary64)))
cost-diff0
(*.f64 eps eps)
cost-diff0
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))
cost-diff0
(fma.f64 #s(literal 2 binary64) x eps)
cost-diff0
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
cost-diff0
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
027210
042210
170210
2162210
3483198
41963186
57541186
08179182
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(fma.f64 #s(literal 2 binary64) x eps)
#s(literal 2 binary64)
x
eps
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))
(*.f64 eps eps)
eps
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps x) #s(literal 2 binary64)))
(*.f64 (*.f64 eps x) #s(literal 2 binary64))
(*.f64 eps x)
eps
x
#s(literal 2 binary64)
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64))))
(*.f64 (*.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)))
(*.f64 eps x)
eps
x
(-.f64 (/.f64 eps x) #s(literal -2 binary64))
(/.f64 eps x)
#s(literal -2 binary64)
(-.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x)) (pow.f64 x #s(literal 2 binary64)))
#s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x))
(*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x)
(*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x)
(fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64))
(/.f64 eps x)
eps
x
(-.f64 (/.f64 eps x) #s(literal -2 binary64))
#s(literal -2 binary64)
#s(literal 1 binary64)
(pow.f64 x #s(literal 2 binary64))
#s(literal 2 binary64)
Outputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(fma.f64 #s(literal 2 binary64) x eps)
#s(literal 2 binary64)
x
eps
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))
(*.f64 eps eps)
eps
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps x) #s(literal 2 binary64)))
(*.f64 (*.f64 eps x) #s(literal 2 binary64))
(*.f64 eps x)
eps
x
#s(literal 2 binary64)
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64))))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps) x))
(*.f64 (*.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)))
(*.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps) x)
(*.f64 eps x)
eps
x
(-.f64 (/.f64 eps x) #s(literal -2 binary64))
(/.f64 eps x)
#s(literal -2 binary64)
(-.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x)) (pow.f64 x #s(literal 2 binary64)))
(fma.f64 (neg.f64 x) x #s(approx (pow (+ x eps) 2) (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps x) x)))
#s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x))
#s(approx (pow (+ x eps) 2) (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps x) x))
(*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x)
(*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps x) x)
(*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x)
(fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps x)
(fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64))
(fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64))
(/.f64 eps x)
eps
x
(-.f64 (/.f64 eps x) #s(literal -2 binary64))
#s(literal -2 binary64)
#s(literal 1 binary64)
(pow.f64 x #s(literal 2 binary64))
(*.f64 x x)
#s(literal 2 binary64)

localize72.0ms (1.6%)

Memory
28.1MiB live, 72.4MiB allocated; 6ms collecting garbage
Localize:

Found 16 expressions of interest:

NewMetricScoreProgram
accuracy0.1484375
(*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x)
accuracy0.221035009768442
(fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64))
accuracy7.276942089014971
(*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x)
accuracy15.432710834864105
(-.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x)) (pow.f64 x #s(literal 2 binary64)))
accuracy0.0
(-.f64 (/.f64 eps x) #s(literal -2 binary64))
accuracy0.0
(*.f64 eps x)
accuracy0.0
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64))))
accuracy7.857368283904903
(*.f64 (*.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)))
accuracy0.0
(*.f64 eps x)
accuracy0.02734375
(*.f64 (*.f64 eps x) #s(literal 2 binary64))
accuracy24.567163023785216
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps x) #s(literal 2 binary64)))
accuracy0.0
(*.f64 eps eps)
accuracy16.76688540741772
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))
accuracy0.0
(fma.f64 #s(literal 2 binary64) x eps)
accuracy0.0
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
accuracy0.01171875
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
Samples
26.0ms82×1valid
25.0ms160×0valid
6.0ms14×2valid
Compiler

Compiled 160 to 24 computations (85% saved)

Precisions
Click to see histograms. Total time spent on operations: 38.0ms
ival-mult: 12.0ms (31.9% of total)
ival-pow2: 9.0ms (23.9% of total)
adjust: 7.0ms (18.6% of total)
ival-add: 4.0ms (10.6% of total)
ival-sub: 3.0ms (8% of total)
ival-div: 2.0ms (5.3% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series36.0ms (0.8%)

Memory
-19.5MiB live, 33.4MiB allocated; 14ms collecting garbage
Counts
16 → 52
Calls
Call 1
Inputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(fma.f64 #s(literal 2 binary64) x eps)
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))
(*.f64 eps eps)
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps x) #s(literal 2 binary64)))
(*.f64 (*.f64 eps x) #s(literal 2 binary64))
(*.f64 eps x)
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64))))
(*.f64 (*.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)))
(-.f64 (/.f64 eps x) #s(literal -2 binary64))
(*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x)
(-.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x)) (pow.f64 x #s(literal 2 binary64)))
#s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x))
(*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x)
(fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64))
Outputs
(pow eps 2)
(+ (* 2 (* eps x)) (pow eps 2))
eps
(+ eps (* 2 x))
(* 2 (* eps x))
(* eps x)
(/ eps x)
(/ (+ eps (* 2 x)) x)
(/ (pow eps 2) x)
(/ (+ (* 2 (* eps x)) (pow eps 2)) x)
(/ (+ (* x (+ x (* 2 eps))) (pow eps 2)) x)
(+ (* x (+ x (* 2 eps))) (pow eps 2))
(/ (pow eps 2) (pow x 2))
(/ (+ (* 2 (* eps x)) (pow eps 2)) (pow x 2))
(/ (+ (* x (+ x (* 2 eps))) (pow eps 2)) (pow x 2))
(* x (+ (* 2 eps) (/ (pow eps 2) x)))
(* 2 x)
(* x (+ 2 (/ eps x)))
2
(+ 2 (/ eps x))
x
(* x (+ 1 (* 2 (/ eps x))))
(* x (+ 1 (+ (* 2 (/ eps x)) (/ (pow eps 2) (pow x 2)))))
(pow x 2)
(* (pow x 2) (+ 1 (* 2 (/ eps x))))
(* (pow x 2) (+ 1 (+ (* 2 (/ eps x)) (/ (pow eps 2) (pow x 2)))))
1
(+ 1 (* 2 (/ eps x)))
(+ 1 (+ (* 2 (/ eps x)) (/ (pow eps 2) (pow x 2))))
(* -1 (* x (+ (* -2 eps) (* -1 (/ (pow eps 2) x)))))
(* -1 (* x (- (* -1 (/ eps x)) 2)))
(* -1 (* x (- (* -2 (/ eps x)) 1)))
(* -1 (* x (- (* -1 (/ (+ (* 2 eps) (/ (pow eps 2) x)) x)) 1)))
(* (pow x 2) (+ 1 (* -1 (/ (+ (* -2 eps) (* -1 (/ (pow eps 2) x))) x))))
(+ 1 (* -1 (/ (+ (* -2 eps) (* -1 (/ (pow eps 2) x))) x)))
(* eps (+ eps (* 2 x)))
(+ x (* 2 eps))
(+ x (* eps (+ 2 (/ eps x))))
(+ (* 2 (* eps x)) (pow x 2))
(+ (* eps (+ eps (* 2 x))) (pow x 2))
(+ 1 (* eps (+ (* 2 (/ 1 x)) (/ eps (pow x 2)))))
(* (pow eps 2) (+ 1 (* 2 (/ x eps))))
(* eps (+ 1 (* 2 (/ x eps))))
(* eps (+ (* 2 (/ 1 eps)) (/ 1 x)))
(* (pow eps 2) (+ (* 2 (/ 1 eps)) (/ 1 x)))
(* (pow eps 2) (+ (* 2 (/ 1 eps)) (+ (/ 1 x) (/ x (pow eps 2)))))
(* (pow eps 2) (+ 1 (+ (* 2 (/ x eps)) (/ (pow x 2) (pow eps 2)))))
(* (pow eps 2) (+ (* 2 (/ 1 (* eps x))) (/ 1 (pow x 2))))
(* (pow eps 2) (+ (/ 1 (pow eps 2)) (+ (/ 1 (pow x 2)) (/ 2 (* eps x)))))
(* -1 (* eps (- (* -2 (/ x eps)) 1)))
(* (pow eps 2) (+ (* -1 (/ (- (* -1 (/ x eps)) 2) eps)) (/ 1 x)))
(* (pow eps 2) (+ 1 (* -1 (/ (+ (* -2 x) (* -1 (/ (pow x 2) eps))) eps))))
Calls

6 calls:

TimeVariablePointExpression
9.0ms
eps
@-inf
((- (pow (+ x eps) 2) (pow x 2)) (* (+ (* 2 x) eps) eps) (+ (* 2 x) eps) (- (pow (+ x eps) 2) (pow x 2)) (* eps eps) (- (pow (+ x eps) 2) (pow x 2)) (* (* eps x) 2) (* eps x) (- (pow (+ x eps) 2) (pow x 2)) (* (* eps x) (- (/ eps x) -2)) (- (/ eps x) -2) (* (+ (* (/ eps x) (- (/ eps x) -2)) 1) x) (- (pow (+ x eps) 2) (pow x 2)) (pow (+ x eps) 2) (* (* (+ (* (/ eps x) (- (/ eps x) -2)) 1) x) x) (+ (* (/ eps x) (- (/ eps x) -2)) 1))
3.0ms
x
@-inf
((- (pow (+ x eps) 2) (pow x 2)) (* (+ (* 2 x) eps) eps) (+ (* 2 x) eps) (- (pow (+ x eps) 2) (pow x 2)) (* eps eps) (- (pow (+ x eps) 2) (pow x 2)) (* (* eps x) 2) (* eps x) (- (pow (+ x eps) 2) (pow x 2)) (* (* eps x) (- (/ eps x) -2)) (- (/ eps x) -2) (* (+ (* (/ eps x) (- (/ eps x) -2)) 1) x) (- (pow (+ x eps) 2) (pow x 2)) (pow (+ x eps) 2) (* (* (+ (* (/ eps x) (- (/ eps x) -2)) 1) x) x) (+ (* (/ eps x) (- (/ eps x) -2)) 1))
2.0ms
x
@0
((- (pow (+ x eps) 2) (pow x 2)) (* (+ (* 2 x) eps) eps) (+ (* 2 x) eps) (- (pow (+ x eps) 2) (pow x 2)) (* eps eps) (- (pow (+ x eps) 2) (pow x 2)) (* (* eps x) 2) (* eps x) (- (pow (+ x eps) 2) (pow x 2)) (* (* eps x) (- (/ eps x) -2)) (- (/ eps x) -2) (* (+ (* (/ eps x) (- (/ eps x) -2)) 1) x) (- (pow (+ x eps) 2) (pow x 2)) (pow (+ x eps) 2) (* (* (+ (* (/ eps x) (- (/ eps x) -2)) 1) x) x) (+ (* (/ eps x) (- (/ eps x) -2)) 1))
2.0ms
eps
@inf
((- (pow (+ x eps) 2) (pow x 2)) (* (+ (* 2 x) eps) eps) (+ (* 2 x) eps) (- (pow (+ x eps) 2) (pow x 2)) (* eps eps) (- (pow (+ x eps) 2) (pow x 2)) (* (* eps x) 2) (* eps x) (- (pow (+ x eps) 2) (pow x 2)) (* (* eps x) (- (/ eps x) -2)) (- (/ eps x) -2) (* (+ (* (/ eps x) (- (/ eps x) -2)) 1) x) (- (pow (+ x eps) 2) (pow x 2)) (pow (+ x eps) 2) (* (* (+ (* (/ eps x) (- (/ eps x) -2)) 1) x) x) (+ (* (/ eps x) (- (/ eps x) -2)) 1))
2.0ms
eps
@0
((- (pow (+ x eps) 2) (pow x 2)) (* (+ (* 2 x) eps) eps) (+ (* 2 x) eps) (- (pow (+ x eps) 2) (pow x 2)) (* eps eps) (- (pow (+ x eps) 2) (pow x 2)) (* (* eps x) 2) (* eps x) (- (pow (+ x eps) 2) (pow x 2)) (* (* eps x) (- (/ eps x) -2)) (- (/ eps x) -2) (* (+ (* (/ eps x) (- (/ eps x) -2)) 1) x) (- (pow (+ x eps) 2) (pow x 2)) (pow (+ x eps) 2) (* (* (+ (* (/ eps x) (- (/ eps x) -2)) 1) x) x) (+ (* (/ eps x) (- (/ eps x) -2)) 1))

simplify142.0ms (3.2%)

Memory
37.9MiB live, 125.9MiB allocated; 12ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0116448
1410430
21552364
37361364
09311325
Stop Event
iter limit
node limit
Counts
52 → 50
Calls
Call 1
Inputs
(pow eps 2)
(+ (* 2 (* eps x)) (pow eps 2))
eps
(+ eps (* 2 x))
(* 2 (* eps x))
(* eps x)
(/ eps x)
(/ (+ eps (* 2 x)) x)
(/ (pow eps 2) x)
(/ (+ (* 2 (* eps x)) (pow eps 2)) x)
(/ (+ (* x (+ x (* 2 eps))) (pow eps 2)) x)
(+ (* x (+ x (* 2 eps))) (pow eps 2))
(/ (pow eps 2) (pow x 2))
(/ (+ (* 2 (* eps x)) (pow eps 2)) (pow x 2))
(/ (+ (* x (+ x (* 2 eps))) (pow eps 2)) (pow x 2))
(* x (+ (* 2 eps) (/ (pow eps 2) x)))
(* 2 x)
(* x (+ 2 (/ eps x)))
2
(+ 2 (/ eps x))
x
(* x (+ 1 (* 2 (/ eps x))))
(* x (+ 1 (+ (* 2 (/ eps x)) (/ (pow eps 2) (pow x 2)))))
(pow x 2)
(* (pow x 2) (+ 1 (* 2 (/ eps x))))
(* (pow x 2) (+ 1 (+ (* 2 (/ eps x)) (/ (pow eps 2) (pow x 2)))))
1
(+ 1 (* 2 (/ eps x)))
(+ 1 (+ (* 2 (/ eps x)) (/ (pow eps 2) (pow x 2))))
(* -1 (* x (+ (* -2 eps) (* -1 (/ (pow eps 2) x)))))
(* -1 (* x (- (* -1 (/ eps x)) 2)))
(* -1 (* x (- (* -2 (/ eps x)) 1)))
(* -1 (* x (- (* -1 (/ (+ (* 2 eps) (/ (pow eps 2) x)) x)) 1)))
(* (pow x 2) (+ 1 (* -1 (/ (+ (* -2 eps) (* -1 (/ (pow eps 2) x))) x))))
(+ 1 (* -1 (/ (+ (* -2 eps) (* -1 (/ (pow eps 2) x))) x)))
(* eps (+ eps (* 2 x)))
(+ x (* 2 eps))
(+ x (* eps (+ 2 (/ eps x))))
(+ (* 2 (* eps x)) (pow x 2))
(+ (* eps (+ eps (* 2 x))) (pow x 2))
(+ 1 (* eps (+ (* 2 (/ 1 x)) (/ eps (pow x 2)))))
(* (pow eps 2) (+ 1 (* 2 (/ x eps))))
(* eps (+ 1 (* 2 (/ x eps))))
(* eps (+ (* 2 (/ 1 eps)) (/ 1 x)))
(* (pow eps 2) (+ (* 2 (/ 1 eps)) (/ 1 x)))
(* (pow eps 2) (+ (* 2 (/ 1 eps)) (+ (/ 1 x) (/ x (pow eps 2)))))
(* (pow eps 2) (+ 1 (+ (* 2 (/ x eps)) (/ (pow x 2) (pow eps 2)))))
(* (pow eps 2) (+ (* 2 (/ 1 (* eps x))) (/ 1 (pow x 2))))
(* (pow eps 2) (+ (/ 1 (pow eps 2)) (+ (/ 1 (pow x 2)) (/ 2 (* eps x)))))
(* -1 (* eps (- (* -2 (/ x eps)) 1)))
(* (pow eps 2) (+ (* -1 (/ (- (* -1 (/ x eps)) 2) eps)) (/ 1 x)))
(* (pow eps 2) (+ 1 (* -1 (/ (+ (* -2 x) (* -1 (/ (pow x 2) eps))) eps))))
Outputs
(pow eps 2)
(*.f64 eps eps)
(+ (* 2 (* eps x)) (pow eps 2))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
eps
(+ eps (* 2 x))
(fma.f64 #s(literal 2 binary64) x eps)
(* 2 (* eps x))
(*.f64 (*.f64 eps x) #s(literal 2 binary64))
(* eps x)
(*.f64 eps x)
(/ eps x)
(/.f64 eps x)
(/ (+ eps (* 2 x)) x)
(-.f64 (/.f64 eps x) #s(literal -2 binary64))
(/ (pow eps 2) x)
(*.f64 (/.f64 eps x) eps)
(/ (+ (* 2 (* eps x)) (pow eps 2)) x)
(*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps)
(/ (+ (* x (+ x (* 2 eps))) (pow eps 2)) x)
(fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps x)
(+ (* x (+ x (* 2 eps))) (pow eps 2))
(fma.f64 (fma.f64 #s(literal 2 binary64) eps x) x (*.f64 eps eps))
(/ (pow eps 2) (pow x 2))
(/.f64 (*.f64 (/.f64 eps x) eps) x)
(/ (+ (* 2 (* eps x)) (pow eps 2)) (pow x 2))
(*.f64 (/.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) x) eps)
(/ (+ (* x (+ x (* 2 eps))) (pow eps 2)) (pow x 2))
(/.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps x) x)
(* x (+ (* 2 eps) (/ (pow eps 2) x)))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* x (+ 2 (/ eps x)))
(fma.f64 #s(literal 2 binary64) x eps)
2
#s(literal 2 binary64)
(+ 2 (/ eps x))
(-.f64 (/.f64 eps x) #s(literal -2 binary64))
x
(* x (+ 1 (* 2 (/ eps x))))
(fma.f64 #s(literal 2 binary64) eps x)
(* x (+ 1 (+ (* 2 (/ eps x)) (/ (pow eps 2) (pow x 2)))))
(fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps x)
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 (* 2 (/ eps x))))
(*.f64 (fma.f64 #s(literal 2 binary64) eps x) x)
(* (pow x 2) (+ 1 (+ (* 2 (/ eps x)) (/ (pow eps 2) (pow x 2)))))
(fma.f64 (fma.f64 #s(literal 2 binary64) eps x) x (*.f64 eps eps))
1
#s(literal 1 binary64)
(+ 1 (* 2 (/ eps x)))
(/.f64 (fma.f64 #s(literal 2 binary64) eps x) x)
(+ 1 (+ (* 2 (/ eps x)) (/ (pow eps 2) (pow x 2))))
(/.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps x) x)
(* -1 (* x (+ (* -2 eps) (* -1 (/ (pow eps 2) x)))))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(* -1 (* x (- (* -1 (/ eps x)) 2)))
(fma.f64 #s(literal 2 binary64) x eps)
(* -1 (* x (- (* -2 (/ eps x)) 1)))
(*.f64 (neg.f64 x) (fma.f64 #s(literal -2 binary64) (/.f64 eps x) #s(literal -1 binary64)))
(* -1 (* x (- (* -1 (/ (+ (* 2 eps) (/ (pow eps 2) x)) x)) 1)))
(fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps x)
(* (pow x 2) (+ 1 (* -1 (/ (+ (* -2 eps) (* -1 (/ (pow eps 2) x))) x))))
(fma.f64 (fma.f64 #s(literal 2 binary64) eps x) x (*.f64 eps eps))
(+ 1 (* -1 (/ (+ (* -2 eps) (* -1 (/ (pow eps 2) x))) x)))
(/.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps x) x)
(* eps (+ eps (* 2 x)))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(+ x (* 2 eps))
(fma.f64 #s(literal 2 binary64) eps x)
(+ x (* eps (+ 2 (/ eps x))))
(fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps x)
(+ (* 2 (* eps x)) (pow x 2))
(*.f64 (fma.f64 #s(literal 2 binary64) eps x) x)
(+ (* eps (+ eps (* 2 x))) (pow x 2))
(fma.f64 (fma.f64 #s(literal 2 binary64) eps x) x (*.f64 eps eps))
(+ 1 (* eps (+ (* 2 (/ 1 x)) (/ eps (pow x 2)))))
(/.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps x) x)
(* (pow eps 2) (+ 1 (* 2 (/ x eps))))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(* eps (+ 1 (* 2 (/ x eps))))
(fma.f64 #s(literal 2 binary64) x eps)
(* eps (+ (* 2 (/ 1 eps)) (/ 1 x)))
(-.f64 (/.f64 eps x) #s(literal -2 binary64))
(* (pow eps 2) (+ (* 2 (/ 1 eps)) (/ 1 x)))
(*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps)
(* (pow eps 2) (+ (* 2 (/ 1 eps)) (+ (/ 1 x) (/ x (pow eps 2)))))
(fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps x)
(* (pow eps 2) (+ 1 (+ (* 2 (/ x eps)) (/ (pow x 2) (pow eps 2)))))
(fma.f64 (fma.f64 #s(literal 2 binary64) eps x) x (*.f64 eps eps))
(* (pow eps 2) (+ (* 2 (/ 1 (* eps x))) (/ 1 (pow x 2))))
(*.f64 (/.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) x) eps)
(* (pow eps 2) (+ (/ 1 (pow eps 2)) (+ (/ 1 (pow x 2)) (/ 2 (* eps x)))))
(/.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps x) x)
(* -1 (* eps (- (* -2 (/ x eps)) 1)))
(*.f64 (neg.f64 eps) (fma.f64 (/.f64 x eps) #s(literal -2 binary64) #s(literal -1 binary64)))
(* (pow eps 2) (+ (* -1 (/ (- (* -1 (/ x eps)) 2) eps)) (/ 1 x)))
(fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps x)
(* (pow eps 2) (+ 1 (* -1 (/ (+ (* -2 x) (* -1 (/ (pow x 2) eps))) eps))))
(fma.f64 (fma.f64 #s(literal 2 binary64) eps x) x (*.f64 eps eps))

rewrite51.0ms (1.1%)

Memory
-3.2MiB live, 41.1MiB allocated; 6ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
027178
042178
1154178
01113178
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
16 → 146
Calls
Call 1
Inputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(fma.f64 #s(literal 2 binary64) x eps)
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))
(*.f64 eps eps)
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps x) #s(literal 2 binary64)))
(*.f64 (*.f64 eps x) #s(literal 2 binary64))
(*.f64 eps x)
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64))))
(*.f64 (*.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)))
(-.f64 (/.f64 eps x) #s(literal -2 binary64))
(*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x)
(-.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x)) (pow.f64 x #s(literal 2 binary64)))
#s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x))
(*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x)
(fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64))
Outputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(*.f64 eps (fma.f64 #s(literal 2 binary64) x eps))
(/.f64 (*.f64 (fma.f64 #s(literal 4 binary64) (*.f64 x x) (*.f64 (neg.f64 eps) eps)) eps) (-.f64 (*.f64 #s(literal 2 binary64) x) eps))
(/.f64 (*.f64 (fma.f64 #s(literal 8 binary64) (pow.f64 x #s(literal 3 binary64)) (pow.f64 eps #s(literal 3 binary64))) eps) (fma.f64 #s(literal 4 binary64) (*.f64 x x) (*.f64 eps (-.f64 eps (*.f64 #s(literal 2 binary64) x)))))
(/.f64 (*.f64 eps (fma.f64 #s(literal 4 binary64) (*.f64 x x) (*.f64 (neg.f64 eps) eps))) (-.f64 (*.f64 #s(literal 2 binary64) x) eps))
(/.f64 (*.f64 eps (fma.f64 #s(literal 8 binary64) (pow.f64 x #s(literal 3 binary64)) (pow.f64 eps #s(literal 3 binary64)))) (fma.f64 #s(literal 4 binary64) (*.f64 x x) (*.f64 eps (-.f64 eps (*.f64 #s(literal 2 binary64) x)))))
(fma.f64 (*.f64 #s(literal 2 binary64) eps) x (*.f64 eps eps))
(fma.f64 (*.f64 eps #s(literal 2 binary64)) x (*.f64 eps eps))
(fma.f64 (neg.f64 (neg.f64 eps)) (neg.f64 (neg.f64 eps)) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (neg.f64 (fabs.f64 eps)) (neg.f64 (fabs.f64 eps)) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (fabs.f64 (fabs.f64 eps)) (fabs.f64 (fabs.f64 eps)) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (pow.f64 eps #s(literal 1 binary64)) (pow.f64 eps #s(literal 1 binary64)) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (pow.f64 eps #s(literal 1 binary64)) eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (neg.f64 eps) (neg.f64 eps) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (fabs.f64 eps) (fabs.f64 eps) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (*.f64 #s(literal 2 binary64) x) eps (*.f64 eps eps))
(fma.f64 (*.f64 eps x) #s(literal 2 binary64) (*.f64 eps eps))
(fma.f64 #s(literal 2 binary64) (*.f64 eps x) (*.f64 eps eps))
(fma.f64 eps (*.f64 #s(literal 2 binary64) x) (*.f64 eps eps))
(fma.f64 eps eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 x (*.f64 #s(literal 2 binary64) eps) (*.f64 eps eps))
(fma.f64 x (*.f64 eps #s(literal 2 binary64)) (*.f64 eps eps))
(+.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 eps eps))
(+.f64 (*.f64 eps eps) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(/.f64 (-.f64 (*.f64 eps eps) (*.f64 #s(literal 4 binary64) (*.f64 x x))) (-.f64 eps (*.f64 #s(literal 2 binary64) x)))
(/.f64 (neg.f64 (fma.f64 #s(literal 4 binary64) (*.f64 x x) (*.f64 (neg.f64 eps) eps))) (neg.f64 (-.f64 (*.f64 #s(literal 2 binary64) x) eps)))
(/.f64 (neg.f64 (fma.f64 #s(literal 8 binary64) (pow.f64 x #s(literal 3 binary64)) (pow.f64 eps #s(literal 3 binary64)))) (neg.f64 (fma.f64 #s(literal 4 binary64) (*.f64 x x) (*.f64 eps (-.f64 eps (*.f64 #s(literal 2 binary64) x))))))
(/.f64 (fma.f64 #s(literal 4 binary64) (*.f64 x x) (*.f64 (neg.f64 eps) eps)) (-.f64 (*.f64 #s(literal 2 binary64) x) eps))
(/.f64 (fma.f64 #s(literal 8 binary64) (pow.f64 x #s(literal 3 binary64)) (pow.f64 eps #s(literal 3 binary64))) (fma.f64 eps eps (-.f64 (*.f64 #s(literal 4 binary64) (*.f64 x x)) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))))
(/.f64 (fma.f64 #s(literal 8 binary64) (pow.f64 x #s(literal 3 binary64)) (pow.f64 eps #s(literal 3 binary64))) (fma.f64 #s(literal 4 binary64) (*.f64 x x) (*.f64 eps (-.f64 eps (*.f64 #s(literal 2 binary64) x)))))
(fma.f64 (pow.f64 x #s(literal 1/2 binary64)) (pow.f64 x #s(literal 1/2 binary64)) (+.f64 eps x))
(fma.f64 (pow.f64 (+.f64 eps x) #s(literal 1/2 binary64)) (pow.f64 (+.f64 eps x) #s(literal 1/2 binary64)) x)
(fma.f64 #s(literal 2 binary64) x eps)
(fma.f64 x #s(literal 2 binary64) eps)
(-.f64 (/.f64 (*.f64 #s(literal 4 binary64) (*.f64 x x)) (-.f64 (*.f64 #s(literal 2 binary64) x) eps)) (/.f64 (*.f64 eps eps) (-.f64 (*.f64 #s(literal 2 binary64) x) eps)))
(-.f64 eps (*.f64 #s(literal -2 binary64) x))
(-.f64 eps (*.f64 (neg.f64 x) #s(literal 2 binary64)))
(+.f64 (/.f64 (*.f64 #s(literal 8 binary64) (pow.f64 x #s(literal 3 binary64))) (fma.f64 #s(literal 4 binary64) (*.f64 x x) (*.f64 eps (-.f64 eps (*.f64 #s(literal 2 binary64) x))))) (/.f64 (pow.f64 eps #s(literal 3 binary64)) (fma.f64 #s(literal 4 binary64) (*.f64 x x) (*.f64 eps (-.f64 eps (*.f64 #s(literal 2 binary64) x))))))
(+.f64 (*.f64 #s(literal 2 binary64) x) eps)
(+.f64 (+.f64 eps x) x)
(+.f64 eps (*.f64 #s(literal 2 binary64) x))
(+.f64 x (+.f64 eps x))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))
(*.f64 (neg.f64 (neg.f64 eps)) (neg.f64 (neg.f64 eps)))
(*.f64 (neg.f64 (fabs.f64 eps)) (neg.f64 (fabs.f64 eps)))
(*.f64 (fabs.f64 (fabs.f64 eps)) (fabs.f64 (fabs.f64 eps)))
(*.f64 (pow.f64 eps #s(literal 1 binary64)) (pow.f64 eps #s(literal 1 binary64)))
(*.f64 (pow.f64 eps #s(literal 1 binary64)) eps)
(*.f64 (neg.f64 eps) (neg.f64 eps))
(*.f64 (fabs.f64 eps) (fabs.f64 eps))
(*.f64 eps eps)
(pow.f64 (neg.f64 eps) #s(literal 2 binary64))
(pow.f64 (fabs.f64 eps) #s(literal 2 binary64))
(pow.f64 eps #s(literal 2 binary64))
(neg.f64 (*.f64 (neg.f64 eps) eps))
(neg.f64 (*.f64 eps (neg.f64 eps)))
(fabs.f64 (*.f64 eps eps))
(exp.f64 (*.f64 (log.f64 eps) #s(literal 2 binary64)))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(*.f64 (*.f64 #s(literal 2 binary64) eps) x)
(*.f64 (*.f64 eps #s(literal 2 binary64)) x)
(*.f64 (*.f64 #s(literal 2 binary64) x) eps)
(*.f64 (*.f64 eps x) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (*.f64 eps x))
(*.f64 eps (*.f64 #s(literal 2 binary64) x))
(*.f64 x (*.f64 #s(literal 2 binary64) eps))
(*.f64 x (*.f64 eps #s(literal 2 binary64)))
(fma.f64 #s(literal 1 binary64) (*.f64 eps x) (*.f64 #s(literal 1 binary64) (*.f64 eps x)))
(fma.f64 (*.f64 eps x) #s(literal 1 binary64) (*.f64 (*.f64 eps x) #s(literal 1 binary64)))
(fma.f64 eps x (*.f64 eps x))
(fma.f64 x eps (*.f64 eps x))
(+.f64 (*.f64 #s(literal 1 binary64) (*.f64 eps x)) (*.f64 #s(literal 1 binary64) (*.f64 eps x)))
(+.f64 (*.f64 (*.f64 eps x) #s(literal 1 binary64)) (*.f64 (*.f64 eps x) #s(literal 1 binary64)))
(+.f64 (*.f64 eps x) (*.f64 eps x))
(*.f64 eps x)
(*.f64 x eps)
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps) x))
(*.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps) x)
(*.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) x) eps)
(*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (*.f64 eps x))
(*.f64 (*.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)))
(*.f64 eps (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) x))
(*.f64 x (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps))
(/.f64 (*.f64 (-.f64 (pow.f64 (/.f64 eps x) #s(literal 2 binary64)) #s(literal 4 binary64)) (*.f64 eps x)) (+.f64 #s(literal -2 binary64) (/.f64 eps x)))
(/.f64 (*.f64 (-.f64 (pow.f64 (/.f64 eps x) #s(literal 3 binary64)) #s(literal -8 binary64)) (*.f64 eps x)) (fma.f64 #s(literal -2 binary64) (+.f64 #s(literal -2 binary64) (/.f64 eps x)) (pow.f64 (/.f64 eps x) #s(literal 2 binary64))))
(/.f64 (*.f64 (*.f64 eps x) (-.f64 (pow.f64 (/.f64 eps x) #s(literal 2 binary64)) #s(literal 4 binary64))) (+.f64 #s(literal -2 binary64) (/.f64 eps x)))
(/.f64 (*.f64 (*.f64 eps x) (-.f64 (pow.f64 (/.f64 eps x) #s(literal 3 binary64)) #s(literal -8 binary64))) (fma.f64 #s(literal -2 binary64) (+.f64 #s(literal -2 binary64) (/.f64 eps x)) (pow.f64 (/.f64 eps x) #s(literal 2 binary64))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (/.f64 eps x) #s(literal 2 binary64)) #s(literal 4 binary64))) (neg.f64 (+.f64 #s(literal -2 binary64) (/.f64 eps x))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (/.f64 eps x) #s(literal 3 binary64)) #s(literal -8 binary64))) (neg.f64 (fma.f64 #s(literal -2 binary64) (+.f64 #s(literal -2 binary64) (/.f64 eps x)) (pow.f64 (/.f64 eps x) #s(literal 2 binary64)))))
(/.f64 (-.f64 (pow.f64 (/.f64 eps x) #s(literal 2 binary64)) #s(literal 4 binary64)) (+.f64 #s(literal -2 binary64) (/.f64 eps x)))
(/.f64 (-.f64 (pow.f64 (/.f64 eps x) #s(literal 3 binary64)) #s(literal -8 binary64)) (fma.f64 #s(literal -2 binary64) (+.f64 #s(literal -2 binary64) (/.f64 eps x)) (pow.f64 (/.f64 eps x) #s(literal 2 binary64))))
(-.f64 (/.f64 (pow.f64 (/.f64 eps x) #s(literal 2 binary64)) (+.f64 #s(literal -2 binary64) (/.f64 eps x))) (/.f64 #s(literal 4 binary64) (+.f64 #s(literal -2 binary64) (/.f64 eps x))))
(-.f64 (/.f64 (pow.f64 (/.f64 eps x) #s(literal 3 binary64)) (fma.f64 #s(literal -2 binary64) (+.f64 #s(literal -2 binary64) (/.f64 eps x)) (pow.f64 (/.f64 eps x) #s(literal 2 binary64)))) (/.f64 #s(literal -8 binary64) (fma.f64 #s(literal -2 binary64) (+.f64 #s(literal -2 binary64) (/.f64 eps x)) (pow.f64 (/.f64 eps x) #s(literal 2 binary64)))))
(-.f64 (/.f64 eps x) #s(literal -2 binary64))
(*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x)
(*.f64 x (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)))
(/.f64 (*.f64 (-.f64 (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 2 binary64)) #s(literal 1 binary64)) x) (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal -1 binary64)))
(/.f64 (*.f64 (-.f64 (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 3 binary64)) #s(literal -1 binary64)) x) (+.f64 (-.f64 #s(literal 1 binary64) (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x))) (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 2 binary64))))
(/.f64 (*.f64 x (-.f64 (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 2 binary64)) #s(literal 1 binary64))) (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal -1 binary64)))
(/.f64 (*.f64 x (-.f64 (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 3 binary64)) #s(literal -1 binary64))) (+.f64 (-.f64 #s(literal 1 binary64) (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x))) (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 2 binary64))))
(fma.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) x (*.f64 #s(literal 1 binary64) x))
(fma.f64 #s(literal 1 binary64) x (*.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) x))
(fma.f64 x (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) (*.f64 x #s(literal 1 binary64)))
(fma.f64 x #s(literal 1 binary64) (*.f64 x (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x))))
(+.f64 (*.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) x) (*.f64 #s(literal 1 binary64) x))
(+.f64 (*.f64 #s(literal 1 binary64) x) (*.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) x))
(+.f64 (*.f64 x (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x))) (*.f64 x #s(literal 1 binary64)))
(+.f64 (*.f64 x #s(literal 1 binary64)) (*.f64 x (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x))))
(/.f64 (neg.f64 (-.f64 (pow.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x)) #s(literal 2 binary64)) (pow.f64 x #s(literal 4 binary64)))) (neg.f64 (fma.f64 x x #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x)))))
(/.f64 (neg.f64 (-.f64 (pow.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x)) #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64)))) (neg.f64 (fma.f64 (*.f64 x x) (fma.f64 x x #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x))) (pow.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x)) #s(literal 2 binary64)))))
(/.f64 (-.f64 (pow.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x)) #s(literal 2 binary64)) (pow.f64 x #s(literal 4 binary64))) (fma.f64 x x #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x))))
(/.f64 (-.f64 (pow.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x)) #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64))) (fma.f64 (*.f64 x x) (fma.f64 x x #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x))) (pow.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x)) #s(literal 2 binary64))))
(-.f64 (/.f64 (pow.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x)) #s(literal 2 binary64)) (fma.f64 x x #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x)))) (/.f64 (pow.f64 x #s(literal 4 binary64)) (fma.f64 x x #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x)))))
(-.f64 (/.f64 (pow.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x)) #s(literal 3 binary64)) (fma.f64 (*.f64 x x) (fma.f64 x x #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x))) (pow.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x)) #s(literal 2 binary64)))) (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (*.f64 x x) (fma.f64 x x #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x))) (pow.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x)) #s(literal 2 binary64)))))
(-.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x)) (*.f64 x x))
(+.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x)) (*.f64 (neg.f64 x) x))
#s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x))
(*.f64 (*.f64 x x) (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)))
(*.f64 (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x) x)
(*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) (*.f64 x x))
(*.f64 x (*.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64)) x))
(/.f64 (*.f64 (-.f64 (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 2 binary64)) #s(literal 1 binary64)) (*.f64 x x)) (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal -1 binary64)))
(/.f64 (*.f64 (-.f64 (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 3 binary64)) #s(literal -1 binary64)) (*.f64 x x)) (+.f64 (-.f64 #s(literal 1 binary64) (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x))) (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 2 binary64))))
(/.f64 (-.f64 #s(literal 1 binary64) (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 2 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 2 binary64)) #s(literal 1 binary64))) (neg.f64 (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal -1 binary64))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 3 binary64)) #s(literal -1 binary64))) (neg.f64 (+.f64 (-.f64 #s(literal 1 binary64) (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x))) (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 2 binary64)))))
(/.f64 (fma.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps) #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) x)) (*.f64 #s(literal 2 binary64) x))
(/.f64 (fma.f64 #s(literal 2 binary64) x (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) eps))) (*.f64 #s(literal 2 binary64) x))
(/.f64 (-.f64 (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 2 binary64)) #s(literal 1 binary64)) (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal -1 binary64)))
(/.f64 (-.f64 (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 3 binary64)) #s(literal -1 binary64)) (+.f64 #s(literal 1 binary64) (-.f64 (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 2 binary64)) (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)))))
(/.f64 (-.f64 (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 3 binary64)) #s(literal -1 binary64)) (+.f64 (-.f64 #s(literal 1 binary64) (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x))) (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 2 binary64))))
(fma.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 1 binary64) #s(literal 1 binary64))
(fma.f64 #s(literal 1 binary64) (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 1 binary64))
(fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (*.f64 (/.f64 eps x) #s(literal 1 binary64)) #s(literal 1 binary64))
(fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal 1 binary64))
(fma.f64 (/.f64 eps x) (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) #s(literal 1 binary64))
(fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64))
(fma.f64 eps (/.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) x) #s(literal 1 binary64))
(-.f64 (/.f64 (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 2 binary64)) (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal -1 binary64))) (/.f64 #s(literal 1 binary64) (fma.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x) #s(literal -1 binary64))))
(-.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal -1 binary64))
(-.f64 #s(literal 1 binary64) (*.f64 (neg.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64))) (/.f64 eps x)))
(-.f64 #s(literal 1 binary64) (*.f64 (neg.f64 (/.f64 eps x)) (-.f64 (/.f64 eps x) #s(literal -2 binary64))))
(+.f64 (/.f64 (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 3 binary64)) (+.f64 (-.f64 #s(literal 1 binary64) (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x))) (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 2 binary64)))) (/.f64 #s(literal 1 binary64) (+.f64 (-.f64 #s(literal 1 binary64) (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x))) (pow.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 2 binary64)))))
(+.f64 (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)) #s(literal 1 binary64))
(+.f64 #s(literal 1 binary64) (*.f64 (-.f64 (/.f64 eps x) #s(literal -2 binary64)) (/.f64 eps x)))

eval76.0ms (1.7%)

Memory
-7.5MiB live, 54.3MiB allocated; 17ms collecting garbage
Compiler

Compiled 4 847 to 678 computations (86% saved)

prune8.0ms (0.2%)

Memory
-31.2MiB live, 13.8MiB allocated; 4ms collecting garbage
Pruning

5 alts after pruning (3 fresh and 2 done)

PrunedKeptTotal
New1773180
Fresh000
Picked325
Done000
Total1805185
Accuracy
100.0%
Counts
185 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps)))
100.0%
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
100.0%
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 (+.f64 eps x) x) eps))
61.6%
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps #s(literal 2 binary64)) x))
73.8%
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))
Compiler

Compiled 79 to 54 computations (31.6% saved)

simplify119.0ms (2.7%)

Memory
30.3MiB live, 170.7MiB allocated; 23ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 11 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 #s(literal 2 binary64) x)
cost-diff0
(*.f64 (*.f64 #s(literal 2 binary64) x) eps)
cost-diff0
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps)))
cost-diff2
(fma.f64 eps eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
cost-diff0
(+.f64 eps x)
cost-diff0
(*.f64 (+.f64 (+.f64 eps x) x) eps)
cost-diff0
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 (+.f64 eps x) x) eps))
cost-diff1
(+.f64 (+.f64 eps x) x)
cost-diff0
(*.f64 eps #s(literal 2 binary64))
cost-diff0
(*.f64 (*.f64 eps #s(literal 2 binary64)) x)
cost-diff0
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps #s(literal 2 binary64)) x))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01897
02795
15395
214795
341795
4104989
5360389
0831781
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps #s(literal 2 binary64)) x))
(*.f64 (*.f64 eps #s(literal 2 binary64)) x)
(*.f64 eps #s(literal 2 binary64))
eps
#s(literal 2 binary64)
x
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 (+.f64 eps x) x) eps))
(*.f64 (+.f64 (+.f64 eps x) x) eps)
(+.f64 (+.f64 eps x) x)
(+.f64 eps x)
eps
x
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps)))
(fma.f64 eps eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
eps
(*.f64 (*.f64 #s(literal 2 binary64) x) eps)
(*.f64 #s(literal 2 binary64) x)
#s(literal 2 binary64)
x
Outputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps #s(literal 2 binary64)) x))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(*.f64 (*.f64 eps #s(literal 2 binary64)) x)
(*.f64 (*.f64 #s(literal 2 binary64) x) eps)
(*.f64 eps #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) eps)
eps
#s(literal 2 binary64)
x
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 (+.f64 eps x) x) eps))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
(*.f64 (+.f64 (+.f64 eps x) x) eps)
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(+.f64 (+.f64 eps x) x)
(fma.f64 #s(literal 2 binary64) x eps)
(+.f64 eps x)
eps
x
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps)))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
(fma.f64 eps eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
eps
(*.f64 (*.f64 #s(literal 2 binary64) x) eps)
(*.f64 #s(literal 2 binary64) x)
#s(literal 2 binary64)
x

localize61.0ms (1.4%)

Memory
8.5MiB live, 53.0MiB allocated; 8ms collecting garbage
Localize:

Found 11 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 (*.f64 #s(literal 2 binary64) x) eps)
accuracy0.0
(*.f64 #s(literal 2 binary64) x)
accuracy0.0
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps)))
accuracy0.0078125
(fma.f64 eps eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
accuracy0.0
(+.f64 eps x)
accuracy0.0
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 (+.f64 eps x) x) eps))
accuracy0.01171875
(*.f64 (+.f64 (+.f64 eps x) x) eps)
accuracy0.0390625
(+.f64 (+.f64 eps x) x)
accuracy0.0
(*.f64 (*.f64 eps #s(literal 2 binary64)) x)
accuracy0.0
(*.f64 eps #s(literal 2 binary64))
accuracy24.567163023785216
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps #s(literal 2 binary64)) x))
Samples
19.0ms82×1valid
18.0ms160×0valid
5.0ms14×2valid
Compiler

Compiled 77 to 18 computations (76.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 29.0ms
ival-mult: 9.0ms (31% of total)
ival-pow2: 7.0ms (24.1% of total)
adjust: 6.0ms (20.7% of total)
ival-add: 5.0ms (17.2% of total)
ival-sub: 2.0ms (6.9% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series31.0ms (0.7%)

Memory
-33.4MiB live, 11.3MiB allocated; 11ms collecting garbage
Counts
11 → 21
Calls
Call 1
Inputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps #s(literal 2 binary64)) x))
(*.f64 (*.f64 eps #s(literal 2 binary64)) x)
(*.f64 eps #s(literal 2 binary64))
(+.f64 (+.f64 eps x) x)
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 (+.f64 eps x) x) eps))
(*.f64 (+.f64 (+.f64 eps x) x) eps)
(+.f64 eps x)
(fma.f64 eps eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps)))
(*.f64 (*.f64 #s(literal 2 binary64) x) eps)
(*.f64 #s(literal 2 binary64) x)
Outputs
(pow eps 2)
(+ (* 2 (* eps x)) (pow eps 2))
(* 2 (* eps x))
eps
(+ eps (* 2 x))
(+ eps x)
(* 2 x)
(* x (+ (* 2 eps) (/ (pow eps 2) x)))
(* x (+ 2 (/ eps x)))
x
(* x (+ 1 (/ eps x)))
(* -1 (* x (+ (* -2 eps) (* -1 (/ (pow eps 2) x)))))
(* -1 (* x (- (* -1 (/ eps x)) 2)))
(* -1 (* x (- (* -1 (/ eps x)) 1)))
(* eps (+ eps (* 2 x)))
(* 2 eps)
(* (pow eps 2) (+ 1 (* 2 (/ x eps))))
(* eps (+ 1 (* 2 (/ x eps))))
(* eps (+ 1 (/ x eps)))
(* -1 (* eps (- (* -2 (/ x eps)) 1)))
(* -1 (* eps (- (* -1 (/ x eps)) 1)))
Calls

6 calls:

TimeVariablePointExpression
25.0ms
eps
@-inf
((- (pow (+ x eps) 2) (pow x 2)) (* (* eps 2) x) (* eps 2) (+ (+ eps x) x) (- (pow (+ x eps) 2) (pow x 2)) (* (+ (+ eps x) x) eps) (+ eps x) (+ (* eps eps) (* (* 2 x) eps)) (- (pow (+ x eps) 2) (pow x 2)) (* (* 2 x) eps) (* 2 x))
1.0ms
x
@-inf
((- (pow (+ x eps) 2) (pow x 2)) (* (* eps 2) x) (* eps 2) (+ (+ eps x) x) (- (pow (+ x eps) 2) (pow x 2)) (* (+ (+ eps x) x) eps) (+ eps x) (+ (* eps eps) (* (* 2 x) eps)) (- (pow (+ x eps) 2) (pow x 2)) (* (* 2 x) eps) (* 2 x))
1.0ms
x
@inf
((- (pow (+ x eps) 2) (pow x 2)) (* (* eps 2) x) (* eps 2) (+ (+ eps x) x) (- (pow (+ x eps) 2) (pow x 2)) (* (+ (+ eps x) x) eps) (+ eps x) (+ (* eps eps) (* (* 2 x) eps)) (- (pow (+ x eps) 2) (pow x 2)) (* (* 2 x) eps) (* 2 x))
1.0ms
eps
@inf
((- (pow (+ x eps) 2) (pow x 2)) (* (* eps 2) x) (* eps 2) (+ (+ eps x) x) (- (pow (+ x eps) 2) (pow x 2)) (* (+ (+ eps x) x) eps) (+ eps x) (+ (* eps eps) (* (* 2 x) eps)) (- (pow (+ x eps) 2) (pow x 2)) (* (* 2 x) eps) (* 2 x))
1.0ms
x
@0
((- (pow (+ x eps) 2) (pow x 2)) (* (* eps 2) x) (* eps 2) (+ (+ eps x) x) (- (pow (+ x eps) 2) (pow x 2)) (* (+ (+ eps x) x) eps) (+ eps x) (+ (* eps eps) (* (* 2 x) eps)) (- (pow (+ x eps) 2) (pow x 2)) (* (* 2 x) eps) (* 2 x))

simplify129.0ms (2.9%)

Memory
5.5MiB live, 151.4MiB allocated; 18ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
050101
116491
247191
3156291
4678091
0819781
Stop Event
iter limit
node limit
Counts
21 → 19
Calls
Call 1
Inputs
(pow eps 2)
(+ (* 2 (* eps x)) (pow eps 2))
(* 2 (* eps x))
eps
(+ eps (* 2 x))
(+ eps x)
(* 2 x)
(* x (+ (* 2 eps) (/ (pow eps 2) x)))
(* x (+ 2 (/ eps x)))
x
(* x (+ 1 (/ eps x)))
(* -1 (* x (+ (* -2 eps) (* -1 (/ (pow eps 2) x)))))
(* -1 (* x (- (* -1 (/ eps x)) 2)))
(* -1 (* x (- (* -1 (/ eps x)) 1)))
(* eps (+ eps (* 2 x)))
(* 2 eps)
(* (pow eps 2) (+ 1 (* 2 (/ x eps))))
(* eps (+ 1 (* 2 (/ x eps))))
(* eps (+ 1 (/ x eps)))
(* -1 (* eps (- (* -2 (/ x eps)) 1)))
(* -1 (* eps (- (* -1 (/ x eps)) 1)))
Outputs
(pow eps 2)
(*.f64 eps eps)
(+ (* 2 (* eps x)) (pow eps 2))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(* 2 (* eps x))
(*.f64 (*.f64 eps x) #s(literal 2 binary64))
eps
(+ eps (* 2 x))
(fma.f64 #s(literal 2 binary64) x eps)
(+ eps x)
(+.f64 eps x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* x (+ (* 2 eps) (/ (pow eps 2) x)))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(* x (+ 2 (/ eps x)))
(fma.f64 #s(literal 2 binary64) x eps)
x
(* x (+ 1 (/ eps x)))
(+.f64 eps x)
(* -1 (* x (+ (* -2 eps) (* -1 (/ (pow eps 2) x)))))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(* -1 (* x (- (* -1 (/ eps x)) 2)))
(fma.f64 #s(literal 2 binary64) x eps)
(* -1 (* x (- (* -1 (/ eps x)) 1)))
(+.f64 eps x)
(* eps (+ eps (* 2 x)))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(* 2 eps)
(*.f64 #s(literal 2 binary64) eps)
(* (pow eps 2) (+ 1 (* 2 (/ x eps))))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(* eps (+ 1 (* 2 (/ x eps))))
(fma.f64 #s(literal 2 binary64) x eps)
(* eps (+ 1 (/ x eps)))
(+.f64 eps x)
(* -1 (* eps (- (* -2 (/ x eps)) 1)))
(fma.f64 #s(literal 2 binary64) x eps)
(* -1 (* eps (- (* -1 (/ x eps)) 1)))
(+.f64 eps x)

rewrite55.0ms (1.2%)

Memory
35.9MiB live, 35.9MiB allocated; 0ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01889
02787
112087
095182
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
11 → 195
Calls
Call 1
Inputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps #s(literal 2 binary64)) x))
(*.f64 (*.f64 eps #s(literal 2 binary64)) x)
(*.f64 eps #s(literal 2 binary64))
(+.f64 (+.f64 eps x) x)
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 (+.f64 eps x) x) eps))
(*.f64 (+.f64 (+.f64 eps x) x) eps)
(+.f64 eps x)
(fma.f64 eps eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps)))
(*.f64 (*.f64 #s(literal 2 binary64) x) eps)
(*.f64 #s(literal 2 binary64) x)
Outputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(*.f64 (*.f64 eps x) #s(literal 2 binary64))
(*.f64 (*.f64 #s(literal 2 binary64) x) eps)
(*.f64 (*.f64 #s(literal 2 binary64) eps) x)
(*.f64 #s(literal 2 binary64) (*.f64 eps x))
(*.f64 eps (*.f64 #s(literal 2 binary64) x))
(*.f64 x (*.f64 #s(literal 2 binary64) eps))
(fma.f64 eps x (*.f64 eps x))
(fma.f64 x eps (*.f64 eps x))
(+.f64 (*.f64 eps x) (*.f64 eps x))
(*.f64 #s(literal 2 binary64) eps)
(*.f64 eps #s(literal 2 binary64))
(fma.f64 #s(literal 1 binary64) eps (*.f64 #s(literal 1 binary64) eps))
(fma.f64 eps #s(literal 1 binary64) (*.f64 eps #s(literal 1 binary64)))
(+.f64 (*.f64 #s(literal 1 binary64) eps) (*.f64 #s(literal 1 binary64) eps))
(+.f64 (*.f64 eps #s(literal 1 binary64)) (*.f64 eps #s(literal 1 binary64)))
(+.f64 eps eps)
(/.f64 (-.f64 (*.f64 eps eps) (*.f64 (*.f64 #s(literal 2 binary64) x) (*.f64 #s(literal 2 binary64) x))) (-.f64 eps (*.f64 #s(literal 2 binary64) x)))
(/.f64 (-.f64 (*.f64 x x) (pow.f64 (+.f64 eps x) #s(literal 2 binary64))) (-.f64 x (+.f64 eps x)))
(/.f64 (+.f64 (pow.f64 eps #s(literal 3 binary64)) (pow.f64 (*.f64 #s(literal 2 binary64) x) #s(literal 3 binary64))) (fma.f64 eps eps (-.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) (*.f64 #s(literal 2 binary64) x)) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))))
(/.f64 (neg.f64 (+.f64 (pow.f64 (+.f64 eps x) #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64)))) (neg.f64 (fma.f64 x (-.f64 x (+.f64 eps x)) (pow.f64 (+.f64 eps x) #s(literal 2 binary64)))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (+.f64 eps x) #s(literal 2 binary64)) (*.f64 x x))) (neg.f64 (-.f64 (+.f64 eps x) x)))
(/.f64 (-.f64 (pow.f64 (+.f64 eps x) #s(literal 4 binary64)) (pow.f64 x #s(literal 4 binary64))) (*.f64 (fma.f64 x x (pow.f64 (+.f64 eps x) #s(literal 2 binary64))) (-.f64 (+.f64 eps x) x)))
(/.f64 (-.f64 (pow.f64 (+.f64 eps x) #s(literal 6 binary64)) (pow.f64 x #s(literal 6 binary64))) (*.f64 (+.f64 (+.f64 (pow.f64 (*.f64 (+.f64 eps x) x) #s(literal 2 binary64)) (pow.f64 x #s(literal 4 binary64))) (pow.f64 (+.f64 eps x) #s(literal 4 binary64))) (-.f64 (+.f64 eps x) x)))
(/.f64 (+.f64 (pow.f64 (+.f64 eps x) #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64))) (fma.f64 x x (-.f64 (pow.f64 (+.f64 eps x) #s(literal 2 binary64)) (*.f64 (+.f64 eps x) x))))
(/.f64 (+.f64 (pow.f64 (+.f64 eps x) #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64))) (fma.f64 x (-.f64 x (+.f64 eps x)) (pow.f64 (+.f64 eps x) #s(literal 2 binary64))))
(/.f64 (-.f64 (pow.f64 (+.f64 eps x) #s(literal 2 binary64)) (*.f64 x x)) (-.f64 (+.f64 eps x) x))
(fma.f64 (pow.f64 (+.f64 eps x) #s(literal 1/2 binary64)) (pow.f64 (+.f64 eps x) #s(literal 1/2 binary64)) x)
(fma.f64 (pow.f64 x #s(literal 1/2 binary64)) (pow.f64 x #s(literal 1/2 binary64)) (+.f64 eps x))
(fma.f64 #s(literal 2 binary64) x eps)
(fma.f64 x #s(literal 2 binary64) eps)
(-.f64 (/.f64 (pow.f64 (+.f64 eps x) #s(literal 2 binary64)) (-.f64 (+.f64 eps x) x)) (/.f64 (*.f64 x x) (-.f64 (+.f64 eps x) x)))
(-.f64 eps (*.f64 #s(literal -2 binary64) x))
(+.f64 (/.f64 (pow.f64 (+.f64 eps x) #s(literal 3 binary64)) (fma.f64 x (-.f64 x (+.f64 eps x)) (pow.f64 (+.f64 eps x) #s(literal 2 binary64)))) (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 x (-.f64 x (+.f64 eps x)) (pow.f64 (+.f64 eps x) #s(literal 2 binary64)))))
(+.f64 (*.f64 #s(literal 2 binary64) x) eps)
(+.f64 (+.f64 eps x) x)
(+.f64 eps (*.f64 #s(literal 2 binary64) x))
(+.f64 x (+.f64 eps x))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(*.f64 eps (fma.f64 #s(literal 2 binary64) x eps))
(/.f64 (*.f64 (+.f64 (pow.f64 (+.f64 eps x) #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64))) eps) (fma.f64 x (-.f64 x (+.f64 eps x)) (pow.f64 (+.f64 eps x) #s(literal 2 binary64))))
(/.f64 (*.f64 (-.f64 (pow.f64 (+.f64 eps x) #s(literal 2 binary64)) (*.f64 x x)) eps) (-.f64 (+.f64 eps x) x))
(/.f64 (*.f64 eps (+.f64 (pow.f64 (+.f64 eps x) #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64)))) (fma.f64 x (-.f64 x (+.f64 eps x)) (pow.f64 (+.f64 eps x) #s(literal 2 binary64))))
(/.f64 (*.f64 eps (-.f64 (pow.f64 (+.f64 eps x) #s(literal 2 binary64)) (*.f64 x x))) (-.f64 (+.f64 eps x) x))
(/.f64 (-.f64 (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) #s(literal 2 binary64)) (pow.f64 eps #s(literal 4 binary64))) (-.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 eps eps)))
(/.f64 (-.f64 (pow.f64 eps #s(literal 6 binary64)) (pow.f64 (*.f64 (*.f64 #s(literal -2 binary64) x) eps) #s(literal 3 binary64))) (+.f64 (pow.f64 eps #s(literal 4 binary64)) (+.f64 (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) #s(literal 2 binary64)) (*.f64 (*.f64 eps eps) (*.f64 (*.f64 #s(literal -2 binary64) x) eps)))))
(/.f64 (neg.f64 (-.f64 (pow.f64 eps #s(literal 4 binary64)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) #s(literal 2 binary64)))) (neg.f64 (*.f64 eps (-.f64 eps (*.f64 #s(literal 2 binary64) x)))))
(/.f64 (neg.f64 (fma.f64 #s(literal 8 binary64) (pow.f64 (*.f64 eps x) #s(literal 3 binary64)) (pow.f64 eps #s(literal 6 binary64)))) (neg.f64 (fma.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (-.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 eps eps)) (pow.f64 eps #s(literal 4 binary64)))))
(/.f64 (-.f64 (pow.f64 eps #s(literal 4 binary64)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) #s(literal 2 binary64))) (*.f64 eps (-.f64 eps (*.f64 #s(literal 2 binary64) x))))
(/.f64 (fma.f64 #s(literal 8 binary64) (pow.f64 (*.f64 eps x) #s(literal 3 binary64)) (pow.f64 eps #s(literal 6 binary64))) (+.f64 (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) #s(literal 2 binary64)) (-.f64 (pow.f64 eps #s(literal 4 binary64)) (*.f64 (pow.f64 eps #s(literal 3 binary64)) (*.f64 #s(literal 2 binary64) x)))))
(/.f64 (fma.f64 #s(literal 8 binary64) (pow.f64 (*.f64 eps x) #s(literal 3 binary64)) (pow.f64 eps #s(literal 6 binary64))) (fma.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (-.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 eps eps)) (pow.f64 eps #s(literal 4 binary64))))
(fma.f64 (neg.f64 (neg.f64 eps)) (neg.f64 (neg.f64 eps)) (*.f64 (neg.f64 (*.f64 #s(literal -2 binary64) x)) eps))
(fma.f64 (neg.f64 (neg.f64 eps)) (neg.f64 (neg.f64 eps)) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (neg.f64 (fabs.f64 eps)) (neg.f64 (fabs.f64 eps)) (*.f64 (neg.f64 (*.f64 #s(literal -2 binary64) x)) eps))
(fma.f64 (neg.f64 (fabs.f64 eps)) (neg.f64 (fabs.f64 eps)) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (fabs.f64 (fabs.f64 eps)) (fabs.f64 (fabs.f64 eps)) (*.f64 (neg.f64 (*.f64 #s(literal -2 binary64) x)) eps))
(fma.f64 (fabs.f64 (fabs.f64 eps)) (fabs.f64 (fabs.f64 eps)) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (pow.f64 eps #s(literal 1 binary64)) (pow.f64 eps #s(literal 1 binary64)) (*.f64 (neg.f64 (*.f64 #s(literal -2 binary64) x)) eps))
(fma.f64 (pow.f64 eps #s(literal 1 binary64)) (pow.f64 eps #s(literal 1 binary64)) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (pow.f64 eps #s(literal 1 binary64)) eps (*.f64 (neg.f64 (*.f64 #s(literal -2 binary64) x)) eps))
(fma.f64 (pow.f64 eps #s(literal 1 binary64)) eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (*.f64 eps x) #s(literal 2 binary64) (*.f64 eps eps))
(fma.f64 (neg.f64 eps) (neg.f64 eps) (*.f64 (neg.f64 (*.f64 #s(literal -2 binary64) x)) eps))
(fma.f64 (neg.f64 eps) (neg.f64 eps) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (fabs.f64 eps) (fabs.f64 eps) (*.f64 (neg.f64 (*.f64 #s(literal -2 binary64) x)) eps))
(fma.f64 (fabs.f64 eps) (fabs.f64 eps) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (*.f64 #s(literal 2 binary64) x) eps (*.f64 eps eps))
(fma.f64 (+.f64 eps x) eps (*.f64 eps x))
(fma.f64 (*.f64 #s(literal 2 binary64) eps) x (*.f64 eps eps))
(fma.f64 #s(literal 2 binary64) (*.f64 eps x) (*.f64 eps eps))
(fma.f64 eps (*.f64 #s(literal 2 binary64) x) (*.f64 eps eps))
(fma.f64 eps (+.f64 eps x) (*.f64 eps x))
(fma.f64 eps eps (*.f64 (neg.f64 (*.f64 #s(literal -2 binary64) x)) eps))
(fma.f64 eps eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 eps x (*.f64 eps (+.f64 eps x)))
(fma.f64 eps x (*.f64 (+.f64 eps x) eps))
(fma.f64 x (*.f64 #s(literal 2 binary64) eps) (*.f64 eps eps))
(fma.f64 x eps (*.f64 eps (+.f64 eps x)))
(fma.f64 x eps (*.f64 (+.f64 eps x) eps))
(-.f64 (/.f64 (pow.f64 eps #s(literal 4 binary64)) (*.f64 eps (-.f64 eps (*.f64 #s(literal 2 binary64) x)))) (/.f64 (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) #s(literal 2 binary64)) (*.f64 eps (-.f64 eps (*.f64 #s(literal 2 binary64) x)))))
(-.f64 (*.f64 eps eps) (*.f64 (neg.f64 (*.f64 #s(literal 2 binary64) eps)) x))
(-.f64 (*.f64 eps eps) (*.f64 #s(literal -2 binary64) (*.f64 eps x)))
(-.f64 (*.f64 eps eps) (*.f64 (neg.f64 eps) (*.f64 #s(literal 2 binary64) x)))
(-.f64 (*.f64 eps eps) (*.f64 (neg.f64 x) (*.f64 #s(literal 2 binary64) eps)))
(-.f64 (*.f64 eps eps) (*.f64 (*.f64 #s(literal -2 binary64) x) eps))
(-.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 (neg.f64 (neg.f64 eps)) (neg.f64 eps)))
(-.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 (neg.f64 (fabs.f64 eps)) (fabs.f64 eps)))
(-.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 (neg.f64 eps) eps))
(-.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 eps (neg.f64 eps)))
(+.f64 (*.f64 eps (+.f64 eps x)) (*.f64 eps x))
(+.f64 (*.f64 (+.f64 eps x) eps) (*.f64 eps x))
(+.f64 (/.f64 (pow.f64 eps #s(literal 6 binary64)) (fma.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (-.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 eps eps)) (pow.f64 eps #s(literal 4 binary64)))) (/.f64 (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (-.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 eps eps)) (pow.f64 eps #s(literal 4 binary64)))))
(+.f64 (*.f64 eps x) (*.f64 eps (+.f64 eps x)))
(+.f64 (*.f64 eps x) (*.f64 (+.f64 eps x) eps))
(+.f64 (*.f64 eps eps) (*.f64 (neg.f64 (*.f64 #s(literal -2 binary64) x)) eps))
(+.f64 (*.f64 eps eps) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(+.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 eps eps))
(*.f64 (pow.f64 (+.f64 eps x) #s(literal 1/2 binary64)) (pow.f64 (+.f64 eps x) #s(literal 1/2 binary64)))
(pow.f64 (+.f64 eps x) #s(literal 1 binary64))
(/.f64 (neg.f64 (*.f64 (+.f64 eps x) (-.f64 eps x))) (neg.f64 (-.f64 eps x)))
(/.f64 (neg.f64 (*.f64 (+.f64 eps x) (-.f64 x eps))) (neg.f64 (-.f64 x eps)))
(/.f64 (neg.f64 (+.f64 (pow.f64 eps #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64)))) (neg.f64 (fma.f64 x (-.f64 x eps) (*.f64 eps eps))))
(/.f64 (neg.f64 (+.f64 (pow.f64 eps #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64)))) (neg.f64 (fma.f64 eps (-.f64 eps x) (*.f64 x x))))
(/.f64 (*.f64 (+.f64 eps x) (-.f64 eps x)) (-.f64 eps x))
(/.f64 (*.f64 (+.f64 eps x) (-.f64 x eps)) (-.f64 x eps))
(/.f64 (+.f64 (pow.f64 eps #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64))) (fma.f64 x (-.f64 x eps) (*.f64 eps eps)))
(/.f64 (+.f64 (pow.f64 eps #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64))) (fma.f64 eps (-.f64 eps x) (*.f64 x x)))
(fma.f64 (pow.f64 x #s(literal 1/2 binary64)) (pow.f64 x #s(literal 1/2 binary64)) eps)
(-.f64 (/.f64 (*.f64 eps eps) (-.f64 eps x)) (/.f64 (*.f64 x x) (-.f64 eps x)))
(-.f64 (/.f64 (*.f64 x x) (-.f64 x eps)) (/.f64 (*.f64 eps eps) (-.f64 x eps)))
(exp.f64 (*.f64 (log.f64 (+.f64 eps x)) #s(literal 1 binary64)))
(+.f64 (/.f64 (pow.f64 eps #s(literal 3 binary64)) (fma.f64 x (-.f64 x eps) (*.f64 eps eps))) (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 x (-.f64 x eps) (*.f64 eps eps))))
(+.f64 (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 eps (-.f64 eps x) (*.f64 x x))) (/.f64 (pow.f64 eps #s(literal 3 binary64)) (fma.f64 eps (-.f64 eps x) (*.f64 x x))))
(+.f64 eps x)
(+.f64 x eps)
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(*.f64 eps (fma.f64 #s(literal 2 binary64) x eps))
(/.f64 (*.f64 (+.f64 (pow.f64 (+.f64 eps x) #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64))) eps) (fma.f64 x (-.f64 x (+.f64 eps x)) (pow.f64 (+.f64 eps x) #s(literal 2 binary64))))
(/.f64 (*.f64 (-.f64 (pow.f64 (+.f64 eps x) #s(literal 2 binary64)) (*.f64 x x)) eps) (-.f64 (+.f64 eps x) x))
(/.f64 (*.f64 eps (+.f64 (pow.f64 (+.f64 eps x) #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64)))) (fma.f64 x (-.f64 x (+.f64 eps x)) (pow.f64 (+.f64 eps x) #s(literal 2 binary64))))
(/.f64 (*.f64 eps (-.f64 (pow.f64 (+.f64 eps x) #s(literal 2 binary64)) (*.f64 x x))) (-.f64 (+.f64 eps x) x))
(/.f64 (-.f64 (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) #s(literal 2 binary64)) (pow.f64 eps #s(literal 4 binary64))) (-.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 eps eps)))
(/.f64 (-.f64 (pow.f64 eps #s(literal 6 binary64)) (pow.f64 (*.f64 (*.f64 #s(literal -2 binary64) x) eps) #s(literal 3 binary64))) (+.f64 (pow.f64 eps #s(literal 4 binary64)) (+.f64 (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) #s(literal 2 binary64)) (*.f64 (*.f64 eps eps) (*.f64 (*.f64 #s(literal -2 binary64) x) eps)))))
(/.f64 (neg.f64 (-.f64 (pow.f64 eps #s(literal 4 binary64)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) #s(literal 2 binary64)))) (neg.f64 (*.f64 eps (-.f64 eps (*.f64 #s(literal 2 binary64) x)))))
(/.f64 (neg.f64 (fma.f64 #s(literal 8 binary64) (pow.f64 (*.f64 eps x) #s(literal 3 binary64)) (pow.f64 eps #s(literal 6 binary64)))) (neg.f64 (fma.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (-.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 eps eps)) (pow.f64 eps #s(literal 4 binary64)))))
(/.f64 (-.f64 (pow.f64 eps #s(literal 4 binary64)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) #s(literal 2 binary64))) (*.f64 eps (-.f64 eps (*.f64 #s(literal 2 binary64) x))))
(/.f64 (fma.f64 #s(literal 8 binary64) (pow.f64 (*.f64 eps x) #s(literal 3 binary64)) (pow.f64 eps #s(literal 6 binary64))) (+.f64 (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) #s(literal 2 binary64)) (-.f64 (pow.f64 eps #s(literal 4 binary64)) (*.f64 (pow.f64 eps #s(literal 3 binary64)) (*.f64 #s(literal 2 binary64) x)))))
(/.f64 (fma.f64 #s(literal 8 binary64) (pow.f64 (*.f64 eps x) #s(literal 3 binary64)) (pow.f64 eps #s(literal 6 binary64))) (fma.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (-.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 eps eps)) (pow.f64 eps #s(literal 4 binary64))))
(fma.f64 (neg.f64 (neg.f64 eps)) (neg.f64 (neg.f64 eps)) (*.f64 (neg.f64 (*.f64 #s(literal -2 binary64) x)) eps))
(fma.f64 (neg.f64 (neg.f64 eps)) (neg.f64 (neg.f64 eps)) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (neg.f64 (fabs.f64 eps)) (neg.f64 (fabs.f64 eps)) (*.f64 (neg.f64 (*.f64 #s(literal -2 binary64) x)) eps))
(fma.f64 (neg.f64 (fabs.f64 eps)) (neg.f64 (fabs.f64 eps)) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (fabs.f64 (fabs.f64 eps)) (fabs.f64 (fabs.f64 eps)) (*.f64 (neg.f64 (*.f64 #s(literal -2 binary64) x)) eps))
(fma.f64 (fabs.f64 (fabs.f64 eps)) (fabs.f64 (fabs.f64 eps)) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (pow.f64 eps #s(literal 1 binary64)) (pow.f64 eps #s(literal 1 binary64)) (*.f64 (neg.f64 (*.f64 #s(literal -2 binary64) x)) eps))
(fma.f64 (pow.f64 eps #s(literal 1 binary64)) (pow.f64 eps #s(literal 1 binary64)) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (pow.f64 eps #s(literal 1 binary64)) eps (*.f64 (neg.f64 (*.f64 #s(literal -2 binary64) x)) eps))
(fma.f64 (pow.f64 eps #s(literal 1 binary64)) eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (*.f64 eps x) #s(literal 2 binary64) (*.f64 eps eps))
(fma.f64 (neg.f64 eps) (neg.f64 eps) (*.f64 (neg.f64 (*.f64 #s(literal -2 binary64) x)) eps))
(fma.f64 (neg.f64 eps) (neg.f64 eps) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (fabs.f64 eps) (fabs.f64 eps) (*.f64 (neg.f64 (*.f64 #s(literal -2 binary64) x)) eps))
(fma.f64 (fabs.f64 eps) (fabs.f64 eps) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (*.f64 #s(literal 2 binary64) x) eps (*.f64 eps eps))
(fma.f64 (+.f64 eps x) eps (*.f64 eps x))
(fma.f64 (*.f64 #s(literal 2 binary64) eps) x (*.f64 eps eps))
(fma.f64 #s(literal 2 binary64) (*.f64 eps x) (*.f64 eps eps))
(fma.f64 eps (*.f64 #s(literal 2 binary64) x) (*.f64 eps eps))
(fma.f64 eps (+.f64 eps x) (*.f64 eps x))
(fma.f64 eps eps (*.f64 (neg.f64 (*.f64 #s(literal -2 binary64) x)) eps))
(fma.f64 eps eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 eps x (*.f64 eps (+.f64 eps x)))
(fma.f64 eps x (*.f64 (+.f64 eps x) eps))
(fma.f64 x (*.f64 #s(literal 2 binary64) eps) (*.f64 eps eps))
(fma.f64 x eps (*.f64 eps (+.f64 eps x)))
(fma.f64 x eps (*.f64 (+.f64 eps x) eps))
(-.f64 (/.f64 (pow.f64 eps #s(literal 4 binary64)) (*.f64 eps (-.f64 eps (*.f64 #s(literal 2 binary64) x)))) (/.f64 (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) #s(literal 2 binary64)) (*.f64 eps (-.f64 eps (*.f64 #s(literal 2 binary64) x)))))
(-.f64 (*.f64 eps eps) (*.f64 (neg.f64 (*.f64 #s(literal 2 binary64) eps)) x))
(-.f64 (*.f64 eps eps) (*.f64 #s(literal -2 binary64) (*.f64 eps x)))
(-.f64 (*.f64 eps eps) (*.f64 (neg.f64 eps) (*.f64 #s(literal 2 binary64) x)))
(-.f64 (*.f64 eps eps) (*.f64 (neg.f64 x) (*.f64 #s(literal 2 binary64) eps)))
(-.f64 (*.f64 eps eps) (*.f64 (*.f64 #s(literal -2 binary64) x) eps))
(-.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 (neg.f64 (neg.f64 eps)) (neg.f64 eps)))
(-.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 (neg.f64 (fabs.f64 eps)) (fabs.f64 eps)))
(-.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 (neg.f64 eps) eps))
(-.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 eps (neg.f64 eps)))
(+.f64 (*.f64 eps (+.f64 eps x)) (*.f64 eps x))
(+.f64 (*.f64 (+.f64 eps x) eps) (*.f64 eps x))
(+.f64 (/.f64 (pow.f64 eps #s(literal 6 binary64)) (fma.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (-.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 eps eps)) (pow.f64 eps #s(literal 4 binary64)))) (/.f64 (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (-.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 eps eps)) (pow.f64 eps #s(literal 4 binary64)))))
(+.f64 (*.f64 eps x) (*.f64 eps (+.f64 eps x)))
(+.f64 (*.f64 eps x) (*.f64 (+.f64 eps x) eps))
(+.f64 (*.f64 eps eps) (*.f64 (neg.f64 (*.f64 #s(literal -2 binary64) x)) eps))
(+.f64 (*.f64 eps eps) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(+.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 eps eps))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
(*.f64 (*.f64 eps x) #s(literal 2 binary64))
(*.f64 (*.f64 #s(literal 2 binary64) x) eps)
(*.f64 (*.f64 #s(literal 2 binary64) eps) x)
(*.f64 #s(literal 2 binary64) (*.f64 eps x))
(*.f64 eps (*.f64 #s(literal 2 binary64) x))
(*.f64 x (*.f64 #s(literal 2 binary64) eps))
(fma.f64 eps x (*.f64 eps x))
(fma.f64 x eps (*.f64 eps x))
(+.f64 (*.f64 eps x) (*.f64 eps x))
(*.f64 #s(literal 2 binary64) x)
(*.f64 x #s(literal 2 binary64))
(/.f64 (-.f64 (*.f64 x x) (*.f64 x x)) (-.f64 x x))
(/.f64 (+.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64))) (fma.f64 x x (-.f64 (*.f64 x x) (*.f64 x x))))
(fma.f64 (pow.f64 x #s(literal 1/2 binary64)) (pow.f64 x #s(literal 1/2 binary64)) x)
(fma.f64 #s(literal 1 binary64) x (*.f64 #s(literal 1 binary64) x))
(fma.f64 x #s(literal 1 binary64) (*.f64 x #s(literal 1 binary64)))
(+.f64 (*.f64 #s(literal 1 binary64) x) (*.f64 #s(literal 1 binary64) x))
(+.f64 (*.f64 x #s(literal 1 binary64)) (*.f64 x #s(literal 1 binary64)))
(+.f64 x x)

eval43.0ms (1%)

Memory
-19.7MiB live, 26.4MiB allocated; 3ms collecting garbage
Compiler

Compiled 3 070 to 489 computations (84.1% saved)

prune4.0ms (0.1%)

Memory
9.5MiB live, 9.5MiB allocated; 0ms collecting garbage
Pruning

5 alts after pruning (2 fresh and 3 done)

PrunedKeptTotal
New1302132
Fresh000
Picked213
Done022
Total1325137
Accuracy
100.0%
Counts
137 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (+.f64 x x) eps)))
100.0%
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
100.0%
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 (+.f64 eps x) x) eps))
61.6%
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 eps eps) x))
73.8%
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))
Compiler

Compiled 79 to 52 computations (34.2% saved)

simplify137.0ms (3.1%)

Memory
8.6MiB live, 108.5MiB allocated; 13ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 7 expressions of interest:

NewMetricScoreProgram
cost-diff0
(+.f64 x x)
cost-diff0
(*.f64 (+.f64 x x) eps)
cost-diff0
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (+.f64 x x) eps)))
cost-diff2
(fma.f64 eps eps (*.f64 (+.f64 x x) eps))
cost-diff0
(+.f64 eps eps)
cost-diff0
(*.f64 (+.f64 eps eps) x)
cost-diff0
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 eps eps) x))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01461
02059
13959
211659
334759
496255
5305455
0816851
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 eps eps) x))
(*.f64 (+.f64 eps eps) x)
(+.f64 eps eps)
eps
x
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (+.f64 x x) eps)))
(fma.f64 eps eps (*.f64 (+.f64 x x) eps))
eps
(*.f64 (+.f64 x x) eps)
(+.f64 x x)
x
Outputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 eps eps) x))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(*.f64 (+.f64 eps eps) x)
(*.f64 (*.f64 #s(literal 2 binary64) x) eps)
(+.f64 eps eps)
(*.f64 #s(literal 2 binary64) eps)
eps
x
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (+.f64 x x) eps)))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
(fma.f64 eps eps (*.f64 (+.f64 x x) eps))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
eps
(*.f64 (+.f64 x x) eps)
(*.f64 (*.f64 #s(literal 2 binary64) x) eps)
(+.f64 x x)
(*.f64 #s(literal 2 binary64) x)
x

localize92.0ms (2.1%)

Memory
-20.9MiB live, 66.9MiB allocated; 12ms collecting garbage
Localize:

Found 7 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(+.f64 x x)
accuracy0.0
(*.f64 (+.f64 x x) eps)
accuracy0.0
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (+.f64 x x) eps)))
accuracy0.0078125
(fma.f64 eps eps (*.f64 (+.f64 x x) eps))
accuracy0.0
(+.f64 eps eps)
accuracy0.0
(*.f64 (+.f64 eps eps) x)
accuracy24.567163023785216
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 eps eps) x))
Samples
59.0ms160×0valid
20.0ms82×1valid
4.0ms14×2valid
Compiler

Compiled 49 to 14 computations (71.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 73.0ms
ival-pow2: 51.0ms (70% of total)
ival-add: 11.0ms (15.1% of total)
ival-mult: 5.0ms (6.9% of total)
adjust: 4.0ms (5.5% of total)
ival-sub: 2.0ms (2.7% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)

series6.0ms (0.1%)

Memory
11.9MiB live, 11.9MiB allocated; 0ms collecting garbage
Counts
7 → 9
Calls
Call 1
Inputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 eps eps) x))
(*.f64 (+.f64 eps eps) x)
(+.f64 eps eps)
(fma.f64 eps eps (*.f64 (+.f64 x x) eps))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (+.f64 x x) eps)))
(*.f64 (+.f64 x x) eps)
(+.f64 x x)
Outputs
(pow eps 2)
(+ (* 2 (* eps x)) (pow eps 2))
(* 2 (* eps x))
(* 2 x)
(* x (+ (* 2 eps) (/ (pow eps 2) x)))
(* -1 (* x (+ (* -2 eps) (* -1 (/ (pow eps 2) x)))))
(* eps (+ eps (* 2 x)))
(* 2 eps)
(* (pow eps 2) (+ 1 (* 2 (/ x eps))))
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@inf
((- (pow (+ x eps) 2) (pow x 2)) (* (+ eps eps) x) (+ eps eps) (+ (* eps eps) (* (+ x x) eps)) (- (pow (+ x eps) 2) (pow x 2)) (* (+ x x) eps) (+ x x))
1.0ms
x
@-inf
((- (pow (+ x eps) 2) (pow x 2)) (* (+ eps eps) x) (+ eps eps) (+ (* eps eps) (* (+ x x) eps)) (- (pow (+ x eps) 2) (pow x 2)) (* (+ x x) eps) (+ x x))
1.0ms
eps
@-inf
((- (pow (+ x eps) 2) (pow x 2)) (* (+ eps eps) x) (+ eps eps) (+ (* eps eps) (* (+ x x) eps)) (- (pow (+ x eps) 2) (pow x 2)) (* (+ x x) eps) (+ x x))
1.0ms
eps
@inf
((- (pow (+ x eps) 2) (pow x 2)) (* (+ eps eps) x) (+ eps eps) (+ (* eps eps) (* (+ x x) eps)) (- (pow (+ x eps) 2) (pow x 2)) (* (+ x x) eps) (+ x x))
1.0ms
x
@0
((- (pow (+ x eps) 2) (pow x 2)) (* (+ eps eps) x) (+ eps eps) (+ (* eps eps) (* (+ x x) eps)) (- (pow (+ x eps) 2) (pow x 2)) (* (+ x x) eps) (+ x x))

simplify214.0ms (4.8%)

Memory
-38.7MiB live, 98.4MiB allocated; 62ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02659
18949
230949
3113249
4479549
0823844
Stop Event
iter limit
node limit
Counts
9 → 9
Calls
Call 1
Inputs
(pow eps 2)
(+ (* 2 (* eps x)) (pow eps 2))
(* 2 (* eps x))
(* 2 x)
(* x (+ (* 2 eps) (/ (pow eps 2) x)))
(* -1 (* x (+ (* -2 eps) (* -1 (/ (pow eps 2) x)))))
(* eps (+ eps (* 2 x)))
(* 2 eps)
(* (pow eps 2) (+ 1 (* 2 (/ x eps))))
Outputs
(pow eps 2)
(*.f64 eps eps)
(+ (* 2 (* eps x)) (pow eps 2))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(* 2 (* eps x))
(*.f64 (*.f64 eps x) #s(literal 2 binary64))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* x (+ (* 2 eps) (/ (pow eps 2) x)))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(* -1 (* x (+ (* -2 eps) (* -1 (/ (pow eps 2) x)))))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(* eps (+ eps (* 2 x)))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)
(* 2 eps)
(*.f64 #s(literal 2 binary64) eps)
(* (pow eps 2) (+ 1 (* 2 (/ x eps))))
(*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps)

rewrite27.0ms (0.6%)

Memory
-18.4MiB live, 24.9MiB allocated; 12ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01457
02055
09855
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
7 → 25
Calls
Call 1
Inputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 eps eps) x))
(*.f64 (+.f64 eps eps) x)
(+.f64 eps eps)
(fma.f64 eps eps (*.f64 (+.f64 x x) eps))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (+.f64 x x) eps)))
(*.f64 (+.f64 x x) eps)
(+.f64 x x)
Outputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 #s(literal 2 binary64) eps) x))
(*.f64 (*.f64 #s(literal 2 binary64) eps) x)
(*.f64 x (*.f64 #s(literal 2 binary64) eps))
(*.f64 #s(literal 2 binary64) eps)
(/.f64 (-.f64 (*.f64 eps eps) (*.f64 eps eps)) (-.f64 eps eps))
(/.f64 (+.f64 (pow.f64 eps #s(literal 3 binary64)) (pow.f64 eps #s(literal 3 binary64))) (fma.f64 eps eps (-.f64 (*.f64 eps eps) (*.f64 eps eps))))
(+.f64 eps eps)
(*.f64 eps (+.f64 eps (*.f64 #s(literal 2 binary64) x)))
(/.f64 (-.f64 (*.f64 (*.f64 eps eps) (*.f64 eps eps)) (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))) (-.f64 (*.f64 eps eps) (*.f64 (*.f64 #s(literal 2 binary64) x) eps)))
(/.f64 (+.f64 (pow.f64 (*.f64 eps eps) #s(literal 3 binary64)) (pow.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) #s(literal 3 binary64))) (fma.f64 (*.f64 eps eps) (*.f64 eps eps) (-.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 (*.f64 #s(literal 2 binary64) x) eps)) (*.f64 (*.f64 eps eps) (*.f64 (*.f64 #s(literal 2 binary64) x) eps)))))
(fma.f64 (neg.f64 eps) (neg.f64 eps) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (fabs.f64 eps) (fabs.f64 eps) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(fma.f64 (*.f64 #s(literal 2 binary64) x) eps (*.f64 eps eps))
(fma.f64 eps (*.f64 #s(literal 2 binary64) x) (*.f64 eps eps))
(fma.f64 eps eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(-.f64 (*.f64 eps eps) (*.f64 (neg.f64 (*.f64 #s(literal 2 binary64) x)) eps))
(+.f64 (*.f64 eps eps) (*.f64 (*.f64 #s(literal 2 binary64) x) eps))
(+.f64 (*.f64 (*.f64 #s(literal 2 binary64) x) eps) (*.f64 eps eps))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps (+.f64 eps (*.f64 #s(literal 2 binary64) x))))
(*.f64 (*.f64 #s(literal 2 binary64) x) eps)
(*.f64 eps (*.f64 #s(literal 2 binary64) x))
(*.f64 #s(literal 2 binary64) x)
(/.f64 (-.f64 (*.f64 x x) (*.f64 x x)) (-.f64 x x))
(/.f64 (+.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64))) (fma.f64 x x (-.f64 (*.f64 x x) (*.f64 x x))))
(+.f64 x x)

eval3.0ms (0.1%)

Memory
5.4MiB live, 5.4MiB allocated; 0ms collecting garbage
Compiler

Compiled 627 to 107 computations (82.9% saved)

prune4.0ms (0.1%)

Memory
7.0MiB live, 7.0MiB allocated; 0ms collecting garbage
Pruning

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New30030
Fresh000
Picked022
Done033
Total30535
Accuracy
100.0%
Counts
35 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (+.f64 x x) eps)))
100.0%
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
100.0%
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 (+.f64 eps x) x) eps))
61.6%
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 eps eps) x))
73.8%
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))
Compiler

Compiled 258 to 101 computations (60.9% saved)

regimes10.0ms (0.2%)

Memory
20.9MiB live, 20.9MiB allocated; 0ms collecting garbage
Counts
11 → 1
Calls
Call 1
Inputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 eps eps) x))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps #s(literal 2 binary64)) x))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps x) #s(literal 2 binary64)))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 (+.f64 eps x) x) eps))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (+.f64 x x) eps)))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (*.f64 #s(literal 2 binary64) x) eps)))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64))))
(-.f64 #s(approx (pow (+ x eps) 2) (*.f64 (*.f64 (fma.f64 (/.f64 eps x) (-.f64 (/.f64 eps x) #s(literal -2 binary64)) #s(literal 1 binary64)) x) x)) (pow.f64 x #s(literal 2 binary64)))
(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
Outputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (+.f64 x x) eps)))
Calls

3 calls:

3.0ms
eps
3.0ms
x
3.0ms
(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
Results
AccuracySegmentsBranch
100.0%1(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
100.0%1x
100.0%1eps
Compiler

Compiled 11 to 11 computations (0% saved)

regimes11.0ms (0.2%)

Memory
-22.3MiB live, 19.3MiB allocated; 6ms collecting garbage
Counts
6 → 1
Calls
Call 1
Inputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 eps eps) x))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps #s(literal 2 binary64)) x))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps x) #s(literal 2 binary64)))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 (+.f64 eps x) x) eps))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
Outputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
Calls

3 calls:

6.0ms
x
2.0ms
eps
2.0ms
(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
Results
AccuracySegmentsBranch
100.0%1(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
100.0%1x
100.0%1eps
Compiler

Compiled 11 to 11 computations (0% saved)

regimes6.0ms (0.1%)

Memory
16.4MiB live, 16.4MiB allocated; 0ms collecting garbage
Counts
5 → 1
Calls
Call 1
Inputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 eps eps) x))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps #s(literal 2 binary64)) x))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps x) #s(literal 2 binary64)))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 (+.f64 eps x) x) eps))
Outputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 (+.f64 eps x) x) eps))
Calls

3 calls:

2.0ms
eps
2.0ms
x
2.0ms
(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
Results
AccuracySegmentsBranch
100.0%1(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
100.0%1x
100.0%1eps
Compiler

Compiled 11 to 11 computations (0% saved)

regimes5.0ms (0.1%)

Memory
12.2MiB live, 12.2MiB allocated; 0ms collecting garbage
Counts
4 → 2
Calls
Call 1
Inputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 eps eps) x))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps #s(literal 2 binary64)) x))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (*.f64 eps x) #s(literal 2 binary64)))
Outputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 eps eps) x))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))
Calls

3 calls:

2.0ms
eps
2.0ms
x
1.0ms
(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
Results
AccuracySegmentsBranch
97.8%2(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
93.0%3x
87.7%3eps
Compiler

Compiled 11 to 11 computations (0% saved)

regimes4.0ms (0.1%)

Memory
-36.4MiB live, 10.0MiB allocated; 2ms collecting garbage
Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

Counts
1 → 1
Calls
Call 1
Inputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))
Outputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))
Calls

3 calls:

2.0ms
x
1.0ms
(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
1.0ms
eps
Results
AccuracySegmentsBranch
73.8%1eps
73.8%1x
73.8%1(-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64)))
Compiler

Compiled 11 to 11 computations (0% saved)

bsearch0.0ms (0%)

Memory
0.9MiB live, 0.9MiB allocated; 0ms collecting garbage
Algorithm
left-value
Steps
TimeLeftRight
0.0ms
1.040287216562815e-309
1.1926148418770364e-306
Compiler

Compiled 12 to 12 computations (0% saved)

simplify63.0ms (1.4%)

Memory
-3.1MiB live, 54.2MiB allocated; 13ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
030104
137104
269104
3184104
460992
5208492
6789792
Stop Event
node limit
Calls
Call 1
Inputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (+.f64 x x) eps)))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 (+.f64 eps x) x) eps))
(if (<=.f64 (-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 404804506614621/202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784 binary64)) #s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 eps eps) x)) #s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps)))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))
Outputs
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (fma.f64 eps eps (*.f64 (+.f64 x x) eps)))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (fma.f64 #s(literal 2 binary64) x eps) eps))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 (+.f64 eps x) x) eps))
(if (<=.f64 (-.f64 (pow.f64 (+.f64 x eps) #s(literal 2 binary64)) (pow.f64 x #s(literal 2 binary64))) #s(literal 404804506614621/202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784 binary64)) #s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 (+.f64 eps eps) x)) #s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps)))
#s(approx (- (pow (+ x eps) 2) (pow x 2)) (*.f64 eps eps))

derivations351.0ms (7.9%)

Memory
13.7MiB live, 344.2MiB allocated; 39ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
069215
1239203
2874191
33924183
08175172
027178
042178
1154178
01113178
01889
02787
112087
095182
Stop Event
done
iter limit
iter limit
node limit
iter limit
iter limit
iter limit
node limit
iter limit
iter limit
node limit
Compiler

Compiled 104 to 31 computations (70.2% saved)

preprocess35.0ms (0.8%)

Memory
-11.7MiB live, 42.6MiB allocated; 5ms collecting garbage
Compiler

Compiled 226 to 76 computations (66.4% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated; 0ms collecting garbage

Profiling

Loading profile data...