Graphics.Rendering.Chart.Drawing:drawTextsR from Chart-1.5.3

Time bar (total: 4.5s)

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%99.9%0.1%0%0%0%0
100%99.9%0%0.1%0%0%0%1
Compiler

Compiled 11 to 10 computations (9.1% saved)

sample1.1s (24.5%)

Memory
20.1MiB live, 1 312.3MiB allocated; 361ms collecting garbage
Samples
808.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 264.0ms
ival-mult: 145.0ms (55% of total)
ival-sub: 61.0ms (23.1% of total)
ival-add: 42.0ms (15.9% of total)
ival-true: 5.0ms (1.9% of total)
exact: 5.0ms (1.9% of total)
ival-assert: 3.0ms (1.1% of total)
adjust: 2.0ms (0.8% of total)
Bogosity

explain153.0ms (3.4%)

Memory
-16.9MiB live, 248.1MiB allocated; 42ms collecting garbage
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
40-0-(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
00-0-(*.f64 (-.f64 x #s(literal 1 binary64)) z)
00-0-y
00-0-(-.f64 x #s(literal 1 binary64))
00-0-#s(literal 1 binary64)
00-0-z
00-0-(*.f64 x y)
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
+.f64(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))nan-rescue40
(*.f64 x y)overflow31
(*.f64 (-.f64 x #s(literal 1 binary64)) z)overflow32
Confusion
Predicted +Predicted -
+40
-0252
Precision
1.0
Recall
1.0
Confusion?
Predicted +Predicted MaybePredicted -
+400
-00252
Precision?
1.0
Recall?
1.0
Freqs
test
numberfreq
0252
14
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
33.0ms512×0valid
Compiler

Compiled 61 to 28 computations (54.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 13.0ms
ival-mult: 7.0ms (54.3% of total)
ival-sub: 3.0ms (23.3% of total)
ival-add: 2.0ms (15.5% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess296.0ms (6.6%)

Memory
38.2MiB live, 282.9MiB allocated; 100ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
03290
18084
216883
330283
436983
566583
6418082
7746082
089
0129
1209
2379
3669
41179
52949
620189
754499
086168
Stop Event
iter limit
node limit
iter limit
node limit
Calls
Call 1
Inputs
(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
Outputs
(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
(fma.f64 z (-.f64 x #s(literal 1 binary64)) (*.f64 y x))
Compiler

Compiled 9 to 8 computations (11.1% saved)

eval0.0ms (0%)

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

Compiled 0 to 3 computations (-∞% saved)

prune0.0ms (0%)

Memory
0.6MiB live, 0.6MiB allocated; 0ms collecting garbage
Alt Table
Click to see full alt table
StatusAccuracyProgram
98.4%
(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
Compiler

Compiled 9 to 8 computations (11.1% saved)

simplify234.0ms (5.2%)

Memory
3.0MiB live, 331.5MiB allocated; 81ms collecting garbage
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(-.f64 x #s(literal 1 binary64))
cost-diff0
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
cost-diff0
(*.f64 x y)
cost-diff1
(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0824
01224
12024
23724
36624
411724
529424
6201824
7544924
0861623
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
(*.f64 x y)
x
y
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
(-.f64 x #s(literal 1 binary64))
#s(literal 1 binary64)
z
Outputs
(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
(fma.f64 z (-.f64 x #s(literal 1 binary64)) (*.f64 y x))
(*.f64 x y)
(*.f64 y x)
x
y
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
(*.f64 z (-.f64 x #s(literal 1 binary64)))
(-.f64 x #s(literal 1 binary64))
#s(literal 1 binary64)
z

localize26.0ms (0.6%)

Memory
-27.2MiB live, 76.5MiB allocated; 11ms collecting garbage
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(-.f64 x #s(literal 1 binary64))
accuracy0.0
(*.f64 x y)
accuracy0.0078125
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
accuracy0.9140583716604116
(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
Samples
20.0ms256×0valid
Compiler

Compiled 26 to 10 computations (61.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 8.0ms
ival-mult: 5.0ms (62.1% of total)
ival-sub: 1.0ms (12.4% of total)
ival-add: 1.0ms (12.4% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series7.0ms (0.1%)

Memory
21.5MiB live, 21.5MiB allocated; 0ms collecting garbage
Counts
4 → 22
Calls
Call 1
Inputs
(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
(*.f64 x y)
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
(-.f64 x #s(literal 1 binary64))
Outputs
(* -1 z)
(+ (* -1 z) (* x (+ y z)))
(* x y)
(+ (* -1 z) (* x z))
-1
(- x 1)
(* x (+ y z))
(* x (+ y (+ z (* -1 (/ z x)))))
(* x z)
(* x (+ z (* -1 (/ z x))))
x
(* x (- 1 (/ 1 x)))
(* -1 (* x (+ (* -1 y) (* -1 z))))
(* -1 (* x (+ (* -1 y) (+ (* -1 z) (/ z x)))))
(* -1 (* x (+ (* -1 z) (/ z x))))
(* -1 (* x (- (/ 1 x) 1)))
(* z (- x 1))
(+ (* x y) (* z (- x 1)))
(* y (+ x (/ (* z (- x 1)) y)))
(* -1 (* y (+ (* -1 x) (* -1 (/ (* z (- x 1)) y)))))
(* z (- (+ x (/ (* x y) z)) 1))
(* -1 (* z (+ (* -1 (- x 1)) (* -1 (/ (* x y) z)))))
Calls

9 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
((+ (* x y) (* (- x 1) z)) (* x y) (* (- x 1) z) (- x 1))
1.0ms
z
@0
((+ (* x y) (* (- x 1) z)) (* x y) (* (- x 1) z) (- x 1))
1.0ms
x
@inf
((+ (* x y) (* (- x 1) z)) (* x y) (* (- x 1) z) (- x 1))
1.0ms
x
@0
((+ (* x y) (* (- x 1) z)) (* x y) (* (- x 1) z) (- x 1))
1.0ms
z
@inf
((+ (* x y) (* (- x 1) z)) (* x y) (* (- x 1) z) (- x 1))

simplify215.0ms (4.8%)

Memory
-20.7MiB live, 255.5MiB allocated; 24ms collecting garbage
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
054113
1192105
2608105
31885105
45714105
08030105
Stop Event
iter limit
node limit
Counts
22 → 21
Calls
Call 1
Inputs
(* -1 z)
(+ (* -1 z) (* x (+ y z)))
(* x y)
(+ (* -1 z) (* x z))
-1
(- x 1)
(* x (+ y z))
(* x (+ y (+ z (* -1 (/ z x)))))
(* x z)
(* x (+ z (* -1 (/ z x))))
x
(* x (- 1 (/ 1 x)))
(* -1 (* x (+ (* -1 y) (* -1 z))))
(* -1 (* x (+ (* -1 y) (+ (* -1 z) (/ z x)))))
(* -1 (* x (+ (* -1 z) (/ z x))))
(* -1 (* x (- (/ 1 x) 1)))
(* z (- x 1))
(+ (* x y) (* z (- x 1)))
(* y (+ x (/ (* z (- x 1)) y)))
(* -1 (* y (+ (* -1 x) (* -1 (/ (* z (- x 1)) y)))))
(* z (- (+ x (/ (* x y) z)) 1))
(* -1 (* z (+ (* -1 (- x 1)) (* -1 (/ (* x y) z)))))
Outputs
(* -1 z)
(neg.f64 z)
(+ (* -1 z) (* x (+ y z)))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* x y)
(*.f64 y x)
(+ (* -1 z) (* x z))
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
-1
#s(literal -1 binary64)
(- x 1)
(-.f64 x #s(literal 1 binary64))
(* x (+ y z))
(*.f64 (+.f64 z y) x)
(* x (+ y (+ z (* -1 (/ z x)))))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* x z)
(*.f64 z x)
(* x (+ z (* -1 (/ z x))))
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
x
(* x (- 1 (/ 1 x)))
(-.f64 x #s(literal 1 binary64))
(* -1 (* x (+ (* -1 y) (* -1 z))))
(*.f64 (+.f64 z y) x)
(* -1 (* x (+ (* -1 y) (+ (* -1 z) (/ z x)))))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* -1 (* x (+ (* -1 z) (/ z x))))
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
(* -1 (* x (- (/ 1 x) 1)))
(-.f64 x #s(literal 1 binary64))
(* z (- x 1))
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
(+ (* x y) (* z (- x 1)))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* y (+ x (/ (* z (- x 1)) y)))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* -1 (* y (+ (* -1 x) (* -1 (/ (* z (- x 1)) y)))))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* z (- (+ x (/ (* x y) z)) 1))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* -1 (* z (+ (* -1 (- x 1)) (* -1 (/ (* x y) z)))))
(fma.f64 (+.f64 z y) x (neg.f64 z))

rewrite49.0ms (1.1%)

Memory
-6.7MiB live, 97.6MiB allocated; 9ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0820
01220
14620
034819
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
4 → 38
Calls
Call 1
Inputs
(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
(*.f64 x y)
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
(-.f64 x #s(literal 1 binary64))
Outputs
(/.f64 (-.f64 (pow.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) #s(literal 2 binary64)) (pow.f64 (*.f64 y x) #s(literal 2 binary64))) (-.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) (*.f64 y x)))
(/.f64 (-.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (pow.f64 (neg.f64 (*.f64 z (-.f64 x #s(literal 1 binary64)))) #s(literal 3 binary64))) (+.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) (+.f64 (pow.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) #s(literal 2 binary64)) (*.f64 (*.f64 y x) (neg.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))))))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) (pow.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) #s(literal 2 binary64)))) (neg.f64 (-.f64 (*.f64 y x) (*.f64 z (-.f64 x #s(literal 1 binary64))))))
(/.f64 (neg.f64 (+.f64 (pow.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) #s(literal 3 binary64)) (pow.f64 (*.f64 y x) #s(literal 3 binary64)))) (neg.f64 (fma.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) (-.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) (*.f64 y x)) (pow.f64 (*.f64 y x) #s(literal 2 binary64)))))
(/.f64 (-.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) (pow.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) #s(literal 2 binary64))) (-.f64 (*.f64 y x) (*.f64 z (-.f64 x #s(literal 1 binary64)))))
(/.f64 (+.f64 (pow.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) #s(literal 3 binary64)) (pow.f64 (*.f64 y x) #s(literal 3 binary64))) (+.f64 (pow.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) #s(literal 2 binary64)) (-.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 y x) z) (-.f64 x #s(literal 1 binary64))))))
(/.f64 (+.f64 (pow.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) #s(literal 3 binary64)) (pow.f64 (*.f64 y x) #s(literal 3 binary64))) (fma.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) (-.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) (*.f64 y x)) (pow.f64 (*.f64 y x) #s(literal 2 binary64))))
(fma.f64 z (-.f64 x #s(literal 1 binary64)) (*.f64 y x))
(fma.f64 (-.f64 x #s(literal 1 binary64)) z (*.f64 y x))
(fma.f64 y x (*.f64 (neg.f64 (neg.f64 (-.f64 x #s(literal 1 binary64)))) z))
(fma.f64 y x (*.f64 z (-.f64 x #s(literal 1 binary64))))
(fma.f64 x y (*.f64 (neg.f64 (neg.f64 (-.f64 x #s(literal 1 binary64)))) z))
(fma.f64 x y (*.f64 z (-.f64 x #s(literal 1 binary64))))
(-.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) (-.f64 (*.f64 y x) (*.f64 z (-.f64 x #s(literal 1 binary64))))) (/.f64 (pow.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) #s(literal 2 binary64)) (-.f64 (*.f64 y x) (*.f64 z (-.f64 x #s(literal 1 binary64))))))
(-.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) (*.f64 (neg.f64 y) x))
(-.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) (*.f64 (neg.f64 x) y))
(-.f64 (*.f64 y x) (*.f64 (neg.f64 z) (-.f64 x #s(literal 1 binary64))))
(-.f64 (*.f64 y x) (neg.f64 (*.f64 z (-.f64 x #s(literal 1 binary64)))))
(+.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) (-.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) (*.f64 y x)) (pow.f64 (*.f64 y x) #s(literal 2 binary64)))) (/.f64 (pow.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) #s(literal 3 binary64)) (fma.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) (-.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) (*.f64 y x)) (pow.f64 (*.f64 y x) #s(literal 2 binary64)))))
(+.f64 (*.f64 z (-.f64 x #s(literal 1 binary64))) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 (neg.f64 (neg.f64 (-.f64 x #s(literal 1 binary64)))) z))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 x #s(literal 1 binary64))))
(*.f64 y x)
(*.f64 x y)
(*.f64 z (-.f64 x #s(literal 1 binary64)))
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
(/.f64 (*.f64 (fma.f64 x x #s(literal -1 binary64)) z) (-.f64 x #s(literal -1 binary64)))
(/.f64 (*.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1 binary64)) z) (fma.f64 x x (-.f64 x #s(literal -1 binary64))))
(/.f64 (*.f64 z (fma.f64 x x #s(literal -1 binary64))) (-.f64 x #s(literal -1 binary64)))
(/.f64 (*.f64 z (-.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1 binary64))) (fma.f64 x x (-.f64 x #s(literal -1 binary64))))
(/.f64 (neg.f64 (fma.f64 x x #s(literal -1 binary64))) (neg.f64 (-.f64 x #s(literal -1 binary64))))
(/.f64 (neg.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1 binary64))) (neg.f64 (fma.f64 x x (-.f64 x #s(literal -1 binary64)))))
(/.f64 (fma.f64 x x #s(literal -1 binary64)) (-.f64 x #s(literal -1 binary64)))
(/.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1 binary64)) (fma.f64 x x (-.f64 x #s(literal -1 binary64))))
(-.f64 (/.f64 (*.f64 x x) (-.f64 x #s(literal -1 binary64))) (/.f64 #s(literal 1 binary64) (-.f64 x #s(literal -1 binary64))))
(-.f64 (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 x x (-.f64 x #s(literal -1 binary64)))) (/.f64 #s(literal 1 binary64) (fma.f64 x x (-.f64 x #s(literal -1 binary64)))))
(-.f64 x #s(literal 1 binary64))
(+.f64 x #s(literal -1 binary64))

eval5.0ms (0.1%)

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

Compiled 780 to 146 computations (81.3% saved)

prune4.0ms (0.1%)

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

6 alts after pruning (6 fresh and 0 done)

PrunedKeptTotal
New41647
Fresh000
Picked101
Done000
Total42648
Accuracy
100.0%
Counts
48 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
98.8%
(fma.f64 (-.f64 x #s(literal 1 binary64)) z (*.f64 y x))
65.9%
(+.f64 (*.f64 x y) #s(approx (* (- x 1) z) (*.f64 z x)))
100.0%
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 (+.f64 z y) x (neg.f64 z)))
60.5%
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
67.5%
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
34.8%
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
Compiler

Compiled 160 to 124 computations (22.5% saved)

simplify162.0ms (3.6%)

Memory
-4.9MiB live, 186.2MiB allocated; 29ms collecting garbage
Localize:

Found 16 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 z x)
cost-diff0
#s(approx (* (- x 1) z) (*.f64 z x))
cost-diff0
(*.f64 x y)
cost-diff1
(+.f64 (*.f64 x y) #s(approx (* (- x 1) z) (*.f64 z x)))
cost-diff0
(-.f64 x #s(literal 1 binary64))
cost-diff0
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
cost-diff0
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
cost-diff0
(+.f64 z y)
cost-diff0
(*.f64 (+.f64 z y) x)
cost-diff0
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
cost-diff0
(neg.f64 z)
cost-diff0
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
cost-diff0
(neg.f64 z)
cost-diff0
(+.f64 z y)
cost-diff0
(fma.f64 (+.f64 z y) x (neg.f64 z))
cost-diff0
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 (+.f64 z y) x (neg.f64 z)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
022130
031130
144130
269130
3131130
4253130
5468130
62327122
76021122
08031121
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 (+.f64 z y) x (neg.f64 z)))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(+.f64 z y)
z
y
x
(neg.f64 z)
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
(neg.f64 z)
z
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
(*.f64 (+.f64 z y) x)
(+.f64 z y)
z
y
x
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
(-.f64 x #s(literal 1 binary64))
x
#s(literal 1 binary64)
z
(+.f64 (*.f64 x y) #s(approx (* (- x 1) z) (*.f64 z x)))
(*.f64 x y)
x
y
#s(approx (* (- x 1) z) (*.f64 z x))
(*.f64 z x)
z
Outputs
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 (+.f64 z y) x (neg.f64 z)))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(+.f64 z y)
z
y
x
(neg.f64 z)
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
(neg.f64 z)
z
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
(*.f64 (+.f64 z y) x)
(+.f64 z y)
z
y
x
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
(-.f64 x #s(literal 1 binary64))
x
#s(literal 1 binary64)
z
(+.f64 (*.f64 x y) #s(approx (* (- x 1) z) (*.f64 z x)))
(fma.f64 y x #s(approx (* (- x 1) z) (*.f64 z x)))
(*.f64 x y)
(*.f64 y x)
x
y
#s(approx (* (- x 1) z) (*.f64 z x))
(*.f64 z x)
z

localize58.0ms (1.3%)

Memory
-17.9MiB live, 73.7MiB allocated; 10ms collecting garbage
Localize:

Found 16 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 z x)
accuracy0.0
(*.f64 x y)
accuracy0.9140583716604116
(+.f64 (*.f64 x y) #s(approx (* (- x 1) z) (*.f64 z x)))
accuracy29.82417718266038
#s(approx (* (- x 1) z) (*.f64 z x))
accuracy0.0
(-.f64 x #s(literal 1 binary64))
accuracy0.0078125
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
accuracy25.253117790094386
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
accuracy0.0
(+.f64 z y)
accuracy0.01171875
(*.f64 (+.f64 z y) x)
accuracy20.818362445598982
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
accuracy0.0
(neg.f64 z)
accuracy41.699561245840506
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
accuracy0.0
(+.f64 z y)
accuracy0.0
(neg.f64 z)
accuracy0.0
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 (+.f64 z y) x (neg.f64 z)))
accuracy0.01171875
(fma.f64 (+.f64 z y) x (neg.f64 z))
Samples
26.0ms256×0valid
Compiler

Compiled 102 to 15 computations (85.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 12.0ms
ival-mult: 6.0ms (48.2% of total)
ival-add: 3.0ms (24.1% of total)
ival-sub: 1.0ms (8% of total)
ival-neg: 1.0ms (8% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series11.0ms (0.2%)

Memory
20.0MiB live, 20.0MiB allocated; 0ms collecting garbage
Counts
14 → 42
Calls
Call 1
Inputs
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 (+.f64 z y) x (neg.f64 z)))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(+.f64 z y)
(neg.f64 z)
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
(*.f64 (+.f64 z y) x)
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
(-.f64 x #s(literal 1 binary64))
(+.f64 (*.f64 x y) #s(approx (* (- x 1) z) (*.f64 z x)))
(*.f64 x y)
#s(approx (* (- x 1) z) (*.f64 z x))
(*.f64 z x)
Outputs
(* -1 z)
(+ (* -1 z) (* x (+ y z)))
(- (* x (+ y z)) z)
(* x (+ y z))
(+ (* -1 z) (* x z))
-1
(- x 1)
(* x y)
(* x z)
(* x (+ y (+ z (* -1 (/ z x)))))
(* x (+ z (* -1 (/ z x))))
x
(* x (- 1 (/ 1 x)))
(* -1 (* x (+ (* -1 y) (* -1 z))))
(* -1 (* x (+ (* -1 y) (+ (* -1 z) (/ z x)))))
(* -1 (* x (+ (* -1 (+ y z)) (/ z x))))
(* -1 (* x (+ (* -1 z) (/ z x))))
(* -1 (* x (- (/ 1 x) 1)))
(* z (- x 1))
(+ (* x y) (* z (- x 1)))
(- (* x z) z)
(- (+ (* x y) (* x z)) z)
z
(+ y z)
(+ (* x y) (* x z))
(* y (+ x (/ (* z (- x 1)) y)))
(* y (- (+ x (/ (* x z) y)) (/ z y)))
y
(* y (+ 1 (/ z y)))
(* y (+ x (/ (* x z) y)))
(* -1 (* y (+ (* -1 x) (* -1 (/ (* z (- x 1)) y)))))
(* -1 (* y (+ (* -1 x) (* -1 (/ (- (* x z) z) y)))))
(* -1 (* y (- (* -1 (/ z y)) 1)))
(* -1 (* y (+ (* -1 x) (* -1 (/ (* x z) y)))))
(* z (- (+ x (/ (* x y) z)) 1))
(* z (+ 1 (/ y z)))
(* z (+ x (/ (* x y) z)))
(* -1 (* z (+ (* -1 (- x 1)) (* -1 (/ (* x y) z)))))
(* -1 (* z (+ 1 (* -1 x))))
(* -1 (* z (+ 1 (+ (* -1 x) (* -1 (/ (* x y) z))))))
(* -1 (* z (- (* -1 (/ y z)) 1)))
(* -1 (* z (+ (* -1 x) (* -1 (/ (* x y) z)))))
Calls

9 calls:

TimeVariablePointExpression
2.0ms
z
@inf
((+ (* x y) (* (- x 1) z)) (+ (* (+ z y) x) (neg z)) (+ z y) (neg z) (+ (* x y) (* (- x 1) z)) (+ (* x y) (* (- x 1) z)) (* (+ z y) x) (+ (* x y) (* (- x 1) z)) (* (- x 1) z) (- x 1) (+ (* x y) (* (- x 1) z)) (* x y) (* (- x 1) z) (* z x))
1.0ms
x
@-inf
((+ (* x y) (* (- x 1) z)) (+ (* (+ z y) x) (neg z)) (+ z y) (neg z) (+ (* x y) (* (- x 1) z)) (+ (* x y) (* (- x 1) z)) (* (+ z y) x) (+ (* x y) (* (- x 1) z)) (* (- x 1) z) (- x 1) (+ (* x y) (* (- x 1) z)) (* x y) (* (- x 1) z) (* z x))
1.0ms
z
@-inf
((+ (* x y) (* (- x 1) z)) (+ (* (+ z y) x) (neg z)) (+ z y) (neg z) (+ (* x y) (* (- x 1) z)) (+ (* x y) (* (- x 1) z)) (* (+ z y) x) (+ (* x y) (* (- x 1) z)) (* (- x 1) z) (- x 1) (+ (* x y) (* (- x 1) z)) (* x y) (* (- x 1) z) (* z x))
1.0ms
x
@inf
((+ (* x y) (* (- x 1) z)) (+ (* (+ z y) x) (neg z)) (+ z y) (neg z) (+ (* x y) (* (- x 1) z)) (+ (* x y) (* (- x 1) z)) (* (+ z y) x) (+ (* x y) (* (- x 1) z)) (* (- x 1) z) (- x 1) (+ (* x y) (* (- x 1) z)) (* x y) (* (- x 1) z) (* z x))
1.0ms
x
@0
((+ (* x y) (* (- x 1) z)) (+ (* (+ z y) x) (neg z)) (+ z y) (neg z) (+ (* x y) (* (- x 1) z)) (+ (* x y) (* (- x 1) z)) (* (+ z y) x) (+ (* x y) (* (- x 1) z)) (* (- x 1) z) (- x 1) (+ (* x y) (* (- x 1) z)) (* x y) (* (- x 1) z) (* z x))

simplify144.0ms (3.2%)

Memory
-5.8MiB live, 176.6MiB allocated; 26ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0100221
1359207
21152207
33542207
45933207
08312205
Stop Event
iter limit
node limit
Counts
42 → 39
Calls
Call 1
Inputs
(* -1 z)
(+ (* -1 z) (* x (+ y z)))
(- (* x (+ y z)) z)
(* x (+ y z))
(+ (* -1 z) (* x z))
-1
(- x 1)
(* x y)
(* x z)
(* x (+ y (+ z (* -1 (/ z x)))))
(* x (+ z (* -1 (/ z x))))
x
(* x (- 1 (/ 1 x)))
(* -1 (* x (+ (* -1 y) (* -1 z))))
(* -1 (* x (+ (* -1 y) (+ (* -1 z) (/ z x)))))
(* -1 (* x (+ (* -1 (+ y z)) (/ z x))))
(* -1 (* x (+ (* -1 z) (/ z x))))
(* -1 (* x (- (/ 1 x) 1)))
(* z (- x 1))
(+ (* x y) (* z (- x 1)))
(- (* x z) z)
(- (+ (* x y) (* x z)) z)
z
(+ y z)
(+ (* x y) (* x z))
(* y (+ x (/ (* z (- x 1)) y)))
(* y (- (+ x (/ (* x z) y)) (/ z y)))
y
(* y (+ 1 (/ z y)))
(* y (+ x (/ (* x z) y)))
(* -1 (* y (+ (* -1 x) (* -1 (/ (* z (- x 1)) y)))))
(* -1 (* y (+ (* -1 x) (* -1 (/ (- (* x z) z) y)))))
(* -1 (* y (- (* -1 (/ z y)) 1)))
(* -1 (* y (+ (* -1 x) (* -1 (/ (* x z) y)))))
(* z (- (+ x (/ (* x y) z)) 1))
(* z (+ 1 (/ y z)))
(* z (+ x (/ (* x y) z)))
(* -1 (* z (+ (* -1 (- x 1)) (* -1 (/ (* x y) z)))))
(* -1 (* z (+ 1 (* -1 x))))
(* -1 (* z (+ 1 (+ (* -1 x) (* -1 (/ (* x y) z))))))
(* -1 (* z (- (* -1 (/ y z)) 1)))
(* -1 (* z (+ (* -1 x) (* -1 (/ (* x y) z)))))
Outputs
(* -1 z)
(neg.f64 z)
(+ (* -1 z) (* x (+ y z)))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(- (* x (+ y z)) z)
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* x (+ y z))
(*.f64 (+.f64 z y) x)
(+ (* -1 z) (* x z))
(*.f64 z (-.f64 x #s(literal 1 binary64)))
-1
#s(literal -1 binary64)
(- x 1)
(-.f64 x #s(literal 1 binary64))
(* x y)
(*.f64 y x)
(* x z)
(*.f64 z x)
(* x (+ y (+ z (* -1 (/ z x)))))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* x (+ z (* -1 (/ z x))))
(*.f64 z (-.f64 x #s(literal 1 binary64)))
x
(* x (- 1 (/ 1 x)))
(fma.f64 (/.f64 #s(literal -1 binary64) x) x x)
(* -1 (* x (+ (* -1 y) (* -1 z))))
(*.f64 (+.f64 z y) x)
(* -1 (* x (+ (* -1 y) (+ (* -1 z) (/ z x)))))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* -1 (* x (+ (* -1 (+ y z)) (/ z x))))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* -1 (* x (+ (* -1 z) (/ z x))))
(*.f64 z (-.f64 x #s(literal 1 binary64)))
(* -1 (* x (- (/ 1 x) 1)))
(fma.f64 (/.f64 #s(literal -1 binary64) x) x x)
(* z (- x 1))
(*.f64 z (-.f64 x #s(literal 1 binary64)))
(+ (* x y) (* z (- x 1)))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(- (* x z) z)
(*.f64 z (-.f64 x #s(literal 1 binary64)))
(- (+ (* x y) (* x z)) z)
(fma.f64 (+.f64 z y) x (neg.f64 z))
z
(+ y z)
(+.f64 z y)
(+ (* x y) (* x z))
(*.f64 (+.f64 z y) x)
(* y (+ x (/ (* z (- x 1)) y)))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* y (- (+ x (/ (* x z) y)) (/ z y)))
(fma.f64 (+.f64 z y) x (neg.f64 z))
y
(* y (+ 1 (/ z y)))
(+.f64 z y)
(* y (+ x (/ (* x z) y)))
(*.f64 (+.f64 z y) x)
(* -1 (* y (+ (* -1 x) (* -1 (/ (* z (- x 1)) y)))))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* -1 (* y (+ (* -1 x) (* -1 (/ (- (* x z) z) y)))))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* -1 (* y (- (* -1 (/ z y)) 1)))
(+.f64 z y)
(* -1 (* y (+ (* -1 x) (* -1 (/ (* x z) y)))))
(*.f64 (+.f64 z y) x)
(* z (- (+ x (/ (* x y) z)) 1))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* z (+ 1 (/ y z)))
(+.f64 z y)
(* z (+ x (/ (* x y) z)))
(*.f64 (+.f64 z y) x)
(* -1 (* z (+ (* -1 (- x 1)) (* -1 (/ (* x y) z)))))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* -1 (* z (+ 1 (* -1 x))))
(*.f64 z (-.f64 x #s(literal 1 binary64)))
(* -1 (* z (+ 1 (+ (* -1 x) (* -1 (/ (* x y) z))))))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* -1 (* z (- (* -1 (/ y z)) 1)))
(+.f64 z y)
(* -1 (* z (+ (* -1 x) (* -1 (/ (* x y) z)))))
(*.f64 (+.f64 z y) x)

rewrite55.0ms (1.2%)

Memory
22.1MiB live, 80.3MiB allocated; 6ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
022112
031112
1104112
0741107
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
14 → 74
Calls
Call 1
Inputs
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 (+.f64 z y) x (neg.f64 z)))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(+.f64 z y)
(neg.f64 z)
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
(*.f64 (+.f64 z y) x)
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
(-.f64 x #s(literal 1 binary64))
(+.f64 (*.f64 x y) #s(approx (* (- x 1) z) (*.f64 z x)))
(*.f64 x y)
#s(approx (* (- x 1) z) (*.f64 z x))
(*.f64 z x)
Outputs
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 (+.f64 z y) x (neg.f64 z)))
(/.f64 (-.f64 (*.f64 z z) (pow.f64 (*.f64 (+.f64 z y) x) #s(literal 2 binary64))) (-.f64 (neg.f64 z) (*.f64 (+.f64 z y) x)))
(/.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 (+.f64 z y) x) #s(literal 2 binary64)) (*.f64 z z))) (neg.f64 (-.f64 (*.f64 (+.f64 z y) x) (neg.f64 z))))
(/.f64 (neg.f64 (+.f64 (pow.f64 (neg.f64 z) #s(literal 3 binary64)) (pow.f64 (*.f64 (+.f64 z y) x) #s(literal 3 binary64)))) (neg.f64 (fma.f64 (neg.f64 z) (-.f64 (neg.f64 z) (*.f64 (+.f64 z y) x)) (pow.f64 (*.f64 (+.f64 z y) x) #s(literal 2 binary64)))))
(/.f64 (-.f64 (pow.f64 (*.f64 (+.f64 z y) x) #s(literal 2 binary64)) (*.f64 z z)) (-.f64 (*.f64 (+.f64 z y) x) (neg.f64 z)))
(/.f64 (+.f64 (pow.f64 (neg.f64 z) #s(literal 3 binary64)) (pow.f64 (*.f64 (+.f64 z y) x) #s(literal 3 binary64))) (fma.f64 z z (-.f64 (pow.f64 (*.f64 (+.f64 z y) x) #s(literal 2 binary64)) (*.f64 (*.f64 (+.f64 z y) x) (neg.f64 z)))))
(/.f64 (+.f64 (pow.f64 (neg.f64 z) #s(literal 3 binary64)) (pow.f64 (*.f64 (+.f64 z y) x) #s(literal 3 binary64))) (fma.f64 (neg.f64 z) (-.f64 (neg.f64 z) (*.f64 (+.f64 z y) x)) (pow.f64 (*.f64 (+.f64 z y) x) #s(literal 2 binary64))))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(fma.f64 x (+.f64 z y) (neg.f64 z))
(-.f64 (/.f64 (pow.f64 (*.f64 (+.f64 z y) x) #s(literal 2 binary64)) (-.f64 (*.f64 (+.f64 z y) x) (neg.f64 z))) (/.f64 (*.f64 z z) (-.f64 (*.f64 (+.f64 z y) x) (neg.f64 z))))
(-.f64 (neg.f64 z) (*.f64 (neg.f64 (+.f64 z y)) x))
(-.f64 (neg.f64 z) (*.f64 (neg.f64 x) (+.f64 z y)))
(+.f64 (/.f64 (pow.f64 (*.f64 (+.f64 z y) x) #s(literal 3 binary64)) (fma.f64 (neg.f64 z) (-.f64 (neg.f64 z) (*.f64 (+.f64 z y) x)) (pow.f64 (*.f64 (+.f64 z y) x) #s(literal 2 binary64)))) (/.f64 (pow.f64 (neg.f64 z) #s(literal 3 binary64)) (fma.f64 (neg.f64 z) (-.f64 (neg.f64 z) (*.f64 (+.f64 z y) x)) (pow.f64 (*.f64 (+.f64 z y) x) #s(literal 2 binary64)))))
(+.f64 (*.f64 (+.f64 z y) x) (neg.f64 z))
(+.f64 (neg.f64 z) (*.f64 (+.f64 z y) x))
(/.f64 (-.f64 (*.f64 y y) (*.f64 z z)) (-.f64 y z))
(/.f64 (neg.f64 (*.f64 (+.f64 z y) (-.f64 z y))) (neg.f64 (-.f64 z y)))
(/.f64 (neg.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 z #s(literal 3 binary64)))) (neg.f64 (fma.f64 y (-.f64 y z) (*.f64 z z))))
(/.f64 (*.f64 (+.f64 z y) (-.f64 z y)) (-.f64 z y))
(/.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 z #s(literal 3 binary64))) (fma.f64 y y (-.f64 (*.f64 z z) (*.f64 z y))))
(/.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 z #s(literal 3 binary64))) (fma.f64 y (-.f64 y z) (*.f64 z z)))
(-.f64 (/.f64 (*.f64 z z) (-.f64 z y)) (/.f64 (*.f64 y y) (-.f64 z y)))
(+.f64 (/.f64 (pow.f64 z #s(literal 3 binary64)) (fma.f64 y (-.f64 y z) (*.f64 z z))) (/.f64 (pow.f64 y #s(literal 3 binary64)) (fma.f64 y (-.f64 y z) (*.f64 z z))))
(+.f64 z y)
(+.f64 y z)
(neg.f64 z)
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
(*.f64 (+.f64 z y) x)
(*.f64 x (+.f64 z y))
(/.f64 (*.f64 (*.f64 (+.f64 z y) (-.f64 z y)) x) (-.f64 z y))
(/.f64 (*.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 z #s(literal 3 binary64))) x) (fma.f64 y (-.f64 y z) (*.f64 z z)))
(/.f64 (*.f64 x (*.f64 (+.f64 z y) (-.f64 z y))) (-.f64 z y))
(/.f64 (*.f64 x (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 z #s(literal 3 binary64)))) (fma.f64 y (-.f64 y z) (*.f64 z z)))
(fma.f64 z x (*.f64 y x))
(fma.f64 y x (*.f64 z x))
(fma.f64 x z (*.f64 y x))
(fma.f64 x y (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z x))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
(*.f64 z (-.f64 x #s(literal 1 binary64)))
(/.f64 (*.f64 (fma.f64 x x #s(literal -1 binary64)) z) (-.f64 x #s(literal -1 binary64)))
(/.f64 (*.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1 binary64)) z) (fma.f64 x x (-.f64 x #s(literal -1 binary64))))
(/.f64 (*.f64 z (fma.f64 x x #s(literal -1 binary64))) (-.f64 x #s(literal -1 binary64)))
(/.f64 (*.f64 z (-.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1 binary64))) (fma.f64 x x (-.f64 x #s(literal -1 binary64))))
(/.f64 (neg.f64 (fma.f64 x x #s(literal -1 binary64))) (neg.f64 (-.f64 x #s(literal -1 binary64))))
(/.f64 (neg.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1 binary64))) (neg.f64 (fma.f64 x x (-.f64 x #s(literal -1 binary64)))))
(/.f64 (fma.f64 x x #s(literal -1 binary64)) (-.f64 x #s(literal -1 binary64)))
(/.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1 binary64)) (fma.f64 x x (-.f64 x #s(literal -1 binary64))))
(-.f64 (/.f64 (*.f64 x x) (-.f64 x #s(literal -1 binary64))) (/.f64 #s(literal 1 binary64) (-.f64 x #s(literal -1 binary64))))
(-.f64 (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 x x (-.f64 x #s(literal -1 binary64)))) (/.f64 #s(literal 1 binary64) (fma.f64 x x (-.f64 x #s(literal -1 binary64)))))
(-.f64 x #s(literal 1 binary64))
(+.f64 x #s(literal -1 binary64))
(/.f64 (-.f64 (pow.f64 #s(approx (* (- x 1) z) (*.f64 z x)) #s(literal 2 binary64)) (pow.f64 (*.f64 y x) #s(literal 2 binary64))) (-.f64 #s(approx (* (- x 1) z) (*.f64 z x)) (*.f64 y x)))
(/.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) (pow.f64 #s(approx (* (- x 1) z) (*.f64 z x)) #s(literal 2 binary64)))) (neg.f64 (-.f64 (*.f64 y x) #s(approx (* (- x 1) z) (*.f64 z x)))))
(/.f64 (neg.f64 (+.f64 (pow.f64 #s(approx (* (- x 1) z) (*.f64 z x)) #s(literal 3 binary64)) (pow.f64 (*.f64 y x) #s(literal 3 binary64)))) (neg.f64 (fma.f64 #s(approx (* (- x 1) z) (*.f64 z x)) (-.f64 #s(approx (* (- x 1) z) (*.f64 z x)) (*.f64 y x)) (pow.f64 (*.f64 y x) #s(literal 2 binary64)))))
(/.f64 (-.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) (pow.f64 #s(approx (* (- x 1) z) (*.f64 z x)) #s(literal 2 binary64))) (-.f64 (*.f64 y x) #s(approx (* (- x 1) z) (*.f64 z x))))
(/.f64 (+.f64 (pow.f64 #s(approx (* (- x 1) z) (*.f64 z x)) #s(literal 3 binary64)) (pow.f64 (*.f64 y x) #s(literal 3 binary64))) (+.f64 (pow.f64 #s(approx (* (- x 1) z) (*.f64 z x)) #s(literal 2 binary64)) (-.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) (*.f64 #s(approx (* (- x 1) z) (*.f64 z x)) (*.f64 y x)))))
(/.f64 (+.f64 (pow.f64 #s(approx (* (- x 1) z) (*.f64 z x)) #s(literal 3 binary64)) (pow.f64 (*.f64 y x) #s(literal 3 binary64))) (fma.f64 #s(approx (* (- x 1) z) (*.f64 z x)) (-.f64 #s(approx (* (- x 1) z) (*.f64 z x)) (*.f64 y x)) (pow.f64 (*.f64 y x) #s(literal 2 binary64))))
(fma.f64 y x #s(approx (* (- x 1) z) (*.f64 z x)))
(fma.f64 x y #s(approx (* (- x 1) z) (*.f64 z x)))
(-.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) (-.f64 (*.f64 y x) #s(approx (* (- x 1) z) (*.f64 z x)))) (/.f64 (pow.f64 #s(approx (* (- x 1) z) (*.f64 z x)) #s(literal 2 binary64)) (-.f64 (*.f64 y x) #s(approx (* (- x 1) z) (*.f64 z x)))))
(-.f64 #s(approx (* (- x 1) z) (*.f64 z x)) (*.f64 (neg.f64 y) x))
(-.f64 #s(approx (* (- x 1) z) (*.f64 z x)) (*.f64 (neg.f64 x) y))
(+.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 #s(approx (* (- x 1) z) (*.f64 z x)) (-.f64 #s(approx (* (- x 1) z) (*.f64 z x)) (*.f64 y x)) (pow.f64 (*.f64 y x) #s(literal 2 binary64)))) (/.f64 (pow.f64 #s(approx (* (- x 1) z) (*.f64 z x)) #s(literal 3 binary64)) (fma.f64 #s(approx (* (- x 1) z) (*.f64 z x)) (-.f64 #s(approx (* (- x 1) z) (*.f64 z x)) (*.f64 y x)) (pow.f64 (*.f64 y x) #s(literal 2 binary64)))))
(+.f64 #s(approx (* (- x 1) z) (*.f64 z x)) (*.f64 y x))
(+.f64 (*.f64 y x) #s(approx (* (- x 1) z) (*.f64 z x)))
(*.f64 y x)
(*.f64 x y)
#s(approx (* (- x 1) z) (*.f64 z x))
(*.f64 z x)
(*.f64 x z)

eval25.0ms (0.6%)

Memory
-21.7MiB live, 24.8MiB allocated; 3ms collecting garbage
Compiler

Compiled 2 305 to 293 computations (87.3% saved)

prune6.0ms (0.1%)

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

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New96197
Fresh101
Picked145
Done000
Total985103
Accuracy
100.0%
Counts
103 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 (+.f64 z y) x (neg.f64 z)))
66.3%
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 z x (*.f64 y x)))
60.5%
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
67.5%
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
34.8%
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
Compiler

Compiled 75 to 56 computations (25.3% saved)

simplify229.0ms (5.1%)

Memory
-13.6MiB live, 172.2MiB allocated; 22ms collecting garbage
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 y x)
cost-diff0
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 z x (*.f64 y x)))
cost-diff1
(fma.f64 z x (*.f64 y x))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01128
01426
13126
26126
310726
417526
537426
6221026
7583926
0810925
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 z x (*.f64 y x)))
(fma.f64 z x (*.f64 y x))
z
x
(*.f64 y x)
y
Outputs
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 z x (*.f64 y x)))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
(fma.f64 z x (*.f64 y x))
(*.f64 (+.f64 z y) x)
z
x
(*.f64 y x)
y

localize26.0ms (0.6%)

Memory
10.6MiB live, 56.3MiB allocated; 3ms collecting garbage
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 y x)
accuracy0.7538979928166807
(fma.f64 z x (*.f64 y x))
accuracy20.818362445598982
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 z x (*.f64 y x)))
Samples
20.0ms256×0valid
Compiler

Compiled 24 to 13 computations (45.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 10.0ms
ival-mult: 6.0ms (58.7% of total)
ival-add: 2.0ms (19.6% of total)
ival-sub: 1.0ms (9.8% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series4.0ms (0.1%)

Memory
9.7MiB live, 9.7MiB allocated; 0ms collecting garbage
Counts
3 → 19
Calls
Call 1
Inputs
(fma.f64 z x (*.f64 y x))
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 z x (*.f64 y x)))
(*.f64 y x)
Outputs
(* x (+ y z))
(* -1 z)
(+ (* -1 z) (* x (+ y z)))
(* x y)
(* x (+ y (+ z (* -1 (/ z x)))))
(* -1 (* x (+ (* -1 y) (* -1 z))))
(* -1 (* x (+ (* -1 y) (+ (* -1 z) (/ z x)))))
(* x z)
(+ (* x y) (* x z))
(* z (- x 1))
(+ (* x y) (* z (- x 1)))
(* y (+ x (/ (* x z) y)))
(* y (+ x (/ (* z (- x 1)) y)))
(* -1 (* y (+ (* -1 x) (* -1 (/ (* x z) y)))))
(* -1 (* y (+ (* -1 x) (* -1 (/ (* z (- x 1)) y)))))
(* z (+ x (/ (* x y) z)))
(* z (- (+ x (/ (* x y) z)) 1))
(* -1 (* z (+ (* -1 x) (* -1 (/ (* x y) z)))))
(* -1 (* z (+ (* -1 (- x 1)) (* -1 (/ (* x y) z)))))
Calls

9 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
((+ (* z x) (* y x)) (+ (* x y) (* (- x 1) z)) (* y x))
1.0ms
x
@inf
((+ (* z x) (* y x)) (+ (* x y) (* (- x 1) z)) (* y x))
0.0ms
y
@-inf
((+ (* z x) (* y x)) (+ (* x y) (* (- x 1) z)) (* y x))
0.0ms
x
@0
((+ (* z x) (* y x)) (+ (* x y) (* (- x 1) z)) (* y x))
0.0ms
z
@-inf
((+ (* z x) (* y x)) (+ (* x y) (* (- x 1) z)) (* y x))

simplify338.0ms (7.5%)

Memory
-43.2MiB live, 207.8MiB allocated; 169ms collecting garbage
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
056116
1218108
2737108
32295108
46186108
08430108
Stop Event
iter limit
node limit
Counts
19 → 19
Calls
Call 1
Inputs
(* x (+ y z))
(* -1 z)
(+ (* -1 z) (* x (+ y z)))
(* x y)
(* x (+ y (+ z (* -1 (/ z x)))))
(* -1 (* x (+ (* -1 y) (* -1 z))))
(* -1 (* x (+ (* -1 y) (+ (* -1 z) (/ z x)))))
(* x z)
(+ (* x y) (* x z))
(* z (- x 1))
(+ (* x y) (* z (- x 1)))
(* y (+ x (/ (* x z) y)))
(* y (+ x (/ (* z (- x 1)) y)))
(* -1 (* y (+ (* -1 x) (* -1 (/ (* x z) y)))))
(* -1 (* y (+ (* -1 x) (* -1 (/ (* z (- x 1)) y)))))
(* z (+ x (/ (* x y) z)))
(* z (- (+ x (/ (* x y) z)) 1))
(* -1 (* z (+ (* -1 x) (* -1 (/ (* x y) z)))))
(* -1 (* z (+ (* -1 (- x 1)) (* -1 (/ (* x y) z)))))
Outputs
(* x (+ y z))
(*.f64 (+.f64 y z) x)
(* -1 z)
(neg.f64 z)
(+ (* -1 z) (* x (+ y z)))
(fma.f64 (+.f64 y z) x (neg.f64 z))
(* x y)
(*.f64 y x)
(* x (+ y (+ z (* -1 (/ z x)))))
(*.f64 (-.f64 y (-.f64 (/.f64 z x) z)) x)
(* -1 (* x (+ (* -1 y) (* -1 z))))
(*.f64 (+.f64 y z) x)
(* -1 (* x (+ (* -1 y) (+ (* -1 z) (/ z x)))))
(*.f64 (-.f64 y (-.f64 (/.f64 z x) z)) x)
(* x z)
(*.f64 x z)
(+ (* x y) (* x z))
(*.f64 (+.f64 y z) x)
(* z (- x 1))
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
(+ (* x y) (* z (- x 1)))
(fma.f64 (+.f64 y z) x (neg.f64 z))
(* y (+ x (/ (* x z) y)))
(*.f64 (+.f64 y z) x)
(* y (+ x (/ (* z (- x 1)) y)))
(fma.f64 (+.f64 y z) x (neg.f64 z))
(* -1 (* y (+ (* -1 x) (* -1 (/ (* x z) y)))))
(*.f64 (+.f64 y z) x)
(* -1 (* y (+ (* -1 x) (* -1 (/ (* z (- x 1)) y)))))
(fma.f64 (+.f64 y z) x (neg.f64 z))
(* z (+ x (/ (* x y) z)))
(*.f64 (+.f64 y z) x)
(* z (- (+ x (/ (* x y) z)) 1))
(fma.f64 (+.f64 y z) x (neg.f64 z))
(* -1 (* z (+ (* -1 x) (* -1 (/ (* x y) z)))))
(*.f64 (+.f64 y z) x)
(* -1 (* z (+ (* -1 (- x 1)) (* -1 (/ (* x y) z)))))
(fma.f64 (+.f64 y z) x (neg.f64 z))

rewrite43.0ms (0.9%)

Memory
0.4MiB live, 58.2MiB allocated; 21ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01125
01423
17423
051722
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
3 → 28
Calls
Call 1
Inputs
(fma.f64 z x (*.f64 y x))
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 z x (*.f64 y x)))
(*.f64 y x)
Outputs
(*.f64 (+.f64 y z) x)
(*.f64 x (-.f64 z (neg.f64 y)))
(*.f64 x (+.f64 y z))
(/.f64 (-.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) (pow.f64 (*.f64 x z) #s(literal 2 binary64))) (-.f64 (*.f64 y x) (*.f64 x z)))
(/.f64 (-.f64 (pow.f64 (*.f64 x z) #s(literal 3 binary64)) (pow.f64 (*.f64 (neg.f64 y) x) #s(literal 3 binary64))) (+.f64 (pow.f64 (*.f64 x z) #s(literal 2 binary64)) (+.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) (*.f64 (*.f64 x z) (*.f64 (neg.f64 y) x)))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 x z) #s(literal 2 binary64)) (pow.f64 (*.f64 y x) #s(literal 2 binary64)))) (neg.f64 (*.f64 x (-.f64 z y))))
(/.f64 (neg.f64 (+.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (pow.f64 (*.f64 x z) #s(literal 3 binary64)))) (neg.f64 (fma.f64 (*.f64 y x) (-.f64 (*.f64 y x) (*.f64 x z)) (pow.f64 (*.f64 x z) #s(literal 2 binary64)))))
(/.f64 (-.f64 (pow.f64 (*.f64 x z) #s(literal 2 binary64)) (pow.f64 (*.f64 y x) #s(literal 2 binary64))) (*.f64 x (-.f64 z y)))
(/.f64 (+.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (pow.f64 (*.f64 x z) #s(literal 3 binary64))) (+.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) (-.f64 (pow.f64 (*.f64 x z) #s(literal 2 binary64)) (*.f64 (*.f64 (*.f64 x z) y) x))))
(/.f64 (+.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (pow.f64 (*.f64 x z) #s(literal 3 binary64))) (fma.f64 (*.f64 y x) (-.f64 (*.f64 y x) (*.f64 x z)) (pow.f64 (*.f64 x z) #s(literal 2 binary64))))
(fma.f64 y x (*.f64 x z))
(fma.f64 x y (*.f64 x z))
(fma.f64 x z (*.f64 (neg.f64 (neg.f64 y)) x))
(fma.f64 x z (*.f64 y x))
(fma.f64 z x (*.f64 (neg.f64 (neg.f64 y)) x))
(fma.f64 z x (*.f64 y x))
(-.f64 (/.f64 (pow.f64 (*.f64 x z) #s(literal 2 binary64)) (*.f64 x (-.f64 z y))) (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) (*.f64 x (-.f64 z y))))
(-.f64 (*.f64 x z) (*.f64 (neg.f64 x) y))
(-.f64 (*.f64 x z) (*.f64 (neg.f64 y) x))
(-.f64 (*.f64 y x) (*.f64 (neg.f64 x) z))
(-.f64 (*.f64 y x) (*.f64 (neg.f64 z) x))
(+.f64 (/.f64 (pow.f64 (*.f64 x z) #s(literal 3 binary64)) (fma.f64 (*.f64 y x) (-.f64 (*.f64 y x) (*.f64 x z)) (pow.f64 (*.f64 x z) #s(literal 2 binary64)))) (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 y x) (-.f64 (*.f64 y x) (*.f64 x z)) (pow.f64 (*.f64 x z) #s(literal 2 binary64)))))
(+.f64 (*.f64 x z) (*.f64 (neg.f64 (neg.f64 y)) x))
(+.f64 (*.f64 x z) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 x z))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 y z) x))
(*.f64 y x)
(*.f64 x y)

eval3.0ms (0.1%)

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

Compiled 780 to 126 computations (83.8% saved)

prune3.0ms (0.1%)

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

6 alts after pruning (1 fresh and 5 done)

PrunedKeptTotal
New34135
Fresh000
Picked011
Done044
Total34640
Accuracy
100.0%
Counts
40 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 (+.f64 z y) x (neg.f64 z)))
66.3%
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 z x (*.f64 y x)))
60.5%
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
67.5%
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
34.8%
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
28.4%
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))
Compiler

Compiled 96 to 70 computations (27.1% saved)

simplify161.0ms (3.6%)

Memory
4.1MiB live, 134.2MiB allocated; 26ms collecting garbage
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 x z)
cost-diff0
#s(approx (+ (* z x) (* y x)) (*.f64 x z))
cost-diff0
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01437
01533
13133
26133
310733
417533
537433
6220733
7582733
0809832
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))
#s(approx (+ (* z x) (* y x)) (*.f64 x z))
(*.f64 x z)
x
z
Outputs
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 z x)))
#s(approx (+ (* z x) (* y x)) (*.f64 x z))
#s(approx (+ (* z x) (* y x)) (*.f64 z x))
(*.f64 x z)
(*.f64 z x)
x
z

localize64.0ms (1.4%)

Memory
1.7MiB live, 61.6MiB allocated; 15ms collecting garbage
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 x z)
accuracy20.818362445598982
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))
accuracy30.585600343184836
#s(approx (+ (* z x) (* y x)) (*.f64 x z))
Samples
58.0ms256×0valid
Compiler

Compiled 23 to 14 computations (39.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 51.0ms
ival-mult: 35.0ms (69% of total)
ival-add: 14.0ms (27.6% of total)
ival-sub: 1.0ms (2% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series4.0ms (0.1%)

Memory
11.1MiB live, 11.1MiB allocated; 0ms collecting garbage
Counts
3 → 19
Calls
Call 1
Inputs
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))
#s(approx (+ (* z x) (* y x)) (*.f64 x z))
(*.f64 x z)
Outputs
(* -1 z)
(+ (* -1 z) (* x (+ y z)))
(* x (+ y z))
(* x z)
(* x (+ y (+ z (* -1 (/ z x)))))
(* -1 (* x (+ (* -1 y) (* -1 z))))
(* -1 (* x (+ (* -1 y) (+ (* -1 z) (/ z x)))))
(* z (- x 1))
(+ (* x y) (* z (- x 1)))
(+ (* x y) (* x z))
(* x y)
(* y (+ x (/ (* z (- x 1)) y)))
(* y (+ x (/ (* x z) y)))
(* -1 (* y (+ (* -1 x) (* -1 (/ (* z (- x 1)) y)))))
(* -1 (* y (+ (* -1 x) (* -1 (/ (* x z) y)))))
(* z (- (+ x (/ (* x y) z)) 1))
(* z (+ x (/ (* x y) z)))
(* -1 (* z (+ (* -1 (- x 1)) (* -1 (/ (* x y) z)))))
(* -1 (* z (+ (* -1 x) (* -1 (/ (* x y) z)))))
Calls

9 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
((+ (* x y) (* (- x 1) z)) (+ (* z x) (* y x)) (* x z))
1.0ms
x
@inf
((+ (* x y) (* (- x 1) z)) (+ (* z x) (* y x)) (* x z))
1.0ms
z
@-inf
((+ (* x y) (* (- x 1) z)) (+ (* z x) (* y x)) (* x z))
0.0ms
x
@0
((+ (* x y) (* (- x 1) z)) (+ (* z x) (* y x)) (* x z))
0.0ms
z
@inf
((+ (* x y) (* (- x 1) z)) (+ (* z x) (* y x)) (* x z))

simplify189.0ms (4.2%)

Memory
-5.2MiB live, 223.2MiB allocated; 49ms collecting garbage
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
056116
1218108
2737108
32302108
46169108
08418108
Stop Event
iter limit
node limit
Counts
19 → 19
Calls
Call 1
Inputs
(* -1 z)
(+ (* -1 z) (* x (+ y z)))
(* x (+ y z))
(* x z)
(* x (+ y (+ z (* -1 (/ z x)))))
(* -1 (* x (+ (* -1 y) (* -1 z))))
(* -1 (* x (+ (* -1 y) (+ (* -1 z) (/ z x)))))
(* z (- x 1))
(+ (* x y) (* z (- x 1)))
(+ (* x y) (* x z))
(* x y)
(* y (+ x (/ (* z (- x 1)) y)))
(* y (+ x (/ (* x z) y)))
(* -1 (* y (+ (* -1 x) (* -1 (/ (* z (- x 1)) y)))))
(* -1 (* y (+ (* -1 x) (* -1 (/ (* x z) y)))))
(* z (- (+ x (/ (* x y) z)) 1))
(* z (+ x (/ (* x y) z)))
(* -1 (* z (+ (* -1 (- x 1)) (* -1 (/ (* x y) z)))))
(* -1 (* z (+ (* -1 x) (* -1 (/ (* x y) z)))))
Outputs
(* -1 z)
(neg.f64 z)
(+ (* -1 z) (* x (+ y z)))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* x (+ y z))
(*.f64 (+.f64 z y) x)
(* x z)
(*.f64 z x)
(* x (+ y (+ z (* -1 (/ z x)))))
(*.f64 (-.f64 z (-.f64 (/.f64 z x) y)) x)
(* -1 (* x (+ (* -1 y) (* -1 z))))
(*.f64 (+.f64 z y) x)
(* -1 (* x (+ (* -1 y) (+ (* -1 z) (/ z x)))))
(*.f64 (-.f64 z (-.f64 (/.f64 z x) y)) x)
(* z (- x 1))
(*.f64 z (-.f64 x #s(literal 1 binary64)))
(+ (* x y) (* z (- x 1)))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(+ (* x y) (* x z))
(*.f64 (+.f64 z y) x)
(* x y)
(*.f64 y x)
(* y (+ x (/ (* z (- x 1)) y)))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* y (+ x (/ (* x z) y)))
(*.f64 (+.f64 z y) x)
(* -1 (* y (+ (* -1 x) (* -1 (/ (* z (- x 1)) y)))))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* -1 (* y (+ (* -1 x) (* -1 (/ (* x z) y)))))
(*.f64 (+.f64 z y) x)
(* z (- (+ x (/ (* x y) z)) 1))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* z (+ x (/ (* x y) z)))
(*.f64 (+.f64 z y) x)
(* -1 (* z (+ (* -1 (- x 1)) (* -1 (/ (* x y) z)))))
(fma.f64 (+.f64 z y) x (neg.f64 z))
(* -1 (* z (+ (* -1 x) (* -1 (/ (* x y) z)))))
(*.f64 (+.f64 z y) x)

rewrite30.0ms (0.7%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01435
01531
17431
051730
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
3 → 4
Calls
Call 1
Inputs
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))
#s(approx (+ (* z x) (* y x)) (*.f64 x z))
(*.f64 x z)
Outputs
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 z x)))
#s(approx (+ (* z x) (* y x)) (*.f64 z x))
(*.f64 z x)
(*.f64 x z)

eval42.0ms (0.9%)

Memory
-40.0MiB live, 5.4MiB allocated; 9ms collecting garbage
Compiler

Compiled 223 to 41 computations (81.6% saved)

prune4.0ms (0.1%)

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

7 alts after pruning (1 fresh and 6 done)

PrunedKeptTotal
New11112
Fresh000
Picked011
Done055
Total11718
Accuracy
100.0%
Counts
18 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 (+.f64 z y) x (neg.f64 z)))
66.3%
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 z x (*.f64 y x)))
60.5%
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
67.5%
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
42.0%
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 y x))
34.8%
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
28.4%
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))
Compiler

Compiled 248 to 115 computations (53.6% saved)

regimes14.0ms (0.3%)

Memory
25.2MiB live, 25.2MiB allocated; 0ms collecting garbage
Counts
10 → 1
Calls
Call 1
Inputs
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 y x))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 z x (*.f64 y x)))
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 (+.f64 z y) x (neg.f64 z)))
(+.f64 (*.f64 x y) #s(approx (* (- x 1) z) (*.f64 z x)))
(fma.f64 (-.f64 x #s(literal 1 binary64)) z (*.f64 y x))
(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
Outputs
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 (+.f64 z y) x (neg.f64 z)))
Calls

4 calls:

3.0ms
z
3.0ms
y
3.0ms
x
3.0ms
(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
Results
AccuracySegmentsBranch
100.0%1(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
100.0%1x
100.0%1y
100.0%1z
Compiler

Compiled 12 to 17 computations (-41.7% saved)

regimes24.0ms (0.5%)

Memory
-21.9MiB live, 22.2MiB allocated; 9ms collecting garbage
Counts
6 → 3
Calls
Call 1
Inputs
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 y x))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 z x (*.f64 y x)))
Outputs
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
Calls

4 calls:

16.0ms
x
2.0ms
z
2.0ms
y
2.0ms
(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
Results
AccuracySegmentsBranch
76.6%3(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
86.5%3x
83.4%3y
82.5%3z
Compiler

Compiled 12 to 17 computations (-41.7% saved)

regimes2.0ms (0%)

Memory
5.6MiB live, 5.6MiB allocated; 0ms collecting garbage
Counts
4 → 3
Calls
Call 1
Inputs
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 y x))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
Outputs
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
Calls

1 calls:

2.0ms
x
Results
AccuracySegmentsBranch
86.2%3x
Compiler

Compiled 1 to 3 computations (-200% saved)

regimes7.0ms (0.2%)

Memory
17.7MiB live, 17.7MiB allocated; 0ms collecting garbage
Counts
3 → 5
Calls
Call 1
Inputs
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 y x))
Outputs
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 y x))
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 y x))
Calls

4 calls:

2.0ms
z
2.0ms
x
2.0ms
y
2.0ms
(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
Results
AccuracySegmentsBranch
53.2%4(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
63.0%4z
58.6%3y
67.7%5x
Compiler

Compiled 12 to 17 computations (-41.7% saved)

regimes3.0ms (0.1%)

Memory
7.8MiB live, 7.8MiB allocated; 0ms collecting garbage
Counts
2 → 3
Calls
Call 1
Inputs
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))
Outputs
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))
Calls

2 calls:

1.0ms
x
1.0ms
z
Results
AccuracySegmentsBranch
41.6%2z
60.0%3x
Compiler

Compiled 2 to 6 computations (-200% saved)

regimes21.0ms (0.5%)

Memory
-45.6MiB live, 18.2MiB allocated; 19ms collecting garbage
Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

Counts
1 → 1
Calls
Call 1
Inputs
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
Outputs
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
Calls

4 calls:

18.0ms
y
1.0ms
(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
1.0ms
z
1.0ms
x
Results
AccuracySegmentsBranch
34.8%1z
34.8%1(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
34.8%1y
34.8%1x
Compiler

Compiled 12 to 17 computations (-41.7% saved)

bsearch30.0ms (0.7%)

Memory
7.1MiB live, 51.7MiB allocated; 7ms collecting garbage
Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
17.0ms
1.7777412456006056e-6
1642733.431299433
10.0ms
-2.7082285804126528e-48
-1.163851164090708e-49
Samples
13.0ms272×0valid
Compiler

Compiled 522 to 439 computations (15.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 7.0ms
ival-mult: 4.0ms (58% of total)
ival-sub: 1.0ms (14.5% of total)
ival-add: 1.0ms (14.5% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

bsearch11.0ms (0.3%)

Memory
20.3MiB live, 20.3MiB allocated; 0ms collecting garbage
Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
9.0ms
1.7777412456006056e-6
1642733.431299433
1.0ms
-2.7082285804126528e-48
-1.163851164090708e-49
Samples
5.0ms112×0valid
Compiler

Compiled 471 to 405 computations (14% saved)

Precisions
Click to see histograms. Total time spent on operations: 3.0ms
ival-mult: 1.0ms (38% of total)
ival-sub: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
ival-add: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

bsearch99.0ms (2.2%)

Memory
-27.2MiB live, 63.3MiB allocated; 17ms collecting garbage
Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
narrow-enough
narrow-enough
Steps
TimeLeftRight
8.0ms
5.011304681307206e+106
6.793601848403332e+107
11.0ms
1.7777412456006056e-6
1642733.431299433
6.0ms
-2.7082285804126528e-48
-1.163851164090708e-49
34.0ms
-6.856817060179455e+151
-1.447195156473725e+149
Samples
43.0ms416×0valid
Compiler

Compiled 993 to 792 computations (20.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 33.0ms
ival-sub: 25.0ms (75.8% of total)
ival-mult: 6.0ms (18.2% of total)
ival-add: 2.0ms (6.1% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

bsearch13.0ms (0.3%)

Memory
18.4MiB live, 18.4MiB allocated; 0ms collecting garbage
Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
1.0ms
1.7777412456006056e-6
1642733.431299433
11.0ms
-342.5800542496408
-0.040587935753040885
Samples
6.0ms128×0valid
Compiler

Compiled 606 to 482 computations (20.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 3.0ms
ival-mult: 2.0ms (64.2% of total)
ival-sub: 1.0ms (32.1% of total)
ival-add: 1.0ms (32.1% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

simplify101.0ms (2.3%)

Memory
-17.7MiB live, 37.6MiB allocated; 14ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
051236
181236
2114236
3167236
4242236
5512236
63281236
77610236
Stop Event
node limit
Calls
Call 1
Inputs
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 (+.f64 z y) x (neg.f64 z)))
(if (<=.f64 x #s(literal -4607412760499377/3291009114642412084309938365114701009965471731267159726697218048 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x)) (if (<=.f64 x #s(literal 7932099951695107/9223372036854775808 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))))
(if (<=.f64 x #s(literal -4607412760499377/3291009114642412084309938365114701009965471731267159726697218048 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x)) (if (<=.f64 x #s(literal 4722366482869645/2361183241434822606848 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))))
(if (<=.f64 x #s(literal -1150000000000000005217387759388239174758730811935036650316390557451642389590112839696716313161076449489271771072236114785246647415871337048015940616192 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z))) (if (<=.f64 x #s(literal -4031486165436955/1645504557321206042154969182557350504982735865633579863348609024 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 y x)) (if (<=.f64 x #s(literal 1 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z)) (if (<=.f64 x #s(literal 359999999999999975735952320767026188249284162800586651134521442848057486420715447554874090138070265725190144 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z))) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 y x))))))
(if (<=.f64 x #s(literal -1 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z))) (if (<=.f64 x #s(literal 1 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z)) #s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))))
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
Outputs
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 (+.f64 z y) x (neg.f64 z)))
(if (<=.f64 x #s(literal -4607412760499377/3291009114642412084309938365114701009965471731267159726697218048 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x)) (if (<=.f64 x #s(literal 7932099951695107/9223372036854775808 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))))
(if (or (<=.f64 x #s(literal -4607412760499377/3291009114642412084309938365114701009965471731267159726697218048 binary64)) (not (<=.f64 x #s(literal 7932099951695107/9223372036854775808 binary64)))) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z)))
(if (<=.f64 x #s(literal -4607412760499377/3291009114642412084309938365114701009965471731267159726697218048 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x)) (if (<=.f64 x #s(literal 4722366482869645/2361183241434822606848 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))))
(if (or (<=.f64 x #s(literal -4607412760499377/3291009114642412084309938365114701009965471731267159726697218048 binary64)) (not (<=.f64 x #s(literal 4722366482869645/2361183241434822606848 binary64)))) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x)) #s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z)))
(if (<=.f64 x #s(literal -1150000000000000005217387759388239174758730811935036650316390557451642389590112839696716313161076449489271771072236114785246647415871337048015940616192 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z))) (if (<=.f64 x #s(literal -4031486165436955/1645504557321206042154969182557350504982735865633579863348609024 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 y x)) (if (<=.f64 x #s(literal 1 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z)) (if (<=.f64 x #s(literal 359999999999999975735952320767026188249284162800586651134521442848057486420715447554874090138070265725190144 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z))) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 y x))))))
(if (<=.f64 x #s(literal -1 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z))) (if (<=.f64 x #s(literal 1 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z)) #s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))))
(if (or (<=.f64 x #s(literal -1 binary64)) (not (<=.f64 x #s(literal 1 binary64)))) #s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z))) #s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z)))
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))

derivations407.0ms (9.1%)

Memory
4.0MiB live, 235.1MiB allocated; 47ms collecting garbage
Stop Event
fuel
Compiler

Compiled 242 to 55 computations (77.3% saved)

preprocess60.0ms (1.3%)

Memory
38.0MiB live, 84.5MiB allocated; 2ms collecting garbage
Compiler

Compiled 502 to 126 computations (74.9% saved)

end0.0ms (0%)

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

Profiling

Loading profile data...