Expression, p6

Time bar (total: 5.2s)

analyze0.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%0%100%0%0%0%0
100%0%0%100%0%0%0%1
Compiler

Compiled 44 to 32 computations (27.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 0.0ms
ival-add: 0.0ms (0% of total)
ival-and: 0.0ms (0% of total)
ival-mult: 0.0ms (0% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)
ival-<=: 0.0ms (0% of total)

sample1.7s (32.7%)

Results
1.2s8256×0valid
Precisions
Click to see histograms. Total time spent on operations: 689.0ms
ival-<=: 289.0ms (42% of total)
ival-add: 213.0ms (30.9% of total)
ival-mult: 84.0ms (12.2% of total)
ival-and: 66.0ms (9.6% of total)
const: 32.0ms (4.6% of total)
backward-pass: 3.0ms (0.4% of total)
Bogosity

preprocess88.0ms (1.7%)

Algorithm
egg-herbie
Rules
1606×fma-define
1512×distribute-rgt-in
1424×distribute-lft-in
1026×associate--r+
898×sub-neg
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
053141
1154113
2560113
32508113
47121113
099
1177
2627
32027
44777
56187
66337
06337
Stop Event
iter limit
saturated
node limit
Calls
Call 1
Inputs
(* (+ a (+ b (+ c d))) 2)
Outputs
(* (+ a (+ b (+ c d))) 2)
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
Call 2
Inputs
(* (+ a (+ b (+ c d))) 2)
(* (+ (neg a) (+ b (+ c d))) 2)
(* (+ a (+ (neg b) (+ c d))) 2)
(* (+ a (+ b (+ (neg c) d))) 2)
(* (+ a (+ b (+ c (neg d)))) 2)
(neg (* (+ (neg a) (+ b (+ c d))) 2))
(neg (* (+ a (+ (neg b) (+ c d))) 2))
(neg (* (+ a (+ b (+ (neg c) d))) 2))
(neg (* (+ a (+ b (+ c (neg d)))) 2))
(* (+ b (+ a (+ c d))) 2)
(* (+ c (+ b (+ a d))) 2)
(* (+ d (+ b (+ c a))) 2)
(* (+ a (+ c (+ b d))) 2)
(* (+ a (+ d (+ c b))) 2)
(* (+ a (+ b (+ d c))) 2)
Outputs
(* (+ a (+ b (+ c d))) 2)
(* 2 (sum4 a b c d))
(* (+ (neg a) (+ b (+ c d))) 2)
(* 2 (sum4 b c d (neg a)))
(* (+ a (+ (neg b) (+ c d))) 2)
(* 2 (sum4 a (neg b) c d))
(* (+ a (+ b (+ (neg c) d))) 2)
(* 2 (- (sum3 a b d) c))
(* (+ a (+ b (+ c (neg d)))) 2)
(* 2 (sum4 a b c (neg d)))
(neg (* (+ (neg a) (+ b (+ c d))) 2))
(* (sum4 b c d (neg a)) -2)
(neg (* (+ a (+ (neg b) (+ c d))) 2))
(* 2 (- b (sum3 a c d)))
(neg (* (+ a (+ b (+ (neg c) d))) 2))
(* 2 (- c (sum3 a b d)))
(neg (* (+ a (+ b (+ c (neg d)))) 2))
(* (sum4 a b c (neg d)) -2)
(* (+ b (+ a (+ c d))) 2)
(* 2 (sum4 a b c d))
(* (+ c (+ b (+ a d))) 2)
(* 2 (sum4 a b c d))
(* (+ d (+ b (+ c a))) 2)
(* 2 (sum4 a b c d))
(* (+ a (+ c (+ b d))) 2)
(* 2 (sum4 a b c d))
(* (+ a (+ d (+ c b))) 2)
(* 2 (sum4 a b c d))
(* (+ a (+ b (+ d c))) 2)
(* 2 (sum4 a b c d))
Symmetry

(sort a b c d)

explain151.0ms (2.9%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
8211(-13.742865024207138 -2.6085331566769527 3.068154098839874 13.280911988289892)42(-13.62136324828589 -2.318180591464764 3.161088525448294 12.579914950516743)(+.f64 a (+.f64 b (+.f64 c d)))
00-0-b
00-0-#s(literal 2 binary64)
00-0-c
00-0-(+.f64 b (+.f64 c d))
00-0-(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
00-0-d
00-0-(+.f64 c d)
00-0-a
Results
60.0ms512×0valid
Compiler

Compiled 81 to 29 computations (64.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 15.0ms
ival-add: 11.0ms (72.9% of total)
ival-mult: 3.0ms (19.9% of total)
const: 1.0ms (6.6% of total)
backward-pass: 0.0ms (0% of total)

eval0.0ms (0%)

Compiler

Compiled 13 to 9 computations (30.8% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
94.2%
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
Compiler

Compiled 13 to 9 computations (30.8% saved)

simplify18.0ms (0.3%)

Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(+.f64 c d)
cost-diff0
(+.f64 b (+.f64 c d))
cost-diff0
(+.f64 a (+.f64 b (+.f64 c d)))
cost-diff0
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
Rules
288×sum3-define
228×fma-define
200×fma-lowering-fma.f32
200×+-lowering-+.f64
200×+-lowering-+.f32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0929
11724
26224
320224
447724
561824
663324
063324
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* (+ a (+ b (+ c d))) 2)
(+ a (+ b (+ c d)))
a
(+ b (+ c d))
b
(+ c d)
c
d
2
Outputs
(* (+ a (+ b (+ c d))) 2)
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
(+ a (+ b (+ c d)))
(+.f64 a (+.f64 b (+.f64 c d)))
a
(+ b (+ c d))
(+.f64 b (+.f64 c d))
b
(+ c d)
(+.f64 c d)
c
d
2
#s(literal 2 binary64)

localize38.0ms (0.7%)

Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(+.f64 c d)
accuracy100.0%
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
accuracy99.4%
(+.f64 b (+.f64 c d))
accuracy95.4%
(+.f64 a (+.f64 b (+.f64 c d)))
Results
30.0ms256×0valid
Compiler

Compiled 34 to 10 computations (70.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 6.0ms
ival-add: 4.0ms (68.5% of total)
ival-mult: 2.0ms (34.2% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series8.0ms (0.2%)

Counts
4 → 156
Calls
Call 1
Inputs
#<alt (* (+ a (+ b (+ c d))) 2)>
#<alt (+ a (+ b (+ c d)))>
#<alt (+ b (+ c d))>
#<alt (+ c d)>
Outputs
#<alt (* 2 (+ b (+ c d)))>
#<alt (+ (* 2 a) (* 2 (+ b (+ c d))))>
#<alt (+ (* 2 a) (* 2 (+ b (+ c d))))>
#<alt (+ (* 2 a) (* 2 (+ b (+ c d))))>
#<alt (* 2 a)>
#<alt (* a (+ 2 (* 2 (/ (+ b (+ c d)) a))))>
#<alt (* a (+ 2 (* 2 (/ (+ b (+ c d)) a))))>
#<alt (* a (+ 2 (* 2 (/ (+ b (+ c d)) a))))>
#<alt (* 2 a)>
#<alt (* -1 (* a (- (* -2 (/ (+ b (+ c d)) a)) 2)))>
#<alt (* -1 (* a (- (* -2 (/ (+ b (+ c d)) a)) 2)))>
#<alt (* -1 (* a (- (* -2 (/ (+ b (+ c d)) a)) 2)))>
#<alt (* 2 (+ a (+ c d)))>
#<alt (+ (* 2 b) (* 2 (+ a (+ c d))))>
#<alt (+ (* 2 b) (* 2 (+ a (+ c d))))>
#<alt (+ (* 2 b) (* 2 (+ a (+ c d))))>
#<alt (* 2 b)>
#<alt (* b (+ 2 (* 2 (/ (+ a (+ c d)) b))))>
#<alt (* b (+ 2 (* 2 (/ (+ a (+ c d)) b))))>
#<alt (* b (+ 2 (* 2 (/ (+ a (+ c d)) b))))>
#<alt (* 2 b)>
#<alt (* -1 (* b (- (* -2 (/ (+ a (+ c d)) b)) 2)))>
#<alt (* -1 (* b (- (* -2 (/ (+ a (+ c d)) b)) 2)))>
#<alt (* -1 (* b (- (* -2 (/ (+ a (+ c d)) b)) 2)))>
#<alt (* 2 (+ a (+ b d)))>
#<alt (+ (* 2 c) (* 2 (+ a (+ b d))))>
#<alt (+ (* 2 c) (* 2 (+ a (+ b d))))>
#<alt (+ (* 2 c) (* 2 (+ a (+ b d))))>
#<alt (* 2 c)>
#<alt (* c (+ 2 (* 2 (/ (+ a (+ b d)) c))))>
#<alt (* c (+ 2 (* 2 (/ (+ a (+ b d)) c))))>
#<alt (* c (+ 2 (* 2 (/ (+ a (+ b d)) c))))>
#<alt (* 2 c)>
#<alt (* -1 (* c (- (* -2 (/ (+ a (+ b d)) c)) 2)))>
#<alt (* -1 (* c (- (* -2 (/ (+ a (+ b d)) c)) 2)))>
#<alt (* -1 (* c (- (* -2 (/ (+ a (+ b d)) c)) 2)))>
#<alt (* 2 (+ a (+ b c)))>
#<alt (+ (* 2 d) (* 2 (+ a (+ b c))))>
#<alt (+ (* 2 d) (* 2 (+ a (+ b c))))>
#<alt (+ (* 2 d) (* 2 (+ a (+ b c))))>
#<alt (* 2 d)>
#<alt (* d (+ 2 (* 2 (/ (+ a (+ b c)) d))))>
#<alt (* d (+ 2 (* 2 (/ (+ a (+ b c)) d))))>
#<alt (* d (+ 2 (* 2 (/ (+ a (+ b c)) d))))>
#<alt (* 2 d)>
#<alt (* -1 (* d (- (* -2 (/ (+ a (+ b c)) d)) 2)))>
#<alt (* -1 (* d (- (* -2 (/ (+ a (+ b c)) d)) 2)))>
#<alt (* -1 (* d (- (* -2 (/ (+ a (+ b c)) d)) 2)))>
#<alt (+ b (+ c d))>
#<alt (+ a (+ b (+ c d)))>
#<alt (+ a (+ b (+ c d)))>
#<alt (+ a (+ b (+ c d)))>
#<alt a>
#<alt (* a (+ 1 (+ (/ b a) (+ (/ c a) (/ d a)))))>
#<alt (* a (+ 1 (+ (/ b a) (+ (/ c a) (/ d a)))))>
#<alt (* a (+ 1 (+ (/ b a) (+ (/ c a) (/ d a)))))>
#<alt a>
#<alt (* -1 (* a (- (* -1 (/ (+ b (+ c d)) a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ (+ b (+ c d)) a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ (+ b (+ c d)) a)) 1)))>
#<alt (+ a (+ c d))>
#<alt (+ a (+ b (+ c d)))>
#<alt (+ a (+ b (+ c d)))>
#<alt (+ a (+ b (+ c d)))>
#<alt b>
#<alt (* b (+ 1 (+ (/ a b) (+ (/ c b) (/ d b)))))>
#<alt (* b (+ 1 (+ (/ a b) (+ (/ c b) (/ d b)))))>
#<alt (* b (+ 1 (+ (/ a b) (+ (/ c b) (/ d b)))))>
#<alt b>
#<alt (* -1 (* b (- (* -1 (/ (+ a (+ c d)) b)) 1)))>
#<alt (* -1 (* b (- (* -1 (/ (+ a (+ c d)) b)) 1)))>
#<alt (* -1 (* b (- (* -1 (/ (+ a (+ c d)) b)) 1)))>
#<alt (+ a (+ b d))>
#<alt (+ a (+ b (+ c d)))>
#<alt (+ a (+ b (+ c d)))>
#<alt (+ a (+ b (+ c d)))>
#<alt c>
#<alt (* c (+ 1 (+ (/ a c) (+ (/ b c) (/ d c)))))>
#<alt (* c (+ 1 (+ (/ a c) (+ (/ b c) (/ d c)))))>
#<alt (* c (+ 1 (+ (/ a c) (+ (/ b c) (/ d c)))))>
#<alt c>
#<alt (* -1 (* c (- (* -1 (/ (+ a (+ b d)) c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ (+ a (+ b d)) c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ (+ a (+ b d)) c)) 1)))>
#<alt (+ a (+ b c))>
#<alt (+ a (+ b (+ c d)))>
#<alt (+ a (+ b (+ c d)))>
#<alt (+ a (+ b (+ c d)))>
#<alt d>
#<alt (* d (+ 1 (+ (/ a d) (+ (/ b d) (/ c d)))))>
#<alt (* d (+ 1 (+ (/ a d) (+ (/ b d) (/ c d)))))>
#<alt (* d (+ 1 (+ (/ a d) (+ (/ b d) (/ c d)))))>
#<alt d>
#<alt (* -1 (* d (- (* -1 (/ (+ a (+ b c)) d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ (+ a (+ b c)) d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ (+ a (+ b c)) d)) 1)))>
#<alt (+ c d)>
#<alt (+ b (+ c d))>
#<alt (+ b (+ c d))>
#<alt (+ b (+ c d))>
#<alt b>
#<alt (* b (+ 1 (+ (/ c b) (/ d b))))>
#<alt (* b (+ 1 (+ (/ c b) (/ d b))))>
#<alt (* b (+ 1 (+ (/ c b) (/ d b))))>
#<alt b>
#<alt (* -1 (* b (- (* -1 (/ (+ c d) b)) 1)))>
#<alt (* -1 (* b (- (* -1 (/ (+ c d) b)) 1)))>
#<alt (* -1 (* b (- (* -1 (/ (+ c d) b)) 1)))>
#<alt (+ b d)>
#<alt (+ b (+ c d))>
#<alt (+ b (+ c d))>
#<alt (+ b (+ c d))>
#<alt c>
#<alt (* c (+ 1 (+ (/ b c) (/ d c))))>
#<alt (* c (+ 1 (+ (/ b c) (/ d c))))>
#<alt (* c (+ 1 (+ (/ b c) (/ d c))))>
#<alt c>
#<alt (* -1 (* c (- (* -1 (/ (+ b d) c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ (+ b d) c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ (+ b d) c)) 1)))>
#<alt (+ b c)>
#<alt (+ b (+ c d))>
#<alt (+ b (+ c d))>
#<alt (+ b (+ c d))>
#<alt d>
#<alt (* d (+ 1 (+ (/ b d) (/ c d))))>
#<alt (* d (+ 1 (+ (/ b d) (/ c d))))>
#<alt (* d (+ 1 (+ (/ b d) (/ c d))))>
#<alt d>
#<alt (* -1 (* d (- (* -1 (/ (+ b c) d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ (+ b c) d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ (+ b c) d)) 1)))>
#<alt d>
#<alt (+ c d)>
#<alt (+ c d)>
#<alt (+ c d)>
#<alt c>
#<alt (* c (+ 1 (/ d c)))>
#<alt (* c (+ 1 (/ d c)))>
#<alt (* c (+ 1 (/ d c)))>
#<alt c>
#<alt (* -1 (* c (- (* -1 (/ d c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ d c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ d c)) 1)))>
#<alt c>
#<alt (+ c d)>
#<alt (+ c d)>
#<alt (+ c d)>
#<alt d>
#<alt (* d (+ 1 (/ c d)))>
#<alt (* d (+ 1 (/ c d)))>
#<alt (* d (+ 1 (/ c d)))>
#<alt d>
#<alt (* -1 (* d (- (* -1 (/ c d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ c d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ c d)) 1)))>
Calls

39 calls:

TimeVariablePointExpression
1.0ms
a
@0
(* (+ a (+ b (+ c d))) 2)
0.0ms
d
@inf
(+ a (+ b (+ c d)))
0.0ms
b
@-inf
(* (+ a (+ b (+ c d))) 2)
0.0ms
a
@inf
(* (+ a (+ b (+ c d))) 2)
0.0ms
a
@-inf
(* (+ a (+ b (+ c d))) 2)

rewrite48.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
288×sum3-define
228×fma-define
200×fma-lowering-fma.f32
200×+-lowering-+.f64
200×+-lowering-+.f32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0924
11719
26219
320219
447719
561819
663319
063319
Stop Event
iter limit
saturated
Counts
4 → 66
Calls
Call 1
Inputs
(* (+ a (+ b (+ c d))) 2)
(+ a (+ b (+ c d)))
(+ b (+ c d))
(+ c d)
Outputs
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 a b)) (*.f64 (+.f64 c d) #s(literal 2 binary64)))
(+.f64 (*.f64 (+.f64 c d) #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (+.f64 a b)))
(+.f64 (*.f64 a #s(literal 2 binary64)) (*.f64 (+.f64 b (+.f64 c d)) #s(literal 2 binary64)))
(+.f64 (*.f64 (+.f64 b (+.f64 c d)) #s(literal 2 binary64)) (*.f64 a #s(literal 2 binary64)))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 c d))) (*.f64 b #s(literal 2 binary64)))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 a d)) (*.f64 #s(literal 2 binary64) (+.f64 b c)))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 b c))) (*.f64 d #s(literal 2 binary64)))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 d (+.f64 a b))) (*.f64 c #s(literal 2 binary64)))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 b d)) (*.f64 #s(literal 2 binary64) (+.f64 a c)))
(+.f64 (*.f64 b #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 c d))))
(+.f64 (*.f64 c #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (+.f64 d (+.f64 a b))))
(+.f64 (*.f64 d #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 b c))))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 b c)) (*.f64 #s(literal 2 binary64) (+.f64 a d)))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 a c)) (*.f64 #s(literal 2 binary64) (+.f64 b d)))
(fma.f64 a #s(literal 2 binary64) (*.f64 (+.f64 b (+.f64 c d)) #s(literal 2 binary64)))
(fma.f64 b #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 c d))))
(fma.f64 c #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 d (+.f64 a b))))
(fma.f64 d #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 b c))))
(fma.f64 (+.f64 c d) #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 a b)))
(fma.f64 (+.f64 b (+.f64 c d)) #s(literal 2 binary64) (*.f64 a #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) a (*.f64 (+.f64 b (+.f64 c d)) #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) b (*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 c d))))
(fma.f64 #s(literal 2 binary64) c (*.f64 #s(literal 2 binary64) (+.f64 d (+.f64 a b))))
(fma.f64 #s(literal 2 binary64) d (*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 b c))))
(fma.f64 #s(literal 2 binary64) (+.f64 c d) (*.f64 #s(literal 2 binary64) (+.f64 a b)))
(fma.f64 #s(literal 2 binary64) (+.f64 b (+.f64 c d)) (*.f64 a #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) (+.f64 b c) (*.f64 #s(literal 2 binary64) (+.f64 a d)))
(fma.f64 #s(literal 2 binary64) (+.f64 a b) (*.f64 (+.f64 c d) #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) (+.f64 a (+.f64 b c)) (*.f64 d #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) (+.f64 d (+.f64 a b)) (*.f64 c #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) (+.f64 b d) (*.f64 #s(literal 2 binary64) (+.f64 a c)))
(fma.f64 #s(literal 2 binary64) (+.f64 a (+.f64 c d)) (*.f64 b #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) (+.f64 a d) (*.f64 #s(literal 2 binary64) (+.f64 b c)))
(fma.f64 #s(literal 2 binary64) (+.f64 a c) (*.f64 #s(literal 2 binary64) (+.f64 b d)))
(fma.f64 (+.f64 b c) #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 a d)))
(fma.f64 (+.f64 a b) #s(literal 2 binary64) (*.f64 (+.f64 c d) #s(literal 2 binary64)))
(fma.f64 (+.f64 a (+.f64 b c)) #s(literal 2 binary64) (*.f64 d #s(literal 2 binary64)))
(fma.f64 (+.f64 d (+.f64 a b)) #s(literal 2 binary64) (*.f64 c #s(literal 2 binary64)))
(fma.f64 (+.f64 b d) #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 a c)))
(fma.f64 (+.f64 a (+.f64 c d)) #s(literal 2 binary64) (*.f64 b #s(literal 2 binary64)))
(fma.f64 (+.f64 a d) #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 b c)))
(fma.f64 (+.f64 a c) #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 b d)))
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 b (+.f64 c d))))
(+.f64 a (+.f64 b (+.f64 c d)))
(+.f64 b (+.f64 a (+.f64 c d)))
(+.f64 c (+.f64 d (+.f64 a b)))
(+.f64 d (+.f64 a (+.f64 b c)))
(+.f64 (+.f64 c d) (+.f64 a b))
(+.f64 (+.f64 b (+.f64 c d)) a)
(+.f64 (+.f64 b c) (+.f64 a d))
(+.f64 (+.f64 a b) (+.f64 c d))
(+.f64 (+.f64 a (+.f64 b c)) d)
(+.f64 (+.f64 d (+.f64 a b)) c)
(+.f64 (+.f64 b d) (+.f64 a c))
(+.f64 (+.f64 a (+.f64 c d)) b)
(+.f64 (+.f64 a d) (+.f64 b c))
(+.f64 (+.f64 a c) (+.f64 b d))
(+.f64 b (+.f64 c d))
(+.f64 c (+.f64 b d))
(+.f64 d (+.f64 b c))
(+.f64 (+.f64 c d) b)
(+.f64 (+.f64 b c) d)
(+.f64 (+.f64 b d) c)
(+.f64 c d)
(+.f64 d c)

simplify331.0ms (6.4%)

Algorithm
egg-herbie
Rules
3186×*-lowering-*.f32
3186×*-lowering-*.f64
1866×fnmadd-define
1502×+-lowering-+.f64
1502×+-lowering-+.f32
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01371142
1466984
21468942
34969924
08414924
Stop Event
iter limit
node limit
Counts
156 → 156
Calls
Call 1
Inputs
(* 2 (+ b (+ c d)))
(+ (* 2 a) (* 2 (+ b (+ c d))))
(+ (* 2 a) (* 2 (+ b (+ c d))))
(+ (* 2 a) (* 2 (+ b (+ c d))))
(* 2 a)
(* a (+ 2 (* 2 (/ (+ b (+ c d)) a))))
(* a (+ 2 (* 2 (/ (+ b (+ c d)) a))))
(* a (+ 2 (* 2 (/ (+ b (+ c d)) a))))
(* 2 a)
(* -1 (* a (- (* -2 (/ (+ b (+ c d)) a)) 2)))
(* -1 (* a (- (* -2 (/ (+ b (+ c d)) a)) 2)))
(* -1 (* a (- (* -2 (/ (+ b (+ c d)) a)) 2)))
(* 2 (+ a (+ c d)))
(+ (* 2 b) (* 2 (+ a (+ c d))))
(+ (* 2 b) (* 2 (+ a (+ c d))))
(+ (* 2 b) (* 2 (+ a (+ c d))))
(* 2 b)
(* b (+ 2 (* 2 (/ (+ a (+ c d)) b))))
(* b (+ 2 (* 2 (/ (+ a (+ c d)) b))))
(* b (+ 2 (* 2 (/ (+ a (+ c d)) b))))
(* 2 b)
(* -1 (* b (- (* -2 (/ (+ a (+ c d)) b)) 2)))
(* -1 (* b (- (* -2 (/ (+ a (+ c d)) b)) 2)))
(* -1 (* b (- (* -2 (/ (+ a (+ c d)) b)) 2)))
(* 2 (+ a (+ b d)))
(+ (* 2 c) (* 2 (+ a (+ b d))))
(+ (* 2 c) (* 2 (+ a (+ b d))))
(+ (* 2 c) (* 2 (+ a (+ b d))))
(* 2 c)
(* c (+ 2 (* 2 (/ (+ a (+ b d)) c))))
(* c (+ 2 (* 2 (/ (+ a (+ b d)) c))))
(* c (+ 2 (* 2 (/ (+ a (+ b d)) c))))
(* 2 c)
(* -1 (* c (- (* -2 (/ (+ a (+ b d)) c)) 2)))
(* -1 (* c (- (* -2 (/ (+ a (+ b d)) c)) 2)))
(* -1 (* c (- (* -2 (/ (+ a (+ b d)) c)) 2)))
(* 2 (+ a (+ b c)))
(+ (* 2 d) (* 2 (+ a (+ b c))))
(+ (* 2 d) (* 2 (+ a (+ b c))))
(+ (* 2 d) (* 2 (+ a (+ b c))))
(* 2 d)
(* d (+ 2 (* 2 (/ (+ a (+ b c)) d))))
(* d (+ 2 (* 2 (/ (+ a (+ b c)) d))))
(* d (+ 2 (* 2 (/ (+ a (+ b c)) d))))
(* 2 d)
(* -1 (* d (- (* -2 (/ (+ a (+ b c)) d)) 2)))
(* -1 (* d (- (* -2 (/ (+ a (+ b c)) d)) 2)))
(* -1 (* d (- (* -2 (/ (+ a (+ b c)) d)) 2)))
(+ b (+ c d))
(+ a (+ b (+ c d)))
(+ a (+ b (+ c d)))
(+ a (+ b (+ c d)))
a
(* a (+ 1 (+ (/ b a) (+ (/ c a) (/ d a)))))
(* a (+ 1 (+ (/ b a) (+ (/ c a) (/ d a)))))
(* a (+ 1 (+ (/ b a) (+ (/ c a) (/ d a)))))
a
(* -1 (* a (- (* -1 (/ (+ b (+ c d)) a)) 1)))
(* -1 (* a (- (* -1 (/ (+ b (+ c d)) a)) 1)))
(* -1 (* a (- (* -1 (/ (+ b (+ c d)) a)) 1)))
(+ a (+ c d))
(+ a (+ b (+ c d)))
(+ a (+ b (+ c d)))
(+ a (+ b (+ c d)))
b
(* b (+ 1 (+ (/ a b) (+ (/ c b) (/ d b)))))
(* b (+ 1 (+ (/ a b) (+ (/ c b) (/ d b)))))
(* b (+ 1 (+ (/ a b) (+ (/ c b) (/ d b)))))
b
(* -1 (* b (- (* -1 (/ (+ a (+ c d)) b)) 1)))
(* -1 (* b (- (* -1 (/ (+ a (+ c d)) b)) 1)))
(* -1 (* b (- (* -1 (/ (+ a (+ c d)) b)) 1)))
(+ a (+ b d))
(+ a (+ b (+ c d)))
(+ a (+ b (+ c d)))
(+ a (+ b (+ c d)))
c
(* c (+ 1 (+ (/ a c) (+ (/ b c) (/ d c)))))
(* c (+ 1 (+ (/ a c) (+ (/ b c) (/ d c)))))
(* c (+ 1 (+ (/ a c) (+ (/ b c) (/ d c)))))
c
(* -1 (* c (- (* -1 (/ (+ a (+ b d)) c)) 1)))
(* -1 (* c (- (* -1 (/ (+ a (+ b d)) c)) 1)))
(* -1 (* c (- (* -1 (/ (+ a (+ b d)) c)) 1)))
(+ a (+ b c))
(+ a (+ b (+ c d)))
(+ a (+ b (+ c d)))
(+ a (+ b (+ c d)))
d
(* d (+ 1 (+ (/ a d) (+ (/ b d) (/ c d)))))
(* d (+ 1 (+ (/ a d) (+ (/ b d) (/ c d)))))
(* d (+ 1 (+ (/ a d) (+ (/ b d) (/ c d)))))
d
(* -1 (* d (- (* -1 (/ (+ a (+ b c)) d)) 1)))
(* -1 (* d (- (* -1 (/ (+ a (+ b c)) d)) 1)))
(* -1 (* d (- (* -1 (/ (+ a (+ b c)) d)) 1)))
(+ c d)
(+ b (+ c d))
(+ b (+ c d))
(+ b (+ c d))
b
(* b (+ 1 (+ (/ c b) (/ d b))))
(* b (+ 1 (+ (/ c b) (/ d b))))
(* b (+ 1 (+ (/ c b) (/ d b))))
b
(* -1 (* b (- (* -1 (/ (+ c d) b)) 1)))
(* -1 (* b (- (* -1 (/ (+ c d) b)) 1)))
(* -1 (* b (- (* -1 (/ (+ c d) b)) 1)))
(+ b d)
(+ b (+ c d))
(+ b (+ c d))
(+ b (+ c d))
c
(* c (+ 1 (+ (/ b c) (/ d c))))
(* c (+ 1 (+ (/ b c) (/ d c))))
(* c (+ 1 (+ (/ b c) (/ d c))))
c
(* -1 (* c (- (* -1 (/ (+ b d) c)) 1)))
(* -1 (* c (- (* -1 (/ (+ b d) c)) 1)))
(* -1 (* c (- (* -1 (/ (+ b d) c)) 1)))
(+ b c)
(+ b (+ c d))
(+ b (+ c d))
(+ b (+ c d))
d
(* d (+ 1 (+ (/ b d) (/ c d))))
(* d (+ 1 (+ (/ b d) (/ c d))))
(* d (+ 1 (+ (/ b d) (/ c d))))
d
(* -1 (* d (- (* -1 (/ (+ b c) d)) 1)))
(* -1 (* d (- (* -1 (/ (+ b c) d)) 1)))
(* -1 (* d (- (* -1 (/ (+ b c) d)) 1)))
d
(+ c d)
(+ c d)
(+ c d)
c
(* c (+ 1 (/ d c)))
(* c (+ 1 (/ d c)))
(* c (+ 1 (/ d c)))
c
(* -1 (* c (- (* -1 (/ d c)) 1)))
(* -1 (* c (- (* -1 (/ d c)) 1)))
(* -1 (* c (- (* -1 (/ d c)) 1)))
c
(+ c d)
(+ c d)
(+ c d)
d
(* d (+ 1 (/ c d)))
(* d (+ 1 (/ c d)))
(* d (+ 1 (/ c d)))
d
(* -1 (* d (- (* -1 (/ c d)) 1)))
(* -1 (* d (- (* -1 (/ c d)) 1)))
(* -1 (* d (- (* -1 (/ c d)) 1)))
Outputs
(* 2 (+ b (+ c d)))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 c d)))
(+ (* 2 a) (* 2 (+ b (+ c d))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(+ (* 2 a) (* 2 (+ b (+ c d))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(+ (* 2 a) (* 2 (+ b (+ c d))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* a (+ 2 (* 2 (/ (+ b (+ c d)) a))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* a (+ 2 (* 2 (/ (+ b (+ c d)) a))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* a (+ 2 (* 2 (/ (+ b (+ c d)) a))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* -1 (* a (- (* -2 (/ (+ b (+ c d)) a)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* -1 (* a (- (* -2 (/ (+ b (+ c d)) a)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* -1 (* a (- (* -2 (/ (+ b (+ c d)) a)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* 2 (+ a (+ c d)))
(*.f64 #s(literal 2 binary64) (+.f64 (+.f64 c d) a))
(+ (* 2 b) (* 2 (+ a (+ c d))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(+ (* 2 b) (* 2 (+ a (+ c d))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(+ (* 2 b) (* 2 (+ a (+ c d))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* 2 b)
(*.f64 #s(literal 2 binary64) b)
(* b (+ 2 (* 2 (/ (+ a (+ c d)) b))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* b (+ 2 (* 2 (/ (+ a (+ c d)) b))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* b (+ 2 (* 2 (/ (+ a (+ c d)) b))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* 2 b)
(*.f64 #s(literal 2 binary64) b)
(* -1 (* b (- (* -2 (/ (+ a (+ c d)) b)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* -1 (* b (- (* -2 (/ (+ a (+ c d)) b)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* -1 (* b (- (* -2 (/ (+ a (+ c d)) b)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* 2 (+ a (+ b d)))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 d a)))
(+ (* 2 c) (* 2 (+ a (+ b d))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(+ (* 2 c) (* 2 (+ a (+ b d))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(+ (* 2 c) (* 2 (+ a (+ b d))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* c (+ 2 (* 2 (/ (+ a (+ b d)) c))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* c (+ 2 (* 2 (/ (+ a (+ b d)) c))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* c (+ 2 (* 2 (/ (+ a (+ b d)) c))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* -1 (* c (- (* -2 (/ (+ a (+ b d)) c)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* -1 (* c (- (* -2 (/ (+ a (+ b d)) c)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* -1 (* c (- (* -2 (/ (+ a (+ b d)) c)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* 2 (+ a (+ b c)))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 c a)))
(+ (* 2 d) (* 2 (+ a (+ b c))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(+ (* 2 d) (* 2 (+ a (+ b c))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(+ (* 2 d) (* 2 (+ a (+ b c))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* 2 d)
(*.f64 #s(literal 2 binary64) d)
(* d (+ 2 (* 2 (/ (+ a (+ b c)) d))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* d (+ 2 (* 2 (/ (+ a (+ b c)) d))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* d (+ 2 (* 2 (/ (+ a (+ b c)) d))))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* 2 d)
(*.f64 #s(literal 2 binary64) d)
(* -1 (* d (- (* -2 (/ (+ a (+ b c)) d)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* -1 (* d (- (* -2 (/ (+ a (+ b c)) d)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(* -1 (* d (- (* -2 (/ (+ a (+ b c)) d)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 (+.f64 c d) a)))
(+ b (+ c d))
(+.f64 b (+.f64 c d))
(+ a (+ b (+ c d)))
(+.f64 b (+.f64 (+.f64 c d) a))
(+ a (+ b (+ c d)))
(+.f64 b (+.f64 (+.f64 c d) a))
(+ a (+ b (+ c d)))
(+.f64 b (+.f64 (+.f64 c d) a))
a
(* a (+ 1 (+ (/ b a) (+ (/ c a) (/ d a)))))
(*.f64 a (+.f64 (/.f64 b a) (+.f64 (/.f64 c a) (+.f64 #s(literal 1 binary64) (/.f64 d a)))))
(* a (+ 1 (+ (/ b a) (+ (/ c a) (/ d a)))))
(*.f64 a (+.f64 (/.f64 b a) (+.f64 (/.f64 c a) (+.f64 #s(literal 1 binary64) (/.f64 d a)))))
(* a (+ 1 (+ (/ b a) (+ (/ c a) (/ d a)))))
(*.f64 a (+.f64 (/.f64 b a) (+.f64 (/.f64 c a) (+.f64 #s(literal 1 binary64) (/.f64 d a)))))
a
(* -1 (* a (- (* -1 (/ (+ b (+ c d)) a)) 1)))
(*.f64 a (+.f64 (/.f64 (+.f64 b (+.f64 c d)) a) #s(literal 1 binary64)))
(* -1 (* a (- (* -1 (/ (+ b (+ c d)) a)) 1)))
(*.f64 a (+.f64 (/.f64 (+.f64 b (+.f64 c d)) a) #s(literal 1 binary64)))
(* -1 (* a (- (* -1 (/ (+ b (+ c d)) a)) 1)))
(*.f64 a (+.f64 (/.f64 (+.f64 b (+.f64 c d)) a) #s(literal 1 binary64)))
(+ a (+ c d))
(+.f64 (+.f64 c d) a)
(+ a (+ b (+ c d)))
(+.f64 b (+.f64 (+.f64 c d) a))
(+ a (+ b (+ c d)))
(+.f64 b (+.f64 (+.f64 c d) a))
(+ a (+ b (+ c d)))
(+.f64 b (+.f64 (+.f64 c d) a))
b
(* b (+ 1 (+ (/ a b) (+ (/ c b) (/ d b)))))
(*.f64 b (+.f64 #s(literal 1 binary64) (+.f64 (/.f64 a b) (+.f64 (/.f64 c b) (/.f64 d b)))))
(* b (+ 1 (+ (/ a b) (+ (/ c b) (/ d b)))))
(*.f64 b (+.f64 #s(literal 1 binary64) (+.f64 (/.f64 a b) (+.f64 (/.f64 c b) (/.f64 d b)))))
(* b (+ 1 (+ (/ a b) (+ (/ c b) (/ d b)))))
(*.f64 b (+.f64 #s(literal 1 binary64) (+.f64 (/.f64 a b) (+.f64 (/.f64 c b) (/.f64 d b)))))
b
(* -1 (* b (- (* -1 (/ (+ a (+ c d)) b)) 1)))
(*.f64 b (+.f64 (/.f64 (+.f64 (+.f64 c d) a) b) #s(literal 1 binary64)))
(* -1 (* b (- (* -1 (/ (+ a (+ c d)) b)) 1)))
(*.f64 b (+.f64 (/.f64 (+.f64 (+.f64 c d) a) b) #s(literal 1 binary64)))
(* -1 (* b (- (* -1 (/ (+ a (+ c d)) b)) 1)))
(*.f64 b (+.f64 (/.f64 (+.f64 (+.f64 c d) a) b) #s(literal 1 binary64)))
(+ a (+ b d))
(+.f64 b (+.f64 d a))
(+ a (+ b (+ c d)))
(+.f64 b (+.f64 (+.f64 c d) a))
(+ a (+ b (+ c d)))
(+.f64 b (+.f64 (+.f64 c d) a))
(+ a (+ b (+ c d)))
(+.f64 b (+.f64 (+.f64 c d) a))
c
(* c (+ 1 (+ (/ a c) (+ (/ b c) (/ d c)))))
(+.f64 (*.f64 (+.f64 (/.f64 a c) (+.f64 #s(literal 1 binary64) (/.f64 b c))) c) d)
(* c (+ 1 (+ (/ a c) (+ (/ b c) (/ d c)))))
(+.f64 (*.f64 (+.f64 (/.f64 a c) (+.f64 #s(literal 1 binary64) (/.f64 b c))) c) d)
(* c (+ 1 (+ (/ a c) (+ (/ b c) (/ d c)))))
(+.f64 (*.f64 (+.f64 (/.f64 a c) (+.f64 #s(literal 1 binary64) (/.f64 b c))) c) d)
c
(* -1 (* c (- (* -1 (/ (+ a (+ b d)) c)) 1)))
(*.f64 c (+.f64 (/.f64 (+.f64 b (+.f64 d a)) c) #s(literal 1 binary64)))
(* -1 (* c (- (* -1 (/ (+ a (+ b d)) c)) 1)))
(*.f64 c (+.f64 (/.f64 (+.f64 b (+.f64 d a)) c) #s(literal 1 binary64)))
(* -1 (* c (- (* -1 (/ (+ a (+ b d)) c)) 1)))
(*.f64 c (+.f64 (/.f64 (+.f64 b (+.f64 d a)) c) #s(literal 1 binary64)))
(+ a (+ b c))
(+.f64 b (+.f64 c a))
(+ a (+ b (+ c d)))
(+.f64 b (+.f64 (+.f64 c d) a))
(+ a (+ b (+ c d)))
(+.f64 b (+.f64 (+.f64 c d) a))
(+ a (+ b (+ c d)))
(+.f64 b (+.f64 (+.f64 c d) a))
d
(* d (+ 1 (+ (/ a d) (+ (/ b d) (/ c d)))))
(+.f64 (*.f64 d (+.f64 (/.f64 a d) (+.f64 #s(literal 1 binary64) (/.f64 b d)))) c)
(* d (+ 1 (+ (/ a d) (+ (/ b d) (/ c d)))))
(+.f64 (*.f64 d (+.f64 (/.f64 a d) (+.f64 #s(literal 1 binary64) (/.f64 b d)))) c)
(* d (+ 1 (+ (/ a d) (+ (/ b d) (/ c d)))))
(+.f64 (*.f64 d (+.f64 (/.f64 a d) (+.f64 #s(literal 1 binary64) (/.f64 b d)))) c)
d
(* -1 (* d (- (* -1 (/ (+ a (+ b c)) d)) 1)))
(*.f64 d (+.f64 (/.f64 (+.f64 b (+.f64 c a)) d) #s(literal 1 binary64)))
(* -1 (* d (- (* -1 (/ (+ a (+ b c)) d)) 1)))
(*.f64 d (+.f64 (/.f64 (+.f64 b (+.f64 c a)) d) #s(literal 1 binary64)))
(* -1 (* d (- (* -1 (/ (+ a (+ b c)) d)) 1)))
(*.f64 d (+.f64 (/.f64 (+.f64 b (+.f64 c a)) d) #s(literal 1 binary64)))
(+ c d)
(+.f64 c d)
(+ b (+ c d))
(+.f64 b (+.f64 c d))
(+ b (+ c d))
(+.f64 b (+.f64 c d))
(+ b (+ c d))
(+.f64 b (+.f64 c d))
b
(* b (+ 1 (+ (/ c b) (/ d b))))
(*.f64 b (+.f64 (/.f64 c b) (+.f64 #s(literal 1 binary64) (/.f64 d b))))
(* b (+ 1 (+ (/ c b) (/ d b))))
(*.f64 b (+.f64 (/.f64 c b) (+.f64 #s(literal 1 binary64) (/.f64 d b))))
(* b (+ 1 (+ (/ c b) (/ d b))))
(*.f64 b (+.f64 (/.f64 c b) (+.f64 #s(literal 1 binary64) (/.f64 d b))))
b
(* -1 (* b (- (* -1 (/ (+ c d) b)) 1)))
(*.f64 b (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 c d) b)))
(* -1 (* b (- (* -1 (/ (+ c d) b)) 1)))
(*.f64 b (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 c d) b)))
(* -1 (* b (- (* -1 (/ (+ c d) b)) 1)))
(*.f64 b (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 c d) b)))
(+ b d)
(+.f64 b d)
(+ b (+ c d))
(+.f64 b (+.f64 c d))
(+ b (+ c d))
(+.f64 b (+.f64 c d))
(+ b (+ c d))
(+.f64 b (+.f64 c d))
c
(* c (+ 1 (+ (/ b c) (/ d c))))
(+.f64 d (*.f64 c (+.f64 #s(literal 1 binary64) (/.f64 b c))))
(* c (+ 1 (+ (/ b c) (/ d c))))
(+.f64 d (*.f64 c (+.f64 #s(literal 1 binary64) (/.f64 b c))))
(* c (+ 1 (+ (/ b c) (/ d c))))
(+.f64 d (*.f64 c (+.f64 #s(literal 1 binary64) (/.f64 b c))))
c
(* -1 (* c (- (* -1 (/ (+ b d) c)) 1)))
(*.f64 c (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 b d) c)))
(* -1 (* c (- (* -1 (/ (+ b d) c)) 1)))
(*.f64 c (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 b d) c)))
(* -1 (* c (- (* -1 (/ (+ b d) c)) 1)))
(*.f64 c (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 b d) c)))
(+ b c)
(+.f64 b c)
(+ b (+ c d))
(+.f64 b (+.f64 c d))
(+ b (+ c d))
(+.f64 b (+.f64 c d))
(+ b (+ c d))
(+.f64 b (+.f64 c d))
d
(* d (+ 1 (+ (/ b d) (/ c d))))
(+.f64 c (*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 b d))))
(* d (+ 1 (+ (/ b d) (/ c d))))
(+.f64 c (*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 b d))))
(* d (+ 1 (+ (/ b d) (/ c d))))
(+.f64 c (*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 b d))))
d
(* -1 (* d (- (* -1 (/ (+ b c) d)) 1)))
(*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 b c) d)))
(* -1 (* d (- (* -1 (/ (+ b c) d)) 1)))
(*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 b c) d)))
(* -1 (* d (- (* -1 (/ (+ b c) d)) 1)))
(*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 b c) d)))
d
(+ c d)
(+.f64 c d)
(+ c d)
(+.f64 c d)
(+ c d)
(+.f64 c d)
c
(* c (+ 1 (/ d c)))
(+.f64 c d)
(* c (+ 1 (/ d c)))
(+.f64 c d)
(* c (+ 1 (/ d c)))
(+.f64 c d)
c
(* -1 (* c (- (* -1 (/ d c)) 1)))
(+.f64 c d)
(* -1 (* c (- (* -1 (/ d c)) 1)))
(+.f64 c d)
(* -1 (* c (- (* -1 (/ d c)) 1)))
(+.f64 c d)
c
(+ c d)
(+.f64 c d)
(+ c d)
(+.f64 c d)
(+ c d)
(+.f64 c d)
d
(* d (+ 1 (/ c d)))
(+.f64 c d)
(* d (+ 1 (/ c d)))
(+.f64 c d)
(* d (+ 1 (/ c d)))
(+.f64 c d)
d
(* -1 (* d (- (* -1 (/ c d)) 1)))
(+.f64 c d)
(* -1 (* d (- (* -1 (/ c d)) 1)))
(+.f64 c d)
(* -1 (* d (- (* -1 (/ c d)) 1)))
(+.f64 c d)

eval35.0ms (0.7%)

Compiler

Compiled 2114 to 220 computations (89.6% saved)

prune117.0ms (2.2%)

Pruning

5 alts after pruning (5 fresh and 0 done)

PrunedKeptTotal
New2175222
Fresh000
Picked101
Done000
Total2185223
Accuracy
100.0%
Counts
223 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
11.3%
(*.f64 (+.f64 (+.f64 c d) a) #s(literal 2 binary64))
100.0%
(*.f64 (+.f64 (+.f64 b c) (+.f64 a d)) #s(literal 2 binary64))
8.6%
(*.f64 (+.f64 a d) #s(literal 2 binary64))
11.2%
(*.f64 c #s(literal 2 binary64))
6.5%
(*.f64 b #s(literal 2 binary64))
Compiler

Compiled 94 to 72 computations (23.4% saved)

simplify17.0ms (0.3%)

Algorithm
egg-herbie
Localize:

Found 11 expressions of interest:

NewMetricScoreProgram
cost-diff0
(+.f64 c d)
cost-diff0
(+.f64 (+.f64 c d) a)
cost-diff0
(*.f64 (+.f64 (+.f64 c d) a) #s(literal 2 binary64))
cost-diff0
(+.f64 a d)
cost-diff0
(*.f64 (+.f64 a d) #s(literal 2 binary64))
cost-diff0
(*.f64 c #s(literal 2 binary64))
cost-diff0
(*.f64 b #s(literal 2 binary64))
cost-diff0
(+.f64 a d)
cost-diff0
(+.f64 b c)
cost-diff0
(+.f64 (+.f64 b c) (+.f64 a d))
cost-diff0
(*.f64 (+.f64 (+.f64 b c) (+.f64 a d)) #s(literal 2 binary64))
Rules
288×sum3-define
248×fma-define
200×fma-lowering-fma.f32
200×+-lowering-+.f64
200×+-lowering-+.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01561
13461
29861
329561
449661
560061
660461
060461
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* (+ (+ b c) (+ a d)) 2)
(+ (+ b c) (+ a d))
(+ b c)
b
c
(+ a d)
a
d
2
(* b 2)
b
2
(* c 2)
c
2
(* (+ a d) 2)
(+ a d)
a
d
2
(* (+ (+ c d) a) 2)
(+ (+ c d) a)
(+ c d)
c
d
a
2
Outputs
(* (+ (+ b c) (+ a d)) 2)
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
(+ (+ b c) (+ a d))
(+.f64 a (+.f64 b (+.f64 c d)))
(+ b c)
(+.f64 b c)
b
c
(+ a d)
(+.f64 a d)
a
d
2
#s(literal 2 binary64)
(* b 2)
(*.f64 b #s(literal 2 binary64))
b
2
#s(literal 2 binary64)
(* c 2)
(*.f64 c #s(literal 2 binary64))
c
2
#s(literal 2 binary64)
(* (+ a d) 2)
(*.f64 (+.f64 a d) #s(literal 2 binary64))
(+ a d)
(+.f64 a d)
a
d
2
#s(literal 2 binary64)
(* (+ (+ c d) a) 2)
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 a d)))
(+ (+ c d) a)
(+.f64 c (+.f64 a d))
(+ c d)
(+.f64 c d)
c
d
a
2
#s(literal 2 binary64)

localize391.0ms (7.5%)

Localize:

Found 11 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(+.f64 c d)
accuracy100.0%
(*.f64 (+.f64 (+.f64 c d) a) #s(literal 2 binary64))
accuracy98.1%
(+.f64 (+.f64 c d) a)
accuracy100.0%
(+.f64 a d)
accuracy100.0%
(*.f64 (+.f64 a d) #s(literal 2 binary64))
accuracy100.0%
(*.f64 c #s(literal 2 binary64))
accuracy100.0%
(*.f64 b #s(literal 2 binary64))
accuracy100.0%
(+.f64 (+.f64 b c) (+.f64 a d))
accuracy100.0%
(+.f64 b c)
accuracy100.0%
(+.f64 a d)
accuracy100.0%
(*.f64 (+.f64 (+.f64 b c) (+.f64 a d)) #s(literal 2 binary64))
Results
358.0ms256×0valid
Compiler

Compiled 72 to 16 computations (77.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 13.0ms
ival-mult: 7.0ms (51.9% of total)
ival-add: 6.0ms (44.5% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series12.0ms (0.2%)

Counts
10 → 288
Calls
Call 1
Inputs
#<alt (* (+ (+ b c) (+ a d)) 2)>
#<alt (+ (+ b c) (+ a d))>
#<alt (+ b c)>
#<alt (+ a d)>
#<alt (* b 2)>
#<alt (* c 2)>
#<alt (* (+ a d) 2)>
#<alt (* (+ (+ c d) a) 2)>
#<alt (+ (+ c d) a)>
#<alt (+ c d)>
Outputs
#<alt (* 2 (+ a (+ c d)))>
#<alt (+ (* 2 b) (* 2 (+ a (+ c d))))>
#<alt (+ (* 2 b) (* 2 (+ a (+ c d))))>
#<alt (+ (* 2 b) (* 2 (+ a (+ c d))))>
#<alt (* 2 b)>
#<alt (* b (+ 2 (* 2 (/ (+ a (+ c d)) b))))>
#<alt (* b (+ 2 (* 2 (/ (+ a (+ c d)) b))))>
#<alt (* b (+ 2 (* 2 (/ (+ a (+ c d)) b))))>
#<alt (* 2 b)>
#<alt (* -1 (* b (- (* -2 (/ (+ a (+ c d)) b)) 2)))>
#<alt (* -1 (* b (- (* -2 (/ (+ a (+ c d)) b)) 2)))>
#<alt (* -1 (* b (- (* -2 (/ (+ a (+ c d)) b)) 2)))>
#<alt (* 2 (+ a (+ b d)))>
#<alt (+ (* 2 c) (* 2 (+ a (+ b d))))>
#<alt (+ (* 2 c) (* 2 (+ a (+ b d))))>
#<alt (+ (* 2 c) (* 2 (+ a (+ b d))))>
#<alt (* 2 c)>
#<alt (* c (+ 2 (* 2 (/ (+ a (+ b d)) c))))>
#<alt (* c (+ 2 (* 2 (/ (+ a (+ b d)) c))))>
#<alt (* c (+ 2 (* 2 (/ (+ a (+ b d)) c))))>
#<alt (* 2 c)>
#<alt (* -1 (* c (- (* -2 (/ (+ a (+ b d)) c)) 2)))>
#<alt (* -1 (* c (- (* -2 (/ (+ a (+ b d)) c)) 2)))>
#<alt (* -1 (* c (- (* -2 (/ (+ a (+ b d)) c)) 2)))>
#<alt (* 2 (+ b (+ c d)))>
#<alt (+ (* 2 a) (* 2 (+ b (+ c d))))>
#<alt (+ (* 2 a) (* 2 (+ b (+ c d))))>
#<alt (+ (* 2 a) (* 2 (+ b (+ c d))))>
#<alt (* 2 a)>
#<alt (* a (+ 2 (* 2 (/ (+ b (+ c d)) a))))>
#<alt (* a (+ 2 (* 2 (/ (+ b (+ c d)) a))))>
#<alt (* a (+ 2 (* 2 (/ (+ b (+ c d)) a))))>
#<alt (* 2 a)>
#<alt (* -1 (* a (- (* -2 (/ (+ b (+ c d)) a)) 2)))>
#<alt (* -1 (* a (- (* -2 (/ (+ b (+ c d)) a)) 2)))>
#<alt (* -1 (* a (- (* -2 (/ (+ b (+ c d)) a)) 2)))>
#<alt (* 2 (+ a (+ b c)))>
#<alt (+ (* 2 d) (* 2 (+ a (+ b c))))>
#<alt (+ (* 2 d) (* 2 (+ a (+ b c))))>
#<alt (+ (* 2 d) (* 2 (+ a (+ b c))))>
#<alt (* 2 d)>
#<alt (* d (+ 2 (* 2 (/ (+ a (+ b c)) d))))>
#<alt (* d (+ 2 (* 2 (/ (+ a (+ b c)) d))))>
#<alt (* d (+ 2 (* 2 (/ (+ a (+ b c)) d))))>
#<alt (* 2 d)>
#<alt (* -1 (* d (- (* -2 (/ (+ a (+ b c)) d)) 2)))>
#<alt (* -1 (* d (- (* -2 (/ (+ a (+ b c)) d)) 2)))>
#<alt (* -1 (* d (- (* -2 (/ (+ a (+ b c)) d)) 2)))>
#<alt (+ a (+ c d))>
#<alt (+ a (+ b (+ c d)))>
#<alt (+ a (+ b (+ c d)))>
#<alt (+ a (+ b (+ c d)))>
#<alt b>
#<alt (* b (+ 1 (+ (/ a b) (+ (/ c b) (/ d b)))))>
#<alt (* b (+ 1 (+ (/ a b) (+ (/ c b) (/ d b)))))>
#<alt (* b (+ 1 (+ (/ a b) (+ (/ c b) (/ d b)))))>
#<alt b>
#<alt (* -1 (* b (- (* -1 (/ (+ a (+ c d)) b)) 1)))>
#<alt (* -1 (* b (- (* -1 (/ (+ a (+ c d)) b)) 1)))>
#<alt (* -1 (* b (- (* -1 (/ (+ a (+ c d)) b)) 1)))>
#<alt (+ a (+ b d))>
#<alt (+ a (+ b (+ c d)))>
#<alt (+ a (+ b (+ c d)))>
#<alt (+ a (+ b (+ c d)))>
#<alt c>
#<alt (* c (+ 1 (+ (/ a c) (+ (/ b c) (/ d c)))))>
#<alt (* c (+ 1 (+ (/ a c) (+ (/ b c) (/ d c)))))>
#<alt (* c (+ 1 (+ (/ a c) (+ (/ b c) (/ d c)))))>
#<alt c>
#<alt (* -1 (* c (- (* -1 (/ (+ a (+ b d)) c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ (+ a (+ b d)) c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ (+ a (+ b d)) c)) 1)))>
#<alt (+ b (+ c d))>
#<alt (+ a (+ b (+ c d)))>
#<alt (+ a (+ b (+ c d)))>
#<alt (+ a (+ b (+ c d)))>
#<alt a>
#<alt (* a (+ 1 (+ (/ b a) (+ (/ c a) (/ d a)))))>
#<alt (* a (+ 1 (+ (/ b a) (+ (/ c a) (/ d a)))))>
#<alt (* a (+ 1 (+ (/ b a) (+ (/ c a) (/ d a)))))>
#<alt a>
#<alt (* -1 (* a (- (* -1 (/ (+ b (+ c d)) a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ (+ b (+ c d)) a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ (+ b (+ c d)) a)) 1)))>
#<alt (+ a (+ b c))>
#<alt (+ a (+ b (+ c d)))>
#<alt (+ a (+ b (+ c d)))>
#<alt (+ a (+ b (+ c d)))>
#<alt d>
#<alt (* d (+ 1 (+ (/ a d) (+ (/ b d) (/ c d)))))>
#<alt (* d (+ 1 (+ (/ a d) (+ (/ b d) (/ c d)))))>
#<alt (* d (+ 1 (+ (/ a d) (+ (/ b d) (/ c d)))))>
#<alt d>
#<alt (* -1 (* d (- (* -1 (/ (+ a (+ b c)) d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ (+ a (+ b c)) d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ (+ a (+ b c)) d)) 1)))>
#<alt c>
#<alt (+ b c)>
#<alt (+ b c)>
#<alt (+ b c)>
#<alt b>
#<alt (* b (+ 1 (/ c b)))>
#<alt (* b (+ 1 (/ c b)))>
#<alt (* b (+ 1 (/ c b)))>
#<alt b>
#<alt (* -1 (* b (- (* -1 (/ c b)) 1)))>
#<alt (* -1 (* b (- (* -1 (/ c b)) 1)))>
#<alt (* -1 (* b (- (* -1 (/ c b)) 1)))>
#<alt b>
#<alt (+ b c)>
#<alt (+ b c)>
#<alt (+ b c)>
#<alt c>
#<alt (* c (+ 1 (/ b c)))>
#<alt (* c (+ 1 (/ b c)))>
#<alt (* c (+ 1 (/ b c)))>
#<alt c>
#<alt (* -1 (* c (- (* -1 (/ b c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ b c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ b c)) 1)))>
#<alt d>
#<alt (+ a d)>
#<alt (+ a d)>
#<alt (+ a d)>
#<alt a>
#<alt (* a (+ 1 (/ d a)))>
#<alt (* a (+ 1 (/ d a)))>
#<alt (* a (+ 1 (/ d a)))>
#<alt a>
#<alt (* -1 (* a (- (* -1 (/ d a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ d a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ d a)) 1)))>
#<alt a>
#<alt (+ a d)>
#<alt (+ a d)>
#<alt (+ a d)>
#<alt d>
#<alt (* d (+ 1 (/ a d)))>
#<alt (* d (+ 1 (/ a d)))>
#<alt (* d (+ 1 (/ a d)))>
#<alt d>
#<alt (* -1 (* d (- (* -1 (/ a d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ a d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ a d)) 1)))>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 c)>
#<alt (* 2 c)>
#<alt (* 2 c)>
#<alt (* 2 c)>
#<alt (* 2 c)>
#<alt (* 2 c)>
#<alt (* 2 c)>
#<alt (* 2 c)>
#<alt (* 2 c)>
#<alt (* 2 c)>
#<alt (* 2 c)>
#<alt (* 2 c)>
#<alt (* 2 d)>
#<alt (+ (* 2 a) (* 2 d))>
#<alt (+ (* 2 a) (* 2 d))>
#<alt (+ (* 2 a) (* 2 d))>
#<alt (* 2 a)>
#<alt (* a (+ 2 (* 2 (/ d a))))>
#<alt (* a (+ 2 (* 2 (/ d a))))>
#<alt (* a (+ 2 (* 2 (/ d a))))>
#<alt (* 2 a)>
#<alt (* -1 (* a (- (* -2 (/ d a)) 2)))>
#<alt (* -1 (* a (- (* -2 (/ d a)) 2)))>
#<alt (* -1 (* a (- (* -2 (/ d a)) 2)))>
#<alt (* 2 a)>
#<alt (+ (* 2 a) (* 2 d))>
#<alt (+ (* 2 a) (* 2 d))>
#<alt (+ (* 2 a) (* 2 d))>
#<alt (* 2 d)>
#<alt (* d (+ 2 (* 2 (/ a d))))>
#<alt (* d (+ 2 (* 2 (/ a d))))>
#<alt (* d (+ 2 (* 2 (/ a d))))>
#<alt (* 2 d)>
#<alt (* -1 (* d (- (* -2 (/ a d)) 2)))>
#<alt (* -1 (* d (- (* -2 (/ a d)) 2)))>
#<alt (* -1 (* d (- (* -2 (/ a d)) 2)))>
#<alt (* 2 (+ a d))>
#<alt (+ (* 2 c) (* 2 (+ a d)))>
#<alt (+ (* 2 c) (* 2 (+ a d)))>
#<alt (+ (* 2 c) (* 2 (+ a d)))>
#<alt (* 2 c)>
#<alt (* c (+ 2 (* 2 (/ (+ a d) c))))>
#<alt (* c (+ 2 (* 2 (/ (+ a d) c))))>
#<alt (* c (+ 2 (* 2 (/ (+ a d) c))))>
#<alt (* 2 c)>
#<alt (* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))>
#<alt (* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))>
#<alt (* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))>
#<alt (* 2 (+ a c))>
#<alt (+ (* 2 d) (* 2 (+ a c)))>
#<alt (+ (* 2 d) (* 2 (+ a c)))>
#<alt (+ (* 2 d) (* 2 (+ a c)))>
#<alt (* 2 d)>
#<alt (* d (+ 2 (* 2 (/ (+ a c) d))))>
#<alt (* d (+ 2 (* 2 (/ (+ a c) d))))>
#<alt (* d (+ 2 (* 2 (/ (+ a c) d))))>
#<alt (* 2 d)>
#<alt (* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))>
#<alt (* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))>
#<alt (* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))>
#<alt (* 2 (+ c d))>
#<alt (+ (* 2 a) (* 2 (+ c d)))>
#<alt (+ (* 2 a) (* 2 (+ c d)))>
#<alt (+ (* 2 a) (* 2 (+ c d)))>
#<alt (* 2 a)>
#<alt (* a (+ 2 (* 2 (/ (+ c d) a))))>
#<alt (* a (+ 2 (* 2 (/ (+ c d) a))))>
#<alt (* a (+ 2 (* 2 (/ (+ c d) a))))>
#<alt (* 2 a)>
#<alt (* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))>
#<alt (* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))>
#<alt (* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))>
#<alt (+ a d)>
#<alt (+ a (+ c d))>
#<alt (+ a (+ c d))>
#<alt (+ a (+ c d))>
#<alt c>
#<alt (* c (+ 1 (+ (/ a c) (/ d c))))>
#<alt (* c (+ 1 (+ (/ a c) (/ d c))))>
#<alt (* c (+ 1 (+ (/ a c) (/ d c))))>
#<alt c>
#<alt (* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))>
#<alt (+ a c)>
#<alt (+ a (+ c d))>
#<alt (+ a (+ c d))>
#<alt (+ a (+ c d))>
#<alt d>
#<alt (* d (+ 1 (+ (/ a d) (/ c d))))>
#<alt (* d (+ 1 (+ (/ a d) (/ c d))))>
#<alt (* d (+ 1 (+ (/ a d) (/ c d))))>
#<alt d>
#<alt (* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))>
#<alt (+ c d)>
#<alt (+ a (+ c d))>
#<alt (+ a (+ c d))>
#<alt (+ a (+ c d))>
#<alt a>
#<alt (* a (+ 1 (+ (/ c a) (/ d a))))>
#<alt (* a (+ 1 (+ (/ c a) (/ d a))))>
#<alt (* a (+ 1 (+ (/ c a) (/ d a))))>
#<alt a>
#<alt (* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))>
#<alt d>
#<alt (+ c d)>
#<alt (+ c d)>
#<alt (+ c d)>
#<alt c>
#<alt (* c (+ 1 (/ d c)))>
#<alt (* c (+ 1 (/ d c)))>
#<alt (* c (+ 1 (/ d c)))>
#<alt c>
#<alt (* -1 (* c (- (* -1 (/ d c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ d c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ d c)) 1)))>
#<alt c>
#<alt (+ c d)>
#<alt (+ c d)>
#<alt (+ c d)>
#<alt d>
#<alt (* d (+ 1 (/ c d)))>
#<alt (* d (+ 1 (/ c d)))>
#<alt (* d (+ 1 (/ c d)))>
#<alt d>
#<alt (* -1 (* d (- (* -1 (/ c d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ c d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ c d)) 1)))>
Calls

72 calls:

TimeVariablePointExpression
3.0ms
c
@inf
(+ (+ c d) a)
1.0ms
d
@0
(* (+ (+ c d) a) 2)
0.0ms
b
@inf
(* b 2)
0.0ms
b
@-inf
(* b 2)
0.0ms
b
@0
(* b 2)

rewrite31.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
288×sum3-define
248×fma-define
200×fma-lowering-fma.f32
200×+-lowering-+.f64
200×+-lowering-+.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01542
13442
29842
329542
449642
560042
660442
060442
Stop Event
iter limit
saturated
Counts
10 → 102
Calls
Call 1
Inputs
(* (+ (+ b c) (+ a d)) 2)
(+ (+ b c) (+ a d))
(+ b c)
(+ a d)
(* b 2)
(* c 2)
(* (+ a d) 2)
(* (+ (+ c d) a) 2)
(+ (+ c d) a)
(+ c d)
Outputs
(+.f64 (*.f64 b #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 a d))))
(+.f64 (*.f64 c #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 a d))))
(+.f64 (*.f64 (+.f64 a d) #s(literal 2 binary64)) (*.f64 (+.f64 b c) #s(literal 2 binary64)))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 a d))) (*.f64 b #s(literal 2 binary64)))
(+.f64 (*.f64 (+.f64 b c) #s(literal 2 binary64)) (*.f64 (+.f64 a d) #s(literal 2 binary64)))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 c a))) (*.f64 d #s(literal 2 binary64)))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 c d)) (*.f64 #s(literal 2 binary64) (+.f64 b a)))
(+.f64 (*.f64 d #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 c a))))
(+.f64 (*.f64 a #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 c d))))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 c a)) (*.f64 #s(literal 2 binary64) (+.f64 b d)))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 b a)) (*.f64 #s(literal 2 binary64) (+.f64 c d)))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 c d))) (*.f64 a #s(literal 2 binary64)))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 a d))) (*.f64 c #s(literal 2 binary64)))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 b d)) (*.f64 #s(literal 2 binary64) (+.f64 c a)))
(fma.f64 b #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 a d))))
(fma.f64 c #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 a d))))
(fma.f64 (+.f64 b c) #s(literal 2 binary64) (*.f64 (+.f64 a d) #s(literal 2 binary64)))
(fma.f64 a #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 c d))))
(fma.f64 d #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 c a))))
(fma.f64 (+.f64 a d) #s(literal 2 binary64) (*.f64 (+.f64 b c) #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) b (*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 a d))))
(fma.f64 #s(literal 2 binary64) c (*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 a d))))
(fma.f64 #s(literal 2 binary64) (+.f64 b c) (*.f64 (+.f64 a d) #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) a (*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 c d))))
(fma.f64 #s(literal 2 binary64) d (*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 c a))))
(fma.f64 #s(literal 2 binary64) (+.f64 a d) (*.f64 (+.f64 b c) #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) (+.f64 c d) (*.f64 #s(literal 2 binary64) (+.f64 b a)))
(fma.f64 #s(literal 2 binary64) (+.f64 c (+.f64 a d)) (*.f64 b #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) (+.f64 b (+.f64 c a)) (*.f64 d #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) (+.f64 c a) (*.f64 #s(literal 2 binary64) (+.f64 b d)))
(fma.f64 #s(literal 2 binary64) (+.f64 b a) (*.f64 #s(literal 2 binary64) (+.f64 c d)))
(fma.f64 #s(literal 2 binary64) (+.f64 b (+.f64 c d)) (*.f64 a #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) (+.f64 b (+.f64 a d)) (*.f64 c #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) (+.f64 b d) (*.f64 #s(literal 2 binary64) (+.f64 c a)))
(fma.f64 (+.f64 c d) #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 b a)))
(fma.f64 (+.f64 c (+.f64 a d)) #s(literal 2 binary64) (*.f64 b #s(literal 2 binary64)))
(fma.f64 (+.f64 b (+.f64 c a)) #s(literal 2 binary64) (*.f64 d #s(literal 2 binary64)))
(fma.f64 (+.f64 c a) #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 b d)))
(fma.f64 (+.f64 b a) #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 c d)))
(fma.f64 (+.f64 b (+.f64 c d)) #s(literal 2 binary64) (*.f64 a #s(literal 2 binary64)))
(fma.f64 (+.f64 b (+.f64 a d)) #s(literal 2 binary64) (*.f64 c #s(literal 2 binary64)))
(fma.f64 (+.f64 b d) #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 c a)))
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 b (+.f64 c d))))
(+.f64 b (+.f64 c (+.f64 a d)))
(+.f64 c (+.f64 b (+.f64 a d)))
(+.f64 (+.f64 b c) (+.f64 a d))
(+.f64 a (+.f64 b (+.f64 c d)))
(+.f64 d (+.f64 b (+.f64 c a)))
(+.f64 (+.f64 a d) (+.f64 b c))
(+.f64 (+.f64 c d) (+.f64 b a))
(+.f64 (+.f64 c (+.f64 a d)) b)
(+.f64 (+.f64 b (+.f64 c a)) d)
(+.f64 (+.f64 c a) (+.f64 b d))
(+.f64 (+.f64 b a) (+.f64 c d))
(+.f64 (+.f64 b (+.f64 c d)) a)
(+.f64 (+.f64 b (+.f64 a d)) c)
(+.f64 (+.f64 b d) (+.f64 c a))
(+.f64 b c)
(+.f64 c b)
(+.f64 a d)
(+.f64 d a)
(*.f64 b #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) b)
(*.f64 c #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) c)
(+.f64 (*.f64 d #s(literal 2 binary64)) (*.f64 a #s(literal 2 binary64)))
(+.f64 (*.f64 a #s(literal 2 binary64)) (*.f64 d #s(literal 2 binary64)))
(fma.f64 a #s(literal 2 binary64) (*.f64 d #s(literal 2 binary64)))
(fma.f64 d #s(literal 2 binary64) (*.f64 a #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) a (*.f64 d #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) d (*.f64 a #s(literal 2 binary64)))
(*.f64 (+.f64 a d) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (+.f64 a d))
(+.f64 (*.f64 c #s(literal 2 binary64)) (*.f64 (+.f64 a d) #s(literal 2 binary64)))
(+.f64 (*.f64 (+.f64 a d) #s(literal 2 binary64)) (*.f64 c #s(literal 2 binary64)))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 c d)) (*.f64 a #s(literal 2 binary64)))
(+.f64 (*.f64 d #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (+.f64 c a)))
(+.f64 (*.f64 a #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (+.f64 c d)))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 c a)) (*.f64 d #s(literal 2 binary64)))
(fma.f64 c #s(literal 2 binary64) (*.f64 (+.f64 a d) #s(literal 2 binary64)))
(fma.f64 a #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 c d)))
(fma.f64 d #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 c a)))
(fma.f64 (+.f64 a d) #s(literal 2 binary64) (*.f64 c #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) c (*.f64 (+.f64 a d) #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) a (*.f64 #s(literal 2 binary64) (+.f64 c d)))
(fma.f64 #s(literal 2 binary64) d (*.f64 #s(literal 2 binary64) (+.f64 c a)))
(fma.f64 #s(literal 2 binary64) (+.f64 a d) (*.f64 c #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) (+.f64 c d) (*.f64 a #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) (+.f64 c a) (*.f64 d #s(literal 2 binary64)))
(fma.f64 (+.f64 c d) #s(literal 2 binary64) (*.f64 a #s(literal 2 binary64)))
(fma.f64 (+.f64 c a) #s(literal 2 binary64) (*.f64 d #s(literal 2 binary64)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 a d)))
(*.f64 (+.f64 c (+.f64 a d)) #s(literal 2 binary64))
(+.f64 c (+.f64 a d))
(+.f64 a (+.f64 c d))
(+.f64 d (+.f64 c a))
(+.f64 (+.f64 a d) c)
(+.f64 (+.f64 c d) a)
(+.f64 (+.f64 c a) d)
(+.f64 c d)
(+.f64 d c)

simplify910.0ms (17.5%)

Algorithm
egg-herbie
Rules
4722×*-lowering-*.f32
4722×*-lowering-*.f64
1998×+-lowering-+.f64
1998×+-lowering-+.f32
1550×fma-lowering-fma.f32
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
02072024
17101827
220811749
365461749
080421749
Stop Event
iter limit
node limit
Counts
288 → 288
Calls
Call 1
Inputs
(* 2 (+ a (+ c d)))
(+ (* 2 b) (* 2 (+ a (+ c d))))
(+ (* 2 b) (* 2 (+ a (+ c d))))
(+ (* 2 b) (* 2 (+ a (+ c d))))
(* 2 b)
(* b (+ 2 (* 2 (/ (+ a (+ c d)) b))))
(* b (+ 2 (* 2 (/ (+ a (+ c d)) b))))
(* b (+ 2 (* 2 (/ (+ a (+ c d)) b))))
(* 2 b)
(* -1 (* b (- (* -2 (/ (+ a (+ c d)) b)) 2)))
(* -1 (* b (- (* -2 (/ (+ a (+ c d)) b)) 2)))
(* -1 (* b (- (* -2 (/ (+ a (+ c d)) b)) 2)))
(* 2 (+ a (+ b d)))
(+ (* 2 c) (* 2 (+ a (+ b d))))
(+ (* 2 c) (* 2 (+ a (+ b d))))
(+ (* 2 c) (* 2 (+ a (+ b d))))
(* 2 c)
(* c (+ 2 (* 2 (/ (+ a (+ b d)) c))))
(* c (+ 2 (* 2 (/ (+ a (+ b d)) c))))
(* c (+ 2 (* 2 (/ (+ a (+ b d)) c))))
(* 2 c)
(* -1 (* c (- (* -2 (/ (+ a (+ b d)) c)) 2)))
(* -1 (* c (- (* -2 (/ (+ a (+ b d)) c)) 2)))
(* -1 (* c (- (* -2 (/ (+ a (+ b d)) c)) 2)))
(* 2 (+ b (+ c d)))
(+ (* 2 a) (* 2 (+ b (+ c d))))
(+ (* 2 a) (* 2 (+ b (+ c d))))
(+ (* 2 a) (* 2 (+ b (+ c d))))
(* 2 a)
(* a (+ 2 (* 2 (/ (+ b (+ c d)) a))))
(* a (+ 2 (* 2 (/ (+ b (+ c d)) a))))
(* a (+ 2 (* 2 (/ (+ b (+ c d)) a))))
(* 2 a)
(* -1 (* a (- (* -2 (/ (+ b (+ c d)) a)) 2)))
(* -1 (* a (- (* -2 (/ (+ b (+ c d)) a)) 2)))
(* -1 (* a (- (* -2 (/ (+ b (+ c d)) a)) 2)))
(* 2 (+ a (+ b c)))
(+ (* 2 d) (* 2 (+ a (+ b c))))
(+ (* 2 d) (* 2 (+ a (+ b c))))
(+ (* 2 d) (* 2 (+ a (+ b c))))
(* 2 d)
(* d (+ 2 (* 2 (/ (+ a (+ b c)) d))))
(* d (+ 2 (* 2 (/ (+ a (+ b c)) d))))
(* d (+ 2 (* 2 (/ (+ a (+ b c)) d))))
(* 2 d)
(* -1 (* d (- (* -2 (/ (+ a (+ b c)) d)) 2)))
(* -1 (* d (- (* -2 (/ (+ a (+ b c)) d)) 2)))
(* -1 (* d (- (* -2 (/ (+ a (+ b c)) d)) 2)))
(+ a (+ c d))
(+ a (+ b (+ c d)))
(+ a (+ b (+ c d)))
(+ a (+ b (+ c d)))
b
(* b (+ 1 (+ (/ a b) (+ (/ c b) (/ d b)))))
(* b (+ 1 (+ (/ a b) (+ (/ c b) (/ d b)))))
(* b (+ 1 (+ (/ a b) (+ (/ c b) (/ d b)))))
b
(* -1 (* b (- (* -1 (/ (+ a (+ c d)) b)) 1)))
(* -1 (* b (- (* -1 (/ (+ a (+ c d)) b)) 1)))
(* -1 (* b (- (* -1 (/ (+ a (+ c d)) b)) 1)))
(+ a (+ b d))
(+ a (+ b (+ c d)))
(+ a (+ b (+ c d)))
(+ a (+ b (+ c d)))
c
(* c (+ 1 (+ (/ a c) (+ (/ b c) (/ d c)))))
(* c (+ 1 (+ (/ a c) (+ (/ b c) (/ d c)))))
(* c (+ 1 (+ (/ a c) (+ (/ b c) (/ d c)))))
c
(* -1 (* c (- (* -1 (/ (+ a (+ b d)) c)) 1)))
(* -1 (* c (- (* -1 (/ (+ a (+ b d)) c)) 1)))
(* -1 (* c (- (* -1 (/ (+ a (+ b d)) c)) 1)))
(+ b (+ c d))
(+ a (+ b (+ c d)))
(+ a (+ b (+ c d)))
(+ a (+ b (+ c d)))
a
(* a (+ 1 (+ (/ b a) (+ (/ c a) (/ d a)))))
(* a (+ 1 (+ (/ b a) (+ (/ c a) (/ d a)))))
(* a (+ 1 (+ (/ b a) (+ (/ c a) (/ d a)))))
a
(* -1 (* a (- (* -1 (/ (+ b (+ c d)) a)) 1)))
(* -1 (* a (- (* -1 (/ (+ b (+ c d)) a)) 1)))
(* -1 (* a (- (* -1 (/ (+ b (+ c d)) a)) 1)))
(+ a (+ b c))
(+ a (+ b (+ c d)))
(+ a (+ b (+ c d)))
(+ a (+ b (+ c d)))
d
(* d (+ 1 (+ (/ a d) (+ (/ b d) (/ c d)))))
(* d (+ 1 (+ (/ a d) (+ (/ b d) (/ c d)))))
(* d (+ 1 (+ (/ a d) (+ (/ b d) (/ c d)))))
d
(* -1 (* d (- (* -1 (/ (+ a (+ b c)) d)) 1)))
(* -1 (* d (- (* -1 (/ (+ a (+ b c)) d)) 1)))
(* -1 (* d (- (* -1 (/ (+ a (+ b c)) d)) 1)))
c
(+ b c)
(+ b c)
(+ b c)
b
(* b (+ 1 (/ c b)))
(* b (+ 1 (/ c b)))
(* b (+ 1 (/ c b)))
b
(* -1 (* b (- (* -1 (/ c b)) 1)))
(* -1 (* b (- (* -1 (/ c b)) 1)))
(* -1 (* b (- (* -1 (/ c b)) 1)))
b
(+ b c)
(+ b c)
(+ b c)
c
(* c (+ 1 (/ b c)))
(* c (+ 1 (/ b c)))
(* c (+ 1 (/ b c)))
c
(* -1 (* c (- (* -1 (/ b c)) 1)))
(* -1 (* c (- (* -1 (/ b c)) 1)))
(* -1 (* c (- (* -1 (/ b c)) 1)))
d
(+ a d)
(+ a d)
(+ a d)
a
(* a (+ 1 (/ d a)))
(* a (+ 1 (/ d a)))
(* a (+ 1 (/ d a)))
a
(* -1 (* a (- (* -1 (/ d a)) 1)))
(* -1 (* a (- (* -1 (/ d a)) 1)))
(* -1 (* a (- (* -1 (/ d a)) 1)))
a
(+ a d)
(+ a d)
(+ a d)
d
(* d (+ 1 (/ a d)))
(* d (+ 1 (/ a d)))
(* d (+ 1 (/ a d)))
d
(* -1 (* d (- (* -1 (/ a d)) 1)))
(* -1 (* d (- (* -1 (/ a d)) 1)))
(* -1 (* d (- (* -1 (/ a d)) 1)))
(* 2 b)
(* 2 b)
(* 2 b)
(* 2 b)
(* 2 b)
(* 2 b)
(* 2 b)
(* 2 b)
(* 2 b)
(* 2 b)
(* 2 b)
(* 2 b)
(* 2 c)
(* 2 c)
(* 2 c)
(* 2 c)
(* 2 c)
(* 2 c)
(* 2 c)
(* 2 c)
(* 2 c)
(* 2 c)
(* 2 c)
(* 2 c)
(* 2 d)
(+ (* 2 a) (* 2 d))
(+ (* 2 a) (* 2 d))
(+ (* 2 a) (* 2 d))
(* 2 a)
(* a (+ 2 (* 2 (/ d a))))
(* a (+ 2 (* 2 (/ d a))))
(* a (+ 2 (* 2 (/ d a))))
(* 2 a)
(* -1 (* a (- (* -2 (/ d a)) 2)))
(* -1 (* a (- (* -2 (/ d a)) 2)))
(* -1 (* a (- (* -2 (/ d a)) 2)))
(* 2 a)
(+ (* 2 a) (* 2 d))
(+ (* 2 a) (* 2 d))
(+ (* 2 a) (* 2 d))
(* 2 d)
(* d (+ 2 (* 2 (/ a d))))
(* d (+ 2 (* 2 (/ a d))))
(* d (+ 2 (* 2 (/ a d))))
(* 2 d)
(* -1 (* d (- (* -2 (/ a d)) 2)))
(* -1 (* d (- (* -2 (/ a d)) 2)))
(* -1 (* d (- (* -2 (/ a d)) 2)))
(* 2 (+ a d))
(+ (* 2 c) (* 2 (+ a d)))
(+ (* 2 c) (* 2 (+ a d)))
(+ (* 2 c) (* 2 (+ a d)))
(* 2 c)
(* c (+ 2 (* 2 (/ (+ a d) c))))
(* c (+ 2 (* 2 (/ (+ a d) c))))
(* c (+ 2 (* 2 (/ (+ a d) c))))
(* 2 c)
(* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))
(* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))
(* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))
(* 2 (+ a c))
(+ (* 2 d) (* 2 (+ a c)))
(+ (* 2 d) (* 2 (+ a c)))
(+ (* 2 d) (* 2 (+ a c)))
(* 2 d)
(* d (+ 2 (* 2 (/ (+ a c) d))))
(* d (+ 2 (* 2 (/ (+ a c) d))))
(* d (+ 2 (* 2 (/ (+ a c) d))))
(* 2 d)
(* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))
(* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))
(* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))
(* 2 (+ c d))
(+ (* 2 a) (* 2 (+ c d)))
(+ (* 2 a) (* 2 (+ c d)))
(+ (* 2 a) (* 2 (+ c d)))
(* 2 a)
(* a (+ 2 (* 2 (/ (+ c d) a))))
(* a (+ 2 (* 2 (/ (+ c d) a))))
(* a (+ 2 (* 2 (/ (+ c d) a))))
(* 2 a)
(* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))
(* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))
(* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))
(+ a d)
(+ a (+ c d))
(+ a (+ c d))
(+ a (+ c d))
c
(* c (+ 1 (+ (/ a c) (/ d c))))
(* c (+ 1 (+ (/ a c) (/ d c))))
(* c (+ 1 (+ (/ a c) (/ d c))))
c
(* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))
(* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))
(* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))
(+ a c)
(+ a (+ c d))
(+ a (+ c d))
(+ a (+ c d))
d
(* d (+ 1 (+ (/ a d) (/ c d))))
(* d (+ 1 (+ (/ a d) (/ c d))))
(* d (+ 1 (+ (/ a d) (/ c d))))
d
(* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))
(* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))
(* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))
(+ c d)
(+ a (+ c d))
(+ a (+ c d))
(+ a (+ c d))
a
(* a (+ 1 (+ (/ c a) (/ d a))))
(* a (+ 1 (+ (/ c a) (/ d a))))
(* a (+ 1 (+ (/ c a) (/ d a))))
a
(* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))
(* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))
(* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))
d
(+ c d)
(+ c d)
(+ c d)
c
(* c (+ 1 (/ d c)))
(* c (+ 1 (/ d c)))
(* c (+ 1 (/ d c)))
c
(* -1 (* c (- (* -1 (/ d c)) 1)))
(* -1 (* c (- (* -1 (/ d c)) 1)))
(* -1 (* c (- (* -1 (/ d c)) 1)))
c
(+ c d)
(+ c d)
(+ c d)
d
(* d (+ 1 (/ c d)))
(* d (+ 1 (/ c d)))
(* d (+ 1 (/ c d)))
d
(* -1 (* d (- (* -1 (/ c d)) 1)))
(* -1 (* d (- (* -1 (/ c d)) 1)))
(* -1 (* d (- (* -1 (/ c d)) 1)))
Outputs
(* 2 (+ a (+ c d)))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 c d)))
(+ (* 2 b) (* 2 (+ a (+ c d))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 b (+.f64 a d))))
(+ (* 2 b) (* 2 (+ a (+ c d))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 b (+.f64 a d))))
(+ (* 2 b) (* 2 (+ a (+ c d))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 b (+.f64 a d))))
(* 2 b)
(*.f64 #s(literal 2 binary64) b)
(* b (+ 2 (* 2 (/ (+ a (+ c d)) b))))
(*.f64 b (*.f64 (-.f64 #s(literal -1 binary64) (/.f64 (+.f64 a (+.f64 c d)) b)) #s(literal -2 binary64)))
(* b (+ 2 (* 2 (/ (+ a (+ c d)) b))))
(*.f64 b (*.f64 (-.f64 #s(literal -1 binary64) (/.f64 (+.f64 a (+.f64 c d)) b)) #s(literal -2 binary64)))
(* b (+ 2 (* 2 (/ (+ a (+ c d)) b))))
(*.f64 b (*.f64 (-.f64 #s(literal -1 binary64) (/.f64 (+.f64 a (+.f64 c d)) b)) #s(literal -2 binary64)))
(* 2 b)
(*.f64 #s(literal 2 binary64) b)
(* -1 (* b (- (* -2 (/ (+ a (+ c d)) b)) 2)))
(*.f64 b (*.f64 (-.f64 #s(literal -1 binary64) (/.f64 (+.f64 a (+.f64 c d)) b)) #s(literal -2 binary64)))
(* -1 (* b (- (* -2 (/ (+ a (+ c d)) b)) 2)))
(*.f64 b (*.f64 (-.f64 #s(literal -1 binary64) (/.f64 (+.f64 a (+.f64 c d)) b)) #s(literal -2 binary64)))
(* -1 (* b (- (* -2 (/ (+ a (+ c d)) b)) 2)))
(*.f64 b (*.f64 (-.f64 #s(literal -1 binary64) (/.f64 (+.f64 a (+.f64 c d)) b)) #s(literal -2 binary64)))
(* 2 (+ a (+ b d)))
(*.f64 #s(literal 2 binary64) (+.f64 b (+.f64 a d)))
(+ (* 2 c) (* 2 (+ a (+ b d))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 b (+.f64 a d))))
(+ (* 2 c) (* 2 (+ a (+ b d))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 b (+.f64 a d))))
(+ (* 2 c) (* 2 (+ a (+ b d))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 b (+.f64 a d))))
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* c (+ 2 (* 2 (/ (+ a (+ b d)) c))))
(*.f64 c (+.f64 #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (/.f64 (+.f64 b (+.f64 a d)) c))))
(* c (+ 2 (* 2 (/ (+ a (+ b d)) c))))
(*.f64 c (+.f64 #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (/.f64 (+.f64 b (+.f64 a d)) c))))
(* c (+ 2 (* 2 (/ (+ a (+ b d)) c))))
(*.f64 c (+.f64 #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (/.f64 (+.f64 b (+.f64 a d)) c))))
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* -1 (* c (- (* -2 (/ (+ a (+ b d)) c)) 2)))
(*.f64 c (+.f64 #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (/.f64 (+.f64 b (+.f64 a d)) c))))
(* -1 (* c (- (* -2 (/ (+ a (+ b d)) c)) 2)))
(*.f64 c (+.f64 #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (/.f64 (+.f64 b (+.f64 a d)) c))))
(* -1 (* c (- (* -2 (/ (+ a (+ b d)) c)) 2)))
(*.f64 c (+.f64 #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (/.f64 (+.f64 b (+.f64 a d)) c))))
(* 2 (+ b (+ c d)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d b)))
(+ (* 2 a) (* 2 (+ b (+ c d))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 b (+.f64 a d))))
(+ (* 2 a) (* 2 (+ b (+ c d))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 b (+.f64 a d))))
(+ (* 2 a) (* 2 (+ b (+ c d))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 b (+.f64 a d))))
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* a (+ 2 (* 2 (/ (+ b (+ c d)) a))))
(*.f64 (+.f64 (/.f64 (+.f64 c (+.f64 d b)) a) #s(literal 1 binary64)) (*.f64 #s(literal 2 binary64) a))
(* a (+ 2 (* 2 (/ (+ b (+ c d)) a))))
(*.f64 (+.f64 (/.f64 (+.f64 c (+.f64 d b)) a) #s(literal 1 binary64)) (*.f64 #s(literal 2 binary64) a))
(* a (+ 2 (* 2 (/ (+ b (+ c d)) a))))
(*.f64 (+.f64 (/.f64 (+.f64 c (+.f64 d b)) a) #s(literal 1 binary64)) (*.f64 #s(literal 2 binary64) a))
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* -1 (* a (- (* -2 (/ (+ b (+ c d)) a)) 2)))
(*.f64 (+.f64 (/.f64 (+.f64 c (+.f64 d b)) a) #s(literal 1 binary64)) (*.f64 #s(literal 2 binary64) a))
(* -1 (* a (- (* -2 (/ (+ b (+ c d)) a)) 2)))
(*.f64 (+.f64 (/.f64 (+.f64 c (+.f64 d b)) a) #s(literal 1 binary64)) (*.f64 #s(literal 2 binary64) a))
(* -1 (* a (- (* -2 (/ (+ b (+ c d)) a)) 2)))
(*.f64 (+.f64 (/.f64 (+.f64 c (+.f64 d b)) a) #s(literal 1 binary64)) (*.f64 #s(literal 2 binary64) a))
(* 2 (+ a (+ b c)))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 c b)))
(+ (* 2 d) (* 2 (+ a (+ b c))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 b (+.f64 a d))))
(+ (* 2 d) (* 2 (+ a (+ b c))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 b (+.f64 a d))))
(+ (* 2 d) (* 2 (+ a (+ b c))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 b (+.f64 a d))))
(* 2 d)
(*.f64 #s(literal 2 binary64) d)
(* d (+ 2 (* 2 (/ (+ a (+ b c)) d))))
(*.f64 #s(literal 2 binary64) (*.f64 (+.f64 (/.f64 (+.f64 a (+.f64 c b)) d) #s(literal 1 binary64)) d))
(* d (+ 2 (* 2 (/ (+ a (+ b c)) d))))
(*.f64 #s(literal 2 binary64) (*.f64 (+.f64 (/.f64 (+.f64 a (+.f64 c b)) d) #s(literal 1 binary64)) d))
(* d (+ 2 (* 2 (/ (+ a (+ b c)) d))))
(*.f64 #s(literal 2 binary64) (*.f64 (+.f64 (/.f64 (+.f64 a (+.f64 c b)) d) #s(literal 1 binary64)) d))
(* 2 d)
(*.f64 #s(literal 2 binary64) d)
(* -1 (* d (- (* -2 (/ (+ a (+ b c)) d)) 2)))
(*.f64 #s(literal 2 binary64) (*.f64 (+.f64 (/.f64 (+.f64 a (+.f64 c b)) d) #s(literal 1 binary64)) d))
(* -1 (* d (- (* -2 (/ (+ a (+ b c)) d)) 2)))
(*.f64 #s(literal 2 binary64) (*.f64 (+.f64 (/.f64 (+.f64 a (+.f64 c b)) d) #s(literal 1 binary64)) d))
(* -1 (* d (- (* -2 (/ (+ a (+ b c)) d)) 2)))
(*.f64 #s(literal 2 binary64) (*.f64 (+.f64 (/.f64 (+.f64 a (+.f64 c b)) d) #s(literal 1 binary64)) d))
(+ a (+ c d))
(+.f64 a (+.f64 c d))
(+ a (+ b (+ c d)))
(+.f64 c (+.f64 b (+.f64 a d)))
(+ a (+ b (+ c d)))
(+.f64 c (+.f64 b (+.f64 a d)))
(+ a (+ b (+ c d)))
(+.f64 c (+.f64 b (+.f64 a d)))
b
(* b (+ 1 (+ (/ a b) (+ (/ c b) (/ d b)))))
(*.f64 b (+.f64 (/.f64 a b) (+.f64 (/.f64 c b) (+.f64 #s(literal 1 binary64) (/.f64 d b)))))
(* b (+ 1 (+ (/ a b) (+ (/ c b) (/ d b)))))
(*.f64 b (+.f64 (/.f64 a b) (+.f64 (/.f64 c b) (+.f64 #s(literal 1 binary64) (/.f64 d b)))))
(* b (+ 1 (+ (/ a b) (+ (/ c b) (/ d b)))))
(*.f64 b (+.f64 (/.f64 a b) (+.f64 (/.f64 c b) (+.f64 #s(literal 1 binary64) (/.f64 d b)))))
b
(* -1 (* b (- (* -1 (/ (+ a (+ c d)) b)) 1)))
(*.f64 (+.f64 (/.f64 (+.f64 a (+.f64 c d)) b) #s(literal 1 binary64)) b)
(* -1 (* b (- (* -1 (/ (+ a (+ c d)) b)) 1)))
(*.f64 (+.f64 (/.f64 (+.f64 a (+.f64 c d)) b) #s(literal 1 binary64)) b)
(* -1 (* b (- (* -1 (/ (+ a (+ c d)) b)) 1)))
(*.f64 (+.f64 (/.f64 (+.f64 a (+.f64 c d)) b) #s(literal 1 binary64)) b)
(+ a (+ b d))
(+.f64 b (+.f64 a d))
(+ a (+ b (+ c d)))
(+.f64 c (+.f64 b (+.f64 a d)))
(+ a (+ b (+ c d)))
(+.f64 c (+.f64 b (+.f64 a d)))
(+ a (+ b (+ c d)))
(+.f64 c (+.f64 b (+.f64 a d)))
c
(* c (+ 1 (+ (/ a c) (+ (/ b c) (/ d c)))))
(*.f64 c (+.f64 (/.f64 d c) (+.f64 (/.f64 b c) (+.f64 #s(literal 1 binary64) (/.f64 a c)))))
(* c (+ 1 (+ (/ a c) (+ (/ b c) (/ d c)))))
(*.f64 c (+.f64 (/.f64 d c) (+.f64 (/.f64 b c) (+.f64 #s(literal 1 binary64) (/.f64 a c)))))
(* c (+ 1 (+ (/ a c) (+ (/ b c) (/ d c)))))
(*.f64 c (+.f64 (/.f64 d c) (+.f64 (/.f64 b c) (+.f64 #s(literal 1 binary64) (/.f64 a c)))))
c
(* -1 (* c (- (* -1 (/ (+ a (+ b d)) c)) 1)))
(*.f64 (+.f64 (/.f64 (+.f64 b (+.f64 a d)) c) #s(literal 1 binary64)) c)
(* -1 (* c (- (* -1 (/ (+ a (+ b d)) c)) 1)))
(*.f64 (+.f64 (/.f64 (+.f64 b (+.f64 a d)) c) #s(literal 1 binary64)) c)
(* -1 (* c (- (* -1 (/ (+ a (+ b d)) c)) 1)))
(*.f64 (+.f64 (/.f64 (+.f64 b (+.f64 a d)) c) #s(literal 1 binary64)) c)
(+ b (+ c d))
(+.f64 c (+.f64 d b))
(+ a (+ b (+ c d)))
(+.f64 c (+.f64 b (+.f64 a d)))
(+ a (+ b (+ c d)))
(+.f64 c (+.f64 b (+.f64 a d)))
(+ a (+ b (+ c d)))
(+.f64 c (+.f64 b (+.f64 a d)))
a
(* a (+ 1 (+ (/ b a) (+ (/ c a) (/ d a)))))
(*.f64 a (+.f64 (/.f64 b a) (+.f64 (/.f64 d a) (+.f64 #s(literal 1 binary64) (/.f64 c a)))))
(* a (+ 1 (+ (/ b a) (+ (/ c a) (/ d a)))))
(*.f64 a (+.f64 (/.f64 b a) (+.f64 (/.f64 d a) (+.f64 #s(literal 1 binary64) (/.f64 c a)))))
(* a (+ 1 (+ (/ b a) (+ (/ c a) (/ d a)))))
(*.f64 a (+.f64 (/.f64 b a) (+.f64 (/.f64 d a) (+.f64 #s(literal 1 binary64) (/.f64 c a)))))
a
(* -1 (* a (- (* -1 (/ (+ b (+ c d)) a)) 1)))
(*.f64 (+.f64 (/.f64 (+.f64 c (+.f64 d b)) a) #s(literal 1 binary64)) a)
(* -1 (* a (- (* -1 (/ (+ b (+ c d)) a)) 1)))
(*.f64 (+.f64 (/.f64 (+.f64 c (+.f64 d b)) a) #s(literal 1 binary64)) a)
(* -1 (* a (- (* -1 (/ (+ b (+ c d)) a)) 1)))
(*.f64 (+.f64 (/.f64 (+.f64 c (+.f64 d b)) a) #s(literal 1 binary64)) a)
(+ a (+ b c))
(+.f64 a (+.f64 c b))
(+ a (+ b (+ c d)))
(+.f64 c (+.f64 b (+.f64 a d)))
(+ a (+ b (+ c d)))
(+.f64 c (+.f64 b (+.f64 a d)))
(+ a (+ b (+ c d)))
(+.f64 c (+.f64 b (+.f64 a d)))
d
(* d (+ 1 (+ (/ a d) (+ (/ b d) (/ c d)))))
(*.f64 d (+.f64 (/.f64 b d) (+.f64 (/.f64 a d) (+.f64 #s(literal 1 binary64) (/.f64 c d)))))
(* d (+ 1 (+ (/ a d) (+ (/ b d) (/ c d)))))
(*.f64 d (+.f64 (/.f64 b d) (+.f64 (/.f64 a d) (+.f64 #s(literal 1 binary64) (/.f64 c d)))))
(* d (+ 1 (+ (/ a d) (+ (/ b d) (/ c d)))))
(*.f64 d (+.f64 (/.f64 b d) (+.f64 (/.f64 a d) (+.f64 #s(literal 1 binary64) (/.f64 c d)))))
d
(* -1 (* d (- (* -1 (/ (+ a (+ b c)) d)) 1)))
(*.f64 (+.f64 (/.f64 (+.f64 a (+.f64 c b)) d) #s(literal 1 binary64)) d)
(* -1 (* d (- (* -1 (/ (+ a (+ b c)) d)) 1)))
(*.f64 (+.f64 (/.f64 (+.f64 a (+.f64 c b)) d) #s(literal 1 binary64)) d)
(* -1 (* d (- (* -1 (/ (+ a (+ b c)) d)) 1)))
(*.f64 (+.f64 (/.f64 (+.f64 a (+.f64 c b)) d) #s(literal 1 binary64)) d)
c
(+ b c)
(+.f64 c b)
(+ b c)
(+.f64 c b)
(+ b c)
(+.f64 c b)
b
(* b (+ 1 (/ c b)))
(*.f64 b (+.f64 #s(literal 1 binary64) (/.f64 c b)))
(* b (+ 1 (/ c b)))
(*.f64 b (+.f64 #s(literal 1 binary64) (/.f64 c b)))
(* b (+ 1 (/ c b)))
(*.f64 b (+.f64 #s(literal 1 binary64) (/.f64 c b)))
b
(* -1 (* b (- (* -1 (/ c b)) 1)))
(*.f64 b (+.f64 #s(literal 1 binary64) (/.f64 c b)))
(* -1 (* b (- (* -1 (/ c b)) 1)))
(*.f64 b (+.f64 #s(literal 1 binary64) (/.f64 c b)))
(* -1 (* b (- (* -1 (/ c b)) 1)))
(*.f64 b (+.f64 #s(literal 1 binary64) (/.f64 c b)))
b
(+ b c)
(+.f64 c b)
(+ b c)
(+.f64 c b)
(+ b c)
(+.f64 c b)
c
(* c (+ 1 (/ b c)))
(*.f64 c (+.f64 #s(literal 1 binary64) (/.f64 b c)))
(* c (+ 1 (/ b c)))
(*.f64 c (+.f64 #s(literal 1 binary64) (/.f64 b c)))
(* c (+ 1 (/ b c)))
(*.f64 c (+.f64 #s(literal 1 binary64) (/.f64 b c)))
c
(* -1 (* c (- (* -1 (/ b c)) 1)))
(*.f64 c (+.f64 #s(literal 1 binary64) (/.f64 b c)))
(* -1 (* c (- (* -1 (/ b c)) 1)))
(*.f64 c (+.f64 #s(literal 1 binary64) (/.f64 b c)))
(* -1 (* c (- (* -1 (/ b c)) 1)))
(*.f64 c (+.f64 #s(literal 1 binary64) (/.f64 b c)))
d
(+ a d)
(+.f64 a d)
(+ a d)
(+.f64 a d)
(+ a d)
(+.f64 a d)
a
(* a (+ 1 (/ d a)))
(*.f64 a (+.f64 #s(literal 1 binary64) (/.f64 d a)))
(* a (+ 1 (/ d a)))
(*.f64 a (+.f64 #s(literal 1 binary64) (/.f64 d a)))
(* a (+ 1 (/ d a)))
(*.f64 a (+.f64 #s(literal 1 binary64) (/.f64 d a)))
a
(* -1 (* a (- (* -1 (/ d a)) 1)))
(*.f64 a (+.f64 #s(literal 1 binary64) (/.f64 d a)))
(* -1 (* a (- (* -1 (/ d a)) 1)))
(*.f64 a (+.f64 #s(literal 1 binary64) (/.f64 d a)))
(* -1 (* a (- (* -1 (/ d a)) 1)))
(*.f64 a (+.f64 #s(literal 1 binary64) (/.f64 d a)))
a
(+ a d)
(+.f64 a d)
(+ a d)
(+.f64 a d)
(+ a d)
(+.f64 a d)
d
(* d (+ 1 (/ a d)))
(*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 a d)))
(* d (+ 1 (/ a d)))
(*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 a d)))
(* d (+ 1 (/ a d)))
(*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 a d)))
d
(* -1 (* d (- (* -1 (/ a d)) 1)))
(*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 a d)))
(* -1 (* d (- (* -1 (/ a d)) 1)))
(*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 a d)))
(* -1 (* d (- (* -1 (/ a d)) 1)))
(*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 a d)))
(* 2 b)
(*.f64 #s(literal 2 binary64) b)
(* 2 b)
(*.f64 #s(literal 2 binary64) b)
(* 2 b)
(*.f64 #s(literal 2 binary64) b)
(* 2 b)
(*.f64 #s(literal 2 binary64) b)
(* 2 b)
(*.f64 #s(literal 2 binary64) b)
(* 2 b)
(*.f64 #s(literal 2 binary64) b)
(* 2 b)
(*.f64 #s(literal 2 binary64) b)
(* 2 b)
(*.f64 #s(literal 2 binary64) b)
(* 2 b)
(*.f64 #s(literal 2 binary64) b)
(* 2 b)
(*.f64 #s(literal 2 binary64) b)
(* 2 b)
(*.f64 #s(literal 2 binary64) b)
(* 2 b)
(*.f64 #s(literal 2 binary64) b)
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* 2 d)
(*.f64 #s(literal 2 binary64) d)
(+ (* 2 a) (* 2 d))
(*.f64 #s(literal 2 binary64) (+.f64 a d))
(+ (* 2 a) (* 2 d))
(*.f64 #s(literal 2 binary64) (+.f64 a d))
(+ (* 2 a) (* 2 d))
(*.f64 #s(literal 2 binary64) (+.f64 a d))
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* a (+ 2 (* 2 (/ d a))))
(*.f64 a (*.f64 (-.f64 #s(literal -1 binary64) (/.f64 d a)) #s(literal -2 binary64)))
(* a (+ 2 (* 2 (/ d a))))
(*.f64 a (*.f64 (-.f64 #s(literal -1 binary64) (/.f64 d a)) #s(literal -2 binary64)))
(* a (+ 2 (* 2 (/ d a))))
(*.f64 a (*.f64 (-.f64 #s(literal -1 binary64) (/.f64 d a)) #s(literal -2 binary64)))
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* -1 (* a (- (* -2 (/ d a)) 2)))
(*.f64 a (*.f64 (-.f64 #s(literal -1 binary64) (/.f64 d a)) #s(literal -2 binary64)))
(* -1 (* a (- (* -2 (/ d a)) 2)))
(*.f64 a (*.f64 (-.f64 #s(literal -1 binary64) (/.f64 d a)) #s(literal -2 binary64)))
(* -1 (* a (- (* -2 (/ d a)) 2)))
(*.f64 a (*.f64 (-.f64 #s(literal -1 binary64) (/.f64 d a)) #s(literal -2 binary64)))
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(+ (* 2 a) (* 2 d))
(*.f64 #s(literal 2 binary64) (+.f64 a d))
(+ (* 2 a) (* 2 d))
(*.f64 #s(literal 2 binary64) (+.f64 a d))
(+ (* 2 a) (* 2 d))
(*.f64 #s(literal 2 binary64) (+.f64 a d))
(* 2 d)
(*.f64 #s(literal 2 binary64) d)
(* d (+ 2 (* 2 (/ a d))))
(*.f64 #s(literal 2 binary64) (*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 a d))))
(* d (+ 2 (* 2 (/ a d))))
(*.f64 #s(literal 2 binary64) (*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 a d))))
(* d (+ 2 (* 2 (/ a d))))
(*.f64 #s(literal 2 binary64) (*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 a d))))
(* 2 d)
(*.f64 #s(literal 2 binary64) d)
(* -1 (* d (- (* -2 (/ a d)) 2)))
(*.f64 #s(literal 2 binary64) (*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 a d))))
(* -1 (* d (- (* -2 (/ a d)) 2)))
(*.f64 #s(literal 2 binary64) (*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 a d))))
(* -1 (* d (- (* -2 (/ a d)) 2)))
(*.f64 #s(literal 2 binary64) (*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 a d))))
(* 2 (+ a d))
(*.f64 #s(literal 2 binary64) (+.f64 a d))
(+ (* 2 c) (* 2 (+ a d)))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 c d)))
(+ (* 2 c) (* 2 (+ a d)))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 c d)))
(+ (* 2 c) (* 2 (+ a d)))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 c d)))
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* c (+ 2 (* 2 (/ (+ a d) c))))
(*.f64 c (+.f64 #s(literal 2 binary64) (/.f64 (*.f64 #s(literal 2 binary64) (+.f64 a d)) c)))
(* c (+ 2 (* 2 (/ (+ a d) c))))
(*.f64 c (+.f64 #s(literal 2 binary64) (/.f64 (*.f64 #s(literal 2 binary64) (+.f64 a d)) c)))
(* c (+ 2 (* 2 (/ (+ a d) c))))
(*.f64 c (+.f64 #s(literal 2 binary64) (/.f64 (*.f64 #s(literal 2 binary64) (+.f64 a d)) c)))
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))
(*.f64 c (+.f64 #s(literal 2 binary64) (/.f64 (*.f64 #s(literal 2 binary64) (+.f64 a d)) c)))
(* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))
(*.f64 c (+.f64 #s(literal 2 binary64) (/.f64 (*.f64 #s(literal 2 binary64) (+.f64 a d)) c)))
(* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))
(*.f64 c (+.f64 #s(literal 2 binary64) (/.f64 (*.f64 #s(literal 2 binary64) (+.f64 a d)) c)))
(* 2 (+ a c))
(*.f64 #s(literal 2 binary64) (+.f64 a c))
(+ (* 2 d) (* 2 (+ a c)))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 c d)))
(+ (* 2 d) (* 2 (+ a c)))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 c d)))
(+ (* 2 d) (* 2 (+ a c)))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 c d)))
(* 2 d)
(*.f64 #s(literal 2 binary64) d)
(* d (+ 2 (* 2 (/ (+ a c) d))))
(*.f64 #s(literal 2 binary64) (*.f64 (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 a c) d)) d))
(* d (+ 2 (* 2 (/ (+ a c) d))))
(*.f64 #s(literal 2 binary64) (*.f64 (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 a c) d)) d))
(* d (+ 2 (* 2 (/ (+ a c) d))))
(*.f64 #s(literal 2 binary64) (*.f64 (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 a c) d)) d))
(* 2 d)
(*.f64 #s(literal 2 binary64) d)
(* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))
(*.f64 #s(literal 2 binary64) (*.f64 (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 a c) d)) d))
(* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))
(*.f64 #s(literal 2 binary64) (*.f64 (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 a c) d)) d))
(* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))
(*.f64 #s(literal 2 binary64) (*.f64 (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 a c) d)) d))
(* 2 (+ c d))
(*.f64 #s(literal 2 binary64) (+.f64 c d))
(+ (* 2 a) (* 2 (+ c d)))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 c d)))
(+ (* 2 a) (* 2 (+ c d)))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 c d)))
(+ (* 2 a) (* 2 (+ c d)))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 c d)))
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* a (+ 2 (* 2 (/ (+ c d) a))))
(*.f64 a (*.f64 (-.f64 #s(literal -1 binary64) (/.f64 (+.f64 c d) a)) #s(literal -2 binary64)))
(* a (+ 2 (* 2 (/ (+ c d) a))))
(*.f64 a (*.f64 (-.f64 #s(literal -1 binary64) (/.f64 (+.f64 c d) a)) #s(literal -2 binary64)))
(* a (+ 2 (* 2 (/ (+ c d) a))))
(*.f64 a (*.f64 (-.f64 #s(literal -1 binary64) (/.f64 (+.f64 c d) a)) #s(literal -2 binary64)))
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))
(*.f64 a (*.f64 (-.f64 #s(literal -1 binary64) (/.f64 (+.f64 c d) a)) #s(literal -2 binary64)))
(* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))
(*.f64 a (*.f64 (-.f64 #s(literal -1 binary64) (/.f64 (+.f64 c d) a)) #s(literal -2 binary64)))
(* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))
(*.f64 a (*.f64 (-.f64 #s(literal -1 binary64) (/.f64 (+.f64 c d) a)) #s(literal -2 binary64)))
(+ a d)
(+.f64 a d)
(+ a (+ c d))
(+.f64 a (+.f64 c d))
(+ a (+ c d))
(+.f64 a (+.f64 c d))
(+ a (+ c d))
(+.f64 a (+.f64 c d))
c
(* c (+ 1 (+ (/ a c) (/ d c))))
(*.f64 c (+.f64 (/.f64 a c) (+.f64 #s(literal 1 binary64) (/.f64 d c))))
(* c (+ 1 (+ (/ a c) (/ d c))))
(*.f64 c (+.f64 (/.f64 a c) (+.f64 #s(literal 1 binary64) (/.f64 d c))))
(* c (+ 1 (+ (/ a c) (/ d c))))
(*.f64 c (+.f64 (/.f64 a c) (+.f64 #s(literal 1 binary64) (/.f64 d c))))
c
(* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))
(*.f64 (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 a d) c)) c)
(* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))
(*.f64 (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 a d) c)) c)
(* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))
(*.f64 (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 a d) c)) c)
(+ a c)
(+.f64 a c)
(+ a (+ c d))
(+.f64 a (+.f64 c d))
(+ a (+ c d))
(+.f64 a (+.f64 c d))
(+ a (+ c d))
(+.f64 a (+.f64 c d))
d
(* d (+ 1 (+ (/ a d) (/ c d))))
(*.f64 d (+.f64 (/.f64 a d) (+.f64 #s(literal 1 binary64) (/.f64 c d))))
(* d (+ 1 (+ (/ a d) (/ c d))))
(*.f64 d (+.f64 (/.f64 a d) (+.f64 #s(literal 1 binary64) (/.f64 c d))))
(* d (+ 1 (+ (/ a d) (/ c d))))
(*.f64 d (+.f64 (/.f64 a d) (+.f64 #s(literal 1 binary64) (/.f64 c d))))
d
(* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))
(*.f64 (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 a c) d)) d)
(* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))
(*.f64 (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 a c) d)) d)
(* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))
(*.f64 (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 a c) d)) d)
(+ c d)
(+.f64 c d)
(+ a (+ c d))
(+.f64 a (+.f64 c d))
(+ a (+ c d))
(+.f64 a (+.f64 c d))
(+ a (+ c d))
(+.f64 a (+.f64 c d))
a
(* a (+ 1 (+ (/ c a) (/ d a))))
(*.f64 a (+.f64 (/.f64 d a) (+.f64 #s(literal 1 binary64) (/.f64 c a))))
(* a (+ 1 (+ (/ c a) (/ d a))))
(*.f64 a (+.f64 (/.f64 d a) (+.f64 #s(literal 1 binary64) (/.f64 c a))))
(* a (+ 1 (+ (/ c a) (/ d a))))
(*.f64 a (+.f64 (/.f64 d a) (+.f64 #s(literal 1 binary64) (/.f64 c a))))
a
(* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))
(*.f64 (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 c d) a)) a)
(* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))
(*.f64 (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 c d) a)) a)
(* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))
(*.f64 (+.f64 #s(literal 1 binary64) (/.f64 (+.f64 c d) a)) a)
d
(+ c d)
(+.f64 c d)
(+ c d)
(+.f64 c d)
(+ c d)
(+.f64 c d)
c
(* c (+ 1 (/ d c)))
(*.f64 c (+.f64 #s(literal 1 binary64) (/.f64 d c)))
(* c (+ 1 (/ d c)))
(*.f64 c (+.f64 #s(literal 1 binary64) (/.f64 d c)))
(* c (+ 1 (/ d c)))
(*.f64 c (+.f64 #s(literal 1 binary64) (/.f64 d c)))
c
(* -1 (* c (- (* -1 (/ d c)) 1)))
(*.f64 c (+.f64 #s(literal 1 binary64) (/.f64 d c)))
(* -1 (* c (- (* -1 (/ d c)) 1)))
(*.f64 c (+.f64 #s(literal 1 binary64) (/.f64 d c)))
(* -1 (* c (- (* -1 (/ d c)) 1)))
(*.f64 c (+.f64 #s(literal 1 binary64) (/.f64 d c)))
c
(+ c d)
(+.f64 c d)
(+ c d)
(+.f64 c d)
(+ c d)
(+.f64 c d)
d
(* d (+ 1 (/ c d)))
(*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 c d)))
(* d (+ 1 (/ c d)))
(*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 c d)))
(* d (+ 1 (/ c d)))
(*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 c d)))
d
(* -1 (* d (- (* -1 (/ c d)) 1)))
(*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 c d)))
(* -1 (* d (- (* -1 (/ c d)) 1)))
(*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 c d)))
(* -1 (* d (- (* -1 (/ c d)) 1)))
(*.f64 d (+.f64 #s(literal 1 binary64) (/.f64 c d)))

eval168.0ms (3.2%)

Compiler

Compiled 3598 to 283 computations (92.1% saved)

prune121.0ms (2.3%)

Pruning

7 alts after pruning (2 fresh and 5 done)

PrunedKeptTotal
New4142416
Fresh000
Picked055
Done000
Total4147421
Accuracy
100.0%
Counts
421 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
11.3%
(*.f64 (+.f64 (+.f64 c d) a) #s(literal 2 binary64))
11.3%
(*.f64 (+.f64 (+.f64 c a) d) #s(literal 2 binary64))
100.0%
(*.f64 (+.f64 (+.f64 b c) (+.f64 a d)) #s(literal 2 binary64))
11.3%
(*.f64 (+.f64 (+.f64 a d) c) #s(literal 2 binary64))
8.6%
(*.f64 (+.f64 a d) #s(literal 2 binary64))
11.2%
(*.f64 c #s(literal 2 binary64))
6.5%
(*.f64 b #s(literal 2 binary64))
Compiler

Compiled 69 to 52 computations (24.6% saved)

simplify8.0ms (0.1%)

Algorithm
egg-herbie
Localize:

Found 6 expressions of interest:

NewMetricScoreProgram
cost-diff0
(+.f64 c a)
cost-diff0
(+.f64 (+.f64 c a) d)
cost-diff0
(*.f64 (+.f64 (+.f64 c a) d) #s(literal 2 binary64))
cost-diff0
(+.f64 a d)
cost-diff0
(+.f64 (+.f64 a d) c)
cost-diff0
(*.f64 (+.f64 (+.f64 a d) c) #s(literal 2 binary64))
Rules
48×fma-lowering-fma.f32
48×fma-define
48×+-lowering-+.f64
48×+-lowering-+.f32
48×fma-lowering-fma.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01034
11934
24734
38634
410634
010634
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* (+ (+ a d) c) 2)
(+ (+ a d) c)
(+ a d)
a
d
c
2
(* (+ (+ c a) d) 2)
(+ (+ c a) d)
(+ c a)
c
a
d
2
Outputs
(* (+ (+ a d) c) 2)
(*.f64 (+.f64 a (+.f64 d c)) #s(literal 2 binary64))
(+ (+ a d) c)
(+.f64 a (+.f64 d c))
(+ a d)
(+.f64 a d)
a
d
c
2
#s(literal 2 binary64)
(* (+ (+ c a) d) 2)
(*.f64 (+.f64 a (+.f64 d c)) #s(literal 2 binary64))
(+ (+ c a) d)
(+.f64 a (+.f64 d c))
(+ c a)
(+.f64 a c)
c
a
d
2
#s(literal 2 binary64)

localize65.0ms (1.3%)

Localize:

Found 6 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(+.f64 c a)
accuracy100.0%
(*.f64 (+.f64 (+.f64 c a) d) #s(literal 2 binary64))
accuracy98.6%
(+.f64 (+.f64 c a) d)
accuracy100.0%
(+.f64 (+.f64 a d) c)
accuracy100.0%
(+.f64 a d)
accuracy100.0%
(*.f64 (+.f64 (+.f64 a d) c) #s(literal 2 binary64))
Results
37.0ms256×0valid
Compiler

Compiled 43 to 12 computations (72.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 10.0ms
ival-add: 5.0ms (47.6% of total)
ival-mult: 5.0ms (47.6% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series3.0ms (0.1%)

Counts
6 → 192
Calls
Call 1
Inputs
#<alt (* (+ (+ a d) c) 2)>
#<alt (+ (+ a d) c)>
#<alt (+ a d)>
#<alt (* (+ (+ c a) d) 2)>
#<alt (+ (+ c a) d)>
#<alt (+ c a)>
Outputs
#<alt (* 2 (+ c d))>
#<alt (+ (* 2 a) (* 2 (+ c d)))>
#<alt (+ (* 2 a) (* 2 (+ c d)))>
#<alt (+ (* 2 a) (* 2 (+ c d)))>
#<alt (* 2 a)>
#<alt (* a (+ 2 (* 2 (/ (+ c d) a))))>
#<alt (* a (+ 2 (* 2 (/ (+ c d) a))))>
#<alt (* a (+ 2 (* 2 (/ (+ c d) a))))>
#<alt (* 2 a)>
#<alt (* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))>
#<alt (* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))>
#<alt (* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))>
#<alt (* 2 (+ a c))>
#<alt (+ (* 2 d) (* 2 (+ a c)))>
#<alt (+ (* 2 d) (* 2 (+ a c)))>
#<alt (+ (* 2 d) (* 2 (+ a c)))>
#<alt (* 2 d)>
#<alt (* d (+ 2 (* 2 (/ (+ a c) d))))>
#<alt (* d (+ 2 (* 2 (/ (+ a c) d))))>
#<alt (* d (+ 2 (* 2 (/ (+ a c) d))))>
#<alt (* 2 d)>
#<alt (* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))>
#<alt (* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))>
#<alt (* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))>
#<alt (* 2 (+ a d))>
#<alt (+ (* 2 c) (* 2 (+ a d)))>
#<alt (+ (* 2 c) (* 2 (+ a d)))>
#<alt (+ (* 2 c) (* 2 (+ a d)))>
#<alt (* 2 c)>
#<alt (* c (+ 2 (* 2 (/ (+ a d) c))))>
#<alt (* c (+ 2 (* 2 (/ (+ a d) c))))>
#<alt (* c (+ 2 (* 2 (/ (+ a d) c))))>
#<alt (* 2 c)>
#<alt (* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))>
#<alt (* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))>
#<alt (* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))>
#<alt (+ c d)>
#<alt (+ a (+ c d))>
#<alt (+ a (+ c d))>
#<alt (+ a (+ c d))>
#<alt a>
#<alt (* a (+ 1 (+ (/ c a) (/ d a))))>
#<alt (* a (+ 1 (+ (/ c a) (/ d a))))>
#<alt (* a (+ 1 (+ (/ c a) (/ d a))))>
#<alt a>
#<alt (* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))>
#<alt (+ a c)>
#<alt (+ a (+ c d))>
#<alt (+ a (+ c d))>
#<alt (+ a (+ c d))>
#<alt d>
#<alt (* d (+ 1 (+ (/ a d) (/ c d))))>
#<alt (* d (+ 1 (+ (/ a d) (/ c d))))>
#<alt (* d (+ 1 (+ (/ a d) (/ c d))))>
#<alt d>
#<alt (* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))>
#<alt (+ a d)>
#<alt (+ a (+ c d))>
#<alt (+ a (+ c d))>
#<alt (+ a (+ c d))>
#<alt c>
#<alt (* c (+ 1 (+ (/ a c) (/ d c))))>
#<alt (* c (+ 1 (+ (/ a c) (/ d c))))>
#<alt (* c (+ 1 (+ (/ a c) (/ d c))))>
#<alt c>
#<alt (* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))>
#<alt d>
#<alt (+ a d)>
#<alt (+ a d)>
#<alt (+ a d)>
#<alt a>
#<alt (* a (+ 1 (/ d a)))>
#<alt (* a (+ 1 (/ d a)))>
#<alt (* a (+ 1 (/ d a)))>
#<alt a>
#<alt (* -1 (* a (- (* -1 (/ d a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ d a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ d a)) 1)))>
#<alt a>
#<alt (+ a d)>
#<alt (+ a d)>
#<alt (+ a d)>
#<alt d>
#<alt (* d (+ 1 (/ a d)))>
#<alt (* d (+ 1 (/ a d)))>
#<alt (* d (+ 1 (/ a d)))>
#<alt d>
#<alt (* -1 (* d (- (* -1 (/ a d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ a d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ a d)) 1)))>
#<alt (* 2 (+ a d))>
#<alt (+ (* 2 c) (* 2 (+ a d)))>
#<alt (+ (* 2 c) (* 2 (+ a d)))>
#<alt (+ (* 2 c) (* 2 (+ a d)))>
#<alt (* 2 c)>
#<alt (* c (+ 2 (* 2 (/ (+ a d) c))))>
#<alt (* c (+ 2 (* 2 (/ (+ a d) c))))>
#<alt (* c (+ 2 (* 2 (/ (+ a d) c))))>
#<alt (* 2 c)>
#<alt (* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))>
#<alt (* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))>
#<alt (* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))>
#<alt (* 2 (+ c d))>
#<alt (+ (* 2 a) (* 2 (+ c d)))>
#<alt (+ (* 2 a) (* 2 (+ c d)))>
#<alt (+ (* 2 a) (* 2 (+ c d)))>
#<alt (* 2 a)>
#<alt (* a (+ 2 (* 2 (/ (+ c d) a))))>
#<alt (* a (+ 2 (* 2 (/ (+ c d) a))))>
#<alt (* a (+ 2 (* 2 (/ (+ c d) a))))>
#<alt (* 2 a)>
#<alt (* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))>
#<alt (* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))>
#<alt (* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))>
#<alt (* 2 (+ a c))>
#<alt (+ (* 2 d) (* 2 (+ a c)))>
#<alt (+ (* 2 d) (* 2 (+ a c)))>
#<alt (+ (* 2 d) (* 2 (+ a c)))>
#<alt (* 2 d)>
#<alt (* d (+ 2 (* 2 (/ (+ a c) d))))>
#<alt (* d (+ 2 (* 2 (/ (+ a c) d))))>
#<alt (* d (+ 2 (* 2 (/ (+ a c) d))))>
#<alt (* 2 d)>
#<alt (* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))>
#<alt (* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))>
#<alt (* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))>
#<alt (+ a d)>
#<alt (+ a (+ c d))>
#<alt (+ a (+ c d))>
#<alt (+ a (+ c d))>
#<alt c>
#<alt (* c (+ 1 (+ (/ a c) (/ d c))))>
#<alt (* c (+ 1 (+ (/ a c) (/ d c))))>
#<alt (* c (+ 1 (+ (/ a c) (/ d c))))>
#<alt c>
#<alt (* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))>
#<alt (+ c d)>
#<alt (+ a (+ c d))>
#<alt (+ a (+ c d))>
#<alt (+ a (+ c d))>
#<alt a>
#<alt (* a (+ 1 (+ (/ c a) (/ d a))))>
#<alt (* a (+ 1 (+ (/ c a) (/ d a))))>
#<alt (* a (+ 1 (+ (/ c a) (/ d a))))>
#<alt a>
#<alt (* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))>
#<alt (+ a c)>
#<alt (+ a (+ c d))>
#<alt (+ a (+ c d))>
#<alt (+ a (+ c d))>
#<alt d>
#<alt (* d (+ 1 (+ (/ a d) (/ c d))))>
#<alt (* d (+ 1 (+ (/ a d) (/ c d))))>
#<alt (* d (+ 1 (+ (/ a d) (/ c d))))>
#<alt d>
#<alt (* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))>
#<alt (* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))>
#<alt a>
#<alt (+ a c)>
#<alt (+ a c)>
#<alt (+ a c)>
#<alt c>
#<alt (* c (+ 1 (/ a c)))>
#<alt (* c (+ 1 (/ a c)))>
#<alt (* c (+ 1 (/ a c)))>
#<alt c>
#<alt (* -1 (* c (- (* -1 (/ a c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ a c)) 1)))>
#<alt (* -1 (* c (- (* -1 (/ a c)) 1)))>
#<alt c>
#<alt (+ a c)>
#<alt (+ a c)>
#<alt (+ a c)>
#<alt a>
#<alt (* a (+ 1 (/ c a)))>
#<alt (* a (+ 1 (/ c a)))>
#<alt (* a (+ 1 (/ c a)))>
#<alt a>
#<alt (* -1 (* a (- (* -1 (/ c a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ c a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ c a)) 1)))>
Calls

48 calls:

TimeVariablePointExpression
0.0ms
c
@inf
(+ c a)
0.0ms
a
@-inf
(+ c a)
0.0ms
c
@-inf
(+ c a)
0.0ms
a
@inf
(+ c a)
0.0ms
a
@0
(* (+ (+ a d) c) 2)

rewrite17.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
48×fma-lowering-fma.f32
48×fma-define
48×+-lowering-+.f64
48×+-lowering-+.f32
48×fma-lowering-fma.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01026
11926
24726
38626
410626
010626
Stop Event
iter limit
saturated
Counts
6 → 56
Calls
Call 1
Inputs
(* (+ (+ a d) c) 2)
(+ (+ a d) c)
(+ a d)
(* (+ (+ c a) d) 2)
(+ (+ c a) d)
(+ c a)
Outputs
(+.f64 (*.f64 a #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (+.f64 d c)))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 a c)) (*.f64 d #s(literal 2 binary64)))
(+.f64 (*.f64 (+.f64 a d) #s(literal 2 binary64)) (*.f64 c #s(literal 2 binary64)))
(+.f64 (*.f64 c #s(literal 2 binary64)) (*.f64 (+.f64 a d) #s(literal 2 binary64)))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 d c)) (*.f64 a #s(literal 2 binary64)))
(+.f64 (*.f64 d #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (+.f64 a c)))
(fma.f64 a #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 d c)))
(fma.f64 d #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 a c)))
(fma.f64 (+.f64 a d) #s(literal 2 binary64) (*.f64 c #s(literal 2 binary64)))
(fma.f64 c #s(literal 2 binary64) (*.f64 (+.f64 a d) #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) a (*.f64 #s(literal 2 binary64) (+.f64 d c)))
(fma.f64 #s(literal 2 binary64) d (*.f64 #s(literal 2 binary64) (+.f64 a c)))
(fma.f64 #s(literal 2 binary64) (+.f64 a d) (*.f64 c #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) c (*.f64 (+.f64 a d) #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) (+.f64 a c) (*.f64 d #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) (+.f64 d c) (*.f64 a #s(literal 2 binary64)))
(fma.f64 (+.f64 a c) #s(literal 2 binary64) (*.f64 d #s(literal 2 binary64)))
(fma.f64 (+.f64 d c) #s(literal 2 binary64) (*.f64 a #s(literal 2 binary64)))
(*.f64 (+.f64 a (+.f64 d c)) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 d c)))
(+.f64 a (+.f64 d c))
(+.f64 d (+.f64 a c))
(+.f64 (+.f64 a d) c)
(+.f64 c (+.f64 a d))
(+.f64 (+.f64 a c) d)
(+.f64 (+.f64 d c) a)
(+.f64 a d)
(+.f64 d a)
(+.f64 (*.f64 a #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (+.f64 d c)))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 a c)) (*.f64 d #s(literal 2 binary64)))
(+.f64 (*.f64 (+.f64 a d) #s(literal 2 binary64)) (*.f64 c #s(literal 2 binary64)))
(+.f64 (*.f64 c #s(literal 2 binary64)) (*.f64 (+.f64 a d) #s(literal 2 binary64)))
(+.f64 (*.f64 #s(literal 2 binary64) (+.f64 d c)) (*.f64 a #s(literal 2 binary64)))
(+.f64 (*.f64 d #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (+.f64 a c)))
(fma.f64 a #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 d c)))
(fma.f64 d #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (+.f64 a c)))
(fma.f64 (+.f64 a d) #s(literal 2 binary64) (*.f64 c #s(literal 2 binary64)))
(fma.f64 c #s(literal 2 binary64) (*.f64 (+.f64 a d) #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) a (*.f64 #s(literal 2 binary64) (+.f64 d c)))
(fma.f64 #s(literal 2 binary64) d (*.f64 #s(literal 2 binary64) (+.f64 a c)))
(fma.f64 #s(literal 2 binary64) (+.f64 a d) (*.f64 c #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) c (*.f64 (+.f64 a d) #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) (+.f64 a c) (*.f64 d #s(literal 2 binary64)))
(fma.f64 #s(literal 2 binary64) (+.f64 d c) (*.f64 a #s(literal 2 binary64)))
(fma.f64 (+.f64 a c) #s(literal 2 binary64) (*.f64 d #s(literal 2 binary64)))
(fma.f64 (+.f64 d c) #s(literal 2 binary64) (*.f64 a #s(literal 2 binary64)))
(*.f64 (+.f64 a (+.f64 d c)) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 d c)))
(+.f64 a (+.f64 d c))
(+.f64 d (+.f64 a c))
(+.f64 (+.f64 a d) c)
(+.f64 c (+.f64 a d))
(+.f64 (+.f64 a c) d)
(+.f64 (+.f64 d c) a)
(+.f64 a c)
(+.f64 c a)

simplify259.0ms (5%)

Algorithm
egg-herbie
Rules
2366×*-lowering-*.f32
2366×*-lowering-*.f64
1468×times-frac
1460×/-lowering-/.f32
1460×/-lowering-/.f64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
095864
1314756
2830756
32534756
47016756
08222756
Stop Event
iter limit
node limit
Counts
192 → 192
Calls
Call 1
Inputs
(* 2 (+ c d))
(+ (* 2 a) (* 2 (+ c d)))
(+ (* 2 a) (* 2 (+ c d)))
(+ (* 2 a) (* 2 (+ c d)))
(* 2 a)
(* a (+ 2 (* 2 (/ (+ c d) a))))
(* a (+ 2 (* 2 (/ (+ c d) a))))
(* a (+ 2 (* 2 (/ (+ c d) a))))
(* 2 a)
(* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))
(* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))
(* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))
(* 2 (+ a c))
(+ (* 2 d) (* 2 (+ a c)))
(+ (* 2 d) (* 2 (+ a c)))
(+ (* 2 d) (* 2 (+ a c)))
(* 2 d)
(* d (+ 2 (* 2 (/ (+ a c) d))))
(* d (+ 2 (* 2 (/ (+ a c) d))))
(* d (+ 2 (* 2 (/ (+ a c) d))))
(* 2 d)
(* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))
(* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))
(* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))
(* 2 (+ a d))
(+ (* 2 c) (* 2 (+ a d)))
(+ (* 2 c) (* 2 (+ a d)))
(+ (* 2 c) (* 2 (+ a d)))
(* 2 c)
(* c (+ 2 (* 2 (/ (+ a d) c))))
(* c (+ 2 (* 2 (/ (+ a d) c))))
(* c (+ 2 (* 2 (/ (+ a d) c))))
(* 2 c)
(* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))
(* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))
(* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))
(+ c d)
(+ a (+ c d))
(+ a (+ c d))
(+ a (+ c d))
a
(* a (+ 1 (+ (/ c a) (/ d a))))
(* a (+ 1 (+ (/ c a) (/ d a))))
(* a (+ 1 (+ (/ c a) (/ d a))))
a
(* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))
(* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))
(* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))
(+ a c)
(+ a (+ c d))
(+ a (+ c d))
(+ a (+ c d))
d
(* d (+ 1 (+ (/ a d) (/ c d))))
(* d (+ 1 (+ (/ a d) (/ c d))))
(* d (+ 1 (+ (/ a d) (/ c d))))
d
(* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))
(* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))
(* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))
(+ a d)
(+ a (+ c d))
(+ a (+ c d))
(+ a (+ c d))
c
(* c (+ 1 (+ (/ a c) (/ d c))))
(* c (+ 1 (+ (/ a c) (/ d c))))
(* c (+ 1 (+ (/ a c) (/ d c))))
c
(* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))
(* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))
(* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))
d
(+ a d)
(+ a d)
(+ a d)
a
(* a (+ 1 (/ d a)))
(* a (+ 1 (/ d a)))
(* a (+ 1 (/ d a)))
a
(* -1 (* a (- (* -1 (/ d a)) 1)))
(* -1 (* a (- (* -1 (/ d a)) 1)))
(* -1 (* a (- (* -1 (/ d a)) 1)))
a
(+ a d)
(+ a d)
(+ a d)
d
(* d (+ 1 (/ a d)))
(* d (+ 1 (/ a d)))
(* d (+ 1 (/ a d)))
d
(* -1 (* d (- (* -1 (/ a d)) 1)))
(* -1 (* d (- (* -1 (/ a d)) 1)))
(* -1 (* d (- (* -1 (/ a d)) 1)))
(* 2 (+ a d))
(+ (* 2 c) (* 2 (+ a d)))
(+ (* 2 c) (* 2 (+ a d)))
(+ (* 2 c) (* 2 (+ a d)))
(* 2 c)
(* c (+ 2 (* 2 (/ (+ a d) c))))
(* c (+ 2 (* 2 (/ (+ a d) c))))
(* c (+ 2 (* 2 (/ (+ a d) c))))
(* 2 c)
(* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))
(* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))
(* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))
(* 2 (+ c d))
(+ (* 2 a) (* 2 (+ c d)))
(+ (* 2 a) (* 2 (+ c d)))
(+ (* 2 a) (* 2 (+ c d)))
(* 2 a)
(* a (+ 2 (* 2 (/ (+ c d) a))))
(* a (+ 2 (* 2 (/ (+ c d) a))))
(* a (+ 2 (* 2 (/ (+ c d) a))))
(* 2 a)
(* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))
(* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))
(* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))
(* 2 (+ a c))
(+ (* 2 d) (* 2 (+ a c)))
(+ (* 2 d) (* 2 (+ a c)))
(+ (* 2 d) (* 2 (+ a c)))
(* 2 d)
(* d (+ 2 (* 2 (/ (+ a c) d))))
(* d (+ 2 (* 2 (/ (+ a c) d))))
(* d (+ 2 (* 2 (/ (+ a c) d))))
(* 2 d)
(* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))
(* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))
(* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))
(+ a d)
(+ a (+ c d))
(+ a (+ c d))
(+ a (+ c d))
c
(* c (+ 1 (+ (/ a c) (/ d c))))
(* c (+ 1 (+ (/ a c) (/ d c))))
(* c (+ 1 (+ (/ a c) (/ d c))))
c
(* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))
(* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))
(* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))
(+ c d)
(+ a (+ c d))
(+ a (+ c d))
(+ a (+ c d))
a
(* a (+ 1 (+ (/ c a) (/ d a))))
(* a (+ 1 (+ (/ c a) (/ d a))))
(* a (+ 1 (+ (/ c a) (/ d a))))
a
(* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))
(* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))
(* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))
(+ a c)
(+ a (+ c d))
(+ a (+ c d))
(+ a (+ c d))
d
(* d (+ 1 (+ (/ a d) (/ c d))))
(* d (+ 1 (+ (/ a d) (/ c d))))
(* d (+ 1 (+ (/ a d) (/ c d))))
d
(* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))
(* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))
(* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))
a
(+ a c)
(+ a c)
(+ a c)
c
(* c (+ 1 (/ a c)))
(* c (+ 1 (/ a c)))
(* c (+ 1 (/ a c)))
c
(* -1 (* c (- (* -1 (/ a c)) 1)))
(* -1 (* c (- (* -1 (/ a c)) 1)))
(* -1 (* c (- (* -1 (/ a c)) 1)))
c
(+ a c)
(+ a c)
(+ a c)
a
(* a (+ 1 (/ c a)))
(* a (+ 1 (/ c a)))
(* a (+ 1 (/ c a)))
a
(* -1 (* a (- (* -1 (/ c a)) 1)))
(* -1 (* a (- (* -1 (/ c a)) 1)))
(* -1 (* a (- (* -1 (/ c a)) 1)))
Outputs
(* 2 (+ c d))
(*.f64 #s(literal 2 binary64) (+.f64 c d))
(+ (* 2 a) (* 2 (+ c d)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(+ (* 2 a) (* 2 (+ c d)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(+ (* 2 a) (* 2 (+ c d)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* a (+ 2 (* 2 (/ (+ c d) a))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* a (+ 2 (* 2 (/ (+ c d) a))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* a (+ 2 (* 2 (/ (+ c d) a))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* 2 (+ a c))
(*.f64 #s(literal 2 binary64) (+.f64 c a))
(+ (* 2 d) (* 2 (+ a c)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(+ (* 2 d) (* 2 (+ a c)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(+ (* 2 d) (* 2 (+ a c)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* 2 d)
(*.f64 #s(literal 2 binary64) d)
(* d (+ 2 (* 2 (/ (+ a c) d))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* d (+ 2 (* 2 (/ (+ a c) d))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* d (+ 2 (* 2 (/ (+ a c) d))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* 2 d)
(*.f64 #s(literal 2 binary64) d)
(* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* 2 (+ a d))
(*.f64 #s(literal 2 binary64) (+.f64 d a))
(+ (* 2 c) (* 2 (+ a d)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(+ (* 2 c) (* 2 (+ a d)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(+ (* 2 c) (* 2 (+ a d)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* c (+ 2 (* 2 (/ (+ a d) c))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* c (+ 2 (* 2 (/ (+ a d) c))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* c (+ 2 (* 2 (/ (+ a d) c))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(+ c d)
(+.f64 c d)
(+ a (+ c d))
(+.f64 c (+.f64 d a))
(+ a (+ c d))
(+.f64 c (+.f64 d a))
(+ a (+ c d))
(+.f64 c (+.f64 d a))
a
(* a (+ 1 (+ (/ c a) (/ d a))))
(+.f64 c (+.f64 d a))
(* a (+ 1 (+ (/ c a) (/ d a))))
(+.f64 c (+.f64 d a))
(* a (+ 1 (+ (/ c a) (/ d a))))
(+.f64 c (+.f64 d a))
a
(* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))
(+.f64 c (+.f64 d a))
(* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))
(+.f64 c (+.f64 d a))
(* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))
(+.f64 c (+.f64 d a))
(+ a c)
(+.f64 c a)
(+ a (+ c d))
(+.f64 c (+.f64 d a))
(+ a (+ c d))
(+.f64 c (+.f64 d a))
(+ a (+ c d))
(+.f64 c (+.f64 d a))
d
(* d (+ 1 (+ (/ a d) (/ c d))))
(+.f64 c (+.f64 d a))
(* d (+ 1 (+ (/ a d) (/ c d))))
(+.f64 c (+.f64 d a))
(* d (+ 1 (+ (/ a d) (/ c d))))
(+.f64 c (+.f64 d a))
d
(* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))
(+.f64 c (+.f64 d a))
(* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))
(+.f64 c (+.f64 d a))
(* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))
(+.f64 c (+.f64 d a))
(+ a d)
(+.f64 d a)
(+ a (+ c d))
(+.f64 c (+.f64 d a))
(+ a (+ c d))
(+.f64 c (+.f64 d a))
(+ a (+ c d))
(+.f64 c (+.f64 d a))
c
(* c (+ 1 (+ (/ a c) (/ d c))))
(+.f64 c (+.f64 d a))
(* c (+ 1 (+ (/ a c) (/ d c))))
(+.f64 c (+.f64 d a))
(* c (+ 1 (+ (/ a c) (/ d c))))
(+.f64 c (+.f64 d a))
c
(* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))
(+.f64 c (+.f64 d a))
(* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))
(+.f64 c (+.f64 d a))
(* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))
(+.f64 c (+.f64 d a))
d
(+ a d)
(+.f64 d a)
(+ a d)
(+.f64 d a)
(+ a d)
(+.f64 d a)
a
(* a (+ 1 (/ d a)))
(+.f64 d a)
(* a (+ 1 (/ d a)))
(+.f64 d a)
(* a (+ 1 (/ d a)))
(+.f64 d a)
a
(* -1 (* a (- (* -1 (/ d a)) 1)))
(+.f64 d a)
(* -1 (* a (- (* -1 (/ d a)) 1)))
(+.f64 d a)
(* -1 (* a (- (* -1 (/ d a)) 1)))
(+.f64 d a)
a
(+ a d)
(+.f64 d a)
(+ a d)
(+.f64 d a)
(+ a d)
(+.f64 d a)
d
(* d (+ 1 (/ a d)))
(+.f64 d a)
(* d (+ 1 (/ a d)))
(+.f64 d a)
(* d (+ 1 (/ a d)))
(+.f64 d a)
d
(* -1 (* d (- (* -1 (/ a d)) 1)))
(+.f64 d a)
(* -1 (* d (- (* -1 (/ a d)) 1)))
(+.f64 d a)
(* -1 (* d (- (* -1 (/ a d)) 1)))
(+.f64 d a)
(* 2 (+ a d))
(*.f64 #s(literal 2 binary64) (+.f64 d a))
(+ (* 2 c) (* 2 (+ a d)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(+ (* 2 c) (* 2 (+ a d)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(+ (* 2 c) (* 2 (+ a d)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* c (+ 2 (* 2 (/ (+ a d) c))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* c (+ 2 (* 2 (/ (+ a d) c))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* c (+ 2 (* 2 (/ (+ a d) c))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* 2 c)
(*.f64 #s(literal 2 binary64) c)
(* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* -1 (* c (- (* -2 (/ (+ a d) c)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* 2 (+ c d))
(*.f64 #s(literal 2 binary64) (+.f64 c d))
(+ (* 2 a) (* 2 (+ c d)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(+ (* 2 a) (* 2 (+ c d)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(+ (* 2 a) (* 2 (+ c d)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* a (+ 2 (* 2 (/ (+ c d) a))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* a (+ 2 (* 2 (/ (+ c d) a))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* a (+ 2 (* 2 (/ (+ c d) a))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* -1 (* a (- (* -2 (/ (+ c d) a)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* 2 (+ a c))
(*.f64 #s(literal 2 binary64) (+.f64 c a))
(+ (* 2 d) (* 2 (+ a c)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(+ (* 2 d) (* 2 (+ a c)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(+ (* 2 d) (* 2 (+ a c)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* 2 d)
(*.f64 #s(literal 2 binary64) d)
(* d (+ 2 (* 2 (/ (+ a c) d))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* d (+ 2 (* 2 (/ (+ a c) d))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* d (+ 2 (* 2 (/ (+ a c) d))))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* 2 d)
(*.f64 #s(literal 2 binary64) d)
(* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(* -1 (* d (- (* -2 (/ (+ a c) d)) 2)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 d a)))
(+ a d)
(+.f64 d a)
(+ a (+ c d))
(+.f64 c (+.f64 d a))
(+ a (+ c d))
(+.f64 c (+.f64 d a))
(+ a (+ c d))
(+.f64 c (+.f64 d a))
c
(* c (+ 1 (+ (/ a c) (/ d c))))
(+.f64 c (+.f64 d a))
(* c (+ 1 (+ (/ a c) (/ d c))))
(+.f64 c (+.f64 d a))
(* c (+ 1 (+ (/ a c) (/ d c))))
(+.f64 c (+.f64 d a))
c
(* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))
(+.f64 c (+.f64 d a))
(* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))
(+.f64 c (+.f64 d a))
(* -1 (* c (- (* -1 (/ (+ a d) c)) 1)))
(+.f64 c (+.f64 d a))
(+ c d)
(+.f64 c d)
(+ a (+ c d))
(+.f64 c (+.f64 d a))
(+ a (+ c d))
(+.f64 c (+.f64 d a))
(+ a (+ c d))
(+.f64 c (+.f64 d a))
a
(* a (+ 1 (+ (/ c a) (/ d a))))
(+.f64 c (+.f64 d a))
(* a (+ 1 (+ (/ c a) (/ d a))))
(+.f64 c (+.f64 d a))
(* a (+ 1 (+ (/ c a) (/ d a))))
(+.f64 c (+.f64 d a))
a
(* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))
(+.f64 c (+.f64 d a))
(* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))
(+.f64 c (+.f64 d a))
(* -1 (* a (- (* -1 (/ (+ c d) a)) 1)))
(+.f64 c (+.f64 d a))
(+ a c)
(+.f64 c a)
(+ a (+ c d))
(+.f64 c (+.f64 d a))
(+ a (+ c d))
(+.f64 c (+.f64 d a))
(+ a (+ c d))
(+.f64 c (+.f64 d a))
d
(* d (+ 1 (+ (/ a d) (/ c d))))
(+.f64 c (+.f64 d a))
(* d (+ 1 (+ (/ a d) (/ c d))))
(+.f64 c (+.f64 d a))
(* d (+ 1 (+ (/ a d) (/ c d))))
(+.f64 c (+.f64 d a))
d
(* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))
(+.f64 c (+.f64 d a))
(* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))
(+.f64 c (+.f64 d a))
(* -1 (* d (- (* -1 (/ (+ a c) d)) 1)))
(+.f64 c (+.f64 d a))
a
(+ a c)
(+.f64 c a)
(+ a c)
(+.f64 c a)
(+ a c)
(+.f64 c a)
c
(* c (+ 1 (/ a c)))
(+.f64 c a)
(* c (+ 1 (/ a c)))
(+.f64 c a)
(* c (+ 1 (/ a c)))
(+.f64 c a)
c
(* -1 (* c (- (* -1 (/ a c)) 1)))
(+.f64 c a)
(* -1 (* c (- (* -1 (/ a c)) 1)))
(+.f64 c a)
(* -1 (* c (- (* -1 (/ a c)) 1)))
(+.f64 c a)
c
(+ a c)
(+.f64 c a)
(+ a c)
(+.f64 c a)
(+ a c)
(+.f64 c a)
a
(* a (+ 1 (/ c a)))
(+.f64 c a)
(* a (+ 1 (/ c a)))
(+.f64 c a)
(* a (+ 1 (/ c a)))
(+.f64 c a)
a
(* -1 (* a (- (* -1 (/ c a)) 1)))
(+.f64 c a)
(* -1 (* a (- (* -1 (/ c a)) 1)))
(+.f64 c a)
(* -1 (* a (- (* -1 (/ c a)) 1)))
(+.f64 c a)

eval24.0ms (0.5%)

Compiler

Compiled 1644 to 66 computations (96% saved)

prune13.0ms (0.2%)

Pruning

7 alts after pruning (0 fresh and 7 done)

PrunedKeptTotal
New2480248
Fresh000
Picked022
Done055
Total2487255
Accuracy
100.0%
Counts
255 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
11.3%
(*.f64 (+.f64 (+.f64 c d) a) #s(literal 2 binary64))
11.3%
(*.f64 (+.f64 (+.f64 c a) d) #s(literal 2 binary64))
100.0%
(*.f64 (+.f64 (+.f64 b c) (+.f64 a d)) #s(literal 2 binary64))
11.3%
(*.f64 (+.f64 (+.f64 a d) c) #s(literal 2 binary64))
8.6%
(*.f64 (+.f64 a d) #s(literal 2 binary64))
11.2%
(*.f64 c #s(literal 2 binary64))
6.5%
(*.f64 b #s(literal 2 binary64))
Compiler

Compiled 123 to 75 computations (39% saved)

regimes32.0ms (0.6%)

Counts
8 → 1
Calls
Call 1
Inputs
(*.f64 b #s(literal 2 binary64))
(*.f64 c #s(literal 2 binary64))
(*.f64 (+.f64 a d) #s(literal 2 binary64))
(*.f64 (+.f64 (+.f64 a d) c) #s(literal 2 binary64))
(*.f64 (+.f64 (+.f64 c a) d) #s(literal 2 binary64))
(*.f64 (+.f64 (+.f64 c d) a) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
(*.f64 (+.f64 (+.f64 b c) (+.f64 a d)) #s(literal 2 binary64))
Outputs
(*.f64 (+.f64 (+.f64 b c) (+.f64 a d)) #s(literal 2 binary64))
Calls

8 calls:

6.0ms
b
4.0ms
(+.f64 c d)
4.0ms
d
3.0ms
a
3.0ms
(+.f64 b (+.f64 c d))
Results
AccuracySegmentsBranch
100.0%1a
100.0%1b
100.0%1c
100.0%1d
100.0%1(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
100.0%1(+.f64 a (+.f64 b (+.f64 c d)))
100.0%1(+.f64 b (+.f64 c d))
100.0%1(+.f64 c d)
Compiler

Compiled 60 to 43 computations (28.3% saved)

regimes32.0ms (0.6%)

Counts
7 → 1
Calls
Call 1
Inputs
(*.f64 b #s(literal 2 binary64))
(*.f64 c #s(literal 2 binary64))
(*.f64 (+.f64 a d) #s(literal 2 binary64))
(*.f64 (+.f64 (+.f64 a d) c) #s(literal 2 binary64))
(*.f64 (+.f64 (+.f64 c a) d) #s(literal 2 binary64))
(*.f64 (+.f64 (+.f64 c d) a) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
Outputs
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
Calls

8 calls:

8.0ms
(+.f64 a (+.f64 b (+.f64 c d)))
5.0ms
a
3.0ms
b
3.0ms
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
3.0ms
(+.f64 c d)
Results
AccuracySegmentsBranch
94.2%1a
94.2%1b
94.2%1c
94.2%1d
94.2%1(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
94.2%1(+.f64 a (+.f64 b (+.f64 c d)))
94.2%1(+.f64 b (+.f64 c d))
94.2%1(+.f64 c d)
Compiler

Compiled 60 to 43 computations (28.3% saved)

regimes16.0ms (0.3%)

Counts
6 → 2
Calls
Call 1
Inputs
(*.f64 b #s(literal 2 binary64))
(*.f64 c #s(literal 2 binary64))
(*.f64 (+.f64 a d) #s(literal 2 binary64))
(*.f64 (+.f64 (+.f64 a d) c) #s(literal 2 binary64))
(*.f64 (+.f64 (+.f64 c a) d) #s(literal 2 binary64))
(*.f64 (+.f64 (+.f64 c d) a) #s(literal 2 binary64))
Outputs
(*.f64 (+.f64 a d) #s(literal 2 binary64))
(*.f64 (+.f64 (+.f64 a d) c) #s(literal 2 binary64))
Calls

5 calls:

5.0ms
(+.f64 c d)
3.0ms
a
3.0ms
b
3.0ms
d
3.0ms
c
Results
AccuracySegmentsBranch
11.3%1c
13.2%2(+.f64 c d)
12.9%2d
11.3%1a
13.3%2b
Compiler

Compiled 27 to 21 computations (22.2% saved)

regimes2.0ms (0%)

Counts
3 → 2
Calls
Call 1
Inputs
(*.f64 b #s(literal 2 binary64))
(*.f64 c #s(literal 2 binary64))
(*.f64 (+.f64 a d) #s(literal 2 binary64))
Outputs
(*.f64 (+.f64 a d) #s(literal 2 binary64))
(*.f64 c #s(literal 2 binary64))
Calls

1 calls:

2.0ms
b
Results
AccuracySegmentsBranch
13.2%2b
Compiler

Compiled 5 to 4 computations (20% saved)

regimes9.0ms (0.2%)

Counts
2 → 1
Calls
Call 1
Inputs
(*.f64 b #s(literal 2 binary64))
(*.f64 c #s(literal 2 binary64))
Outputs
(*.f64 c #s(literal 2 binary64))
Calls

4 calls:

4.0ms
a
2.0ms
d
2.0ms
b
2.0ms
c
Results
AccuracySegmentsBranch
11.2%1a
11.2%1c
11.2%1d
11.2%1b
Compiler

Compiled 20 to 16 computations (20% saved)

regimes6.0ms (0.1%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
(*.f64 b #s(literal 2 binary64))
Outputs
(*.f64 b #s(literal 2 binary64))
Calls

4 calls:

1.0ms
b
1.0ms
c
1.0ms
d
1.0ms
a
Results
AccuracySegmentsBranch
6.5%1a
6.5%1d
6.5%1b
6.5%1c
Compiler

Compiled 20 to 16 computations (20% saved)

bsearch0.0ms (0%)

Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
0.0ms
-2.646815701337942
-2.646514945369276
Compiler

Compiled 20 to 15 computations (25% saved)

bsearch0.0ms (0%)

Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
0.0ms
-2.646815701337942
-2.646514945369276
Compiler

Compiled 20 to 15 computations (25% saved)

simplify10.0ms (0.2%)

Algorithm
egg-herbie
Rules
14×+-commutative_binary64
12×*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02252
13552
Stop Event
saturated
Calls
Call 1
Inputs
(*.f64 (+.f64 (+.f64 b c) (+.f64 a d)) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
(if (<=.f64 b #s(literal -5959613386899377/2251799813685248 binary64)) (*.f64 (+.f64 a d) #s(literal 2 binary64)) (*.f64 (+.f64 (+.f64 a d) c) #s(literal 2 binary64)))
(if (<=.f64 b #s(literal -5959613386899377/2251799813685248 binary64)) (*.f64 (+.f64 a d) #s(literal 2 binary64)) (*.f64 c #s(literal 2 binary64)))
(*.f64 c #s(literal 2 binary64))
(*.f64 b #s(literal 2 binary64))
Outputs
(*.f64 (+.f64 (+.f64 b c) (+.f64 a d)) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 b (+.f64 c d))))
(if (<=.f64 b #s(literal -5959613386899377/2251799813685248 binary64)) (*.f64 (+.f64 a d) #s(literal 2 binary64)) (*.f64 (+.f64 (+.f64 a d) c) #s(literal 2 binary64)))
(if (<=.f64 b #s(literal -5959613386899377/2251799813685248 binary64)) (*.f64 (+.f64 a d) #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 a d))))
(if (<=.f64 b #s(literal -5959613386899377/2251799813685248 binary64)) (*.f64 (+.f64 a d) #s(literal 2 binary64)) (*.f64 c #s(literal 2 binary64)))
(*.f64 c #s(literal 2 binary64))
(*.f64 b #s(literal 2 binary64))

soundness442.0ms (8.5%)

Rules
3186×*-lowering-*.f32
3186×*-lowering-*.f64
1866×fnmadd-define
1502×+-lowering-+.f64
1502×+-lowering-+.f32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01542
13442
29842
329542
449642
560042
660442
060442
01371142
1466984
21468942
34969924
08414924
0924
11719
26219
320219
447719
561819
663319
063319
Stop Event
done
iter limit
saturated
iter limit
node limit
iter limit
saturated
Compiler

Compiled 130 to 79 computations (39.2% saved)

preprocess81.0ms (1.6%)

Remove

(sort a b c d)

Compiler

Compiled 220 to 118 computations (46.4% saved)

end0.0ms (0%)

Profiling

Loading profile data...