bug366, discussion (missed optimization)

Time bar (total: 1.8s)

start0.0ms (0%)

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

analyze42.0ms (2.4%)

Memory
-3.6MiB live, 39.9MiB allocated; 12ms collecting garbage
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
30.8%25%56.2%0.1%0%18.7%0%5
32%25%53.1%0.1%0%21.9%0%6
55.8%37.5%29.7%0.1%0%32.8%0%7
57.8%37.5%27.3%0.1%0%35.1%0%8
74.2%43.7%15.2%0.1%0%41%0%9
75.9%43.7%13.9%0.1%0%42.3%0%10
85.9%46.8%7.7%0.1%0%45.4%0%11
87%46.8%7%0.1%0%46.1%0%12
Compiler

Compiled 10 to 8 computations (20% saved)

sample1.2s (67.6%)

Memory
-148.2MiB live, 978.8MiB allocated; 985ms collecting garbage
Samples
865.0ms8 256×0valid
31.0ms631×0invalid
Precisions
Click to see histograms. Total time spent on operations: 630.0ms
ival-mult: 518.0ms (82.2% of total)
ival-sqrt: 68.0ms (10.8% of total)
ival-sub: 38.0ms (6% of total)
adjust: 3.0ms (0.5% of total)
ival-assert: 3.0ms (0.5% of total)
Bogosity

explain75.0ms (4.2%)

Memory
8.2MiB live, 108.2MiB allocated; 5ms collecting garbage
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1340-2(-1.3698438633682287e-158 2.4000231773668236e-270)(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b)))
130-0-(-.f64 (*.f64 a a) (*.f64 b b))
00-0-(*.f64 a a)
00-0-a
00-0-b
00-0-(*.f64 b b)
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
sqrt.f64(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b)))oflow-rescue1100
(*.f64 b b)overflow13
(-.f64 (*.f64 a a) (*.f64 b b))overflow110
(*.f64 a a)overflow110
sqrt.f64(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b)))uflow-rescue220
(*.f64 b b)underflow122
(-.f64 (*.f64 a a) (*.f64 b b))underflow22
(*.f64 a a)underflow22
-.f64(-.f64 (*.f64 a a) (*.f64 b b))nan-rescue130
(*.f64 a a)overflow110
(*.f64 b b)overflow13
Confusion
Predicted +Predicted -
+1322
-0122
Precision
1.0
Recall
0.9850746268656716
Confusion?
Predicted +Predicted MaybePredicted -
+13202
-00122
Precision?
1.0
Recall?
0.9850746268656716
Freqs
test
numberfreq
0124
1119
213
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
31.0ms512×0valid
Compiler

Compiled 58 to 22 computations (62.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 18.0ms
ival-mult: 10.0ms (55.9% of total)
ival-sub: 3.0ms (16.8% of total)
ival-sqrt: 3.0ms (16.8% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess113.0ms (6.4%)

Memory
-11.8MiB live, 82.9MiB allocated; 3ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01850
15550
221450
334450
487550
5183950
6301750
7335950
8343750
9343750
10363350
068
0108
1238
2838
32258
44058
58368
613878
720718
828968
932068
1032688
1132688
1233468
033468
Stop Event
iter limit
saturated
iter limit
saturated
Calls
Call 1
Inputs
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b)))
Outputs
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b)))
(sqrt.f64 (*.f64 (-.f64 a b) (+.f64 b a)))
Symmetry

(abs a)

(abs b)

Compiler

Compiled 8 to 6 computations (25% saved)

eval0.0ms (0%)

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

Compiled 0 to 2 computations (-∞% saved)

prune0.0ms (0%)

Memory
0.6MiB live, 0.6MiB allocated; 0ms collecting garbage
Alt Table
Click to see full alt table
StatusAccuracyProgram
51.1%
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b)))
Compiler

Compiled 8 to 6 computations (25% saved)

series7.0ms (0.4%)

Memory
8.5MiB live, 8.5MiB allocated; 0ms collecting garbage
Counts
6 → 32
Calls
Call 1
Inputs
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b)))
(-.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a a)
a
(*.f64 b b)
b
Outputs
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* b (sqrt -1))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ (* 1/2 (/ (pow a 2) (* b (sqrt -1)))) (* b (sqrt -1)))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ (* b (sqrt -1)) (* (pow a 2) (+ (* -1/8 (/ (pow a 2) (* (pow b 3) (pow (sqrt -1) 3)))) (* 1/2 (/ 1 (* b (sqrt -1)))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ (* b (sqrt -1)) (* (pow a 2) (+ (* (pow a 2) (- (* 1/16 (/ (pow a 2) (* (pow b 5) (pow (sqrt -1) 5)))) (* 1/8 (/ 1 (* (pow b 3) (pow (sqrt -1) 3)))))) (* 1/2 (/ 1 (* b (sqrt -1)))))))))
#s(approx (- (* a a) (* b b)) #s(hole binary64 (* -1 (pow b 2))))
#s(approx (- (* a a) (* b b)) #s(hole binary64 (- (pow a 2) (pow b 2))))
#s(approx (* a a) #s(hole binary64 (pow a 2)))
#s(approx a #s(hole binary64 a))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 a))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* a (+ 1 (* -1/2 (/ (pow b 2) (pow a 2)))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (* -1/8 (/ (pow b 4) (pow a 4))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (+ (* -1/8 (/ (pow b 4) (pow a 4))) (* -1/16 (/ (pow b 6) (pow a 6)))))))))
#s(approx (- (* a a) (* b b)) #s(hole binary64 (pow a 2)))
#s(approx (- (* a a) (* b b)) #s(hole binary64 (* (pow a 2) (+ 1 (* -1 (/ (pow b 2) (pow a 2)))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 a)))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* a (+ 1 (* -1/2 (/ (pow b 2) (pow a 2))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (* -1/8 (/ (pow b 4) (pow a 4)))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (+ (* -1/8 (/ (pow b 4) (pow a 4))) (* -1/16 (/ (pow b 6) (pow a 6))))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ a (* -1/2 (/ (pow b 2) a)))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ a (* (pow b 2) (- (* -1/8 (/ (pow b 2) (pow a 3))) (* 1/2 (/ 1 a)))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ a (* (pow b 2) (- (* (pow b 2) (- (* -1/16 (/ (pow b 2) (pow a 5))) (* 1/8 (/ 1 (pow a 3))))) (* 1/2 (/ 1 a)))))))
#s(approx (- (* a a) (* b b)) #s(hole binary64 (+ (* -1 (pow b 2)) (pow a 2))))
#s(approx (* b b) #s(hole binary64 (pow b 2)))
#s(approx b #s(hole binary64 b))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* b (+ (sqrt -1) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow a 6) (* (pow b 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))))))
#s(approx (- (* a a) (* b b)) #s(hole binary64 (* (pow b 2) (- (/ (pow a 2) (pow b 2)) 1))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* b (sqrt -1)))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* b (+ (sqrt -1) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow a 6) (* (pow b 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))))))
Calls

6 calls:

TimeVariablePointExpression
1.0ms
a
@0
((sqrt (- (* a a) (* b b))) (- (* a a) (* b b)) (* a a) a (* b b) b)
1.0ms
a
@inf
((sqrt (- (* a a) (* b b))) (- (* a a) (* b b)) (* a a) a (* b b) b)
1.0ms
b
@inf
((sqrt (- (* a a) (* b b))) (- (* a a) (* b b)) (* a a) a (* b b) b)
1.0ms
a
@-inf
((sqrt (- (* a a) (* b b))) (- (* a a) (* b b)) (* a a) a (* b b) b)
1.0ms
b
@0
((sqrt (- (* a a) (* b b))) (- (* a a) (* b b)) (* a a) a (* b b) b)

rewrite49.0ms (2.8%)

Memory
-5.7MiB live, 41.1MiB allocated; 2ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0159856
0164821
0818795
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
38 → 57
Calls
Call 1
Inputs
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b)))
(-.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a a)
a
(*.f64 b b)
b
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* b (sqrt -1))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ (* 1/2 (/ (pow a 2) (* b (sqrt -1)))) (* b (sqrt -1)))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ (* b (sqrt -1)) (* (pow a 2) (+ (* -1/8 (/ (pow a 2) (* (pow b 3) (pow (sqrt -1) 3)))) (* 1/2 (/ 1 (* b (sqrt -1)))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ (* b (sqrt -1)) (* (pow a 2) (+ (* (pow a 2) (- (* 1/16 (/ (pow a 2) (* (pow b 5) (pow (sqrt -1) 5)))) (* 1/8 (/ 1 (* (pow b 3) (pow (sqrt -1) 3)))))) (* 1/2 (/ 1 (* b (sqrt -1)))))))))
#s(approx (- (* a a) (* b b)) #s(hole binary64 (* -1 (pow b 2))))
#s(approx (- (* a a) (* b b)) #s(hole binary64 (- (pow a 2) (pow b 2))))
#s(approx (* a a) #s(hole binary64 (pow a 2)))
#s(approx a #s(hole binary64 a))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 a))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* a (+ 1 (* -1/2 (/ (pow b 2) (pow a 2)))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (* -1/8 (/ (pow b 4) (pow a 4))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (+ (* -1/8 (/ (pow b 4) (pow a 4))) (* -1/16 (/ (pow b 6) (pow a 6)))))))))
#s(approx (- (* a a) (* b b)) #s(hole binary64 (pow a 2)))
#s(approx (- (* a a) (* b b)) #s(hole binary64 (* (pow a 2) (+ 1 (* -1 (/ (pow b 2) (pow a 2)))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 a)))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* a (+ 1 (* -1/2 (/ (pow b 2) (pow a 2))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (* -1/8 (/ (pow b 4) (pow a 4)))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (+ (* -1/8 (/ (pow b 4) (pow a 4))) (* -1/16 (/ (pow b 6) (pow a 6))))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ a (* -1/2 (/ (pow b 2) a)))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ a (* (pow b 2) (- (* -1/8 (/ (pow b 2) (pow a 3))) (* 1/2 (/ 1 a)))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ a (* (pow b 2) (- (* (pow b 2) (- (* -1/16 (/ (pow b 2) (pow a 5))) (* 1/8 (/ 1 (pow a 3))))) (* 1/2 (/ 1 a)))))))
#s(approx (- (* a a) (* b b)) #s(hole binary64 (+ (* -1 (pow b 2)) (pow a 2))))
#s(approx (* b b) #s(hole binary64 (pow b 2)))
#s(approx b #s(hole binary64 b))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* b (+ (sqrt -1) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow a 6) (* (pow b 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))))))
#s(approx (- (* a a) (* b b)) #s(hole binary64 (* (pow b 2) (- (/ (pow a 2) (pow b 2)) 1))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* b (sqrt -1)))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* b (+ (sqrt -1) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow a 6) (* (pow b 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))))))
Outputs
(pow.f64 (*.f64 (+.f64 a b) (-.f64 a b)) #s(literal 1/2 binary64))
(sqrt.f64 (*.f64 (+.f64 a b) (-.f64 a b)))
(*.f64 (+.f64 a b) (-.f64 a b))
(/.f64 (-.f64 (pow.f64 a #s(literal 4 binary64)) (pow.f64 b #s(literal 4 binary64))) (fma.f64 a a (*.f64 b b)))
(/.f64 (-.f64 (pow.f64 (*.f64 a a) #s(literal 3 binary64)) (pow.f64 (*.f64 b b) #s(literal 3 binary64))) (+.f64 (pow.f64 a #s(literal 4 binary64)) (+.f64 (pow.f64 b #s(literal 4 binary64)) (*.f64 (*.f64 a a) (*.f64 b b)))))
(fma.f64 (pow.f64 a #s(literal 1 binary64)) (pow.f64 a #s(literal 1 binary64)) (*.f64 (neg.f64 b) b))
(fma.f64 (neg.f64 a) (neg.f64 a) (*.f64 (neg.f64 b) b))
(fma.f64 (fabs.f64 a) (fabs.f64 a) (*.f64 (neg.f64 b) b))
(fma.f64 a a (*.f64 (neg.f64 b) b))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 a a) (*.f64 (neg.f64 b) b))
(*.f64 (pow.f64 a #s(literal 1 binary64)) (pow.f64 a #s(literal 1 binary64)))
(*.f64 (neg.f64 a) (neg.f64 a))
(*.f64 (fabs.f64 a) (fabs.f64 a))
(*.f64 a a)
(pow.f64 a #s(literal 2 binary64))
(exp.f64 (*.f64 (log.f64 a) #s(literal 2 binary64)))
a
(*.f64 (pow.f64 b #s(literal 1 binary64)) (pow.f64 b #s(literal 1 binary64)))
(*.f64 (neg.f64 b) (neg.f64 b))
(*.f64 (fabs.f64 b) (fabs.f64 b))
(*.f64 b b)
(pow.f64 b #s(literal 2 binary64))
(exp.f64 (*.f64 (log.f64 b) #s(literal 2 binary64)))
b
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (sqrt.f64 #s(literal -1 binary64)) b))
#s(approx (sqrt (- (* a a) (* b b))) (fma.f64 (/.f64 (/.f64 (*.f64 a a) b) (sqrt.f64 #s(literal -1 binary64))) #s(literal 1/2 binary64) (*.f64 (sqrt.f64 #s(literal -1 binary64)) b)))
#s(approx (sqrt (- (* a a) (* b b))) (fma.f64 (fma.f64 (/.f64 (*.f64 a a) (pow.f64 (*.f64 (sqrt.f64 #s(literal -1 binary64)) b) #s(literal 3 binary64))) #s(literal -1/8 binary64) (/.f64 #s(literal 1/2 binary64) (*.f64 (sqrt.f64 #s(literal -1 binary64)) b))) (*.f64 a a) (*.f64 (sqrt.f64 #s(literal -1 binary64)) b)))
#s(approx (sqrt (- (* a a) (* b b))) (fma.f64 (fma.f64 (-.f64 (/.f64 (*.f64 #s(literal 1/16 binary64) (*.f64 a a)) (pow.f64 (*.f64 (sqrt.f64 #s(literal -1 binary64)) b) #s(literal 5 binary64))) (/.f64 #s(literal 1/8 binary64) (pow.f64 (*.f64 (sqrt.f64 #s(literal -1 binary64)) b) #s(literal 3 binary64)))) (*.f64 a a) (/.f64 #s(literal 1/2 binary64) (*.f64 (sqrt.f64 #s(literal -1 binary64)) b))) (*.f64 a a) (*.f64 (sqrt.f64 #s(literal -1 binary64)) b)))
#s(approx (- (* a a) (* b b)) (neg.f64 (*.f64 b b)))
#s(approx (- (* a a) (* b b)) (*.f64 (+.f64 a b) (-.f64 a b)))
#s(approx (* a a) (*.f64 a a))
#s(approx a a)
#s(approx (sqrt (- (* a a) (* b b))) a)
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (fma.f64 (/.f64 (*.f64 b b) (*.f64 a a)) #s(literal -1/2 binary64) #s(literal 1 binary64)) a))
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (+.f64 (fma.f64 (/.f64 (*.f64 b b) (*.f64 a a)) #s(literal -1/2 binary64) #s(literal 1 binary64)) (/.f64 (*.f64 #s(literal -1/8 binary64) (pow.f64 b #s(literal 4 binary64))) (pow.f64 a #s(literal 4 binary64)))) a))
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (+.f64 (fma.f64 (/.f64 (*.f64 b b) (*.f64 a a)) #s(literal -1/2 binary64) (fma.f64 (/.f64 (pow.f64 b #s(literal 6 binary64)) (pow.f64 a #s(literal 6 binary64))) #s(literal -1/16 binary64) (/.f64 (*.f64 #s(literal -1/8 binary64) (pow.f64 b #s(literal 4 binary64))) (pow.f64 a #s(literal 4 binary64))))) #s(literal 1 binary64)) a))
#s(approx (- (* a a) (* b b)) (*.f64 a a))
#s(approx (- (* a a) (* b b)) (*.f64 (fma.f64 (/.f64 (*.f64 b b) (*.f64 a a)) #s(literal -1 binary64) #s(literal 1 binary64)) (*.f64 a a)))
#s(approx (sqrt (- (* a a) (* b b))) (neg.f64 a))
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (neg.f64 a) (fma.f64 (/.f64 (*.f64 b b) (*.f64 a a)) #s(literal -1/2 binary64) #s(literal 1 binary64))))
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (neg.f64 a) (+.f64 (fma.f64 (/.f64 (*.f64 b b) (*.f64 a a)) #s(literal -1/2 binary64) #s(literal 1 binary64)) (/.f64 (*.f64 #s(literal -1/8 binary64) (pow.f64 b #s(literal 4 binary64))) (pow.f64 a #s(literal 4 binary64))))))
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (neg.f64 a) (+.f64 (fma.f64 (/.f64 (*.f64 b b) (*.f64 a a)) #s(literal -1/2 binary64) (fma.f64 (/.f64 (pow.f64 b #s(literal 6 binary64)) (pow.f64 a #s(literal 6 binary64))) #s(literal -1/16 binary64) (/.f64 (*.f64 #s(literal -1/8 binary64) (pow.f64 b #s(literal 4 binary64))) (pow.f64 a #s(literal 4 binary64))))) #s(literal 1 binary64))))
#s(approx (sqrt (- (* a a) (* b b))) (fma.f64 (/.f64 (*.f64 b b) a) #s(literal -1/2 binary64) a))
#s(approx (sqrt (- (* a a) (* b b))) (fma.f64 (-.f64 (/.f64 (*.f64 #s(literal -1/8 binary64) (*.f64 b b)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)) (*.f64 b b) a))
#s(approx (sqrt (- (* a a) (* b b))) (fma.f64 (-.f64 (*.f64 (fma.f64 (/.f64 (*.f64 b b) (pow.f64 a #s(literal 5 binary64))) #s(literal -1/16 binary64) (*.f64 #s(literal -1/8 binary64) (pow.f64 a #s(literal -3 binary64)))) (*.f64 b b)) (/.f64 #s(literal 1/2 binary64) a)) (*.f64 b b) a))
#s(approx (- (* a a) (* b b)) (fma.f64 a a (neg.f64 (*.f64 b b))))
#s(approx (* b b) (*.f64 b b))
#s(approx b b)
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (fma.f64 (/.f64 (*.f64 a a) (*.f64 (*.f64 b b) (sqrt.f64 #s(literal -1 binary64)))) #s(literal 1/2 binary64) (sqrt.f64 #s(literal -1 binary64))) b))
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (+.f64 (fma.f64 (/.f64 (pow.f64 a #s(literal 4 binary64)) (*.f64 (pow.f64 b #s(literal 4 binary64)) (pow.f64 #s(literal -1 binary64) #s(literal 3/2 binary64)))) #s(literal -1/8 binary64) (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 a a)) (*.f64 (*.f64 b b) (sqrt.f64 #s(literal -1 binary64))))) (sqrt.f64 #s(literal -1 binary64))) b))
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (+.f64 (fma.f64 (/.f64 (pow.f64 a #s(literal 4 binary64)) (*.f64 (pow.f64 b #s(literal 4 binary64)) (pow.f64 #s(literal -1 binary64) #s(literal 3/2 binary64)))) #s(literal -1/8 binary64) (fma.f64 (/.f64 (pow.f64 a #s(literal 6 binary64)) (*.f64 (pow.f64 b #s(literal 6 binary64)) (pow.f64 #s(literal -1 binary64) #s(literal 5/2 binary64)))) #s(literal 1/16 binary64) (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 a a)) (*.f64 (*.f64 b b) (sqrt.f64 #s(literal -1 binary64)))))) (sqrt.f64 #s(literal -1 binary64))) b))
#s(approx (- (* a a) (* b b)) (*.f64 (-.f64 (/.f64 (*.f64 a a) (*.f64 b b)) #s(literal 1 binary64)) (*.f64 b b)))
#s(approx (sqrt (- (* a a) (* b b))) (neg.f64 (*.f64 (sqrt.f64 #s(literal -1 binary64)) b)))
#s(approx (sqrt (- (* a a) (* b b))) (neg.f64 (*.f64 (fma.f64 (/.f64 (*.f64 a a) (*.f64 (*.f64 b b) (sqrt.f64 #s(literal -1 binary64)))) #s(literal 1/2 binary64) (sqrt.f64 #s(literal -1 binary64))) b)))
#s(approx (sqrt (- (* a a) (* b b))) (neg.f64 (*.f64 (+.f64 (fma.f64 (/.f64 (pow.f64 a #s(literal 4 binary64)) (*.f64 (pow.f64 b #s(literal 4 binary64)) (pow.f64 #s(literal -1 binary64) #s(literal 3/2 binary64)))) #s(literal -1/8 binary64) (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 a a)) (*.f64 (*.f64 b b) (sqrt.f64 #s(literal -1 binary64))))) (sqrt.f64 #s(literal -1 binary64))) b)))
#s(approx (sqrt (- (* a a) (* b b))) (neg.f64 (*.f64 (+.f64 (fma.f64 (/.f64 (pow.f64 a #s(literal 4 binary64)) (*.f64 (pow.f64 b #s(literal 4 binary64)) (pow.f64 #s(literal -1 binary64) #s(literal 3/2 binary64)))) #s(literal -1/8 binary64) (fma.f64 (/.f64 (pow.f64 a #s(literal 6 binary64)) (*.f64 (pow.f64 b #s(literal 6 binary64)) (pow.f64 #s(literal -1 binary64) #s(literal 5/2 binary64)))) #s(literal 1/16 binary64) (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 a a)) (*.f64 (*.f64 b b) (sqrt.f64 #s(literal -1 binary64)))))) (sqrt.f64 #s(literal -1 binary64))) b)))

eval6.0ms (0.3%)

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

Compiled 1 095 to 230 computations (79% saved)

prune13.0ms (0.7%)

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

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New59261
Fresh000
Picked011
Done000
Total59362
Accuracy
99.5%
Counts
62 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
51.1%
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b)))
79.8%
#s(approx (sqrt (- (* a a) (* b b))) (fma.f64 (-.f64 (/.f64 (*.f64 #s(literal -1/8 binary64) (*.f64 b b)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)) (*.f64 b b) a))
98.6%
#s(approx (sqrt (- (* a a) (* b b))) a)
Compiler

Compiled 45 to 30 computations (33.3% saved)

series20.0ms (1.1%)

Memory
-26.0MiB live, 22.9MiB allocated; 3ms collecting garbage
Counts
14 → 48
Calls
Call 1
Inputs
#s(approx (sqrt (- (* a a) (* b b))) a)
a
#s(approx (sqrt (- (* a a) (* b b))) (fma.f64 (-.f64 (/.f64 (*.f64 #s(literal -1/8 binary64) (*.f64 b b)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)) (*.f64 b b) a))
(fma.f64 (-.f64 (/.f64 (*.f64 #s(literal -1/8 binary64) (*.f64 b b)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)) (*.f64 b b) a)
(-.f64 (/.f64 (*.f64 #s(literal -1/8 binary64) (*.f64 b b)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a))
(/.f64 (*.f64 #s(literal -1/8 binary64) (*.f64 b b)) (pow.f64 a #s(literal 3 binary64)))
(*.f64 #s(literal -1/8 binary64) (*.f64 b b))
#s(literal -1/8 binary64)
(*.f64 b b)
b
(pow.f64 a #s(literal 3 binary64))
#s(literal 3 binary64)
(/.f64 #s(literal 1/2 binary64) a)
#s(literal 1/2 binary64)
Outputs
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* b (sqrt -1))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ (* 1/2 (/ (pow a 2) (* b (sqrt -1)))) (* b (sqrt -1)))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ (* b (sqrt -1)) (* (pow a 2) (+ (* -1/8 (/ (pow a 2) (* (pow b 3) (pow (sqrt -1) 3)))) (* 1/2 (/ 1 (* b (sqrt -1)))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ (* b (sqrt -1)) (* (pow a 2) (+ (* (pow a 2) (- (* 1/16 (/ (pow a 2) (* (pow b 5) (pow (sqrt -1) 5)))) (* 1/8 (/ 1 (* (pow b 3) (pow (sqrt -1) 3)))))) (* 1/2 (/ 1 (* b (sqrt -1)))))))))
#s(approx a #s(hole binary64 a))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (* -1/8 (/ (pow b 4) (pow a 3)))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (/ (+ (* -1/2 (* (pow a 2) (pow b 2))) (* -1/8 (pow b 4))) (pow a 3))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (/ (+ (* -1/8 (pow b 4)) (* (pow a 2) (+ (* -1/2 (pow b 2)) (pow a 2)))) (pow a 3))))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) #s(hole binary64 (* -1/8 (/ (pow b 2) (pow a 3)))))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) #s(hole binary64 (/ (+ (* -1/2 (pow a 2)) (* -1/8 (pow b 2))) (pow a 3))))
#s(approx (/ (* -1/8 (* b b)) (pow a 3)) #s(hole binary64 (* -1/8 (/ (pow b 2) (pow a 3)))))
#s(approx (pow a 3) #s(hole binary64 (pow a 3)))
#s(approx (/ 1/2 a) #s(hole binary64 (/ 1/2 a)))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 a))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* a (+ 1 (* -1/2 (/ (pow b 2) (pow a 2)))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (* -1/8 (/ (pow b 4) (pow a 4))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (+ (* -1/8 (/ (pow b 4) (pow a 4))) (* -1/16 (/ (pow b 6) (pow a 6)))))))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 a))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (* a (+ 1 (* -1/2 (/ (pow b 2) (pow a 2)))))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (* -1/8 (/ (pow b 4) (pow a 4))))))))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) #s(hole binary64 (/ -1/2 a)))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) #s(hole binary64 (/ (- (* -1/8 (/ (pow b 2) (pow a 2))) 1/2) a)))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 a)))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* a (+ 1 (* -1/2 (/ (pow b 2) (pow a 2))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (* -1/8 (/ (pow b 4) (pow a 4)))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (+ (* -1/8 (/ (pow b 4) (pow a 4))) (* -1/16 (/ (pow b 6) (pow a 6))))))))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (* -1 (* a (- (* 1/2 (/ (pow b 2) (pow a 2))) 1)))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (* -1 (* a (- (+ (* 1/8 (/ (pow b 4) (pow a 4))) (* 1/2 (/ (pow b 2) (pow a 2)))) 1)))))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) #s(hole binary64 (* -1 (/ (+ 1/2 (* 1/8 (/ (pow b 2) (pow a 2)))) a))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ a (* -1/2 (/ (pow b 2) a)))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ a (* (pow b 2) (- (* -1/8 (/ (pow b 2) (pow a 3))) (* 1/2 (/ 1 a)))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ a (* (pow b 2) (- (* (pow b 2) (- (* -1/16 (/ (pow b 2) (pow a 5))) (* 1/8 (/ 1 (pow a 3))))) (* 1/2 (/ 1 a)))))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (+ a (* -1/2 (/ (pow b 2) a)))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (+ a (* (pow b 2) (- (* -1/8 (/ (pow b 2) (pow a 3))) (* 1/2 (/ 1 a)))))))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) #s(hole binary64 (- (* -1/8 (/ (pow b 2) (pow a 3))) (* 1/2 (/ 1 a)))))
#s(approx (* -1/8 (* b b)) #s(hole binary64 (* -1/8 (pow b 2))))
#s(approx (* b b) #s(hole binary64 (pow b 2)))
#s(approx b #s(hole binary64 b))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* b (+ (sqrt -1) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow a 6) (* (pow b 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (* -1 (* (pow b 4) (+ (* 1/8 (/ 1 (pow a 3))) (* 1/2 (/ 1 (* a (pow b 2)))))))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (* (pow b 4) (- (/ a (pow b 4)) (+ (* 1/8 (/ 1 (pow a 3))) (/ 1/2 (* a (pow b 2))))))))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) #s(hole binary64 (* -1 (* (pow b 2) (+ (* 1/8 (/ 1 (pow a 3))) (* 1/2 (/ 1 (* a (pow b 2)))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* b (sqrt -1)))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* b (+ (sqrt -1) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow a 6) (* (pow b 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))))))
Calls

6 calls:

TimeVariablePointExpression
8.0ms
b
@inf
((sqrt (- (* a a) (* b b))) a (sqrt (- (* a a) (* b b))) (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (/ (* -1/8 (* b b)) (pow a 3)) (* -1/8 (* b b)) -1/8 (* b b) b (pow a 3) 3 (/ 1/2 a) 1/2)
3.0ms
b
@0
((sqrt (- (* a a) (* b b))) a (sqrt (- (* a a) (* b b))) (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (/ (* -1/8 (* b b)) (pow a 3)) (* -1/8 (* b b)) -1/8 (* b b) b (pow a 3) 3 (/ 1/2 a) 1/2)
2.0ms
a
@0
((sqrt (- (* a a) (* b b))) a (sqrt (- (* a a) (* b b))) (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (/ (* -1/8 (* b b)) (pow a 3)) (* -1/8 (* b b)) -1/8 (* b b) b (pow a 3) 3 (/ 1/2 a) 1/2)
2.0ms
b
@-inf
((sqrt (- (* a a) (* b b))) a (sqrt (- (* a a) (* b b))) (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (/ (* -1/8 (* b b)) (pow a 3)) (* -1/8 (* b b)) -1/8 (* b b) b (pow a 3) 3 (/ 1/2 a) 1/2)
2.0ms
a
@-inf
((sqrt (- (* a a) (* b b))) a (sqrt (- (* a a) (* b b))) (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (/ (* -1/8 (* b b)) (pow a 3)) (* -1/8 (* b b)) -1/8 (* b b) b (pow a 3) 3 (/ 1/2 a) 1/2)

rewrite52.0ms (2.9%)

Memory
10.8MiB live, 57.5MiB allocated; 1ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02221491
02361436
011431400
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
62 → 94
Calls
Call 1
Inputs
#s(approx (sqrt (- (* a a) (* b b))) a)
a
#s(approx (sqrt (- (* a a) (* b b))) (fma.f64 (-.f64 (/.f64 (*.f64 #s(literal -1/8 binary64) (*.f64 b b)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)) (*.f64 b b) a))
(fma.f64 (-.f64 (/.f64 (*.f64 #s(literal -1/8 binary64) (*.f64 b b)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)) (*.f64 b b) a)
(-.f64 (/.f64 (*.f64 #s(literal -1/8 binary64) (*.f64 b b)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a))
(/.f64 (*.f64 #s(literal -1/8 binary64) (*.f64 b b)) (pow.f64 a #s(literal 3 binary64)))
(*.f64 #s(literal -1/8 binary64) (*.f64 b b))
#s(literal -1/8 binary64)
(*.f64 b b)
b
(pow.f64 a #s(literal 3 binary64))
#s(literal 3 binary64)
(/.f64 #s(literal 1/2 binary64) a)
#s(literal 1/2 binary64)
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* b (sqrt -1))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ (* 1/2 (/ (pow a 2) (* b (sqrt -1)))) (* b (sqrt -1)))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ (* b (sqrt -1)) (* (pow a 2) (+ (* -1/8 (/ (pow a 2) (* (pow b 3) (pow (sqrt -1) 3)))) (* 1/2 (/ 1 (* b (sqrt -1)))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ (* b (sqrt -1)) (* (pow a 2) (+ (* (pow a 2) (- (* 1/16 (/ (pow a 2) (* (pow b 5) (pow (sqrt -1) 5)))) (* 1/8 (/ 1 (* (pow b 3) (pow (sqrt -1) 3)))))) (* 1/2 (/ 1 (* b (sqrt -1)))))))))
#s(approx a #s(hole binary64 a))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (* -1/8 (/ (pow b 4) (pow a 3)))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (/ (+ (* -1/2 (* (pow a 2) (pow b 2))) (* -1/8 (pow b 4))) (pow a 3))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (/ (+ (* -1/8 (pow b 4)) (* (pow a 2) (+ (* -1/2 (pow b 2)) (pow a 2)))) (pow a 3))))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) #s(hole binary64 (* -1/8 (/ (pow b 2) (pow a 3)))))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) #s(hole binary64 (/ (+ (* -1/2 (pow a 2)) (* -1/8 (pow b 2))) (pow a 3))))
#s(approx (/ (* -1/8 (* b b)) (pow a 3)) #s(hole binary64 (* -1/8 (/ (pow b 2) (pow a 3)))))
#s(approx (pow a 3) #s(hole binary64 (pow a 3)))
#s(approx (/ 1/2 a) #s(hole binary64 (/ 1/2 a)))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 a))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* a (+ 1 (* -1/2 (/ (pow b 2) (pow a 2)))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (* -1/8 (/ (pow b 4) (pow a 4))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (+ (* -1/8 (/ (pow b 4) (pow a 4))) (* -1/16 (/ (pow b 6) (pow a 6)))))))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 a))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (* a (+ 1 (* -1/2 (/ (pow b 2) (pow a 2)))))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (* -1/8 (/ (pow b 4) (pow a 4))))))))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) #s(hole binary64 (/ -1/2 a)))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) #s(hole binary64 (/ (- (* -1/8 (/ (pow b 2) (pow a 2))) 1/2) a)))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 a)))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* a (+ 1 (* -1/2 (/ (pow b 2) (pow a 2))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (* -1/8 (/ (pow b 4) (pow a 4)))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* a (+ 1 (+ (* -1/2 (/ (pow b 2) (pow a 2))) (+ (* -1/8 (/ (pow b 4) (pow a 4))) (* -1/16 (/ (pow b 6) (pow a 6))))))))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (* -1 (* a (- (* 1/2 (/ (pow b 2) (pow a 2))) 1)))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (* -1 (* a (- (+ (* 1/8 (/ (pow b 4) (pow a 4))) (* 1/2 (/ (pow b 2) (pow a 2)))) 1)))))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) #s(hole binary64 (* -1 (/ (+ 1/2 (* 1/8 (/ (pow b 2) (pow a 2)))) a))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ a (* -1/2 (/ (pow b 2) a)))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ a (* (pow b 2) (- (* -1/8 (/ (pow b 2) (pow a 3))) (* 1/2 (/ 1 a)))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (+ a (* (pow b 2) (- (* (pow b 2) (- (* -1/16 (/ (pow b 2) (pow a 5))) (* 1/8 (/ 1 (pow a 3))))) (* 1/2 (/ 1 a)))))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (+ a (* -1/2 (/ (pow b 2) a)))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (+ a (* (pow b 2) (- (* -1/8 (/ (pow b 2) (pow a 3))) (* 1/2 (/ 1 a)))))))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) #s(hole binary64 (- (* -1/8 (/ (pow b 2) (pow a 3))) (* 1/2 (/ 1 a)))))
#s(approx (* -1/8 (* b b)) #s(hole binary64 (* -1/8 (pow b 2))))
#s(approx (* b b) #s(hole binary64 (pow b 2)))
#s(approx b #s(hole binary64 b))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* b (+ (sqrt -1) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow a 6) (* (pow b 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (* -1 (* (pow b 4) (+ (* 1/8 (/ 1 (pow a 3))) (* 1/2 (/ 1 (* a (pow b 2)))))))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) #s(hole binary64 (* (pow b 4) (- (/ a (pow b 4)) (+ (* 1/8 (/ 1 (pow a 3))) (/ 1/2 (* a (pow b 2))))))))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) #s(hole binary64 (* -1 (* (pow b 2) (+ (* 1/8 (/ 1 (pow a 3))) (* 1/2 (/ 1 (* a (pow b 2)))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* b (sqrt -1)))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* b (+ (sqrt -1) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1))))))))))
#s(approx (sqrt (- (* a a) (* b b))) #s(hole binary64 (* -1 (* b (+ (sqrt -1) (+ (* -1/8 (/ (pow a 4) (* (pow b 4) (pow (sqrt -1) 3)))) (+ (* 1/16 (/ (pow a 6) (* (pow b 6) (pow (sqrt -1) 5)))) (* 1/2 (/ (pow a 2) (* (pow b 2) (sqrt -1)))))))))))
Outputs
#s(approx (sqrt (- (* a a) (* b b))) a)
a
#s(approx (sqrt (- (* a a) (* b b))) (fma.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)) a))
(/.f64 (-.f64 (*.f64 a a) (*.f64 (*.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a))) (*.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a))))) (-.f64 a (*.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)))))
(/.f64 (-.f64 (*.f64 (*.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a))) (*.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)))) (*.f64 a a)) (-.f64 (*.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a))) a))
(/.f64 (+.f64 (pow.f64 a #s(literal 3 binary64)) (pow.f64 (*.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a))) #s(literal 3 binary64))) (fma.f64 a a (-.f64 (*.f64 (*.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a))) (*.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)))) (*.f64 a (*.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)))))))
(/.f64 (+.f64 (pow.f64 (*.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a))) #s(literal 3 binary64)) (pow.f64 a #s(literal 3 binary64))) (fma.f64 (*.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a))) (*.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a))) (-.f64 (*.f64 a a) (*.f64 (*.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a))) a))))
(fma.f64 (*.f64 (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)) b) b a)
(fma.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)) a)
(fma.f64 (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)) (*.f64 b b) a)
(-.f64 a (*.f64 (neg.f64 (*.f64 b b)) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a))))
(+.f64 (*.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a))) a)
(+.f64 a (*.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a))))
(/.f64 (-.f64 (*.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64)))) (*.f64 (/.f64 #s(literal 1/2 binary64) a) (/.f64 #s(literal 1/2 binary64) a))) (fma.f64 (/.f64 (*.f64 b b) (pow.f64 a #s(literal 3 binary64))) #s(literal -1/8 binary64) (/.f64 #s(literal 1/2 binary64) a)))
(/.f64 (-.f64 (pow.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) #s(literal 3 binary64)) (pow.f64 (/.f64 #s(literal 1/2 binary64) a) #s(literal 3 binary64))) (fma.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (fma.f64 (/.f64 #s(literal 1/2 binary64) a) (/.f64 #s(literal 1/2 binary64) a) (*.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)))))
(/.f64 (-.f64 (*.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) a) (*.f64 (pow.f64 a #s(literal 3 binary64)) #s(literal 1/2 binary64))) (*.f64 (pow.f64 a #s(literal 3 binary64)) a))
(fma.f64 (/.f64 (*.f64 b b) (pow.f64 a #s(literal 3 binary64))) #s(literal -1/8 binary64) (*.f64 #s(literal -1/2 binary64) (pow.f64 a #s(literal -1 binary64))))
(fma.f64 #s(literal -1/8 binary64) (/.f64 (*.f64 b b) (pow.f64 a #s(literal 3 binary64))) (*.f64 #s(literal -1/2 binary64) (pow.f64 a #s(literal -1 binary64))))
(-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a))
(+.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (*.f64 #s(literal -1/2 binary64) (pow.f64 a #s(literal -1 binary64))))
(*.f64 (/.f64 (*.f64 b b) (pow.f64 a #s(literal 3 binary64))) #s(literal -1/8 binary64))
(*.f64 #s(literal -1/8 binary64) (/.f64 (*.f64 b b) (pow.f64 a #s(literal 3 binary64))))
(/.f64 (neg.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64))) (neg.f64 (pow.f64 a #s(literal 3 binary64))))
(/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64)))
(*.f64 (*.f64 #s(literal -1/8 binary64) b) b)
(*.f64 (*.f64 b b) #s(literal -1/8 binary64))
(*.f64 #s(literal -1/8 binary64) (*.f64 b b))
#s(literal -1/8 binary64)
(*.f64 (pow.f64 b #s(literal 1 binary64)) (pow.f64 b #s(literal 1 binary64)))
(*.f64 (neg.f64 b) (neg.f64 b))
(*.f64 (fabs.f64 b) (fabs.f64 b))
(*.f64 b b)
(pow.f64 b #s(literal 2 binary64))
(exp.f64 (*.f64 (log.f64 b) #s(literal 2 binary64)))
b
(*.f64 (pow.f64 a #s(literal 3/2 binary64)) (pow.f64 a #s(literal 3/2 binary64)))
(*.f64 (*.f64 a a) a)
(*.f64 a (*.f64 a a))
(pow.f64 a #s(literal 3 binary64))
(exp.f64 (*.f64 (log.f64 a) #s(literal 3 binary64)))
#s(literal 3 binary64)
(*.f64 (pow.f64 a #s(literal -1 binary64)) #s(literal 1/2 binary64))
(*.f64 #s(literal 1/2 binary64) (pow.f64 a #s(literal -1 binary64)))
(/.f64 #s(literal -1/2 binary64) (neg.f64 a))
(/.f64 #s(literal 1/2 binary64) a)
#s(literal 1/2 binary64)
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (sqrt.f64 #s(literal -1 binary64)) b))
#s(approx (sqrt (- (* a a) (* b b))) (fma.f64 (/.f64 (/.f64 (*.f64 a a) b) (sqrt.f64 #s(literal -1 binary64))) #s(literal 1/2 binary64) (*.f64 (sqrt.f64 #s(literal -1 binary64)) b)))
#s(approx (sqrt (- (* a a) (* b b))) (fma.f64 (fma.f64 (/.f64 (*.f64 a a) (pow.f64 (*.f64 (sqrt.f64 #s(literal -1 binary64)) b) #s(literal 3 binary64))) #s(literal -1/8 binary64) (/.f64 #s(literal 1/2 binary64) (*.f64 (sqrt.f64 #s(literal -1 binary64)) b))) (*.f64 a a) (*.f64 (sqrt.f64 #s(literal -1 binary64)) b)))
#s(approx (sqrt (- (* a a) (* b b))) (fma.f64 (fma.f64 (-.f64 (/.f64 (*.f64 #s(literal 1/16 binary64) (*.f64 a a)) (pow.f64 (*.f64 (sqrt.f64 #s(literal -1 binary64)) b) #s(literal 5 binary64))) (/.f64 #s(literal 1/8 binary64) (pow.f64 (*.f64 (sqrt.f64 #s(literal -1 binary64)) b) #s(literal 3 binary64)))) (*.f64 a a) (/.f64 #s(literal 1/2 binary64) (*.f64 (sqrt.f64 #s(literal -1 binary64)) b))) (*.f64 a a) (*.f64 (sqrt.f64 #s(literal -1 binary64)) b)))
#s(approx a a)
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) (/.f64 (*.f64 (pow.f64 b #s(literal 4 binary64)) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) (/.f64 (fma.f64 (pow.f64 (*.f64 a b) #s(literal 2 binary64)) #s(literal -1/2 binary64) (*.f64 (pow.f64 b #s(literal 4 binary64)) #s(literal -1/8 binary64))) (pow.f64 a #s(literal 3 binary64))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) (/.f64 (fma.f64 (fma.f64 (*.f64 b b) #s(literal -1/2 binary64) (*.f64 a a)) (*.f64 a a) (*.f64 (pow.f64 b #s(literal 4 binary64)) #s(literal -1/8 binary64))) (pow.f64 a #s(literal 3 binary64))))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (/.f64 (fma.f64 (*.f64 b b) #s(literal -1/8 binary64) (*.f64 #s(literal -1/2 binary64) (*.f64 a a))) (pow.f64 a #s(literal 3 binary64))))
#s(approx (/ (* -1/8 (* b b)) (pow a 3)) (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))))
#s(approx (pow a 3) (pow.f64 a #s(literal 3 binary64)))
#s(approx (/ 1/2 a) (/.f64 #s(literal 1/2 binary64) a))
#s(approx (sqrt (- (* a a) (* b b))) a)
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (fma.f64 (/.f64 (*.f64 b b) (*.f64 a a)) #s(literal -1/2 binary64) #s(literal 1 binary64)) a))
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (+.f64 (fma.f64 (/.f64 (*.f64 b b) (*.f64 a a)) #s(literal -1/2 binary64) #s(literal 1 binary64)) (/.f64 (*.f64 (pow.f64 b #s(literal 4 binary64)) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 4 binary64)))) a))
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (+.f64 (fma.f64 (/.f64 (*.f64 b b) (*.f64 a a)) #s(literal -1/2 binary64) (fma.f64 (/.f64 (pow.f64 b #s(literal 6 binary64)) (pow.f64 a #s(literal 6 binary64))) #s(literal -1/16 binary64) (/.f64 (*.f64 (pow.f64 b #s(literal 4 binary64)) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 4 binary64))))) #s(literal 1 binary64)) a))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) a)
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) (*.f64 (fma.f64 (/.f64 (*.f64 b b) (*.f64 a a)) #s(literal -1/2 binary64) #s(literal 1 binary64)) a))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) (*.f64 (+.f64 (fma.f64 (/.f64 (*.f64 b b) (*.f64 a a)) #s(literal -1/2 binary64) #s(literal 1 binary64)) (/.f64 (*.f64 (pow.f64 b #s(literal 4 binary64)) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 4 binary64)))) a))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (/.f64 #s(literal -1/2 binary64) a))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (/.f64 (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (*.f64 a a)) #s(literal 1/2 binary64)) a))
#s(approx (sqrt (- (* a a) (* b b))) (neg.f64 a))
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (neg.f64 a) (fma.f64 (/.f64 (*.f64 b b) (*.f64 a a)) #s(literal -1/2 binary64) #s(literal 1 binary64))))
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (neg.f64 a) (+.f64 (fma.f64 (/.f64 (*.f64 b b) (*.f64 a a)) #s(literal -1/2 binary64) #s(literal 1 binary64)) (/.f64 (*.f64 (pow.f64 b #s(literal 4 binary64)) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 4 binary64))))))
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (neg.f64 a) (+.f64 (fma.f64 (/.f64 (*.f64 b b) (*.f64 a a)) #s(literal -1/2 binary64) (fma.f64 (/.f64 (pow.f64 b #s(literal 6 binary64)) (pow.f64 a #s(literal 6 binary64))) #s(literal -1/16 binary64) (/.f64 (*.f64 (pow.f64 b #s(literal 4 binary64)) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 4 binary64))))) #s(literal 1 binary64))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) (*.f64 (neg.f64 a) (-.f64 (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 b b)) (*.f64 a a)) #s(literal 1 binary64))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) (*.f64 (neg.f64 a) (fma.f64 (/.f64 (pow.f64 b #s(literal 4 binary64)) (pow.f64 a #s(literal 4 binary64))) #s(literal 1/8 binary64) (-.f64 (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 b b)) (*.f64 a a)) #s(literal 1 binary64)))))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (neg.f64 (/.f64 (fma.f64 (/.f64 (*.f64 b b) (*.f64 a a)) #s(literal 1/8 binary64) #s(literal 1/2 binary64)) a)))
#s(approx (sqrt (- (* a a) (* b b))) (fma.f64 (/.f64 (*.f64 b b) a) #s(literal -1/2 binary64) a))
#s(approx (sqrt (- (* a a) (* b b))) (fma.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)) a))
#s(approx (sqrt (- (* a a) (* b b))) (fma.f64 (-.f64 (*.f64 (fma.f64 (/.f64 (*.f64 b b) (pow.f64 a #s(literal 5 binary64))) #s(literal -1/16 binary64) (*.f64 #s(literal -1/8 binary64) (pow.f64 a #s(literal -3 binary64)))) (*.f64 b b)) (/.f64 #s(literal 1/2 binary64) a)) (*.f64 b b) a))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) (fma.f64 (/.f64 (*.f64 b b) a) #s(literal -1/2 binary64) a))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) (fma.f64 (*.f64 b b) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)) a))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (-.f64 (/.f64 (*.f64 (*.f64 b b) #s(literal -1/8 binary64)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)))
#s(approx (* -1/8 (* b b)) (*.f64 (*.f64 b b) #s(literal -1/8 binary64)))
#s(approx (* b b) (*.f64 b b))
#s(approx b b)
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (fma.f64 (/.f64 (*.f64 a a) (*.f64 (*.f64 b b) (sqrt.f64 #s(literal -1 binary64)))) #s(literal 1/2 binary64) (sqrt.f64 #s(literal -1 binary64))) b))
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (+.f64 (fma.f64 (/.f64 (pow.f64 a #s(literal 4 binary64)) (*.f64 (pow.f64 b #s(literal 4 binary64)) (pow.f64 #s(literal -1 binary64) #s(literal 3/2 binary64)))) #s(literal -1/8 binary64) (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 a a)) (*.f64 (*.f64 b b) (sqrt.f64 #s(literal -1 binary64))))) (sqrt.f64 #s(literal -1 binary64))) b))
#s(approx (sqrt (- (* a a) (* b b))) (*.f64 (+.f64 (fma.f64 (/.f64 (pow.f64 a #s(literal 4 binary64)) (*.f64 (pow.f64 b #s(literal 4 binary64)) (pow.f64 #s(literal -1 binary64) #s(literal 3/2 binary64)))) #s(literal -1/8 binary64) (fma.f64 (/.f64 (pow.f64 a #s(literal 6 binary64)) (*.f64 (pow.f64 b #s(literal 6 binary64)) (pow.f64 #s(literal -1 binary64) #s(literal 5/2 binary64)))) #s(literal 1/16 binary64) (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 a a)) (*.f64 (*.f64 b b) (sqrt.f64 #s(literal -1 binary64)))))) (sqrt.f64 #s(literal -1 binary64))) b))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) (neg.f64 (*.f64 (fma.f64 (pow.f64 a #s(literal -3 binary64)) #s(literal 1/8 binary64) (/.f64 #s(literal 1/2 binary64) (*.f64 (*.f64 b b) a))) (pow.f64 b #s(literal 4 binary64)))))
#s(approx (+ (* (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (* b b)) a) (*.f64 (-.f64 (/.f64 a (pow.f64 b #s(literal 4 binary64))) (fma.f64 (pow.f64 a #s(literal -3 binary64)) #s(literal 1/8 binary64) (/.f64 #s(literal 1/2 binary64) (*.f64 (*.f64 b b) a)))) (pow.f64 b #s(literal 4 binary64))))
#s(approx (- (/ (* -1/8 (* b b)) (pow a 3)) (/ 1/2 a)) (neg.f64 (*.f64 (fma.f64 (pow.f64 a #s(literal -3 binary64)) #s(literal 1/8 binary64) (/.f64 #s(literal 1/2 binary64) (*.f64 (*.f64 b b) a))) (*.f64 b b))))
#s(approx (sqrt (- (* a a) (* b b))) (neg.f64 (*.f64 (sqrt.f64 #s(literal -1 binary64)) b)))
#s(approx (sqrt (- (* a a) (* b b))) (neg.f64 (*.f64 (fma.f64 (/.f64 (*.f64 a a) (*.f64 (*.f64 b b) (sqrt.f64 #s(literal -1 binary64)))) #s(literal 1/2 binary64) (sqrt.f64 #s(literal -1 binary64))) b)))
#s(approx (sqrt (- (* a a) (* b b))) (neg.f64 (*.f64 (+.f64 (fma.f64 (/.f64 (pow.f64 a #s(literal 4 binary64)) (*.f64 (pow.f64 b #s(literal 4 binary64)) (pow.f64 #s(literal -1 binary64) #s(literal 3/2 binary64)))) #s(literal -1/8 binary64) (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 a a)) (*.f64 (*.f64 b b) (sqrt.f64 #s(literal -1 binary64))))) (sqrt.f64 #s(literal -1 binary64))) b)))
#s(approx (sqrt (- (* a a) (* b b))) (neg.f64 (*.f64 (+.f64 (fma.f64 (/.f64 (pow.f64 a #s(literal 4 binary64)) (*.f64 (pow.f64 b #s(literal 4 binary64)) (pow.f64 #s(literal -1 binary64) #s(literal 3/2 binary64)))) #s(literal -1/8 binary64) (fma.f64 (/.f64 (pow.f64 a #s(literal 6 binary64)) (*.f64 (pow.f64 b #s(literal 6 binary64)) (pow.f64 #s(literal -1 binary64) #s(literal 5/2 binary64)))) #s(literal 1/16 binary64) (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 a a)) (*.f64 (*.f64 b b) (sqrt.f64 #s(literal -1 binary64)))))) (sqrt.f64 #s(literal -1 binary64))) b)))

eval11.0ms (0.6%)

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

Compiled 3 701 to 444 computations (88% saved)

prune108.0ms (6.1%)

Memory
-0.8MiB live, 94.2MiB allocated; 3ms collecting garbage
Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New1110111
Fresh000
Picked022
Done011
Total1113114
Accuracy
99.5%
Counts
114 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
51.1%
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b)))
79.8%
#s(approx (sqrt (- (* a a) (* b b))) (fma.f64 (-.f64 (/.f64 (*.f64 #s(literal -1/8 binary64) (*.f64 b b)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)) (*.f64 b b) a))
98.6%
#s(approx (sqrt (- (* a a) (* b b))) a)
Compiler

Compiled 90 to 51 computations (43.3% saved)

regimes9.0ms (0.5%)

Memory
12.5MiB live, 12.5MiB allocated; 0ms collecting garbage
Accuracy

Total -35.0b remaining (-3909.3%)

Threshold costs -35b (-3909.3%)

Counts
3 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (- (* a a) (* b b))) a)
#s(approx (sqrt (- (* a a) (* b b))) (fma.f64 (-.f64 (/.f64 (*.f64 #s(literal -1/8 binary64) (*.f64 b b)) (pow.f64 a #s(literal 3 binary64))) (/.f64 #s(literal 1/2 binary64) a)) (*.f64 b b) a))
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b)))
Outputs
#s(approx (sqrt (- (* a a) (* b b))) a)
Calls

6 calls:

1.0ms
b
1.0ms
a
1.0ms
(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b)))
1.0ms
(-.f64 (*.f64 a a) (*.f64 b b))
1.0ms
(*.f64 a a)
Results
AccuracySegmentsBranch
98.6%1(*.f64 b b)
98.6%1(*.f64 a a)
98.6%1(-.f64 (*.f64 a a) (*.f64 b b))
98.6%1(sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b)))
98.6%1a
98.6%1b
Compiler

Compiled 23 to 21 computations (8.7% saved)

simplify56.0ms (3.2%)

Memory
-20.1MiB live, 28.9MiB allocated; 2ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0710
12010
28010
322210
440210
583110
6138210
7206610
8289110
9320110
10326310
11326310
12334110
Stop Event
saturated
Calls
Call 1
Inputs
#s(approx (sqrt (- (* a a) (* b b))) a)
Outputs
#s(approx (sqrt (- (* a a) (* b b))) a)

derivations2.0ms (0.1%)

Memory
1.3MiB live, 1.3MiB allocated; 0ms collecting garbage
Stop Event
done
Compiler

Compiled 10 to 7 computations (30% saved)

preprocess11.0ms (0.6%)

Memory
13.6MiB live, 13.6MiB allocated; 0ms collecting garbage
Remove

(abs b)

Compiler

Compiled 96 to 68 computations (29.2% saved)

end0.0ms (0%)

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

Profiling

Loading profile data...