Diagrams.TwoD.Apollonian:initialConfig from diagrams-contrib-1.3.0.5, A

Time bar (total: 1.5s)

start0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated

analyze41.0ms (2.7%)

Memory
10.6MiB live, 89.4MiB allocated
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
50%49.9%49.9%0.1%0%0%0%3
50%49.9%49.9%0.1%0%0%0%4
50%49.9%49.9%0.1%0%0%0%5
75%74.9%25%0.1%0%0%0%6
75%74.9%25%0.1%0%0%0%7
75%74.9%25%0.1%0%0%0%8
87.5%87.4%12.5%0.1%0%0%0%9
87.5%87.4%12.5%0.1%0%0%0%10
87.5%87.4%12.5%0.1%0%0%0%11
93.8%93.6%6.2%0.1%0%0%0%12
Compiler

Compiled 17 to 13 computations (23.5% saved)

sample865.0ms (57.4%)

Memory
3.5MiB live, 1 244.2MiB allocated
Samples
580.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 385.0ms
ival-mult: 235.0ms (61% of total)
ival-div: 56.0ms (14.5% of total)
ival-add: 43.0ms (11.2% of total)
ival-sub: 36.0ms (9.3% of total)
ival-true: 7.0ms (1.8% of total)
exact: 5.0ms (1.3% of total)
ival-assert: 4.0ms (1% of total)
Bogosity

explain121.0ms (8.1%)

Memory
7.7MiB live, 208.0MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
690-1(-1.8462600975301745e-270 7.755295540809093e-160 1.0910131004790462e-207)(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
300-0-(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
00-0-z
00-0-(*.f64 x x)
00-0-(*.f64 y #s(literal 2 binary64))
00-0-(+.f64 (*.f64 x x) (*.f64 y y))
00-0-#s(literal 2 binary64)
00-0-y
00-0-(*.f64 z z)
00-0-(*.f64 y y)
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
/.f64(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))o/n620
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))overflow149
(*.f64 y y)overflow63
(*.f64 x x)overflow72
(+.f64 (*.f64 x x) (*.f64 y y))overflow120
(*.f64 z z)overflow59
-.f64(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))nan-rescue300
(*.f64 y y)overflow63
(*.f64 x x)overflow72
(+.f64 (*.f64 x x) (*.f64 y y))overflow120
(*.f64 z z)overflow59
/.f64(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))u/n60
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))underflow6
(*.f64 y y)underflow59
(*.f64 x x)underflow49
(+.f64 (*.f64 x x) (*.f64 y y))underflow18
(*.f64 z z)underflow62
Confusion
Predicted +Predicted -
+851
-0170
Precision
1.0
Recall
0.9883720930232558
Confusion?
Predicted +Predicted MaybePredicted -
+8501
-00170
Precision?
1.0
Recall?
0.9883720930232558
Freqs
test
numberfreq
0171
172
213
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
40.0ms512×0valid
Compiler

Compiled 166 to 48 computations (71.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 22.0ms
ival-mult: 13.0ms (58.5% of total)
ival-div: 4.0ms (18% of total)
ival-sub: 2.0ms (9% of total)
ival-add: 2.0ms (9% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess6.0ms (0.4%)

Memory
-33.7MiB live, 5.9MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
Outputs
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
Compiler

Compiled 15 to 11 computations (26.7% saved)

eval0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated
Compiler

Compiled 0 to 3 computations (-∞% saved)

prune0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
68.0%
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
Compiler

Compiled 15 to 11 computations (26.7% saved)

simplify0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 x x)
cost-diff0
(+.f64 (*.f64 x x) (*.f64 y y))
cost-diff0
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
cost-diff0
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
Calls
Call 1
Inputs
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)
x
(*.f64 y y)
y
(*.f64 z z)
z
(*.f64 y #s(literal 2 binary64))
#s(literal 2 binary64)
Outputs
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)
x
(*.f64 y y)
y
(*.f64 z z)
z
(*.f64 y #s(literal 2 binary64))
#s(literal 2 binary64)

localize28.0ms (1.9%)

Memory
0.4MiB live, 38.4MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 x x)
accuracy0.00390625
(+.f64 (*.f64 x x) (*.f64 y y))
accuracy6.941367030773911
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
accuracy15.93067797301963
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
Samples
20.0ms256×0valid
Compiler

Compiled 100 to 24 computations (76% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-mult: 7.0ms (63% of total)
ival-div: 2.0ms (18% of total)
ival-sub: 1.0ms (9% of total)
ival-add: 1.0ms (9% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series9.0ms (0.6%)

Memory
12.8MiB live, 12.8MiB allocated
Counts
4 → 26
Calls
Call 1
Inputs
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)
Outputs
(* 1/2 (/ (- (pow y 2) (pow z 2)) y))
(+ (* 1/2 (/ (- (pow y 2) (pow z 2)) y)) (* 1/2 (/ (pow x 2) y)))
(- (pow y 2) (pow z 2))
(- (+ (pow x 2) (pow y 2)) (pow z 2))
(pow y 2)
(+ (pow x 2) (pow y 2))
(pow x 2)
(* 1/2 (/ (pow x 2) y))
(* (pow x 2) (+ (* 1/2 (/ (- y (/ (pow z 2) y)) (pow x 2))) (* 1/2 (/ 1 y))))
(* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (/ (pow z 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* 1/2 (/ (- (pow x 2) (pow z 2)) y))
(/ (+ (* 1/2 (- (pow x 2) (pow z 2))) (* 1/2 (pow y 2))) y)
(- (pow x 2) (pow z 2))
(* 1/2 y)
(* y (+ 1/2 (* 1/2 (/ (- (pow x 2) (pow z 2)) (pow y 2)))))
(* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (/ (pow z 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* -1 (* y (- (* -1/2 (/ (- (pow x 2) (pow z 2)) (pow y 2))) 1/2)))
(* 1/2 (/ (+ (pow x 2) (pow y 2)) y))
(+ (* -1/2 (/ (pow z 2) y)) (* 1/2 (/ (+ (pow x 2) (pow y 2)) y)))
(+ (* -1 (pow z 2)) (+ (pow x 2) (pow y 2)))
(* -1/2 (/ (pow z 2) y))
(* (pow z 2) (- (* 1/2 (/ (+ y (/ (pow x 2) y)) (pow z 2))) (* 1/2 (/ 1 y))))
(* -1 (pow z 2))
(* (pow z 2) (- (+ (/ (pow x 2) (pow z 2)) (/ (pow y 2) (pow z 2))) 1))
Calls

9 calls:

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

simplify0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Algorithm
egg-herbie
Counts
26 → 4
Calls
Call 1
Inputs
(* 1/2 (/ (- (pow y 2) (pow z 2)) y))
(+ (* 1/2 (/ (- (pow y 2) (pow z 2)) y)) (* 1/2 (/ (pow x 2) y)))
(- (pow y 2) (pow z 2))
(- (+ (pow x 2) (pow y 2)) (pow z 2))
(pow y 2)
(+ (pow x 2) (pow y 2))
(pow x 2)
(* 1/2 (/ (pow x 2) y))
(* (pow x 2) (+ (* 1/2 (/ (- y (/ (pow z 2) y)) (pow x 2))) (* 1/2 (/ 1 y))))
(* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (/ (pow z 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* 1/2 (/ (- (pow x 2) (pow z 2)) y))
(/ (+ (* 1/2 (- (pow x 2) (pow z 2))) (* 1/2 (pow y 2))) y)
(- (pow x 2) (pow z 2))
(* 1/2 y)
(* y (+ 1/2 (* 1/2 (/ (- (pow x 2) (pow z 2)) (pow y 2)))))
(* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (/ (pow z 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* -1 (* y (- (* -1/2 (/ (- (pow x 2) (pow z 2)) (pow y 2))) 1/2)))
(* 1/2 (/ (+ (pow x 2) (pow y 2)) y))
(+ (* -1/2 (/ (pow z 2) y)) (* 1/2 (/ (+ (pow x 2) (pow y 2)) y)))
(+ (* -1 (pow z 2)) (+ (pow x 2) (pow y 2)))
(* -1/2 (/ (pow z 2) y))
(* (pow z 2) (- (* 1/2 (/ (+ y (/ (pow x 2) y)) (pow z 2))) (* 1/2 (/ 1 y))))
(* -1 (pow z 2))
(* (pow z 2) (- (+ (/ (pow x 2) (pow z 2)) (/ (pow y 2) (pow z 2))) 1))
Outputs
(* 1/2 (/ (- (pow y 2) (pow z 2)) y))
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
(+ (* 1/2 (/ (- (pow y 2) (pow z 2)) y)) (* 1/2 (/ (pow x 2) y)))
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(- (pow y 2) (pow z 2))
(+.f64 (*.f64 x x) (*.f64 y y))
(- (+ (pow x 2) (pow y 2)) (pow z 2))
(*.f64 x x)

rewrite0.0ms (0%)

Memory
0.6MiB live, 0.6MiB allocated
Counts
4 → 4
Calls
Call 1
Inputs
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)
Outputs
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)

eval1.0ms (0.1%)

Memory
1.6MiB live, 1.6MiB allocated
Compiler

Compiled 160 to 25 computations (84.4% saved)

prune1.0ms (0.1%)

Memory
2.5MiB live, 2.5MiB allocated
Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New538
Fresh000
Picked011
Done000
Total549
Accuracy
70.6%
Counts
9 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
68.0%
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
47.9%
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 y #s(literal 2 binary64)))
35.4%
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
14.7%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
Compiler

Compiled 84 to 56 computations (33.3% saved)

simplify1.0ms (0%)

Memory
1.2MiB live, 1.2MiB allocated
Algorithm
egg-herbie
Localize:

Found 12 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 x x)
cost-diff0
(+.f64 (*.f64 x x) (*.f64 y y))
cost-diff0
#s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y)))
cost-diff0
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 y #s(literal 2 binary64)))
cost-diff0
(*.f64 y #s(literal 2 binary64))
cost-diff0
(*.f64 x x)
cost-diff0
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
cost-diff0
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
cost-diff0
(*.f64 x x)
cost-diff0
(+.f64 (*.f64 x x) (*.f64 y y))
cost-diff0
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
cost-diff0
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)
x
(*.f64 y y)
y
(*.f64 z z)
z
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
(*.f64 x x)
x
(*.f64 y #s(literal 2 binary64))
y
#s(literal 2 binary64)
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 y #s(literal 2 binary64)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y)))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)
x
(*.f64 y y)
y
(*.f64 y #s(literal 2 binary64))
#s(literal 2 binary64)
Outputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)
x
(*.f64 y y)
y
(*.f64 z z)
z
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
(*.f64 x x)
x
(*.f64 y #s(literal 2 binary64))
y
#s(literal 2 binary64)
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 y #s(literal 2 binary64)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y)))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)
x
(*.f64 y y)
y
(*.f64 y #s(literal 2 binary64))
#s(literal 2 binary64)

localize35.0ms (2.3%)

Memory
12.8MiB live, 50.5MiB allocated
Localize:

Found 12 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 x x)
accuracy0.00390625
(+.f64 (*.f64 x x) (*.f64 y y))
accuracy15.93067797301963
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 y #s(literal 2 binary64)))
accuracy19.693008542373654
#s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y)))
accuracy0.0
(*.f64 y #s(literal 2 binary64))
accuracy0.0
(*.f64 x x)
accuracy15.93067797301963
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
accuracy36.28310874506871
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
accuracy0.0
(*.f64 x x)
accuracy0.00390625
(+.f64 (*.f64 x x) (*.f64 y y))
accuracy6.941367030773911
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
accuracy51.94388306582496
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
Samples
24.0ms256×0valid
Compiler

Compiled 288 to 36 computations (87.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-mult: 7.0ms (62.9% of total)
ival-div: 2.0ms (18% of total)
ival-sub: 1.0ms (9% of total)
ival-add: 1.0ms (9% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series9.0ms (0.6%)

Memory
-20.6MiB live, 18.0MiB allocated
Counts
9 → 27
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
(*.f64 y #s(literal 2 binary64))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 y #s(literal 2 binary64)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y)))
Outputs
(* 1/2 (/ (- (pow y 2) (pow z 2)) y))
(+ (* 1/2 (/ (- (pow y 2) (pow z 2)) y)) (* 1/2 (/ (pow x 2) y)))
(- (pow y 2) (pow z 2))
(- (+ (pow x 2) (pow y 2)) (pow z 2))
(pow y 2)
(+ (pow x 2) (pow y 2))
(pow x 2)
(* 1/2 (/ (pow x 2) y))
(* (pow x 2) (+ (* 1/2 (/ (- y (/ (pow z 2) y)) (pow x 2))) (* 1/2 (/ 1 y))))
(* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (/ (pow z 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* 1/2 (/ (- (pow x 2) (pow z 2)) y))
(/ (+ (* 1/2 (- (pow x 2) (pow z 2))) (* 1/2 (pow y 2))) y)
(- (pow x 2) (pow z 2))
(* 2 y)
(* 1/2 y)
(* y (+ 1/2 (* 1/2 (/ (- (pow x 2) (pow z 2)) (pow y 2)))))
(* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (/ (pow z 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* -1 (* y (- (* -1/2 (/ (- (pow x 2) (pow z 2)) (pow y 2))) 1/2)))
(* 1/2 (/ (+ (pow x 2) (pow y 2)) y))
(+ (* -1/2 (/ (pow z 2) y)) (* 1/2 (/ (+ (pow x 2) (pow y 2)) y)))
(+ (* -1 (pow z 2)) (+ (pow x 2) (pow y 2)))
(* -1/2 (/ (pow z 2) y))
(* (pow z 2) (- (* 1/2 (/ (+ y (/ (pow x 2) y)) (pow z 2))) (* 1/2 (/ 1 y))))
(* -1 (pow z 2))
(* (pow z 2) (- (+ (/ (pow x 2) (pow z 2)) (/ (pow y 2) (pow z 2))) 1))
Calls

9 calls:

TimeVariablePointExpression
2.0ms
y
@0
((/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (* x x) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (* y 2) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)))
1.0ms
y
@-inf
((/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (* x x) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (* y 2) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)))
1.0ms
y
@inf
((/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (* x x) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (* y 2) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)))
1.0ms
x
@inf
((/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (* x x) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (* y 2) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)))
1.0ms
x
@-inf
((/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (* x x) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (* y 2) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)))

simplify1.0ms (0%)

Memory
1.0MiB live, 1.0MiB allocated
Algorithm
egg-herbie
Counts
27 → 9
Calls
Call 1
Inputs
(* 1/2 (/ (- (pow y 2) (pow z 2)) y))
(+ (* 1/2 (/ (- (pow y 2) (pow z 2)) y)) (* 1/2 (/ (pow x 2) y)))
(- (pow y 2) (pow z 2))
(- (+ (pow x 2) (pow y 2)) (pow z 2))
(pow y 2)
(+ (pow x 2) (pow y 2))
(pow x 2)
(* 1/2 (/ (pow x 2) y))
(* (pow x 2) (+ (* 1/2 (/ (- y (/ (pow z 2) y)) (pow x 2))) (* 1/2 (/ 1 y))))
(* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (/ (pow z 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* 1/2 (/ (- (pow x 2) (pow z 2)) y))
(/ (+ (* 1/2 (- (pow x 2) (pow z 2))) (* 1/2 (pow y 2))) y)
(- (pow x 2) (pow z 2))
(* 2 y)
(* 1/2 y)
(* y (+ 1/2 (* 1/2 (/ (- (pow x 2) (pow z 2)) (pow y 2)))))
(* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (/ (pow z 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* -1 (* y (- (* -1/2 (/ (- (pow x 2) (pow z 2)) (pow y 2))) 1/2)))
(* 1/2 (/ (+ (pow x 2) (pow y 2)) y))
(+ (* -1/2 (/ (pow z 2) y)) (* 1/2 (/ (+ (pow x 2) (pow y 2)) y)))
(+ (* -1 (pow z 2)) (+ (pow x 2) (pow y 2)))
(* -1/2 (/ (pow z 2) y))
(* (pow z 2) (- (* 1/2 (/ (+ y (/ (pow x 2) y)) (pow z 2))) (* 1/2 (/ 1 y))))
(* -1 (pow z 2))
(* (pow z 2) (- (+ (/ (pow x 2) (pow z 2)) (/ (pow y 2) (pow z 2))) 1))
Outputs
(* 1/2 (/ (- (pow y 2) (pow z 2)) y))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(+ (* 1/2 (/ (- (pow y 2) (pow z 2)) y)) (* 1/2 (/ (pow x 2) y)))
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(- (pow y 2) (pow z 2))
(+.f64 (*.f64 x x) (*.f64 y y))
(- (+ (pow x 2) (pow y 2)) (pow z 2))
(*.f64 x x)
(pow y 2)
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
(+ (pow x 2) (pow y 2))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
(pow x 2)
(*.f64 y #s(literal 2 binary64))
(* 1/2 (/ (pow x 2) y))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 y #s(literal 2 binary64)))
(* (pow x 2) (+ (* 1/2 (/ (- y (/ (pow z 2) y)) (pow x 2))) (* 1/2 (/ 1 y))))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y)))

rewrite1.0ms (0%)

Memory
1.1MiB live, 1.1MiB allocated
Counts
9 → 9
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
(*.f64 y #s(literal 2 binary64))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 y #s(literal 2 binary64)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y)))
Outputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
(*.f64 y #s(literal 2 binary64))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 y #s(literal 2 binary64)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y)))

eval2.0ms (0.2%)

Memory
4.8MiB live, 4.8MiB allocated
Compiler

Compiled 693 to 45 computations (93.5% saved)

prune6.0ms (0.4%)

Memory
11.3MiB live, 11.3MiB allocated
Pruning

10 alts after pruning (7 fresh and 3 done)

PrunedKeptTotal
New16723
Fresh000
Picked123
Done011
Total171027
Accuracy
75.2%
Counts
27 → 10
Alt Table
Click to see full alt table
StatusAccuracyProgram
68.0%
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
47.9%
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 y #s(literal 2 binary64)))
12.6%
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))) (*.f64 y #s(literal 2 binary64)))
35.4%
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
2.5%
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))) (*.f64 y #s(literal 2 binary64)))
11.3%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z)))
38.9%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z)))
15.2%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
13.3%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
12.2%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
Compiler

Compiled 531 to 267 computations (49.7% saved)

simplify1.0ms (0.1%)

Memory
2.7MiB live, 2.7MiB allocated
Algorithm
egg-herbie
Localize:

Found 19 expressions of interest:

NewMetricScoreProgram
cost-diff0
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
cost-diff0
(+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))
cost-diff0
(-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z))
cost-diff0
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z)))
cost-diff0
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
cost-diff0
#s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
cost-diff0
(-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z))
cost-diff0
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
cost-diff0
(*.f64 x x)
cost-diff0
(+.f64 (*.f64 x x) (*.f64 y y))
cost-diff0
#s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y)))
cost-diff0
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
cost-diff0
(*.f64 x x)
cost-diff0
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
cost-diff0
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
cost-diff0
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
cost-diff0
#s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64))))
cost-diff0
(-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z))
cost-diff0
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z)))
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z)))
(-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64))))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
(*.f64 x x)
x
(*.f64 y #s(literal 2 binary64))
y
#s(literal 2 binary64)
(*.f64 z z)
z
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
(*.f64 x x)
x
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y)))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)
x
(*.f64 y y)
y
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
(-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
(*.f64 x x)
x
(*.f64 z z)
z
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z)))
(-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z))
(+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
(*.f64 y #s(literal 2 binary64))
y
#s(literal 2 binary64)
(*.f64 y y)
(*.f64 z z)
z
Outputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z)))
(-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64))))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
(*.f64 x x)
x
(*.f64 y #s(literal 2 binary64))
y
#s(literal 2 binary64)
(*.f64 z z)
z
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
(*.f64 x x)
x
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y)))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)
x
(*.f64 y y)
y
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
(-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
(*.f64 x x)
x
(*.f64 z z)
z
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z)))
(-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z))
(+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
(*.f64 y #s(literal 2 binary64))
y
#s(literal 2 binary64)
(*.f64 y y)
(*.f64 z z)
z

localize48.0ms (3.2%)

Memory
-5.8MiB live, 79.9MiB allocated
Localize:

Found 19 expressions of interest:

NewMetricScoreProgram
accuracy0.00390625
(+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))
accuracy6.941367030773911
(-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z))
accuracy51.94388306582496
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z)))
accuracy61.93384928579009
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
accuracy6.941367030773911
(-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z))
accuracy19.693008542373654
#s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
accuracy36.28310874506871
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
accuracy51.94388306582496
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
accuracy0.0
(*.f64 x x)
accuracy0.00390625
(+.f64 (*.f64 x x) (*.f64 y y))
accuracy19.693008542373654
#s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y)))
accuracy51.94388306582496
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
accuracy0.0
(*.f64 x x)
accuracy36.28310874506871
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
accuracy51.94388306582496
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
accuracy15.93067797301963
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
accuracy36.28310874506871
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
accuracy51.94388306582496
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z)))
accuracy55.46637936423867
#s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64))))
Samples
27.0ms256×0valid
Compiler

Compiled 708 to 45 computations (93.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-mult: 6.0ms (54.7% of total)
ival-div: 2.0ms (18.2% of total)
ival-sub: 1.0ms (9.1% of total)
ival-add: 1.0ms (9.1% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series10.0ms (0.6%)

Memory
-22.3MiB live, 16.3MiB allocated
Counts
17 → 26
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z)))
(-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64))))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
(*.f64 x x)
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y)))
(+.f64 (*.f64 x x) (*.f64 y y))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
(-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z)))
(-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z))
(+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
Outputs
(* 1/2 (/ (- (pow y 2) (pow z 2)) y))
(+ (* 1/2 (/ (- (pow y 2) (pow z 2)) y)) (* 1/2 (/ (pow x 2) y)))
(- (pow y 2) (pow z 2))
(- (+ (pow x 2) (pow y 2)) (pow z 2))
(pow y 2)
(+ (pow x 2) (pow y 2))
(pow x 2)
(* 1/2 (/ (pow x 2) y))
(* (pow x 2) (+ (* 1/2 (/ (- y (/ (pow z 2) y)) (pow x 2))) (* 1/2 (/ 1 y))))
(* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (/ (pow z 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* 1/2 (/ (- (pow x 2) (pow z 2)) y))
(/ (+ (* 1/2 (- (pow x 2) (pow z 2))) (* 1/2 (pow y 2))) y)
(- (pow x 2) (pow z 2))
(* 1/2 y)
(* y (+ 1/2 (* 1/2 (/ (- (pow x 2) (pow z 2)) (pow y 2)))))
(* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (/ (pow z 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* -1 (* y (- (* -1/2 (/ (- (pow x 2) (pow z 2)) (pow y 2))) 1/2)))
(* 1/2 (/ (+ (pow x 2) (pow y 2)) y))
(+ (* -1/2 (/ (pow z 2) y)) (* 1/2 (/ (+ (pow x 2) (pow y 2)) y)))
(+ (* -1 (pow z 2)) (+ (pow x 2) (pow y 2)))
(* -1/2 (/ (pow z 2) y))
(* (pow z 2) (- (* 1/2 (/ (+ y (/ (pow x 2) y)) (pow z 2))) (* 1/2 (/ 1 y))))
(* -1 (pow z 2))
(* (pow z 2) (- (+ (/ (pow x 2) (pow z 2)) (/ (pow y 2) (pow z 2))) 1))
Calls

9 calls:

TimeVariablePointExpression
2.0ms
y
@-inf
((/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (* x x) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (* x x))
1.0ms
x
@inf
((/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (* x x) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (* x x))
1.0ms
x
@-inf
((/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (* x x) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (* x x))
1.0ms
x
@0
((/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (* x x) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (* x x))
1.0ms
y
@inf
((/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (* x x) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (- (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (* x x))

simplify1.0ms (0.1%)

Memory
1.4MiB live, 1.4MiB allocated
Algorithm
egg-herbie
Counts
26 → 17
Calls
Call 1
Inputs
(* 1/2 (/ (- (pow y 2) (pow z 2)) y))
(+ (* 1/2 (/ (- (pow y 2) (pow z 2)) y)) (* 1/2 (/ (pow x 2) y)))
(- (pow y 2) (pow z 2))
(- (+ (pow x 2) (pow y 2)) (pow z 2))
(pow y 2)
(+ (pow x 2) (pow y 2))
(pow x 2)
(* 1/2 (/ (pow x 2) y))
(* (pow x 2) (+ (* 1/2 (/ (- y (/ (pow z 2) y)) (pow x 2))) (* 1/2 (/ 1 y))))
(* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (/ (pow z 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* 1/2 (/ (- (pow x 2) (pow z 2)) y))
(/ (+ (* 1/2 (- (pow x 2) (pow z 2))) (* 1/2 (pow y 2))) y)
(- (pow x 2) (pow z 2))
(* 1/2 y)
(* y (+ 1/2 (* 1/2 (/ (- (pow x 2) (pow z 2)) (pow y 2)))))
(* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (/ (pow z 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* -1 (* y (- (* -1/2 (/ (- (pow x 2) (pow z 2)) (pow y 2))) 1/2)))
(* 1/2 (/ (+ (pow x 2) (pow y 2)) y))
(+ (* -1/2 (/ (pow z 2) y)) (* 1/2 (/ (+ (pow x 2) (pow y 2)) y)))
(+ (* -1 (pow z 2)) (+ (pow x 2) (pow y 2)))
(* -1/2 (/ (pow z 2) y))
(* (pow z 2) (- (* 1/2 (/ (+ y (/ (pow x 2) y)) (pow z 2))) (* 1/2 (/ 1 y))))
(* -1 (pow z 2))
(* (pow z 2) (- (+ (/ (pow x 2) (pow z 2)) (/ (pow y 2) (pow z 2))) 1))
Outputs
(* 1/2 (/ (- (pow y 2) (pow z 2)) y))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z)))
(+ (* 1/2 (/ (- (pow y 2) (pow z 2)) y)) (* 1/2 (/ (pow x 2) y)))
(-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z))
(- (pow y 2) (pow z 2))
#s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64))))
(- (+ (pow x 2) (pow y 2)) (pow z 2))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
(pow y 2)
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
(+ (pow x 2) (pow y 2))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
(pow x 2)
(*.f64 x x)
(* 1/2 (/ (pow x 2) y))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
(* (pow x 2) (+ (* 1/2 (/ (- y (/ (pow z 2) y)) (pow x 2))) (* 1/2 (/ 1 y))))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y)))
(* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (/ (pow z 2) (pow x 2))))
(+.f64 (*.f64 x x) (*.f64 y y))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
(* 1/2 (/ (- (pow x 2) (pow z 2)) y))
(-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z))
(/ (+ (* 1/2 (- (pow x 2) (pow z 2))) (* 1/2 (pow y 2))) y)
#s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
(- (pow x 2) (pow z 2))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z)))
(* 1/2 y)
(-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z))
(* y (+ 1/2 (* 1/2 (/ (- (pow x 2) (pow z 2)) (pow y 2)))))
(+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))
(* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (/ (pow z 2) (pow y 2))))
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))

rewrite1.0ms (0.1%)

Memory
1.8MiB live, 1.8MiB allocated
Counts
17 → 17
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z)))
(-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64))))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
(*.f64 x x)
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y)))
(+.f64 (*.f64 x x) (*.f64 y y))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
(-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z)))
(-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z))
(+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
Outputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z)))
(-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64))))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
(*.f64 x x)
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y)))
(+.f64 (*.f64 x x) (*.f64 y y))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
(-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z)))
(-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z))
(+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))

eval3.0ms (0.2%)

Memory
8.3MiB live, 8.3MiB allocated
Compiler

Compiled 1 532 to 63 computations (95.9% saved)

prune6.0ms (0.4%)

Memory
12.7MiB live, 12.7MiB allocated
Pruning

11 alts after pruning (4 fresh and 7 done)

PrunedKeptTotal
New33336
Fresh112
Picked145
Done033
Total351146
Accuracy
76.9%
Counts
46 → 11
Alt Table
Click to see full alt table
StatusAccuracyProgram
68.0%
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
47.9%
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 y #s(literal 2 binary64)))
35.4%
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
2.5%
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))) (*.f64 y #s(literal 2 binary64)))
11.3%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z)))
15.2%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z)))
15.2%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
4.5%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))
13.3%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
12.2%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
7.0%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
Compiler

Compiled 353 to 171 computations (51.6% saved)

simplify1.0ms (0.1%)

Memory
2.8MiB live, 2.8MiB allocated
Algorithm
egg-herbie
Localize:

Found 16 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 y #s(literal 2 binary64))
cost-diff0
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
cost-diff0
#s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64))))
cost-diff0
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))) (*.f64 y #s(literal 2 binary64)))
cost-diff0
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
cost-diff0
#s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z))))
cost-diff0
(-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z))
cost-diff0
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z)))
cost-diff0
(*.f64 y #s(literal 2 binary64))
cost-diff0
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
cost-diff0
(+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))
cost-diff0
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))
cost-diff0
(*.f64 y #s(literal 2 binary64))
cost-diff0
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
cost-diff0
#s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64))))
cost-diff0
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
#s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64))))
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
(*.f64 y #s(literal 2 binary64))
y
#s(literal 2 binary64)
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))
(+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
(*.f64 y #s(literal 2 binary64))
y
#s(literal 2 binary64)
(*.f64 y y)
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z)))
(-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
(-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
(*.f64 x x)
x
(*.f64 z z)
z
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))) (*.f64 y #s(literal 2 binary64)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64))))
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
(*.f64 y #s(literal 2 binary64))
y
#s(literal 2 binary64)
Outputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
#s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64))))
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
(*.f64 y #s(literal 2 binary64))
y
#s(literal 2 binary64)
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))
(+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
(*.f64 y #s(literal 2 binary64))
y
#s(literal 2 binary64)
(*.f64 y y)
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z)))
(-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
(-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
(*.f64 x x)
x
(*.f64 z z)
z
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))) (*.f64 y #s(literal 2 binary64)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64))))
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
(*.f64 y #s(literal 2 binary64))
y
#s(literal 2 binary64)

localize40.0ms (2.6%)

Memory
-17.2MiB live, 62.2MiB allocated
Localize:

Found 16 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 y #s(literal 2 binary64))
accuracy15.93067797301963
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))) (*.f64 y #s(literal 2 binary64)))
accuracy36.28310874506871
#s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64))))
accuracy61.93384928579009
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
accuracy36.28310874506871
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
accuracy51.94388306582496
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z)))
accuracy51.94388306582496
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
accuracy55.46637936423867
#s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z))))
accuracy0.0
(*.f64 y #s(literal 2 binary64))
accuracy0.00390625
(+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))
accuracy55.46637936423867
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))
accuracy61.93384928579009
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
accuracy0.0
(*.f64 y #s(literal 2 binary64))
accuracy36.28310874506871
#s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64))))
accuracy51.94388306582496
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
accuracy61.93384928579009
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
Samples
27.0ms256×0valid
Compiler

Compiled 654 to 42 computations (93.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 13.0ms
ival-mult: 9.0ms (67.9% of total)
ival-div: 2.0ms (15.1% of total)
ival-sub: 1.0ms (7.5% of total)
ival-add: 1.0ms (7.5% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series8.0ms (0.5%)

Memory
14.6MiB live, 14.6MiB allocated
Counts
12 → 27
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
#s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64))))
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
(*.f64 y #s(literal 2 binary64))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))
(+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z)))
(-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))) (*.f64 y #s(literal 2 binary64)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
Outputs
(* 1/2 (/ (- (pow y 2) (pow z 2)) y))
(+ (* 1/2 (/ (- (pow y 2) (pow z 2)) y)) (* 1/2 (/ (pow x 2) y)))
(- (pow y 2) (pow z 2))
(- (+ (pow x 2) (pow y 2)) (pow z 2))
(pow x 2)
(pow y 2)
(+ (pow x 2) (pow y 2))
(* 1/2 (/ (pow x 2) y))
(* (pow x 2) (+ (* 1/2 (/ (- y (/ (pow z 2) y)) (pow x 2))) (* 1/2 (/ 1 y))))
(* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (/ (pow z 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* 1/2 (/ (- (pow x 2) (pow z 2)) y))
(/ (+ (* 1/2 (- (pow x 2) (pow z 2))) (* 1/2 (pow y 2))) y)
(- (pow x 2) (pow z 2))
(* 2 y)
(* 1/2 y)
(* y (+ 1/2 (* 1/2 (/ (- (pow x 2) (pow z 2)) (pow y 2)))))
(* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (/ (pow z 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* -1 (* y (- (* -1/2 (/ (- (pow x 2) (pow z 2)) (pow y 2))) 1/2)))
(* 1/2 (/ (+ (pow x 2) (pow y 2)) y))
(+ (* -1/2 (/ (pow z 2) y)) (* 1/2 (/ (+ (pow x 2) (pow y 2)) y)))
(+ (* -1 (pow z 2)) (+ (pow x 2) (pow y 2)))
(* -1/2 (/ (pow z 2) y))
(* (pow z 2) (- (* 1/2 (/ (+ y (/ (pow x 2) y)) (pow z 2))) (* 1/2 (/ 1 y))))
(* -1 (pow z 2))
(* (pow z 2) (- (+ (/ (pow x 2) (pow z 2)) (/ (pow y 2) (pow z 2))) 1))
Calls

9 calls:

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

simplify1.0ms (0%)

Memory
1.0MiB live, 1.0MiB allocated
Algorithm
egg-herbie
Counts
27 → 12
Calls
Call 1
Inputs
(* 1/2 (/ (- (pow y 2) (pow z 2)) y))
(+ (* 1/2 (/ (- (pow y 2) (pow z 2)) y)) (* 1/2 (/ (pow x 2) y)))
(- (pow y 2) (pow z 2))
(- (+ (pow x 2) (pow y 2)) (pow z 2))
(pow x 2)
(pow y 2)
(+ (pow x 2) (pow y 2))
(* 1/2 (/ (pow x 2) y))
(* (pow x 2) (+ (* 1/2 (/ (- y (/ (pow z 2) y)) (pow x 2))) (* 1/2 (/ 1 y))))
(* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (/ (pow z 2) (pow x 2))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* 1/2 (/ (- (pow x 2) (pow z 2)) y))
(/ (+ (* 1/2 (- (pow x 2) (pow z 2))) (* 1/2 (pow y 2))) y)
(- (pow x 2) (pow z 2))
(* 2 y)
(* 1/2 y)
(* y (+ 1/2 (* 1/2 (/ (- (pow x 2) (pow z 2)) (pow y 2)))))
(* (pow y 2) (- (+ 1 (/ (pow x 2) (pow y 2))) (/ (pow z 2) (pow y 2))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* -1 (* y (- (* -1/2 (/ (- (pow x 2) (pow z 2)) (pow y 2))) 1/2)))
(* 1/2 (/ (+ (pow x 2) (pow y 2)) y))
(+ (* -1/2 (/ (pow z 2) y)) (* 1/2 (/ (+ (pow x 2) (pow y 2)) y)))
(+ (* -1 (pow z 2)) (+ (pow x 2) (pow y 2)))
(* -1/2 (/ (pow z 2) y))
(* (pow z 2) (- (* 1/2 (/ (+ y (/ (pow x 2) y)) (pow z 2))) (* 1/2 (/ 1 y))))
(* -1 (pow z 2))
(* (pow z 2) (- (+ (/ (pow x 2) (pow z 2)) (/ (pow y 2) (pow z 2))) 1))
Outputs
(* 1/2 (/ (- (pow y 2) (pow z 2)) y))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
(+ (* 1/2 (/ (- (pow y 2) (pow z 2)) y)) (* 1/2 (/ (pow x 2) y)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64))))
(- (pow y 2) (pow z 2))
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
(- (+ (pow x 2) (pow y 2)) (pow z 2))
(*.f64 y #s(literal 2 binary64))
(pow x 2)
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))
(pow y 2)
(+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))
(+ (pow x 2) (pow y 2))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z)))
(* 1/2 (/ (pow x 2) y))
(-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z))
(* (pow x 2) (+ (* 1/2 (/ (- y (/ (pow z 2) y)) (pow x 2))) (* 1/2 (/ 1 y))))
#s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z))))
(* (pow x 2) (- (+ 1 (/ (pow y 2) (pow x 2))) (/ (pow z 2) (pow x 2))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))) (*.f64 y #s(literal 2 binary64)))
(* 1/2 (/ (- (pow x 2) (pow z 2)) y))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))

rewrite1.0ms (0.1%)

Memory
1.3MiB live, 1.3MiB allocated
Counts
12 → 12
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
#s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64))))
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
(*.f64 y #s(literal 2 binary64))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))
(+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z)))
(-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))) (*.f64 y #s(literal 2 binary64)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))
Outputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
#s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64))))
#s(approx (* x x) (*.f64 y #s(literal 2 binary64)))
(*.f64 y #s(literal 2 binary64))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))
(+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z)))
(-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))) (*.f64 y #s(literal 2 binary64)))
#s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))

eval3.0ms (0.2%)

Memory
5.2MiB live, 5.2MiB allocated
Compiler

Compiled 1 381 to 50 computations (96.4% saved)

prune10.0ms (0.6%)

Memory
-22.0MiB live, 16.5MiB allocated
Pruning

13 alts after pruning (2 fresh and 11 done)

PrunedKeptTotal
New29231
Fresh000
Picked044
Done077
Total291342
Accuracy
76.9%
Counts
42 → 13
Alt Table
Click to see full alt table
StatusAccuracyProgram
68.0%
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
47.9%
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 y #s(literal 2 binary64)))
35.4%
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
56.9%
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 y #s(literal 2 binary64)))
2.5%
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))) (*.f64 y #s(literal 2 binary64)))
11.3%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z)))
15.2%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z)))
15.2%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
4.5%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))
4.5%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))) (*.f64 y y)))
13.3%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
12.2%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
7.0%
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
Compiler

Compiled 1 027 to 262 computations (74.5% saved)

regimes31.0ms (2.1%)

Memory
15.7MiB live, 54.1MiB allocated
Counts
16 → 2
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))) (*.f64 y y)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))) (*.f64 y #s(literal 2 binary64)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 y #s(literal 2 binary64)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))) (*.f64 y #s(literal 2 binary64)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 y #s(literal 2 binary64)))
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
Outputs
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
Calls

6 calls:

6.0ms
z
5.0ms
y
5.0ms
x
5.0ms
(*.f64 z z)
5.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
69.6%2x
68.0%1y
68.0%1z
71.7%2(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
70.5%2(*.f64 x x)
68.0%1(*.f64 z z)
Compiler

Compiled 24 to 28 computations (-16.7% saved)

regimes31.0ms (2.1%)

Memory
-22.4MiB live, 57.4MiB allocated
Counts
15 → 2
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))) (*.f64 y y)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))) (*.f64 y #s(literal 2 binary64)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 y #s(literal 2 binary64)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))) (*.f64 y #s(literal 2 binary64)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 y #s(literal 2 binary64)))
Outputs
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))) (*.f64 y #s(literal 2 binary64)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 y #s(literal 2 binary64)))
Calls

6 calls:

7.0ms
z
5.0ms
(*.f64 x x)
5.0ms
x
5.0ms
y
4.0ms
(*.f64 z z)
Results
AccuracySegmentsBranch
63.5%3z
63.2%2(*.f64 z z)
62.1%3y
58.5%2x
59.3%2(*.f64 x x)
65.6%4(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
Compiler

Compiled 24 to 28 computations (-16.7% saved)

regimes23.0ms (1.5%)

Memory
3.0MiB live, 41.5MiB allocated
Counts
14 → 2
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))) (*.f64 y y)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))) (*.f64 y #s(literal 2 binary64)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 y #s(literal 2 binary64)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y))) (*.f64 y #s(literal 2 binary64)))
Outputs
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 y #s(literal 2 binary64)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
Calls

5 calls:

5.0ms
(*.f64 x x)
5.0ms
z
5.0ms
y
4.0ms
(*.f64 z z)
4.0ms
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
Results
AccuracySegmentsBranch
59.3%2(*.f64 x x)
58.6%2y
56.9%1z
59.2%2(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
56.9%1(*.f64 z z)
Compiler

Compiled 23 to 25 computations (-8.7% saved)

regimes25.0ms (1.7%)

Memory
11.3MiB live, 49.7MiB allocated
Counts
12 → 2
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))) (*.f64 y y)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))) (*.f64 y #s(literal 2 binary64)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z)))
Outputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) (/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
Calls

6 calls:

5.0ms
(*.f64 z z)
4.0ms
z
4.0ms
y
4.0ms
x
4.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
38.9%1z
40.7%2(*.f64 z z)
38.9%1x
38.9%1y
41.2%2(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
40.7%2(*.f64 x x)
Compiler

Compiled 24 to 28 computations (-16.7% saved)

regimes7.0ms (0.5%)

Memory
14.5MiB live, 14.5MiB allocated
Counts
11 → 2
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))) (*.f64 y y)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))) (*.f64 y #s(literal 2 binary64)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
Outputs
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)) (*.f64 y #s(literal 2 binary64)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z)))
Calls

2 calls:

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

Compiled 18 to 15 computations (16.7% saved)

regimes22.0ms (1.4%)

Memory
9.8MiB live, 48.4MiB allocated
Counts
10 → 2
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))) (*.f64 y y)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(/.f64 #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))) (*.f64 y #s(literal 2 binary64)))
Outputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
Calls

6 calls:

4.0ms
(*.f64 x x)
4.0ms
z
3.0ms
y
3.0ms
x
3.0ms
(*.f64 z z)
Results
AccuracySegmentsBranch
19.6%2(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
17.6%2x
17.1%2z
18.3%2y
18.1%2(*.f64 x x)
17.4%2(*.f64 z z)
Compiler

Compiled 24 to 28 computations (-16.7% saved)

regimes7.0ms (0.5%)

Memory
-31.9MiB live, 6.7MiB allocated
Counts
7 → 3
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))) (*.f64 y y)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z)))
Outputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
Calls

1 calls:

6.0ms
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
Results
AccuracySegmentsBranch
20.7%3(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
Compiler

Compiled 15 to 11 computations (26.7% saved)

regimes3.0ms (0.2%)

Memory
6.0MiB live, 6.0MiB allocated
Counts
6 → 3
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) #s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))) (*.f64 y y)))
Outputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (-.f64 #s(approx (+ (* x x) (* y y)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x))) (*.f64 z z)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
Calls

1 calls:

2.0ms
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
Results
AccuracySegmentsBranch
20.7%3(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
Compiler

Compiled 15 to 11 computations (26.7% saved)

regimes12.0ms (0.8%)

Memory
26.1MiB live, 26.1MiB allocated
Counts
4 → 2
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) (+.f64 #s(approx (* x x) (*.f64 y #s(literal 2 binary64))) (*.f64 y y)))
Outputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (+.f64 (*.f64 x x) (*.f64 y y))))
Calls

6 calls:

2.0ms
z
2.0ms
y
2.0ms
x
2.0ms
(*.f64 z z)
2.0ms
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
Results
AccuracySegmentsBranch
13.3%1z
13.3%1(*.f64 z z)
13.3%1x
16.1%2(*.f64 x x)
15.0%2y
17.0%2(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
Compiler

Compiled 24 to 28 computations (-16.7% saved)

regimes6.0ms (0.4%)

Memory
-30.3MiB live, 7.9MiB allocated
Counts
2 → 2
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
Outputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) (*.f64 x x)))
Calls

2 calls:

4.0ms
(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
1.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
16.1%2(*.f64 x x)
15.9%2(/.f64 (-.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) (*.f64 y #s(literal 2 binary64)))
Compiler

Compiled 18 to 15 computations (16.7% saved)

regimes7.0ms (0.4%)

Memory
18.4MiB live, 18.4MiB allocated
Counts
1 → 1
Calls
Call 1
Inputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
Outputs
#s(approx (/ (- (+ (* x x) (* y y)) (* z z)) (* y 2)) #s(approx (- (+ (* x x) (* y y)) (* z z)) #s(approx (* x x) (*.f64 y #s(literal 2 binary64)))))
Calls

6 calls:

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

Compiled 24 to 28 computations (-16.7% saved)

bsearch0.0ms (0%)

Memory
0.8MiB live, 0.9MiB allocated
Algorithm
left-value
Steps
TimeLeftRight
0.0ms
+inf
NaN
Compiler

Compiled 18 to 17 computations (5.6% saved)

bsearch19.0ms (1.2%)

Memory
-8.1MiB live, 30.3MiB allocated
Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
17.0ms
1.273290613705718e-109
4.953337490668496e-103
Samples
9.0ms144×0valid
Compiler

Compiled 738 to 350 computations (52.6% saved)

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

bsearch11.0ms (0.7%)

Memory
19.5MiB live, 19.5MiB allocated
Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
9.0ms
9.44461618412305e+306
1.1489866283354239e+308
Samples
6.0ms96×0valid
Compiler

Compiled 462 to 221 computations (52.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 4.0ms
ival-mult: 2.0ms (56.1% of total)
ival-div: 1.0ms (28.1% of total)
ival-sub: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
ival-add: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

bsearch0.0ms (0%)

Memory
0.6MiB live, 0.6MiB allocated
Algorithm
left-value
Steps
TimeLeftRight
0.0ms
+inf
NaN
Compiler

Compiled 18 to 17 computations (5.6% saved)

bsearch17.0ms (1.1%)

Memory
-15.4MiB live, 22.7MiB allocated
Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
16.0ms
8.137856186357639e+306
+inf
Samples
11.0ms112×0valid
Compiler

Compiled 354 to 248 computations (29.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 9.0ms
ival-mult: 7.0ms (80.8% of total)
ival-sub: 1.0ms (11.5% of total)
ival-div: 1.0ms (11.5% of total)
ival-add: 1.0ms (11.5% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

bsearch0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.05763410325538117
683.3045028755756
Compiler

Compiled 18 to 17 computations (5.6% saved)

bsearch1.0ms (0%)

Memory
1.5MiB live, 1.5MiB allocated
Algorithm
left-value
Steps
TimeLeftRight
0.0ms
2.964345285134092e+150
3.0958248456141397e+154
0.0ms
-4.2059626431434756e+281
-7.029829376359386e+259
Compiler

Compiled 18 to 17 computations (5.6% saved)

bsearch1.0ms (0%)

Memory
1.2MiB live, 1.2MiB allocated
Algorithm
left-value
Steps
TimeLeftRight
0.0ms
2.964345285134092e+150
3.0958248456141397e+154
0.0ms
-4.2059626431434756e+281
-7.029829376359386e+259
Compiler

Compiled 18 to 17 computations (5.6% saved)

bsearch0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Algorithm
left-value
Steps
TimeLeftRight
0.0ms
2.964345285134092e+150
3.0958248456141397e+154
Compiler

Compiled 18 to 17 computations (5.6% saved)

bsearch7.0ms (0.5%)

Memory
13.8MiB live, 13.8MiB allocated
Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
6.0ms
1.1489866283354239e+308
+inf
Samples
4.0ms64×0valid
Compiler

Compiled 274 to 141 computations (48.5% saved)

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

simplify14.0ms (0.9%)

Memory
-34.2MiB live, 11.1MiB allocated

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...