Diagrams.Solve.Tridiagonal:solveCyclicTriDiagonal from diagrams-solve-0.1, A

Time bar (total: 1.2s)

analyze77.0ms (6.4%)

Memory
-41.0MiB live, 48.3MiB 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
50%49.9%49.9%0.1%0%0%0%4
50%49.9%49.9%0.1%0%0%0%5
50%49.9%49.9%0.1%0%0%0%6
75%74.9%25%0.1%0%0%0%7
75%74.9%25%0.1%0%0%0%8
75%74.9%25%0.1%0%0%0%9
87.5%87.4%12.5%0.1%0%0%0%10
87.5%87.4%12.5%0.1%0%0%0%11
87.5%87.4%12.5%0.1%0%0%0%12
Compiler

Compiled 7 to 7 computations (0% saved)

sample723.0ms (60.3%)

Memory
35.4MiB live, 1 068.0MiB allocated
Samples
474.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 154.0ms
ival-mult: 74.0ms (47.9% of total)
ival-div: 71.0ms (46% of total)
ival-true: 7.0ms (4.5% of total)
ival-assert: 3.0ms (1.9% of total)
Bogosity

preprocess57.0ms (4.8%)

Memory
5.0MiB live, 42.6MiB allocated
Algorithm
egg-herbie
Rules
818×times-frac
190×distribute-lft-in
186×associate-*r/
186×associate-/r*
180×unsub-neg
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02156
15948
214648
349048
4122748
5192248
6197648
7199448
8203448
9205848
055
075
1105
2135
3145
0145
Stop Event
iter limit
saturated
iter limit
saturated
Calls
Call 1
Inputs
(/.f64 (*.f64 x y) z)
Outputs
(/.f64 (*.f64 x y) z)
Symmetry

(negabs z)

(negabs y)

(negabs x)

(sort x y)

explain60.0ms (5%)

Memory
8.8MiB live, 125.6MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
290-1(2.5929010748279164e-262 1.263691228749769e-52 6.680355804912071e-85)(/.f64 (*.f64 x y) z)
00-0-y
00-0-z
00-0-(*.f64 x y)
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
/.f64(/.f64 (*.f64 x y) z)o/n180
(*.f64 x y)overflow37
/.f64(/.f64 (*.f64 x y) z)u/n100
(*.f64 x y)underflow24
Confusion
Predicted +Predicted -
+281
-0227
Precision
1.0
Recall
0.9655172413793104
Confusion?
Predicted +Predicted MaybePredicted -
+2801
-00227
Precision?
1.0
Recall?
0.9655172413793104
Freqs
test
numberfreq
0228
128
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
20.0ms512×0valid
Compiler

Compiled 42 to 24 computations (42.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 8.0ms
ival-mult: 4.0ms (53.1% of total)
ival-div: 3.0ms (39.8% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

eval0.0ms (0%)

Memory
0.4MiB live, 0.4MiB allocated
Compiler

Compiled 3 to 3 computations (0% saved)

prune1.0ms (0%)

Memory
1.3MiB live, 1.3MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
89.3%
(/.f64 (*.f64 x y) z)
Compiler

Compiled 8 to 5 computations (37.5% saved)

simplify7.0ms (0.6%)

Memory
-30.4MiB live, 8.5MiB allocated
Algorithm
egg-herbie
Localize:

Found 2 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 x y)
cost-diff0
(/.f64 (*.f64 x y) z)
Rules
12×lower-*.f32
10×lower-*.f64
*-commutative
lower-/.f32
associate-/l*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0511
0711
11011
21311
31411
01411
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
(/.f64 (*.f64 x y) z)
(*.f64 x y)
x
y
z
Outputs
(/.f64 (*.f64 x y) z)
(*.f64 x y)
x
y
z

localize15.0ms (1.2%)

Memory
26.4MiB live, 26.4MiB allocated
Localize:

Found 2 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(*.f64 x y)
accuracy89.3%
(/.f64 (*.f64 x y) z)
Samples
10.0ms256×0valid
Compiler

Compiled 13 to 7 computations (46.2% saved)

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

series12.0ms (1%)

Memory
-45.4MiB live, 14.8MiB allocated
Counts
2 → 60
Calls
Call 1
Inputs
#<alt (/.f64 (*.f64 x y) z)>
#<alt (*.f64 x y)>
Outputs
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (/ (* x y) z)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
Calls

15 calls:

TimeVariablePointExpression
6.0ms
z
@0
(/ (* x y) z)
1.0ms
z
@inf
(/ (* x y) z)
1.0ms
x
@inf
(* x y)
1.0ms
y
@0
(/ (* x y) z)
1.0ms
x
@0
(/ (* x y) z)

rewrite113.0ms (9.4%)

Memory
20.4MiB live, 94.2MiB allocated
Algorithm
batch-egg-rewrite
Rules
1 066×lower-*.f32
1 064×lower-*.f64
848×lower-/.f32
846×lower-/.f64
234×times-frac
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
058
078
1188
2718
33618
023678
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
2 → 132
Calls
Call 1
Inputs
(/.f64 (*.f64 x y) z)
(*.f64 x y)
Outputs
(+.f64 #s(literal 0 binary64) (/.f64 (*.f64 x y) z))
(+.f64 (*.f64 (/.f64 #s(literal -1 binary64) z) #s(literal 0 binary64)) (/.f64 (*.f64 x y) z))
(exp.f64 (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 z (*.f64 x y)))))
(-.f64 #s(literal 0 binary64) (/.f64 (*.f64 y (neg.f64 x)) z))
(fma.f64 (/.f64 #s(literal -1 binary64) z) #s(literal 0 binary64) (/.f64 (*.f64 x y) z))
(neg.f64 (/.f64 (*.f64 y (neg.f64 x)) z))
(/.f64 x (/.f64 z y))
(/.f64 y (/.f64 z x))
(/.f64 (*.f64 x y) z)
(/.f64 (/.f64 (*.f64 x y) z) #s(literal 1 binary64))
(/.f64 (*.f64 y (neg.f64 x)) (neg.f64 z))
(/.f64 #s(literal 1 binary64) (/.f64 z (*.f64 x y)))
(/.f64 (/.f64 #s(literal 1 binary64) z) (/.f64 #s(literal 1 binary64) (*.f64 x y)))
(/.f64 (/.f64 y z) (/.f64 #s(literal 1 binary64) x))
(/.f64 #s(literal -1 binary64) (/.f64 z (*.f64 y (neg.f64 x))))
(/.f64 (neg.f64 y) (/.f64 z (neg.f64 x)))
(/.f64 (/.f64 #s(literal -1 binary64) z) (/.f64 #s(literal -1 binary64) (*.f64 x y)))
(/.f64 (neg.f64 x) (/.f64 (neg.f64 z) y))
(/.f64 (/.f64 (*.f64 y (neg.f64 x)) z) #s(literal -1 binary64))
(/.f64 (/.f64 x z) (/.f64 #s(literal 1 binary64) y))
(/.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 (neg.f64 z) (*.f64 x (*.f64 y (*.f64 x y)))))
(/.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) (*.f64 (neg.f64 z) (*.f64 x y)))
(/.f64 (-.f64 (*.f64 #s(literal 0 binary64) (/.f64 z (*.f64 y (neg.f64 x)))) (neg.f64 z)) (*.f64 (neg.f64 z) (/.f64 z (*.f64 y (neg.f64 x)))))
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (neg.f64 z) (*.f64 x y))) (*.f64 z z))
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (neg.f64 z) (*.f64 y (neg.f64 x)))) (*.f64 (neg.f64 z) z))
(/.f64 (*.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) #s(literal 1 binary64)) (*.f64 (*.f64 x (*.f64 y (*.f64 x y))) (neg.f64 z)))
(/.f64 (*.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) #s(literal -1 binary64)) (*.f64 (*.f64 x (*.f64 y (*.f64 x y))) z))
(/.f64 (*.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) #s(literal 1 binary64)) (*.f64 (*.f64 x y) (neg.f64 z)))
(/.f64 (*.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) #s(literal -1 binary64)) (*.f64 (*.f64 x y) z))
(/.f64 (*.f64 #s(literal 1 binary64) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 (neg.f64 z) (*.f64 x (*.f64 y (*.f64 x y)))))
(/.f64 (*.f64 #s(literal 1 binary64) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 (neg.f64 z) (*.f64 x y)))
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 z (*.f64 x (*.f64 y (*.f64 x y)))))
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 z (*.f64 x y)))
(/.f64 (*.f64 (neg.f64 y) #s(literal 1 binary64)) (/.f64 z (neg.f64 x)))
(/.f64 (*.f64 (neg.f64 x) #s(literal 1 binary64)) (/.f64 (neg.f64 z) y))
(/.f64 (-.f64 #s(literal 0 binary64) (pow.f64 (/.f64 (*.f64 y (neg.f64 x)) z) #s(literal 3 binary64))) (+.f64 #s(literal 0 binary64) (fma.f64 (/.f64 (*.f64 y (neg.f64 x)) z) (/.f64 (*.f64 y (neg.f64 x)) z) (*.f64 #s(literal 0 binary64) (/.f64 (*.f64 y (neg.f64 x)) z)))))
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (/.f64 (*.f64 y (neg.f64 x)) z) (/.f64 (*.f64 y (neg.f64 x)) z))) (/.f64 (*.f64 y (neg.f64 x)) z))
(/.f64 (*.f64 (/.f64 #s(literal -1 binary64) z) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 x (*.f64 y (*.f64 x y))))
(/.f64 (*.f64 (/.f64 #s(literal -1 binary64) z) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 x y))
(/.f64 (*.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (/.f64 #s(literal -1 binary64) z)) (*.f64 x (*.f64 y (*.f64 x y))))
(/.f64 (*.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) (/.f64 #s(literal -1 binary64) z)) (*.f64 x y))
(pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1 binary64))
(pow.f64 (/.f64 z (*.f64 x y)) #s(literal -1 binary64))
(pow.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) #s(literal 2 binary64))
(pow.f64 (*.f64 (/.f64 z (*.f64 x y)) (/.f64 z (*.f64 x y))) #s(literal -1/2 binary64))
(pow.f64 (exp.f64 (log.f64 (/.f64 z (*.f64 x y)))) #s(literal -1 binary64))
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(*.f64 (*.f64 x y) (/.f64 #s(literal 1 binary64) z))
(*.f64 (/.f64 (*.f64 x y) z) #s(literal 1 binary64))
(*.f64 (*.f64 y (neg.f64 x)) (/.f64 #s(literal -1 binary64) z))
(*.f64 #s(literal 1 binary64) (/.f64 (*.f64 x y) z))
(*.f64 (/.f64 #s(literal 1 binary64) z) (*.f64 x y))
(*.f64 (/.f64 #s(literal 1 binary64) z) (/.f64 x (/.f64 #s(literal 1 binary64) y)))
(*.f64 (/.f64 y z) x)
(*.f64 (/.f64 y z) (pow.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1 binary64)))
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y (neg.f64 x)) z))
(*.f64 (neg.f64 y) (/.f64 x (neg.f64 z)))
(*.f64 (/.f64 #s(literal -1 binary64) z) (*.f64 y (neg.f64 x)))
(*.f64 (/.f64 #s(literal -1 binary64) z) (pow.f64 (/.f64 #s(literal -1 binary64) (*.f64 x y)) #s(literal -1 binary64)))
(*.f64 (neg.f64 x) (/.f64 y (neg.f64 z)))
(*.f64 (/.f64 (*.f64 y (neg.f64 x)) z) #s(literal -1 binary64))
(*.f64 (/.f64 x z) y)
(*.f64 (/.f64 x z) (pow.f64 (/.f64 #s(literal 1 binary64) y) #s(literal -1 binary64)))
(*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)))
(*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) (*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) #s(literal 1 binary64)))
(*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) (/.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) #s(literal 1 binary64)))
(*.f64 (pow.f64 z #s(literal -1/2 binary64)) (/.f64 (pow.f64 z #s(literal -1/2 binary64)) (/.f64 #s(literal 1 binary64) (*.f64 x y))))
(*.f64 (pow.f64 z #s(literal -1/2 binary64)) (*.f64 (pow.f64 z #s(literal -1/2 binary64)) (*.f64 x y)))
(*.f64 (/.f64 y (neg.f64 z)) (neg.f64 x))
(*.f64 (/.f64 x (neg.f64 z)) (neg.f64 y))
(*.f64 (pow.f64 (/.f64 #s(literal 1 binary64) y) #s(literal -1 binary64)) (/.f64 x z))
(*.f64 (pow.f64 (/.f64 #s(literal -1 binary64) (*.f64 x y)) #s(literal -1 binary64)) (/.f64 #s(literal -1 binary64) z))
(*.f64 (pow.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1 binary64)) (/.f64 y z))
(*.f64 (pow.f64 (/.f64 #s(literal -1 binary64) x) #s(literal -1 binary64)) (pow.f64 (/.f64 (neg.f64 z) y) #s(literal -1 binary64)))
(*.f64 (pow.f64 (/.f64 #s(literal -1 binary64) y) #s(literal -1 binary64)) (pow.f64 (/.f64 z (neg.f64 x)) #s(literal -1 binary64)))
(*.f64 (/.f64 (pow.f64 z #s(literal -1/2 binary64)) #s(literal 1 binary64)) (/.f64 (pow.f64 z #s(literal -1/2 binary64)) (/.f64 #s(literal 1 binary64) (*.f64 x y))))
(*.f64 (/.f64 #s(literal -1 binary64) (/.f64 z y)) (neg.f64 x))
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 y)) (/.f64 x (neg.f64 z)))
(*.f64 (*.f64 (*.f64 x y) (pow.f64 z #s(literal -1/2 binary64))) (pow.f64 z #s(literal -1/2 binary64)))
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 x)) (/.f64 y (neg.f64 z)))
(*.f64 (*.f64 #s(literal 1 binary64) (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64))) (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)))
(*.f64 (*.f64 (/.f64 #s(literal 1 binary64) z) (neg.f64 y)) (neg.f64 x))
(*.f64 (*.f64 (/.f64 #s(literal 1 binary64) z) (neg.f64 x)) (neg.f64 y))
(*.f64 (/.f64 #s(literal -1 binary64) (/.f64 z x)) (neg.f64 y))
(*.f64 (/.f64 (*.f64 y (neg.f64 x)) (neg.f64 (*.f64 z (*.f64 z z)))) (*.f64 z z))
(*.f64 (/.f64 (*.f64 y (neg.f64 x)) (neg.f64 (*.f64 z z))) z)
(+.f64 (*.f64 x y) #s(literal 0 binary64))
(+.f64 #s(literal 0 binary64) (*.f64 x y))
(exp.f64 (*.f64 (log.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y))) #s(literal -1 binary64)))
(-.f64 #s(literal 0 binary64) (*.f64 y (neg.f64 x)))
(fma.f64 x y #s(literal 0 binary64))
(fma.f64 y x #s(literal 0 binary64))
(fma.f64 (*.f64 x y) #s(literal 1 binary64) #s(literal 0 binary64))
(fma.f64 (*.f64 y (neg.f64 x)) #s(literal -1 binary64) #s(literal 0 binary64))
(fma.f64 #s(literal 1 binary64) (*.f64 x y) #s(literal 0 binary64))
(fma.f64 #s(literal -1 binary64) (*.f64 y (neg.f64 x)) #s(literal 0 binary64))
(fma.f64 (neg.f64 y) (neg.f64 x) #s(literal 0 binary64))
(fma.f64 (neg.f64 y) (*.f64 (neg.f64 x) #s(literal 1 binary64)) #s(literal 0 binary64))
(fma.f64 (neg.f64 x) (neg.f64 y) #s(literal 0 binary64))
(fma.f64 (neg.f64 x) (*.f64 (neg.f64 y) #s(literal 1 binary64)) #s(literal 0 binary64))
(fma.f64 (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)) (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)) #s(literal 0 binary64))
(fma.f64 (*.f64 #s(literal 1 binary64) (neg.f64 y)) (neg.f64 x) #s(literal 0 binary64))
(fma.f64 (*.f64 #s(literal 1 binary64) (neg.f64 x)) (neg.f64 y) #s(literal 0 binary64))
(neg.f64 (*.f64 y (neg.f64 x)))
(/.f64 (*.f64 x y) #s(literal 1 binary64))
(/.f64 (*.f64 y (neg.f64 x)) #s(literal -1 binary64))
(/.f64 #s(literal 1 binary64) (/.f64 #s(literal 1 binary64) (*.f64 x y)))
(/.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))))
(/.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 #s(literal -1 binary64) (*.f64 x (*.f64 y (*.f64 x y)))))
(/.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) (*.f64 y (neg.f64 x)))
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 x (*.f64 y (*.f64 x y))))
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 x y))
(/.f64 (neg.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 x (*.f64 y (*.f64 x y))))
(/.f64 (neg.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 x y))
(/.f64 (+.f64 #s(literal 0 binary64) (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (+.f64 #s(literal 0 binary64) (-.f64 (*.f64 x (*.f64 y (*.f64 x y))) #s(literal 0 binary64))))
(/.f64 (-.f64 #s(literal 0 binary64) (pow.f64 (*.f64 y (neg.f64 x)) #s(literal 3 binary64))) (*.f64 x (*.f64 y (*.f64 x y))))
(pow.f64 (*.f64 x y) #s(literal 1 binary64))
(pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1 binary64))
(*.f64 x y)
(*.f64 y x)
(*.f64 (*.f64 x y) #s(literal 1 binary64))
(*.f64 (*.f64 y (neg.f64 x)) #s(literal -1 binary64))
(*.f64 #s(literal 1 binary64) (*.f64 x y))
(*.f64 #s(literal -1 binary64) (*.f64 y (neg.f64 x)))
(*.f64 (neg.f64 y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 (neg.f64 x) #s(literal 1 binary64)))
(*.f64 (neg.f64 x) (neg.f64 y))
(*.f64 (neg.f64 x) (*.f64 (neg.f64 y) #s(literal 1 binary64)))
(*.f64 (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)) (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)))
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 y)) (neg.f64 x))
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 x)) (neg.f64 y))

simplify5.0ms (0.4%)

Memory
6.8MiB live, 6.8MiB allocated
Algorithm
egg-herbie
Rules
12×lower-*.f64
12×lower-*.f32
*-commutative
lower-/.f32
lower-/.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
05252
18252
211252
312252
012252
Stop Event
iter limit
saturated
Counts
60 → 60
Calls
Call 1
Inputs
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(/ (* x y) z)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
Outputs
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(/ (* x y) z)
(/.f64 (*.f64 x y) z)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)

simplify36.0ms (3%)

Memory
-16.6MiB live, 20.8MiB allocated
Algorithm
egg-herbie
Rules
1-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02511393
12521393
02521393
Stop Event
saturated
saturated
Counts
132 → 0
Calls
Call 1
Inputs
(+.f64 #s(literal 0 binary64) (/.f64 (*.f64 x y) z))
(+.f64 (*.f64 (/.f64 #s(literal -1 binary64) z) #s(literal 0 binary64)) (/.f64 (*.f64 x y) z))
(exp.f64 (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 z (*.f64 x y)))))
(-.f64 #s(literal 0 binary64) (/.f64 (*.f64 y (neg.f64 x)) z))
(fma.f64 (/.f64 #s(literal -1 binary64) z) #s(literal 0 binary64) (/.f64 (*.f64 x y) z))
(neg.f64 (/.f64 (*.f64 y (neg.f64 x)) z))
(/.f64 x (/.f64 z y))
(/.f64 y (/.f64 z x))
(/.f64 (*.f64 x y) z)
(/.f64 (/.f64 (*.f64 x y) z) #s(literal 1 binary64))
(/.f64 (*.f64 y (neg.f64 x)) (neg.f64 z))
(/.f64 #s(literal 1 binary64) (/.f64 z (*.f64 x y)))
(/.f64 (/.f64 #s(literal 1 binary64) z) (/.f64 #s(literal 1 binary64) (*.f64 x y)))
(/.f64 (/.f64 y z) (/.f64 #s(literal 1 binary64) x))
(/.f64 #s(literal -1 binary64) (/.f64 z (*.f64 y (neg.f64 x))))
(/.f64 (neg.f64 y) (/.f64 z (neg.f64 x)))
(/.f64 (/.f64 #s(literal -1 binary64) z) (/.f64 #s(literal -1 binary64) (*.f64 x y)))
(/.f64 (neg.f64 x) (/.f64 (neg.f64 z) y))
(/.f64 (/.f64 (*.f64 y (neg.f64 x)) z) #s(literal -1 binary64))
(/.f64 (/.f64 x z) (/.f64 #s(literal 1 binary64) y))
(/.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 (neg.f64 z) (*.f64 x (*.f64 y (*.f64 x y)))))
(/.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) (*.f64 (neg.f64 z) (*.f64 x y)))
(/.f64 (-.f64 (*.f64 #s(literal 0 binary64) (/.f64 z (*.f64 y (neg.f64 x)))) (neg.f64 z)) (*.f64 (neg.f64 z) (/.f64 z (*.f64 y (neg.f64 x)))))
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (neg.f64 z) (*.f64 x y))) (*.f64 z z))
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (neg.f64 z) (*.f64 y (neg.f64 x)))) (*.f64 (neg.f64 z) z))
(/.f64 (*.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) #s(literal 1 binary64)) (*.f64 (*.f64 x (*.f64 y (*.f64 x y))) (neg.f64 z)))
(/.f64 (*.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) #s(literal -1 binary64)) (*.f64 (*.f64 x (*.f64 y (*.f64 x y))) z))
(/.f64 (*.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) #s(literal 1 binary64)) (*.f64 (*.f64 x y) (neg.f64 z)))
(/.f64 (*.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) #s(literal -1 binary64)) (*.f64 (*.f64 x y) z))
(/.f64 (*.f64 #s(literal 1 binary64) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 (neg.f64 z) (*.f64 x (*.f64 y (*.f64 x y)))))
(/.f64 (*.f64 #s(literal 1 binary64) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 (neg.f64 z) (*.f64 x y)))
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 z (*.f64 x (*.f64 y (*.f64 x y)))))
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 z (*.f64 x y)))
(/.f64 (*.f64 (neg.f64 y) #s(literal 1 binary64)) (/.f64 z (neg.f64 x)))
(/.f64 (*.f64 (neg.f64 x) #s(literal 1 binary64)) (/.f64 (neg.f64 z) y))
(/.f64 (-.f64 #s(literal 0 binary64) (pow.f64 (/.f64 (*.f64 y (neg.f64 x)) z) #s(literal 3 binary64))) (+.f64 #s(literal 0 binary64) (fma.f64 (/.f64 (*.f64 y (neg.f64 x)) z) (/.f64 (*.f64 y (neg.f64 x)) z) (*.f64 #s(literal 0 binary64) (/.f64 (*.f64 y (neg.f64 x)) z)))))
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (/.f64 (*.f64 y (neg.f64 x)) z) (/.f64 (*.f64 y (neg.f64 x)) z))) (/.f64 (*.f64 y (neg.f64 x)) z))
(/.f64 (*.f64 (/.f64 #s(literal -1 binary64) z) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 x (*.f64 y (*.f64 x y))))
(/.f64 (*.f64 (/.f64 #s(literal -1 binary64) z) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 x y))
(/.f64 (*.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (/.f64 #s(literal -1 binary64) z)) (*.f64 x (*.f64 y (*.f64 x y))))
(/.f64 (*.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) (/.f64 #s(literal -1 binary64) z)) (*.f64 x y))
(pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1 binary64))
(pow.f64 (/.f64 z (*.f64 x y)) #s(literal -1 binary64))
(pow.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) #s(literal 2 binary64))
(pow.f64 (*.f64 (/.f64 z (*.f64 x y)) (/.f64 z (*.f64 x y))) #s(literal -1/2 binary64))
(pow.f64 (exp.f64 (log.f64 (/.f64 z (*.f64 x y)))) #s(literal -1 binary64))
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(*.f64 (*.f64 x y) (/.f64 #s(literal 1 binary64) z))
(*.f64 (/.f64 (*.f64 x y) z) #s(literal 1 binary64))
(*.f64 (*.f64 y (neg.f64 x)) (/.f64 #s(literal -1 binary64) z))
(*.f64 #s(literal 1 binary64) (/.f64 (*.f64 x y) z))
(*.f64 (/.f64 #s(literal 1 binary64) z) (*.f64 x y))
(*.f64 (/.f64 #s(literal 1 binary64) z) (/.f64 x (/.f64 #s(literal 1 binary64) y)))
(*.f64 (/.f64 y z) x)
(*.f64 (/.f64 y z) (pow.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1 binary64)))
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y (neg.f64 x)) z))
(*.f64 (neg.f64 y) (/.f64 x (neg.f64 z)))
(*.f64 (/.f64 #s(literal -1 binary64) z) (*.f64 y (neg.f64 x)))
(*.f64 (/.f64 #s(literal -1 binary64) z) (pow.f64 (/.f64 #s(literal -1 binary64) (*.f64 x y)) #s(literal -1 binary64)))
(*.f64 (neg.f64 x) (/.f64 y (neg.f64 z)))
(*.f64 (/.f64 (*.f64 y (neg.f64 x)) z) #s(literal -1 binary64))
(*.f64 (/.f64 x z) y)
(*.f64 (/.f64 x z) (pow.f64 (/.f64 #s(literal 1 binary64) y) #s(literal -1 binary64)))
(*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)))
(*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) (*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) #s(literal 1 binary64)))
(*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) (/.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) #s(literal 1 binary64)))
(*.f64 (pow.f64 z #s(literal -1/2 binary64)) (/.f64 (pow.f64 z #s(literal -1/2 binary64)) (/.f64 #s(literal 1 binary64) (*.f64 x y))))
(*.f64 (pow.f64 z #s(literal -1/2 binary64)) (*.f64 (pow.f64 z #s(literal -1/2 binary64)) (*.f64 x y)))
(*.f64 (/.f64 y (neg.f64 z)) (neg.f64 x))
(*.f64 (/.f64 x (neg.f64 z)) (neg.f64 y))
(*.f64 (pow.f64 (/.f64 #s(literal 1 binary64) y) #s(literal -1 binary64)) (/.f64 x z))
(*.f64 (pow.f64 (/.f64 #s(literal -1 binary64) (*.f64 x y)) #s(literal -1 binary64)) (/.f64 #s(literal -1 binary64) z))
(*.f64 (pow.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1 binary64)) (/.f64 y z))
(*.f64 (pow.f64 (/.f64 #s(literal -1 binary64) x) #s(literal -1 binary64)) (pow.f64 (/.f64 (neg.f64 z) y) #s(literal -1 binary64)))
(*.f64 (pow.f64 (/.f64 #s(literal -1 binary64) y) #s(literal -1 binary64)) (pow.f64 (/.f64 z (neg.f64 x)) #s(literal -1 binary64)))
(*.f64 (/.f64 (pow.f64 z #s(literal -1/2 binary64)) #s(literal 1 binary64)) (/.f64 (pow.f64 z #s(literal -1/2 binary64)) (/.f64 #s(literal 1 binary64) (*.f64 x y))))
(*.f64 (/.f64 #s(literal -1 binary64) (/.f64 z y)) (neg.f64 x))
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 y)) (/.f64 x (neg.f64 z)))
(*.f64 (*.f64 (*.f64 x y) (pow.f64 z #s(literal -1/2 binary64))) (pow.f64 z #s(literal -1/2 binary64)))
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 x)) (/.f64 y (neg.f64 z)))
(*.f64 (*.f64 #s(literal 1 binary64) (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64))) (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)))
(*.f64 (*.f64 (/.f64 #s(literal 1 binary64) z) (neg.f64 y)) (neg.f64 x))
(*.f64 (*.f64 (/.f64 #s(literal 1 binary64) z) (neg.f64 x)) (neg.f64 y))
(*.f64 (/.f64 #s(literal -1 binary64) (/.f64 z x)) (neg.f64 y))
(*.f64 (/.f64 (*.f64 y (neg.f64 x)) (neg.f64 (*.f64 z (*.f64 z z)))) (*.f64 z z))
(*.f64 (/.f64 (*.f64 y (neg.f64 x)) (neg.f64 (*.f64 z z))) z)
(+.f64 (*.f64 x y) #s(literal 0 binary64))
(+.f64 #s(literal 0 binary64) (*.f64 x y))
(exp.f64 (*.f64 (log.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y))) #s(literal -1 binary64)))
(-.f64 #s(literal 0 binary64) (*.f64 y (neg.f64 x)))
(fma.f64 x y #s(literal 0 binary64))
(fma.f64 y x #s(literal 0 binary64))
(fma.f64 (*.f64 x y) #s(literal 1 binary64) #s(literal 0 binary64))
(fma.f64 (*.f64 y (neg.f64 x)) #s(literal -1 binary64) #s(literal 0 binary64))
(fma.f64 #s(literal 1 binary64) (*.f64 x y) #s(literal 0 binary64))
(fma.f64 #s(literal -1 binary64) (*.f64 y (neg.f64 x)) #s(literal 0 binary64))
(fma.f64 (neg.f64 y) (neg.f64 x) #s(literal 0 binary64))
(fma.f64 (neg.f64 y) (*.f64 (neg.f64 x) #s(literal 1 binary64)) #s(literal 0 binary64))
(fma.f64 (neg.f64 x) (neg.f64 y) #s(literal 0 binary64))
(fma.f64 (neg.f64 x) (*.f64 (neg.f64 y) #s(literal 1 binary64)) #s(literal 0 binary64))
(fma.f64 (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)) (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)) #s(literal 0 binary64))
(fma.f64 (*.f64 #s(literal 1 binary64) (neg.f64 y)) (neg.f64 x) #s(literal 0 binary64))
(fma.f64 (*.f64 #s(literal 1 binary64) (neg.f64 x)) (neg.f64 y) #s(literal 0 binary64))
(neg.f64 (*.f64 y (neg.f64 x)))
(/.f64 (*.f64 x y) #s(literal 1 binary64))
(/.f64 (*.f64 y (neg.f64 x)) #s(literal -1 binary64))
(/.f64 #s(literal 1 binary64) (/.f64 #s(literal 1 binary64) (*.f64 x y)))
(/.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))))
(/.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 #s(literal -1 binary64) (*.f64 x (*.f64 y (*.f64 x y)))))
(/.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) (*.f64 y (neg.f64 x)))
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 x (*.f64 y (*.f64 x y))))
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 x y))
(/.f64 (neg.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 x (*.f64 y (*.f64 x y))))
(/.f64 (neg.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 x y))
(/.f64 (+.f64 #s(literal 0 binary64) (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (+.f64 #s(literal 0 binary64) (-.f64 (*.f64 x (*.f64 y (*.f64 x y))) #s(literal 0 binary64))))
(/.f64 (-.f64 #s(literal 0 binary64) (pow.f64 (*.f64 y (neg.f64 x)) #s(literal 3 binary64))) (*.f64 x (*.f64 y (*.f64 x y))))
(pow.f64 (*.f64 x y) #s(literal 1 binary64))
(pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1 binary64))
(*.f64 x y)
(*.f64 y x)
(*.f64 (*.f64 x y) #s(literal 1 binary64))
(*.f64 (*.f64 y (neg.f64 x)) #s(literal -1 binary64))
(*.f64 #s(literal 1 binary64) (*.f64 x y))
(*.f64 #s(literal -1 binary64) (*.f64 y (neg.f64 x)))
(*.f64 (neg.f64 y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 (neg.f64 x) #s(literal 1 binary64)))
(*.f64 (neg.f64 x) (neg.f64 y))
(*.f64 (neg.f64 x) (*.f64 (neg.f64 y) #s(literal 1 binary64)))
(*.f64 (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)) (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)))
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 y)) (neg.f64 x))
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 x)) (neg.f64 y))
Outputs
(+.f64 #s(literal 0 binary64) (/.f64 (*.f64 x y) z))
(+.f64 (*.f64 (/.f64 #s(literal -1 binary64) z) #s(literal 0 binary64)) (/.f64 (*.f64 x y) z))
(exp.f64 (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 z (*.f64 x y)))))
(-.f64 #s(literal 0 binary64) (/.f64 (*.f64 y (neg.f64 x)) z))
(fma.f64 (/.f64 #s(literal -1 binary64) z) #s(literal 0 binary64) (/.f64 (*.f64 x y) z))
(neg.f64 (/.f64 (*.f64 y (neg.f64 x)) z))
(/.f64 x (/.f64 z y))
(/.f64 y (/.f64 z x))
(/.f64 (*.f64 x y) z)
(/.f64 (/.f64 (*.f64 x y) z) #s(literal 1 binary64))
(/.f64 (*.f64 y (neg.f64 x)) (neg.f64 z))
(/.f64 #s(literal 1 binary64) (/.f64 z (*.f64 x y)))
(/.f64 (/.f64 #s(literal 1 binary64) z) (/.f64 #s(literal 1 binary64) (*.f64 x y)))
(/.f64 (/.f64 y z) (/.f64 #s(literal 1 binary64) x))
(/.f64 #s(literal -1 binary64) (/.f64 z (*.f64 y (neg.f64 x))))
(/.f64 (neg.f64 y) (/.f64 z (neg.f64 x)))
(/.f64 (/.f64 #s(literal -1 binary64) z) (/.f64 #s(literal -1 binary64) (*.f64 x y)))
(/.f64 (neg.f64 x) (/.f64 (neg.f64 z) y))
(/.f64 (/.f64 (*.f64 y (neg.f64 x)) z) #s(literal -1 binary64))
(/.f64 (/.f64 x z) (/.f64 #s(literal 1 binary64) y))
(/.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 (neg.f64 z) (*.f64 x (*.f64 y (*.f64 x y)))))
(/.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) (*.f64 (neg.f64 z) (*.f64 x y)))
(/.f64 (-.f64 (*.f64 #s(literal 0 binary64) (/.f64 z (*.f64 y (neg.f64 x)))) (neg.f64 z)) (*.f64 (neg.f64 z) (/.f64 z (*.f64 y (neg.f64 x)))))
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (neg.f64 z) (*.f64 x y))) (*.f64 z z))
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (neg.f64 z) (*.f64 y (neg.f64 x)))) (*.f64 (neg.f64 z) z))
(/.f64 (*.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) #s(literal 1 binary64)) (*.f64 (*.f64 x (*.f64 y (*.f64 x y))) (neg.f64 z)))
(/.f64 (*.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) #s(literal -1 binary64)) (*.f64 (*.f64 x (*.f64 y (*.f64 x y))) z))
(/.f64 (*.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) #s(literal 1 binary64)) (*.f64 (*.f64 x y) (neg.f64 z)))
(/.f64 (*.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) #s(literal -1 binary64)) (*.f64 (*.f64 x y) z))
(/.f64 (*.f64 #s(literal 1 binary64) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 (neg.f64 z) (*.f64 x (*.f64 y (*.f64 x y)))))
(/.f64 (*.f64 #s(literal 1 binary64) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 (neg.f64 z) (*.f64 x y)))
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 z (*.f64 x (*.f64 y (*.f64 x y)))))
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 z (*.f64 x y)))
(/.f64 (*.f64 (neg.f64 y) #s(literal 1 binary64)) (/.f64 z (neg.f64 x)))
(/.f64 (*.f64 (neg.f64 x) #s(literal 1 binary64)) (/.f64 (neg.f64 z) y))
(/.f64 (-.f64 #s(literal 0 binary64) (pow.f64 (/.f64 (*.f64 y (neg.f64 x)) z) #s(literal 3 binary64))) (+.f64 #s(literal 0 binary64) (fma.f64 (/.f64 (*.f64 y (neg.f64 x)) z) (/.f64 (*.f64 y (neg.f64 x)) z) (*.f64 #s(literal 0 binary64) (/.f64 (*.f64 y (neg.f64 x)) z)))))
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (/.f64 (*.f64 y (neg.f64 x)) z) (/.f64 (*.f64 y (neg.f64 x)) z))) (/.f64 (*.f64 y (neg.f64 x)) z))
(/.f64 (*.f64 (/.f64 #s(literal -1 binary64) z) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 x (*.f64 y (*.f64 x y))))
(/.f64 (*.f64 (/.f64 #s(literal -1 binary64) z) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 x y))
(/.f64 (*.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (/.f64 #s(literal -1 binary64) z)) (*.f64 x (*.f64 y (*.f64 x y))))
(/.f64 (*.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) (/.f64 #s(literal -1 binary64) z)) (*.f64 x y))
(pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1 binary64))
(pow.f64 (/.f64 z (*.f64 x y)) #s(literal -1 binary64))
(pow.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) #s(literal 2 binary64))
(pow.f64 (*.f64 (/.f64 z (*.f64 x y)) (/.f64 z (*.f64 x y))) #s(literal -1/2 binary64))
(pow.f64 (exp.f64 (log.f64 (/.f64 z (*.f64 x y)))) #s(literal -1 binary64))
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(*.f64 (*.f64 x y) (/.f64 #s(literal 1 binary64) z))
(*.f64 (/.f64 (*.f64 x y) z) #s(literal 1 binary64))
(*.f64 (*.f64 y (neg.f64 x)) (/.f64 #s(literal -1 binary64) z))
(*.f64 #s(literal 1 binary64) (/.f64 (*.f64 x y) z))
(*.f64 (/.f64 #s(literal 1 binary64) z) (*.f64 x y))
(*.f64 (/.f64 #s(literal 1 binary64) z) (/.f64 x (/.f64 #s(literal 1 binary64) y)))
(*.f64 (/.f64 y z) x)
(*.f64 (/.f64 y z) (pow.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1 binary64)))
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y (neg.f64 x)) z))
(*.f64 (neg.f64 y) (/.f64 x (neg.f64 z)))
(*.f64 (/.f64 #s(literal -1 binary64) z) (*.f64 y (neg.f64 x)))
(*.f64 (/.f64 #s(literal -1 binary64) z) (pow.f64 (/.f64 #s(literal -1 binary64) (*.f64 x y)) #s(literal -1 binary64)))
(*.f64 (neg.f64 x) (/.f64 y (neg.f64 z)))
(*.f64 (/.f64 (*.f64 y (neg.f64 x)) z) #s(literal -1 binary64))
(*.f64 (/.f64 x z) y)
(*.f64 (/.f64 x z) (pow.f64 (/.f64 #s(literal 1 binary64) y) #s(literal -1 binary64)))
(*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)))
(*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) (*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) #s(literal 1 binary64)))
(*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) (/.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) #s(literal 1 binary64)))
(*.f64 (pow.f64 z #s(literal -1/2 binary64)) (/.f64 (pow.f64 z #s(literal -1/2 binary64)) (/.f64 #s(literal 1 binary64) (*.f64 x y))))
(*.f64 (pow.f64 z #s(literal -1/2 binary64)) (*.f64 (pow.f64 z #s(literal -1/2 binary64)) (*.f64 x y)))
(*.f64 (/.f64 y (neg.f64 z)) (neg.f64 x))
(*.f64 (/.f64 x (neg.f64 z)) (neg.f64 y))
(*.f64 (pow.f64 (/.f64 #s(literal 1 binary64) y) #s(literal -1 binary64)) (/.f64 x z))
(*.f64 (pow.f64 (/.f64 #s(literal -1 binary64) (*.f64 x y)) #s(literal -1 binary64)) (/.f64 #s(literal -1 binary64) z))
(*.f64 (pow.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1 binary64)) (/.f64 y z))
(*.f64 (pow.f64 (/.f64 #s(literal -1 binary64) x) #s(literal -1 binary64)) (pow.f64 (/.f64 (neg.f64 z) y) #s(literal -1 binary64)))
(*.f64 (pow.f64 (/.f64 #s(literal -1 binary64) y) #s(literal -1 binary64)) (pow.f64 (/.f64 z (neg.f64 x)) #s(literal -1 binary64)))
(*.f64 (/.f64 (pow.f64 z #s(literal -1/2 binary64)) #s(literal 1 binary64)) (/.f64 (pow.f64 z #s(literal -1/2 binary64)) (/.f64 #s(literal 1 binary64) (*.f64 x y))))
(*.f64 (/.f64 #s(literal -1 binary64) (/.f64 z y)) (neg.f64 x))
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 y)) (/.f64 x (neg.f64 z)))
(*.f64 (*.f64 (*.f64 x y) (pow.f64 z #s(literal -1/2 binary64))) (pow.f64 z #s(literal -1/2 binary64)))
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 x)) (/.f64 y (neg.f64 z)))
(*.f64 (*.f64 #s(literal 1 binary64) (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64))) (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)))
(*.f64 (*.f64 (/.f64 #s(literal 1 binary64) z) (neg.f64 y)) (neg.f64 x))
(*.f64 (*.f64 (/.f64 #s(literal 1 binary64) z) (neg.f64 x)) (neg.f64 y))
(*.f64 (/.f64 #s(literal -1 binary64) (/.f64 z x)) (neg.f64 y))
(*.f64 (/.f64 (*.f64 y (neg.f64 x)) (neg.f64 (*.f64 z (*.f64 z z)))) (*.f64 z z))
(*.f64 (/.f64 (*.f64 y (neg.f64 x)) (neg.f64 (*.f64 z z))) z)
(+.f64 (*.f64 x y) #s(literal 0 binary64))
(+.f64 #s(literal 0 binary64) (*.f64 x y))
(exp.f64 (*.f64 (log.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y))) #s(literal -1 binary64)))
(-.f64 #s(literal 0 binary64) (*.f64 y (neg.f64 x)))
(fma.f64 x y #s(literal 0 binary64))
(fma.f64 y x #s(literal 0 binary64))
(fma.f64 (*.f64 x y) #s(literal 1 binary64) #s(literal 0 binary64))
(fma.f64 (*.f64 y (neg.f64 x)) #s(literal -1 binary64) #s(literal 0 binary64))
(fma.f64 #s(literal 1 binary64) (*.f64 x y) #s(literal 0 binary64))
(fma.f64 #s(literal -1 binary64) (*.f64 y (neg.f64 x)) #s(literal 0 binary64))
(fma.f64 (neg.f64 y) (neg.f64 x) #s(literal 0 binary64))
(fma.f64 (neg.f64 y) (*.f64 (neg.f64 x) #s(literal 1 binary64)) #s(literal 0 binary64))
(fma.f64 (neg.f64 x) (neg.f64 y) #s(literal 0 binary64))
(fma.f64 (neg.f64 x) (*.f64 (neg.f64 y) #s(literal 1 binary64)) #s(literal 0 binary64))
(fma.f64 (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)) (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)) #s(literal 0 binary64))
(fma.f64 (*.f64 #s(literal 1 binary64) (neg.f64 y)) (neg.f64 x) #s(literal 0 binary64))
(fma.f64 (*.f64 #s(literal 1 binary64) (neg.f64 x)) (neg.f64 y) #s(literal 0 binary64))
(neg.f64 (*.f64 y (neg.f64 x)))
(/.f64 (*.f64 x y) #s(literal 1 binary64))
(/.f64 (*.f64 y (neg.f64 x)) #s(literal -1 binary64))
(/.f64 #s(literal 1 binary64) (/.f64 #s(literal 1 binary64) (*.f64 x y)))
(/.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))))
(/.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 #s(literal -1 binary64) (*.f64 x (*.f64 y (*.f64 x y)))))
(/.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) (*.f64 y (neg.f64 x)))
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 x (*.f64 y (*.f64 x y))))
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 x y))
(/.f64 (neg.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 x (*.f64 y (*.f64 x y))))
(/.f64 (neg.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 x y))
(/.f64 (+.f64 #s(literal 0 binary64) (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (+.f64 #s(literal 0 binary64) (-.f64 (*.f64 x (*.f64 y (*.f64 x y))) #s(literal 0 binary64))))
(/.f64 (-.f64 #s(literal 0 binary64) (pow.f64 (*.f64 y (neg.f64 x)) #s(literal 3 binary64))) (*.f64 x (*.f64 y (*.f64 x y))))
(pow.f64 (*.f64 x y) #s(literal 1 binary64))
(pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1 binary64))
(*.f64 x y)
(*.f64 y x)
(*.f64 (*.f64 x y) #s(literal 1 binary64))
(*.f64 (*.f64 y (neg.f64 x)) #s(literal -1 binary64))
(*.f64 #s(literal 1 binary64) (*.f64 x y))
(*.f64 #s(literal -1 binary64) (*.f64 y (neg.f64 x)))
(*.f64 (neg.f64 y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 (neg.f64 x) #s(literal 1 binary64)))
(*.f64 (neg.f64 x) (neg.f64 y))
(*.f64 (neg.f64 x) (*.f64 (neg.f64 y) #s(literal 1 binary64)))
(*.f64 (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)) (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)))
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 y)) (neg.f64 x))
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 x)) (neg.f64 y))

eval9.0ms (0.8%)

Memory
21.6MiB live, 21.6MiB allocated
Compiler

Compiled 603 to 5 computations (99.2% saved)

prune1.0ms (0.1%)

Memory
3.3MiB live, 3.3MiB allocated
Pruning

1 alts after pruning (0 fresh and 1 done)

PrunedKeptTotal
New1200120
Fresh000
Picked011
Done000
Total1201121
Accuracy
89.3%
Counts
121 → 1
Alt Table
Click to see full alt table
StatusAccuracyProgram
89.3%
(/.f64 (*.f64 x y) z)
Compiler

Compiled 16 to 10 computations (37.5% saved)

simplify13.0ms (1.1%)

Memory
-31.9MiB live, 11.4MiB allocated
Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
055
165
Stop Event
saturated
Calls
Call 1
Inputs
(/.f64 (*.f64 x y) z)
Outputs
(/.f64 (*.f64 x y) z)

soundness0.0ms (0%)

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

Compiled 8 to 5 computations (37.5% saved)

preprocess69.0ms (5.7%)

Memory
12.4MiB live, 125.5MiB allocated
Remove

(sort x y)

(negabs x)

(negabs y)

(negabs z)

Compiler

Compiled 212 to 130 computations (38.7% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...