Data.Colour.RGBSpace.HSV:hsv from colour-2.3.3, H

Time bar (total: 4.3s)

start0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

analyze0.0ms (0%)

Memory
0.5MiB live, 0.5MiB 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 7 to 7 computations (0% saved)

sample1.1s (24.8%)

Memory
14.3MiB live, 710.0MiB allocated
Samples
636.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 170.0ms
ival-sub: 104.0ms (61.2% of total)
ival-mult: 52.0ms (30.6% of total)
ival-true: 6.0ms (3.5% of total)
exact: 4.0ms (2.4% of total)
ival-assert: 3.0ms (1.8% of total)
Bogosity

explain40.0ms (0.9%)

Memory
23.8MiB live, 23.8MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-(-.f64 #s(literal 1 binary64) y)
00-0-(*.f64 x (-.f64 #s(literal 1 binary64) y))
00-0-y
00-0-#s(literal 1 binary64)
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
18.0ms512×0valid
Compiler

Compiled 31 to 19 computations (38.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 7.0ms
ival-sub: 3.0ms (42.9% of total)
ival-mult: 3.0ms (42.9% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess53.0ms (1.2%)

Memory
-15.4MiB live, 22.7MiB allocated
Algorithm
egg-herbie
Rules
176×lower-fma.f64
176×lower-fma.f32
112×lower-*.f32
110×lower-*.f64
102×distribute-lft-in
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01331
14026
210625
332325
451725
561225
055
075
1125
2225
3385
4835
51145
61545
72195
82655
93015
103075
03075
Stop Event
iter limit
saturated
iter limit
saturated
Calls
Call 1
Inputs
(*.f64 x (-.f64 #s(literal 1 binary64) y))
Outputs
(*.f64 x (-.f64 #s(literal 1 binary64) y))
(*.f64 (-.f64 #s(literal 1 binary64) y) x)
Symmetry

(negabs x)

Compiler

Compiled 5 to 5 computations (0% saved)

eval0.0ms (0%)

Memory
0.3MiB live, 0.3MiB allocated
Compiler

Compiled 0 to 2 computations (-∞% saved)

prune0.0ms (0%)

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

Compiled 5 to 5 computations (0% saved)

simplify10.0ms (0.2%)

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

Found 2 expressions of interest:

NewMetricScoreProgram
cost-diff0
(-.f64 #s(literal 1 binary64) y)
cost-diff0
(*.f64 x (-.f64 #s(literal 1 binary64) y))
Rules
176×lower-fma.f64
176×lower-fma.f32
112×lower-*.f32
110×lower-*.f64
56×lower-+.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0511
0711
11211
22211
33811
48311
511411
615411
721911
826511
930111
1030711
030711
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
(*.f64 x (-.f64 #s(literal 1 binary64) y))
x
(-.f64 #s(literal 1 binary64) y)
#s(literal 1 binary64)
y
Outputs
(*.f64 x (-.f64 #s(literal 1 binary64) y))
(*.f64 (-.f64 #s(literal 1 binary64) y) x)
x
(-.f64 #s(literal 1 binary64) y)
#s(literal 1 binary64)
y

localize13.0ms (0.3%)

Memory
14.8MiB live, 14.8MiB allocated
Localize:

Found 2 expressions of interest:

NewMetricScoreProgram
accuracy0
(-.f64 #s(literal 1 binary64) y)
accuracy0.0078125
(*.f64 x (-.f64 #s(literal 1 binary64) y))
Samples
9.0ms256×0valid
Compiler

Compiled 13 to 7 computations (46.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 3.0ms
ival-mult: 2.0ms (59% of total)
ival-sub: 1.0ms (29.5% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series3.0ms (0.1%)

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

6 calls:

TimeVariablePointExpression
1.0ms
x
@inf
((* x (- 1 y)) (- 1 y))
0.0ms
y
@inf
((* x (- 1 y)) (- 1 y))
0.0ms
y
@-inf
((* x (- 1 y)) (- 1 y))
0.0ms
x
@-inf
((* x (- 1 y)) (- 1 y))
0.0ms
x
@0
((* x (- 1 y)) (- 1 y))

simplify335.0ms (7.7%)

Memory
-29.9MiB live, 52.7MiB allocated
Algorithm
egg-herbie
Rules
8 840×lower-fma.f64
8 840×lower-fma.f32
2 370×lower-*.f64
2 370×lower-*.f32
2 096×lower-/.f32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
025167
169146
2160146
3294146
4858146
52435146
63645146
74189146
84362146
94399146
104431146
115099146
125547146
135648146
145668146
155678146
165684146
175684146
185688146
195692146
206668146
08367146
Stop Event
iter limit
node limit
Counts
36 → 35
Calls
Call 1
Inputs
x
(+ x (* -1 (* x y)))
(+ x (* -1 (* x y)))
(+ x (* -1 (* x y)))
1
(+ 1 (* -1 y))
(+ 1 (* -1 y))
(+ 1 (* -1 y))
(* -1 (* x y))
(* y (+ (* -1 x) (/ x y)))
(* y (+ (* -1 x) (/ x y)))
(* y (+ (* -1 x) (/ x y)))
(* -1 y)
(* y (- (/ 1 y) 1))
(* y (- (/ 1 y) 1))
(* y (- (/ 1 y) 1))
(* -1 (* x y))
(* -1 (* y (+ x (* -1 (/ x y)))))
(* -1 (* y (+ x (* -1 (/ x y)))))
(* -1 (* y (+ x (* -1 (/ x y)))))
(* -1 y)
(* -1 (* y (- 1 (/ 1 y))))
(* -1 (* y (- 1 (/ 1 y))))
(* -1 (* y (- 1 (/ 1 y))))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
Outputs
x
(+ x (* -1 (* x y)))
(fma.f64 (neg.f64 x) y x)
(+ x (* -1 (* x y)))
(fma.f64 (neg.f64 x) y x)
(+ x (* -1 (* x y)))
(fma.f64 (neg.f64 x) y x)
1
#s(literal 1 binary64)
(+ 1 (* -1 y))
(-.f64 #s(literal 1 binary64) y)
(+ 1 (* -1 y))
(-.f64 #s(literal 1 binary64) y)
(+ 1 (* -1 y))
(-.f64 #s(literal 1 binary64) y)
(* -1 (* x y))
(*.f64 (neg.f64 x) y)
(* y (+ (* -1 x) (/ x y)))
(fma.f64 (neg.f64 x) y x)
(* y (+ (* -1 x) (/ x y)))
(fma.f64 (neg.f64 x) y x)
(* y (+ (* -1 x) (/ x y)))
(fma.f64 (neg.f64 x) y x)
(* -1 y)
(neg.f64 y)
(* y (- (/ 1 y) 1))
(-.f64 #s(literal 1 binary64) y)
(* y (- (/ 1 y) 1))
(-.f64 #s(literal 1 binary64) y)
(* y (- (/ 1 y) 1))
(-.f64 #s(literal 1 binary64) y)
(* -1 (* x y))
(*.f64 (neg.f64 x) y)
(* -1 (* y (+ x (* -1 (/ x y)))))
(fma.f64 (neg.f64 x) y x)
(* -1 (* y (+ x (* -1 (/ x y)))))
(fma.f64 (neg.f64 x) y x)
(* -1 (* y (+ x (* -1 (/ x y)))))
(fma.f64 (neg.f64 x) y x)
(* -1 y)
(neg.f64 y)
(* -1 (* y (- 1 (/ 1 y))))
(-.f64 #s(literal 1 binary64) y)
(* -1 (* y (- 1 (/ 1 y))))
(-.f64 #s(literal 1 binary64) y)
(* -1 (* y (- 1 (/ 1 y))))
(-.f64 #s(literal 1 binary64) y)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)

rewrite233.0ms (5.4%)

Memory
16.5MiB live, 92.9MiB allocated
Rules
4 132×lower-fma.f64
4 132×lower-fma.f32
3 294×lower-/.f64
3 294×lower-/.f32
2 854×lower-*.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
058
078
1258
21458
311498
098947
Stop Event
iter limit
node limit
iter limit
Counts
2 → 353
Calls
Call 1
Inputs
(*.f64 x (-.f64 #s(literal 1 binary64) y))
(-.f64 #s(literal 1 binary64) 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>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>

eval177.0ms (4.1%)

Memory
15.4MiB live, 58.2MiB allocated
Compiler

Compiled 8 399 to 1 080 computations (87.1% saved)

prune36.0ms (0.8%)

Memory
-21.5MiB live, 15.8MiB allocated
Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New3853388
Fresh000
Picked101
Done000
Total3863389
Accuracy
100.0%
Counts
389 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 (neg.f64 x) y x)
48.5%
(*.f64 x #s(approx (- 1 y) (neg.f64 y)))
53.1%
(*.f64 x #s(approx (- 1 y) #s(literal 1 binary64)))
Compiler

Compiled 14 to 14 computations (0% saved)

simplify21.0ms (0.5%)

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

Found 7 expressions of interest:

NewMetricScoreProgram
cost-diff0
(neg.f64 x)
cost-diff0
(fma.f64 (neg.f64 x) y x)
cost-diff0
(neg.f64 y)
cost-diff0
#s(approx (- 1 y) (neg.f64 y))
cost-diff0
(*.f64 x #s(approx (- 1 y) (neg.f64 y)))
cost-diff0
#s(approx (- 1 y) #s(literal 1 binary64))
cost-diff0
(*.f64 x #s(approx (- 1 y) #s(literal 1 binary64)))
Rules
272×lower-fma.f32
270×lower-fma.f64
208×lower-*.f32
204×lower-*.f64
98×associate-*r*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01141
01741
13141
24541
36641
48741
514841
620941
732541
843241
949441
1050241
1150641
1251241
1351641
051641
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
(*.f64 x #s(approx (- 1 y) #s(literal 1 binary64)))
x
#s(approx (- 1 y) #s(literal 1 binary64))
#s(literal 1 binary64)
(*.f64 x #s(approx (- 1 y) (neg.f64 y)))
x
#s(approx (- 1 y) (neg.f64 y))
(neg.f64 y)
y
(fma.f64 (neg.f64 x) y x)
(neg.f64 x)
x
y
Outputs
(*.f64 x #s(approx (- 1 y) #s(literal 1 binary64)))
(*.f64 #s(approx (- 1 y) #s(literal 1 binary64)) x)
x
#s(approx (- 1 y) #s(literal 1 binary64))
#s(literal 1 binary64)
(*.f64 x #s(approx (- 1 y) (neg.f64 y)))
(*.f64 #s(approx (- 1 y) (neg.f64 y)) x)
x
#s(approx (- 1 y) (neg.f64 y))
(neg.f64 y)
y
(fma.f64 (neg.f64 x) y x)
(*.f64 (-.f64 #s(literal 1 binary64) y) x)
(neg.f64 x)
x
y

localize23.0ms (0.5%)

Memory
10.2MiB live, 10.2MiB allocated
Localize:

Found 7 expressions of interest:

NewMetricScoreProgram
accuracy0
(fma.f64 (neg.f64 x) y x)
accuracy0
(neg.f64 x)
accuracy0
(neg.f64 y)
accuracy0.0078125
(*.f64 x #s(approx (- 1 y) (neg.f64 y)))
accuracy33.11670051400333
#s(approx (- 1 y) (neg.f64 y))
accuracy0.0078125
(*.f64 x #s(approx (- 1 y) #s(literal 1 binary64)))
accuracy30.123712272049946
#s(approx (- 1 y) #s(literal 1 binary64))
Samples
16.0ms256×0valid
Compiler

Compiled 34 to 11 computations (67.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 8.0ms
ival-mult: 3.0ms (37.2% of total)
ival-sub: 2.0ms (24.8% of total)
ival-neg: 2.0ms (24.8% of total)
ival-add: 1.0ms (12.4% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series7.0ms (0.2%)

Memory
3.6MiB live, 3.6MiB allocated
Counts
7 → 120
Calls
Call 1
Inputs
#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())
#s(alt #s(approx (- 1 y) #s(literal 1 binary64)) (patch #s(approx (- 1 y) #s(literal 1 binary64)) #<representation binary64>) () ())
#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())
#s(alt #s(approx (- 1 y) (neg.f64 y)) (patch #s(approx (- 1 y) (neg.f64 y)) #<representation binary64>) () ())
#s(alt (neg.f64 y) (patch (neg.f64 y) #<representation binary64>) () ())
#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())
#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())
Outputs
#s(alt x (taylor 0 y) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (+ x (* -1 (* x y))) (taylor 0 y) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (+ x (* -1 (* x y))) (taylor 0 y) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (+ x (* -1 (* x y))) (taylor 0 y) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt 1 (taylor 0 y) (#s(alt #s(approx (- 1 y) #s(literal 1 binary64)) (patch #s(approx (- 1 y) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (+ 1 (* -1 y)) (taylor 0 y) (#s(alt #s(approx (- 1 y) #s(literal 1 binary64)) (patch #s(approx (- 1 y) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (+ 1 (* -1 y)) (taylor 0 y) (#s(alt #s(approx (- 1 y) #s(literal 1 binary64)) (patch #s(approx (- 1 y) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (+ 1 (* -1 y)) (taylor 0 y) (#s(alt #s(approx (- 1 y) #s(literal 1 binary64)) (patch #s(approx (- 1 y) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt x (taylor 0 y) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (+ x (* -1 (* x y))) (taylor 0 y) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (+ x (* -1 (* x y))) (taylor 0 y) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (+ x (* -1 (* x y))) (taylor 0 y) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt 1 (taylor 0 y) (#s(alt #s(approx (- 1 y) (neg.f64 y)) (patch #s(approx (- 1 y) (neg.f64 y)) #<representation binary64>) () ())) ())
#s(alt (+ 1 (* -1 y)) (taylor 0 y) (#s(alt #s(approx (- 1 y) (neg.f64 y)) (patch #s(approx (- 1 y) (neg.f64 y)) #<representation binary64>) () ())) ())
#s(alt (+ 1 (* -1 y)) (taylor 0 y) (#s(alt #s(approx (- 1 y) (neg.f64 y)) (patch #s(approx (- 1 y) (neg.f64 y)) #<representation binary64>) () ())) ())
#s(alt (+ 1 (* -1 y)) (taylor 0 y) (#s(alt #s(approx (- 1 y) (neg.f64 y)) (patch #s(approx (- 1 y) (neg.f64 y)) #<representation binary64>) () ())) ())
#s(alt (* -1 y) (taylor 0 y) (#s(alt (neg.f64 y) (patch (neg.f64 y) #<representation binary64>) () ())) ())
#s(alt (* -1 y) (taylor 0 y) (#s(alt (neg.f64 y) (patch (neg.f64 y) #<representation binary64>) () ())) ())
#s(alt (* -1 y) (taylor 0 y) (#s(alt (neg.f64 y) (patch (neg.f64 y) #<representation binary64>) () ())) ())
#s(alt (* -1 y) (taylor 0 y) (#s(alt (neg.f64 y) (patch (neg.f64 y) #<representation binary64>) () ())) ())
#s(alt x (taylor 0 y) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (+ x (* -1 (* x y))) (taylor 0 y) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (+ x (* -1 (* x y))) (taylor 0 y) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (+ x (* -1 (* x y))) (taylor 0 y) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x y)) (taylor inf y) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1 x) (/ x y))) (taylor inf y) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1 x) (/ x y))) (taylor inf y) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1 x) (/ x y))) (taylor inf y) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 y) (taylor inf y) (#s(alt #s(approx (- 1 y) #s(literal 1 binary64)) (patch #s(approx (- 1 y) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (* y (- (/ 1 y) 1)) (taylor inf y) (#s(alt #s(approx (- 1 y) #s(literal 1 binary64)) (patch #s(approx (- 1 y) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (* y (- (/ 1 y) 1)) (taylor inf y) (#s(alt #s(approx (- 1 y) #s(literal 1 binary64)) (patch #s(approx (- 1 y) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (* y (- (/ 1 y) 1)) (taylor inf y) (#s(alt #s(approx (- 1 y) #s(literal 1 binary64)) (patch #s(approx (- 1 y) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x y)) (taylor inf y) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1 x) (/ x y))) (taylor inf y) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1 x) (/ x y))) (taylor inf y) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1 x) (/ x y))) (taylor inf y) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* -1 y) (taylor inf y) (#s(alt #s(approx (- 1 y) (neg.f64 y)) (patch #s(approx (- 1 y) (neg.f64 y)) #<representation binary64>) () ())) ())
#s(alt (* y (- (/ 1 y) 1)) (taylor inf y) (#s(alt #s(approx (- 1 y) (neg.f64 y)) (patch #s(approx (- 1 y) (neg.f64 y)) #<representation binary64>) () ())) ())
#s(alt (* y (- (/ 1 y) 1)) (taylor inf y) (#s(alt #s(approx (- 1 y) (neg.f64 y)) (patch #s(approx (- 1 y) (neg.f64 y)) #<representation binary64>) () ())) ())
#s(alt (* y (- (/ 1 y) 1)) (taylor inf y) (#s(alt #s(approx (- 1 y) (neg.f64 y)) (patch #s(approx (- 1 y) (neg.f64 y)) #<representation binary64>) () ())) ())
#s(alt (* -1 y) (taylor inf y) (#s(alt (neg.f64 y) (patch (neg.f64 y) #<representation binary64>) () ())) ())
#s(alt (* -1 y) (taylor inf y) (#s(alt (neg.f64 y) (patch (neg.f64 y) #<representation binary64>) () ())) ())
#s(alt (* -1 y) (taylor inf y) (#s(alt (neg.f64 y) (patch (neg.f64 y) #<representation binary64>) () ())) ())
#s(alt (* -1 y) (taylor inf y) (#s(alt (neg.f64 y) (patch (neg.f64 y) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x y)) (taylor inf y) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1 x) (/ x y))) (taylor inf y) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1 x) (/ x y))) (taylor inf y) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1 x) (/ x y))) (taylor inf y) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x y)) (taylor -inf y) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ x (* -1 (/ x y))))) (taylor -inf y) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ x (* -1 (/ x y))))) (taylor -inf y) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ x (* -1 (/ x y))))) (taylor -inf y) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* -1 y) (taylor -inf y) (#s(alt #s(approx (- 1 y) #s(literal 1 binary64)) (patch #s(approx (- 1 y) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (- 1 (/ 1 y)))) (taylor -inf y) (#s(alt #s(approx (- 1 y) #s(literal 1 binary64)) (patch #s(approx (- 1 y) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (- 1 (/ 1 y)))) (taylor -inf y) (#s(alt #s(approx (- 1 y) #s(literal 1 binary64)) (patch #s(approx (- 1 y) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (- 1 (/ 1 y)))) (taylor -inf y) (#s(alt #s(approx (- 1 y) #s(literal 1 binary64)) (patch #s(approx (- 1 y) #s(literal 1 binary64)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x y)) (taylor -inf y) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ x (* -1 (/ x y))))) (taylor -inf y) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ x (* -1 (/ x y))))) (taylor -inf y) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ x (* -1 (/ x y))))) (taylor -inf y) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* -1 y) (taylor -inf y) (#s(alt #s(approx (- 1 y) (neg.f64 y)) (patch #s(approx (- 1 y) (neg.f64 y)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (- 1 (/ 1 y)))) (taylor -inf y) (#s(alt #s(approx (- 1 y) (neg.f64 y)) (patch #s(approx (- 1 y) (neg.f64 y)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (- 1 (/ 1 y)))) (taylor -inf y) (#s(alt #s(approx (- 1 y) (neg.f64 y)) (patch #s(approx (- 1 y) (neg.f64 y)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (- 1 (/ 1 y)))) (taylor -inf y) (#s(alt #s(approx (- 1 y) (neg.f64 y)) (patch #s(approx (- 1 y) (neg.f64 y)) #<representation binary64>) () ())) ())
#s(alt (* -1 y) (taylor -inf y) (#s(alt (neg.f64 y) (patch (neg.f64 y) #<representation binary64>) () ())) ())
#s(alt (* -1 y) (taylor -inf y) (#s(alt (neg.f64 y) (patch (neg.f64 y) #<representation binary64>) () ())) ())
#s(alt (* -1 y) (taylor -inf y) (#s(alt (neg.f64 y) (patch (neg.f64 y) #<representation binary64>) () ())) ())
#s(alt (* -1 y) (taylor -inf y) (#s(alt (neg.f64 y) (patch (neg.f64 y) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x y)) (taylor -inf y) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ x (* -1 (/ x y))))) (taylor -inf y) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ x (* -1 (/ x y))))) (taylor -inf y) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ x (* -1 (/ x y))))) (taylor -inf y) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor 0 x) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor 0 x) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor 0 x) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor 0 x) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor 0 x) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor 0 x) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor 0 x) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor 0 x) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* -1 y))) (taylor 0 x) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* -1 y))) (taylor 0 x) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* -1 y))) (taylor 0 x) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* -1 y))) (taylor 0 x) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor 0 x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor 0 x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor 0 x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor 0 x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor inf x) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor inf x) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor inf x) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor inf x) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor inf x) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor inf x) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor inf x) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor inf x) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* -1 y))) (taylor inf x) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* -1 y))) (taylor inf x) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* -1 y))) (taylor inf x) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* -1 y))) (taylor inf x) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor inf x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor inf x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor inf x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor inf x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor -inf x) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor -inf x) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor -inf x) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor -inf x) (#s(alt (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (patch (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor -inf x) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor -inf x) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor -inf x) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor -inf x) (#s(alt (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (patch (*.f64 x #s(approx (- 1 y) (neg.f64 y))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (- y 1))) (taylor -inf x) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (- y 1))) (taylor -inf x) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (- y 1))) (taylor -inf x) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (- y 1))) (taylor -inf x) (#s(alt (fma.f64 (neg.f64 x) y x) (patch (fma.f64 (neg.f64 x) y x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor -inf x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor -inf x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor -inf x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor -inf x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@inf
((* x (- 1 y)) (- 1 y) (* x (- 1 y)) (- 1 y) (neg y) (+ (* (neg x) y) x) (neg x))
1.0ms
x
@0
((* x (- 1 y)) (- 1 y) (* x (- 1 y)) (- 1 y) (neg y) (+ (* (neg x) y) x) (neg x))
1.0ms
x
@-inf
((* x (- 1 y)) (- 1 y) (* x (- 1 y)) (- 1 y) (neg y) (+ (* (neg x) y) x) (neg x))
1.0ms
y
@inf
((* x (- 1 y)) (- 1 y) (* x (- 1 y)) (- 1 y) (neg y) (+ (* (neg x) y) x) (neg x))
0.0ms
y
@0
((* x (- 1 y)) (- 1 y) (* x (- 1 y)) (- 1 y) (neg y) (+ (* (neg x) y) x) (neg x))

simplify287.0ms (6.6%)

Memory
-9.0MiB live, 65.3MiB allocated
Algorithm
egg-herbie
Rules
3 160×lower-fma.f64
3 160×lower-fma.f32
2 118×div-sub
1 832×lower-*.f64
1 832×lower-*.f32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
029517
185454
2184454
3342454
4949454
52604454
63444454
73953454
84047454
94090454
104118454
114996454
125655454
135924454
145944454
155954454
165966454
175966454
185970454
195974454
205974454
216298454
227385454
08021454
Stop Event
iter limit
node limit
Counts
120 → 117
Calls
Call 1
Inputs
x
(+ x (* -1 (* x y)))
(+ x (* -1 (* x y)))
(+ x (* -1 (* x y)))
1
(+ 1 (* -1 y))
(+ 1 (* -1 y))
(+ 1 (* -1 y))
x
(+ x (* -1 (* x y)))
(+ x (* -1 (* x y)))
(+ x (* -1 (* x y)))
1
(+ 1 (* -1 y))
(+ 1 (* -1 y))
(+ 1 (* -1 y))
(* -1 y)
(* -1 y)
(* -1 y)
(* -1 y)
x
(+ x (* -1 (* x y)))
(+ x (* -1 (* x y)))
(+ x (* -1 (* x y)))
(* -1 (* x y))
(* y (+ (* -1 x) (/ x y)))
(* y (+ (* -1 x) (/ x y)))
(* y (+ (* -1 x) (/ x y)))
(* -1 y)
(* y (- (/ 1 y) 1))
(* y (- (/ 1 y) 1))
(* y (- (/ 1 y) 1))
(* -1 (* x y))
(* y (+ (* -1 x) (/ x y)))
(* y (+ (* -1 x) (/ x y)))
(* y (+ (* -1 x) (/ x y)))
(* -1 y)
(* y (- (/ 1 y) 1))
(* y (- (/ 1 y) 1))
(* y (- (/ 1 y) 1))
(* -1 y)
(* -1 y)
(* -1 y)
(* -1 y)
(* -1 (* x y))
(* y (+ (* -1 x) (/ x y)))
(* y (+ (* -1 x) (/ x y)))
(* y (+ (* -1 x) (/ x y)))
(* -1 (* x y))
(* -1 (* y (+ x (* -1 (/ x y)))))
(* -1 (* y (+ x (* -1 (/ x y)))))
(* -1 (* y (+ x (* -1 (/ x y)))))
(* -1 y)
(* -1 (* y (- 1 (/ 1 y))))
(* -1 (* y (- 1 (/ 1 y))))
(* -1 (* y (- 1 (/ 1 y))))
(* -1 (* x y))
(* -1 (* y (+ x (* -1 (/ x y)))))
(* -1 (* y (+ x (* -1 (/ x y)))))
(* -1 (* y (+ x (* -1 (/ x y)))))
(* -1 y)
(* -1 (* y (- 1 (/ 1 y))))
(* -1 (* y (- 1 (/ 1 y))))
(* -1 (* y (- 1 (/ 1 y))))
(* -1 y)
(* -1 y)
(* -1 y)
(* -1 y)
(* -1 (* x y))
(* -1 (* y (+ x (* -1 (/ x y)))))
(* -1 (* y (+ x (* -1 (/ x y)))))
(* -1 (* y (+ x (* -1 (/ x y)))))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (+ 1 (* -1 y)))
(* x (+ 1 (* -1 y)))
(* x (+ 1 (* -1 y)))
(* x (+ 1 (* -1 y)))
(* -1 x)
(* -1 x)
(* -1 x)
(* -1 x)
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (+ 1 (* -1 y)))
(* x (+ 1 (* -1 y)))
(* x (+ 1 (* -1 y)))
(* x (+ 1 (* -1 y)))
(* -1 x)
(* -1 x)
(* -1 x)
(* -1 x)
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* -1 (* x (- y 1)))
(* -1 (* x (- y 1)))
(* -1 (* x (- y 1)))
(* -1 (* x (- y 1)))
(* -1 x)
(* -1 x)
(* -1 x)
(* -1 x)
Outputs
x
(+ x (* -1 (* x y)))
(fma.f64 (neg.f64 x) y x)
(+ x (* -1 (* x y)))
(fma.f64 (neg.f64 x) y x)
(+ x (* -1 (* x y)))
(fma.f64 (neg.f64 x) y x)
1
#s(literal 1 binary64)
(+ 1 (* -1 y))
(-.f64 #s(literal 1 binary64) y)
(+ 1 (* -1 y))
(-.f64 #s(literal 1 binary64) y)
(+ 1 (* -1 y))
(-.f64 #s(literal 1 binary64) y)
x
(+ x (* -1 (* x y)))
(fma.f64 (neg.f64 x) y x)
(+ x (* -1 (* x y)))
(fma.f64 (neg.f64 x) y x)
(+ x (* -1 (* x y)))
(fma.f64 (neg.f64 x) y x)
1
#s(literal 1 binary64)
(+ 1 (* -1 y))
(-.f64 #s(literal 1 binary64) y)
(+ 1 (* -1 y))
(-.f64 #s(literal 1 binary64) y)
(+ 1 (* -1 y))
(-.f64 #s(literal 1 binary64) y)
(* -1 y)
(neg.f64 y)
(* -1 y)
(neg.f64 y)
(* -1 y)
(neg.f64 y)
(* -1 y)
(neg.f64 y)
x
(+ x (* -1 (* x y)))
(fma.f64 (neg.f64 x) y x)
(+ x (* -1 (* x y)))
(fma.f64 (neg.f64 x) y x)
(+ x (* -1 (* x y)))
(fma.f64 (neg.f64 x) y x)
(* -1 (* x y))
(*.f64 (neg.f64 x) y)
(* y (+ (* -1 x) (/ x y)))
(fma.f64 (neg.f64 x) y x)
(* y (+ (* -1 x) (/ x y)))
(fma.f64 (neg.f64 x) y x)
(* y (+ (* -1 x) (/ x y)))
(fma.f64 (neg.f64 x) y x)
(* -1 y)
(neg.f64 y)
(* y (- (/ 1 y) 1))
(-.f64 #s(literal 1 binary64) y)
(* y (- (/ 1 y) 1))
(-.f64 #s(literal 1 binary64) y)
(* y (- (/ 1 y) 1))
(-.f64 #s(literal 1 binary64) y)
(* -1 (* x y))
(*.f64 (neg.f64 x) y)
(* y (+ (* -1 x) (/ x y)))
(fma.f64 (neg.f64 x) y x)
(* y (+ (* -1 x) (/ x y)))
(fma.f64 (neg.f64 x) y x)
(* y (+ (* -1 x) (/ x y)))
(fma.f64 (neg.f64 x) y x)
(* -1 y)
(neg.f64 y)
(* y (- (/ 1 y) 1))
(-.f64 #s(literal 1 binary64) y)
(* y (- (/ 1 y) 1))
(-.f64 #s(literal 1 binary64) y)
(* y (- (/ 1 y) 1))
(-.f64 #s(literal 1 binary64) y)
(* -1 y)
(neg.f64 y)
(* -1 y)
(neg.f64 y)
(* -1 y)
(neg.f64 y)
(* -1 y)
(neg.f64 y)
(* -1 (* x y))
(*.f64 (neg.f64 x) y)
(* y (+ (* -1 x) (/ x y)))
(fma.f64 (neg.f64 x) y x)
(* y (+ (* -1 x) (/ x y)))
(fma.f64 (neg.f64 x) y x)
(* y (+ (* -1 x) (/ x y)))
(fma.f64 (neg.f64 x) y x)
(* -1 (* x y))
(*.f64 (neg.f64 x) y)
(* -1 (* y (+ x (* -1 (/ x y)))))
(fma.f64 (neg.f64 x) y x)
(* -1 (* y (+ x (* -1 (/ x y)))))
(fma.f64 (neg.f64 x) y x)
(* -1 (* y (+ x (* -1 (/ x y)))))
(fma.f64 (neg.f64 x) y x)
(* -1 y)
(neg.f64 y)
(* -1 (* y (- 1 (/ 1 y))))
(-.f64 #s(literal 1 binary64) y)
(* -1 (* y (- 1 (/ 1 y))))
(-.f64 #s(literal 1 binary64) y)
(* -1 (* y (- 1 (/ 1 y))))
(-.f64 #s(literal 1 binary64) y)
(* -1 (* x y))
(*.f64 (neg.f64 x) y)
(* -1 (* y (+ x (* -1 (/ x y)))))
(fma.f64 (neg.f64 x) y x)
(* -1 (* y (+ x (* -1 (/ x y)))))
(fma.f64 (neg.f64 x) y x)
(* -1 (* y (+ x (* -1 (/ x y)))))
(fma.f64 (neg.f64 x) y x)
(* -1 y)
(neg.f64 y)
(* -1 (* y (- 1 (/ 1 y))))
(-.f64 #s(literal 1 binary64) y)
(* -1 (* y (- 1 (/ 1 y))))
(-.f64 #s(literal 1 binary64) y)
(* -1 (* y (- 1 (/ 1 y))))
(-.f64 #s(literal 1 binary64) y)
(* -1 y)
(neg.f64 y)
(* -1 y)
(neg.f64 y)
(* -1 y)
(neg.f64 y)
(* -1 y)
(neg.f64 y)
(* -1 (* x y))
(*.f64 (neg.f64 x) y)
(* -1 (* y (+ x (* -1 (/ x y)))))
(fma.f64 (neg.f64 x) y x)
(* -1 (* y (+ x (* -1 (/ x y)))))
(fma.f64 (neg.f64 x) y x)
(* -1 (* y (+ x (* -1 (/ x y)))))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (+ 1 (* -1 y)))
(fma.f64 (neg.f64 x) y x)
(* x (+ 1 (* -1 y)))
(fma.f64 (neg.f64 x) y x)
(* x (+ 1 (* -1 y)))
(fma.f64 (neg.f64 x) y x)
(* x (+ 1 (* -1 y)))
(fma.f64 (neg.f64 x) y x)
(* -1 x)
(neg.f64 x)
(* -1 x)
(neg.f64 x)
(* -1 x)
(neg.f64 x)
(* -1 x)
(neg.f64 x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (+ 1 (* -1 y)))
(fma.f64 (neg.f64 x) y x)
(* x (+ 1 (* -1 y)))
(fma.f64 (neg.f64 x) y x)
(* x (+ 1 (* -1 y)))
(fma.f64 (neg.f64 x) y x)
(* x (+ 1 (* -1 y)))
(fma.f64 (neg.f64 x) y x)
(* -1 x)
(neg.f64 x)
(* -1 x)
(neg.f64 x)
(* -1 x)
(neg.f64 x)
(* -1 x)
(neg.f64 x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* -1 (* x (- y 1)))
(fma.f64 (neg.f64 x) y x)
(* -1 (* x (- y 1)))
(fma.f64 (neg.f64 x) y x)
(* -1 (* x (- y 1)))
(fma.f64 (neg.f64 x) y x)
(* -1 (* x (- y 1)))
(fma.f64 (neg.f64 x) y x)
(* -1 x)
(neg.f64 x)
(* -1 x)
(neg.f64 x)
(* -1 x)
(neg.f64 x)
(* -1 x)
(neg.f64 x)

rewrite230.0ms (5.3%)

Memory
-15.1MiB live, 124.9MiB allocated
Rules
3 246×lower-fma.f32
3 244×lower-fma.f64
2 912×lower-/.f64
2 912×lower-/.f32
2 358×lower-*.f32
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01135
01735
15635
232235
3309730
0970130
Stop Event
iter limit
node limit
iter limit
Counts
7 → 191
Calls
Call 1
Inputs
(*.f64 x #s(approx (- 1 y) #s(literal 1 binary64)))
#s(approx (- 1 y) #s(literal 1 binary64))
(*.f64 x #s(approx (- 1 y) (neg.f64 y)))
#s(approx (- 1 y) (neg.f64 y))
(neg.f64 y)
(fma.f64 (neg.f64 x) y x)
(neg.f64 x)
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>

eval177.0ms (4.1%)

Memory
-0.9MiB live, 78.7MiB allocated
Compiler

Compiled 4 098 to 503 computations (87.7% saved)

prune7.0ms (0.2%)

Memory
22.0MiB live, 22.0MiB allocated
Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New3071308
Fresh000
Picked033
Done000
Total3074311
Accuracy
100.0%
Counts
311 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 (neg.f64 x) y x)
2.7%
(*.f64 #s(approx (- 1 y) y) x)
48.5%
(*.f64 x #s(approx (- 1 y) (neg.f64 y)))
53.1%
(*.f64 x #s(approx (- 1 y) #s(literal 1 binary64)))
Compiler

Compiled 18 to 18 computations (0% saved)

simplify57.0ms (1.3%)

Memory
-22.6MiB live, 14.8MiB allocated
Algorithm
egg-herbie
Localize:

Found 2 expressions of interest:

NewMetricScoreProgram
cost-diff0
#s(approx (- 1 y) y)
cost-diff0
(*.f64 #s(approx (- 1 y) y) x)
Rules
24×lower-+.f64
24×lower-+.f32
18×lower--.f64
18×lower--.f32
16×sub-neg
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0614
0714
11214
21614
32114
42814
53614
64614
75714
86014
06014
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
(*.f64 #s(approx (- 1 y) y) x)
#s(approx (- 1 y) y)
y
x
Outputs
(*.f64 #s(approx (- 1 y) y) x)
(*.f64 x #s(approx (- 1 y) y))
#s(approx (- 1 y) y)
y
x

localize15.0ms (0.3%)

Memory
2.8MiB live, 42.0MiB allocated
Localize:

Found 2 expressions of interest:

NewMetricScoreProgram
accuracy0.0078125
(*.f64 #s(approx (- 1 y) y) x)
accuracy62.46178362802507
#s(approx (- 1 y) y)
Samples
10.0ms256×0valid
Compiler

Compiled 12 to 7 computations (41.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 3.0ms
ival-mult: 2.0ms (59.9% of total)
ival-sub: 1.0ms (30% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series2.0ms (0%)

Memory
6.8MiB live, 6.8MiB allocated
Counts
2 → 36
Calls
Call 1
Inputs
#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())
#s(alt #s(approx (- 1 y) y) (patch #s(approx (- 1 y) y) #<representation binary64>) () ())
Outputs
#s(alt x (taylor 0 y) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (+ x (* -1 (* x y))) (taylor 0 y) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (+ x (* -1 (* x y))) (taylor 0 y) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (+ x (* -1 (* x y))) (taylor 0 y) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt 1 (taylor 0 y) (#s(alt #s(approx (- 1 y) y) (patch #s(approx (- 1 y) y) #<representation binary64>) () ())) ())
#s(alt (+ 1 (* -1 y)) (taylor 0 y) (#s(alt #s(approx (- 1 y) y) (patch #s(approx (- 1 y) y) #<representation binary64>) () ())) ())
#s(alt (+ 1 (* -1 y)) (taylor 0 y) (#s(alt #s(approx (- 1 y) y) (patch #s(approx (- 1 y) y) #<representation binary64>) () ())) ())
#s(alt (+ 1 (* -1 y)) (taylor 0 y) (#s(alt #s(approx (- 1 y) y) (patch #s(approx (- 1 y) y) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x y)) (taylor inf y) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1 x) (/ x y))) (taylor inf y) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1 x) (/ x y))) (taylor inf y) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (* y (+ (* -1 x) (/ x y))) (taylor inf y) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (* -1 y) (taylor inf y) (#s(alt #s(approx (- 1 y) y) (patch #s(approx (- 1 y) y) #<representation binary64>) () ())) ())
#s(alt (* y (- (/ 1 y) 1)) (taylor inf y) (#s(alt #s(approx (- 1 y) y) (patch #s(approx (- 1 y) y) #<representation binary64>) () ())) ())
#s(alt (* y (- (/ 1 y) 1)) (taylor inf y) (#s(alt #s(approx (- 1 y) y) (patch #s(approx (- 1 y) y) #<representation binary64>) () ())) ())
#s(alt (* y (- (/ 1 y) 1)) (taylor inf y) (#s(alt #s(approx (- 1 y) y) (patch #s(approx (- 1 y) y) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x y)) (taylor -inf y) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ x (* -1 (/ x y))))) (taylor -inf y) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ x (* -1 (/ x y))))) (taylor -inf y) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (+ x (* -1 (/ x y))))) (taylor -inf y) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (* -1 y) (taylor -inf y) (#s(alt #s(approx (- 1 y) y) (patch #s(approx (- 1 y) y) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (- 1 (/ 1 y)))) (taylor -inf y) (#s(alt #s(approx (- 1 y) y) (patch #s(approx (- 1 y) y) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (- 1 (/ 1 y)))) (taylor -inf y) (#s(alt #s(approx (- 1 y) y) (patch #s(approx (- 1 y) y) #<representation binary64>) () ())) ())
#s(alt (* -1 (* y (- 1 (/ 1 y)))) (taylor -inf y) (#s(alt #s(approx (- 1 y) y) (patch #s(approx (- 1 y) y) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor 0 x) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor 0 x) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor 0 x) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor 0 x) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor inf x) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor inf x) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor inf x) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor inf x) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor -inf x) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor -inf x) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor -inf x) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
#s(alt (* x (- 1 y)) (taylor -inf x) (#s(alt (*.f64 #s(approx (- 1 y) y) x) (patch (*.f64 #s(approx (- 1 y) y) x) #<representation binary64>) () ())) ())
Calls

6 calls:

TimeVariablePointExpression
0.0ms
x
@-inf
((* (- 1 y) x) (- 1 y))
0.0ms
y
@-inf
((* (- 1 y) x) (- 1 y))
0.0ms
y
@inf
((* (- 1 y) x) (- 1 y))
0.0ms
x
@inf
((* (- 1 y) x) (- 1 y))
0.0ms
x
@0
((* (- 1 y) x) (- 1 y))

simplify231.0ms (5.3%)

Memory
2.1MiB live, 159.7MiB allocated
Algorithm
egg-herbie
Rules
8 840×lower-fma.f64
8 840×lower-fma.f32
2 370×lower-*.f64
2 370×lower-*.f32
2 096×lower-/.f32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
025167
169146
2160146
3294146
4858146
52435146
63645146
74189146
84362146
94399146
104431146
115099146
125547146
135648146
145668146
155678146
165684146
175684146
185688146
195692146
206668146
08367146
Stop Event
iter limit
node limit
Counts
36 → 35
Calls
Call 1
Inputs
x
(+ x (* -1 (* x y)))
(+ x (* -1 (* x y)))
(+ x (* -1 (* x y)))
1
(+ 1 (* -1 y))
(+ 1 (* -1 y))
(+ 1 (* -1 y))
(* -1 (* x y))
(* y (+ (* -1 x) (/ x y)))
(* y (+ (* -1 x) (/ x y)))
(* y (+ (* -1 x) (/ x y)))
(* -1 y)
(* y (- (/ 1 y) 1))
(* y (- (/ 1 y) 1))
(* y (- (/ 1 y) 1))
(* -1 (* x y))
(* -1 (* y (+ x (* -1 (/ x y)))))
(* -1 (* y (+ x (* -1 (/ x y)))))
(* -1 (* y (+ x (* -1 (/ x y)))))
(* -1 y)
(* -1 (* y (- 1 (/ 1 y))))
(* -1 (* y (- 1 (/ 1 y))))
(* -1 (* y (- 1 (/ 1 y))))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
(* x (- 1 y))
Outputs
x
(+ x (* -1 (* x y)))
(fma.f64 (neg.f64 x) y x)
(+ x (* -1 (* x y)))
(fma.f64 (neg.f64 x) y x)
(+ x (* -1 (* x y)))
(fma.f64 (neg.f64 x) y x)
1
#s(literal 1 binary64)
(+ 1 (* -1 y))
(-.f64 #s(literal 1 binary64) y)
(+ 1 (* -1 y))
(-.f64 #s(literal 1 binary64) y)
(+ 1 (* -1 y))
(-.f64 #s(literal 1 binary64) y)
(* -1 (* x y))
(*.f64 (neg.f64 x) y)
(* y (+ (* -1 x) (/ x y)))
(fma.f64 (neg.f64 x) y x)
(* y (+ (* -1 x) (/ x y)))
(fma.f64 (neg.f64 x) y x)
(* y (+ (* -1 x) (/ x y)))
(fma.f64 (neg.f64 x) y x)
(* -1 y)
(neg.f64 y)
(* y (- (/ 1 y) 1))
(-.f64 #s(literal 1 binary64) y)
(* y (- (/ 1 y) 1))
(-.f64 #s(literal 1 binary64) y)
(* y (- (/ 1 y) 1))
(-.f64 #s(literal 1 binary64) y)
(* -1 (* x y))
(*.f64 (neg.f64 x) y)
(* -1 (* y (+ x (* -1 (/ x y)))))
(fma.f64 (neg.f64 x) y x)
(* -1 (* y (+ x (* -1 (/ x y)))))
(fma.f64 (neg.f64 x) y x)
(* -1 (* y (+ x (* -1 (/ x y)))))
(fma.f64 (neg.f64 x) y x)
(* -1 y)
(neg.f64 y)
(* -1 (* y (- 1 (/ 1 y))))
(-.f64 #s(literal 1 binary64) y)
(* -1 (* y (- 1 (/ 1 y))))
(-.f64 #s(literal 1 binary64) y)
(* -1 (* y (- 1 (/ 1 y))))
(-.f64 #s(literal 1 binary64) y)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)
(* x (- 1 y))
(fma.f64 (neg.f64 x) y x)

rewrite149.0ms (3.4%)

Memory
-13.4MiB live, 261.6MiB allocated
Rules
6 148×lower-fma.f64
6 148×lower-fma.f32
2 936×lower-/.f64
2 936×lower-/.f32
2 906×lower-*.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0612
0712
12512
213112
3100112
0989612
Stop Event
iter limit
node limit
iter limit
Counts
2 → 3
Calls
Call 1
Inputs
(*.f64 #s(approx (- 1 y) y) x)
#s(approx (- 1 y) y)
Outputs
#<batchref>
#<batchref>
#<batchref>

eval3.0ms (0.1%)

Memory
10.2MiB live, 10.2MiB allocated
Compiler

Compiled 216 to 19 computations (91.2% saved)

prune3.0ms (0.1%)

Memory
9.7MiB live, 9.7MiB allocated
Pruning

4 alts after pruning (0 fresh and 4 done)

PrunedKeptTotal
New38038
Fresh000
Picked011
Done033
Total38442
Accuracy
100.0%
Counts
42 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 (neg.f64 x) y x)
2.7%
(*.f64 #s(approx (- 1 y) y) x)
48.5%
(*.f64 x #s(approx (- 1 y) (neg.f64 y)))
53.1%
(*.f64 x #s(approx (- 1 y) #s(literal 1 binary64)))
Compiler

Compiled 41 to 32 computations (22% saved)

regimes11.0ms (0.3%)

Memory
-7.5MiB live, 30.6MiB allocated
Counts
5 → 1
Calls
Call 1
Inputs
(*.f64 x #s(approx (- 1 y) #s(literal 1 binary64)))
(*.f64 #s(approx (- 1 y) y) x)
(*.f64 x #s(approx (- 1 y) (neg.f64 y)))
(*.f64 x (-.f64 #s(literal 1 binary64) y))
(fma.f64 (neg.f64 x) y x)
Outputs
(fma.f64 (neg.f64 x) y x)
Calls

4 calls:

4.0ms
y
2.0ms
(*.f64 x (-.f64 #s(literal 1 binary64) y))
2.0ms
x
2.0ms
(-.f64 #s(literal 1 binary64) y)
Results
AccuracySegmentsBranch
100.0%1x
100.0%1y
100.0%1(*.f64 x (-.f64 #s(literal 1 binary64) y))
100.0%1(-.f64 #s(literal 1 binary64) y)
Compiler

Compiled 10 to 13 computations (-30% saved)

regimes10.0ms (0.2%)

Memory
-9.9MiB live, 28.6MiB allocated
Counts
4 → 1
Calls
Call 1
Inputs
(*.f64 x #s(approx (- 1 y) #s(literal 1 binary64)))
(*.f64 #s(approx (- 1 y) y) x)
(*.f64 x #s(approx (- 1 y) (neg.f64 y)))
(*.f64 x (-.f64 #s(literal 1 binary64) y))
Outputs
(*.f64 x (-.f64 #s(literal 1 binary64) y))
Calls

4 calls:

4.0ms
x
2.0ms
y
2.0ms
(*.f64 x (-.f64 #s(literal 1 binary64) y))
2.0ms
(-.f64 #s(literal 1 binary64) y)
Results
AccuracySegmentsBranch
100.0%1x
100.0%1y
100.0%1(*.f64 x (-.f64 #s(literal 1 binary64) y))
100.0%1(-.f64 #s(literal 1 binary64) y)
Compiler

Compiled 10 to 13 computations (-30% saved)

regimes8.0ms (0.2%)

Memory
25.3MiB live, 25.3MiB allocated
Counts
3 → 3
Calls
Call 1
Inputs
(*.f64 x #s(approx (- 1 y) #s(literal 1 binary64)))
(*.f64 #s(approx (- 1 y) y) x)
(*.f64 x #s(approx (- 1 y) (neg.f64 y)))
Outputs
(*.f64 x #s(approx (- 1 y) (neg.f64 y)))
(*.f64 x #s(approx (- 1 y) #s(literal 1 binary64)))
(*.f64 x #s(approx (- 1 y) (neg.f64 y)))
Calls

4 calls:

2.0ms
(*.f64 x (-.f64 #s(literal 1 binary64) y))
2.0ms
x
2.0ms
y
2.0ms
(-.f64 #s(literal 1 binary64) y)
Results
AccuracySegmentsBranch
62.7%5x
97.6%3y
84.4%3(*.f64 x (-.f64 #s(literal 1 binary64) y))
97.6%3(-.f64 #s(literal 1 binary64) y)
Compiler

Compiled 10 to 13 computations (-30% saved)

regimes11.0ms (0.3%)

Memory
-19.9MiB live, 22.0MiB allocated
Accuracy

Total -32.2b remaining (-107.3%)

Threshold costs -32.2b (-107.3%)

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

4 calls:

6.0ms
(*.f64 x (-.f64 #s(literal 1 binary64) y))
2.0ms
y
2.0ms
x
1.0ms
(-.f64 #s(literal 1 binary64) y)
Results
AccuracySegmentsBranch
53.1%1x
53.1%1(*.f64 x (-.f64 #s(literal 1 binary64) y))
53.1%1y
53.1%1(-.f64 #s(literal 1 binary64) y)
Compiler

Compiled 10 to 13 computations (-30% saved)

bsearch1.0ms (0%)

Memory
1.9MiB live, 1.9MiB allocated
Algorithm
left-value
Steps
TimeLeftRight
0.0ms
1.2695292494094057
533.6416129294325
0.0ms
-1.2495571554999126e+27
0.01758263818543848
Compiler

Compiled 8 to 10 computations (-25% saved)

simplify28.0ms (0.6%)

Memory
2.4MiB live, 76.4MiB allocated
Algorithm
egg-herbie
Rules
10×*-commutative-binary64-*.f64
+-commutative-binary64-+.f64
sub-neg-binary64-neg.f64-+.f64--.f64
neg-sub0-binary64--.f64-neg.f64
neg-mul-1-binary64-*.f64-neg.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01952
13152
23652
33852
Stop Event
saturated
Calls
Call 1
Inputs
(fma.f64 (neg.f64 x) y x)
(*.f64 x (-.f64 #s(literal 1 binary64) y))
(if (<=.f64 (-.f64 #s(literal 1 binary64) y) #s(literal -1000000000000000013287555072 binary64)) (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (if (<=.f64 (-.f64 #s(literal 1 binary64) y) #s(literal 2 binary64)) (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (*.f64 x #s(approx (- 1 y) (neg.f64 y)))))
(*.f64 x #s(approx (- 1 y) #s(literal 1 binary64)))
Outputs
(fma.f64 (neg.f64 x) y x)
(*.f64 x (-.f64 #s(literal 1 binary64) y))
(*.f64 (-.f64 #s(literal 1 binary64) y) x)
(if (<=.f64 (-.f64 #s(literal 1 binary64) y) #s(literal -1000000000000000013287555072 binary64)) (*.f64 x #s(approx (- 1 y) (neg.f64 y))) (if (<=.f64 (-.f64 #s(literal 1 binary64) y) #s(literal 2 binary64)) (*.f64 x #s(approx (- 1 y) #s(literal 1 binary64))) (*.f64 x #s(approx (- 1 y) (neg.f64 y)))))
(if (<=.f64 (-.f64 #s(literal 1 binary64) y) #s(literal -1000000000000000013287555072 binary64)) (*.f64 #s(approx (- 1 y) (neg.f64 y)) x) (if (<=.f64 (-.f64 #s(literal 1 binary64) y) #s(literal 2 binary64)) (*.f64 #s(approx (- 1 y) #s(literal 1 binary64)) x) (*.f64 #s(approx (- 1 y) (neg.f64 y)) x)))
(*.f64 x #s(approx (- 1 y) #s(literal 1 binary64)))
(*.f64 #s(approx (- 1 y) #s(literal 1 binary64)) x)

soundness1.0s (23.8%)

Memory
1.3MiB live, 278.6MiB allocated
Rules
8 840×lower-fma.f64
8 840×lower-fma.f32
4 132×lower-fma.f64
4 132×lower-fma.f32
3 294×lower-/.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
025167
169146
2160146
3294146
4858146
52435146
63645146
74189146
84362146
94399146
104431146
115099146
125547146
135648146
145668146
155678146
165684146
175684146
185688146
195692146
206668146
08367146
058
078
1258
21458
311498
098947
Stop Event
done
iter limit
node limit
iter limit
iter limit
node limit
Compiler

Compiled 60 to 37 computations (38.3% saved)

preprocess52.0ms (1.2%)

Memory
24.4MiB live, 101.7MiB allocated
Remove

(negabs x)

Compiler

Compiled 120 to 70 computations (41.7% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...