Linear.Projection:inverseInfinitePerspective from linear-1.19.1.3

Time bar (total: 3.6s)

start0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated; 0ms collecting garbage

analyze1.0ms (0%)

Memory
0.2MiB live, 0.2MiB allocated; 0ms collecting garbage
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.8%0.2%0%0%0%0
100%99.8%0%0.2%0%0%0%1
Compiler

Compiled 11 to 10 computations (9.1% saved)

sample652.0ms (17.9%)

Memory
47.4MiB live, 691.0MiB allocated; 201ms collecting garbage
Samples
424.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 175.0ms
ival-mult!: 157.0ms (89.8% of total)
ival-sub!: 17.0ms (9.7% of total)
adjust: 1.0ms (0.6% of total)
Bogosity

preprocess264.0ms (7.2%)

Memory
-45.3MiB live, 59.1MiB allocated; 18ms collecting garbage
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
046112
1161107
2489107
31165107
41560107
51600107
61600107
Stop Event
saturated
Alt Table
Click to see full alt table
StatusAccuracyProgram
98.7%
(*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t)
Symmetry

(negabs y)

(negabs t)

(sort y t)

Compiler

Compiled 18 to 16 computations (11.1% saved)

series204.0ms (5.6%)

Memory
31.7MiB live, 31.7MiB allocated; 0ms collecting garbage
Counts
8 → 25
Calls
Call 1
Inputs
(*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t)
(-.f64 (*.f64 x y) (*.f64 z y))
(*.f64 x y)
x
y
(*.f64 z y)
z
t
Outputs
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z))))
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y))))
#s(approx (- (* x y) (* z y)) (*.f64 #s(literal -1 binary64) (*.f64 y z)))
#s(approx (- (* x y) (* z y)) (-.f64 (*.f64 x y) (*.f64 y z)))
#s(approx (* x y) (*.f64 x y))
#s(approx x x)
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y)))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y))))
#s(approx (- (* x y) (* z y)) (*.f64 x (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x)))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 x (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 y z)) x)))))
#s(approx (- (* x y) (* z y)) (*.f64 #s(literal -1 binary64) (*.f64 x (fma.f64 #s(literal -1 binary64) y (/.f64 (*.f64 y z) x)))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 y (-.f64 x z))))
#s(approx (- (* x y) (* z y)) (*.f64 y (-.f64 x z)))
#s(approx y y)
#s(approx (* z y) (*.f64 y z))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y (-.f64 (*.f64 #s(literal -1 binary64) x) (*.f64 #s(literal -1 binary64) z))))))
#s(approx (- (* x y) (* z y)) (*.f64 #s(literal -1 binary64) (*.f64 y (-.f64 (*.f64 #s(literal -1 binary64) x) (*.f64 #s(literal -1 binary64) z)))))
#s(approx (- (* x y) (* z y)) (fma.f64 #s(literal -1 binary64) (*.f64 y z) (*.f64 x y)))
#s(approx z z)
#s(approx (* (- (* x y) (* z y)) t) (*.f64 z (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 x y)) z))))
#s(approx (- (* x y) (* z y)) (*.f64 z (-.f64 (/.f64 (*.f64 x y) z) y)))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 x y)) z) (*.f64 t y)))))
#s(approx (- (* x y) (* z y)) (*.f64 #s(literal -1 binary64) (*.f64 z (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 x y) z)) (*.f64 #s(literal -1 binary64) y)))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (-.f64 (*.f64 x y) (*.f64 y z))))
#s(approx t t)
Calls

12 calls:

TimeVariablePoint
2.0ms
x
inf
2.0ms
y
inf
2.0ms
y
-inf
2.0ms
x
-inf
1.0ms
x
0

rewrite222.0ms (6.1%)

Memory
1.9MiB live, 47.2MiB allocated; 21ms collecting garbage
Counts
8 → 19
Calls
Call 1
Inputs
(*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t)
(-.f64 (*.f64 x y) (*.f64 z y))
(*.f64 x y)
x
y
(*.f64 z y)
z
t
Outputs
(*.f64 (*.f64 y (-.f64 x z)) t)
(*.f64 t (*.f64 y (-.f64 x z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 x y) (neg.f64 (*.f64 z y)))
(+.f64 (*.f64 x y) (*.f64 (neg.f64 z) y))
(-.f64 (*.f64 x y) (*.f64 z y))
(fma.f64 x y (neg.f64 (*.f64 z y)))
(fma.f64 y x (neg.f64 (*.f64 z y)))
(fma.f64 x y (*.f64 (neg.f64 z) y))
(fma.f64 y x (*.f64 (neg.f64 z) y))
(neg.f64 (-.f64 (*.f64 z y) (*.f64 x y)))
(*.f64 x y)
(*.f64 y x)
x
y
(*.f64 z y)
(*.f64 y z)
z
t

eval4.0ms (0.1%)

Memory
3.3MiB live, 3.3MiB allocated; 0ms collecting garbage
Compiler

Compiled 563 to 131 computations (76.7% saved)

prune5.0ms (0.1%)

Memory
3.0MiB live, 3.0MiB allocated; 0ms collecting garbage
Pruning

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New31637
Fresh000
Picked011
Done000
Total31738
Accuracy
99.9%
Counts
38 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
98.7%
(*.f64 (fma.f64 y x (*.f64 (neg.f64 z) y)) t)
98.7%
(*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t)
98.7%
(*.f64 (*.f64 y (-.f64 x z)) t)
97.9%
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y))))
83.4%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 z (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 x y)) z))))
84.5%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y))))
61.1%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y)))
Compiler

Compiled 211 to 154 computations (27% saved)

series288.0ms (7.9%)

Memory
-20.3MiB live, 75.6MiB allocated; 23ms collecting garbage
Counts
24 → 54
Calls
Call 1
Inputs
(*.f64 (*.f64 y (-.f64 x z)) t)
(*.f64 y (-.f64 x z))
y
(-.f64 x z)
x
z
t
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y)))
(*.f64 t (*.f64 x y))
(*.f64 x y)
(*.f64 (fma.f64 y x (*.f64 (neg.f64 z) y)) t)
(fma.f64 y x (*.f64 (neg.f64 z) y))
(*.f64 (neg.f64 z) y)
(neg.f64 z)
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y))))
(fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y)))
#s(literal -1 binary64)
(*.f64 t (*.f64 y z))
(*.f64 y z)
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y))))
(*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y)))
(fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y))
(/.f64 (*.f64 t (*.f64 y z)) x)
(*.f64 t y)
Outputs
#s(approx (* (* y (- x z)) t) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z))))
#s(approx (* (* y (- x z)) t) (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y))))
#s(approx (* y (- x z)) (*.f64 #s(literal -1 binary64) (*.f64 y z)))
#s(approx (* y (- x z)) (fma.f64 #s(literal -1 binary64) (*.f64 y z) (*.f64 x y)))
#s(approx (- x z) (*.f64 #s(literal -1 binary64) z))
#s(approx (- x z) (-.f64 x z))
#s(approx x x)
#s(approx (* t (* x y)) (*.f64 t (*.f64 x y)))
#s(approx (* x y) (*.f64 x y))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x)))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y))) x))
#s(approx (/ (* t (* y z)) x) (/.f64 (*.f64 t (*.f64 y z)) x))
#s(approx (* (* y (- x z)) t) (*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y))))
#s(approx (* y (- x z)) (*.f64 x (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x)))))
#s(approx (- x z) (*.f64 x (+.f64 #s(literal 1 binary64) (*.f64 #s(literal -1 binary64) (/.f64 z x)))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y)))
#s(approx (* (* y (- x z)) t) (*.f64 #s(literal -1 binary64) (*.f64 x (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 y z)) x)))))
#s(approx (* y (- x z)) (*.f64 #s(literal -1 binary64) (*.f64 x (fma.f64 #s(literal -1 binary64) y (/.f64 (*.f64 y z) x)))))
#s(approx (- x z) (*.f64 #s(literal -1 binary64) (*.f64 x (-.f64 (/.f64 z x) #s(literal 1 binary64)))))
#s(approx (* (* y (- x z)) t) (*.f64 t (*.f64 y (-.f64 x z))))
#s(approx (* y (- x z)) (*.f64 y (-.f64 x z)))
#s(approx y y)
#s(approx (* (+ (* y x) (* (neg z) y)) t) (*.f64 t (*.f64 y (+.f64 x (*.f64 #s(literal -1 binary64) z)))))
#s(approx (+ (* y x) (* (neg z) y)) (*.f64 y (+.f64 x (*.f64 #s(literal -1 binary64) z))))
#s(approx (+ (* -1 (* t (* y z))) (* t (* x y))) (*.f64 y (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x))))
#s(approx (* t (* y z)) (*.f64 t (*.f64 y z)))
#s(approx (* y z) (*.f64 y z))
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 x (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y (-.f64 (*.f64 #s(literal -1 binary64) x) (*.f64 #s(literal -1 binary64) z))))))
#s(approx (* (+ (* y x) (* (neg z) y)) t) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y (+.f64 z (*.f64 #s(literal -1 binary64) x))))))
#s(approx (+ (* y x) (* (neg z) y)) (*.f64 #s(literal -1 binary64) (*.f64 y (+.f64 z (*.f64 #s(literal -1 binary64) x)))))
#s(approx (+ (* -1 (* t (* y z))) (* t (* x y))) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) (*.f64 t x) (*.f64 t z)))))
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 #s(literal -1 binary64) (*.f64 x (*.f64 y (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t z) x))))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t z) x)))))
#s(approx (- x z) (+.f64 x (*.f64 #s(literal -1 binary64) z)))
#s(approx z z)
#s(approx (* (* y (- x z)) t) (*.f64 z (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 x y)) z))))
#s(approx (* y (- x z)) (*.f64 z (fma.f64 #s(literal -1 binary64) y (/.f64 (*.f64 x y) z))))
#s(approx (- x z) (*.f64 z (-.f64 (/.f64 x z) #s(literal 1 binary64))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t y) x) (/.f64 (*.f64 t y) z))))
#s(approx (* (* y (- x z)) t) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 x y)) z) (*.f64 t y)))))
#s(approx (* y (- x z)) (*.f64 #s(literal -1 binary64) (*.f64 z (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 x y) z))))))
#s(approx (- x z) (*.f64 #s(literal -1 binary64) (*.f64 z (+.f64 #s(literal 1 binary64) (*.f64 #s(literal -1 binary64) (/.f64 x z))))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t y) z) (/.f64 (*.f64 t y) x)))))
#s(approx t t)
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (-.f64 (*.f64 x y) (*.f64 y z))))
#s(approx (* (+ (* y x) (* (neg z) y)) t) (*.f64 t (fma.f64 #s(literal -1 binary64) (*.f64 y z) (*.f64 x y))))
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 t (*.f64 x (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x))))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x)))))
#s(approx (+ (* -1 (* t (* y z))) (* t (* x y))) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) (*.f64 x y) (*.f64 y z)))))
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 x (fma.f64 #s(literal -1 binary64) y (/.f64 (*.f64 y z) x))))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) y (/.f64 (*.f64 y z) x)))))
Calls

12 calls:

TimeVariablePoint
11.0ms
y
-inf
10.0ms
y
0
8.0ms
t
-inf
7.0ms
z
-inf
6.0ms
z
inf

rewrite272.0ms (7.5%)

Memory
20.0MiB live, 156.8MiB allocated; 41ms collecting garbage
Counts
24 → 85
Calls
Call 1
Inputs
(*.f64 (*.f64 y (-.f64 x z)) t)
(*.f64 y (-.f64 x z))
y
(-.f64 x z)
x
z
t
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y)))
(*.f64 t (*.f64 x y))
(*.f64 x y)
(*.f64 (fma.f64 y x (*.f64 (neg.f64 z) y)) t)
(fma.f64 y x (*.f64 (neg.f64 z) y))
(*.f64 (neg.f64 z) y)
(neg.f64 z)
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y))))
(fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y)))
#s(literal -1 binary64)
(*.f64 t (*.f64 y z))
(*.f64 y z)
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y))))
(*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y)))
(fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y))
(/.f64 (*.f64 t (*.f64 y z)) x)
(*.f64 t y)
Outputs
(*.f64 (*.f64 y (-.f64 x z)) t)
(*.f64 y (*.f64 (-.f64 x z) t))
(*.f64 t (*.f64 y (-.f64 x z)))
(*.f64 y (-.f64 x z))
(*.f64 (-.f64 x z) y)
(+.f64 (neg.f64 (*.f64 y z)) (*.f64 x y))
(+.f64 (*.f64 x y) (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 x y) (*.f64 y z))
(-.f64 (*.f64 x y) (*.f64 (neg.f64 (neg.f64 z)) y))
(-.f64 (*.f64 x y) (neg.f64 (neg.f64 (*.f64 y z))))
(fma.f64 (neg.f64 z) y (*.f64 x y))
(fma.f64 y (neg.f64 z) (*.f64 x y))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(fma.f64 x y (neg.f64 (*.f64 y z)))
(neg.f64 (-.f64 (*.f64 y z) (*.f64 x y)))
y
(+.f64 x (neg.f64 z))
(-.f64 x z)
(neg.f64 (-.f64 z x))
x
z
t
#s(approx (* y (* (- x z) t)) (*.f64 t (*.f64 x y)))
(*.f64 t (*.f64 x y))
(*.f64 (*.f64 t x) y)
(*.f64 (*.f64 x y) t)
(*.f64 x y)
(*.f64 y x)
(*.f64 (*.f64 y (-.f64 x z)) t)
(*.f64 y (*.f64 (-.f64 x z) t))
(*.f64 t (*.f64 y (-.f64 x z)))
(*.f64 y (-.f64 x z))
(*.f64 (-.f64 x z) y)
(+.f64 (neg.f64 (*.f64 y z)) (*.f64 x y))
(+.f64 (*.f64 x y) (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 x y) (*.f64 y z))
(-.f64 (*.f64 x y) (*.f64 (neg.f64 (neg.f64 z)) y))
(-.f64 (*.f64 x y) (neg.f64 (neg.f64 (*.f64 y z))))
(fma.f64 (neg.f64 z) y (*.f64 x y))
(fma.f64 y (neg.f64 z) (*.f64 x y))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(fma.f64 x y (neg.f64 (*.f64 y z)))
(neg.f64 (-.f64 (*.f64 y z) (*.f64 x y)))
(*.f64 (neg.f64 z) y)
(*.f64 y (neg.f64 z))
(neg.f64 (*.f64 y z))
(neg.f64 z)
#s(approx (* y (* (- x z) t)) (fma.f64 t (*.f64 x y) (neg.f64 (*.f64 t (*.f64 y z)))))
(+.f64 (neg.f64 (*.f64 t (*.f64 y z))) (*.f64 t (*.f64 x y)))
(+.f64 (*.f64 t (*.f64 x y)) (neg.f64 (*.f64 t (*.f64 y z))))
(-.f64 (neg.f64 (*.f64 t (*.f64 y z))) (*.f64 (neg.f64 t) (*.f64 x y)))
(-.f64 (neg.f64 (*.f64 t (*.f64 y z))) (neg.f64 (*.f64 t (*.f64 x y))))
(fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y)))
(fma.f64 (*.f64 t (*.f64 y z)) #s(literal -1 binary64) (*.f64 t (*.f64 x y)))
(fma.f64 (*.f64 #s(literal -1 binary64) t) (*.f64 y z) (*.f64 t (*.f64 x y)))
(fma.f64 t (*.f64 x y) (neg.f64 (*.f64 t (*.f64 y z))))
(fma.f64 (*.f64 t x) y (neg.f64 (*.f64 t (*.f64 y z))))
(fma.f64 (*.f64 x y) t (neg.f64 (*.f64 t (*.f64 y z))))
#s(literal -1 binary64)
(*.f64 t (*.f64 y z))
(*.f64 (*.f64 y z) t)
(*.f64 (*.f64 t y) z)
(*.f64 y z)
(*.f64 z y)
#s(approx (* y (* (- x z) t)) (*.f64 (fma.f64 t y (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x))) x))
(*.f64 (fma.f64 t y (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x))) x)
(*.f64 x (fma.f64 t y (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x))))
(+.f64 (*.f64 (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x)) x) (*.f64 (*.f64 t y) x))
(+.f64 (*.f64 x (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x))) (*.f64 x (*.f64 t y)))
(fma.f64 (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x)) x (*.f64 (*.f64 t y) x))
(fma.f64 x (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x)) (*.f64 x (*.f64 t y)))
(+.f64 (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x)) (*.f64 t y))
(+.f64 (*.f64 t y) (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x)))
(-.f64 (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x)) (neg.f64 (*.f64 t y)))
(-.f64 (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x)) (*.f64 (neg.f64 t) y))
(fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y))
(fma.f64 (/.f64 (*.f64 t (*.f64 y z)) x) #s(literal -1 binary64) (*.f64 t y))
(fma.f64 t y (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x)))
(fma.f64 y t (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x)))
(*.f64 (*.f64 t (*.f64 y z)) (/.f64 #s(literal 1 binary64) x))
(*.f64 t (/.f64 (*.f64 y z) x))
(/.f64 (*.f64 t (*.f64 y z)) x)
(/.f64 (neg.f64 (*.f64 t (*.f64 y z))) (neg.f64 x))
(*.f64 t y)
(*.f64 y t)

eval95.0ms (2.6%)

Memory
-39.8MiB live, 27.4MiB allocated; 68ms collecting garbage
Compiler

Compiled 2 794 to 478 computations (82.9% saved)

prune9.0ms (0.3%)

Memory
20.1MiB live, 20.1MiB allocated; 0ms collecting garbage
Pruning

12 alts after pruning (8 fresh and 4 done)

PrunedKeptTotal
New1238131
Fresh101
Picked235
Done011
Total12612138
Accuracy
100.0%
Counts
138 → 12
Alt Table
Click to see full alt table
StatusAccuracyProgram
98.7%
(*.f64 (fma.f64 y x (*.f64 (neg.f64 z) y)) t)
98.7%
(*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t)
98.7%
(*.f64 (*.f64 y (-.f64 x z)) t)
85.5%
(*.f64 y (*.f64 (-.f64 x z) t))
92.2%
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 (*.f64 t y) z) (*.f64 t (*.f64 x y))))
55.9%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 (*.f64 t x) y))
77.7%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))))))
87.6%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x)))))))
59.2%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y))))
44.0%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x)))))
61.1%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y)))
84.7%
#s(approx (* (- (* x y) (* z y)) t) #s(approx (+ (* -1 (* t (* y z))) (* t (* x y))) (*.f64 y (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x)))))
Compiler

Compiled 472 to 322 computations (31.8% saved)

series288.0ms (7.9%)

Memory
16.0MiB live, 108.6MiB allocated; 25ms collecting garbage
Counts
32 → 62
Calls
Call 1
Inputs
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 (*.f64 t y) z) (*.f64 t (*.f64 x y))))
(fma.f64 #s(literal -1 binary64) (*.f64 (*.f64 t y) z) (*.f64 t (*.f64 x y)))
#s(literal -1 binary64)
(*.f64 (*.f64 t y) z)
(*.f64 t y)
t
y
z
(*.f64 t (*.f64 x y))
(*.f64 x y)
x
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y))))
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y)))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y))
(*.f64 y (*.f64 (-.f64 x z) t))
(*.f64 (-.f64 x z) t)
(-.f64 x z)
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x)))))
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x)))
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x))
(/.f64 (*.f64 t (*.f64 y z)) x)
(*.f64 t (*.f64 y z))
(*.f64 y z)
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))))))
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))))
(*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))
(+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))
(/.f64 (*.f64 t z) x)
(*.f64 t z)
Outputs
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z))))
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y))))
#s(approx (* t (* x y)) (*.f64 t (*.f64 x y)))
#s(approx (* x y) (*.f64 x y))
#s(approx x x)
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x)))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y))) x))
#s(approx (* (- x z) t) (*.f64 #s(literal -1 binary64) (*.f64 t z)))
#s(approx (* (- x z) t) (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x)))
#s(approx (- x z) (*.f64 #s(literal -1 binary64) z))
#s(approx (- x z) (-.f64 x z))
#s(approx (/ (* t (* y z)) x) (/.f64 (*.f64 t (*.f64 y z)) x))
#s(approx (+ t (* -1 (/ (* t z) x))) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))
#s(approx (+ t (* -1 (/ (* t z) x))) (/.f64 (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x)) x))
#s(approx (/ (* t z) x) (/.f64 (*.f64 t z) x))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y)))
#s(approx (* (- x z) t) (*.f64 t x))
#s(approx (* (- x z) t) (*.f64 x (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))))
#s(approx (- x z) (*.f64 x (+.f64 #s(literal 1 binary64) (*.f64 #s(literal -1 binary64) (/.f64 z x)))))
#s(approx (+ t (* -1 (/ (* t z) x))) t)
#s(approx (+ t (* -1 (/ (* t z) x))) (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 x (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 y z)) x)))))
#s(approx (* (- x z) t) (*.f64 #s(literal -1 binary64) (*.f64 x (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t z) x)))))
#s(approx (- x z) (*.f64 #s(literal -1 binary64) (*.f64 x (-.f64 (/.f64 z x) #s(literal 1 binary64)))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 y (-.f64 x z))))
#s(approx (+ (* -1 (* (* t y) z)) (* t (* x y))) (*.f64 y (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x))))
#s(approx (* (* t y) z) (*.f64 t (*.f64 y z)))
#s(approx y y)
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 x (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))))
#s(approx (* y z) (*.f64 y z))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y (-.f64 (*.f64 #s(literal -1 binary64) x) (*.f64 #s(literal -1 binary64) z))))))
#s(approx (+ (* -1 (* (* t y) z)) (* t (* x y))) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) (*.f64 t x) (*.f64 t z)))))
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 #s(literal -1 binary64) (*.f64 x (*.f64 y (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t z) x))))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t z) x)))))
#s(approx z z)
#s(approx (- x z) (+.f64 x (*.f64 #s(literal -1 binary64) z)))
#s(approx (* t z) (*.f64 t z))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 z (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 x y)) z))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t y) x) (/.f64 (*.f64 t y) z))))
#s(approx (* (- x z) t) (*.f64 z (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t x) z))))
#s(approx (- x z) (*.f64 z (-.f64 (/.f64 x z) #s(literal 1 binary64))))
#s(approx (+ t (* -1 (/ (* t z) x))) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 t x) (/.f64 t z))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 x y)) z) (*.f64 t y)))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t y) z) (/.f64 (*.f64 t y) x)))))
#s(approx (* (- x z) t) (*.f64 #s(literal -1 binary64) (*.f64 z (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t x) z))))))
#s(approx (- x z) (*.f64 #s(literal -1 binary64) (*.f64 z (+.f64 #s(literal 1 binary64) (*.f64 #s(literal -1 binary64) (/.f64 x z))))))
#s(approx (+ t (* -1 (/ (* t z) x))) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 t z) (/.f64 t x)))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (-.f64 (*.f64 x y) (*.f64 y z))))
#s(approx (+ (* -1 (* (* t y) z)) (* t (* x y))) (*.f64 t (fma.f64 #s(literal -1 binary64) (*.f64 y z) (*.f64 x y))))
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 t (*.f64 x (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x))))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x)))))
#s(approx (* (- x z) t) (*.f64 t (-.f64 x z)))
#s(approx (* y (+ t (* -1 (/ (* t z) x)))) (*.f64 t (*.f64 y (+.f64 #s(literal 1 binary64) (*.f64 #s(literal -1 binary64) (/.f64 z x))))))
#s(approx (+ t (* -1 (/ (* t z) x))) (*.f64 t (+.f64 #s(literal 1 binary64) (*.f64 #s(literal -1 binary64) (/.f64 z x)))))
#s(approx (+ (* -1 (* (* t y) z)) (* t (* x y))) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) (*.f64 x y) (*.f64 y z)))))
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 x (fma.f64 #s(literal -1 binary64) y (/.f64 (*.f64 y z) x))))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) y (/.f64 (*.f64 y z) x)))))
#s(approx (* y (+ t (* -1 (/ (* t z) x)))) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y (-.f64 (/.f64 z x) #s(literal 1 binary64))))))
#s(approx (+ t (* -1 (/ (* t z) x))) (*.f64 #s(literal -1 binary64) (*.f64 t (-.f64 (/.f64 z x) #s(literal 1 binary64)))))
Calls

12 calls:

TimeVariablePoint
52.0ms
z
-inf
17.0ms
t
inf
14.0ms
t
-inf
8.0ms
y
inf
7.0ms
t
0

rewrite246.0ms (6.8%)

Memory
-3.3MiB live, 184.7MiB allocated; 26ms collecting garbage
Counts
32 → 83
Calls
Call 1
Inputs
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 (*.f64 t y) z) (*.f64 t (*.f64 x y))))
(fma.f64 #s(literal -1 binary64) (*.f64 (*.f64 t y) z) (*.f64 t (*.f64 x y)))
#s(literal -1 binary64)
(*.f64 (*.f64 t y) z)
(*.f64 t y)
t
y
z
(*.f64 t (*.f64 x y))
(*.f64 x y)
x
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y))))
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y)))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y))
(*.f64 y (*.f64 (-.f64 x z) t))
(*.f64 (-.f64 x z) t)
(-.f64 x z)
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x)))))
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x)))
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x))
(/.f64 (*.f64 t (*.f64 y z)) x)
(*.f64 t (*.f64 y z))
(*.f64 y z)
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))))))
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))))
(*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))
(+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))
(/.f64 (*.f64 t z) x)
(*.f64 t z)
Outputs
#s(approx (* t (* y (- x z))) (fma.f64 t (*.f64 x y) (neg.f64 (*.f64 (*.f64 t y) z))))
(+.f64 (neg.f64 (*.f64 (*.f64 t y) z)) (*.f64 t (*.f64 x y)))
(+.f64 (*.f64 t (*.f64 x y)) (neg.f64 (*.f64 (*.f64 t y) z)))
(-.f64 (neg.f64 (*.f64 (*.f64 t y) z)) (neg.f64 (*.f64 t (*.f64 x y))))
(-.f64 (neg.f64 (*.f64 (*.f64 t y) z)) (*.f64 (neg.f64 t) (*.f64 x y)))
(fma.f64 #s(literal -1 binary64) (*.f64 (*.f64 t y) z) (*.f64 t (*.f64 x y)))
(fma.f64 (*.f64 (*.f64 t y) z) #s(literal -1 binary64) (*.f64 t (*.f64 x y)))
(fma.f64 (*.f64 #s(literal -1 binary64) (*.f64 t y)) z (*.f64 t (*.f64 x y)))
(fma.f64 t (*.f64 x y) (neg.f64 (*.f64 (*.f64 t y) z)))
(fma.f64 (*.f64 t x) y (neg.f64 (*.f64 (*.f64 t y) z)))
(fma.f64 (*.f64 x y) t (neg.f64 (*.f64 (*.f64 t y) z)))
#s(literal -1 binary64)
(*.f64 (*.f64 t y) z)
(*.f64 t (*.f64 y z))
(*.f64 (*.f64 y z) t)
(*.f64 z (*.f64 t y))
(*.f64 t y)
(*.f64 y t)
t
y
z
(*.f64 t (*.f64 x y))
(*.f64 (*.f64 t x) y)
(*.f64 (*.f64 x y) t)
(*.f64 x y)
(*.f64 y x)
x
#s(approx (* t (* y (- x z))) (*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (*.f64 t y))))
(*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (*.f64 t y)))
#s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (*.f64 t y))
(*.f64 (*.f64 (-.f64 x z) t) y)
(*.f64 (*.f64 y (-.f64 x z)) t)
(*.f64 y (*.f64 (-.f64 x z) t))
(*.f64 t (*.f64 y (-.f64 x z)))
(*.f64 (-.f64 x z) t)
(*.f64 t (-.f64 x z))
(+.f64 x (neg.f64 z))
(-.f64 x z)
(neg.f64 (-.f64 z x))
#s(approx (* t (* y (- x z))) (*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x)))))
(*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x))))
#s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x)))
(*.f64 (/.f64 (*.f64 (*.f64 t y) z) x) #s(literal -1 binary64))
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 (*.f64 t y) z) x))
(/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x)
(neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x))
(*.f64 (*.f64 (*.f64 t y) z) (/.f64 #s(literal 1 binary64) x))
(*.f64 t (/.f64 (*.f64 y z) x))
(/.f64 (*.f64 (*.f64 t y) z) x)
(/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) (neg.f64 x))
(*.f64 (*.f64 t y) z)
(*.f64 t (*.f64 y z))
(*.f64 (*.f64 y z) t)
(*.f64 z (*.f64 t y))
(*.f64 y z)
(*.f64 z y)
#s(approx (* t (* y (- x z))) (*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (*.f64 y (+.f64 t (neg.f64 (/.f64 (*.f64 t z) x)))))))
(*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (*.f64 y (+.f64 t (neg.f64 (/.f64 (*.f64 t z) x))))))
#s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (*.f64 y (+.f64 t (neg.f64 (/.f64 (*.f64 t z) x)))))
(*.f64 y (+.f64 t (neg.f64 (/.f64 (*.f64 t z) x))))
(*.f64 (+.f64 t (neg.f64 (/.f64 (*.f64 t z) x))) y)
(+.f64 (*.f64 t y) (*.f64 (neg.f64 (/.f64 (*.f64 t z) x)) y))
(+.f64 (*.f64 t y) (*.f64 y (neg.f64 (/.f64 (*.f64 t z) x))))
(fma.f64 t y (*.f64 (neg.f64 (/.f64 (*.f64 t z) x)) y))
(fma.f64 y t (*.f64 (neg.f64 (/.f64 (*.f64 t z) x)) y))
(fma.f64 t y (*.f64 y (neg.f64 (/.f64 (*.f64 t z) x))))
(fma.f64 y t (*.f64 y (neg.f64 (/.f64 (*.f64 t z) x))))
(+.f64 t (neg.f64 (/.f64 (*.f64 t z) x)))
(+.f64 (neg.f64 (/.f64 (*.f64 t z) x)) t)
(-.f64 t (*.f64 #s(literal 1 binary64) (/.f64 (*.f64 t z) x)))
(-.f64 t (neg.f64 (neg.f64 (/.f64 (*.f64 t z) x))))
(fma.f64 (/.f64 (*.f64 t z) x) #s(literal -1 binary64) t)
(fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x) t)
(*.f64 (/.f64 (*.f64 t z) x) #s(literal -1 binary64))
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))
(/.f64 (*.f64 #s(literal -1 binary64) (*.f64 t z)) x)
(neg.f64 (/.f64 (*.f64 t z) x))
(*.f64 (*.f64 t z) (/.f64 #s(literal 1 binary64) x))
(*.f64 t (/.f64 z x))
(/.f64 (*.f64 t z) x)
(/.f64 (neg.f64 (*.f64 t z)) (neg.f64 x))
(*.f64 t z)
(*.f64 z t)

eval14.0ms (0.4%)

Memory
4.6MiB live, 49.8MiB allocated; 4ms collecting garbage
Compiler

Compiled 3 889 to 597 computations (84.6% saved)

prune14.0ms (0.4%)

Memory
-21.5MiB live, 27.1MiB allocated; 12ms collecting garbage
Pruning

13 alts after pruning (7 fresh and 6 done)

PrunedKeptTotal
New1247131
Fresh303
Picked325
Done044
Total13013143
Accuracy
100.0%
Counts
143 → 13
Alt Table
Click to see full alt table
StatusAccuracyProgram
98.7%
(*.f64 (fma.f64 y x (*.f64 (neg.f64 z) y)) t)
98.7%
(*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t)
98.7%
(*.f64 (*.f64 y (-.f64 x z)) t)
85.5%
(*.f64 y (*.f64 (-.f64 x z) t))
84.7%
(*.f64 y #s(approx (* (- x z) t) (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x))))
55.9%
(*.f64 y #s(approx (* (- x z) t) (*.f64 t x)))
92.2%
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 (*.f64 x y) t (neg.f64 (*.f64 (*.f64 t y) z))))
92.2%
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 (*.f64 #s(literal -1 binary64) (*.f64 t y)) z (*.f64 t (*.f64 x y))))
43.9%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x))))
36.0%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y #s(approx (+ t (* -1 (/ (* t z) x))) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))))))
59.2%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y))))
43.9%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x))))))
61.1%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y)))
Compiler

Compiled 444 to 306 computations (31.1% saved)

series201.0ms (5.5%)

Memory
40.1MiB live, 315.8MiB allocated; 103ms collecting garbage
Counts
29 → 50
Calls
Call 1
Inputs
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 (*.f64 x y) t (neg.f64 (*.f64 (*.f64 t y) z))))
(fma.f64 (*.f64 x y) t (neg.f64 (*.f64 (*.f64 t y) z)))
(*.f64 x y)
x
y
t
(neg.f64 (*.f64 (*.f64 t y) z))
(*.f64 (*.f64 t y) z)
(*.f64 t y)
z
(*.f64 y #s(approx (* (- x z) t) (*.f64 t x)))
#s(approx (* (- x z) t) (*.f64 t x))
(*.f64 t x)
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x))))
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x)))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x))
(/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x)
(*.f64 y #s(approx (* (- x z) t) (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x))))
#s(approx (* (- x z) t) (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x)))
(fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x))
#s(literal -1 binary64)
(*.f64 t z)
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x))))))
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x)))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x))))
(*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x)))
(*.f64 t (/.f64 (*.f64 y z) x))
(/.f64 (*.f64 y z) x)
(*.f64 y z)
Outputs
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z))))
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y))))
#s(approx (+ (* (* x y) t) (neg (* (* t y) z))) (-.f64 (*.f64 t (*.f64 x y)) (*.f64 t (*.f64 y z))))
#s(approx (* x y) (*.f64 x y))
#s(approx x x)
#s(approx (* (- x z) t) (*.f64 #s(literal -1 binary64) (*.f64 t z)))
#s(approx (* (- x z) t) (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x)))
#s(approx (* t x) (*.f64 t x))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x)))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y))) x))
#s(approx (* t (/ (* y z) x)) (/.f64 (*.f64 t (*.f64 y z)) x))
#s(approx (/ (* y z) x) (/.f64 (*.f64 y z) x))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y)))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y))))
#s(approx (* (- x z) t) (*.f64 x (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y)))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 x (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 y z)) x)))))
#s(approx (* (- x z) t) (*.f64 #s(literal -1 binary64) (*.f64 x (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t z) x)))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 y (-.f64 x z))))
#s(approx (+ (* (* x y) t) (neg (* (* t y) z))) (*.f64 y (-.f64 (*.f64 t x) (*.f64 t z))))
#s(approx y y)
#s(approx (* (* t y) z) (*.f64 t (*.f64 y z)))
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 x (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))))
#s(approx (* y z) (*.f64 y z))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y (-.f64 (*.f64 #s(literal -1 binary64) x) (*.f64 #s(literal -1 binary64) z))))))
#s(approx (+ (* (* x y) t) (neg (* (* t y) z))) (*.f64 #s(literal -1 binary64) (*.f64 y (-.f64 (*.f64 #s(literal -1 binary64) (*.f64 t x)) (*.f64 #s(literal -1 binary64) (*.f64 t z))))))
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 #s(literal -1 binary64) (*.f64 x (*.f64 y (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t z) x))))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t z) x)))))
#s(approx z z)
#s(approx (* t z) (*.f64 t z))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 z (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 x y)) z))))
#s(approx (+ (* (* x y) t) (neg (* (* t y) z))) (*.f64 z (-.f64 (/.f64 (*.f64 t (*.f64 x y)) z) (*.f64 t y))))
#s(approx (* (- x z) t) (*.f64 z (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t x) z))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t y) x) (/.f64 (*.f64 t y) z))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 x y)) z) (*.f64 t y)))))
#s(approx (+ (* (* x y) t) (neg (* (* t y) z))) (*.f64 #s(literal -1 binary64) (*.f64 z (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 x y)) z)) (*.f64 #s(literal -1 binary64) (*.f64 t y))))))
#s(approx (* (- x z) t) (*.f64 #s(literal -1 binary64) (*.f64 z (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t x) z))))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t y) z) (/.f64 (*.f64 t y) x)))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (-.f64 (*.f64 x y) (*.f64 y z))))
#s(approx t t)
#s(approx (* (- x z) t) (*.f64 t (-.f64 x z)))
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 t (*.f64 x (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x))))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x)))))
#s(approx (+ (* -1 (* t z)) (* t x)) (*.f64 t (+.f64 x (*.f64 #s(literal -1 binary64) z))))
#s(approx (+ (* (* x y) t) (neg (* (* t y) z))) (*.f64 #s(literal -1 binary64) (*.f64 t (-.f64 (*.f64 #s(literal -1 binary64) (*.f64 x y)) (*.f64 #s(literal -1 binary64) (*.f64 y z))))))
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 x (fma.f64 #s(literal -1 binary64) y (/.f64 (*.f64 y z) x))))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) y (/.f64 (*.f64 y z) x)))))
#s(approx (+ (* -1 (* t z)) (* t x)) (*.f64 #s(literal -1 binary64) (*.f64 t (+.f64 z (*.f64 #s(literal -1 binary64) x)))))
Calls

12 calls:

TimeVariablePoint
7.0ms
z
-inf
6.0ms
y
0
4.0ms
t
-inf
4.0ms
y
-inf
3.0ms
t
inf

rewrite320.0ms (8.8%)

Memory
-47.2MiB live, 160.3MiB allocated; 228ms collecting garbage
Counts
29 → 76
Calls
Call 1
Inputs
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 (*.f64 x y) t (neg.f64 (*.f64 (*.f64 t y) z))))
(fma.f64 (*.f64 x y) t (neg.f64 (*.f64 (*.f64 t y) z)))
(*.f64 x y)
x
y
t
(neg.f64 (*.f64 (*.f64 t y) z))
(*.f64 (*.f64 t y) z)
(*.f64 t y)
z
(*.f64 y #s(approx (* (- x z) t) (*.f64 t x)))
#s(approx (* (- x z) t) (*.f64 t x))
(*.f64 t x)
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x))))
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x)))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x))
(/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x)
(*.f64 y #s(approx (* (- x z) t) (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x))))
#s(approx (* (- x z) t) (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x)))
(fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x))
#s(literal -1 binary64)
(*.f64 t z)
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x))))))
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x)))))
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x))))
(*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x)))
(*.f64 t (/.f64 (*.f64 y z) x))
(/.f64 (*.f64 y z) x)
(*.f64 y z)
Outputs
#s(approx (* t (* y (- x z))) (-.f64 (*.f64 (*.f64 x y) t) (*.f64 (*.f64 t y) z)))
(+.f64 (*.f64 (*.f64 x y) t) (neg.f64 (*.f64 (*.f64 t y) z)))
(+.f64 (neg.f64 (*.f64 (*.f64 t y) z)) (*.f64 (*.f64 x y) t))
(-.f64 (*.f64 (*.f64 x y) t) (*.f64 (*.f64 t y) z))
(-.f64 (*.f64 (*.f64 x y) t) (neg.f64 (neg.f64 (*.f64 (*.f64 t y) z))))
(fma.f64 (*.f64 x y) t (neg.f64 (*.f64 (*.f64 t y) z)))
(fma.f64 (neg.f64 (*.f64 t y)) z (*.f64 (*.f64 x y) t))
(fma.f64 x (*.f64 t y) (neg.f64 (*.f64 (*.f64 t y) z)))
(fma.f64 t (*.f64 x y) (neg.f64 (*.f64 (*.f64 t y) z)))
(fma.f64 (*.f64 t y) (neg.f64 z) (*.f64 (*.f64 x y) t))
(*.f64 x y)
(*.f64 y x)
x
y
t
(*.f64 (*.f64 t y) (neg.f64 z))
(*.f64 (neg.f64 (*.f64 t y)) z)
(neg.f64 (*.f64 (*.f64 t y) z))
(*.f64 (*.f64 t y) z)
(*.f64 (*.f64 y z) t)
(*.f64 z (*.f64 t y))
(*.f64 t (*.f64 y z))
(*.f64 t y)
(*.f64 y t)
z
(*.f64 y #s(approx (* (- x z) t) (*.f64 t x)))
#s(approx (* (- x z) t) (*.f64 t x))
(*.f64 t x)
(*.f64 x t)
#s(approx (* t (* y (- x z))) (*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x)))))
(*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x))))
#s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x)))
(*.f64 (neg.f64 (*.f64 (*.f64 t y) z)) (/.f64 #s(literal 1 binary64) x))
(*.f64 (*.f64 #s(literal -1 binary64) t) (/.f64 (*.f64 y z) x))
(*.f64 (/.f64 (*.f64 (*.f64 t y) z) x) #s(literal -1 binary64))
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 (*.f64 t y) z) x))
(/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x)
(/.f64 (*.f64 #s(literal -1 binary64) (*.f64 (*.f64 t y) z)) x)
(/.f64 (neg.f64 (neg.f64 (*.f64 (*.f64 t y) z))) (neg.f64 x))
(neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x))
(*.f64 y #s(approx (* (- x z) t) (fma.f64 t x (neg.f64 (*.f64 t z)))))
#s(approx (* (- x z) t) (fma.f64 t x (neg.f64 (*.f64 t z))))
(+.f64 (neg.f64 (*.f64 t z)) (*.f64 t x))
(+.f64 (*.f64 t x) (neg.f64 (*.f64 t z)))
(-.f64 (neg.f64 (*.f64 t z)) (neg.f64 (*.f64 t x)))
(-.f64 (neg.f64 (*.f64 t z)) (*.f64 (neg.f64 t) x))
(fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x))
(fma.f64 (*.f64 #s(literal -1 binary64) t) z (*.f64 t x))
(fma.f64 (*.f64 t z) #s(literal -1 binary64) (*.f64 t x))
(fma.f64 t x (neg.f64 (*.f64 t z)))
(fma.f64 x t (neg.f64 (*.f64 t z)))
#s(literal -1 binary64)
(*.f64 t z)
(*.f64 z t)
#s(approx (* t (* y (- x z))) (*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x)))))
(*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x))))
#s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x)))
(*.f64 (neg.f64 (*.f64 (*.f64 t y) z)) (/.f64 #s(literal 1 binary64) x))
(*.f64 (*.f64 #s(literal -1 binary64) t) (/.f64 (*.f64 y z) x))
(*.f64 (/.f64 (*.f64 (*.f64 t y) z) x) #s(literal -1 binary64))
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 (*.f64 t y) z) x))
(/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x)
(/.f64 (*.f64 #s(literal -1 binary64) (*.f64 (*.f64 t y) z)) x)
(/.f64 (neg.f64 (neg.f64 (*.f64 (*.f64 t y) z))) (neg.f64 x))
(neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x))
(*.f64 t (/.f64 (*.f64 y z) x))
(*.f64 (/.f64 (*.f64 y z) x) t)
(*.f64 (*.f64 (*.f64 t y) z) (/.f64 #s(literal 1 binary64) x))
(/.f64 (*.f64 (*.f64 t y) z) x)
(/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) (neg.f64 x))
(*.f64 (*.f64 y z) (/.f64 #s(literal 1 binary64) x))
(*.f64 y (/.f64 z x))
(/.f64 (*.f64 y z) x)
(/.f64 (neg.f64 (*.f64 y z)) (neg.f64 x))
(*.f64 y z)
(*.f64 z y)

eval21.0ms (0.6%)

Memory
-11.9MiB live, 32.8MiB allocated; 12ms collecting garbage
Compiler

Compiled 3 226 to 521 computations (83.8% saved)

prune8.0ms (0.2%)

Memory
14.1MiB live, 14.1MiB allocated; 0ms collecting garbage
Pruning

13 alts after pruning (5 fresh and 8 done)

PrunedKeptTotal
New1134117
Fresh112
Picked235
Done156
Total11713130
Accuracy
100.0%
Counts
130 → 13
Alt Table
Click to see full alt table
StatusAccuracyProgram
98.7%
(*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t)
98.7%
(*.f64 (*.f64 y (-.f64 x z)) t)
85.5%
(*.f64 y (*.f64 (-.f64 x z) t))
55.9%
(*.f64 y #s(approx (* (- x z) t) (*.f64 t x)))
92.2%
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 (*.f64 t y) (neg.f64 z) (*.f64 (*.f64 x y) t)))
92.2%
#s(approx (* (- (* x y) (* z y)) t) (-.f64 (*.f64 (*.f64 x y) t) (*.f64 (*.f64 t y) z)))
44.0%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 y z) t)) x))))
43.9%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x))))
36.0%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y #s(approx (+ t (* -1 (/ (* t z) x))) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))))))
59.2%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y))))
43.9%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x))))))
61.1%
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y)))
84.7%
#s(approx (* (- (* x y) (* z y)) t) #s(approx (+ (* (* x y) t) (neg (* (* t y) z))) (*.f64 y (-.f64 (*.f64 t x) (*.f64 t z)))))
Compiler

Compiled 300 to 203 computations (32.3% saved)

regimes175.0ms (4.8%)

Memory
18.6MiB live, 166.8MiB allocated; 48ms collecting garbage
Accuracy

Total -6.5b remaining (-20%)

Threshold costs -6.5b (-20%)

Counts
4 → 1
5 → 3
7 → 1
26 → 1
Calls
Call 1
Inputs
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y)))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 (*.f64 t x) y))
(*.f64 y #s(approx (* (- x z) t) (*.f64 t x)))
Outputs
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y)))
Call 2
Inputs
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y)))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 (*.f64 t x) y))
(*.f64 y #s(approx (* (- x z) t) (*.f64 t x)))
(*.f64 y (*.f64 (-.f64 x z) t))
Outputs
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y)))
(*.f64 y (*.f64 (-.f64 x z) t))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y)))
Call 3
Inputs
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y)))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 (*.f64 t x) y))
(*.f64 y #s(approx (* (- x z) t) (*.f64 t x)))
(*.f64 y (*.f64 (-.f64 x z) t))
(*.f64 (*.f64 y (-.f64 x z)) t)
#s(approx (* (- (* x y) (* z y)) t) #s(approx (+ (* (* x y) t) (neg (* (* t y) z))) (*.f64 y (-.f64 (*.f64 t x) (*.f64 t z)))))
Outputs
(*.f64 (*.f64 y (-.f64 x z)) t)
Call 4
Inputs
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y)))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 (*.f64 t x) y))
(*.f64 y #s(approx (* (- x z) t) (*.f64 t x)))
(*.f64 y (*.f64 (-.f64 x z) t))
(*.f64 (*.f64 y (-.f64 x z)) t)
#s(approx (* (- (* x y) (* z y)) t) #s(approx (+ (* (* x y) t) (neg (* (* t y) z))) (*.f64 y (-.f64 (*.f64 t x) (*.f64 t z)))))
(*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t)
(*.f64 (fma.f64 y x (*.f64 (neg.f64 z) y)) t)
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 y z) t)) x))))
#s(approx (* (- (* x y) (* z y)) t) #s(approx (+ (* -1 (* t (* y z))) (* t (* x y))) (*.f64 y (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x)))))
(*.f64 y #s(approx (* (- x z) t) (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x))))
#s(approx (* (- (* x y) (* z y)) t) (-.f64 (*.f64 (*.f64 x y) t) (*.f64 (*.f64 t y) z)))
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 (*.f64 t y) (neg.f64 z) (*.f64 (*.f64 x y) t)))
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 (*.f64 x y) t (neg.f64 (*.f64 (*.f64 t y) z))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x))))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x)))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y #s(approx (+ t (* -1 (/ (* t z) x))) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))))))
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y))))
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 (*.f64 t y) z) (*.f64 t (*.f64 x y))))
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 (*.f64 #s(literal -1 binary64) (*.f64 t y)) z (*.f64 t (*.f64 x y))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x)))))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y))))
#s(approx (* (- (* x y) (* z y)) t) (*.f64 z (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 x y)) z))))
Outputs
(*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t)
Calls

24 calls:

54.0ms
x
27.0ms
y
18.0ms
(-.f64 (*.f64 x y) (*.f64 z y))
11.0ms
(*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t)
7.0ms
t
Results
AccuracySegmentsBranch
61.1%1z
61.1%1t
61.1%1(-.f64 (*.f64 x y) (*.f64 z y))
61.1%1(*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t)
61.1%1y
61.1%1x
85.5%1(-.f64 (*.f64 x y) (*.f64 z y))
85.5%1(*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t)
90.7%3x
85.5%1y
85.5%1z
85.5%1t
98.7%1(-.f64 (*.f64 x y) (*.f64 z y))
98.7%1(*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t)
98.7%1x
98.7%1y
98.7%1z
98.7%1t
98.7%1(-.f64 (*.f64 x y) (*.f64 z y))
98.7%1(*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t)
98.7%1x
98.7%1y
98.7%1z
98.7%1t
Compiler

Compiled 698 to 252 computations (63.9% saved)

bsearch22.0ms (0.6%)

Memory
-19.4MiB live, 26.3MiB allocated; 4ms collecting garbage
Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
7.0ms
5.702223007013232e+166
2.86154186699952e+167
13.0ms
-1.1719578824487519e+90
-1.9590506690679105e+85
Samples
12.0ms224×0valid
Compiler

Compiled 320 to 295 computations (7.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 7.0ms
ival-sub!: 4.0ms (59.3% of total)
ival-mult!: 3.0ms (44.5% of total)
adjust: 0.0ms (0% of total)

derivations1.0ms (0%)

Memory
2.0MiB live, 2.0MiB allocated; 0ms collecting garbage
Stop Event
fuel
Compiler

Compiled 76 to 25 computations (67.1% saved)

preprocess316.0ms (8.7%)

Memory
5.0MiB live, 287.1MiB allocated; 58ms collecting garbage
Compiler

Compiled 631 to 349 computations (44.7% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated; 0ms collecting garbage

Profiling

Loading profile data...