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

Time bar (total: 4.6s)

start0.0ms (0%)

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

analyze1.0ms (0%)

Memory
1.0MiB live, 1.0MiB 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 (23.8%)

Memory
44.7MiB live, 1 311.8MiB allocated; 524ms collecting garbage
Samples
778.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 379.0ms
ival-mult: 190.0ms (50.1% of total)
ival-sub: 133.0ms (35.1% of total)
ival-add: 39.0ms (10.3% of total)
ival-true: 6.0ms (1.6% of total)
exact: 5.0ms (1.3% of total)
ival-assert: 4.0ms (1.1% of total)
adjust: 2.0ms (0.5% of total)
Bogosity

explain85.0ms (1.8%)

Memory
24.2MiB live, 156.0MiB allocated; 23ms 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)overflow35
(*.f64 (-.f64 x #s(literal 1 binary64)) z)overflow29
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
37.0ms512×0valid
Compiler

Compiled 61 to 28 computations (54.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 22.0ms
ival-mult: 12.0ms (55.7% of total)
ival-sub: 6.0ms (27.9% of total)
ival-add: 2.0ms (9.3% 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)

preprocess247.0ms (5.3%)

Memory
12.9MiB live, 201.7MiB allocated; 38ms 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)

simplify181.0ms (3.9%)

Memory
1.6MiB live, 149.7MiB allocated; 50ms 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

localize23.0ms (0.5%)

Memory
1.0MiB live, 44.7MiB allocated; 8ms collecting garbage
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(-.f64 x #s(literal 1 binary64))
accuracy0.0
(*.f64 x y)
accuracy0.015625
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
accuracy0.9062458716604117
(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
Samples
18.0ms256×0valid
Compiler

Compiled 26 to 10 computations (61.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 6.0ms
ival-mult: 4.0ms (63.3% of total)
ival-sub: 1.0ms (15.8% of total)
ival-add: 1.0ms (15.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)

series25.0ms (0.5%)

Memory
-26.7MiB live, 32.9MiB allocated; 10ms 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
15.0ms
y
@inf
((+ (* x y) (* (- x 1) z)) (* x y) (* (- x 1) z) (- x 1))
4.0ms
y
@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
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))

simplify146.0ms (3.2%)

Memory
-9.5MiB live, 223.6MiB allocated; 29ms 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))

rewrite57.0ms (1.2%)

Memory
27.6MiB live, 74.7MiB allocated; 1ms 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))

eval9.0ms (0.2%)

Memory
-26.9MiB live, 16.9MiB allocated; 6ms collecting garbage
Compiler

Compiled 780 to 146 computations (81.3% saved)

prune3.0ms (0.1%)

Memory
10.1MiB live, 10.1MiB 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
99.2%
(fma.f64 (-.f64 x #s(literal 1 binary64)) z (*.f64 y x))
57.5%
(+.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)))
63.5%
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
59.1%
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
42.3%
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
Compiler

Compiled 160 to 124 computations (22.5% saved)

simplify167.0ms (3.6%)

Memory
14.7MiB live, 197.0MiB allocated; 35ms 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

localize74.0ms (1.6%)

Memory
-6.5MiB live, 159.5MiB allocated; 18ms collecting garbage
Localize:

Found 16 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 z x)
accuracy0.0
(*.f64 x y)
accuracy0.9062458716604117
(+.f64 (*.f64 x y) #s(approx (* (- x 1) z) (*.f64 z x)))
accuracy35.362196745684216
#s(approx (* (- x 1) z) (*.f64 z x))
accuracy0.0
(-.f64 x #s(literal 1 binary64))
accuracy0.015625
(*.f64 (-.f64 x #s(literal 1 binary64)) z)
accuracy23.328793133870235
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
accuracy0.0
(+.f64 z y)
accuracy0.01953125
(*.f64 (+.f64 z y) x)
accuracy26.189607361339117
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
accuracy0.0
(neg.f64 z)
accuracy36.905845673145805
#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
64.0ms256×0valid
Compiler

Compiled 102 to 15 computations (85.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 14.0ms
ival-mult: 7.0ms (49.1% of total)
ival-add: 5.0ms (35.1% of total)
ival-sub: 1.0ms (7% of total)
ival-neg: 1.0ms (7% 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)

series13.0ms (0.3%)

Memory
-12.0MiB live, 34.5MiB allocated; 3ms 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
y
@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))
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))

simplify182.0ms (3.9%)

Memory
25.2MiB live, 260.3MiB allocated; 30ms 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)

rewrite64.0ms (1.4%)

Memory
-17.0MiB live, 70.4MiB allocated; 10ms 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)

eval12.0ms (0.3%)

Memory
-9.4MiB live, 34.7MiB allocated; 5ms collecting garbage
Compiler

Compiled 2 305 to 293 computations (87.3% saved)

prune5.0ms (0.1%)

Memory
19.2MiB live, 19.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)))
58.3%
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 z x (*.f64 y x)))
63.5%
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
59.1%
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
42.3%
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
Compiler

Compiled 75 to 56 computations (25.3% saved)

simplify188.0ms (4.1%)

Memory
7.9MiB live, 206.8MiB allocated; 16ms 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

localize140.0ms (3%)

Memory
-78.3MiB live, 61.6MiB allocated; 107ms collecting garbage
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 y x)
accuracy0.49999449521112044
(fma.f64 z x (*.f64 y x))
accuracy26.189607361339117
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 z x (*.f64 y x)))
Samples
31.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: 7.0ms (67.6% of total)
ival-add: 2.0ms (19.3% of total)
ival-sub: 1.0ms (9.7% 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)

series5.0ms (0.1%)

Memory
11.1MiB live, 11.1MiB 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
x
@0
((+ (* 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
z
@-inf
((+ (* z x) (* y x)) (+ (* x y) (* (- x 1) z)) (* y x))

simplify218.0ms (4.7%)

Memory
-3.2MiB live, 230.5MiB allocated; 27ms 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))

rewrite32.0ms (0.7%)

Memory
37.6MiB live, 37.6MiB allocated; 0ms 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
5.6MiB live, 5.6MiB allocated; 0ms collecting garbage
Compiler

Compiled 780 to 126 computations (83.8% saved)

prune21.0ms (0.5%)

Memory
-40.0MiB live, 7.2MiB allocated; 2ms 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)))
58.3%
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 z x (*.f64 y x)))
63.5%
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
59.1%
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
42.3%
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
23.6%
#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)

simplify210.0ms (4.5%)

Memory
0.5MiB live, 190.5MiB allocated; 18ms 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

localize25.0ms (0.5%)

Memory
27.8MiB live, 27.8MiB allocated; 0ms collecting garbage
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 x z)
accuracy26.189607361339117
#s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z)))
accuracy28.300250764725018
#s(approx (+ (* z x) (* y x)) (*.f64 x z))
Samples
18.0ms256×0valid
Compiler

Compiled 23 to 14 computations (39.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-mult: 8.0ms (69.8% of total)
ival-add: 2.0ms (17.5% of total)
ival-sub: 1.0ms (8.7% 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
6.3MiB live, 6.3MiB 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))

simplify293.0ms (6.3%)

Memory
-21.2MiB live, 270.6MiB allocated; 39ms 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)

rewrite58.0ms (1.2%)

Memory
-2.4MiB live, 42.8MiB allocated; 8ms 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)

eval1.0ms (0%)

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

Compiled 223 to 41 computations (81.6% saved)

prune4.0ms (0.1%)

Memory
6.7MiB live, 6.7MiB 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)))
58.3%
#s(approx (+ (* x y) (* (- x 1) z)) (fma.f64 z x (*.f64 y x)))
63.5%
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
59.1%
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x))
40.2%
#s(approx (+ (* x y) (* (- x 1) z)) (*.f64 y x))
42.3%
#s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z))
23.6%
#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
21.5MiB live, 21.5MiB 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)

regimes36.0ms (0.8%)

Memory
-28.6MiB live, 16.6MiB allocated; 5ms 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:

29.0ms
z
2.0ms
y
2.0ms
x
2.0ms
(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
Results
AccuracySegmentsBranch
77.1%3(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
87.3%3x
80.7%3y
80.6%3z
Compiler

Compiled 12 to 17 computations (-41.7% saved)

regimes2.0ms (0%)

Memory
4.4MiB live, 4.4MiB 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
87.3%3x
Compiler

Compiled 1 to 3 computations (-200% saved)

regimes6.0ms (0.1%)

Memory
11.8MiB live, 11.8MiB allocated; 0ms collecting garbage
Counts
3 → 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))
Outputs
#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)) (*.f64 y x))
Calls

4 calls:

2.0ms
z
1.0ms
x
1.0ms
y
1.0ms
(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
Results
AccuracySegmentsBranch
57.5%3(+.f64 (*.f64 x y) (*.f64 (-.f64 x #s(literal 1 binary64)) z))
61.2%4z
61.2%3y
68.4%3x
Compiler

Compiled 12 to 17 computations (-41.7% saved)

regimes2.0ms (0%)

Memory
2.4MiB live, 2.4MiB 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

1 calls:

1.0ms
x
Results
AccuracySegmentsBranch
62.7%3x
Compiler

Compiled 1 to 3 computations (-200% saved)

regimes4.0ms (0.1%)

Memory
8.9MiB live, 8.9MiB allocated; 0ms 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:

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

Compiled 12 to 17 computations (-41.7% saved)

bsearch33.0ms (0.7%)

Memory
-28.3MiB live, 25.8MiB allocated; 7ms collecting garbage
Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
7.0ms
3.3490588147692684e-16
1.3073445568559815e-15
24.0ms
-4.245276926630186e-68
-2.6357593789086856e-69
Samples
24.0ms192×0valid
Compiler

Compiled 372 to 314 computations (15.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 5.0ms
ival-mult: 3.0ms (63% of total)
ival-sub: 1.0ms (21% of total)
ival-add: 1.0ms (21% 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)

bsearch1.0ms (0%)

Memory
2.8MiB live, 2.8MiB allocated; 0ms collecting garbage
Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
0.0ms
3.3490588147692684e-16
1.3073445568559815e-15
1.0ms
-4.245276926630186e-68
-2.6357593789086856e-69
Compiler

Compiled 336 to 290 computations (13.7% saved)

bsearch8.0ms (0.2%)

Memory
17.7MiB live, 17.7MiB allocated; 0ms collecting garbage
Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
0.0ms
3.3490588147692684e-16
1.3073445568559815e-15
7.0ms
-4.245276926630186e-68
-2.6357593789086856e-69
Samples
4.0ms80×0valid
Compiler

Compiled 312 to 278 computations (10.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 2.0ms
ival-mult: 1.0ms (50.6% 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)

bsearch35.0ms (0.8%)

Memory
-8.0MiB live, 37.2MiB allocated; 7ms collecting garbage
Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
9.0ms
0.0009764451260294927
0.022372840515773505
24.0ms
-6.1800888835900405e-6
-6.66863484692659e-7
Samples
26.0ms208×0valid
Compiler

Compiled 441 to 352 computations (20.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 5.0ms
ival-mult: 3.0ms (59.2% of total)
ival-sub: 1.0ms (19.7% of total)
ival-add: 1.0ms (19.7% 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)

simplify74.0ms (1.6%)

Memory
-14.1MiB live, 76.7MiB allocated; 12ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
044178
175178
2108178
3161178
4236178
5506178
63399178
77567178
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 -1942668892225729/485667223056432267729865476705879726660601709763034880312953102434726071301302124544 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x)) (if (<=.f64 x #s(literal 237684487542793/316912650057057350374175801344 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 -1942668892225729/485667223056432267729865476705879726660601709763034880312953102434726071301302124544 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x)) (if (<=.f64 x #s(literal 237684487542793/316912650057057350374175801344 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 -7867809013514203/971334446112864535459730953411759453321203419526069760625906204869452142602604249088 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 y x)) (if (<=.f64 x #s(literal 237684487542793/316912650057057350374175801344 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 y x))))
(if (<=.f64 x #s(literal -1770887431076117/295147905179352825856 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z))) (if (<=.f64 x #s(literal 3170534137668829/144115188075855872 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 -1942668892225729/485667223056432267729865476705879726660601709763034880312953102434726071301302124544 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x)) (if (<=.f64 x #s(literal 237684487542793/316912650057057350374175801344 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 -1942668892225729/485667223056432267729865476705879726660601709763034880312953102434726071301302124544 binary64)) (not (<=.f64 x #s(literal 237684487542793/316912650057057350374175801344 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 -1942668892225729/485667223056432267729865476705879726660601709763034880312953102434726071301302124544 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 (+.f64 z y) x)) (if (<=.f64 x #s(literal 237684487542793/316912650057057350374175801344 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 -1942668892225729/485667223056432267729865476705879726660601709763034880312953102434726071301302124544 binary64)) (not (<=.f64 x #s(literal 237684487542793/316912650057057350374175801344 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 -7867809013514203/971334446112864535459730953411759453321203419526069760625906204869452142602604249088 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 y x)) (if (<=.f64 x #s(literal 237684487542793/316912650057057350374175801344 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z)) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 y x))))
(if (or (<=.f64 x #s(literal -7867809013514203/971334446112864535459730953411759453321203419526069760625906204869452142602604249088 binary64)) (not (<=.f64 x #s(literal 237684487542793/316912650057057350374175801344 binary64)))) #s(approx (+ (* x y) (* (- x 1) z)) (*.f64 y x)) #s(approx (+ (* x y) (* (- x 1) z)) (neg.f64 z)))
(if (<=.f64 x #s(literal -1770887431076117/295147905179352825856 binary64)) #s(approx (+ (* x y) (* (- x 1) z)) #s(approx (+ (* z x) (* y x)) (*.f64 x z))) (if (<=.f64 x #s(literal 3170534137668829/144115188075855872 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 -1770887431076117/295147905179352825856 binary64)) (not (<=.f64 x #s(literal 3170534137668829/144115188075855872 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))

derivations780.0ms (16.8%)

Memory
0.5MiB live, 621.6MiB allocated; 113ms collecting garbage
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
056116
1218108
2737108
32295108
46186108
08430108
022112
031112
1104112
0741107
056116
1218108
2737108
32302108
46169108
08418108
054113
1192105
2608105
31885105
45714105
08030105
Stop Event
fuel
iter limit
node limit
iter limit
node limit
iter limit
iter limit
node limit
iter limit
iter limit
node limit
Compiler

Compiled 180 to 46 computations (74.4% saved)

preprocess44.0ms (1%)

Memory
8.2MiB live, 54.0MiB allocated; 8ms collecting garbage
Compiler

Compiled 378 to 108 computations (71.4% saved)

end0.0ms (0%)

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

Profiling

Loading profile data...