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

Time bar (total: 1.5s)

start0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated

analyze1.0ms (0.1%)

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

sample880.0ms (59.4%)

Memory
27.0MiB live, 1 411.6MiB allocated
Samples
587.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 389.0ms
ival-mult: 171.0ms (43.9% of total)
ival-add: 84.0ms (21.6% of total)
ival-sqrt: 64.0ms (16.4% of total)
ival-div: 58.0ms (14.9% of total)
ival-true: 6.0ms (1.5% of total)
exact: 5.0ms (1.3% of total)
ival-assert: 3.0ms (0.8% of total)
Bogosity

explain129.0ms (8.7%)

Memory
-8.8MiB live, 229.3MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1610-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-rescue1560
(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))overflow156
(*.f64 y y)overflow75
(*.f64 x x)overflow65
(*.f64 z z)overflow58
(+.f64 (*.f64 x x) (*.f64 y y))overflow129
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))overflow156
sqrt.f64(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))uflow-rescue50
(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))underflow5
(*.f64 y y)underflow58
(*.f64 x x)underflow66
(*.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))underflow5
Confusion
Predicted +Predicted -
+1610
-095
Precision
1.0
Recall
1.0
Confusion?
Predicted +Predicted MaybePredicted -
+16100
-0095
Precision?
1.0
Recall?
1.0
Freqs
test
numberfreq
095
1161
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
42.0ms512×0valid
Compiler

Compiled 192 to 48 computations (75% saved)

Precisions
Click to see histograms. Total time spent on operations: 25.0ms
ival-mult: 10.0ms (39.9% of total)
ival-sqrt: 6.0ms (24% of total)
ival-div: 4.0ms (16% of total)
ival-add: 4.0ms (16% 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
6.1MiB live, 6.1MiB 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.8MiB live, 0.8MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
41.7%
(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)

localize29.0ms (1.9%)

Memory
0.4MiB live, 40.3MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 x x)
accuracy0.00390625
(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
accuracy0.1015625
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
accuracy37.313390016898616
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
Samples
21.0ms256×0valid
Compiler

Compiled 118 to 24 computations (79.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 13.0ms
ival-mult: 5.0ms (38.1% of total)
ival-div: 4.0ms (30.5% of total)
ival-add: 2.0ms (15.3% of total)
ival-sqrt: 2.0ms (15.3% 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.9%)

Memory
18.6MiB live, 18.6MiB allocated
Counts
5 → 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)
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))
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))
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))
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)) (* 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)) (* x x))

simplify1.0ms (0.1%)

Memory
1.8MiB live, 1.8MiB allocated
Algorithm
egg-herbie
Counts
60 → 5
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)

rewrite0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Counts
5 → 5
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)
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)

eval1.0ms (0.1%)

Memory
2.0MiB live, 2.0MiB allocated
Compiler

Compiled 193 to 25 computations (87% saved)

prune4.0ms (0.2%)

Memory
-34.3MiB live, 3.4MiB allocated
Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New6410
Fresh000
Picked011
Done000
Total6511
Accuracy
41.7%
Counts
11 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
41.7%
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
6.8%
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
7.1%
#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.1%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
6.7%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.f64 y y)))
Compiler

Compiled 108 to 75 computations (30.6% saved)

simplify1.0ms (0.1%)

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

Found 15 expressions of interest:

NewMetricScoreProgram
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 (*.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 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)))
Calls
Call 1
Inputs
#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
#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)
(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
#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
#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)
(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

localize36.0ms (2.4%)

Memory
17.3MiB live, 55.0MiB allocated
Localize:

Found 15 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 x x)
accuracy37.313390016898616
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
accuracy43.75057611189674
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
accuracy0.0
(*.f64 x x)
accuracy0.00390625
(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
accuracy0.1015625
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
accuracy59.46505216585927
#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 y y)
accuracy0.0
(*.f64 x x)
accuracy0.00390625
(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
accuracy59.466028337369124
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
accuracy0.0
(+.f64 (*.f64 x x) (*.f64 y y))
accuracy0.0
(*.f64 y y)
accuracy0.0
(*.f64 x x)
accuracy59.71098625483437
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.f64 y y)))
Samples
23.0ms256×0valid
Compiler

Compiled 368 to 36 computations (90.2% saved)

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

series8.0ms (0.5%)

Memory
16.6MiB live, 16.6MiB allocated
Counts
10 → 60
Calls
Call 1
Inputs
#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)
(*.f64 y y)
#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))
(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))
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))))))))))
(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)))
(* 1/3 (+ (pow y 2) (pow z 2)))
(+ (* 1/3 (+ (pow y 2) (pow z 2))) (* 1/3 (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)))))))
(* (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/3 (pow x 2))
(* (pow x 2) (+ 1/3 (* 1/3 (/ (+ (pow y 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))))))))))
(+ (pow x 2) (pow z 2))
(* 1/3 (+ (pow x 2) (pow z 2)))
(+ (* 1/3 (+ (pow x 2) (pow z 2))) (* 1/3 (pow y 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)))))))
(* (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/3 (pow y 2))
(* (pow y 2) (+ 1/3 (* 1/3 (/ (+ (pow x 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)))
(* 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)))))))
(pow z 2)
(* (pow z 2) (+ 1 (+ (/ (pow x 2) (pow z 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)))))
(* -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
1.0ms
y
@inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (* y y) (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) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3))
1.0ms
x
@-inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (* y y) (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) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3))
1.0ms
x
@inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (* y y) (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) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3))
1.0ms
y
@-inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (* y y) (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) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3))
1.0ms
x
@0
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (* y y) (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) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3))

simplify1.0ms (0.1%)

Memory
2.0MiB live, 2.0MiB allocated
Algorithm
egg-herbie
Counts
60 → 10
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))))))))))
(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)))
(* 1/3 (+ (pow y 2) (pow z 2)))
(+ (* 1/3 (+ (pow y 2) (pow z 2))) (* 1/3 (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)))))))
(* (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/3 (pow x 2))
(* (pow x 2) (+ 1/3 (* 1/3 (/ (+ (pow y 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))))))))))
(+ (pow x 2) (pow z 2))
(* 1/3 (+ (pow x 2) (pow z 2)))
(+ (* 1/3 (+ (pow x 2) (pow z 2))) (* 1/3 (pow y 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)))))))
(* (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/3 (pow y 2))
(* (pow y 2) (+ 1/3 (* 1/3 (/ (+ (pow x 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)))
(* 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)))))))
(pow z 2)
(* (pow z 2) (+ 1 (+ (/ (pow x 2) (pow z 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)))))
(* -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))))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.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)))))
(+.f64 (*.f64 x x) (*.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 x x)
(+ (* (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 y y)
(pow y 2)
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(+ (pow x 2) (pow y 2))
(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(pow x 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)))
(+ (pow y 2) (pow z 2))
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
(+ (pow x 2) (+ (pow y 2) (pow z 2)))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
(* 1/3 (+ (pow y 2) (pow z 2)))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))

rewrite1.0ms (0%)

Memory
1.0MiB live, 1.0MiB allocated
Counts
10 → 10
Calls
Call 1
Inputs
#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)
(*.f64 y y)
#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))
(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))
Outputs
#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)
(*.f64 y y)
#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))
(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))

eval6.0ms (0.4%)

Memory
-24.7MiB live, 11.2MiB allocated
Compiler

Compiled 1 212 to 57 computations (95.3% saved)

prune6.0ms (0.4%)

Memory
11.4MiB live, 11.4MiB allocated
Pruning

9 alts after pruning (5 fresh and 4 done)

PrunedKeptTotal
New31536
Fresh000
Picked134
Done011
Total32941
Accuracy
41.8%
Counts
41 → 9
Alt Table
Click to see full alt table
StatusAccuracyProgram
41.7%
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
6.8%
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
7.1%
#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)))
6.8%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) #s(literal 3 binary64)))
7.1%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
7.1%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))) (*.f64 z z)))
7.1%
#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 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))) (*.f64 y y)))
5.3%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
5.2%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 x x))
Compiler

Compiled 430 to 230 computations (46.5% saved)

simplify1.0ms (0.1%)

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

Found 16 expressions of interest:

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

localize50.0ms (3.4%)

Memory
-7.3MiB live, 71.1MiB allocated
Localize:

Found 16 expressions of interest:

NewMetricScoreProgram
accuracy0.00390625
(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
accuracy0.00390625
(+.f64 #s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))) (*.f64 z z))
accuracy14.019264579619673
#s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
accuracy59.466028337369124
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))) (*.f64 z z)))
accuracy37.313390016898616
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
accuracy43.75057611189674
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
accuracy59.46505216585927
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) #s(literal 3 binary64)))
accuracy59.466028337369124
#s(approx (+ (+ (* x x) (* y y)) (* z z)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
accuracy0.0
(*.f64 y y)
accuracy60.6094259203042
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
accuracy0.0
(*.f64 x x)
accuracy60.68891544454069
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 x x))
accuracy0.1015625
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
accuracy59.46505216585927
#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)))
accuracy59.71098625483437
#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 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))) (*.f64 y y)))
accuracy60.68891544454069
#s(approx (* x x) #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))))
Samples
35.0ms256×0valid
Compiler

Compiled 746 to 45 computations (94% saved)

Precisions
Click to see histograms. Total time spent on operations: 20.0ms
ival-add: 12.0ms (59.2% of total)
ival-mult: 5.0ms (24.7% of total)
ival-div: 2.0ms (9.9% of total)
ival-sqrt: 2.0ms (9.9% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series10.0ms (0.7%)

Memory
19.4MiB live, 19.4MiB allocated
Counts
18 → 60
Calls
Call 1
Inputs
#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 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))) (*.f64 y y)))
(+.f64 #s(approx (* x x) #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 y y))
#s(approx (* x x) #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))))
#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)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 x x))
(*.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)) (* z z)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) #s(literal 3 binary64)))
(/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) #s(literal 3 binary64))
#s(approx (+ (+ (* x x) (* y y)) (* z z)) (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 (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))) (*.f64 z z)))
(+.f64 #s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
#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))))))))))
(pow y 2)
(+ (pow x 2) (pow y 2))
(pow x 2)
(* 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)))
(* 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)))))))
(* (pow x 2) (+ 1 (/ (pow y 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)))))
(* -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)))))))
(* (pow y 2) (+ 1 (/ (pow x 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)))))
(* -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
1.0ms
x
@-inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* y y) (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)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (+ (+ (* x x) (* y y)) (* z z)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (/ (+ (+ (* x x) (* y y)) (* z z)) 3))
1.0ms
x
@inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* y y) (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)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (+ (+ (* x x) (* y y)) (* z z)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (/ (+ (+ (* x x) (* y y)) (* z z)) 3))
1.0ms
y
@-inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* y y) (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)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (+ (+ (* x x) (* y y)) (* z z)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (/ (+ (+ (* x x) (* y y)) (* z z)) 3))
1.0ms
y
@inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* y y) (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)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (+ (+ (* x x) (* y y)) (* z z)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (/ (+ (+ (* x x) (* y y)) (* z z)) 3))
1.0ms
x
@0
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* y y) (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)) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (+ (* x x) (* y y)) (* z z)) (+ (* x x) (* y y)) (+ (+ (* x x) (* y y)) (* z z)) (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (/ (+ (+ (* x x) (* y y)) (* z z)) 3))

simplify1.0ms (0.1%)

Memory
2.6MiB live, 2.6MiB 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))))))))))
(pow y 2)
(+ (pow x 2) (pow y 2))
(pow x 2)
(* 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)))
(* 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)))))))
(* (pow x 2) (+ 1 (/ (pow y 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)))))
(* -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)))))))
(* (pow y 2) (+ 1 (/ (pow x 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)))))
(* -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))))
#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 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))) (*.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)))))
(+.f64 #s(approx (* x x) #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 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)))))))))
#s(approx (* x x) #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 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 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
(pow y 2)
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 x x))
(+ (pow x 2) (pow y 2))
(*.f64 x x)
(pow x 2)
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
(* 1/3 (+ (pow y 2) (pow z 2)))
(*.f64 y y)
(+ (* 1/3 (+ (pow y 2) (pow z 2))) (* 1/3 (pow x 2)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) #s(literal 3 binary64)))
(+ (pow y 2) (pow z 2))
(/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) #s(literal 3 binary64))
(+ (pow x 2) (+ (pow y 2) (pow z 2)))
#s(approx (+ (+ (* x x) (* y y)) (* z z)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))))
(* x (sqrt 1/3))
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
(* x (+ (sqrt 1/3) (* 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 #s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 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 #s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 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/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)))))))
#s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(* (pow x 2) (+ 1 (/ (pow y 2) (pow x 2))))
(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(* 1/3 (pow x 2))
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
(* (pow x 2) (+ 1/3 (* 1/3 (/ (+ (pow y 2) (pow z 2)) (pow x 2)))))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))

rewrite1.0ms (0.1%)

Memory
2.1MiB live, 2.1MiB allocated
Counts
18 → 18
Calls
Call 1
Inputs
#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 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))) (*.f64 y y)))
(+.f64 #s(approx (* x x) #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 y y))
#s(approx (* x x) #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))))
#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)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 x x))
(*.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)) (* z z)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) #s(literal 3 binary64)))
(/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) #s(literal 3 binary64))
#s(approx (+ (+ (* x x) (* y y)) (* z z)) (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 (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))) (*.f64 z z)))
(+.f64 #s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))
Outputs
#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 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))) (*.f64 y y)))
(+.f64 #s(approx (* x x) #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 y y))
#s(approx (* x x) #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))))
#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)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 x x))
(*.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)) (* z z)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) #s(literal 3 binary64)))
(/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) #s(literal 3 binary64))
#s(approx (+ (+ (* x x) (* y y)) (* z z)) (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 (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))) (*.f64 z z)))
(+.f64 #s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))) (*.f64 z z))
#s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
(+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))
(/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))
#s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x))

eval8.0ms (0.6%)

Memory
-29.2MiB live, 8.6MiB allocated
Compiler

Compiled 1 737 to 59 computations (96.6% saved)

prune5.0ms (0.3%)

Memory
10.4MiB live, 10.4MiB allocated
Pruning

9 alts after pruning (1 fresh and 8 done)

PrunedKeptTotal
New39140
Fresh000
Picked145
Done044
Total40949
Accuracy
41.8%
Counts
49 → 9
Alt Table
Click to see full alt table
StatusAccuracyProgram
41.7%
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
6.8%
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
7.1%
#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)))
6.8%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) #s(literal 3 binary64)))
7.1%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
7.1%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))) (*.f64 z z)))
5.3%
#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 y y))) (*.f64 y y)))
5.3%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
5.2%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 x x))
Compiler

Compiled 248 to 139 computations (44% saved)

simplify0.0ms (0%)

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

Found 4 expressions of interest:

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

localize27.0ms (1.9%)

Memory
3.9MiB live, 41.3MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 y y)
accuracy59.71098625483437
#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 y y))) (*.f64 y y)))
accuracy60.6094259203042
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
accuracy60.68891544454069
#s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y)))
Samples
21.0ms256×0valid
Compiler

Compiled 155 to 29 computations (81.3% saved)

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

series5.0ms (0.3%)

Memory
8.6MiB live, 8.6MiB allocated
Counts
5 → 41
Calls
Call 1
Inputs
#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 y y))) (*.f64 y y)))
(+.f64 #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))) (*.f64 y y))
#s(approx (* 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 y y))
(*.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))))))))))
(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)))))))
(* (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))))))))))
(* 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)))))))
(* (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))))))))))
(* 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 (* 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
1.0ms
x
@-inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* y y))
1.0ms
x
@inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* y y))
1.0ms
y
@inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* y y))
1.0ms
y
@-inf
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* y y))
0.0ms
x
@0
((sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+ (* x x) (* y y)) (* x x) (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (* y y))

simplify1.0ms (0.1%)

Memory
1.8MiB live, 1.8MiB allocated
Algorithm
egg-herbie
Counts
41 → 5
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))))))))))
(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)))))))
(* (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))))))))))
(* 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)))))))
(* (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))))))))))
(* 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 (* 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))))
#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 y y))) (*.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)))))
(+.f64 #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))) (*.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)))))))))
#s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.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 y y))
(pow y 2)
(*.f64 y y)

rewrite0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Counts
5 → 5
Calls
Call 1
Inputs
#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 y y))) (*.f64 y y)))
(+.f64 #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))) (*.f64 y y))
#s(approx (* 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 y y))
(*.f64 y y)
Outputs
#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 y y))) (*.f64 y y)))
(+.f64 #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))) (*.f64 y y))
#s(approx (* 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 y y))
(*.f64 y y)

eval1.0ms (0.1%)

Memory
2.3MiB live, 2.3MiB allocated
Compiler

Compiled 398 to 21 computations (94.7% saved)

prune13.0ms (0.9%)

Memory
-76.8MiB live, 10.6MiB allocated
Pruning

9 alts after pruning (0 fresh and 9 done)

PrunedKeptTotal
New10010
Fresh000
Picked011
Done088
Total10919
Accuracy
41.8%
Counts
19 → 9
Alt Table
Click to see full alt table
StatusAccuracyProgram
41.7%
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
6.8%
(sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))
7.1%
#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)))
6.8%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) #s(literal 3 binary64)))
7.1%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
7.1%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))) (*.f64 z z)))
5.3%
#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 y y))) (*.f64 y y)))
5.3%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
5.2%
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 x x))
Compiler

Compiled 569 to 177 computations (68.9% saved)

regimes39.0ms (2.6%)

Memory
32.5MiB live, 71.3MiB allocated
Counts
11 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (/ (+ (+ (* 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 #s(approx (* 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 (*.f64 x x) (*.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 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) #s(literal 3 binary64)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))) (*.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)))
#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 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))) (*.f64 y y)))
(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)))
Calls

10 calls:

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

Compiled 57 to 56 computations (1.8% saved)

regimes37.0ms (2.5%)

Memory
-12.5MiB live, 65.3MiB allocated
Counts
10 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (/ (+ (+ (* 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 #s(approx (* 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 (*.f64 x x) (*.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 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) #s(literal 3 binary64)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))) (*.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)))
#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 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))) (*.f64 y y)))
Outputs
#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)))
Calls

10 calls:

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

Compiled 57 to 56 computations (1.8% saved)

regimes32.0ms (2.2%)

Memory
16.3MiB live, 55.8MiB allocated
Counts
8 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (/ (+ (+ (* 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 #s(approx (* 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 (*.f64 x x) (*.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 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (/.f64 #s(approx (+ (+ (* x x) (* y y)) (* z z)) (sqrt.f64 #s(approx (/ (+ (+ (* x x) (* y y)) (* z z)) 3) (*.f64 x x)))) #s(literal 3 binary64)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 #s(approx (+ (* x x) (* y y)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z))) (*.f64 z z)))
Outputs
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)))
Calls

10 calls:

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

Compiled 57 to 56 computations (1.8% saved)

regimes24.0ms (1.6%)

Memory
4.8MiB live, 43.0MiB allocated
Counts
5 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (/ (+ (+ (* 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 #s(approx (* 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 (*.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:

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

Compiled 57 to 56 computations (1.8% saved)

regimes21.0ms (1.4%)

Memory
1.5MiB live, 40.3MiB allocated
Counts
4 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (/ (+ (+ (* 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 #s(approx (* 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 (*.f64 x x) (*.f64 y y)))
Outputs
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.f64 y y)))
Calls

10 calls:

3.0ms
x
2.0ms
z
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%1(*.f64 x x)
6.7%1y
6.7%1(*.f64 z z)
6.7%1(+.f64 (*.f64 x x) (*.f64 y y))
6.7%1(*.f64 y y)
6.7%1z
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%1x
Compiler

Compiled 57 to 56 computations (1.8% saved)

regimes18.0ms (1.2%)

Memory
-4.0MiB live, 34.1MiB allocated
Counts
3 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (/ (+ (+ (* 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 #s(approx (* x x) #s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))) (*.f64 y y)))
Outputs
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
Calls

10 calls:

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

Compiled 57 to 56 computations (1.8% saved)

regimes14.0ms (0.9%)

Memory
-15.1MiB live, 26.0MiB 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)) (*.f64 x x))
Outputs
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 x x))
Calls

10 calls:

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

Compiled 57 to 56 computations (1.8% saved)

simplify4.0ms (0.3%)

Memory
12.5MiB live, 12.5MiB 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)))
#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)))
#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 x x)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.f64 y y)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
#s(approx (sqrt (/ (+ (+ (* 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)))
#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)))
#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 x x)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (+.f64 (*.f64 x x) (*.f64 y y)))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 y y))
#s(approx (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)) (*.f64 x x))

soundness1.0ms (0.1%)

Memory
2.5MiB live, 2.5MiB allocated
Stop Event
done
Compiler

Compiled 144 to 26 computations (81.9% saved)

preprocess45.0ms (3%)

Memory
8.3MiB live, 85.3MiB allocated
Compiler

Compiled 380 to 120 computations (68.4% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...