Complex division, imag part

Time bar (total: 1.5s)

start0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated

analyze25.0ms (1.7%)

Memory
-13.4MiB live, 25.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)

sample904.0ms (62.1%)

Memory
8.4MiB live, 1 154.1MiB allocated
Samples
599.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 379.0ms
ival-mult: 239.0ms (63.1% of total)
ival-div: 53.0ms (14% of total)
ival-sub: 42.0ms (11.1% of total)
ival-add: 34.0ms (9% of total)
ival-true: 7.0ms (1.8% of total)
ival-assert: 3.0ms (0.8% of total)
Bogosity

explain128.0ms (8.8%)

Memory
16.2MiB live, 170.9MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1090-0-(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
30-0-(-.f64 (*.f64 b c) (*.f64 a 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 b c)
00-0-c
00-0-(*.f64 a d)
00-0-b
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
/.f64(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))o/o580
(*.f64 b c)overflow41
(-.f64 (*.f64 b c) (*.f64 a d))overflow66
(*.f64 a d)overflow34
(+.f64 (*.f64 c c) (*.f64 d d))overflow127
(*.f64 c c)overflow79
(*.f64 d d)overflow70
/.f64(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))n/o320
(+.f64 (*.f64 c c) (*.f64 d d))overflow127
(*.f64 c c)overflow79
(*.f64 d d)overflow70
/.f64(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))o/n80
(*.f64 b c)overflow41
(-.f64 (*.f64 b c) (*.f64 a d))overflow66
(*.f64 a d)overflow34
/.f64(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))n/u60
(+.f64 (*.f64 c c) (*.f64 d d))underflow15
(*.f64 c c)underflow54
(*.f64 d d)underflow54
-.f64(-.f64 (*.f64 b c) (*.f64 a d))nan-rescue30
(*.f64 b c)overflow41
(*.f64 a d)overflow34
/.f64(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))u/u30
(*.f64 b c)underflow22
(-.f64 (*.f64 b c) (*.f64 a d))underflow5
(*.f64 a d)underflow30
(+.f64 (*.f64 c c) (*.f64 d d))underflow15
(*.f64 c c)underflow54
(*.f64 d d)underflow54
/.f64(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))u/n20
(*.f64 b c)underflow22
(-.f64 (*.f64 b c) (*.f64 a d))underflow5
(*.f64 a d)underflow30
Confusion
Predicted +Predicted -
+1090
-0147
Precision
1.0
Recall
1.0
Confusion?
Predicted +Predicted MaybePredicted -
+10900
-00147
Precision?
1.0
Recall?
1.0
Freqs
test
numberfreq
0147
1106
23
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
46.0ms512×0valid
Compiler

Compiled 154 to 48 computations (68.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 28.0ms
ival-mult: 20.0ms (71.2% of total)
ival-div: 3.0ms (10.7% of total)
ival-sub: 2.0ms (7.1% of total)
ival-add: 2.0ms (7.1% of total)
ival-true: 1.0ms (3.6% of total)
ival-assert: 0.0ms (0% of total)

preprocess4.0ms (0.3%)

Memory
6.1MiB live, 6.1MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Outputs
(/.f64 (-.f64 (*.f64 b c) (*.f64 a 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.6MiB live, 0.6MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
59.3%
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Compiler

Compiled 15 to 11 computations (26.7% saved)

simplify0.0ms (0%)

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

Found 4 expressions of interest:

NewMetricScoreProgram
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)) (+.f64 (*.f64 c c) (*.f64 d d)))
Calls
Call 1
Inputs
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
(-.f64 (*.f64 b c) (*.f64 a d))
(*.f64 b c)
b
c
(*.f64 a d)
a
d
(+.f64 (*.f64 c c) (*.f64 d d))
(*.f64 c c)
(*.f64 d d)
Outputs
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
(-.f64 (*.f64 b c) (*.f64 a d))
(*.f64 b c)
b
c
(*.f64 a d)
a
d
(+.f64 (*.f64 c c) (*.f64 d d))
(*.f64 c c)
(*.f64 d d)

localize34.0ms (2.4%)

Memory
4.3MiB live, 40.2MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 a d)
accuracy0.0078125
(+.f64 (*.f64 c c) (*.f64 d d))
accuracy0.6992146216604117
(-.f64 (*.f64 b c) (*.f64 a d))
accuracy25.760275984917705
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Samples
20.0ms256×0valid
Compiler

Compiled 92 to 24 computations (73.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-mult: 6.0ms (57.1% of total)
ival-sub: 1.0ms (9.5% of total)
ival-div: 1.0ms (9.5% of total)
ival-add: 1.0ms (9.5% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series20.0ms (1.3%)

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

12 calls:

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

simplify1.0ms (0%)

Memory
1.2MiB live, 1.2MiB allocated
Algorithm
egg-herbie
Counts
45 → 5
Calls
Call 1
Inputs
(/ (* b c) (+ (pow c 2) (pow d 2)))
(+ (* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) (/ (* b c) (+ (pow c 2) (pow d 2))))
(* b c)
(+ (* -1 (* a d)) (* b c))
(* a d)
(* -1 (/ (* a d) (+ (pow c 2) (pow d 2))))
(* a (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (/ (* b c) (* a (+ (pow c 2) (pow d 2))))))
(* -1 (* a d))
(* a (- (/ (* b c) a) d))
(* -1 (* a (+ (* -1 (/ (* b c) (* a (+ (pow c 2) (pow d 2))))) (/ d (+ (pow c 2) (pow d 2))))))
(* -1 (* a (- (* -1 (/ (* b c) a)) (* -1 d))))
(- (* b c) (* a d))
(* b (+ (* -1 (/ (* a d) (* b (+ (pow c 2) (pow d 2))))) (/ c (+ (pow c 2) (pow d 2)))))
(* b (+ c (* -1 (/ (* a d) b))))
(* -1 (* b (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (/ (* a d) (* b (+ (pow c 2) (pow d 2)))))))
(* -1 (* b (+ (* -1 c) (/ (* a d) b))))
(* -1 (/ a d))
(+ (* -1 (/ a d)) (/ (* b c) (pow d 2)))
(+ (* -1 (/ a d)) (* c (+ (/ b (pow d 2)) (/ (* a c) (pow d 3)))))
(+ (* -1 (/ a d)) (* c (+ (* c (- (* -1 (/ (* b c) (pow d 4))) (* -1 (/ a (pow d 3))))) (/ b (pow d 2)))))
(pow d 2)
(+ (pow c 2) (pow d 2))
(/ b c)
(/ (+ b (* -1 (/ (* a d) c))) c)
(/ (+ b (+ (* -1 (/ (* a d) c)) (* -1 (/ (* b (pow d 2)) (pow c 2))))) c)
(/ (- (+ b (+ (* -1 (/ (* a d) c)) (/ (* a (pow d 3)) (pow c 3)))) (/ (* b (pow d 2)) (pow c 2))) c)
(* c (+ b (* -1 (/ (* a d) c))))
(pow c 2)
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2))))
(* -1 (/ (+ (* -1 b) (/ (* a d) c)) c))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (* b (pow d 2)) c))) c))) c))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (- (* -1 (/ (* a (pow d 3)) c)) (* -1 (* b (pow d 2)))) c))) c))) c))
(* -1 (* c (+ (* -1 b) (/ (* a d) c))))
(+ (* -1 (/ (* a d) (pow c 2))) (/ b c))
(+ (* d (+ (* -1 (/ a (pow c 2))) (* -1 (/ (* b d) (pow c 3))))) (/ b c))
(+ (* d (+ (* -1 (/ a (pow c 2))) (* d (- (/ (* a d) (pow c 4)) (/ b (pow c 3)))))) (/ b c))
(/ (+ (* -1 a) (/ (* b c) d)) d)
(/ (+ (* -1 a) (+ (/ (* a (pow c 2)) (pow d 2)) (/ (* b c) d))) d)
(/ (- (+ (* -1 a) (+ (* -1 (/ (* b (pow c 3)) (pow d 3))) (/ (* b c) d))) (* -1 (/ (* a (pow c 2)) (pow d 2)))) d)
(* d (- (/ (* b c) d) a))
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2))))
(* -1 (/ (+ a (* -1 (/ (* b c) d))) d))
(* -1 (/ (+ a (* -1 (/ (+ (* b c) (/ (* a (pow c 2)) d)) d))) d))
(* -1 (/ (+ a (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow c 3)) d) (* a (pow c 2))) d)) (* b c)) d))) d))
(* -1 (* d (- (* -1 (/ (* b c) d)) (* -1 a))))
Outputs
(/ (* b c) (+ (pow c 2) (pow d 2)))
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
(+ (* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) (/ (* b c) (+ (pow c 2) (pow d 2))))
(-.f64 (*.f64 b c) (*.f64 a d))
(* b c)
(*.f64 b c)
(+ (* -1 (* a d)) (* b c))
(*.f64 a d)
(* a d)
(+.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 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
(-.f64 (*.f64 b c) (*.f64 a d))
(*.f64 b c)
(*.f64 a d)
(+.f64 (*.f64 c c) (*.f64 d d))
Outputs
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
(-.f64 (*.f64 b c) (*.f64 a d))
(*.f64 b c)
(*.f64 a d)
(+.f64 (*.f64 c c) (*.f64 d d))

eval1.0ms (0.1%)

Memory
2.4MiB live, 2.4MiB allocated
Compiler

Compiled 190 to 27 computations (85.8% saved)

prune2.0ms (0.1%)

Memory
6.5MiB live, 6.5MiB allocated
Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New6410
Fresh000
Picked011
Done000
Total6511
Accuracy
60.3%
Counts
11 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
59.3%
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
11.1%
(/.f64 (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) (+.f64 (*.f64 c c) (*.f64 d d)))
39.1%
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d)))
19.9%
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
3.8%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d)))
Compiler

Compiled 99 to 64 computations (35.4% saved)

simplify1.0ms (0.1%)

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

Found 16 expressions of interest:

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

localize46.0ms (3.1%)

Memory
-15.2MiB live, 70.0MiB allocated
Localize:

Found 16 expressions of interest:

NewMetricScoreProgram
accuracy0.0078125
(+.f64 (*.f64 c c) (*.f64 d d))
accuracy0.6992146216604117
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))
accuracy25.760275984917705
(/.f64 (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) (+.f64 (*.f64 c c) (*.f64 d d)))
accuracy56.383774088543646
#s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))
accuracy0.0
(*.f64 b c)
accuracy0.0078125
(+.f64 (*.f64 c c) (*.f64 d d))
accuracy25.760275984917705
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d)))
accuracy28.800248239553934
#s(approx (- (* b c) (* a d)) (*.f64 b c))
accuracy0.0
(*.f64 a d)
accuracy0.0078125
(+.f64 (*.f64 c c) (*.f64 d d))
accuracy25.760275984917705
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
accuracy61.410189907574996
#s(approx (- (* b c) (* a d)) (*.f64 a d))
accuracy0.0
(*.f64 b c)
accuracy0.0
(*.f64 a d)
accuracy0.6992146216604117
(-.f64 (*.f64 b c) (*.f64 a d))
accuracy61.55832403418052
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d)))
Samples
32.0ms256×0valid
Compiler

Compiled 366 to 38 computations (89.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 15.0ms
ival-mult: 11.0ms (73.9% of total)
ival-div: 2.0ms (13.4% of total)
ival-sub: 1.0ms (6.7% of total)
ival-add: 1.0ms (6.7% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series9.0ms (0.7%)

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

12 calls:

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

simplify4.0ms (0.3%)

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

rewrite1.0ms (0%)

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

eval2.0ms (0.2%)

Memory
4.6MiB live, 4.6MiB allocated
Compiler

Compiled 760 to 43 computations (94.3% saved)

prune4.0ms (0.3%)

Memory
7.0MiB live, 7.0MiB allocated
Pruning

9 alts after pruning (4 fresh and 5 done)

PrunedKeptTotal
New24428
Fresh000
Picked044
Done011
Total24933
Accuracy
60.5%
Counts
33 → 9
Alt Table
Click to see full alt table
StatusAccuracyProgram
59.3%
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
11.1%
(/.f64 (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) (+.f64 (*.f64 c c) (*.f64 d d)))
39.1%
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d)))
19.9%
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
3.8%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d)))
2.3%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
2.3%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))))
4.0%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c)))
4.6%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d)))
Compiler

Compiled 215 to 126 computations (41.4% saved)

simplify1.0ms (0.1%)

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

Found 14 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 (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
cost-diff0
(*.f64 b c)
cost-diff0
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))
cost-diff0
#s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))
cost-diff0
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))))
cost-diff0
(*.f64 b c)
cost-diff0
#s(approx (- (* b c) (* a d)) (*.f64 b c))
cost-diff0
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c)))
cost-diff0
(*.f64 a d)
cost-diff0
#s(approx (- (* b c) (* a d)) (*.f64 a d))
cost-diff0
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d)))
Calls
Call 1
Inputs
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d)))
#s(approx (- (* b c) (* a d)) (*.f64 a d))
(*.f64 a d)
a
d
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c)))
#s(approx (- (* b c) (* a d)) (*.f64 b c))
(*.f64 b c)
b
c
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))))
#s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))
(*.f64 b c)
b
c
#s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))
(+.f64 (*.f64 c c) (*.f64 d d))
(*.f64 c c)
(*.f64 d d)
d
#s(approx (/ (- (* b c) (* a 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 (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d)))
#s(approx (- (* b c) (* a d)) (*.f64 a d))
(*.f64 a d)
a
d
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c)))
#s(approx (- (* b c) (* a d)) (*.f64 b c))
(*.f64 b c)
b
c
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))))
#s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))
(*.f64 b c)
b
c
#s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))
(+.f64 (*.f64 c c) (*.f64 d d))
(*.f64 c c)
(*.f64 d d)
d
#s(approx (/ (- (* b c) (* a 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

localize37.0ms (2.6%)

Memory
8.4MiB live, 46.3MiB allocated
Localize:

Found 14 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 d d)
accuracy0.0
(*.f64 c c)
accuracy0.0078125
(+.f64 (*.f64 c c) (*.f64 d d))
accuracy62.55995142458805
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
accuracy0.0078125
(+.f64 (*.f64 c c) (*.f64 d d))
accuracy0.6992146216604117
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))
accuracy56.383774088543646
#s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))
accuracy61.55832403418052
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))))
accuracy0.0
(*.f64 b c)
accuracy28.800248239553934
#s(approx (- (* b c) (* a d)) (*.f64 b c))
accuracy61.55832403418052
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c)))
accuracy0.0
(*.f64 a d)
accuracy61.410189907574996
#s(approx (- (* b c) (* a d)) (*.f64 a d))
accuracy61.55832403418052
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d)))
Samples
26.0ms256×0valid
Compiler

Compiled 368 to 38 computations (89.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-mult: 7.0ms (66.3% of total)
ival-sub: 1.0ms (9.5% of total)
ival-div: 1.0ms (9.5% of total)
ival-add: 1.0ms (9.5% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series10.0ms (0.7%)

Memory
15.5MiB live, 15.4MiB allocated
Counts
14 → 45
Calls
Call 1
Inputs
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d)))
#s(approx (- (* b c) (* a d)) (*.f64 a d))
(*.f64 a d)
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c)))
#s(approx (- (* b c) (* a d)) (*.f64 b c))
(*.f64 b c)
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))))
#s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))
#s(approx (/ (- (* b c) (* a 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)
#s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))
Outputs
(/ (* b c) (+ (pow c 2) (pow d 2)))
(+ (* -1 (/ (* a d) (+ (pow c 2) (pow d 2)))) (/ (* b c) (+ (pow c 2) (pow d 2))))
(* b c)
(+ (* -1 (* a d)) (* b c))
(* a d)
(* -1 (/ (* a d) (+ (pow c 2) (pow d 2))))
(* a (+ (* -1 (/ d (+ (pow c 2) (pow d 2)))) (/ (* b c) (* a (+ (pow c 2) (pow d 2))))))
(* -1 (* a d))
(* a (- (/ (* b c) a) d))
(* -1 (* a (+ (* -1 (/ (* b c) (* a (+ (pow c 2) (pow d 2))))) (/ d (+ (pow c 2) (pow d 2))))))
(* -1 (* a (- (* -1 (/ (* b c) a)) (* -1 d))))
(- (* b c) (* a d))
(* b (+ (* -1 (/ (* a d) (* b (+ (pow c 2) (pow d 2))))) (/ c (+ (pow c 2) (pow d 2)))))
(* b (+ c (* -1 (/ (* a d) b))))
(* -1 (* b (+ (* -1 (/ c (+ (pow c 2) (pow d 2)))) (/ (* a d) (* b (+ (pow c 2) (pow d 2)))))))
(* -1 (* b (+ (* -1 c) (/ (* a d) b))))
(* -1 (/ a d))
(+ (* -1 (/ a d)) (/ (* b c) (pow d 2)))
(+ (* -1 (/ a d)) (* c (+ (/ b (pow d 2)) (/ (* a c) (pow d 3)))))
(+ (* -1 (/ a d)) (* c (+ (* c (- (* -1 (/ (* b c) (pow d 4))) (* -1 (/ a (pow d 3))))) (/ b (pow d 2)))))
(pow d 2)
(+ (pow c 2) (pow d 2))
(pow c 2)
(/ b c)
(/ (+ b (* -1 (/ (* a d) c))) c)
(/ (+ b (+ (* -1 (/ (* a d) c)) (* -1 (/ (* b (pow d 2)) (pow c 2))))) c)
(/ (- (+ b (+ (* -1 (/ (* a d) c)) (/ (* a (pow d 3)) (pow c 3)))) (/ (* b (pow d 2)) (pow c 2))) c)
(* c (+ b (* -1 (/ (* a d) c))))
(* (pow c 2) (+ 1 (/ (pow d 2) (pow c 2))))
(* -1 (/ (+ (* -1 b) (/ (* a d) c)) c))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (* b (pow d 2)) c))) c))) c))
(* -1 (/ (+ (* -1 b) (* -1 (/ (+ (* -1 (* a d)) (* -1 (/ (- (* -1 (/ (* a (pow d 3)) c)) (* -1 (* b (pow d 2)))) c))) c))) c))
(* -1 (* c (+ (* -1 b) (/ (* a d) c))))
(+ (* -1 (/ (* a d) (pow c 2))) (/ b c))
(+ (* d (+ (* -1 (/ a (pow c 2))) (* -1 (/ (* b d) (pow c 3))))) (/ b c))
(+ (* d (+ (* -1 (/ a (pow c 2))) (* d (- (/ (* a d) (pow c 4)) (/ b (pow c 3)))))) (/ b c))
(/ (+ (* -1 a) (/ (* b c) d)) d)
(/ (+ (* -1 a) (+ (/ (* a (pow c 2)) (pow d 2)) (/ (* b c) d))) d)
(/ (- (+ (* -1 a) (+ (* -1 (/ (* b (pow c 3)) (pow d 3))) (/ (* b c) d))) (* -1 (/ (* a (pow c 2)) (pow d 2)))) d)
(* d (- (/ (* b c) d) a))
(* (pow d 2) (+ 1 (/ (pow c 2) (pow d 2))))
(* -1 (/ (+ a (* -1 (/ (* b c) d))) d))
(* -1 (/ (+ a (* -1 (/ (+ (* b c) (/ (* a (pow c 2)) d)) d))) d))
(* -1 (/ (+ a (* -1 (/ (+ (* -1 (/ (- (/ (* b (pow c 3)) d) (* a (pow c 2))) d)) (* b c)) d))) d))
(* -1 (* d (- (* -1 (/ (* b c) d)) (* -1 a))))
Calls

12 calls:

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

simplify1.0ms (0.1%)

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

rewrite1.0ms (0%)

Memory
1.1MiB live, 1.1MiB allocated
Counts
14 → 14
Calls
Call 1
Inputs
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d)))
#s(approx (- (* b c) (* a d)) (*.f64 a d))
(*.f64 a d)
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c)))
#s(approx (- (* b c) (* a d)) (*.f64 b c))
(*.f64 b c)
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))))
#s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))
#s(approx (/ (- (* b c) (* a 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)
#s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))
Outputs
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d)))
#s(approx (- (* b c) (* a d)) (*.f64 a d))
(*.f64 a d)
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c)))
#s(approx (- (* b c) (* a d)) (*.f64 b c))
(*.f64 b c)
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))))
#s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))))
(-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))
#s(approx (/ (- (* b c) (* a 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)
#s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))

eval6.0ms (0.4%)

Memory
-33.1MiB live, 5.0MiB allocated
Compiler

Compiled 971 to 43 computations (95.6% saved)

prune5.0ms (0.4%)

Memory
8.7MiB live, 8.7MiB allocated
Pruning

11 alts after pruning (2 fresh and 9 done)

PrunedKeptTotal
New27229
Fresh000
Picked044
Done055
Total271138
Accuracy
60.6%
Counts
38 → 11
Alt Table
Click to see full alt table
StatusAccuracyProgram
59.3%
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
11.1%
(/.f64 (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) (+.f64 (*.f64 c c) (*.f64 d d)))
39.1%
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d)))
19.9%
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
3.8%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d)))
2.3%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
6.0%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d))
2.3%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))))
4.7%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c)))
4.0%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c)))
4.6%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d)))
Compiler

Compiled 261 to 153 computations (41.4% saved)

simplify0.0ms (0%)

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

Found 5 expressions of interest:

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

localize37.0ms (2.6%)

Memory
-47.1MiB live, 31.6MiB allocated
Localize:

Found 5 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 d d)
accuracy60.16726351560913
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d))
accuracy0.0
(*.f64 c c)
accuracy57.058678995640584
#s(approx (- (* b c) (* a d)) (*.f64 c c))
accuracy61.55832403418052
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c)))
Samples
19.0ms256×0valid
Compiler

Compiled 112 to 29 computations (74.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-mult: 6.0ms (57.1% of total)
ival-sub: 1.0ms (9.5% of total)
ival-div: 1.0ms (9.5% of total)
ival-add: 1.0ms (9.5% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series7.0ms (0.5%)

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

12 calls:

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

simplify1.0ms (0%)

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

rewrite0.0ms (0%)

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

eval1.0ms (0.1%)

Memory
1.6MiB live, 1.6MiB allocated
Compiler

Compiled 205 to 19 computations (90.7% saved)

prune5.0ms (0.4%)

Memory
9.0MiB live, 9.0MiB allocated
Pruning

11 alts after pruning (0 fresh and 11 done)

PrunedKeptTotal
New707
Fresh000
Picked022
Done099
Total71118
Accuracy
60.6%
Counts
18 → 11
Alt Table
Click to see full alt table
StatusAccuracyProgram
59.3%
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
11.1%
(/.f64 (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d)))) (+.f64 (*.f64 c c) (*.f64 d d)))
39.1%
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 b c)) (+.f64 (*.f64 c c) (*.f64 d d)))
19.9%
(/.f64 #s(approx (- (* b c) (* a d)) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
3.8%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (-.f64 (*.f64 b c) (*.f64 a d)))
2.3%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (+.f64 (*.f64 c c) (*.f64 d d)))
6.0%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) (*.f64 d d))
2.3%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (-.f64 (*.f64 b c) #s(approx (* a d) (+.f64 (*.f64 c c) (*.f64 d d))))))
4.7%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 c c)))
4.0%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 b c)))
4.6%
#s(approx (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) #s(approx (- (* b c) (* a d)) (*.f64 a d)))
Compiler

Compiled 522 to 187 computations (64.2% saved)

regimes24.0ms (1.7%)

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

5 calls:

7.0ms
c
4.0ms
d
4.0ms
b
4.0ms
a
4.0ms
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Results
AccuracySegmentsBranch
59.3%1a
59.3%1b
59.3%1c
59.3%1d
59.3%1(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Compiler

Compiled 19 to 27 computations (-42.1% saved)

regimes20.0ms (1.3%)

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

5 calls:

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

Compiled 19 to 27 computations (-42.1% saved)

regimes17.0ms (1.2%)

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

5 calls:

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

Compiled 19 to 27 computations (-42.1% saved)

regimes16.0ms (1.1%)

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

5 calls:

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

Compiled 19 to 27 computations (-42.1% saved)

regimes9.0ms (0.6%)

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

5 calls:

2.0ms
c
2.0ms
a
2.0ms
b
2.0ms
d
2.0ms
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Results
AccuracySegmentsBranch
4.7%1d
4.7%1a
6.5%2c
4.7%1b
4.7%1(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (+.f64 (*.f64 c c) (*.f64 d d)))
Compiler

Compiled 19 to 27 computations (-42.1% saved)

regimes8.0ms (0.6%)

Memory
-25.2MiB live, 14.4MiB allocated
Accuracy

Total -1.6b remaining (-2.6%)

Threshold costs -1.6b (-2.6%)

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

5 calls:

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

Compiled 19 to 27 computations (-42.1% saved)

bsearch17.0ms (1.2%)

Memory
23.3MiB live, 23.3MiB allocated
Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
15.0ms
-1.832453680024499e+107
-2.276732189747335e+101
Samples
10.0ms144×0valid
Compiler

Compiled 504 to 288 computations (42.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 6.0ms
ival-mult: 4.0ms (67.9% of total)
ival-sub: 1.0ms (17% of total)
ival-div: 1.0ms (17% of total)
ival-add: 1.0ms (17% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

simplify5.0ms (0.3%)

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

soundness1.0ms (0.1%)

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

Compiled 157 to 29 computations (81.5% saved)

preprocess39.0ms (2.7%)

Memory
-4.0MiB live, 35.1MiB allocated
Compiler

Compiled 418 to 122 computations (70.8% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...