Diagrams.Solve.Polynomial:quartForm from diagrams-solve-0.1, D

Time bar (total: 2.4s)

start0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated

analyze0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
100%99.9%0%0.1%0%0%0%1
Compiler

Compiled 11 to 11 computations (0% saved)

sample1.0s (43.1%)

Memory
16.1MiB live, 1 187.8MiB allocated
Samples
685.0ms8 255×0valid
0.0ms1valid
Precisions
Click to see histograms. Total time spent on operations: 359.0ms
ival-mult: 149.0ms (41.5% of total)
ival-div: 146.0ms (40.6% of total)
ival-sub: 44.0ms (12.2% of total)
exact: 9.0ms (2.5% of total)
ival-true: 7.0ms (1.9% of total)
ival-assert: 4.0ms (1.1% of total)
adjust: 0.0ms (0% of total)
Bogosity

explain81.0ms (3.4%)

Memory
-5.7MiB live, 198.7MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-#s(literal 8 binary64)
00-0-(/.f64 (*.f64 x y) #s(literal 2 binary64))
00-0-z
00-0-(*.f64 x y)
00-0-(-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64)))
00-0-(/.f64 z #s(literal 8 binary64))
00-0-#s(literal 2 binary64)
00-0-y
00-0-x
Confusion
Predicted +Predicted -
+00
-0256
Precision
0/0
Recall
0/0
Confusion?
Predicted +Predicted MaybePredicted -
+000
-00256
Precision?
0/0
Recall?
0/0
Freqs
test
numberfreq
0256
Total Confusion?
Predicted +Predicted MaybePredicted -
+000
-001
Precision?
0/0
Recall?
0/0
Samples
34.0ms512×0valid
Compiler

Compiled 63 to 31 computations (50.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 16.0ms
ival-div: 9.0ms (56.6% of total)
ival-mult: 4.0ms (25.2% of total)
ival-sub: 2.0ms (12.6% of total)
exact: 1.0ms (6.3% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess53.0ms (2.2%)

Memory
-22.9MiB live, 55.3MiB allocated
Algorithm
egg-herbie
Rules
352×lower-fma.f64
352×lower-fma.f32
256×lower-*.f32
254×lower-*.f64
172×unsub-neg
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
03387
17684
215381
333281
461681
5105781
6121081
7123481
8123481
099
0139
1189
2319
3409
4649
51089
61899
73129
84479
95149
105499
115509
05508
Stop Event
iter limit
saturated
iter limit
saturated
Calls
Call 1
Inputs
(-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64)))
Outputs
(-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64)))
(fma.f64 #s(literal 1/2 binary64) (*.f64 y x) (*.f64 #s(literal -1/8 binary64) z))
Symmetry

(sort x y)

Compiler

Compiled 9 to 9 computations (0% saved)

eval0.0ms (0%)

Memory
0.4MiB live, 0.4MiB allocated
Compiler

Compiled 0 to 3 computations (-∞% saved)

prune0.0ms (0%)

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

Compiled 9 to 9 computations (0% saved)

simplify18.0ms (0.8%)

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

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 x y)
cost-diff128
(-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64)))
cost-diff384
(/.f64 z #s(literal 8 binary64))
cost-diff384
(/.f64 (*.f64 x y) #s(literal 2 binary64))
Rules
352×lower-fma.f64
352×lower-fma.f32
256×lower-*.f32
254×lower-*.f64
88×distribute-lft-neg-in
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0925
01325
11825
23125
34025
46425
510825
618925
731225
844725
951425
1054925
1155025
055024
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
(-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64)))
(/.f64 (*.f64 x y) #s(literal 2 binary64))
(*.f64 x y)
x
y
#s(literal 2 binary64)
(/.f64 z #s(literal 8 binary64))
z
#s(literal 8 binary64)
Outputs
(-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64)))
(fma.f64 #s(literal 1/2 binary64) (*.f64 y x) (*.f64 #s(literal -1/8 binary64) z))
(/.f64 (*.f64 x y) #s(literal 2 binary64))
(*.f64 #s(literal 1/2 binary64) (*.f64 y x))
(*.f64 x y)
(*.f64 y x)
x
y
#s(literal 2 binary64)
(/.f64 z #s(literal 8 binary64))
(*.f64 #s(literal 1/8 binary64) z)
z
#s(literal 8 binary64)

localize22.0ms (0.9%)

Memory
1.9MiB live, 41.1MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0
(/.f64 z #s(literal 8 binary64))
accuracy0
(-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64)))
accuracy0
(*.f64 x y)
accuracy0.00390625
(/.f64 (*.f64 x y) #s(literal 2 binary64))
Samples
16.0ms256×0valid
Compiler

Compiled 27 to 11 computations (59.3% saved)

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

series15.0ms (0.6%)

Memory
-22.7MiB live, 22.6MiB allocated
Counts
4 → 96
Calls
Call 1
Inputs
#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())
#s(alt (/.f64 z #s(literal 8 binary64)) (patch (/.f64 z #s(literal 8 binary64)) #<representation binary64>) () ())
#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())
#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())
Outputs
#s(alt (* 1/8 z) (taylor 0 z) (#s(alt (/.f64 z #s(literal 8 binary64)) (patch (/.f64 z #s(literal 8 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/8 z) (taylor 0 z) (#s(alt (/.f64 z #s(literal 8 binary64)) (patch (/.f64 z #s(literal 8 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/8 z) (taylor 0 z) (#s(alt (/.f64 z #s(literal 8 binary64)) (patch (/.f64 z #s(literal 8 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/8 z) (taylor 0 z) (#s(alt (/.f64 z #s(literal 8 binary64)) (patch (/.f64 z #s(literal 8 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor 0 z) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (+ (* -1/8 z) (* 1/2 (* x y))) (taylor 0 z) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (+ (* -1/8 z) (* 1/2 (* x y))) (taylor 0 z) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (+ (* -1/8 z) (* 1/2 (* x y))) (taylor 0 z) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* 1/8 z) (taylor inf z) (#s(alt (/.f64 z #s(literal 8 binary64)) (patch (/.f64 z #s(literal 8 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/8 z) (taylor inf z) (#s(alt (/.f64 z #s(literal 8 binary64)) (patch (/.f64 z #s(literal 8 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/8 z) (taylor inf z) (#s(alt (/.f64 z #s(literal 8 binary64)) (patch (/.f64 z #s(literal 8 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/8 z) (taylor inf z) (#s(alt (/.f64 z #s(literal 8 binary64)) (patch (/.f64 z #s(literal 8 binary64)) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor inf z) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* z (- (* 1/2 (/ (* x y) z)) 1/8)) (taylor inf z) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* z (- (* 1/2 (/ (* x y) z)) 1/8)) (taylor inf z) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* z (- (* 1/2 (/ (* x y) z)) 1/8)) (taylor inf z) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* 1/8 z) (taylor -inf z) (#s(alt (/.f64 z #s(literal 8 binary64)) (patch (/.f64 z #s(literal 8 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/8 z) (taylor -inf z) (#s(alt (/.f64 z #s(literal 8 binary64)) (patch (/.f64 z #s(literal 8 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/8 z) (taylor -inf z) (#s(alt (/.f64 z #s(literal 8 binary64)) (patch (/.f64 z #s(literal 8 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/8 z) (taylor -inf z) (#s(alt (/.f64 z #s(literal 8 binary64)) (patch (/.f64 z #s(literal 8 binary64)) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor -inf z) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z))))) (taylor -inf z) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z))))) (taylor -inf z) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z))))) (taylor -inf z) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor 0 y) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor 0 y) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor 0 y) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor 0 y) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor 0 y) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (- (* 1/2 (* x y)) (* 1/8 z)) (taylor 0 y) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (- (* 1/2 (* x y)) (* 1/8 z)) (taylor 0 y) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (- (* 1/2 (* x y)) (* 1/8 z)) (taylor 0 y) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor 0 y) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor 0 y) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor 0 y) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor 0 y) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf y) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf y) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf y) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf y) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf y) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1/8 (/ z y)) (* 1/2 x))) (taylor inf y) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1/8 (/ z y)) (* 1/2 x))) (taylor inf y) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1/8 (/ z y)) (* 1/2 x))) (taylor inf y) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor inf y) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor inf y) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor inf y) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor inf y) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf y) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf y) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf y) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf y) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf y) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y))))) (taylor -inf y) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y))))) (taylor -inf y) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y))))) (taylor -inf y) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor -inf y) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor -inf y) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor -inf y) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor -inf y) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor 0 x) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor 0 x) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor 0 x) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor 0 x) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor 0 x) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (- (* 1/2 (* x y)) (* 1/8 z)) (taylor 0 x) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (- (* 1/2 (* x y)) (* 1/8 z)) (taylor 0 x) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (- (* 1/2 (* x y)) (* 1/8 z)) (taylor 0 x) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor 0 x) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor 0 x) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor 0 x) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor 0 x) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf x) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf x) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf x) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf x) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf x) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (+ (* -1/8 (/ z x)) (* 1/2 y))) (taylor inf x) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (+ (* -1/8 (/ z x)) (* 1/2 y))) (taylor inf x) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (+ (* -1/8 (/ z x)) (* 1/2 y))) (taylor inf x) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor inf x) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor inf x) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor inf x) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor inf x) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf x) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf x) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf x) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf x) (#s(alt (/.f64 (*.f64 x y) #s(literal 2 binary64)) (patch (/.f64 (*.f64 x y) #s(literal 2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf x) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x))))) (taylor -inf x) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x))))) (taylor -inf x) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x))))) (taylor -inf x) (#s(alt (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) (patch (-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor -inf x) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor -inf x) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor -inf x) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor -inf x) (#s(alt (*.f64 x y) (patch (*.f64 x y) #<representation binary64>) () ())) ())
Calls

9 calls:

TimeVariablePointExpression
5.0ms
z
@inf
((/ (* x y) 2) (/ z 8) (- (/ (* x y) 2) (/ z 8)) (* x y))
3.0ms
z
@-inf
((/ (* x y) 2) (/ z 8) (- (/ (* x y) 2) (/ z 8)) (* x y))
1.0ms
x
@0
((/ (* x y) 2) (/ z 8) (- (/ (* x y) 2) (/ z 8)) (* x y))
1.0ms
y
@-inf
((/ (* x y) 2) (/ z 8) (- (/ (* x y) 2) (/ z 8)) (* x y))
1.0ms
z
@0
((/ (* x y) 2) (/ z 8) (- (/ (* x y) 2) (/ z 8)) (* x y))

simplify97.0ms (4.1%)

Memory
6.9MiB live, 119.9MiB allocated
Algorithm
egg-herbie
Rules
4 218×lower-fma.f64
4 218×lower-fma.f32
3 690×lower-*.f64
3 690×lower-*.f32
2 036×lower-/.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
042508
1123508
2350508
3859508
41956508
54016508
66381508
08111481
Stop Event
iter limit
node limit
Counts
96 → 96
Calls
Call 1
Inputs
(* 1/8 z)
(* 1/8 z)
(* 1/8 z)
(* 1/8 z)
(* 1/2 (* x y))
(+ (* -1/8 z) (* 1/2 (* x y)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(* 1/8 z)
(* 1/8 z)
(* 1/8 z)
(* 1/8 z)
(* -1/8 z)
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(* 1/8 z)
(* 1/8 z)
(* 1/8 z)
(* 1/8 z)
(* -1/8 z)
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* -1/8 z)
(- (* 1/2 (* x y)) (* 1/8 z))
(- (* 1/2 (* x y)) (* 1/8 z))
(- (* 1/2 (* x y)) (* 1/8 z))
(* x y)
(* x y)
(* x y)
(* x y)
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(* x y)
(* x y)
(* x y)
(* x y)
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(* x y)
(* x y)
(* x y)
(* x y)
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* -1/8 z)
(- (* 1/2 (* x y)) (* 1/8 z))
(- (* 1/2 (* x y)) (* 1/8 z))
(- (* 1/2 (* x y)) (* 1/8 z))
(* x y)
(* x y)
(* x y)
(* x y)
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(* x y)
(* x y)
(* x y)
(* x y)
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(* x y)
(* x y)
(* x y)
(* x y)
Outputs
(* 1/8 z)
(*.f64 z #s(literal 1/8 binary64))
(* 1/8 z)
(*.f64 z #s(literal 1/8 binary64))
(* 1/8 z)
(*.f64 z #s(literal 1/8 binary64))
(* 1/8 z)
(*.f64 z #s(literal 1/8 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(+ (* -1/8 z) (* 1/2 (* x y)))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* 1/8 z)
(*.f64 z #s(literal 1/8 binary64))
(* 1/8 z)
(*.f64 z #s(literal 1/8 binary64))
(* 1/8 z)
(*.f64 z #s(literal 1/8 binary64))
(* 1/8 z)
(*.f64 z #s(literal 1/8 binary64))
(* -1/8 z)
(*.f64 #s(literal -1/8 binary64) z)
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* 1/8 z)
(*.f64 z #s(literal 1/8 binary64))
(* 1/8 z)
(*.f64 z #s(literal 1/8 binary64))
(* 1/8 z)
(*.f64 z #s(literal 1/8 binary64))
(* 1/8 z)
(*.f64 z #s(literal 1/8 binary64))
(* -1/8 z)
(*.f64 #s(literal -1/8 binary64) z)
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* -1/8 z)
(*.f64 #s(literal -1/8 binary64) z)
(- (* 1/2 (* x y)) (* 1/8 z))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(- (* 1/2 (* x y)) (* 1/8 z))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(- (* 1/2 (* x y)) (* 1/8 z))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* -1/8 z)
(*.f64 #s(literal -1/8 binary64) z)
(- (* 1/2 (* x y)) (* 1/8 z))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(- (* 1/2 (* x y)) (* 1/8 z))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(- (* 1/2 (* x y)) (* 1/8 z))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(fma.f64 #s(literal -1/8 binary64) z (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)

rewrite132.0ms (5.6%)

Memory
22.3MiB live, 177.0MiB allocated
Rules
5 312×lower-fma.f64
5 312×lower-fma.f32
4 784×lower-*.f32
4 782×lower-*.f64
3 460×lower-/.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0920
01320
15620
248620
0867719
Stop Event
iter limit
node limit
iter limit
Counts
4 → 221
Calls
Call 1
Inputs
(/.f64 (*.f64 x y) #s(literal 2 binary64))
(/.f64 z #s(literal 8 binary64))
(-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64)))
(*.f64 x y)
Outputs
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>

eval50.0ms (2.1%)

Memory
-25.1MiB live, 98.9MiB allocated
Compiler

Compiled 4 979 to 612 computations (87.7% saved)

prune5.0ms (0.2%)

Memory
19.4MiB live, 19.4MiB allocated
Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New3143317
Fresh000
Picked101
Done000
Total3153318
Accuracy
100.0%
Counts
318 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z))
55.3%
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
47.1%
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z))
Compiler

Compiled 18 to 21 computations (-16.7% saved)

simplify22.0ms (0.9%)

Memory
-19.9MiB live, 19.2MiB allocated
Algorithm
egg-herbie
Localize:

Found 8 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 #s(literal -1/8 binary64) z)
cost-diff0
(*.f64 y x)
cost-diff0
(fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z))
cost-diff0
(*.f64 y x)
cost-diff0
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
cost-diff0
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
cost-diff0
(*.f64 #s(literal -1/8 binary64) z)
cost-diff0
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z))
Rules
352×lower-fma.f32
350×lower-fma.f64
256×lower-*.f32
250×lower-*.f64
100×distribute-lft-neg-in
Iterations

Useful iterations: 7 (0.0ms)

IterNodesCost
01763
02163
13163
25163
36263
48763
513363
622363
737061
853561
957661
1060961
1161061
061061
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z))
(*.f64 #s(literal -1/8 binary64) z)
#s(literal -1/8 binary64)
z
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(*.f64 y x)
y
x
#s(literal 1/2 binary64)
(fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z))
(*.f64 y x)
y
x
#s(literal 1/2 binary64)
(*.f64 #s(literal -1/8 binary64) z)
#s(literal -1/8 binary64)
z
Outputs
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z))
(*.f64 #s(literal -1/8 binary64) z)
#s(literal -1/8 binary64)
z
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 #s(literal 1/2 binary64) x) y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(*.f64 (*.f64 #s(literal 1/2 binary64) x) y)
(*.f64 y x)
y
x
#s(literal 1/2 binary64)
(fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z))
(fma.f64 (*.f64 #s(literal 1/2 binary64) x) y (*.f64 #s(literal -1/8 binary64) z))
(*.f64 y x)
y
x
#s(literal 1/2 binary64)
(*.f64 #s(literal -1/8 binary64) z)
#s(literal -1/8 binary64)
z

localize38.0ms (1.6%)

Memory
-11.9MiB live, 69.4MiB allocated
Localize:

Found 8 expressions of interest:

NewMetricScoreProgram
accuracy0
(fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z))
accuracy0
(*.f64 y x)
accuracy0
(*.f64 #s(literal -1/8 binary64) z)
accuracy0
(*.f64 y x)
accuracy0.00390625
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
accuracy28.62666841361268
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
accuracy0
(*.f64 #s(literal -1/8 binary64) z)
accuracy33.871978586201855
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z))
Samples
27.0ms256×0valid
Compiler

Compiled 56 to 17 computations (69.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 17.0ms
ival-mult: 8.0ms (47.9% of total)
ival-div: 6.0ms (35.9% of total)
ival-sub: 1.0ms (6% of total)
ival-add: 1.0ms (6% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series9.0ms (0.4%)

Memory
19.2MiB live, 19.2MiB allocated
Counts
6 → 168
Calls
Call 1
Inputs
#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())
#s(alt (*.f64 #s(literal -1/8 binary64) z) (patch (*.f64 #s(literal -1/8 binary64) z) #<representation binary64>) () ())
#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())
#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())
#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())
#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())
Outputs
#s(alt (* 1/2 (* x y)) (taylor 0 z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (+ (* -1/8 z) (* 1/2 (* x y))) (taylor 0 z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (+ (* -1/8 z) (* 1/2 (* x y))) (taylor 0 z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (+ (* -1/8 z) (* 1/2 (* x y))) (taylor 0 z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor 0 z) (#s(alt (*.f64 #s(literal -1/8 binary64) z) (patch (*.f64 #s(literal -1/8 binary64) z) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor 0 z) (#s(alt (*.f64 #s(literal -1/8 binary64) z) (patch (*.f64 #s(literal -1/8 binary64) z) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor 0 z) (#s(alt (*.f64 #s(literal -1/8 binary64) z) (patch (*.f64 #s(literal -1/8 binary64) z) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor 0 z) (#s(alt (*.f64 #s(literal -1/8 binary64) z) (patch (*.f64 #s(literal -1/8 binary64) z) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor 0 z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (+ (* -1/8 z) (* 1/2 (* x y))) (taylor 0 z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (+ (* -1/8 z) (* 1/2 (* x y))) (taylor 0 z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (+ (* -1/8 z) (* 1/2 (* x y))) (taylor 0 z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor 0 z) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (+ (* -1/8 z) (* 1/2 (* x y))) (taylor 0 z) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (+ (* -1/8 z) (* 1/2 (* x y))) (taylor 0 z) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (+ (* -1/8 z) (* 1/2 (* x y))) (taylor 0 z) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor inf z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* z (- (* 1/2 (/ (* x y) z)) 1/8)) (taylor inf z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* z (- (* 1/2 (/ (* x y) z)) 1/8)) (taylor inf z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* z (- (* 1/2 (/ (* x y) z)) 1/8)) (taylor inf z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor inf z) (#s(alt (*.f64 #s(literal -1/8 binary64) z) (patch (*.f64 #s(literal -1/8 binary64) z) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor inf z) (#s(alt (*.f64 #s(literal -1/8 binary64) z) (patch (*.f64 #s(literal -1/8 binary64) z) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor inf z) (#s(alt (*.f64 #s(literal -1/8 binary64) z) (patch (*.f64 #s(literal -1/8 binary64) z) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor inf z) (#s(alt (*.f64 #s(literal -1/8 binary64) z) (patch (*.f64 #s(literal -1/8 binary64) z) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor inf z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* z (- (* 1/2 (/ (* x y) z)) 1/8)) (taylor inf z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* z (- (* 1/2 (/ (* x y) z)) 1/8)) (taylor inf z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* z (- (* 1/2 (/ (* x y) z)) 1/8)) (taylor inf z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor inf z) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* z (- (* 1/2 (/ (* x y) z)) 1/8)) (taylor inf z) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* z (- (* 1/2 (/ (* x y) z)) 1/8)) (taylor inf z) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* z (- (* 1/2 (/ (* x y) z)) 1/8)) (taylor inf z) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor -inf z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z))))) (taylor -inf z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z))))) (taylor -inf z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z))))) (taylor -inf z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor -inf z) (#s(alt (*.f64 #s(literal -1/8 binary64) z) (patch (*.f64 #s(literal -1/8 binary64) z) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor -inf z) (#s(alt (*.f64 #s(literal -1/8 binary64) z) (patch (*.f64 #s(literal -1/8 binary64) z) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor -inf z) (#s(alt (*.f64 #s(literal -1/8 binary64) z) (patch (*.f64 #s(literal -1/8 binary64) z) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor -inf z) (#s(alt (*.f64 #s(literal -1/8 binary64) z) (patch (*.f64 #s(literal -1/8 binary64) z) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor -inf z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z))))) (taylor -inf z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z))))) (taylor -inf z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z))))) (taylor -inf z) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor -inf z) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z))))) (taylor -inf z) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z))))) (taylor -inf z) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z))))) (taylor -inf z) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor 0 y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (- (* 1/2 (* x y)) (* 1/8 z)) (taylor 0 y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (- (* 1/2 (* x y)) (* 1/8 z)) (taylor 0 y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (- (* 1/2 (* x y)) (* 1/8 z)) (taylor 0 y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor 0 y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (- (* 1/2 (* x y)) (* 1/8 z)) (taylor 0 y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (- (* 1/2 (* x y)) (* 1/8 z)) (taylor 0 y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (- (* 1/2 (* x y)) (* 1/8 z)) (taylor 0 y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor 0 y) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor 0 y) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor 0 y) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor 0 y) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor 0 y) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor 0 y) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor 0 y) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor 0 y) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor 0 y) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (+ (* -1/8 z) (* 1/2 (* x y))) (taylor 0 y) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (+ (* -1/8 z) (* 1/2 (* x y))) (taylor 0 y) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (+ (* -1/8 z) (* 1/2 (* x y))) (taylor 0 y) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1/8 (/ z y)) (* 1/2 x))) (taylor inf y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1/8 (/ z y)) (* 1/2 x))) (taylor inf y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1/8 (/ z y)) (* 1/2 x))) (taylor inf y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1/8 (/ z y)) (* 1/2 x))) (taylor inf y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1/8 (/ z y)) (* 1/2 x))) (taylor inf y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1/8 (/ z y)) (* 1/2 x))) (taylor inf y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf y) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf y) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf y) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf y) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor inf y) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor inf y) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor inf y) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor inf y) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf y) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1/8 (/ z y)) (* 1/2 x))) (taylor inf y) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1/8 (/ z y)) (* 1/2 x))) (taylor inf y) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1/8 (/ z y)) (* 1/2 x))) (taylor inf y) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y))))) (taylor -inf y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y))))) (taylor -inf y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y))))) (taylor -inf y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y))))) (taylor -inf y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y))))) (taylor -inf y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y))))) (taylor -inf y) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf y) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf y) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf y) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf y) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor -inf y) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor -inf y) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor -inf y) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor -inf y) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf y) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y))))) (taylor -inf y) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y))))) (taylor -inf y) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y))))) (taylor -inf y) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor 0 x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (- (* 1/2 (* x y)) (* 1/8 z)) (taylor 0 x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (- (* 1/2 (* x y)) (* 1/8 z)) (taylor 0 x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (- (* 1/2 (* x y)) (* 1/8 z)) (taylor 0 x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor 0 x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (- (* 1/2 (* x y)) (* 1/8 z)) (taylor 0 x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (- (* 1/2 (* x y)) (* 1/8 z)) (taylor 0 x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (- (* 1/2 (* x y)) (* 1/8 z)) (taylor 0 x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor 0 x) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor 0 x) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor 0 x) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor 0 x) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor 0 x) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor 0 x) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor 0 x) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor 0 x) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* -1/8 z) (taylor 0 x) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (+ (* -1/8 z) (* 1/2 (* x y))) (taylor 0 x) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (+ (* -1/8 z) (* 1/2 (* x y))) (taylor 0 x) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (+ (* -1/8 z) (* 1/2 (* x y))) (taylor 0 x) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* x (+ (* -1/8 (/ z x)) (* 1/2 y))) (taylor inf x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* x (+ (* -1/8 (/ z x)) (* 1/2 y))) (taylor inf x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* x (+ (* -1/8 (/ z x)) (* 1/2 y))) (taylor inf x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (+ (* -1/8 (/ z x)) (* 1/2 y))) (taylor inf x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (+ (* -1/8 (/ z x)) (* 1/2 y))) (taylor inf x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (+ (* -1/8 (/ z x)) (* 1/2 y))) (taylor inf x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf x) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf x) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf x) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf x) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor inf x) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor inf x) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor inf x) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor inf x) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor inf x) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* x (+ (* -1/8 (/ z x)) (* 1/2 y))) (taylor inf x) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* x (+ (* -1/8 (/ z x)) (* 1/2 y))) (taylor inf x) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* x (+ (* -1/8 (/ z x)) (* 1/2 y))) (taylor inf x) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x))))) (taylor -inf x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x))))) (taylor -inf x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x))))) (taylor -inf x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x))))) (taylor -inf x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x))))) (taylor -inf x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x))))) (taylor -inf x) (#s(alt #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (patch #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf x) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf x) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf x) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf x) (#s(alt (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) (patch (*.f64 (*.f64 y x) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor -inf x) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor -inf x) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor -inf x) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* x y) (taylor -inf x) (#s(alt (*.f64 y x) (patch (*.f64 y x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (* x y)) (taylor -inf x) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x))))) (taylor -inf x) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x))))) (taylor -inf x) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x))))) (taylor -inf x) (#s(alt (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) (patch (fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z)) #<representation binary64>) () ())) ())
Calls

9 calls:

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

simplify109.0ms (4.6%)

Memory
2.2MiB live, 161.2MiB allocated
Algorithm
egg-herbie
Rules
4 218×lower-fma.f64
4 218×lower-fma.f32
3 690×lower-*.f64
3 690×lower-*.f32
2 036×lower-/.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0421068
11231068
23501068
38611068
419821068
540871068
664511068
08181987
Stop Event
iter limit
node limit
Counts
168 → 168
Calls
Call 1
Inputs
(* 1/2 (* x y))
(+ (* -1/8 z) (* 1/2 (* x y)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(* -1/8 z)
(* -1/8 z)
(* -1/8 z)
(* -1/8 z)
(* 1/2 (* x y))
(+ (* -1/8 z) (* 1/2 (* x y)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(* 1/2 (* x y))
(+ (* -1/8 z) (* 1/2 (* x y)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(* -1/8 z)
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(* -1/8 z)
(* -1/8 z)
(* -1/8 z)
(* -1/8 z)
(* -1/8 z)
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(* -1/8 z)
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(* -1/8 z)
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(* -1/8 z)
(* -1/8 z)
(* -1/8 z)
(* -1/8 z)
(* -1/8 z)
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(* -1/8 z)
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(* -1/8 z)
(- (* 1/2 (* x y)) (* 1/8 z))
(- (* 1/2 (* x y)) (* 1/8 z))
(- (* 1/2 (* x y)) (* 1/8 z))
(* -1/8 z)
(- (* 1/2 (* x y)) (* 1/8 z))
(- (* 1/2 (* x y)) (* 1/8 z))
(- (* 1/2 (* x y)) (* 1/8 z))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* x y)
(* x y)
(* x y)
(* x y)
(* -1/8 z)
(+ (* -1/8 z) (* 1/2 (* x y)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(* 1/2 (* x y))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(* 1/2 (* x y))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* x y)
(* x y)
(* x y)
(* x y)
(* 1/2 (* x y))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(* 1/2 (* x y))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(* 1/2 (* x y))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* x y)
(* x y)
(* x y)
(* x y)
(* 1/2 (* x y))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(* -1/8 z)
(- (* 1/2 (* x y)) (* 1/8 z))
(- (* 1/2 (* x y)) (* 1/8 z))
(- (* 1/2 (* x y)) (* 1/8 z))
(* -1/8 z)
(- (* 1/2 (* x y)) (* 1/8 z))
(- (* 1/2 (* x y)) (* 1/8 z))
(- (* 1/2 (* x y)) (* 1/8 z))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* x y)
(* x y)
(* x y)
(* x y)
(* -1/8 z)
(+ (* -1/8 z) (* 1/2 (* x y)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(* 1/2 (* x y))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(* 1/2 (* x y))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* x y)
(* x y)
(* x y)
(* x y)
(* 1/2 (* x y))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(* 1/2 (* x y))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(* 1/2 (* x y))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* 1/2 (* x y))
(* x y)
(* x y)
(* x y)
(* x y)
(* 1/2 (* x y))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
Outputs
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(+ (* -1/8 z) (* 1/2 (* x y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(+ (* -1/8 z) (* 1/2 (* x y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(+ (* -1/8 z) (* 1/2 (* x y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* z (- (* 1/2 (/ (* x y) z)) 1/8))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* z (+ 1/8 (* -1/2 (/ (* x y) z)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(- (* 1/2 (* x y)) (* 1/8 z))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(- (* 1/2 (* x y)) (* 1/8 z))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(- (* 1/2 (* x y)) (* 1/8 z))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(- (* 1/2 (* x y)) (* 1/8 z))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(- (* 1/2 (* x y)) (* 1/8 z))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(- (* 1/2 (* x y)) (* 1/8 z))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(+ (* -1/8 z) (* 1/2 (* x y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* y (+ (* -1/8 (/ z y)) (* 1/2 x)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* y (+ (* -1/2 x) (* 1/8 (/ z y)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(- (* 1/2 (* x y)) (* 1/8 z))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(- (* 1/2 (* x y)) (* 1/8 z))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(- (* 1/2 (* x y)) (* 1/8 z))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(- (* 1/2 (* x y)) (* 1/8 z))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(- (* 1/2 (* x y)) (* 1/8 z))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(- (* 1/2 (* x y)) (* 1/8 z))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* -1/8 z)
(*.f64 z #s(literal -1/8 binary64))
(+ (* -1/8 z) (* 1/2 (* x y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(+ (* -1/8 z) (* 1/2 (* x y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* x (+ (* -1/8 (/ z x)) (* 1/2 y)))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* x y)
(*.f64 y x)
(* 1/2 (* x y))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(* -1 (* x (+ (* -1/2 y) (* 1/8 (/ z x)))))
(fma.f64 z #s(literal -1/8 binary64) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))

rewrite122.0ms (5.2%)

Memory
7.9MiB live, 245.2MiB allocated
Rules
7 298×lower-fma.f32
7 296×lower-fma.f64
5 702×lower-*.f32
5 696×lower-*.f64
2 552×lower-/.f64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01747
02147
18845
268645
0892245
Stop Event
iter limit
node limit
iter limit
Counts
6 → 299
Calls
Call 1
Inputs
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z))
(*.f64 #s(literal -1/8 binary64) z)
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
(*.f64 (*.f64 y x) #s(literal 1/2 binary64))
(*.f64 y x)
(fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z))
Outputs
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>

eval60.0ms (2.6%)

Memory
-8.9MiB live, 150.7MiB allocated
Compiler

Compiled 6 673 to 734 computations (89% saved)

prune21.0ms (0.9%)

Memory
8.8MiB live, 51.3MiB allocated
Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New5380538
Fresh000
Picked033
Done000
Total5383541
Accuracy
100.0%
Counts
541 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z))
55.3%
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))
47.1%
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z))
Compiler

Compiled 45 to 38 computations (15.6% saved)

regimes16.0ms (0.7%)

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

7 calls:

3.0ms
(/.f64 (*.f64 x y) #s(literal 2 binary64))
2.0ms
(/.f64 z #s(literal 8 binary64))
2.0ms
z
2.0ms
(-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64)))
2.0ms
(*.f64 x y)
Results
AccuracySegmentsBranch
100.0%1x
100.0%1y
100.0%1z
100.0%1(-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64)))
100.0%1(/.f64 (*.f64 x y) #s(literal 2 binary64))
100.0%1(*.f64 x y)
100.0%1(/.f64 z #s(literal 8 binary64))
Compiler

Compiled 23 to 33 computations (-43.5% saved)

regimes13.0ms (0.5%)

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

7 calls:

3.0ms
z
2.0ms
(/.f64 z #s(literal 8 binary64))
2.0ms
x
2.0ms
(-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64)))
2.0ms
y
Results
AccuracySegmentsBranch
73.0%3x
73.1%3y
75.0%3z
73.0%5(-.f64 (/.f64 (*.f64 x y) #s(literal 2 binary64)) (/.f64 z #s(literal 8 binary64)))
80.4%3(/.f64 (*.f64 x y) #s(literal 2 binary64))
80.4%3(*.f64 x y)
75.0%3(/.f64 z #s(literal 8 binary64))
Compiler

Compiled 23 to 33 computations (-43.5% saved)

regimes9.0ms (0.4%)

Memory
22.7MiB live, 22.7MiB allocated
Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

Counts
1 → 1
Calls
Call 1
Inputs
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z))
Outputs
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z))
Calls

7 calls:

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

Compiled 23 to 33 computations (-43.5% saved)

bsearch1.0ms (0%)

Memory
1.0MiB live, 1.0MiB allocated
Algorithm
left-value
Steps
TimeLeftRight
0.0ms
3.718192747888955e-35
5.0337660569800095e-30
0.0ms
-1.373476939409918e-5
-2.2096140054489794e-6
Compiler

Compiled 12 to 15 computations (-25% saved)

simplify50.0ms (2.1%)

Memory
-22.1MiB live, 73.3MiB allocated
Algorithm
egg-herbie
Rules
*-commutative-binary64-*.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02476
12876
Stop Event
saturated
Calls
Call 1
Inputs
(fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z))
(if (<=.f64 (*.f64 x y) #s(literal -5902958103587057/590295810358705651712 binary64)) #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (if (<=.f64 (*.f64 x y) #s(literal 4676805239458889/93536104789177786765035829293842113257979682750464 binary64)) #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))))
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z))
Outputs
(fma.f64 (*.f64 y x) #s(literal 1/2 binary64) (*.f64 #s(literal -1/8 binary64) z))
(fma.f64 (*.f64 x y) #s(literal 1/2 binary64) (*.f64 z #s(literal -1/8 binary64)))
(if (<=.f64 (*.f64 x y) #s(literal -5902958103587057/590295810358705651712 binary64)) #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64))) (if (<=.f64 (*.f64 x y) #s(literal 4676805239458889/93536104789177786765035829293842113257979682750464 binary64)) #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z)) #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 (*.f64 y x) #s(literal 1/2 binary64)))))
(if (<=.f64 (*.f64 x y) #s(literal -5902958103587057/590295810358705651712 binary64)) #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal 1/2 binary64) (*.f64 x y))) (if (<=.f64 (*.f64 x y) #s(literal 4676805239458889/93536104789177786765035829293842113257979682750464 binary64)) #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 z #s(literal -1/8 binary64))) #s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal 1/2 binary64) (*.f64 x y)))))
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 #s(literal -1/8 binary64) z))
#s(approx (- (/ (* x y) 2) (/ z 8)) (*.f64 z #s(literal -1/8 binary64)))

soundness373.0ms (15.8%)

Memory
-9.6MiB live, 225.0MiB allocated
Rules
5 312×lower-fma.f64
5 312×lower-fma.f32
4 784×lower-*.f32
4 782×lower-*.f64
4 218×lower-fma.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0920
01320
15620
248620
0867719
042508
1123508
2350508
3859508
41956508
54016508
66381508
08111481
Stop Event
done
iter limit
node limit
iter limit
node limit
iter limit
Compiler

Compiled 68 to 47 computations (30.9% saved)

preprocess30.0ms (1.3%)

Memory
12.5MiB live, 50.0MiB allocated
Remove

(sort x y)

Compiler

Compiled 146 to 100 computations (31.5% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...