sqrt C (should all be same)

Time bar (total: 1.5s)

start0.0ms (0%)

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

analyze0.0ms (0%)

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

Compiled 8 to 7 computations (12.5% saved)

sample747.0ms (49.1%)

Memory
37.9MiB live, 680.8MiB allocated; 113ms collecting garbage
Samples
469.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 302.0ms
ival-mult: 193.0ms (63.9% of total)
ival-sqrt: 93.0ms (30.8% of total)
ival-true: 6.0ms (2% of total)
exact: 5.0ms (1.7% of total)
ival-assert: 3.0ms (1% of total)
adjust: 2.0ms (0.7% of total)
Bogosity

explain102.0ms (6.7%)

Memory
-28.7MiB live, 113.3MiB allocated; 28ms collecting garbage
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1230-5(1.0502072181389251e-159)(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
00-0-#s(literal 2 binary64)
00-0-(*.f64 x x)
00-0-(*.f64 #s(literal 2 binary64) (*.f64 x x))
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
sqrt.f64(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))oflow-rescue650
(*.f64 #s(literal 2 binary64) (*.f64 x x))overflow65
(*.f64 x x)overflow65
sqrt.f64(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))uflow-rescue530
(*.f64 #s(literal 2 binary64) (*.f64 x x))underflow53
(*.f64 x x)underflow53
Confusion
Predicted +Predicted -
+1185
-0133
Precision
1.0
Recall
0.959349593495935
Confusion?
Predicted +Predicted MaybePredicted -
+11805
-00133
Precision?
1.0
Recall?
0.959349593495935
Freqs
test
numberfreq
0138
1118
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
26.0ms512×0valid
Compiler

Compiled 42 to 19 computations (54.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-mult: 7.0ms (61% of total)
ival-sqrt: 3.0ms (26.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)

preprocess20.0ms (1.3%)

Memory
-6.8MiB live, 36.7MiB allocated; 6ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
12213
28313
313113
422313
524913
626913
056
086
1186
2566
31226
41876
52236
62466
72666
02663
Stop Event
iter limit
saturated
iter limit
saturated
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
Outputs
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
(hypot.f64 x x)
Symmetry

(abs x)

Compiler

Compiled 6 to 5 computations (16.7% saved)

eval0.0ms (0%)

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

Compiled 0 to 1 computations (-∞% saved)

prune0.0ms (0%)

Memory
1.2MiB live, 1.2MiB allocated; 0ms collecting garbage
Alt Table
Click to see full alt table
StatusAccuracyProgram
55.9%
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
Compiler

Compiled 6 to 5 computations (16.7% saved)

simplify6.0ms (0.4%)

Memory
8.7MiB live, 8.7MiB allocated; 0ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 x x)
cost-diff0
(*.f64 #s(literal 2 binary64) (*.f64 x x))
cost-diff3
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0516
0816
11816
25616
312216
418716
522316
624616
726616
026613
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
#s(literal 2 binary64)
(*.f64 x x)
x
Outputs
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
(hypot.f64 x x)
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
#s(literal 2 binary64)
(*.f64 x x)
x

localize15.0ms (1%)

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

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 x x)
accuracy0.015625
(*.f64 #s(literal 2 binary64) (*.f64 x x))
accuracy28.213595347998936
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
Samples
10.0ms256×0valid
Compiler

Compiled 18 to 7 computations (61.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 5.0ms
ival-mult: 3.0ms (56.4% of total)
ival-sqrt: 2.0ms (37.6% 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)

series3.0ms (0.2%)

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

3 calls:

TimeVariablePointExpression
1.0ms
x
@inf
((sqrt (* 2 (* x x))) (* 2 (* x x)) (* x x))
1.0ms
x
@0
((sqrt (* 2 (* x x))) (* 2 (* x x)) (* x x))
1.0ms
x
@-inf
((sqrt (* 2 (* x x))) (* 2 (* x x)) (* x x))

simplify28.0ms (1.9%)

Memory
-59.5MiB live, 11.1MiB allocated; 29ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0817
11817
24317
39217
422817
543717
648517
048517
Stop Event
iter limit
saturated
Counts
4 → 4
Calls
Call 1
Inputs
(* x (sqrt 2))
(* 2 (pow x 2))
(pow x 2)
(* -1 (* x (sqrt 2)))
Outputs
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* 2 (pow x 2))
(*.f64 (*.f64 #s(literal 2 binary64) x) x)
(pow x 2)
(*.f64 x x)
(* -1 (* x (sqrt 2)))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))

rewrite36.0ms (2.3%)

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

Useful iterations: 2 (0.0ms)

IterNodesCost
0514
0813
12413
21025
07775
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
3 → 15
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 x x)
Outputs
#s(literal 0 binary64)
#s(literal 0 binary64)
(*.f64 (*.f64 x (sqrt.f64 x)) (sqrt.f64 x))
(*.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)))
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) x))
(*.f64 x x)
(pow.f64 (exp.f64 (log.f64 x)) #s(literal 2 binary64))
(pow.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal 1/2 binary64))
(pow.f64 x #s(literal 2 binary64))
(pow.f64 (*.f64 x x) #s(literal 1 binary64))
(neg.f64 (*.f64 x x))
(sqrt.f64 (pow.f64 x #s(literal 4 binary64)))
(fabs.f64 (*.f64 x x))
(exp.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))
(+.f64 (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) (sinh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))))

eval2.0ms (0.1%)

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

Compiled 155 to 71 computations (54.2% saved)

prune1.0ms (0.1%)

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

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New16218
Fresh000
Picked011
Done000
Total16319
Accuracy
99.6%
Counts
19 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
55.9%
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
99.2%
#s(approx (sqrt (* 2 (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
3.6%
#s(literal 0 binary64)
Compiler

Compiled 18 to 16 computations (11.1% saved)

simplify7.0ms (0.5%)

Memory
3.9MiB live, 3.9MiB allocated; 0ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff0
(sqrt.f64 #s(literal 2 binary64))
cost-diff0
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
cost-diff0
#s(approx (sqrt (* 2 (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0920
01120
12220
25920
312820
419720
523720
626520
729020
029017
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
#s(literal 0 binary64)
#s(approx (sqrt (* 2 (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
x
Outputs
#s(literal 0 binary64)
#s(approx (sqrt (* 2 (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
x

localize26.0ms (1.7%)

Memory
10.7MiB live, 57.2MiB allocated; 6ms collecting garbage
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(sqrt.f64 #s(literal 2 binary64))
accuracy0.0
#s(approx (sqrt (* 2 (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
accuracy0.48828125
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
Samples
20.0ms256×0valid
Compiler

Compiled 17 to 10 computations (41.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-sqrt: 6.0ms (53.6% of total)
ival-mult: 5.0ms (44.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)

series1.0ms (0.1%)

Memory
2.5MiB live, 2.5MiB allocated; 0ms collecting garbage
Counts
3 → 2
Calls
Call 1
Inputs
#s(approx (sqrt (* 2 (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt.f64 #s(literal 2 binary64))
Outputs
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
Calls

3 calls:

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

simplify3.0ms (0.2%)

Memory
5.1MiB live, 5.1MiB allocated; 0ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
069
1139
2279
3289
0289
Stop Event
iter limit
saturated
Counts
2 → 2
Calls
Call 1
Inputs
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
Outputs
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* -1 (* x (sqrt 2)))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))

rewrite46.0ms (3%)

Memory
-17.9MiB live, 28.2MiB allocated; 4ms collecting garbage
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0817
01017
12716
21096
08116
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
3 → 12
Calls
Call 1
Inputs
#s(approx (sqrt (* 2 (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(sqrt.f64 #s(literal 2 binary64))
Outputs
#s(approx (sqrt (* 2 (* x x))) #s(literal 0 binary64))
#s(literal 0 binary64)
(*.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))) (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))))
(*.f64 (fabs.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))) (fabs.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))
(pow.f64 (exp.f64 (log.f64 #s(literal 2 binary64))) #s(literal 1/2 binary64))
(pow.f64 #s(literal 4 binary64) #s(literal 1/4 binary64))
(pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64))
(pow.f64 #s(literal 2 binary64) #s(literal 1/2 binary64))
(sqrt.f64 #s(literal 2 binary64))
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
(+.f64 (cosh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) (sinh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))

eval2.0ms (0.1%)

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

Compiled 188 to 52 computations (72.3% saved)

prune2.0ms (0.1%)

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

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New13114
Fresh000
Picked022
Done011
Total13417
Accuracy
99.9%
Counts
17 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
55.9%
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
99.2%
#s(approx (sqrt (* 2 (* x x))) (*.f64 (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)) x))
99.2%
#s(approx (sqrt (* 2 (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
3.6%
#s(literal 0 binary64)
Compiler

Compiled 32 to 27 computations (15.6% saved)

simplify9.0ms (0.6%)

Memory
12.7MiB live, 12.7MiB allocated; 0ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))
cost-diff0
(*.f64 (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)) x)
cost-diff0
#s(approx (sqrt (* 2 (* x x))) (*.f64 (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)) x))
cost-diff3
(pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01032
01332
12526
27423
316423
428123
535723
638023
740023
040020
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
#s(approx (sqrt (* 2 (* x x))) (*.f64 (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)) x))
(*.f64 (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)) x)
(pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64))
(pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))
#s(literal 2 binary64)
#s(literal 1/4 binary64)
x
Outputs
#s(approx (sqrt (* 2 (* x x))) (*.f64 (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)) x))
#s(approx (sqrt (* 2 (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)) x)
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64))
(sqrt.f64 #s(literal 2 binary64))
(pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))
#s(literal 2 binary64)
#s(literal 1/4 binary64)
x

localize30.0ms (1.9%)

Memory
7.8MiB live, 53.6MiB allocated; 3ms collecting garbage
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))
accuracy0.0
#s(approx (sqrt (* 2 (* x x))) (*.f64 (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)) x))
accuracy0.48828125
(*.f64 (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)) x)
accuracy1.0
(pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64))
Samples
23.0ms256×0valid
Compiler

Compiled 26 to 11 computations (57.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 17.0ms
ival-exp2: 5.0ms (29.8% of total)
ival-mult: 5.0ms (29.8% of total)
ival-sqrt: 4.0ms (23.9% of total)
ival-pow2: 2.0ms (11.9% 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.3%)

Memory
-51.2MiB live, 2.8MiB allocated; 6ms collecting garbage
Counts
4 → 2
Calls
Call 1
Inputs
(pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64))
#s(approx (sqrt (* 2 (* x x))) (*.f64 (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)) x))
(*.f64 (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)) x)
(pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))
Outputs
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
Calls

3 calls:

TimeVariablePointExpression
4.0ms
x
@-inf
((pow (pow 2 1/4) 2) (sqrt (* 2 (* x x))) (* (pow (pow 2 1/4) 2) x) (pow 2 1/4))
0.0ms
x
@0
((pow (pow 2 1/4) 2) (sqrt (* 2 (* x x))) (* (pow (pow 2 1/4) 2) x) (pow 2 1/4))
0.0ms
x
@inf
((pow (pow 2 1/4) 2) (sqrt (* 2 (* x x))) (* (pow (pow 2 1/4) 2) x) (pow 2 1/4))

simplify3.0ms (0.2%)

Memory
2.5MiB live, 2.5MiB allocated; 0ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
069
1139
2279
3289
0289
Stop Event
iter limit
saturated
Counts
2 → 2
Calls
Call 1
Inputs
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
Outputs
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* -1 (* x (sqrt 2)))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))

rewrite178.0ms (11.7%)

Memory
3.1MiB live, 48.7MiB allocated; 5ms collecting garbage
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01029
01323
14619
21869
012439
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
4 → 61
Calls
Call 1
Inputs
(pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64))
#s(approx (sqrt (* 2 (* x x))) (*.f64 (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)) x))
(*.f64 (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)) x)
(pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))
Outputs
(*.f64 (*.f64 (pow.f64 #s(literal 8 binary64) #s(literal 1/8 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/16 binary64))) (pow.f64 #s(literal 2 binary64) #s(literal 1/16 binary64)))
(*.f64 (*.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64)) (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64)))) (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64))))
(*.f64 (pow.f64 (pow.f64 #s(literal 8 binary64) #s(literal 1/8 binary64)) #s(literal 1 binary64)) (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64)))
(*.f64 (pow.f64 (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64))) #s(literal 1 binary64)) (pow.f64 (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64))) #s(literal 1 binary64)))
(*.f64 (pow.f64 #s(literal 8 binary64) #s(literal 1/8 binary64)) (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/16 binary64)) (*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/16 binary64)) (pow.f64 #s(literal 8 binary64) #s(literal 1/8 binary64))))
(*.f64 (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64))) (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64))))
(*.f64 (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64))) (*.f64 (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64))) (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64))))
(*.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64)) (pow.f64 (pow.f64 #s(literal 8 binary64) #s(literal 1/8 binary64)) #s(literal 1 binary64)))
(*.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64)) (pow.f64 #s(literal 8 binary64) #s(literal 1/8 binary64)))
(*.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64)) (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64)))
(pow.f64 (exp.f64 #s(literal 2 binary64)) (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64)))
(pow.f64 #s(literal 16 binary64) #s(literal 1/8 binary64))
(pow.f64 (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64))) #s(literal 2 binary64))
(pow.f64 #s(literal 4 binary64) #s(literal 1/4 binary64))
(pow.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64)) #s(literal 4 binary64))
(pow.f64 (sqrt.f64 #s(literal 2 binary64)) #s(literal 1 binary64))
(pow.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64)) #s(literal 2 binary64))
(pow.f64 #s(literal 2 binary64) #s(literal 1/2 binary64))
(/.f64 (-.f64 (*.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))) (*.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))))) (-.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))))
(/.f64 (+.f64 (pow.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) #s(literal 3 binary64)) (pow.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) #s(literal 3 binary64))) (fma.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (-.f64 (*.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))) (*.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))))))
(neg.f64 (*.f64 (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64))) (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64))))
(neg.f64 (*.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64)) (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64)))))
(fma.f64 (cosh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))) (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64)) (*.f64 (sinh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))) (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64))))
(fma.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64)) (cosh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))) (*.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64)) (sinh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64)))))
(fma.f64 #s(literal 2 binary64) (*.f64 (sinh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))) (cosh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64)))) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))))
(sqrt.f64 #s(literal 2 binary64))
(fabs.f64 (sqrt.f64 #s(literal 2 binary64)))
(exp.f64 (*.f64 (log.f64 #s(literal 4 binary64)) #s(literal 1/4 binary64)))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 1 binary64)))
(exp.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))
(+.f64 (*.f64 (cosh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))) (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64))) (*.f64 (sinh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))) (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64))))
(+.f64 (*.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64)) (cosh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64)))) (*.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64)) (sinh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64)))))
(+.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))))
(+.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))))
#s(approx (sqrt (* 2 (* x x))) #s(literal 0 binary64))
#s(literal 0 binary64)
(*.f64 (*.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/16 binary64))) (pow.f64 #s(literal 2 binary64) #s(literal 1/16 binary64)))
(*.f64 (neg.f64 (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64)))) (neg.f64 (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64)))))
(*.f64 (pow.f64 (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64))) #s(literal 1 binary64)) (pow.f64 (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64))) #s(literal 1 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/16 binary64)) (*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/16 binary64)) (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64))))
(*.f64 (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64))) (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64))))
(*.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64)) (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64)))
(pow.f64 (exp.f64 #s(literal 1/4 binary64)) (log.f64 #s(literal 2 binary64)))
(pow.f64 (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64))) #s(literal 2 binary64))
(pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64))
(pow.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/16 binary64)) #s(literal 2 binary64))
(pow.f64 (sqrt.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))
(pow.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64)) #s(literal 1 binary64))
(pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))
(/.f64 (-.f64 (*.f64 (cosh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))) (cosh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64)))) (*.f64 (sinh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))) (sinh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))))) (-.f64 (cosh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))) (sinh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64)))))
(/.f64 (+.f64 (pow.f64 (cosh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))) #s(literal 3 binary64)) (pow.f64 (sinh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))) #s(literal 3 binary64))) (fma.f64 (cosh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))) (cosh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))) (-.f64 (*.f64 (sinh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))) (sinh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64)))) (*.f64 (cosh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))) (sinh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64)))))))
(neg.f64 (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64))))
(sqrt.f64 (sqrt.f64 #s(literal 2 binary64)))
(fabs.f64 (neg.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64))))
(fabs.f64 (pow.f64 #s(literal 4 binary64) #s(literal 1/8 binary64)))
(exp.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (log.f64 #s(literal 2 binary64))) #s(literal 2 binary64)))
(exp.f64 (*.f64 (log.f64 #s(literal 4 binary64)) #s(literal 1/8 binary64)))
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64)))
(+.f64 (sinh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))) (cosh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))))
(+.f64 (cosh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))) (sinh.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64))))

eval8.0ms (0.5%)

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

Compiled 1 215 to 275 computations (77.4% saved)

prune2.0ms (0.1%)

Memory
4.6MiB live, 4.7MiB allocated; 0ms collecting garbage
Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New62163
Fresh000
Picked101
Done033
Total63467
Accuracy
99.9%
Counts
67 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
55.9%
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
99.2%
#s(approx (sqrt (* 2 (* x x))) (*.f64 (pow.f64 (sqrt.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 2 binary64)) x))
99.2%
#s(approx (sqrt (* 2 (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
3.6%
#s(literal 0 binary64)
Compiler

Compiled 32 to 27 computations (15.6% saved)

simplify8.0ms (0.5%)

Memory
6.6MiB live, 6.6MiB allocated; 0ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(sqrt.f64 (sqrt.f64 #s(literal 2 binary64)))
cost-diff0
(*.f64 (pow.f64 (sqrt.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 2 binary64)) x)
cost-diff0
#s(approx (sqrt (* 2 (* x x))) (*.f64 (pow.f64 (sqrt.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 2 binary64)) x))
cost-diff3
(pow.f64 (sqrt.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 2 binary64))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01033
01430
12624
27424
315824
426024
530624
632924
734924
034921
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
#s(approx (sqrt (* 2 (* x x))) (*.f64 (pow.f64 (sqrt.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 2 binary64)) x))
(*.f64 (pow.f64 (sqrt.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 2 binary64)) x)
(pow.f64 (sqrt.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 2 binary64))
(sqrt.f64 (sqrt.f64 #s(literal 2 binary64)))
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
x
Outputs
#s(approx (sqrt (* 2 (* x x))) (*.f64 (pow.f64 (sqrt.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 2 binary64)) x))
#s(approx (sqrt (* 2 (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (pow.f64 (sqrt.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 2 binary64)) x)
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(pow.f64 (sqrt.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 2 binary64))
(sqrt.f64 #s(literal 2 binary64))
(sqrt.f64 (sqrt.f64 #s(literal 2 binary64)))
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
x

localize46.0ms (3%)

Memory
-12.7MiB live, 33.0MiB allocated; 5ms collecting garbage
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(sqrt.f64 #s(literal 2 binary64))
accuracy0.0
#s(approx (sqrt (* 2 (* x x))) (*.f64 (pow.f64 (sqrt.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 2 binary64)) x))
accuracy0.48828125
(*.f64 (pow.f64 (sqrt.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 2 binary64)) x)
accuracy1.0
(pow.f64 (sqrt.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 2 binary64))
Samples
40.0ms256×0valid
Compiler

Compiled 27 to 11 computations (59.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 34.0ms
ival-mult: 26.0ms (77% of total)
ival-sqrt: 4.0ms (11.9% of total)
ival-pow2: 2.0ms (5.9% 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)

series1.0ms (0.1%)

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

3 calls:

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

simplify3.0ms (0.2%)

Memory
2.6MiB live, 2.6MiB allocated; 0ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
069
1139
2279
3289
0289
Stop Event
iter limit
saturated
Counts
2 → 2
Calls
Call 1
Inputs
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
Outputs
(* x (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(* -1 (* x (sqrt 2)))
(*.f64 (neg.f64 x) (sqrt.f64 #s(literal 2 binary64)))

rewrite42.0ms (2.8%)

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

Useful iterations: 2 (0.0ms)

IterNodesCost
01031
01426
14021
216011
0112511
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
5 → 66
Calls
Call 1
Inputs
(pow.f64 (sqrt.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 2 binary64))
#s(approx (sqrt (* 2 (* x x))) (*.f64 (pow.f64 (sqrt.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 2 binary64)) x))
(*.f64 (pow.f64 (sqrt.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 2 binary64)) x)
(sqrt.f64 (sqrt.f64 #s(literal 2 binary64)))
(sqrt.f64 #s(literal 2 binary64))
Outputs
(*.f64 (*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64))) (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64)))
(*.f64 (neg.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))) (neg.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))))
(*.f64 (pow.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))) #s(literal 1 binary64)) (pow.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))) #s(literal 1 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64)) (*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))))
(*.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))) (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))
(pow.f64 (exp.f64 (log.f64 #s(literal 2 binary64))) #s(literal 1/2 binary64))
(pow.f64 (exp.f64 #s(literal 2 binary64)) (*.f64 #s(literal 1/4 binary64) (log.f64 #s(literal 2 binary64))))
(pow.f64 #s(literal 4 binary64) #s(literal 1/4 binary64))
(pow.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))) #s(literal 2 binary64))
(pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64))
(pow.f64 (sqrt.f64 #s(literal 2 binary64)) #s(literal 1 binary64))
(pow.f64 #s(literal 2 binary64) #s(literal 1/2 binary64))
(/.f64 (-.f64 (*.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))) (*.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))))) (-.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))))
(/.f64 (+.f64 (pow.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) #s(literal 3 binary64)) (pow.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) #s(literal 3 binary64))) (fma.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (-.f64 (*.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))) (*.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))))))
(neg.f64 (*.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))) (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))))
(neg.f64 (*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))))
(fma.f64 #s(literal 2 binary64) (*.f64 (sinh.f64 (*.f64 #s(literal 1/4 binary64) (log.f64 #s(literal 2 binary64)))) (cosh.f64 (*.f64 #s(literal 1/4 binary64) (log.f64 #s(literal 2 binary64))))) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))))
(sqrt.f64 #s(literal 2 binary64))
(fabs.f64 (sqrt.f64 #s(literal 2 binary64)))
(exp.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))
(+.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))))
(+.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))))
#s(approx (sqrt (* 2 (* x x))) #s(literal 0 binary64))
#s(literal 0 binary64)
(*.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64))) (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64))))
(*.f64 (fabs.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64))) (fabs.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64))))
(*.f64 (sqrt.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))) (sqrt.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))))
(*.f64 (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64)) #s(literal 1 binary64)) (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64)) #s(literal 1 binary64)))
(*.f64 (pow.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))) #s(literal 1/2 binary64)) (pow.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))) #s(literal 1/2 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64)))
(pow.f64 (exp.f64 #s(literal 1/2 binary64)) (log.f64 (sqrt.f64 #s(literal 2 binary64))))
(pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64)) #s(literal 2 binary64))
(pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 1 binary64))
(pow.f64 (sqrt.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))
(pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))
(sqrt.f64 (sqrt.f64 #s(literal 2 binary64)))
(fabs.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))))
(fabs.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))
(exp.f64 (/.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 2 binary64)))
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/4 binary64)))
(exp.f64 (*.f64 #s(literal 1/4 binary64) (log.f64 #s(literal 2 binary64))))
(+.f64 (cosh.f64 (*.f64 #s(literal 1/4 binary64) (log.f64 #s(literal 2 binary64)))) (sinh.f64 (*.f64 #s(literal 1/4 binary64) (log.f64 #s(literal 2 binary64)))))
(*.f64 (*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64))) (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64)))
(*.f64 (neg.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))) (neg.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))))
(*.f64 (pow.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))) #s(literal 1 binary64)) (pow.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))) #s(literal 1 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64)) (*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/8 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))))
(*.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))) (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))
(pow.f64 (exp.f64 (log.f64 #s(literal 2 binary64))) #s(literal 1/2 binary64))
(pow.f64 (exp.f64 #s(literal 2 binary64)) (*.f64 #s(literal 1/4 binary64) (log.f64 #s(literal 2 binary64))))
(pow.f64 #s(literal 4 binary64) #s(literal 1/4 binary64))
(pow.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))) #s(literal 2 binary64))
(pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64))
(pow.f64 (sqrt.f64 #s(literal 2 binary64)) #s(literal 1 binary64))
(pow.f64 #s(literal 2 binary64) #s(literal 1/2 binary64))
(/.f64 (-.f64 (*.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))) (*.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))))) (-.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))))
(/.f64 (+.f64 (pow.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) #s(literal 3 binary64)) (pow.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) #s(literal 3 binary64))) (fma.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (-.f64 (*.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))) (*.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))))))
(neg.f64 (*.f64 (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))) (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64))))
(neg.f64 (*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) (neg.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))))
(fma.f64 #s(literal 2 binary64) (*.f64 (sinh.f64 (*.f64 #s(literal 1/4 binary64) (log.f64 #s(literal 2 binary64)))) (cosh.f64 (*.f64 #s(literal 1/4 binary64) (log.f64 #s(literal 2 binary64))))) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))))
(sqrt.f64 #s(literal 2 binary64))
(fabs.f64 (sqrt.f64 #s(literal 2 binary64)))
(exp.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64))))
(+.f64 (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))))
(+.f64 (cosh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))) (sinh.f64 (log.f64 (sqrt.f64 #s(literal 2 binary64)))))

eval24.0ms (1.6%)

Memory
-38.3MiB live, 6.8MiB allocated; 8ms collecting garbage
Compiler

Compiled 794 to 191 computations (75.9% saved)

prune3.0ms (0.2%)

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

4 alts after pruning (0 fresh and 4 done)

PrunedKeptTotal
New45045
Fresh000
Picked011
Done033
Total45449
Accuracy
99.9%
Counts
49 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
55.9%
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
99.2%
#s(approx (sqrt (* 2 (* x x))) (*.f64 (pow.f64 (sqrt.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 2 binary64)) x))
99.2%
#s(approx (sqrt (* 2 (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
3.6%
#s(literal 0 binary64)
Compiler

Compiled 78 to 49 computations (37.2% saved)

regimes8.0ms (0.5%)

Memory
8.8MiB live, 8.8MiB allocated; 0ms collecting garbage
Counts
5 → 1
Calls
Call 1
Inputs
#s(literal 0 binary64)
#s(approx (sqrt (* 2 (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
#s(approx (sqrt (* 2 (* x x))) (*.f64 (pow.f64 (sqrt.f64 (sqrt.f64 #s(literal 2 binary64))) #s(literal 2 binary64)) x))
#s(approx (sqrt (* 2 (* x x))) (*.f64 (pow.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) #s(literal 2 binary64)) x))
Outputs
#s(approx (sqrt (* 2 (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
Calls

4 calls:

2.0ms
x
2.0ms
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
2.0ms
(*.f64 #s(literal 2 binary64) (*.f64 x x))
2.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
99.2%1(*.f64 x x)
99.2%1(*.f64 #s(literal 2 binary64) (*.f64 x x))
99.2%1(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
99.2%1x
Compiler

Compiled 15 to 12 computations (20% saved)

regimes4.0ms (0.3%)

Memory
6.6MiB live, 6.6MiB allocated; 0ms collecting garbage
Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

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

4 calls:

1.0ms
x
1.0ms
(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
1.0ms
(*.f64 #s(literal 2 binary64) (*.f64 x x))
1.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
3.6%1(*.f64 x x)
3.6%1(*.f64 #s(literal 2 binary64) (*.f64 x x))
3.6%1(sqrt.f64 (*.f64 #s(literal 2 binary64) (*.f64 x x)))
3.6%1x
Compiler

Compiled 15 to 12 computations (20% saved)

simplify39.0ms (2.5%)

Memory
-14.7MiB live, 35.5MiB allocated; 7ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0912
11912
25612
312812
419812
526012
645012
7212012
8330012
Stop Event
node limit
Calls
Call 1
Inputs
#s(approx (sqrt (* 2 (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
#s(literal 0 binary64)
Outputs
#s(approx (sqrt (* 2 (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
#s(literal 0 binary64)

derivations43.0ms (2.8%)

Memory
7.2MiB live, 52.2MiB allocated; 4ms collecting garbage
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0817
11817
24317
39217
422817
543717
648517
048517
0514
0813
12413
21025
07775
Stop Event
done
iter limit
iter limit
iter limit
unsound
iter limit
iter limit
saturated
Compiler

Compiled 12 to 10 computations (16.7% saved)

preprocess19.0ms (1.2%)

Memory
-6.8MiB live, 39.6MiB allocated; 3ms collecting garbage
Compiler

Compiled 58 to 48 computations (17.2% saved)

end0.0ms (0%)

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

Profiling

Loading profile data...