arccos

Time bar (total: 1.0s)

start0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

analyze5.0ms (0.5%)

Memory
5.9MiB live, 5.9MiB allocated
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%100%0%0%0%0%1
0%0%100%0%0%0%0%2
0%0%100%0%0%0%0%3
33.3%25%50%0%0%25%0%4
60%37.5%25%0%0%37.5%0%5
77.8%43.7%12.5%0%0%43.7%0%6
88.2%46.9%6.2%0%0%46.9%0%7
93.9%48.4%3.1%0%0%48.4%0%8
96.9%49.2%1.6%0%0%49.2%0%9
98.4%49.6%0.8%0%0%49.6%0%10
99.2%49.8%0.4%0%0%49.8%0%11
99.6%49.9%0.2%0%0%49.9%0%12
Compiler

Compiled 13 to 11 computations (15.4% saved)

sample812.0ms (79%)

Memory
28.6MiB live, 1 201.8MiB allocated
Samples
565.0ms8 256×0valid
1.0ms16×0invalid
Precisions
Click to see histograms. Total time spent on operations: 400.0ms
ival-atan: 92.0ms (23% of total)
ival-sqrt: 76.0ms (19% of total)
ival-sub: 59.0ms (14.8% of total)
ival-div: 56.0ms (14% of total)
ival-mult: 53.0ms (13.3% of total)
ival-add: 48.0ms (12% of total)
exact: 8.0ms (2% of total)
ival-true: 6.0ms (1.5% of total)
ival-assert: 3.0ms (0.8% of total)
Bogosity

explain95.0ms (9.2%)

Memory
-3.2MiB live, 159.7MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
00-0-#s(literal 1 binary64)
00-0-(-.f64 #s(literal 1 binary64) x)
00-0-(atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
00-0-(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))
00-0-(+.f64 #s(literal 1 binary64) x)
00-0-(sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
00-0-#s(literal 2 binary64)
00-0-x
Confusion
Predicted +Predicted -
+00
-0256
Precision
0/0
Recall
0/0
Confusion?
Predicted +Predicted MaybePredicted -
+000
-00256
Precision?
0/0
Recall?
0/0
Freqs
test
numberfreq
0256
Total Confusion?
Predicted +Predicted MaybePredicted -
+000
-001
Precision?
0/0
Recall?
0/0
Samples
35.0ms512×0valid
Compiler

Compiled 147 to 40 computations (72.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 21.0ms
ival-atan: 4.0ms (18.6% of total)
ival-sqrt: 4.0ms (18.6% of total)
ival-div: 3.0ms (14% of total)
ival-add: 3.0ms (14% of total)
ival-mult: 3.0ms (14% of total)
ival-sub: 3.0ms (14% of total)
exact: 1.0ms (4.7% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)

preprocess2.0ms (0.2%)

Memory
3.6MiB live, 3.6MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
Outputs
(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
Compiler

Compiled 11 to 9 computations (18.2% saved)

eval0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated
Compiler

Compiled 0 to 1 computations (-∞% saved)

prune0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
Compiler

Compiled 11 to 9 computations (18.2% saved)

simplify0.0ms (0%)

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

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))
cost-diff0
(sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
cost-diff0
(atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
cost-diff0
(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
Calls
Call 1
Inputs
(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
#s(literal 2 binary64)
(atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
(sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))
(-.f64 #s(literal 1 binary64) x)
#s(literal 1 binary64)
x
(+.f64 #s(literal 1 binary64) x)
Outputs
(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
#s(literal 2 binary64)
(atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
(sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))
(-.f64 #s(literal 1 binary64) x)
#s(literal 1 binary64)
x
(+.f64 #s(literal 1 binary64) x)

localize30.0ms (2.9%)

Memory
-3.4MiB live, 32.7MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
accuracy0.00390625
(sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
accuracy0.015625
(atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
accuracy0.0234375
(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))
Samples
18.0ms256×0valid
Compiler

Compiled 90 to 20 computations (77.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-div: 2.0ms (18.8% of total)
ival-mult: 2.0ms (18.8% of total)
ival-atan: 2.0ms (18.8% of total)
ival-sub: 2.0ms (18.8% of total)
ival-sqrt: 2.0ms (18.8% of total)
ival-add: 1.0ms (9.4% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series3.0ms (0.3%)

Memory
4.3MiB live, 4.3MiB allocated
Counts
4 → 23
Calls
Call 1
Inputs
(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
(atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
(sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))
Outputs
(* 2 (atan (sqrt (/ (- 1 x) (+ 1 x)))))
(atan (sqrt (/ (- 1 x) (+ 1 x))))
1
(+ 1 (* -1 x))
(+ 1 (* x (- (* 1/2 x) 1)))
(+ 1 (* x (- (* x (+ 1/2 (* -1/2 x))) 1)))
(+ 1 (* -2 x))
(+ 1 (* x (- (* 2 x) 2)))
(+ 1 (* x (- (* x (+ 2 (* -2 x))) 2)))
(sqrt -1)
(+ (sqrt -1) (/ 1 (* x (sqrt -1))))
(+ (sqrt -1) (+ (* -1/2 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (* (pow x 2) (sqrt -1)))) (/ 1 (* x (sqrt -1)))))
(+ (sqrt -1) (+ (* -1/2 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (* (pow x 2) (sqrt -1)))) (+ (* 1/2 (/ (- 2 (* -1 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (pow (sqrt -1) 2)))) (* (pow x 3) (sqrt -1)))) (/ 1 (* x (sqrt -1))))))
-1
(- (* 2 (/ 1 x)) 1)
(- (* 2 (/ 1 x)) (+ 1 (/ 2 (pow x 2))))
(- (+ (* 2 (/ 1 x)) (* 2 (/ 1 (pow x 3)))) (+ 1 (/ 2 (pow x 2))))
(* 2 (atan (sqrt (/ (+ 1 (* -1 x)) (- 1 (* -1 x))))))
(atan (sqrt (/ (+ 1 (* -1 x)) (- 1 (* -1 x)))))
(+ (sqrt -1) (* -1 (/ (- (* 1/2 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (* x (sqrt -1)))) (/ 1 (sqrt -1))) x)))
(+ (sqrt -1) (* -1 (/ (- (* -1 (/ (+ (* -1/2 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (sqrt -1))) (* 1/2 (/ (+ 2 (+ (* 2 (/ 1 (pow (sqrt -1) 2))) (/ 1 (pow (sqrt -1) 4)))) (* x (sqrt -1))))) x)) (/ 1 (sqrt -1))) x)))
(- (* -1 (/ (- (* 2 (/ 1 x)) 2) x)) 1)
(- (* -1 (/ (- (* -1 (/ (- (* 2 (/ 1 x)) 2) x)) 2) x)) 1)
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
((* 2 (atan (sqrt (/ (- 1 x) (+ 1 x))))) (atan (sqrt (/ (- 1 x) (+ 1 x)))) (sqrt (/ (- 1 x) (+ 1 x))) (/ (- 1 x) (+ 1 x)))
1.0ms
x
@inf
((* 2 (atan (sqrt (/ (- 1 x) (+ 1 x))))) (atan (sqrt (/ (- 1 x) (+ 1 x)))) (sqrt (/ (- 1 x) (+ 1 x))) (/ (- 1 x) (+ 1 x)))
1.0ms
x
@0
((* 2 (atan (sqrt (/ (- 1 x) (+ 1 x))))) (atan (sqrt (/ (- 1 x) (+ 1 x)))) (sqrt (/ (- 1 x) (+ 1 x))) (/ (- 1 x) (+ 1 x)))

simplify0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Algorithm
egg-herbie
Counts
23 → 4
Calls
Call 1
Inputs
(* 2 (atan (sqrt (/ (- 1 x) (+ 1 x)))))
(atan (sqrt (/ (- 1 x) (+ 1 x))))
1
(+ 1 (* -1 x))
(+ 1 (* x (- (* 1/2 x) 1)))
(+ 1 (* x (- (* x (+ 1/2 (* -1/2 x))) 1)))
(+ 1 (* -2 x))
(+ 1 (* x (- (* 2 x) 2)))
(+ 1 (* x (- (* x (+ 2 (* -2 x))) 2)))
(sqrt -1)
(+ (sqrt -1) (/ 1 (* x (sqrt -1))))
(+ (sqrt -1) (+ (* -1/2 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (* (pow x 2) (sqrt -1)))) (/ 1 (* x (sqrt -1)))))
(+ (sqrt -1) (+ (* -1/2 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (* (pow x 2) (sqrt -1)))) (+ (* 1/2 (/ (- 2 (* -1 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (pow (sqrt -1) 2)))) (* (pow x 3) (sqrt -1)))) (/ 1 (* x (sqrt -1))))))
-1
(- (* 2 (/ 1 x)) 1)
(- (* 2 (/ 1 x)) (+ 1 (/ 2 (pow x 2))))
(- (+ (* 2 (/ 1 x)) (* 2 (/ 1 (pow x 3)))) (+ 1 (/ 2 (pow x 2))))
(* 2 (atan (sqrt (/ (+ 1 (* -1 x)) (- 1 (* -1 x))))))
(atan (sqrt (/ (+ 1 (* -1 x)) (- 1 (* -1 x)))))
(+ (sqrt -1) (* -1 (/ (- (* 1/2 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (* x (sqrt -1)))) (/ 1 (sqrt -1))) x)))
(+ (sqrt -1) (* -1 (/ (- (* -1 (/ (+ (* -1/2 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (sqrt -1))) (* 1/2 (/ (+ 2 (+ (* 2 (/ 1 (pow (sqrt -1) 2))) (/ 1 (pow (sqrt -1) 4)))) (* x (sqrt -1))))) x)) (/ 1 (sqrt -1))) x)))
(- (* -1 (/ (- (* 2 (/ 1 x)) 2) x)) 1)
(- (* -1 (/ (- (* -1 (/ (- (* 2 (/ 1 x)) 2) x)) 2) x)) 1)
Outputs
(* 2 (atan (sqrt (/ (- 1 x) (+ 1 x)))))
(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
(atan (sqrt (/ (- 1 x) (+ 1 x))))
(atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
1
(sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
(+ 1 (* -1 x))
(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))

rewrite0.0ms (0%)

Memory
0.6MiB live, 0.6MiB allocated
Counts
4 → 4
Calls
Call 1
Inputs
(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
(atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
(sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))
Outputs
(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
(atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
(sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))

eval1.0ms (0.1%)

Memory
1.5MiB live, 1.5MiB allocated
Compiler

Compiled 127 to 26 computations (79.5% saved)

prune1.0ms (0.1%)

Memory
1.7MiB live, 1.7MiB allocated
Pruning

2 alts after pruning (1 fresh and 1 done)

PrunedKeptTotal
New718
Fresh000
Picked011
Done000
Total729
Accuracy
100.0%
Counts
9 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
97.6%
(*.f64 #s(literal 2 binary64) (atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
Compiler

Compiled 30 to 23 computations (23.3% saved)

simplify0.0ms (0%)

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

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))
cost-diff0
#s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
cost-diff0
(atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
cost-diff0
(*.f64 #s(literal 2 binary64) (atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
Calls
Call 1
Inputs
(*.f64 #s(literal 2 binary64) (atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
#s(literal 2 binary64)
(atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
#s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))
(-.f64 #s(literal 1 binary64) x)
#s(literal 1 binary64)
x
(+.f64 #s(literal 1 binary64) x)
Outputs
(*.f64 #s(literal 2 binary64) (atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
#s(literal 2 binary64)
(atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
#s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))
(-.f64 #s(literal 1 binary64) x)
#s(literal 1 binary64)
x
(+.f64 #s(literal 1 binary64) x)

localize29.0ms (2.8%)

Memory
-3.7MiB live, 32.6MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 #s(literal 2 binary64) (atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
accuracy0.015625
(atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
accuracy0.0234375
(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))
accuracy1.5738377608665375
#s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
Samples
22.0ms256×0valid
Compiler

Compiled 114 to 25 computations (78.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-div: 2.0ms (18.9% of total)
ival-mult: 2.0ms (18.9% of total)
ival-atan: 2.0ms (18.9% of total)
ival-sub: 2.0ms (18.9% of total)
ival-sqrt: 2.0ms (18.9% of total)
ival-add: 1.0ms (9.4% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series1.0ms (0.1%)

Memory
1.7MiB live, 1.7MiB allocated
Counts
4 → 23
Calls
Call 1
Inputs
(*.f64 #s(literal 2 binary64) (atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
(atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
#s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))
Outputs
(* 2 (atan (sqrt (/ (- 1 x) (+ 1 x)))))
(atan (sqrt (/ (- 1 x) (+ 1 x))))
1
(+ 1 (* -1 x))
(+ 1 (* x (- (* 1/2 x) 1)))
(+ 1 (* x (- (* x (+ 1/2 (* -1/2 x))) 1)))
(+ 1 (* -2 x))
(+ 1 (* x (- (* 2 x) 2)))
(+ 1 (* x (- (* x (+ 2 (* -2 x))) 2)))
(sqrt -1)
(+ (sqrt -1) (/ 1 (* x (sqrt -1))))
(+ (sqrt -1) (+ (* -1/2 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (* (pow x 2) (sqrt -1)))) (/ 1 (* x (sqrt -1)))))
(+ (sqrt -1) (+ (* -1/2 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (* (pow x 2) (sqrt -1)))) (+ (* 1/2 (/ (- 2 (* -1 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (pow (sqrt -1) 2)))) (* (pow x 3) (sqrt -1)))) (/ 1 (* x (sqrt -1))))))
-1
(- (* 2 (/ 1 x)) 1)
(- (* 2 (/ 1 x)) (+ 1 (/ 2 (pow x 2))))
(- (+ (* 2 (/ 1 x)) (* 2 (/ 1 (pow x 3)))) (+ 1 (/ 2 (pow x 2))))
(* 2 (atan (sqrt (/ (+ 1 (* -1 x)) (- 1 (* -1 x))))))
(atan (sqrt (/ (+ 1 (* -1 x)) (- 1 (* -1 x)))))
(+ (sqrt -1) (* -1 (/ (- (* 1/2 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (* x (sqrt -1)))) (/ 1 (sqrt -1))) x)))
(+ (sqrt -1) (* -1 (/ (- (* -1 (/ (+ (* -1/2 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (sqrt -1))) (* 1/2 (/ (+ 2 (+ (* 2 (/ 1 (pow (sqrt -1) 2))) (/ 1 (pow (sqrt -1) 4)))) (* x (sqrt -1))))) x)) (/ 1 (sqrt -1))) x)))
(- (* -1 (/ (- (* 2 (/ 1 x)) 2) x)) 1)
(- (* -1 (/ (- (* -1 (/ (- (* 2 (/ 1 x)) 2) x)) 2) x)) 1)
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@0
((* 2 (atan (sqrt (/ (- 1 x) (+ 1 x))))) (atan (sqrt (/ (- 1 x) (+ 1 x)))) (sqrt (/ (- 1 x) (+ 1 x))) (/ (- 1 x) (+ 1 x)))
0.0ms
x
@inf
((* 2 (atan (sqrt (/ (- 1 x) (+ 1 x))))) (atan (sqrt (/ (- 1 x) (+ 1 x)))) (sqrt (/ (- 1 x) (+ 1 x))) (/ (- 1 x) (+ 1 x)))
0.0ms
x
@-inf
((* 2 (atan (sqrt (/ (- 1 x) (+ 1 x))))) (atan (sqrt (/ (- 1 x) (+ 1 x)))) (sqrt (/ (- 1 x) (+ 1 x))) (/ (- 1 x) (+ 1 x)))

simplify0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Algorithm
egg-herbie
Counts
23 → 4
Calls
Call 1
Inputs
(* 2 (atan (sqrt (/ (- 1 x) (+ 1 x)))))
(atan (sqrt (/ (- 1 x) (+ 1 x))))
1
(+ 1 (* -1 x))
(+ 1 (* x (- (* 1/2 x) 1)))
(+ 1 (* x (- (* x (+ 1/2 (* -1/2 x))) 1)))
(+ 1 (* -2 x))
(+ 1 (* x (- (* 2 x) 2)))
(+ 1 (* x (- (* x (+ 2 (* -2 x))) 2)))
(sqrt -1)
(+ (sqrt -1) (/ 1 (* x (sqrt -1))))
(+ (sqrt -1) (+ (* -1/2 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (* (pow x 2) (sqrt -1)))) (/ 1 (* x (sqrt -1)))))
(+ (sqrt -1) (+ (* -1/2 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (* (pow x 2) (sqrt -1)))) (+ (* 1/2 (/ (- 2 (* -1 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (pow (sqrt -1) 2)))) (* (pow x 3) (sqrt -1)))) (/ 1 (* x (sqrt -1))))))
-1
(- (* 2 (/ 1 x)) 1)
(- (* 2 (/ 1 x)) (+ 1 (/ 2 (pow x 2))))
(- (+ (* 2 (/ 1 x)) (* 2 (/ 1 (pow x 3)))) (+ 1 (/ 2 (pow x 2))))
(* 2 (atan (sqrt (/ (+ 1 (* -1 x)) (- 1 (* -1 x))))))
(atan (sqrt (/ (+ 1 (* -1 x)) (- 1 (* -1 x)))))
(+ (sqrt -1) (* -1 (/ (- (* 1/2 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (* x (sqrt -1)))) (/ 1 (sqrt -1))) x)))
(+ (sqrt -1) (* -1 (/ (- (* -1 (/ (+ (* -1/2 (/ (+ 2 (/ 1 (pow (sqrt -1) 2))) (sqrt -1))) (* 1/2 (/ (+ 2 (+ (* 2 (/ 1 (pow (sqrt -1) 2))) (/ 1 (pow (sqrt -1) 4)))) (* x (sqrt -1))))) x)) (/ 1 (sqrt -1))) x)))
(- (* -1 (/ (- (* 2 (/ 1 x)) 2) x)) 1)
(- (* -1 (/ (- (* -1 (/ (- (* 2 (/ 1 x)) 2) x)) 2) x)) 1)
Outputs
(* 2 (atan (sqrt (/ (- 1 x) (+ 1 x)))))
(*.f64 #s(literal 2 binary64) (atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
(atan (sqrt (/ (- 1 x) (+ 1 x))))
(atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
1
#s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
(+ 1 (* -1 x))
(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))

rewrite0.0ms (0%)

Memory
0.6MiB live, 0.6MiB allocated
Counts
4 → 4
Calls
Call 1
Inputs
(*.f64 #s(literal 2 binary64) (atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
(atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
#s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))
Outputs
(*.f64 #s(literal 2 binary64) (atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
(atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
#s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))

eval1.0ms (0.1%)

Memory
1.3MiB live, 1.3MiB allocated
Compiler

Compiled 164 to 23 computations (86% saved)

prune2.0ms (0.2%)

Memory
3.6MiB live, 3.6MiB allocated
Pruning

2 alts after pruning (0 fresh and 2 done)

PrunedKeptTotal
New707
Fresh000
Picked011
Done011
Total729
Accuracy
100.0%
Counts
9 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
97.6%
(*.f64 #s(literal 2 binary64) (atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
Compiler

Compiled 60 to 40 computations (33.3% saved)

regimes6.0ms (0.6%)

Memory
11.2MiB live, 11.2MiB allocated
Counts
2 → 1
Calls
Call 1
Inputs
(*.f64 #s(literal 2 binary64) (atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
Outputs
(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
Calls

5 calls:

1.0ms
x
1.0ms
(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
1.0ms
(atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
1.0ms
(sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
1.0ms
(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))
Results
AccuracySegmentsBranch
100.0%1x
100.0%1(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
100.0%1(atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
100.0%1(sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
100.0%1(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))
Compiler

Compiled 36 to 28 computations (22.2% saved)

regimes9.0ms (0.9%)

Memory
-26.9MiB live, 10.3MiB allocated
Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

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

5 calls:

1.0ms
x
1.0ms
(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
1.0ms
(atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
1.0ms
(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))
1.0ms
(sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
Results
AccuracySegmentsBranch
97.6%1x
97.6%1(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
97.6%1(atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))))
97.6%1(sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))
97.6%1(/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x))
Compiler

Compiled 36 to 28 computations (22.2% saved)

simplify4.0ms (0.4%)

Memory
8.3MiB live, 8.3MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
(*.f64 #s(literal 2 binary64) (atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
Outputs
(*.f64 #s(literal 2 binary64) (atan.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))
(*.f64 #s(literal 2 binary64) (atan.f64 #s(approx (sqrt (/ (- 1 x) (+ 1 x))) (/.f64 (-.f64 #s(literal 1 binary64) x) (+.f64 #s(literal 1 binary64) x)))))

soundness0.0ms (0%)

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

Compiled 30 to 17 computations (43.3% saved)

preprocess23.0ms (2.2%)

Memory
-14.2MiB live, 29.0MiB allocated
Compiler

Compiled 82 to 52 computations (36.6% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...