Data.Array.Repa.Algorithms.Pixel:doubleRmsOfRGB8 from repa-algorithms-3.4.0.1

Time bar (total: 1.8s)

start0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

analyze3.0ms (0.2%)

Memory
-36.4MiB live, 2.5MiB 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
0%0%99.9%0.1%0%0%0%3
100%99.9%0%0.1%0%0%0%4
Compiler

Compiled 16 to 13 computations (18.8% saved)

sample1.0s (56.8%)

Memory
-115.2MiB live, 1 416.3MiB allocated
Samples
737.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 401.0ms
ival-mult: 172.0ms (42.9% of total)
ival-add: 81.0ms (20.2% of total)
ival-div: 66.0ms (16.5% of total)
ival-sqrt: 66.0ms (16.5% of total)
ival-true: 7.0ms (1.7% of total)
exact: 5.0ms (1.2% of total)
ival-assert: 4.0ms (1% of total)
Bogosity

explain126.0ms (7%)

Memory
-11.1MiB live, 226.3MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1420-0-(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
00-0-(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
00-0-#s(literal 3 binary64)
00-0-z
00-0-(*.f64 x x)
00-0-(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
00-0-(+.f64 (*.f64 x x) (*.f64 y y))
00-0-(*.f64 z z)
00-0-y
00-0-(*.f64 y y)
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
sqrt.f64(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))oflow-rescue1390
(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))overflow139
(*.f64 y y)overflow74
(*.f64 x x)overflow53
(*.f64 z z)overflow59
(+.f64 (*.f64 x x) (*.f64 y y))overflow109
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))overflow139
sqrt.f64(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))uflow-rescue30
(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))underflow3
(*.f64 y y)underflow52
(*.f64 x x)underflow75
(*.f64 z z)underflow62
(+.f64 (*.f64 x x) (*.f64 y y))underflow14
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))underflow3
Confusion
Predicted +Predicted -
+1420
-0114
Precision
1.0
Recall
1.0
Confusion?
Predicted +Predicted MaybePredicted -
+14200
-00114
Precision?
1.0
Recall?
1.0
Freqs
test
numberfreq
0114
1142
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
40.0ms512×0valid
Compiler

Compiled 192 to 48 computations (75% saved)

Precisions
Click to see histograms. Total time spent on operations: 22.0ms
ival-mult: 10.0ms (44.6% of total)
ival-add: 4.0ms (17.8% of total)
ival-sqrt: 4.0ms (17.8% of total)
ival-div: 3.0ms (13.4% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess3.0ms (0.2%)

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

Compiled 14 to 11 computations (21.4% 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
48.5%
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
Compiler

Compiled 14 to 11 computations (21.4% saved)

simplify0.0ms (0%)

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

Found 4 expressions of interest:

NewMetricScoreProgram
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)) #s(literal 3 binary64))
cost-diff0
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
Calls
Call 1
Inputs
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 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
#s(literal 3 binary64)
Outputs
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 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
#s(literal 3 binary64)

localize33.0ms (1.8%)

Memory
-9.4MiB live, 39.5MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 y y)
accuracy0.0
(*.f64 x x)
accuracy0.109375
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
accuracy32.946842009408535
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
Samples
26.0ms256×0valid
Compiler

Compiled 118 to 24 computations (79.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 17.0ms
ival-sqrt: 8.0ms (46.6% of total)
ival-mult: 5.0ms (29.1% of total)
ival-div: 2.0ms (11.7% of total)
ival-add: 2.0ms (11.7% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series13.0ms (0.7%)

Memory
20.1MiB live, 20.1MiB allocated
Counts
6 → 60
Calls
Call 1
Inputs
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)
(*.f64 y y)
Outputs
(* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2))))
(+ (* 1/2 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* -1/8 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (pow x 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 5))))))))))
(* 1/3 (+ (pow y 2) (pow z 2)))
(+ (* 1/3 (+ (pow y 2) (pow z 2))) (* 1/3 (pow x 2)))
(+ (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)
(* x (sqrt 1/3))
(* x (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 3)) (pow x 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))))
(* 1/3 (pow x 2))
(* (pow x 2) (+ 1/3 (* 1/3 (/ (+ (pow y 2) (pow z 2)) (pow x 2)))))
(* (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 (* x (sqrt 1/3)))
(* -1 (* x (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))
(* -1 (* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))))
(* -1 (* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 3)) (pow x 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))))
(* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2))))
(+ (* 1/2 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))) (* (pow y 2) (+ (* -1/8 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))) (* (pow y 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))) (* (pow y 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 5))))))))))
(* 1/3 (+ (pow x 2) (pow z 2)))
(+ (* 1/3 (+ (pow x 2) (pow z 2))) (* 1/3 (pow y 2)))
(+ (pow x 2) (pow z 2))
(* y (sqrt 1/3))
(* y (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))
(* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))
(* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 3)) (pow y 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))))
(* 1/3 (pow y 2))
(* (pow y 2) (+ 1/3 (* 1/3 (/ (+ (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 (sqrt 1/3)))
(* -1 (* y (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))
(* -1 (* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))))
(* -1 (* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 3)) (pow y 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))))
(* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2))))
(+ (* 1/2 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))) (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))) (* (pow z 2) (+ (* -1/8 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))) (* (pow z 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))) (* (pow z 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 3))))) (* 1/16 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 5))))))))))
(* 1/3 (+ (pow x 2) (pow y 2)))
(+ (* 1/3 (+ (pow x 2) (pow y 2))) (* 1/3 (pow z 2)))
(* z (sqrt 1/3))
(* z (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))
(* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))
(* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 3)) (pow z 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))))
(* 1/3 (pow z 2))
(* (pow z 2) (+ 1/3 (* 1/3 (/ (+ (pow x 2) (pow y 2)) (pow z 2)))))
(pow z 2)
(* (pow z 2) (+ 1 (+ (/ (pow x 2) (pow z 2)) (/ (pow y 2) (pow z 2)))))
(* -1 (* z (sqrt 1/3)))
(* -1 (* z (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))
(* -1 (* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))))
(* -1 (* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 3)) (pow z 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))))
Calls

9 calls:

TimeVariablePointExpression
2.0ms
x
@0
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (* x x) (* y y))
2.0ms
y
@0
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (* x x) (* y y))
2.0ms
x
@inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (* x x) (* y y))
2.0ms
y
@inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (* x x) (* y y))
1.0ms
z
@inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (* x x) (* y y))

simplify1.0ms (0.1%)

Memory
5.8MiB live, 5.8MiB allocated
Algorithm
egg-herbie
Counts
60 → 6
Calls
Call 1
Inputs
(* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2))))
(+ (* 1/2 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* -1/8 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (pow x 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 5))))))))))
(* 1/3 (+ (pow y 2) (pow z 2)))
(+ (* 1/3 (+ (pow y 2) (pow z 2))) (* 1/3 (pow x 2)))
(+ (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)
(* x (sqrt 1/3))
(* x (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 3)) (pow x 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))))
(* 1/3 (pow x 2))
(* (pow x 2) (+ 1/3 (* 1/3 (/ (+ (pow y 2) (pow z 2)) (pow x 2)))))
(* (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 (* x (sqrt 1/3)))
(* -1 (* x (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))
(* -1 (* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))))
(* -1 (* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 3)) (pow x 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))))
(* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2))))
(+ (* 1/2 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))) (* (pow y 2) (+ (* -1/8 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))) (* (pow y 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))) (* (pow y 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 5))))))))))
(* 1/3 (+ (pow x 2) (pow z 2)))
(+ (* 1/3 (+ (pow x 2) (pow z 2))) (* 1/3 (pow y 2)))
(+ (pow x 2) (pow z 2))
(* y (sqrt 1/3))
(* y (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))
(* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))
(* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 3)) (pow y 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))))
(* 1/3 (pow y 2))
(* (pow y 2) (+ 1/3 (* 1/3 (/ (+ (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 (sqrt 1/3)))
(* -1 (* y (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))
(* -1 (* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))))
(* -1 (* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 3)) (pow y 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))))
(* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2))))
(+ (* 1/2 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))) (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))) (* (pow z 2) (+ (* -1/8 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))) (* (pow z 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))) (* (pow z 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 3))))) (* 1/16 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 5))))))))))
(* 1/3 (+ (pow x 2) (pow y 2)))
(+ (* 1/3 (+ (pow x 2) (pow y 2))) (* 1/3 (pow z 2)))
(* z (sqrt 1/3))
(* z (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))
(* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))
(* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 3)) (pow z 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))))
(* 1/3 (pow z 2))
(* (pow z 2) (+ 1/3 (* 1/3 (/ (+ (pow x 2) (pow y 2)) (pow z 2)))))
(pow z 2)
(* (pow z 2) (+ 1 (+ (/ (pow x 2) (pow z 2)) (/ (pow y 2) (pow z 2)))))
(* -1 (* z (sqrt 1/3)))
(* -1 (* z (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))
(* -1 (* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))))
(* -1 (* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 3)) (pow z 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))))
Outputs
(* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2))))
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
(+ (* 1/2 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))))
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* -1/8 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))))))
(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (pow x 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 5))))))))))
(+.f64 (*.f64 x x) (*.f64 y y))
(* 1/3 (+ (pow y 2) (pow z 2)))
(*.f64 x x)
(+ (* 1/3 (+ (pow y 2) (pow z 2))) (* 1/3 (pow x 2)))
(*.f64 y y)

rewrite0.0ms (0%)

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

eval1.0ms (0.1%)

Memory
2.6MiB live, 2.6MiB allocated
Compiler

Compiled 225 to 27 computations (88% saved)

prune6.0ms (0.3%)

Memory
-29.4MiB live, 7.0MiB allocated
Pruning

6 alts after pruning (5 fresh and 1 done)

PrunedKeptTotal
New7512
Fresh000
Picked011
Done000
Total7613
Accuracy
48.6%
Counts
13 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
48.5%
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
7.3%
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y)))
6.7%
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
7.0%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
7.0%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
6.4%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.f64 y y)))
Compiler

Compiled 238 to 165 computations (30.7% saved)

simplify1.0ms (0.1%)

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

Found 18 expressions of interest:

NewMetricScoreProgram
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)) #s(literal 3 binary64))
cost-diff0
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 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 (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
cost-diff0
(*.f64 x x)
cost-diff0
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
cost-diff0
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
cost-diff0
(*.f64 y y)
cost-diff0
(*.f64 x x)
cost-diff0
(+.f64 (*.f64 x x) (*.f64 y y))
cost-diff0
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.f64 y y)))
cost-diff0
(*.f64 y y)
cost-diff0
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y))
cost-diff0
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y)))
Calls
Call 1
Inputs
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y)))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y))
(*.f64 y y)
y
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.f64 y y)))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)
x
(*.f64 y y)
y
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
(*.f64 x x)
x
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.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
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 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
#s(literal 3 binary64)
Outputs
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y)))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y))
(*.f64 y y)
y
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.f64 y y)))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)
x
(*.f64 y y)
y
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
(*.f64 x x)
x
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.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
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 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
#s(literal 3 binary64)

localize41.0ms (2.3%)

Memory
26.3MiB live, 63.1MiB allocated
Localize:

Found 18 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 y y)
accuracy0.0
(*.f64 x x)
accuracy0.109375
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
accuracy59.53083028277867
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
accuracy0.0
(*.f64 z z)
accuracy0.0
(*.f64 y y)
accuracy0.0
(*.f64 x x)
accuracy59.52759213543693
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
accuracy0.0
(*.f64 x x)
accuracy32.946842009408535
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
accuracy47.0435484935754
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
accuracy0.0
(+.f64 (*.f64 x x) (*.f64 y y))
accuracy0.0
(*.f64 y y)
accuracy0.0
(*.f64 x x)
accuracy59.925517295552886
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.f64 y y)))
accuracy0.0
(*.f64 y y)
accuracy32.946842009408535
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y)))
accuracy41.84458158309184
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y))
Samples
25.0ms256×0valid
Compiler

Compiled 438 to 38 computations (91.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-mult: 5.0ms (45.1% of total)
ival-div: 2.0ms (18.1% of total)
ival-add: 2.0ms (18.1% of total)
ival-sqrt: 2.0ms (18.1% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series13.0ms (0.7%)

Memory
-20.9MiB live, 16.7MiB allocated
Counts
13 → 60
Calls
Call 1
Inputs
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y)))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y))
(*.f64 y y)
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.f64 y y)))
(+.f64 (*.f64 x x) (*.f64 y y))
(*.f64 x x)
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
(*.f64 z z)
Outputs
(* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2))))
(+ (* 1/2 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* -1/8 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (pow x 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 5))))))))))
(* 1/3 (+ (pow y 2) (pow z 2)))
(+ (* 1/3 (+ (pow y 2) (pow z 2))) (* 1/3 (pow x 2)))
(pow y 2)
(+ (pow x 2) (pow y 2))
(pow x 2)
(+ (pow y 2) (pow z 2))
(+ (pow x 2) (+ (pow y 2) (pow z 2)))
(* x (sqrt 1/3))
(* x (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 3)) (pow x 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))))
(* 1/3 (pow x 2))
(* (pow x 2) (+ 1/3 (* 1/3 (/ (+ (pow y 2) (pow z 2)) (pow x 2)))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* (pow x 2) (+ 1 (+ (/ (pow y 2) (pow x 2)) (/ (pow z 2) (pow x 2)))))
(* -1 (* x (sqrt 1/3)))
(* -1 (* x (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))
(* -1 (* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))))
(* -1 (* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 3)) (pow x 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))))
(* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2))))
(+ (* 1/2 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))) (* (pow y 2) (+ (* -1/8 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))) (* (pow y 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))) (* (pow y 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 5))))))))))
(* 1/3 (+ (pow x 2) (pow z 2)))
(+ (* 1/3 (+ (pow x 2) (pow z 2))) (* 1/3 (pow y 2)))
(+ (pow x 2) (pow z 2))
(* y (sqrt 1/3))
(* y (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))
(* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))
(* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 3)) (pow y 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))))
(* 1/3 (pow y 2))
(* (pow y 2) (+ 1/3 (* 1/3 (/ (+ (pow x 2) (pow z 2)) (pow y 2)))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* (pow y 2) (+ 1 (+ (/ (pow x 2) (pow y 2)) (/ (pow z 2) (pow y 2)))))
(* -1 (* y (sqrt 1/3)))
(* -1 (* y (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))
(* -1 (* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))))
(* -1 (* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 3)) (pow y 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))))
(* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2))))
(+ (* 1/2 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))) (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))) (* (pow z 2) (+ (* -1/8 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))) (* (pow z 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))) (* (pow z 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 3))))) (* 1/16 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 5))))))))))
(* 1/3 (+ (pow x 2) (pow y 2)))
(+ (* 1/3 (+ (pow x 2) (pow y 2))) (* 1/3 (pow z 2)))
(pow z 2)
(* z (sqrt 1/3))
(* z (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))
(* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))
(* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 3)) (pow z 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))))
(* 1/3 (pow z 2))
(* (pow z 2) (+ 1/3 (* 1/3 (/ (+ (pow x 2) (pow y 2)) (pow z 2)))))
(* (pow z 2) (+ 1 (+ (/ (pow x 2) (pow z 2)) (/ (pow y 2) (pow z 2)))))
(* -1 (* z (sqrt 1/3)))
(* -1 (* z (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))
(* -1 (* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))))
(* -1 (* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 3)) (pow z 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))))
Calls

9 calls:

TimeVariablePointExpression
5.0ms
y
@-inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (* y y) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (+ (* x x) (* y y)) (* z z)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (* z z))
1.0ms
x
@-inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (* y y) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (+ (* x x) (* y y)) (* z z)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (* z z))
1.0ms
x
@inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (* y y) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (+ (* x x) (* y y)) (* z z)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (* z z))
1.0ms
x
@0
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (* y y) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (+ (* x x) (* y y)) (* z z)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (* z z))
1.0ms
y
@inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (* y y) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (+ (* x x) (* y y)) (* z z)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (* z z))

simplify1.0ms (0.1%)

Memory
2.2MiB live, 2.2MiB allocated
Algorithm
egg-herbie
Counts
60 → 13
Calls
Call 1
Inputs
(* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2))))
(+ (* 1/2 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* -1/8 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (pow x 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 5))))))))))
(* 1/3 (+ (pow y 2) (pow z 2)))
(+ (* 1/3 (+ (pow y 2) (pow z 2))) (* 1/3 (pow x 2)))
(pow y 2)
(+ (pow x 2) (pow y 2))
(pow x 2)
(+ (pow y 2) (pow z 2))
(+ (pow x 2) (+ (pow y 2) (pow z 2)))
(* x (sqrt 1/3))
(* x (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 3)) (pow x 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))))
(* 1/3 (pow x 2))
(* (pow x 2) (+ 1/3 (* 1/3 (/ (+ (pow y 2) (pow z 2)) (pow x 2)))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* (pow x 2) (+ 1 (+ (/ (pow y 2) (pow x 2)) (/ (pow z 2) (pow x 2)))))
(* -1 (* x (sqrt 1/3)))
(* -1 (* x (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))
(* -1 (* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))))
(* -1 (* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 3)) (pow x 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))))
(* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2))))
(+ (* 1/2 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))) (* (pow y 2) (+ (* -1/8 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))) (* (pow y 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))) (* (pow y 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 5))))))))))
(* 1/3 (+ (pow x 2) (pow z 2)))
(+ (* 1/3 (+ (pow x 2) (pow z 2))) (* 1/3 (pow y 2)))
(+ (pow x 2) (pow z 2))
(* y (sqrt 1/3))
(* y (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))
(* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))
(* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 3)) (pow y 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))))
(* 1/3 (pow y 2))
(* (pow y 2) (+ 1/3 (* 1/3 (/ (+ (pow x 2) (pow z 2)) (pow y 2)))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* (pow y 2) (+ 1 (+ (/ (pow x 2) (pow y 2)) (/ (pow z 2) (pow y 2)))))
(* -1 (* y (sqrt 1/3)))
(* -1 (* y (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))
(* -1 (* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))))
(* -1 (* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 3)) (pow y 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))))
(* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2))))
(+ (* 1/2 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))) (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))) (* (pow z 2) (+ (* -1/8 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))) (* (pow z 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))) (* (pow z 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 3))))) (* 1/16 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 5))))))))))
(* 1/3 (+ (pow x 2) (pow y 2)))
(+ (* 1/3 (+ (pow x 2) (pow y 2))) (* 1/3 (pow z 2)))
(pow z 2)
(* z (sqrt 1/3))
(* z (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))
(* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))
(* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 3)) (pow z 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))))
(* 1/3 (pow z 2))
(* (pow z 2) (+ 1/3 (* 1/3 (/ (+ (pow x 2) (pow y 2)) (pow z 2)))))
(* (pow z 2) (+ 1 (+ (/ (pow x 2) (pow z 2)) (/ (pow y 2) (pow z 2)))))
(* -1 (* z (sqrt 1/3)))
(* -1 (* z (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))
(* -1 (* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))))
(* -1 (* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 3)) (pow z 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))))
Outputs
(* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2))))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y)))
(+ (* 1/2 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* -1/8 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))))))
(*.f64 y y)
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (pow x 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 5))))))))))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.f64 y y)))
(* 1/3 (+ (pow y 2) (pow z 2)))
(+.f64 (*.f64 x x) (*.f64 y y))
(+ (* 1/3 (+ (pow y 2) (pow z 2))) (* 1/3 (pow x 2)))
(*.f64 x x)
(pow y 2)
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
(+ (pow x 2) (pow y 2))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
(pow x 2)
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(+ (pow y 2) (pow z 2))
(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(+ (pow x 2) (+ (pow y 2) (pow z 2)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
(* x (sqrt 1/3))
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
(* x (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))
(*.f64 z z)

rewrite1.0ms (0%)

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

eval4.0ms (0.2%)

Memory
8.6MiB live, 8.6MiB allocated
Compiler

Compiled 1 363 to 61 computations (95.5% saved)

prune7.0ms (0.4%)

Memory
13.9MiB live, 13.9MiB allocated
Pruning

12 alts after pruning (8 fresh and 4 done)

PrunedKeptTotal
New35843
Fresh000
Picked235
Done011
Total371249
Accuracy
48.9%
Counts
49 → 12
Alt Table
Click to see full alt table
StatusAccuracyProgram
48.5%
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
7.3%
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y)))
6.7%
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
12.7%
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))))))
8.1%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z)) #s(literal 3 binary64)))
6.5%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64)))
6.4%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.f64 y y)))
6.5%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)))
7.0%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))) (*.f64 y y)))
5.2%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 z z))
5.4%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
5.1%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
Compiler

Compiled 686 to 326 computations (52.5% saved)

simplify2.0ms (0.1%)

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

Found 18 expressions of interest:

NewMetricScoreProgram
cost-diff0
#s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
cost-diff0
(+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z))
cost-diff0
(/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z)) #s(literal 3 binary64))
cost-diff0
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z)) #s(literal 3 binary64)))
cost-diff0
#s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
cost-diff0
(+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z))
cost-diff0
(/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64))
cost-diff0
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64)))
cost-diff0
(*.f64 z z)
cost-diff0
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 z z))
cost-diff0
(*.f64 x x)
cost-diff0
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
cost-diff0
#s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
cost-diff0
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
cost-diff0
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
cost-diff0
#s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))))
cost-diff0
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))))
cost-diff0
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))))))
Calls
Call 1
Inputs
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))))))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))))
#s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.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
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
#s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
(*.f64 x x)
x
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 z z))
(*.f64 z z)
z
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64)))
(/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64))
(+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
(*.f64 x x)
x
(*.f64 z z)
z
#s(literal 3 binary64)
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z)) #s(literal 3 binary64)))
(/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z)) #s(literal 3 binary64))
(+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
(*.f64 x x)
x
(*.f64 z z)
z
#s(literal 3 binary64)
Outputs
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))))))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))))
#s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.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
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
#s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
(*.f64 x x)
x
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 z z))
(*.f64 z z)
z
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64)))
(/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64))
(+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
(*.f64 x x)
x
(*.f64 z z)
z
#s(literal 3 binary64)
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z)) #s(literal 3 binary64)))
(/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z)) #s(literal 3 binary64))
(+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
(*.f64 x x)
x
(*.f64 z z)
z
#s(literal 3 binary64)

localize50.0ms (2.8%)

Memory
-6.7MiB live, 73.9MiB allocated
Localize:

Found 18 expressions of interest:

NewMetricScoreProgram
accuracy32.946842009408535
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
accuracy47.0435484935754
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
accuracy59.53083028277867
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z)) #s(literal 3 binary64)))
accuracy59.925517295552886
#s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
accuracy0.109375
(/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64))
accuracy32.04064432487852
#s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
accuracy47.0435484935754
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
accuracy59.53083028277867
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64)))
accuracy0.0
(*.f64 z z)
accuracy60.675826132025
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 z z))
accuracy0.0
(*.f64 x x)
accuracy32.04064432487852
#s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
accuracy47.0435484935754
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
accuracy59.925517295552886
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
accuracy32.946842009408535
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))))))
accuracy47.0435484935754
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))))
accuracy59.52759213543693
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
accuracy60.755329071012916
#s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))))
Samples
34.0ms256×0valid
Compiler

Compiled 899 to 46 computations (94.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-mult: 5.0ms (44.6% of total)
ival-div: 2.0ms (17.8% of total)
ival-add: 2.0ms (17.8% of total)
ival-sqrt: 2.0ms (17.8% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series12.0ms (0.7%)

Memory
-18.9MiB live, 20.1MiB allocated
Counts
18 → 60
Calls
Call 1
Inputs
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))))))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))))
#s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
#s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
(*.f64 x x)
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 z z))
(*.f64 z z)
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64)))
(/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64))
(+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z)) #s(literal 3 binary64)))
(/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z)) #s(literal 3 binary64))
(+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
Outputs
(* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2))))
(+ (* 1/2 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* -1/8 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (pow x 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 5))))))))))
(* 1/3 (+ (pow y 2) (pow z 2)))
(+ (* 1/3 (+ (pow y 2) (pow z 2))) (* 1/3 (pow x 2)))
(pow x 2)
(pow y 2)
(+ (pow x 2) (pow y 2))
(+ (pow y 2) (pow z 2))
(+ (pow x 2) (+ (pow y 2) (pow z 2)))
(* x (sqrt 1/3))
(* x (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 3)) (pow x 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))))
(* 1/3 (pow x 2))
(* (pow x 2) (+ 1/3 (* 1/3 (/ (+ (pow y 2) (pow z 2)) (pow x 2)))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* (pow x 2) (+ 1 (+ (/ (pow y 2) (pow x 2)) (/ (pow z 2) (pow x 2)))))
(* -1 (* x (sqrt 1/3)))
(* -1 (* x (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))
(* -1 (* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))))
(* -1 (* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 3)) (pow x 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))))
(* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2))))
(+ (* 1/2 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))) (* (pow y 2) (+ (* -1/8 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))) (* (pow y 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))) (* (pow y 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 5))))))))))
(* 1/3 (+ (pow x 2) (pow z 2)))
(+ (* 1/3 (+ (pow x 2) (pow z 2))) (* 1/3 (pow y 2)))
(+ (pow x 2) (pow z 2))
(* y (sqrt 1/3))
(* y (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))
(* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))
(* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 3)) (pow y 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))))
(* 1/3 (pow y 2))
(* (pow y 2) (+ 1/3 (* 1/3 (/ (+ (pow x 2) (pow z 2)) (pow y 2)))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* (pow y 2) (+ 1 (+ (/ (pow x 2) (pow y 2)) (/ (pow z 2) (pow y 2)))))
(* -1 (* y (sqrt 1/3)))
(* -1 (* y (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))
(* -1 (* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))))
(* -1 (* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 3)) (pow y 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))))
(* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2))))
(+ (* 1/2 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))) (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))) (* (pow z 2) (+ (* -1/8 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))) (* (pow z 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))) (* (pow z 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 3))))) (* 1/16 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 5))))))))))
(* 1/3 (+ (pow x 2) (pow y 2)))
(+ (* 1/3 (+ (pow x 2) (pow y 2))) (* 1/3 (pow z 2)))
(pow z 2)
(* z (sqrt 1/3))
(* z (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))
(* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))
(* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 3)) (pow z 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))))
(* 1/3 (pow z 2))
(* (pow z 2) (+ 1/3 (* 1/3 (/ (+ (pow x 2) (pow y 2)) (pow z 2)))))
(* (pow z 2) (+ 1 (+ (/ (pow x 2) (pow z 2)) (/ (pow y 2) (pow z 2)))))
(* -1 (* z (sqrt 1/3)))
(* -1 (* z (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))
(* -1 (* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))))
(* -1 (* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 3)) (pow z 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))))
Calls

9 calls:

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

simplify1.0ms (0.1%)

Memory
2.7MiB live, 2.7MiB allocated
Algorithm
egg-herbie
Counts
60 → 18
Calls
Call 1
Inputs
(* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2))))
(+ (* 1/2 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* -1/8 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (pow x 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 5))))))))))
(* 1/3 (+ (pow y 2) (pow z 2)))
(+ (* 1/3 (+ (pow y 2) (pow z 2))) (* 1/3 (pow x 2)))
(pow x 2)
(pow y 2)
(+ (pow x 2) (pow y 2))
(+ (pow y 2) (pow z 2))
(+ (pow x 2) (+ (pow y 2) (pow z 2)))
(* x (sqrt 1/3))
(* x (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 3)) (pow x 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))))
(* 1/3 (pow x 2))
(* (pow x 2) (+ 1/3 (* 1/3 (/ (+ (pow y 2) (pow z 2)) (pow x 2)))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(* (pow x 2) (+ 1 (+ (/ (pow y 2) (pow x 2)) (/ (pow z 2) (pow x 2)))))
(* -1 (* x (sqrt 1/3)))
(* -1 (* x (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))
(* -1 (* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))))
(* -1 (* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 3)) (pow x 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))))
(* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2))))
(+ (* 1/2 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))) (* (pow y 2) (+ (* -1/8 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))) (* (pow y 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))) (* (pow y 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 5))))))))))
(* 1/3 (+ (pow x 2) (pow z 2)))
(+ (* 1/3 (+ (pow x 2) (pow z 2))) (* 1/3 (pow y 2)))
(+ (pow x 2) (pow z 2))
(* y (sqrt 1/3))
(* y (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))
(* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))
(* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 3)) (pow y 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))))
(* 1/3 (pow y 2))
(* (pow y 2) (+ 1/3 (* 1/3 (/ (+ (pow x 2) (pow z 2)) (pow y 2)))))
(* (pow y 2) (+ 1 (/ (pow x 2) (pow y 2))))
(* (pow y 2) (+ 1 (+ (/ (pow x 2) (pow y 2)) (/ (pow z 2) (pow y 2)))))
(* -1 (* y (sqrt 1/3)))
(* -1 (* y (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))
(* -1 (* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))))
(* -1 (* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 3)) (pow y 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))))
(* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2))))
(+ (* 1/2 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))) (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))) (* (pow z 2) (+ (* -1/8 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))) (* (pow z 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))) (* (pow z 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 3))))) (* 1/16 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 5))))))))))
(* 1/3 (+ (pow x 2) (pow y 2)))
(+ (* 1/3 (+ (pow x 2) (pow y 2))) (* 1/3 (pow z 2)))
(pow z 2)
(* z (sqrt 1/3))
(* z (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))
(* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))
(* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 3)) (pow z 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))))
(* 1/3 (pow z 2))
(* (pow z 2) (+ 1/3 (* 1/3 (/ (+ (pow x 2) (pow y 2)) (pow z 2)))))
(* (pow z 2) (+ 1 (+ (/ (pow x 2) (pow z 2)) (/ (pow y 2) (pow z 2)))))
(* -1 (* z (sqrt 1/3)))
(* -1 (* z (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))
(* -1 (* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))))
(* -1 (* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 3)) (pow z 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))))
Outputs
(* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2))))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))))))
(+ (* 1/2 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* -1/8 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))))))
#s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (pow x 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 5))))))))))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(* 1/3 (+ (pow y 2) (pow z 2)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
(+ (* 1/3 (+ (pow y 2) (pow z 2))) (* 1/3 (pow x 2)))
#s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
(pow x 2)
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
(pow y 2)
(*.f64 x x)
(+ (pow x 2) (pow y 2))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 z z))
(+ (pow y 2) (pow z 2))
(*.f64 z z)
(+ (pow x 2) (+ (pow y 2) (pow z 2)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64)))
(* x (sqrt 1/3))
(/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64))
(* x (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))
(+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z))
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z)) #s(literal 3 binary64)))
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 3)) (pow x 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))))
(/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z)) #s(literal 3 binary64))
(* 1/3 (pow x 2))
(+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z))
(* (pow x 2) (+ 1/3 (* 1/3 (/ (+ (pow y 2) (pow z 2)) (pow x 2)))))
#s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))

rewrite1.0ms (0.1%)

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

eval4.0ms (0.2%)

Memory
9.3MiB live, 9.3MiB allocated
Compiler

Compiled 1 986 to 67 computations (96.6% saved)

prune10.0ms (0.6%)

Memory
-19.9MiB live, 18.9MiB allocated
Pruning

16 alts after pruning (7 fresh and 9 done)

PrunedKeptTotal
New41445
Fresh033
Picked055
Done044
Total411657
Accuracy
48.9%
Counts
57 → 16
Alt Table
Click to see full alt table
StatusAccuracyProgram
48.5%
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
8.7%
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z))))
7.3%
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y)))
6.7%
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
5.2%
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))))
12.7%
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))))))
8.1%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z)) #s(literal 3 binary64)))
6.5%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64)))
5.2%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (*.f64 z z)) #s(literal 3 binary64)))
6.5%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64)))) #s(literal 3 binary64)))
6.4%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.f64 y y)))
6.5%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)))
7.0%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))) (*.f64 y y)))
5.2%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 z z))
5.4%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
5.1%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
Compiler

Compiled 876 to 383 computations (56.3% saved)

simplify1.0ms (0.1%)

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

Found 18 expressions of interest:

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

localize41.0ms (2.3%)

Memory
26.8MiB live, 68.8MiB allocated
Localize:

Found 18 expressions of interest:

NewMetricScoreProgram
accuracy32.946842009408535
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
accuracy32.946842009408535
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))))
accuracy47.0435484935754
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
accuracy59.925517295552886
#s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
accuracy0.0
(*.f64 z z)
accuracy0.109375
(/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (*.f64 z z)) #s(literal 3 binary64))
accuracy36.8340883919925
#s(approx (+ (+ (* x x) (* y y)) (* z z)) (*.f64 z z))
accuracy59.53083028277867
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (*.f64 z z)) #s(literal 3 binary64)))
accuracy0.0
(*.f64 x x)
accuracy32.04064432487852
#s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
accuracy47.0435484935754
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
accuracy59.52759213543693
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)))
accuracy0.0
(*.f64 y y)
accuracy60.57540288653823
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
accuracy32.946842009408535
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z))))
accuracy32.946842009408535
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
accuracy47.0435484935754
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
accuracy59.925517295552886
#s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
Samples
25.0ms256×0valid
Compiler

Compiled 809 to 43 computations (94.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-mult: 5.0ms (45.2% of total)
ival-div: 2.0ms (18.1% of total)
ival-add: 2.0ms (18.1% of total)
ival-sqrt: 2.0ms (18.1% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series12.0ms (0.6%)

Memory
-20.4MiB live, 18.0MiB allocated
Counts
18 → 60
Calls
Call 1
Inputs
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z))))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z)))
(+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
(*.f64 y y)
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)))
(+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (*.f64 z z)) #s(literal 3 binary64)))
(/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (*.f64 z z)) #s(literal 3 binary64))
#s(approx (+ (+ (* x x) (* y y)) (* z z)) (*.f64 z z))
(*.f64 z z)
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
(*.f64 x x)
Outputs
(* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2))))
(+ (* 1/2 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* -1/8 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (pow x 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 5))))))))))
(* 1/3 (+ (pow y 2) (pow z 2)))
(+ (* 1/3 (+ (pow y 2) (pow z 2))) (* 1/3 (pow x 2)))
(+ (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)
(* x (sqrt 1/3))
(* x (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 3)) (pow x 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))))
(* 1/3 (pow x 2))
(* (pow x 2) (+ 1/3 (* 1/3 (/ (+ (pow y 2) (pow z 2)) (pow x 2)))))
(* (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 (* x (sqrt 1/3)))
(* -1 (* x (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))
(* -1 (* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))))
(* -1 (* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 3)) (pow x 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))))
(* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2))))
(+ (* 1/2 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))) (* (pow y 2) (+ (* -1/8 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))) (* (pow y 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))) (* (pow y 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 5))))))))))
(* 1/3 (+ (pow x 2) (pow z 2)))
(+ (* 1/3 (+ (pow x 2) (pow z 2))) (* 1/3 (pow y 2)))
(+ (pow x 2) (pow z 2))
(* y (sqrt 1/3))
(* y (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))
(* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))
(* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 3)) (pow y 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))))
(* 1/3 (pow y 2))
(* (pow y 2) (+ 1/3 (* 1/3 (/ (+ (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 (sqrt 1/3)))
(* -1 (* y (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))
(* -1 (* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))))
(* -1 (* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 3)) (pow y 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))))
(* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2))))
(+ (* 1/2 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))) (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))) (* (pow z 2) (+ (* -1/8 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))) (* (pow z 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))) (* (pow z 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 3))))) (* 1/16 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 5))))))))))
(* 1/3 (+ (pow x 2) (pow y 2)))
(+ (* 1/3 (+ (pow x 2) (pow y 2))) (* 1/3 (pow z 2)))
(pow z 2)
(* z (sqrt 1/3))
(* z (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))
(* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))
(* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 3)) (pow z 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))))
(* 1/3 (pow z 2))
(* (pow z 2) (+ 1/3 (* 1/3 (/ (+ (pow x 2) (pow y 2)) (pow z 2)))))
(* (pow z 2) (+ 1 (+ (/ (pow x 2) (pow z 2)) (/ (pow y 2) (pow z 2)))))
(* -1 (* z (sqrt 1/3)))
(* -1 (* z (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))
(* -1 (* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))))
(* -1 (* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 3)) (pow z 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))))
Calls

9 calls:

TimeVariablePointExpression
2.0ms
x
@-inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* y y) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+ (+ (* x x) (* y y)) (* z z)) (* z z) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* x x))
1.0ms
y
@-inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* y y) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+ (+ (* x x) (* y y)) (* z z)) (* z z) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* x x))
1.0ms
x
@inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* y y) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+ (+ (* x x) (* y y)) (* z z)) (* z z) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* x x))
1.0ms
y
@inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* y y) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+ (+ (* x x) (* y y)) (* z z)) (* z z) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* x x))
1.0ms
z
@inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* y y) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+ (+ (* x x) (* y y)) (* z z)) (* z z) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* x x))

simplify1.0ms (0.1%)

Memory
2.4MiB live, 2.4MiB allocated
Algorithm
egg-herbie
Counts
60 → 18
Calls
Call 1
Inputs
(* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2))))
(+ (* 1/2 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* -1/8 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (pow x 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 5))))))))))
(* 1/3 (+ (pow y 2) (pow z 2)))
(+ (* 1/3 (+ (pow y 2) (pow z 2))) (* 1/3 (pow x 2)))
(+ (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)
(* x (sqrt 1/3))
(* x (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 3)) (pow x 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))))
(* 1/3 (pow x 2))
(* (pow x 2) (+ 1/3 (* 1/3 (/ (+ (pow y 2) (pow z 2)) (pow x 2)))))
(* (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 (* x (sqrt 1/3)))
(* -1 (* x (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))
(* -1 (* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))))
(* -1 (* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 3)) (pow x 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))))
(* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2))))
(+ (* 1/2 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))) (* (pow y 2) (+ (* -1/8 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow z 2)))) (* (pow y 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow z 2)))))) (* (pow y 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow y 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow z 2)) 5))))))))))
(* 1/3 (+ (pow x 2) (pow z 2)))
(+ (* 1/3 (+ (pow x 2) (pow z 2))) (* 1/3 (pow y 2)))
(+ (pow x 2) (pow z 2))
(* y (sqrt 1/3))
(* y (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))
(* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))
(* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 3)) (pow y 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))))
(* 1/3 (pow y 2))
(* (pow y 2) (+ 1/3 (* 1/3 (/ (+ (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 (sqrt 1/3)))
(* -1 (* y (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))
(* -1 (* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2)))))))
(* -1 (* y (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 2)) (pow y 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow z 2)) 3)) (pow y 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow z 2))) (pow y 2))))))))
(* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2))))
(+ (* 1/2 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))) (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))) (* (pow z 2) (+ (* -1/8 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))))))
(+ (* (sqrt 1/3) (sqrt (+ (pow x 2) (pow y 2)))) (* (pow z 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow x 2) (pow y 2)))))) (* (pow z 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 3))))) (* 1/16 (* (* (pow z 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow x 2) (pow y 2)) 5))))))))))
(* 1/3 (+ (pow x 2) (pow y 2)))
(+ (* 1/3 (+ (pow x 2) (pow y 2))) (* 1/3 (pow z 2)))
(pow z 2)
(* z (sqrt 1/3))
(* z (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))
(* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))
(* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 3)) (pow z 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))))
(* 1/3 (pow z 2))
(* (pow z 2) (+ 1/3 (* 1/3 (/ (+ (pow x 2) (pow y 2)) (pow z 2)))))
(* (pow z 2) (+ 1 (+ (/ (pow x 2) (pow z 2)) (/ (pow y 2) (pow z 2)))))
(* -1 (* z (sqrt 1/3)))
(* -1 (* z (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))
(* -1 (* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2)))))))
(* -1 (* z (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 2)) (pow z 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow x 2) (pow y 2)) 3)) (pow z 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow x 2) (pow y 2))) (pow z 2))))))))
Outputs
(* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2))))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z))))
(+ (* 1/2 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z)))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* -1/8 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))))))
(+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z))
(+ (* (sqrt 1/3) (sqrt (+ (pow y 2) (pow z 2)))) (* (pow x 2) (+ (* 1/2 (* (sqrt 1/3) (sqrt (/ 1 (+ (pow y 2) (pow z 2)))))) (* (pow x 2) (+ (* -1/8 (* (sqrt 1/3) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 3))))) (* 1/16 (* (* (pow x 2) (sqrt 1/3)) (sqrt (/ 1 (pow (+ (pow y 2) (pow z 2)) 5))))))))))
#s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
(* 1/3 (+ (pow y 2) (pow z 2)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
(+ (* 1/3 (+ (pow y 2) (pow z 2))) (* 1/3 (pow x 2)))
(*.f64 y y)
(+ (pow y 2) (pow z 2))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)))
(+ (pow x 2) (+ (pow y 2) (pow z 2)))
(+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z))
(pow y 2)
#s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
(+ (pow x 2) (pow y 2))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
(pow x 2)
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (*.f64 z z)) #s(literal 3 binary64)))
(* x (sqrt 1/3))
(/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (*.f64 z z)) #s(literal 3 binary64))
(* x (+ (sqrt 1/3) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))
#s(approx (+ (+ (* x x) (* y y)) (* z z)) (*.f64 z z))
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2))))))
(*.f64 z z)
(* x (+ (sqrt 1/3) (+ (* -1/8 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 2)) (pow x 4))) (+ (* 1/16 (/ (* (sqrt 1/3) (pow (+ (pow y 2) (pow z 2)) 3)) (pow x 6))) (* 1/2 (/ (* (sqrt 1/3) (+ (pow y 2) (pow z 2))) (pow x 2)))))))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))))
(* 1/3 (pow x 2))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))))
(* (pow x 2) (+ 1/3 (* 1/3 (/ (+ (pow y 2) (pow z 2)) (pow x 2)))))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
(* (pow x 2) (+ 1 (+ (/ (pow y 2) (pow x 2)) (/ (pow z 2) (pow x 2)))))
(*.f64 x x)

rewrite1.0ms (0.1%)

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

eval4.0ms (0.2%)

Memory
8.7MiB live, 8.7MiB allocated
Compiler

Compiled 2 008 to 76 computations (96.2% saved)

prune11.0ms (0.6%)

Memory
-18.7MiB live, 19.5MiB allocated
Pruning

17 alts after pruning (5 fresh and 12 done)

PrunedKeptTotal
New43346
Fresh022
Picked145
Done189
Total451762
Accuracy
48.9%
Counts
62 → 17
Alt Table
Click to see full alt table
StatusAccuracyProgram
48.5%
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
8.7%
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z))))
7.0%
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (*.f64 z z)) #s(literal 3 binary64))))))) (*.f64 z z))))
10.4%
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z))))
7.3%
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y)))
6.7%
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
8.1%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z)) #s(literal 3 binary64)))
6.5%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64)))
5.2%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (*.f64 z z)) #s(literal 3 binary64)))
6.5%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64)))) #s(literal 3 binary64)))
6.4%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.f64 y y)))
6.5%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)))
5.2%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (*.f64 z z)) #s(literal 3 binary64)))))) (*.f64 z z)))
7.0%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))) (*.f64 y y)))
5.2%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 z z))
5.4%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
5.1%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
Compiler

Compiled 1 510 to 351 computations (76.8% saved)

regimes64.0ms (3.5%)

Memory
24.2MiB live, 103.3MiB allocated
Counts
21 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 z z))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.f64 y y)))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (*.f64 z z)) #s(literal 3 binary64)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z))))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (*.f64 z z)) #s(literal 3 binary64)))))) (*.f64 z z)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64)))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))) (*.f64 y y)))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))))))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z))))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) (*.f64 z z)) #s(literal 3 binary64)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64)))) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+.f64 #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (*.f64 z z)) #s(literal 3 binary64))))))) (*.f64 z z))))
Outputs
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
Calls

10 calls:

8.0ms
z
8.0ms
(+.f64 (*.f64 x x) (*.f64 y y))
6.0ms
x
6.0ms
y
6.0ms
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
Results
AccuracySegmentsBranch
48.5%1x
48.5%1y
48.5%1z
48.5%1(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
48.5%1(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
48.5%1(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
48.5%1(+.f64 (*.f64 x x) (*.f64 y y))
48.5%1(*.f64 x x)
48.5%1(*.f64 y y)
48.5%1(*.f64 z z)
Compiler

Compiled 57 to 56 computations (1.8% saved)

regimes58.0ms (3.2%)

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

10 calls:

7.0ms
(+.f64 (*.f64 x x) (*.f64 y y))
7.0ms
(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
7.0ms
x
6.0ms
z
6.0ms
y
Results
AccuracySegmentsBranch
12.7%1x
12.7%1y
12.7%1(*.f64 x x)
12.7%1z
12.7%1(+.f64 (*.f64 x x) (*.f64 y y))
12.7%1(*.f64 z z)
12.7%1(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
12.7%1(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
12.7%1(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
12.7%1(*.f64 y y)
Compiler

Compiled 57 to 56 computations (1.8% saved)

regimes53.0ms (2.9%)

Memory
6.4MiB live, 87.5MiB allocated
Counts
14 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 z z))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.f64 y y)))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (*.f64 z z)) #s(literal 3 binary64)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z))))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (*.f64 z z)) #s(literal 3 binary64)))))) (*.f64 z z)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)) #s(literal 3 binary64)))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (+ (* x x) (* y y)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))) (*.f64 y y)))
Outputs
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z))))
Calls

10 calls:

10.0ms
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
8.0ms
(*.f64 y y)
4.0ms
z
4.0ms
x
4.0ms
y
Results
AccuracySegmentsBranch
10.4%1y
10.4%1(*.f64 y y)
10.4%1(*.f64 z z)
10.4%1(+.f64 (*.f64 x x) (*.f64 y y))
10.4%1(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
10.4%1(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
10.4%1(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
10.4%1x
10.4%1z
10.4%1(*.f64 x x)
Compiler

Compiled 57 to 56 computations (1.8% saved)

regimes38.0ms (2.1%)

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

10 calls:

7.0ms
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
6.0ms
(*.f64 z z)
3.0ms
z
3.0ms
x
3.0ms
y
Results
AccuracySegmentsBranch
7.3%1(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
7.3%1(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
7.3%1(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
9.1%2(*.f64 y y)
7.3%1y
7.3%1(+.f64 (*.f64 x x) (*.f64 y y))
7.3%1(*.f64 z z)
7.3%1x
9.0%2(*.f64 x x)
7.3%1z
Compiler

Compiled 57 to 56 computations (1.8% saved)

regimes30.0ms (1.7%)

Memory
10.6MiB live, 54.3MiB allocated
Counts
6 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 z z))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.f64 y y)))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
Outputs
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
Calls

10 calls:

3.0ms
z
2.0ms
x
2.0ms
y
2.0ms
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
2.0ms
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
Results
AccuracySegmentsBranch
6.7%1y
6.7%1(+.f64 (*.f64 x x) (*.f64 y y))
6.7%1x
6.7%1(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
6.7%1(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
6.7%1(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
6.7%1z
6.7%1(*.f64 z z)
6.7%1(*.f64 x x)
6.7%1(*.f64 y y)
Compiler

Compiled 57 to 56 computations (1.8% saved)

regimes25.0ms (1.4%)

Memory
16.3MiB live, 55.3MiB allocated
Counts
5 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 z z))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.f64 y y)))
Outputs
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)))
Calls

10 calls:

5.0ms
(+.f64 (*.f64 x x) (*.f64 y y))
2.0ms
z
2.0ms
x
2.0ms
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
2.0ms
y
Results
AccuracySegmentsBranch
6.5%1x
6.5%1(*.f64 y y)
6.5%1(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
6.5%1(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
6.5%1(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
6.5%1(*.f64 x x)
6.5%1(+.f64 (*.f64 x x) (*.f64 y y))
6.5%1y
6.5%1z
6.5%1(*.f64 z z)
Compiler

Compiled 57 to 56 computations (1.8% saved)

regimes18.0ms (1%)

Memory
4.2MiB live, 43.4MiB allocated
Counts
3 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 z z))
Outputs
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
Calls

10 calls:

2.0ms
(*.f64 z z)
2.0ms
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
2.0ms
(+.f64 (*.f64 x x) (*.f64 y y))
2.0ms
x
2.0ms
z
Results
AccuracySegmentsBranch
5.4%1y
5.4%1(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
5.4%1(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
5.4%1(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
5.4%1(+.f64 (*.f64 x x) (*.f64 y y))
5.4%1(*.f64 y y)
5.4%1x
5.4%1z
5.4%1(*.f64 z z)
5.4%1(*.f64 x x)
Compiler

Compiled 57 to 56 computations (1.8% saved)

regimes12.0ms (0.7%)

Memory
-8.2MiB live, 30.9MiB allocated
Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
Outputs
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
Calls

10 calls:

2.0ms
(*.f64 z z)
1.0ms
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
1.0ms
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
1.0ms
z
1.0ms
y
Results
AccuracySegmentsBranch
5.1%1(*.f64 y y)
5.1%1z
5.1%1(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
5.1%1(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
5.1%1(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
5.1%1(+.f64 (*.f64 x x) (*.f64 y y))
5.1%1y
5.1%1x
5.1%1(*.f64 x x)
5.1%1(*.f64 z z)
Compiler

Compiled 57 to 56 computations (1.8% saved)

bsearch16.0ms (0.9%)

Memory
-17.4MiB live, 24.6MiB allocated
Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
14.0ms
3.039275786204081e-39
5.233978070826705e-36
Samples
9.0ms128×0valid
Compiler

Compiled 289 to 233 computations (19.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 6.0ms
ival-add: 3.0ms (47.4% of total)
ival-mult: 2.0ms (31.6% of total)
ival-div: 1.0ms (15.8% of total)
ival-sqrt: 1.0ms (15.8% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

simplify5.0ms (0.3%)

Memory
10.6MiB live, 10.6MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))))))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z))))
(if (<=.f64 (*.f64 y y) #s(literal 395096506629487/2993155353253689176481146537402947624255349848014848 binary64)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y))))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
Outputs
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))))))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z))))
(if (<=.f64 (*.f64 y y) #s(literal 395096506629487/2993155353253689176481146537402947624255349848014848 binary64)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 y y))))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))) (*.f64 z z)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) #s(approx (+ (* x x) (* y y)) #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))

soundness2.0ms (0.1%)

Memory
4.2MiB live, 4.2MiB allocated
Stop Event
fuel
Compiler

Compiled 265 to 37 computations (86% saved)

preprocess51.0ms (2.8%)

Memory
-17.7MiB live, 96.4MiB allocated
Compiler

Compiled 622 to 142 computations (77.2% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...