Complex division, real part

Time bar (total: 1.3s)

start0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

analyze27.0ms (2%)

Memory
-8.1MiB live, 28.6MiB allocated
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.8%0.2%0%0%0%0
0%0%99.8%0.2%0%0%0%1
0%0%99.8%0.2%0%0%0%2
0%0%99.8%0.2%0%0%0%3
0%0%99.8%0.2%0%0%0%4
75%74.9%25%0.2%0%0%0%5
75%74.9%25%0.2%0%0%0%6
75%74.9%25%0.2%0%0%0%7
87.5%87.3%12.5%0.2%0%0%0%8
93.8%93.6%6.2%0.2%0%0%0%9
93.8%93.6%6.2%0.2%0%0%0%10
93.8%93.6%6.2%0.2%0%0%0%11
96.9%96.7%3.1%0.2%0%0%0%12
Compiler

Compiled 17 to 13 computations (23.5% saved)

sample839.0ms (63%)

Memory
25.8MiB live, 883.9MiB allocated
Samples
553.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 340.0ms
ival-mult: 212.0ms (62.3% of total)
ival-add: 68.0ms (20% of total)
ival-div: 50.0ms (14.7% of total)
ival-true: 6.0ms (1.8% of total)
ival-assert: 3.0ms (0.9% of total)
Bogosity

explain125.0ms (9.4%)

Memory
-4.5MiB live, 160.3MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1220-1(1.4531434752169376e-266 -3.1883438220420717e-301 -2.0603569621327523e-113 -8.660947481383659e-24)(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
40-0-(+.f64 (*.f64 a c) (*.f64 b d))
00-0-(+.f64 (*.f64 c c) (*.f64 d d))
00-0-a
00-0-d
00-0-(*.f64 d d)
00-0-(*.f64 c c)
00-0-(*.f64 a c)
00-0-c
00-0-b
00-0-(*.f64 b d)
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
/.f64(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))o/o680
(+.f64 (*.f64 a c) (*.f64 b d))overflow77
(*.f64 a c)overflow42
(*.f64 b d)overflow43
(+.f64 (*.f64 c c) (*.f64 d d))overflow127
(*.f64 c c)overflow79
(*.f64 d d)overflow70
/.f64(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))n/o330
(+.f64 (*.f64 c c) (*.f64 d d))overflow127
(*.f64 c c)overflow79
(*.f64 d d)overflow70
/.f64(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))o/n90
(+.f64 (*.f64 a c) (*.f64 b d))overflow77
(*.f64 a c)overflow42
(*.f64 b d)overflow43
/.f64(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))n/u70
(+.f64 (*.f64 c c) (*.f64 d d))underflow15
(*.f64 c c)underflow54
(*.f64 d d)underflow54
+.f64(+.f64 (*.f64 a c) (*.f64 b d))nan-rescue40
(*.f64 a c)overflow42
(*.f64 b d)overflow43
/.f64(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))u/u30
(+.f64 (*.f64 a c) (*.f64 b d))underflow4
(*.f64 a c)underflow27
(*.f64 b d)underflow27
(+.f64 (*.f64 c c) (*.f64 d d))underflow15
(*.f64 c c)underflow54
(*.f64 d d)underflow54
/.f64(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))u/n10
(+.f64 (*.f64 a c) (*.f64 b d))underflow4
(*.f64 a c)underflow27
(*.f64 b d)underflow27
Confusion
Predicted +Predicted -
+1211
-0134
Precision
1.0
Recall
0.9918032786885246
Confusion?
Predicted +Predicted MaybePredicted -
+12101
-00134
Precision?
1.0
Recall?
0.9918032786885246
Freqs
test
numberfreq
0135
1117
24
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
43.0ms512×0valid
Compiler

Compiled 154 to 48 computations (68.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 22.0ms
ival-mult: 14.0ms (64.8% of total)
ival-add: 4.0ms (18.5% of total)
ival-div: 3.0ms (13.9% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess4.0ms (0.3%)

Memory
6.8MiB live, 6.8MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Outputs
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Compiler

Compiled 15 to 11 computations (26.7% saved)

eval0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated
Compiler

Compiled 0 to 4 computations (-∞% saved)

prune0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
54.2%
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Compiler

Compiled 15 to 11 computations (26.7% saved)

simplify0.0ms (0%)

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

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 b d)
cost-diff0
(*.f64 a c)
cost-diff0
(+.f64 (*.f64 a c) (*.f64 b d))
cost-diff0
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Calls
Call 1
Inputs
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
(+.f64 (*.f64 a c) (*.f64 b d))
(*.f64 a c)
a
c
(*.f64 b d)
b
d
(+.f64 (*.f64 c c) (*.f64 d d))
(*.f64 c c)
(*.f64 d d)
Outputs
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
(+.f64 (*.f64 a c) (*.f64 b d))
(*.f64 a c)
a
c
(*.f64 b d)
b
d
(+.f64 (*.f64 c c) (*.f64 d d))
(*.f64 c c)
(*.f64 d d)

localize32.0ms (2.4%)

Memory
-0.1MiB live, 37.2MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 a c)
accuracy0.0078125
(+.f64 (*.f64 c c) (*.f64 d d))
accuracy0.9648375574906174
(+.f64 (*.f64 a c) (*.f64 b d))
accuracy29.03351335715648
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Samples
25.0ms256×0valid
Compiler

Compiled 92 to 24 computations (73.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 16.0ms
ival-mult: 12.0ms (76.2% of total)
ival-add: 2.0ms (12.7% of total)
ival-div: 1.0ms (6.3% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series20.0ms (1.5%)

Memory
-16.0MiB live, 21.2MiB allocated
Counts
5 → 43
Calls
Call 1
Inputs
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
(+.f64 (*.f64 a c) (*.f64 b d))
(*.f64 a c)
(*.f64 b d)
(+.f64 (*.f64 c c) (*.f64 d d))
Outputs
(/ (* b d) (+ (pow c 2) (pow d 2)))
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2))))
(* b d)
(+ (* a c) (* b d))
(* a c)
(/ (* a c) (+ (pow c 2) (pow d 2)))
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))
(* a (+ c (/ (* b d) a)))
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))))
(* -1 (* a (+ (* -1 c) (* -1 (/ (* b d) a)))))
(* b (+ (/ d (+ (pow c 2) (pow d 2))) (/ (* a c) (* b (+ (pow c 2) (pow d 2))))))
(* b (+ d (/ (* a c) b)))
(* -1 (* b (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (* -1 (/ (* a c) (* b (+ (pow c 2) (pow d 2))))))))
(* -1 (* b (+ (* -1 d) (* -1 (/ (* a c) b)))))
(/ b d)
(+ (/ b d) (/ (* a c) (pow d 2)))
(+ (* c (+ (* -1 (/ (* b c) (pow d 3))) (/ a (pow d 2)))) (/ b d))
(+ (* c (+ (* c (- (* -1 (/ (* a c) (pow d 4))) (/ b (pow d 3)))) (/ a (pow d 2)))) (/ b d))
(pow d 2)
(+ (pow c 2) (pow d 2))
(/ a c)
(/ (+ a (/ (* b d) c)) c)
(/ (+ a (+ (* -1 (/ (* a (pow d 2)) (pow c 2))) (/ (* b d) c))) c)
(/ (- (+ a (+ (* -1 (/ (* b (pow d 3)) (pow c 3))) (/ (* b d) c))) (/ (* a (pow d 2)) (pow c 2))) c)
(* c (+ a (/ (* b d) c)))
(pow c 2)
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2))))
(* -1 (/ (+ (* -1 a) (* -1 (/ (* b d) c))) c))
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (* a (pow d 2)) c)) (* b d)) c))) c))
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow d 3)) c) (* -1 (* a (pow d 2)))) c)) (* b d)) c))) c))
(* -1 (* c (+ (* -1 a) (* -1 (/ (* b d) c)))))
(+ (/ a c) (/ (* b d) (pow c 2)))
(+ (* d (+ (* -1 (/ (* a d) (pow c 3))) (/ b (pow c 2)))) (/ a c))
(+ (* d (+ (* d (- (* -1 (/ (* b d) (pow c 4))) (/ a (pow c 3)))) (/ b (pow c 2)))) (/ a c))
(/ (+ b (/ (* a c) d)) d)
(/ (+ b (+ (* -1 (/ (* b (pow c 2)) (pow d 2))) (/ (* a c) d))) d)
(/ (- (+ b (+ (* -1 (/ (* a (pow c 3)) (pow d 3))) (/ (* a c) d))) (/ (* b (pow c 2)) (pow d 2))) d)
(* d (+ b (/ (* a c) d)))
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2))))
(* -1 (/ (+ (* -1 b) (* -1 (/ (* a c) d))) d))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (* b (pow c 2)) d)) (* a c)) d))) d))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (- (/ (* a (pow c 3)) d) (* -1 (* b (pow c 2)))) d)) (* a c)) d))) d))
(* -1 (* d (+ (* -1 b) (* -1 (/ (* a c) d)))))
Calls

12 calls:

TimeVariablePointExpression
6.0ms
d
@0
((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (* b d) (+ (* c c) (* d d)))
2.0ms
d
@-inf
((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (* b d) (+ (* c c) (* d d)))
2.0ms
b
@-inf
((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (* b d) (+ (* c c) (* d d)))
1.0ms
a
@-inf
((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (* b d) (+ (* c c) (* d d)))
1.0ms
a
@0
((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (* b d) (+ (* c c) (* d d)))

simplify1.0ms (0%)

Memory
1.1MiB live, 1.0MiB allocated
Algorithm
egg-herbie
Counts
43 → 5
Calls
Call 1
Inputs
(/ (* b d) (+ (pow c 2) (pow d 2)))
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2))))
(* b d)
(+ (* a c) (* b d))
(* a c)
(/ (* a c) (+ (pow c 2) (pow d 2)))
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))
(* a (+ c (/ (* b d) a)))
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))))
(* -1 (* a (+ (* -1 c) (* -1 (/ (* b d) a)))))
(* b (+ (/ d (+ (pow c 2) (pow d 2))) (/ (* a c) (* b (+ (pow c 2) (pow d 2))))))
(* b (+ d (/ (* a c) b)))
(* -1 (* b (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (* -1 (/ (* a c) (* b (+ (pow c 2) (pow d 2))))))))
(* -1 (* b (+ (* -1 d) (* -1 (/ (* a c) b)))))
(/ b d)
(+ (/ b d) (/ (* a c) (pow d 2)))
(+ (* c (+ (* -1 (/ (* b c) (pow d 3))) (/ a (pow d 2)))) (/ b d))
(+ (* c (+ (* c (- (* -1 (/ (* a c) (pow d 4))) (/ b (pow d 3)))) (/ a (pow d 2)))) (/ b d))
(pow d 2)
(+ (pow c 2) (pow d 2))
(/ a c)
(/ (+ a (/ (* b d) c)) c)
(/ (+ a (+ (* -1 (/ (* a (pow d 2)) (pow c 2))) (/ (* b d) c))) c)
(/ (- (+ a (+ (* -1 (/ (* b (pow d 3)) (pow c 3))) (/ (* b d) c))) (/ (* a (pow d 2)) (pow c 2))) c)
(* c (+ a (/ (* b d) c)))
(pow c 2)
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2))))
(* -1 (/ (+ (* -1 a) (* -1 (/ (* b d) c))) c))
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (* a (pow d 2)) c)) (* b d)) c))) c))
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow d 3)) c) (* -1 (* a (pow d 2)))) c)) (* b d)) c))) c))
(* -1 (* c (+ (* -1 a) (* -1 (/ (* b d) c)))))
(+ (/ a c) (/ (* b d) (pow c 2)))
(+ (* d (+ (* -1 (/ (* a d) (pow c 3))) (/ b (pow c 2)))) (/ a c))
(+ (* d (+ (* d (- (* -1 (/ (* b d) (pow c 4))) (/ a (pow c 3)))) (/ b (pow c 2)))) (/ a c))
(/ (+ b (/ (* a c) d)) d)
(/ (+ b (+ (* -1 (/ (* b (pow c 2)) (pow d 2))) (/ (* a c) d))) d)
(/ (- (+ b (+ (* -1 (/ (* a (pow c 3)) (pow d 3))) (/ (* a c) d))) (/ (* b (pow c 2)) (pow d 2))) d)
(* d (+ b (/ (* a c) d)))
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2))))
(* -1 (/ (+ (* -1 b) (* -1 (/ (* a c) d))) d))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (* b (pow c 2)) d)) (* a c)) d))) d))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (- (/ (* a (pow c 3)) d) (* -1 (* b (pow c 2)))) d)) (* a c)) d))) d))
(* -1 (* d (+ (* -1 b) (* -1 (/ (* a c) d)))))
Outputs
(/ (* b d) (+ (pow c 2) (pow d 2)))
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2))))
(+.f64 (*.f64 a c) (*.f64 b d))
(* b d)
(*.f64 a c)
(+ (* a c) (* b d))
(*.f64 b d)
(* a c)
(+.f64 (*.f64 c c) (*.f64 d d))

rewrite0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Counts
5 → 5
Calls
Call 1
Inputs
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
(+.f64 (*.f64 a c) (*.f64 b d))
(*.f64 a c)
(*.f64 b d)
(+.f64 (*.f64 c c) (*.f64 d d))
Outputs
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
(+.f64 (*.f64 a c) (*.f64 b d))
(*.f64 a c)
(*.f64 b d)
(+.f64 (*.f64 c c) (*.f64 d d))

eval1.0ms (0.1%)

Memory
1.7MiB live, 1.7MiB allocated
Compiler

Compiled 190 to 27 computations (85.8% saved)

prune1.0ms (0.1%)

Memory
2.9MiB live, 2.9MiB allocated
Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New7310
Fresh000
Picked011
Done000
Total7411
Accuracy
55.3%
Counts
11 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
54.2%
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
36.6%
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
35.7%
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d)))
3.8%
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d)))
Compiler

Compiled 76 to 52 computations (31.6% saved)

simplify1.0ms (0.1%)

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

Found 12 expressions of interest:

NewMetricScoreProgram
cost-diff0
(+.f64 (*.f64 c c) (*.f64 d d))
cost-diff0
(*.f64 b d)
cost-diff0
#s(approx (+ (* a c) (* b d)) (*.f64 b d))
cost-diff0
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
cost-diff0
(+.f64 (*.f64 c c) (*.f64 d d))
cost-diff0
(*.f64 a c)
cost-diff0
#s(approx (+ (* a c) (* b d)) (*.f64 a c))
cost-diff0
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d)))
cost-diff0
(*.f64 b d)
cost-diff0
(*.f64 a c)
cost-diff0
(+.f64 (*.f64 a c) (*.f64 b d))
cost-diff0
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d)))
Calls
Call 1
Inputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d)))
(+.f64 (*.f64 a c) (*.f64 b d))
(*.f64 a c)
a
c
(*.f64 b d)
b
d
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d)))
#s(approx (+ (* a c) (* b d)) (*.f64 a c))
(*.f64 a c)
a
c
(+.f64 (*.f64 c c) (*.f64 d d))
(*.f64 c c)
(*.f64 d d)
d
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
#s(approx (+ (* a c) (* b d)) (*.f64 b d))
(*.f64 b d)
b
d
(+.f64 (*.f64 c c) (*.f64 d d))
(*.f64 c c)
c
(*.f64 d d)
Outputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d)))
(+.f64 (*.f64 a c) (*.f64 b d))
(*.f64 a c)
a
c
(*.f64 b d)
b
d
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d)))
#s(approx (+ (* a c) (* b d)) (*.f64 a c))
(*.f64 a c)
a
c
(+.f64 (*.f64 c c) (*.f64 d d))
(*.f64 c c)
(*.f64 d d)
d
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
#s(approx (+ (* a c) (* b d)) (*.f64 b d))
(*.f64 b d)
b
d
(+.f64 (*.f64 c c) (*.f64 d d))
(*.f64 c c)
c
(*.f64 d d)

localize38.0ms (2.9%)

Memory
4.5MiB live, 49.8MiB allocated
Localize:

Found 12 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 b d)
accuracy0.0078125
(+.f64 (*.f64 c c) (*.f64 d d))
accuracy29.03351335715648
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
accuracy30.3268705063563
#s(approx (+ (* a c) (* b d)) (*.f64 b d))
accuracy0.0
(*.f64 a c)
accuracy0.0078125
(+.f64 (*.f64 c c) (*.f64 d d))
accuracy29.03351335715648
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d)))
accuracy29.92935627803062
#s(approx (+ (* a c) (* b d)) (*.f64 a c))
accuracy0.0
(*.f64 b d)
accuracy0.0
(*.f64 a c)
accuracy0.9648375574906174
(+.f64 (*.f64 a c) (*.f64 b d))
accuracy61.547380541327236
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d)))
Samples
28.0ms256×0valid
Compiler

Compiled 254 to 35 computations (86.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 10.0ms
ival-mult: 6.0ms (58.7% of total)
ival-add: 2.0ms (19.6% of total)
ival-div: 1.0ms (9.8% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series8.0ms (0.6%)

Memory
12.9MiB live, 12.9MiB allocated
Counts
9 → 43
Calls
Call 1
Inputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d)))
(+.f64 (*.f64 a c) (*.f64 b d))
(*.f64 a c)
(*.f64 b d)
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d)))
#s(approx (+ (* a c) (* b d)) (*.f64 a c))
(+.f64 (*.f64 c c) (*.f64 d d))
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
#s(approx (+ (* a c) (* b d)) (*.f64 b d))
Outputs
(/ (* b d) (+ (pow c 2) (pow d 2)))
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2))))
(* b d)
(+ (* a c) (* b d))
(* a c)
(/ (* a c) (+ (pow c 2) (pow d 2)))
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))
(* a (+ c (/ (* b d) a)))
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))))
(* -1 (* a (+ (* -1 c) (* -1 (/ (* b d) a)))))
(* b (+ (/ d (+ (pow c 2) (pow d 2))) (/ (* a c) (* b (+ (pow c 2) (pow d 2))))))
(* b (+ d (/ (* a c) b)))
(* -1 (* b (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (* -1 (/ (* a c) (* b (+ (pow c 2) (pow d 2))))))))
(* -1 (* b (+ (* -1 d) (* -1 (/ (* a c) b)))))
(/ b d)
(+ (/ b d) (/ (* a c) (pow d 2)))
(+ (* c (+ (* -1 (/ (* b c) (pow d 3))) (/ a (pow d 2)))) (/ b d))
(+ (* c (+ (* c (- (* -1 (/ (* a c) (pow d 4))) (/ b (pow d 3)))) (/ a (pow d 2)))) (/ b d))
(pow d 2)
(+ (pow c 2) (pow d 2))
(/ a c)
(/ (+ a (/ (* b d) c)) c)
(/ (+ a (+ (* -1 (/ (* a (pow d 2)) (pow c 2))) (/ (* b d) c))) c)
(/ (- (+ a (+ (* -1 (/ (* b (pow d 3)) (pow c 3))) (/ (* b d) c))) (/ (* a (pow d 2)) (pow c 2))) c)
(* c (+ a (/ (* b d) c)))
(pow c 2)
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2))))
(* -1 (/ (+ (* -1 a) (* -1 (/ (* b d) c))) c))
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (* a (pow d 2)) c)) (* b d)) c))) c))
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow d 3)) c) (* -1 (* a (pow d 2)))) c)) (* b d)) c))) c))
(* -1 (* c (+ (* -1 a) (* -1 (/ (* b d) c)))))
(+ (/ a c) (/ (* b d) (pow c 2)))
(+ (* d (+ (* -1 (/ (* a d) (pow c 3))) (/ b (pow c 2)))) (/ a c))
(+ (* d (+ (* d (- (* -1 (/ (* b d) (pow c 4))) (/ a (pow c 3)))) (/ b (pow c 2)))) (/ a c))
(/ (+ b (/ (* a c) d)) d)
(/ (+ b (+ (* -1 (/ (* b (pow c 2)) (pow d 2))) (/ (* a c) d))) d)
(/ (- (+ b (+ (* -1 (/ (* a (pow c 3)) (pow d 3))) (/ (* a c) d))) (/ (* b (pow c 2)) (pow d 2))) d)
(* d (+ b (/ (* a c) d)))
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2))))
(* -1 (/ (+ (* -1 b) (* -1 (/ (* a c) d))) d))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (* b (pow c 2)) d)) (* a c)) d))) d))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (- (/ (* a (pow c 3)) d) (* -1 (* b (pow c 2)))) d)) (* a c)) d))) d))
(* -1 (* d (+ (* -1 b) (* -1 (/ (* a c) d)))))
Calls

12 calls:

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

simplify1.0ms (0.1%)

Memory
1.0MiB live, 1.0MiB allocated
Algorithm
egg-herbie
Counts
43 → 9
Calls
Call 1
Inputs
(/ (* b d) (+ (pow c 2) (pow d 2)))
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2))))
(* b d)
(+ (* a c) (* b d))
(* a c)
(/ (* a c) (+ (pow c 2) (pow d 2)))
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))
(* a (+ c (/ (* b d) a)))
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))))
(* -1 (* a (+ (* -1 c) (* -1 (/ (* b d) a)))))
(* b (+ (/ d (+ (pow c 2) (pow d 2))) (/ (* a c) (* b (+ (pow c 2) (pow d 2))))))
(* b (+ d (/ (* a c) b)))
(* -1 (* b (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (* -1 (/ (* a c) (* b (+ (pow c 2) (pow d 2))))))))
(* -1 (* b (+ (* -1 d) (* -1 (/ (* a c) b)))))
(/ b d)
(+ (/ b d) (/ (* a c) (pow d 2)))
(+ (* c (+ (* -1 (/ (* b c) (pow d 3))) (/ a (pow d 2)))) (/ b d))
(+ (* c (+ (* c (- (* -1 (/ (* a c) (pow d 4))) (/ b (pow d 3)))) (/ a (pow d 2)))) (/ b d))
(pow d 2)
(+ (pow c 2) (pow d 2))
(/ a c)
(/ (+ a (/ (* b d) c)) c)
(/ (+ a (+ (* -1 (/ (* a (pow d 2)) (pow c 2))) (/ (* b d) c))) c)
(/ (- (+ a (+ (* -1 (/ (* b (pow d 3)) (pow c 3))) (/ (* b d) c))) (/ (* a (pow d 2)) (pow c 2))) c)
(* c (+ a (/ (* b d) c)))
(pow c 2)
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2))))
(* -1 (/ (+ (* -1 a) (* -1 (/ (* b d) c))) c))
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (* a (pow d 2)) c)) (* b d)) c))) c))
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow d 3)) c) (* -1 (* a (pow d 2)))) c)) (* b d)) c))) c))
(* -1 (* c (+ (* -1 a) (* -1 (/ (* b d) c)))))
(+ (/ a c) (/ (* b d) (pow c 2)))
(+ (* d (+ (* -1 (/ (* a d) (pow c 3))) (/ b (pow c 2)))) (/ a c))
(+ (* d (+ (* d (- (* -1 (/ (* b d) (pow c 4))) (/ a (pow c 3)))) (/ b (pow c 2)))) (/ a c))
(/ (+ b (/ (* a c) d)) d)
(/ (+ b (+ (* -1 (/ (* b (pow c 2)) (pow d 2))) (/ (* a c) d))) d)
(/ (- (+ b (+ (* -1 (/ (* a (pow c 3)) (pow d 3))) (/ (* a c) d))) (/ (* b (pow c 2)) (pow d 2))) d)
(* d (+ b (/ (* a c) d)))
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2))))
(* -1 (/ (+ (* -1 b) (* -1 (/ (* a c) d))) d))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (* b (pow c 2)) d)) (* a c)) d))) d))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (- (/ (* a (pow c 3)) d) (* -1 (* b (pow c 2)))) d)) (* a c)) d))) d))
(* -1 (* d (+ (* -1 b) (* -1 (/ (* a c) d)))))
Outputs
(/ (* b d) (+ (pow c 2) (pow d 2)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d)))
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2))))
(+.f64 (*.f64 a c) (*.f64 b d))
(* b d)
(*.f64 a c)
(+ (* a c) (* b d))
(*.f64 b d)
(* a c)
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d)))
(/ (* a c) (+ (pow c 2) (pow d 2)))
#s(approx (+ (* a c) (* b d)) (*.f64 a c))
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))
(+.f64 (*.f64 c c) (*.f64 d d))
(* a (+ c (/ (* b d) a)))
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))))
#s(approx (+ (* a c) (* b d)) (*.f64 b d))

rewrite0.0ms (0%)

Memory
0.9MiB live, 0.9MiB allocated
Counts
9 → 9
Calls
Call 1
Inputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d)))
(+.f64 (*.f64 a c) (*.f64 b d))
(*.f64 a c)
(*.f64 b d)
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d)))
#s(approx (+ (* a c) (* b d)) (*.f64 a c))
(+.f64 (*.f64 c c) (*.f64 d d))
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
#s(approx (+ (* a c) (* b d)) (*.f64 b d))
Outputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d)))
(+.f64 (*.f64 a c) (*.f64 b d))
(*.f64 a c)
(*.f64 b d)
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d)))
#s(approx (+ (* a c) (* b d)) (*.f64 a c))
(+.f64 (*.f64 c c) (*.f64 d d))
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
#s(approx (+ (* a c) (* b d)) (*.f64 b d))

eval5.0ms (0.4%)

Memory
-35.4MiB live, 2.8MiB allocated
Compiler

Compiled 501 to 33 computations (93.4% saved)

prune3.0ms (0.2%)

Memory
4.9MiB live, 4.9MiB allocated
Pruning

7 alts after pruning (3 fresh and 4 done)

PrunedKeptTotal
New16319
Fresh000
Picked033
Done011
Total16723
Accuracy
55.6%
Counts
23 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
54.2%
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
36.6%
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
35.7%
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d)))
2.1%
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
3.8%
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d)))
4.6%
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d)))
4.9%
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c)))
Compiler

Compiled 153 to 95 computations (37.9% saved)

simplify1.0ms (0%)

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

Found 10 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 d d)
cost-diff0
(*.f64 c c)
cost-diff0
(+.f64 (*.f64 c c) (*.f64 d d))
cost-diff0
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
cost-diff0
(*.f64 b d)
cost-diff0
#s(approx (+ (* a c) (* b d)) (*.f64 b d))
cost-diff0
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d)))
cost-diff0
(*.f64 a c)
cost-diff0
#s(approx (+ (* a c) (* b d)) (*.f64 a c))
cost-diff0
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c)))
Calls
Call 1
Inputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c)))
#s(approx (+ (* a c) (* b d)) (*.f64 a c))
(*.f64 a c)
a
c
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d)))
#s(approx (+ (* a c) (* b d)) (*.f64 b d))
(*.f64 b d)
b
d
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
(+.f64 (*.f64 c c) (*.f64 d d))
(*.f64 c c)
c
(*.f64 d d)
d
Outputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c)))
#s(approx (+ (* a c) (* b d)) (*.f64 a c))
(*.f64 a c)
a
c
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d)))
#s(approx (+ (* a c) (* b d)) (*.f64 b d))
(*.f64 b d)
b
d
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
(+.f64 (*.f64 c c) (*.f64 d d))
(*.f64 c c)
c
(*.f64 d d)
d

localize29.0ms (2.2%)

Memory
-3.7MiB live, 35.0MiB allocated
Localize:

Found 10 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 d d)
accuracy0.0
(*.f64 c c)
accuracy0.0078125
(+.f64 (*.f64 c c) (*.f64 d d))
accuracy62.63478116152093
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
accuracy0.0
(*.f64 b d)
accuracy30.3268705063563
#s(approx (+ (* a c) (* b d)) (*.f64 b d))
accuracy61.547380541327236
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d)))
accuracy0.0
(*.f64 a c)
accuracy29.92935627803062
#s(approx (+ (* a c) (* b d)) (*.f64 a c))
accuracy61.547380541327236
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c)))
Samples
20.0ms256×0valid
Compiler

Compiled 210 to 34 computations (83.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 10.0ms
ival-mult: 6.0ms (58.7% of total)
ival-add: 2.0ms (19.6% of total)
ival-div: 1.0ms (9.8% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series9.0ms (0.7%)

Memory
13.0MiB live, 13.0MiB allocated
Counts
10 → 43
Calls
Call 1
Inputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c)))
#s(approx (+ (* a c) (* b d)) (*.f64 a c))
(*.f64 a c)
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d)))
#s(approx (+ (* a c) (* b d)) (*.f64 b d))
(*.f64 b d)
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
(+.f64 (*.f64 c c) (*.f64 d d))
(*.f64 c c)
(*.f64 d d)
Outputs
(/ (* b d) (+ (pow c 2) (pow d 2)))
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2))))
(* b d)
(+ (* a c) (* b d))
(* a c)
(/ (* a c) (+ (pow c 2) (pow d 2)))
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))
(* a (+ c (/ (* b d) a)))
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))))
(* -1 (* a (+ (* -1 c) (* -1 (/ (* b d) a)))))
(* b (+ (/ d (+ (pow c 2) (pow d 2))) (/ (* a c) (* b (+ (pow c 2) (pow d 2))))))
(* b (+ d (/ (* a c) b)))
(* -1 (* b (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (* -1 (/ (* a c) (* b (+ (pow c 2) (pow d 2))))))))
(* -1 (* b (+ (* -1 d) (* -1 (/ (* a c) b)))))
(/ b d)
(+ (/ b d) (/ (* a c) (pow d 2)))
(+ (* c (+ (* -1 (/ (* b c) (pow d 3))) (/ a (pow d 2)))) (/ b d))
(+ (* c (+ (* c (- (* -1 (/ (* a c) (pow d 4))) (/ b (pow d 3)))) (/ a (pow d 2)))) (/ b d))
(pow d 2)
(+ (pow c 2) (pow d 2))
(pow c 2)
(/ a c)
(/ (+ a (/ (* b d) c)) c)
(/ (+ a (+ (* -1 (/ (* a (pow d 2)) (pow c 2))) (/ (* b d) c))) c)
(/ (- (+ a (+ (* -1 (/ (* b (pow d 3)) (pow c 3))) (/ (* b d) c))) (/ (* a (pow d 2)) (pow c 2))) c)
(* c (+ a (/ (* b d) c)))
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2))))
(* -1 (/ (+ (* -1 a) (* -1 (/ (* b d) c))) c))
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (* a (pow d 2)) c)) (* b d)) c))) c))
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow d 3)) c) (* -1 (* a (pow d 2)))) c)) (* b d)) c))) c))
(* -1 (* c (+ (* -1 a) (* -1 (/ (* b d) c)))))
(+ (/ a c) (/ (* b d) (pow c 2)))
(+ (* d (+ (* -1 (/ (* a d) (pow c 3))) (/ b (pow c 2)))) (/ a c))
(+ (* d (+ (* d (- (* -1 (/ (* b d) (pow c 4))) (/ a (pow c 3)))) (/ b (pow c 2)))) (/ a c))
(/ (+ b (/ (* a c) d)) d)
(/ (+ b (+ (* -1 (/ (* b (pow c 2)) (pow d 2))) (/ (* a c) d))) d)
(/ (- (+ b (+ (* -1 (/ (* a (pow c 3)) (pow d 3))) (/ (* a c) d))) (/ (* b (pow c 2)) (pow d 2))) d)
(* d (+ b (/ (* a c) d)))
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2))))
(* -1 (/ (+ (* -1 b) (* -1 (/ (* a c) d))) d))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (* b (pow c 2)) d)) (* a c)) d))) d))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (- (/ (* a (pow c 3)) d) (* -1 (* b (pow c 2)))) d)) (* a c)) d))) d))
(* -1 (* d (+ (* -1 b) (* -1 (/ (* a c) d)))))
Calls

12 calls:

TimeVariablePointExpression
1.0ms
c
@-inf
((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* b d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* c c) (* d d)) (* c c) (* d d))
1.0ms
d
@-inf
((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* b d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* c c) (* d d)) (* c c) (* d d))
1.0ms
c
@inf
((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* b d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* c c) (* d d)) (* c c) (* d d))
1.0ms
b
@-inf
((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* b d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* c c) (* d d)) (* c c) (* d d))
1.0ms
a
@-inf
((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* a c) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* b d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* c c) (* d d)) (* c c) (* d d))

simplify1.0ms (0.1%)

Memory
0.9MiB live, 0.9MiB allocated
Algorithm
egg-herbie
Counts
43 → 10
Calls
Call 1
Inputs
(/ (* b d) (+ (pow c 2) (pow d 2)))
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2))))
(* b d)
(+ (* a c) (* b d))
(* a c)
(/ (* a c) (+ (pow c 2) (pow d 2)))
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))
(* a (+ c (/ (* b d) a)))
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))))
(* -1 (* a (+ (* -1 c) (* -1 (/ (* b d) a)))))
(* b (+ (/ d (+ (pow c 2) (pow d 2))) (/ (* a c) (* b (+ (pow c 2) (pow d 2))))))
(* b (+ d (/ (* a c) b)))
(* -1 (* b (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (* -1 (/ (* a c) (* b (+ (pow c 2) (pow d 2))))))))
(* -1 (* b (+ (* -1 d) (* -1 (/ (* a c) b)))))
(/ b d)
(+ (/ b d) (/ (* a c) (pow d 2)))
(+ (* c (+ (* -1 (/ (* b c) (pow d 3))) (/ a (pow d 2)))) (/ b d))
(+ (* c (+ (* c (- (* -1 (/ (* a c) (pow d 4))) (/ b (pow d 3)))) (/ a (pow d 2)))) (/ b d))
(pow d 2)
(+ (pow c 2) (pow d 2))
(pow c 2)
(/ a c)
(/ (+ a (/ (* b d) c)) c)
(/ (+ a (+ (* -1 (/ (* a (pow d 2)) (pow c 2))) (/ (* b d) c))) c)
(/ (- (+ a (+ (* -1 (/ (* b (pow d 3)) (pow c 3))) (/ (* b d) c))) (/ (* a (pow d 2)) (pow c 2))) c)
(* c (+ a (/ (* b d) c)))
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2))))
(* -1 (/ (+ (* -1 a) (* -1 (/ (* b d) c))) c))
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (* a (pow d 2)) c)) (* b d)) c))) c))
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow d 3)) c) (* -1 (* a (pow d 2)))) c)) (* b d)) c))) c))
(* -1 (* c (+ (* -1 a) (* -1 (/ (* b d) c)))))
(+ (/ a c) (/ (* b d) (pow c 2)))
(+ (* d (+ (* -1 (/ (* a d) (pow c 3))) (/ b (pow c 2)))) (/ a c))
(+ (* d (+ (* d (- (* -1 (/ (* b d) (pow c 4))) (/ a (pow c 3)))) (/ b (pow c 2)))) (/ a c))
(/ (+ b (/ (* a c) d)) d)
(/ (+ b (+ (* -1 (/ (* b (pow c 2)) (pow d 2))) (/ (* a c) d))) d)
(/ (- (+ b (+ (* -1 (/ (* a (pow c 3)) (pow d 3))) (/ (* a c) d))) (/ (* b (pow c 2)) (pow d 2))) d)
(* d (+ b (/ (* a c) d)))
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2))))
(* -1 (/ (+ (* -1 b) (* -1 (/ (* a c) d))) d))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (* b (pow c 2)) d)) (* a c)) d))) d))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (- (/ (* a (pow c 3)) d) (* -1 (* b (pow c 2)))) d)) (* a c)) d))) d))
(* -1 (* d (+ (* -1 b) (* -1 (/ (* a c) d)))))
Outputs
(/ (* b d) (+ (pow c 2) (pow d 2)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c)))
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2))))
#s(approx (+ (* a c) (* b d)) (*.f64 a c))
(* b d)
(*.f64 a c)
(+ (* a c) (* b d))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d)))
(* a c)
#s(approx (+ (* a c) (* b d)) (*.f64 b d))
(/ (* a c) (+ (pow c 2) (pow d 2)))
(*.f64 b d)
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
(* a (+ c (/ (* b d) a)))
(+.f64 (*.f64 c c) (*.f64 d d))
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))))
(*.f64 c c)
(* -1 (* a (+ (* -1 c) (* -1 (/ (* b d) a)))))
(*.f64 d d)

rewrite0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Counts
10 → 10
Calls
Call 1
Inputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c)))
#s(approx (+ (* a c) (* b d)) (*.f64 a c))
(*.f64 a c)
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d)))
#s(approx (+ (* a c) (* b d)) (*.f64 b d))
(*.f64 b d)
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
(+.f64 (*.f64 c c) (*.f64 d d))
(*.f64 c c)
(*.f64 d d)
Outputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c)))
#s(approx (+ (* a c) (* b d)) (*.f64 a c))
(*.f64 a c)
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d)))
#s(approx (+ (* a c) (* b d)) (*.f64 b d))
(*.f64 b d)
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
(+.f64 (*.f64 c c) (*.f64 d d))
(*.f64 c c)
(*.f64 d d)

eval2.0ms (0.1%)

Memory
2.9MiB live, 2.9MiB allocated
Compiler

Compiled 522 to 34 computations (93.5% saved)

prune4.0ms (0.3%)

Memory
6.5MiB live, 6.5MiB allocated
Pruning

9 alts after pruning (2 fresh and 7 done)

PrunedKeptTotal
New16218
Fresh000
Picked033
Done044
Total16925
Accuracy
55.7%
Counts
25 → 9
Alt Table
Click to see full alt table
StatusAccuracyProgram
54.2%
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
36.6%
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
35.7%
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d)))
2.1%
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
3.8%
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d)))
5.0%
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c))
4.5%
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d)))
4.6%
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d)))
4.9%
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c)))
Compiler

Compiled 199 to 122 computations (38.7% saved)

simplify0.0ms (0%)

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

Found 5 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 c c)
cost-diff0
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c))
cost-diff0
(*.f64 d d)
cost-diff0
#s(approx (+ (* a c) (* b d)) (*.f64 d d))
cost-diff0
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d)))
Calls
Call 1
Inputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d)))
#s(approx (+ (* a c) (* b d)) (*.f64 d d))
(*.f64 d d)
d
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c))
(*.f64 c c)
c
Outputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d)))
#s(approx (+ (* a c) (* b d)) (*.f64 d d))
(*.f64 d d)
d
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c))
(*.f64 c c)
c

localize25.0ms (1.9%)

Memory
-7.9MiB live, 30.7MiB allocated
Localize:

Found 5 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 c c)
accuracy60.80629460662306
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c))
accuracy0.0
(*.f64 d d)
accuracy56.79814510180251
#s(approx (+ (* a c) (* b d)) (*.f64 d d))
accuracy61.547380541327236
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d)))
Samples
19.0ms256×0valid
Compiler

Compiled 112 to 29 computations (74.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 10.0ms
ival-mult: 6.0ms (59.3% of total)
ival-add: 2.0ms (19.8% of total)
ival-div: 1.0ms (9.9% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series6.0ms (0.5%)

Memory
8.8MiB live, 8.8MiB allocated
Counts
5 → 40
Calls
Call 1
Inputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d)))
#s(approx (+ (* a c) (* b d)) (*.f64 d d))
(*.f64 d d)
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c))
(*.f64 c c)
Outputs
(/ (* b d) (+ (pow c 2) (pow d 2)))
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2))))
(* b d)
(+ (* a c) (* b d))
(/ (* a c) (+ (pow c 2) (pow d 2)))
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))
(* a c)
(* a (+ c (/ (* b d) a)))
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))))
(* -1 (* a (+ (* -1 c) (* -1 (/ (* b d) a)))))
(* b (+ (/ d (+ (pow c 2) (pow d 2))) (/ (* a c) (* b (+ (pow c 2) (pow d 2))))))
(* b (+ d (/ (* a c) b)))
(* -1 (* b (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (* -1 (/ (* a c) (* b (+ (pow c 2) (pow d 2))))))))
(* -1 (* b (+ (* -1 d) (* -1 (/ (* a c) b)))))
(/ b d)
(+ (/ b d) (/ (* a c) (pow d 2)))
(+ (* c (+ (* -1 (/ (* b c) (pow d 3))) (/ a (pow d 2)))) (/ b d))
(+ (* c (+ (* c (- (* -1 (/ (* a c) (pow d 4))) (/ b (pow d 3)))) (/ a (pow d 2)))) (/ b d))
(pow c 2)
(/ a c)
(/ (+ a (/ (* b d) c)) c)
(/ (+ a (+ (* -1 (/ (* a (pow d 2)) (pow c 2))) (/ (* b d) c))) c)
(/ (- (+ a (+ (* -1 (/ (* b (pow d 3)) (pow c 3))) (/ (* b d) c))) (/ (* a (pow d 2)) (pow c 2))) c)
(* c (+ a (/ (* b d) c)))
(* -1 (/ (+ (* -1 a) (* -1 (/ (* b d) c))) c))
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (* a (pow d 2)) c)) (* b d)) c))) c))
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow d 3)) c) (* -1 (* a (pow d 2)))) c)) (* b d)) c))) c))
(* -1 (* c (+ (* -1 a) (* -1 (/ (* b d) c)))))
(+ (/ a c) (/ (* b d) (pow c 2)))
(+ (* d (+ (* -1 (/ (* a d) (pow c 3))) (/ b (pow c 2)))) (/ a c))
(+ (* d (+ (* d (- (* -1 (/ (* b d) (pow c 4))) (/ a (pow c 3)))) (/ b (pow c 2)))) (/ a c))
(pow d 2)
(/ (+ b (/ (* a c) d)) d)
(/ (+ b (+ (* -1 (/ (* b (pow c 2)) (pow d 2))) (/ (* a c) d))) d)
(/ (- (+ b (+ (* -1 (/ (* a (pow c 3)) (pow d 3))) (/ (* a c) d))) (/ (* b (pow c 2)) (pow d 2))) d)
(* d (+ b (/ (* a c) d)))
(* -1 (/ (+ (* -1 b) (* -1 (/ (* a c) d))) d))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (* b (pow c 2)) d)) (* a c)) d))) d))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (- (/ (* a (pow c 3)) d) (* -1 (* b (pow c 2)))) d)) (* a c)) d))) d))
(* -1 (* d (+ (* -1 b) (* -1 (/ (* a c) d)))))
Calls

12 calls:

TimeVariablePointExpression
1.0ms
d
@-inf
((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* d d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (* c c))
1.0ms
c
@-inf
((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* d d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (* c c))
1.0ms
c
@inf
((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* d d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (* c c))
1.0ms
a
@-inf
((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* d d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (* c c))
1.0ms
b
@-inf
((/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+ (* a c) (* b d)) (* d d) (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (* c c))

simplify1.0ms (0%)

Memory
0.9MiB live, 0.9MiB allocated
Algorithm
egg-herbie
Counts
40 → 5
Calls
Call 1
Inputs
(/ (* b d) (+ (pow c 2) (pow d 2)))
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2))))
(* b d)
(+ (* a c) (* b d))
(/ (* a c) (+ (pow c 2) (pow d 2)))
(* a (+ (/ c (+ (pow c 2) (pow d 2))) (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))
(* a c)
(* a (+ c (/ (* b d) a)))
(* -1 (* a (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (* -1 (/ (* b d) (* a (+ (pow c 2) (pow d 2))))))))
(* -1 (* a (+ (* -1 c) (* -1 (/ (* b d) a)))))
(* b (+ (/ d (+ (pow c 2) (pow d 2))) (/ (* a c) (* b (+ (pow c 2) (pow d 2))))))
(* b (+ d (/ (* a c) b)))
(* -1 (* b (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (* -1 (/ (* a c) (* b (+ (pow c 2) (pow d 2))))))))
(* -1 (* b (+ (* -1 d) (* -1 (/ (* a c) b)))))
(/ b d)
(+ (/ b d) (/ (* a c) (pow d 2)))
(+ (* c (+ (* -1 (/ (* b c) (pow d 3))) (/ a (pow d 2)))) (/ b d))
(+ (* c (+ (* c (- (* -1 (/ (* a c) (pow d 4))) (/ b (pow d 3)))) (/ a (pow d 2)))) (/ b d))
(pow c 2)
(/ a c)
(/ (+ a (/ (* b d) c)) c)
(/ (+ a (+ (* -1 (/ (* a (pow d 2)) (pow c 2))) (/ (* b d) c))) c)
(/ (- (+ a (+ (* -1 (/ (* b (pow d 3)) (pow c 3))) (/ (* b d) c))) (/ (* a (pow d 2)) (pow c 2))) c)
(* c (+ a (/ (* b d) c)))
(* -1 (/ (+ (* -1 a) (* -1 (/ (* b d) c))) c))
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (* a (pow d 2)) c)) (* b d)) c))) c))
(* -1 (/ (+ (* -1 a) (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow d 3)) c) (* -1 (* a (pow d 2)))) c)) (* b d)) c))) c))
(* -1 (* c (+ (* -1 a) (* -1 (/ (* b d) c)))))
(+ (/ a c) (/ (* b d) (pow c 2)))
(+ (* d (+ (* -1 (/ (* a d) (pow c 3))) (/ b (pow c 2)))) (/ a c))
(+ (* d (+ (* d (- (* -1 (/ (* b d) (pow c 4))) (/ a (pow c 3)))) (/ b (pow c 2)))) (/ a c))
(pow d 2)
(/ (+ b (/ (* a c) d)) d)
(/ (+ b (+ (* -1 (/ (* b (pow c 2)) (pow d 2))) (/ (* a c) d))) d)
(/ (- (+ b (+ (* -1 (/ (* a (pow c 3)) (pow d 3))) (/ (* a c) d))) (/ (* b (pow c 2)) (pow d 2))) d)
(* d (+ b (/ (* a c) d)))
(* -1 (/ (+ (* -1 b) (* -1 (/ (* a c) d))) d))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (* b (pow c 2)) d)) (* a c)) d))) d))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (/ (- (/ (* a (pow c 3)) d) (* -1 (* b (pow c 2)))) d)) (* a c)) d))) d))
(* -1 (* d (+ (* -1 b) (* -1 (/ (* a c) d)))))
Outputs
(/ (* b d) (+ (pow c 2) (pow d 2)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d)))
(+ (/ (* a c) (+ (pow c 2) (pow d 2))) (/ (* b d) (+ (pow c 2) (pow d 2))))
#s(approx (+ (* a c) (* b d)) (*.f64 d d))
(* b d)
(*.f64 d d)
(+ (* a c) (* b d))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c))
(/ (* a c) (+ (pow c 2) (pow d 2)))
(*.f64 c c)

rewrite0.0ms (0%)

Memory
0.5MiB live, 0.5MiB allocated
Counts
5 → 5
Calls
Call 1
Inputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d)))
#s(approx (+ (* a c) (* b d)) (*.f64 d d))
(*.f64 d d)
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c))
(*.f64 c c)
Outputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d)))
#s(approx (+ (* a c) (* b d)) (*.f64 d d))
(*.f64 d d)
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c))
(*.f64 c c)

eval1.0ms (0.1%)

Memory
1.3MiB live, 1.3MiB allocated
Compiler

Compiled 205 to 19 computations (90.7% saved)

prune4.0ms (0.3%)

Memory
5.9MiB live, 5.9MiB allocated
Pruning

9 alts after pruning (0 fresh and 9 done)

PrunedKeptTotal
New707
Fresh000
Picked022
Done077
Total7916
Accuracy
55.7%
Counts
16 → 9
Alt Table
Click to see full alt table
StatusAccuracyProgram
54.2%
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
36.6%
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
35.7%
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d)))
2.1%
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
3.8%
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d)))
5.0%
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c))
4.5%
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d)))
4.6%
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d)))
4.9%
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c)))
Compiler

Compiled 398 to 151 computations (62.1% saved)

regimes19.0ms (1.4%)

Memory
-20.9MiB live, 22.1MiB allocated
Counts
9 → 1
Calls
Call 1
Inputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d)))
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Outputs
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Calls

5 calls:

5.0ms
d
3.0ms
c
3.0ms
a
3.0ms
b
3.0ms
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Results
AccuracySegmentsBranch
54.2%1a
54.2%1b
54.2%1c
54.2%1d
54.2%1(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Compiler

Compiled 19 to 27 computations (-42.1% saved)

regimes15.0ms (1.2%)

Memory
20.6MiB live, 20.6MiB allocated
Counts
8 → 3
Calls
Call 1
Inputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d)))
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Outputs
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d)))
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Calls

5 calls:

3.0ms
d
3.0ms
a
3.0ms
b
3.0ms
c
3.0ms
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Results
AccuracySegmentsBranch
43.3%3a
46.4%3c
38.4%2(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
42.7%3d
47.3%3b
Compiler

Compiled 19 to 27 computations (-42.1% saved)

regimes15.0ms (1.1%)

Memory
-19.4MiB live, 19.4MiB allocated
Counts
7 → 1
Calls
Call 1
Inputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d)))
Outputs
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d)))
Calls

5 calls:

4.0ms
b
3.0ms
d
3.0ms
a
3.0ms
c
2.0ms
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Results
AccuracySegmentsBranch
35.7%1(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
35.7%1d
35.7%1a
35.7%1c
35.7%1b
Compiler

Compiled 19 to 27 computations (-42.1% saved)

regimes12.0ms (0.9%)

Memory
19.2MiB live, 19.2MiB allocated
Counts
6 → 1
Calls
Call 1
Inputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 b d)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 d d)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 a c) (*.f64 b d)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
Outputs
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c))
Calls

5 calls:

2.0ms
d
2.0ms
b
2.0ms
c
2.0ms
a
2.0ms
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Results
AccuracySegmentsBranch
5.0%1b
5.0%1a
5.0%1d
5.0%1(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
5.0%1c
Compiler

Compiled 19 to 27 computations (-42.1% saved)

regimes10.0ms (0.7%)

Memory
-20.9MiB live, 17.8MiB allocated
Accuracy

Total -1.8b remaining (-3%)

Threshold costs -1.8b (-3%)

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

5 calls:

3.0ms
b
2.0ms
d
2.0ms
a
2.0ms
c
1.0ms
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Results
AccuracySegmentsBranch
4.9%1a
4.9%1d
4.9%1c
4.9%1b
4.9%1(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Compiler

Compiled 19 to 27 computations (-42.1% saved)

bsearch24.0ms (1.8%)

Memory
23.3MiB live, 23.3MiB allocated
Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
13.0ms
9.68220653894404e-7
0.0018845972645716504
8.0ms
-2.1644377257659007e-56
-8.714970429903669e-57
Samples
13.0ms208×0valid
Compiler

Compiled 512 to 382 computations (25.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 8.0ms
ival-mult: 5.0ms (60.9% of total)
ival-add: 2.0ms (24.4% of total)
ival-div: 1.0ms (12.2% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

simplify7.0ms (0.5%)

Memory
-30.9MiB live, 7.5MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
(if (<=.f64 b #s(literal -4196261778848663/220855883097298041197912187592864814478435487109452369765200775161577472 binary64)) (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) (if (<=.f64 b #s(literal 5072854620270127/9223372036854775808 binary64)) (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))))
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c)))
Outputs
(/.f64 (+.f64 (*.f64 a c) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))
(if (<=.f64 b #s(literal -4196261778848663/220855883097298041197912187592864814478435487109452369765200775161577472 binary64)) (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d))) (if (<=.f64 b #s(literal 5072854620270127/9223372036854775808 binary64)) (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d))) (/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 b d)) (+.f64 (*.f64 c c) (*.f64 d d)))))
(/.f64 #s(approx (+ (* a c) (* b d)) (*.f64 a c)) (+.f64 (*.f64 c c) (*.f64 d d)))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) (*.f64 c c))
#s(approx (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) #s(approx (+ (* a c) (* b d)) (*.f64 a c)))

soundness1.0ms (0.1%)

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

Compiled 145 to 30 computations (79.3% saved)

preprocess37.0ms (2.8%)

Memory
9.6MiB live, 49.7MiB allocated
Compiler

Compiled 392 to 122 computations (68.9% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...