Data.Random.Distribution.Normal:doubleStdNormalZ from random-fu-0.2.6.2

Time bar (total: 1.1s)

analyze0.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
100%100%0%0%0%0%0%1
Compiler

Compiled 7 to 5 computations (28.6% saved)

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

sample506.0ms (45.8%)

Results
359.0ms8256×0valid
Precisions
Click to see histograms. Total time spent on operations: 135.0ms
ival-sub: 61.0ms (45.3% of total)
ival-add: 59.0ms (43.8% of total)
const: 12.0ms (8.9% of total)
backward-pass: 3.0ms (2.2% of total)
Bogosity

preprocess60.0ms (5.4%)

Algorithm
egg-herbie
Rules
320×fnmadd-define
312×fnmsub-define
312×fmsub-define
310×fmm-def
232×sum3-define
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0818
12713
29312
323812
458312
5107612
6120012
7128912
8129712
045
1134
2204
3284
4334
5424
6744
71984
84654
97214
107594
117634
07634
Stop Event
iter limit
saturated
saturated
Calls
Call 1
Inputs
(- (+ x x) 1)
Outputs
(- (+ x x) 1)
(+.f64 (*.f64 x #s(literal 2 binary64)) #s(literal -1 binary64))
Call 2
Inputs
(- (+ x x) 1)
(- (+ (neg x) (neg x)) 1)
(neg (- (+ (neg x) (neg x)) 1))
Outputs
(- (+ x x) 1)
(fnmsub x -2 1)
(- (+ (neg x) (neg x)) 1)
(fnmsub x 2 1)
(neg (- (+ (neg x) (neg x)) 1))
(fnmsub x -2 -1)

explain53.0ms (4.8%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-x
00-0-(-.f64 (+.f64 x x) #s(literal 1 binary64))
00-0-(+.f64 x x)
00-0-#s(literal 1 binary64)
Results
28.0ms512×0valid
Compiler

Compiled 30 to 14 computations (53.3% saved)

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

eval0.0ms (0%)

Compiler

Compiled 6 to 5 computations (16.7% saved)

prune1.0ms (0.1%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(-.f64 (+.f64 x x) #s(literal 1 binary64))
Compiler

Compiled 6 to 4 computations (33.3% saved)

simplify63.0ms (5.7%)

Algorithm
egg-herbie
Localize:

Found 2 expressions of interest:

NewMetricScoreProgram
cost-diff0
(+.f64 x x)
cost-diff0
(-.f64 (+.f64 x x) #s(literal 1 binary64))
Rules
180×fmsub-define
176×fma-lowering-fma.f32
176×fnmsub-define
176×fma-lowering-fma.f64
176×fnmadd-define
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0410
1139
2209
3289
4339
5429
6749
71989
84659
97219
107599
117639
07639
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(- (+ x x) 1)
(+ x x)
x
1
Outputs
(- (+ x x) 1)
(+.f64 (*.f64 x #s(literal 2 binary64)) #s(literal -1 binary64))
(+ x x)
(*.f64 x #s(literal 2 binary64))
x
1
#s(literal 1 binary64)

localize56.0ms (5.1%)

Localize:

Found 2 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(-.f64 (+.f64 x x) #s(literal 1 binary64))
accuracy100.0%
(+.f64 x x)
Results
50.0ms256×0valid
Compiler

Compiled 12 to 5 computations (58.3% saved)

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

series1.0ms (0.1%)

Counts
2 → 24
Calls
Call 1
Inputs
#<alt (- (+ x x) 1)>
#<alt (+ x x)>
Outputs
#<alt -1>
#<alt (- (* 2 x) 1)>
#<alt (- (* 2 x) 1)>
#<alt (- (* 2 x) 1)>
#<alt (* 2 x)>
#<alt (* x (- 2 (/ 1 x)))>
#<alt (* x (- 2 (/ 1 x)))>
#<alt (* x (- 2 (/ 1 x)))>
#<alt (* 2 x)>
#<alt (* -1 (* x (- (/ 1 x) 2)))>
#<alt (* -1 (* x (- (/ 1 x) 2)))>
#<alt (* -1 (* x (- (/ 1 x) 2)))>
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
Calls

6 calls:

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

rewrite70.0ms (6.3%)

Algorithm
batch-egg-rewrite
Rules
96×*-lowering-*.f32
96×*-lowering-*.f64
90×/-lowering-/.f32
90×/-lowering-/.f64
68×+-lowering-+.f64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
048
1347
03187
Stop Event
iter limit
iter limit
iter limit
unsound
Counts
2 → 55
Calls
Call 1
Inputs
(- (+ x x) 1)
(+ x x)
Outputs
(+.f64 x (+.f64 x #s(literal -1 binary64)))
(+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal -1 binary64))
(+.f64 #s(literal -1 binary64) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))
(+.f64 (+.f64 x #s(literal -1 binary64)) x)
(-.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1 binary64))
(-.f64 (/.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1 binary64)))) (/.f64 #s(literal 1 binary64) (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1 binary64)))))
(-.f64 (/.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1 binary64))) (/.f64 #s(literal 1 binary64) (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1 binary64))))
(fma.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal -1 binary64))
(fma.f64 #s(literal 2 binary64) x #s(literal -1 binary64))
(/.f64 #s(literal 1 binary64) (/.f64 (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1 binary64))) (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal -1 binary64))))
(/.f64 #s(literal 1 binary64) (/.f64 (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1 binary64)) (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal -1 binary64))))
(/.f64 (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal -1 binary64)) (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1 binary64))))
(/.f64 (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal -1 binary64)) (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1 binary64)))
(/.f64 (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal -1 binary64)) (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) (-.f64 #s(literal 1 binary64) (*.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal -1 binary64)))))
(/.f64 (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal -1 binary64)) (-.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal -1 binary64)))
(/.f64 (neg.f64 (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal -1 binary64))) (neg.f64 (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1 binary64)))))
(/.f64 (neg.f64 (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal -1 binary64))) (neg.f64 (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1 binary64))))
(/.f64 (+.f64 (*.f64 x (*.f64 x x)) (pow.f64 (+.f64 x #s(literal -1 binary64)) #s(literal 3 binary64))) (+.f64 (*.f64 x x) (-.f64 (*.f64 (+.f64 x #s(literal -1 binary64)) (+.f64 x #s(literal -1 binary64))) (*.f64 x (+.f64 x #s(literal -1 binary64))))))
(/.f64 (-.f64 (*.f64 x x) (*.f64 (+.f64 x #s(literal -1 binary64)) (+.f64 x #s(literal -1 binary64)))) (-.f64 x (+.f64 x #s(literal -1 binary64))))
(*.f64 (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal -1 binary64)) (/.f64 #s(literal 1 binary64) (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1 binary64)))))
(*.f64 (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal -1 binary64)) (/.f64 #s(literal 1 binary64) (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1 binary64))))
(*.f64 (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1 binary64)) (+.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal -1 binary64)))
(+.f64 x x)
(+.f64 (*.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) x) (*.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) x))
(+.f64 (*.f64 x (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))) (*.f64 x (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
(exp.f64 (*.f64 (log.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))) #s(literal 3 binary64)))
(-.f64 (/.f64 (*.f64 x x) #s(literal 0 binary64)) (/.f64 (*.f64 x x) #s(literal 0 binary64)))
(/.f64 #s(literal 1 binary64) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))
(/.f64 #s(literal 1 binary64) (/.f64 (+.f64 (*.f64 x x) #s(literal 0 binary64)) (*.f64 #s(literal 2 binary64) (*.f64 x (*.f64 x x)))))
(/.f64 (*.f64 #s(literal 2 binary64) (*.f64 x (*.f64 x x))) (+.f64 (*.f64 x x) #s(literal 0 binary64)))
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
(/.f64 (pow.f64 (*.f64 #s(literal 2 binary64) (*.f64 x (*.f64 x x))) #s(literal 3 binary64)) (pow.f64 (+.f64 (*.f64 x x) #s(literal 0 binary64)) #s(literal 3 binary64)))
(/.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 x (*.f64 x x))) (*.f64 #s(literal 2 binary64) (*.f64 x (*.f64 x x)))) (*.f64 (+.f64 (*.f64 x x) #s(literal 0 binary64)) (+.f64 (*.f64 x x) #s(literal 0 binary64))))
(/.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 x (*.f64 x x))) #s(literal 0 binary64)) (*.f64 (+.f64 (*.f64 x x) #s(literal 0 binary64)) #s(literal 0 binary64)))
(/.f64 (*.f64 #s(literal 0 binary64) (*.f64 #s(literal 2 binary64) (*.f64 x (*.f64 x x)))) (*.f64 #s(literal 0 binary64) (+.f64 (*.f64 x x) #s(literal 0 binary64))))
(/.f64 (neg.f64 (*.f64 #s(literal 2 binary64) (*.f64 x (*.f64 x x)))) (neg.f64 (+.f64 (*.f64 x x) #s(literal 0 binary64))))
(/.f64 (*.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) (*.f64 #s(literal 2 binary64) (*.f64 x (*.f64 x x)))) (+.f64 (*.f64 x x) #s(literal 0 binary64)))
(/.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 x (*.f64 x x))) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))) (+.f64 (*.f64 x x) #s(literal 0 binary64)))
(/.f64 (*.f64 #s(literal 0 binary64) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))) #s(literal 0 binary64))
(/.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 x (*.f64 x x))) #s(literal 1 binary64)) (+.f64 (*.f64 x x) #s(literal 0 binary64)))
(pow.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 3 binary64))
(pow.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 2 binary64))
(*.f64 x #s(literal 2 binary64))
(*.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))
(*.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))
(*.f64 (*.f64 #s(literal 2 binary64) (*.f64 x (*.f64 x x))) (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 x x) #s(literal 0 binary64))))
(*.f64 #s(literal 0 binary64) (/.f64 #s(literal 1 binary64) #s(literal 0 binary64)))
(*.f64 #s(literal 2 binary64) x)
(*.f64 #s(literal 2 binary64) (*.f64 x #s(literal 1 binary64)))
(*.f64 #s(literal 2 binary64) (*.f64 x (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))))
(*.f64 #s(literal 8 binary64) (*.f64 x (*.f64 x x)))
(*.f64 (pow.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 3/2 binary64)) (pow.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 3/2 binary64)))
(*.f64 #s(literal 4 binary64) (*.f64 x x))
(*.f64 (*.f64 (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)) #s(literal 2 binary64)) x)

simplify21.0ms (1.9%)

Algorithm
egg-herbie
Rules
164×fma-define
162×sum3-define
136×fma-lowering-fma.f32
136×fma-lowering-fma.f64
124×fmsub-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01279
13179
26879
313679
416679
524179
636379
741579
849179
958979
1059079
059079
Stop Event
iter limit
saturated
Counts
24 → 24
Calls
Call 1
Inputs
-1
(- (* 2 x) 1)
(- (* 2 x) 1)
(- (* 2 x) 1)
(* 2 x)
(* x (- 2 (/ 1 x)))
(* x (- 2 (/ 1 x)))
(* x (- 2 (/ 1 x)))
(* 2 x)
(* -1 (* x (- (/ 1 x) 2)))
(* -1 (* x (- (/ 1 x) 2)))
(* -1 (* x (- (/ 1 x) 2)))
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
Outputs
-1
#s(literal -1 binary64)
(- (* 2 x) 1)
(+.f64 #s(literal -1 binary64) (*.f64 #s(literal 2 binary64) x))
(- (* 2 x) 1)
(+.f64 #s(literal -1 binary64) (*.f64 #s(literal 2 binary64) x))
(- (* 2 x) 1)
(+.f64 #s(literal -1 binary64) (*.f64 #s(literal 2 binary64) x))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* x (- 2 (/ 1 x)))
(+.f64 #s(literal -1 binary64) (*.f64 #s(literal 2 binary64) x))
(* x (- 2 (/ 1 x)))
(+.f64 #s(literal -1 binary64) (*.f64 #s(literal 2 binary64) x))
(* x (- 2 (/ 1 x)))
(+.f64 #s(literal -1 binary64) (*.f64 #s(literal 2 binary64) x))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* -1 (* x (- (/ 1 x) 2)))
(+.f64 #s(literal -1 binary64) (*.f64 #s(literal 2 binary64) x))
(* -1 (* x (- (/ 1 x) 2)))
(+.f64 #s(literal -1 binary64) (*.f64 #s(literal 2 binary64) x))
(* -1 (* x (- (/ 1 x) 2)))
(+.f64 #s(literal -1 binary64) (*.f64 #s(literal 2 binary64) x))
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)

eval6.0ms (0.5%)

Compiler

Compiled 782 to 150 computations (80.8% saved)

prune92.0ms (8.3%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New77279
Fresh000
Picked011
Done000
Total77380
Accuracy
100.0%
Counts
80 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(-.f64 (+.f64 x x) #s(literal 1 binary64))
51.4%
(*.f64 #s(literal 2 binary64) x)
50.9%
#s(literal -1 binary64)
Compiler

Compiled 12 to 9 computations (25% saved)

simplify5.0ms (0.4%)

Algorithm
egg-herbie
Localize:

Found 1 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 #s(literal 2 binary64) x)
Rules
*-lowering-*.f32
*-lowering-*.f64
*-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
046
156
056
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
-1
(* 2 x)
2
x
Outputs
-1
#s(literal -1 binary64)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
2
#s(literal 2 binary64)
x

localize22.0ms (2%)

Localize:

Found 1 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(*.f64 #s(literal 2 binary64) x)
Results
17.0ms256×0valid
Compiler

Compiled 8 to 5 computations (37.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 3.0ms
ival-mult: 2.0ms (75.9% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series1.0ms (0.1%)

Counts
1 → 12
Calls
Call 1
Inputs
#<alt (* 2 x)>
Outputs
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
#<alt (* 2 x)>
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@inf
(* 2 x)
0.0ms
x
@-inf
(* 2 x)
0.0ms
x
@0
(* 2 x)

rewrite10.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
*-lowering-*.f32
*-lowering-*.f64
*-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
033
143
043
Stop Event
iter limit
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(* 2 x)
Outputs
(*.f64 #s(literal 2 binary64) x)
(*.f64 x #s(literal 2 binary64))

simplify4.0ms (0.3%)

Algorithm
egg-herbie
Rules
*-lowering-*.f32
*-lowering-*.f64
*-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0336
1436
0436
Stop Event
iter limit
saturated
Counts
12 → 12
Calls
Call 1
Inputs
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
Outputs
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)

eval1.0ms (0.1%)

Compiler

Compiled 43 to 4 computations (90.7% saved)

prune3.0ms (0.3%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New14014
Fresh000
Picked022
Done011
Total14317
Accuracy
100.0%
Counts
17 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(-.f64 (+.f64 x x) #s(literal 1 binary64))
51.4%
(*.f64 #s(literal 2 binary64) x)
50.9%
#s(literal -1 binary64)
Compiler

Compiled 22 to 16 computations (27.3% saved)

regimes7.0ms (0.6%)

Counts
3 → 1
Calls
Call 1
Inputs
#s(literal -1 binary64)
(*.f64 #s(literal 2 binary64) x)
(-.f64 (+.f64 x x) #s(literal 1 binary64))
Outputs
(-.f64 (+.f64 x x) #s(literal 1 binary64))
Calls

3 calls:

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

Compiled 12 to 7 computations (41.7% saved)

regimes2.0ms (0.2%)

Counts
2 → 3
Calls
Call 1
Inputs
#s(literal -1 binary64)
(*.f64 #s(literal 2 binary64) x)
Outputs
(*.f64 #s(literal 2 binary64) x)
#s(literal -1 binary64)
(*.f64 #s(literal 2 binary64) x)
Calls

1 calls:

1.0ms
x
Results
AccuracySegmentsBranch
98.6%3x
Compiler

Compiled 2 to 1 computations (50% saved)

regimes1.0ms (0.1%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

Counts
1 → 1
Calls
Call 1
Inputs
#s(literal -1 binary64)
Outputs
#s(literal -1 binary64)
Calls

1 calls:

1.0ms
x
Results
AccuracySegmentsBranch
50.9%1x
Compiler

Compiled 2 to 1 computations (50% saved)

bsearch55.0ms (4.9%)

Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
12.0ms
5.553070242342735e-8
943.0873923284815
41.0ms
-1139.4333277093995
-4.2103990395837493e-7
Results
43.0ms304×0valid
Compiler

Compiled 162 to 140 computations (13.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 34.0ms
ival-add: 32.0ms (92.9% of total)
ival-sub: 2.0ms (5.8% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

simplify11.0ms (1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
sub-neg_binary64
+-commutative_binary64
mul-1-neg_binary64
1-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01319
12219
22519
33019
Stop Event
saturated
Calls
Call 1
Inputs
(-.f64 (+.f64 x x) #s(literal 1 binary64))
(if (<=.f64 x #s(literal -1/2 binary64)) (*.f64 #s(literal 2 binary64) x) (if (<=.f64 x #s(literal 1/2 binary64)) #s(literal -1 binary64) (*.f64 #s(literal 2 binary64) x)))
#s(literal -1 binary64)
Outputs
(-.f64 (+.f64 x x) #s(literal 1 binary64))
(+.f64 (+.f64 x x) #s(literal -1 binary64))
(if (<=.f64 x #s(literal -1/2 binary64)) (*.f64 #s(literal 2 binary64) x) (if (<=.f64 x #s(literal 1/2 binary64)) #s(literal -1 binary64) (*.f64 #s(literal 2 binary64) x)))
(if (<=.f64 x #s(literal -1/2 binary64)) (*.f64 x #s(literal 2 binary64)) (if (<=.f64 x #s(literal 1/2 binary64)) #s(literal -1 binary64) (*.f64 x #s(literal 2 binary64))))
#s(literal -1 binary64)

soundness30.0ms (2.7%)

Rules
164×fma-define
162×sum3-define
136×fma-lowering-fma.f32
136×fma-lowering-fma.f64
124×fmsub-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01279
13179
26879
313679
416679
524179
636379
741579
849179
958979
1059079
059079
Stop Event
done
iter limit
saturated
Compiler

Compiled 30 to 19 computations (36.7% saved)

preprocess24.0ms (2.2%)

Compiler

Compiled 56 to 32 computations (42.9% saved)

end0.0ms (0%)

Profiling

Loading profile data...