Trigonometry B

Time bar (total: 1.5s)

start0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

analyze123.0ms (8.3%)

Memory
10.0MiB live, 164.7MiB 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
50%50%50%0%0%0%0%3
50%50%50%0%0%0%0%4
50%50%50%0%0%0%0%5
50%50%50%0%0%0%0%6
50%50%50%0%0%0%0%7
50%50%50%0%0%0%0%8
50%50%50%0%0%0%0%9
50%50%50%0%0%0%0%10
50%50%50%0%0%0%0%11
50%50%50%0%0%0%0%12
Compiler

Compiled 17 to 9 computations (47.1% saved)

sample1.0s (70%)

Memory
-90.5MiB live, 1 108.8MiB allocated
Samples
546.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 399.0ms
ival-tan: 187.0ms (46.9% of total)
ival-div: 61.0ms (15.3% of total)
ival-mult: 59.0ms (14.8% of total)
ival-sub: 40.0ms (10% of total)
ival-add: 38.0ms (9.5% of total)
ival-true: 5.0ms (1.3% of total)
exact: 5.0ms (1.3% of total)
ival-assert: 3.0ms (0.8% of total)
Bogosity

explain99.0ms (6.6%)

Memory
13.1MiB live, 132.6MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-(*.f64 (tan.f64 x) (tan.f64 x))
00-0-(/.f64 (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))) (+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
00-0-#s(literal 1 binary64)
00-0-(tan.f64 x)
00-0-(+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))
00-0-(-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))
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
37.0ms512×0valid
Compiler

Compiled 133 to 32 computations (75.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 24.0ms
ival-tan: 11.0ms (45.5% of total)
ival-div: 3.0ms (12.4% of total)
ival-add: 3.0ms (12.4% of total)
ival-mult: 3.0ms (12.4% of total)
ival-sub: 2.0ms (8.3% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess2.0ms (0.1%)

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

Compiled 15 to 7 computations (53.3% 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
99.4%
(/.f64 (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))) (+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
Compiler

Compiled 15 to 7 computations (53.3% saved)

simplify0.0ms (0%)

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

Found 4 expressions of interest:

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

localize25.0ms (1.7%)

Memory
-7.3MiB live, 30.8MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0546875
(+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))
accuracy0.16539003907376804
(-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))
accuracy0.18359375
(/.f64 (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))) (+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
accuracy0.3125
(*.f64 (tan.f64 x) (tan.f64 x))
Samples
19.0ms256×0valid
Compiler

Compiled 78 to 16 computations (79.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-tan: 6.0ms (52.7% of total)
ival-mult: 2.0ms (17.6% of total)
ival-sub: 1.0ms (8.8% of total)
ival-div: 1.0ms (8.8% of total)
ival-add: 1.0ms (8.8% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series5.0ms (0.3%)

Memory
6.4MiB live, 6.3MiB allocated
Counts
5 → 23
Calls
Call 1
Inputs
(/.f64 (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))) (+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
(-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))
(*.f64 (tan.f64 x) (tan.f64 x))
(tan.f64 x)
(+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))
Outputs
1
(+ 1 (* -2 (pow x 2)))
(+ 1 (* (pow x 2) (- (* 2/3 (pow x 2)) 2)))
(+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/3 (* -4/45 (pow x 2)))) 2)))
(+ 1 (* -1 (pow x 2)))
(+ 1 (* (pow x 2) (- (* -2/3 (pow x 2)) 1)))
(+ 1 (* (pow x 2) (- (* (pow x 2) (- (* -17/45 (pow x 2)) 2/3)) 1)))
(pow x 2)
(* (pow x 2) (+ 1 (* 2/3 (pow x 2))))
(* (pow x 2) (+ 1 (* (pow x 2) (+ 2/3 (* 17/45 (pow x 2))))))
(* (pow x 2) (+ 1 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 17/45 (* 62/315 (pow x 2))))))))
x
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 2/15 (pow x 2))))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 2/15 (* 17/315 (pow x 2))))))))
(+ 1 (pow x 2))
(+ 1 (* (pow x 2) (+ 1 (* 2/3 (pow x 2)))))
(+ 1 (* (pow x 2) (+ 1 (* (pow x 2) (+ 2/3 (* 17/45 (pow x 2)))))))
(/ (- 1 (/ (pow (sin x) 2) (pow (cos x) 2))) (+ 1 (/ (pow (sin x) 2) (pow (cos x) 2))))
(- 1 (/ (pow (sin x) 2) (pow (cos x) 2)))
(/ (pow (sin x) 2) (pow (cos x) 2))
(/ (sin x) (cos x))
(+ 1 (/ (pow (sin x) 2) (pow (cos x) 2)))
Calls

3 calls:

TimeVariablePointExpression
2.0ms
x
@-inf
((/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (- 1 (* (tan x) (tan x))) (* (tan x) (tan x)) (tan x) (+ 1 (* (tan x) (tan x))))
2.0ms
x
@inf
((/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (- 1 (* (tan x) (tan x))) (* (tan x) (tan x)) (tan x) (+ 1 (* (tan x) (tan x))))
1.0ms
x
@0
((/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (- 1 (* (tan x) (tan x))) (* (tan x) (tan x)) (tan x) (+ 1 (* (tan x) (tan x))))

simplify0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Algorithm
egg-herbie
Counts
23 → 5
Calls
Call 1
Inputs
1
(+ 1 (* -2 (pow x 2)))
(+ 1 (* (pow x 2) (- (* 2/3 (pow x 2)) 2)))
(+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/3 (* -4/45 (pow x 2)))) 2)))
(+ 1 (* -1 (pow x 2)))
(+ 1 (* (pow x 2) (- (* -2/3 (pow x 2)) 1)))
(+ 1 (* (pow x 2) (- (* (pow x 2) (- (* -17/45 (pow x 2)) 2/3)) 1)))
(pow x 2)
(* (pow x 2) (+ 1 (* 2/3 (pow x 2))))
(* (pow x 2) (+ 1 (* (pow x 2) (+ 2/3 (* 17/45 (pow x 2))))))
(* (pow x 2) (+ 1 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 17/45 (* 62/315 (pow x 2))))))))
x
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 2/15 (pow x 2))))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 2/15 (* 17/315 (pow x 2))))))))
(+ 1 (pow x 2))
(+ 1 (* (pow x 2) (+ 1 (* 2/3 (pow x 2)))))
(+ 1 (* (pow x 2) (+ 1 (* (pow x 2) (+ 2/3 (* 17/45 (pow x 2)))))))
(/ (- 1 (/ (pow (sin x) 2) (pow (cos x) 2))) (+ 1 (/ (pow (sin x) 2) (pow (cos x) 2))))
(- 1 (/ (pow (sin x) 2) (pow (cos x) 2)))
(/ (pow (sin x) 2) (pow (cos x) 2))
(/ (sin x) (cos x))
(+ 1 (/ (pow (sin x) 2) (pow (cos x) 2)))
Outputs
1
(/.f64 (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))) (+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
(+ 1 (* -2 (pow x 2)))
(-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))
(+ 1 (* (pow x 2) (- (* 2/3 (pow x 2)) 2)))
(*.f64 (tan.f64 x) (tan.f64 x))
(+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/3 (* -4/45 (pow x 2)))) 2)))
(tan.f64 x)
(+ 1 (* -1 (pow x 2)))
(+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))

rewrite0.0ms (0%)

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

eval1.0ms (0.1%)

Memory
2.4MiB live, 2.4MiB allocated
Compiler

Compiled 251 to 19 computations (92.4% saved)

prune2.0ms (0.1%)

Memory
3.2MiB live, 3.2MiB allocated
Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New11314
Fresh000
Picked011
Done000
Total11415
Accuracy
99.4%
Counts
15 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.4%
(/.f64 (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))) (+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
59.1%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
7.0%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) (tan.f64 x)))
6.4%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (tan.f64 x))
Compiler

Compiled 77 to 38 computations (50.6% saved)

simplify0.0ms (0%)

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

Found 9 expressions of interest:

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

localize29.0ms (1.9%)

Memory
-17.5MiB live, 59.3MiB allocated
Localize:

Found 9 expressions of interest:

NewMetricScoreProgram
accuracy0.00390625
(tan.f64 x)
accuracy0.16539003907376804
(-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))
accuracy0.3125
(*.f64 (tan.f64 x) (tan.f64 x))
accuracy26.17230104025385
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
accuracy0.00390625
(tan.f64 x)
accuracy0.3125
(*.f64 (tan.f64 x) (tan.f64 x))
accuracy59.488315758504385
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) (tan.f64 x)))
accuracy0.00390625
(tan.f64 x)
accuracy59.8842899055876
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (tan.f64 x))
Samples
21.0ms256×0valid
Compiler

Compiled 163 to 23 computations (85.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 13.0ms
ival-tan: 7.0ms (53.4% of total)
ival-mult: 2.0ms (15.3% of total)
ival-sub: 1.0ms (7.6% of total)
ival-div: 1.0ms (7.6% of total)
ival-add: 1.0ms (7.6% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series2.0ms (0.1%)

Memory
7.1MiB live, 7.1MiB allocated
Counts
6 → 19
Calls
Call 1
Inputs
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (tan.f64 x))
(tan.f64 x)
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) (tan.f64 x)))
(*.f64 (tan.f64 x) (tan.f64 x))
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
(-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))
Outputs
1
(+ 1 (* -2 (pow x 2)))
(+ 1 (* (pow x 2) (- (* 2/3 (pow x 2)) 2)))
(+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/3 (* -4/45 (pow x 2)))) 2)))
x
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 2/15 (pow x 2))))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 2/15 (* 17/315 (pow x 2))))))))
(pow x 2)
(* (pow x 2) (+ 1 (* 2/3 (pow x 2))))
(* (pow x 2) (+ 1 (* (pow x 2) (+ 2/3 (* 17/45 (pow x 2))))))
(* (pow x 2) (+ 1 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 17/45 (* 62/315 (pow x 2))))))))
(+ 1 (* -1 (pow x 2)))
(+ 1 (* (pow x 2) (- (* -2/3 (pow x 2)) 1)))
(+ 1 (* (pow x 2) (- (* (pow x 2) (- (* -17/45 (pow x 2)) 2/3)) 1)))
(/ (- 1 (/ (pow (sin x) 2) (pow (cos x) 2))) (+ 1 (/ (pow (sin x) 2) (pow (cos x) 2))))
(/ (sin x) (cos x))
(/ (pow (sin x) 2) (pow (cos x) 2))
(- 1 (/ (pow (sin x) 2) (pow (cos x) 2)))
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@inf
((/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (tan x) (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (* (tan x) (tan x)) (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (- 1 (* (tan x) (tan x))))
1.0ms
x
@-inf
((/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (tan x) (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (* (tan x) (tan x)) (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (- 1 (* (tan x) (tan x))))
0.0ms
x
@0
((/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (tan x) (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (* (tan x) (tan x)) (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (- 1 (* (tan x) (tan x))))

simplify0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Algorithm
egg-herbie
Counts
19 → 6
Calls
Call 1
Inputs
1
(+ 1 (* -2 (pow x 2)))
(+ 1 (* (pow x 2) (- (* 2/3 (pow x 2)) 2)))
(+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/3 (* -4/45 (pow x 2)))) 2)))
x
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 2/15 (pow x 2))))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 2/15 (* 17/315 (pow x 2))))))))
(pow x 2)
(* (pow x 2) (+ 1 (* 2/3 (pow x 2))))
(* (pow x 2) (+ 1 (* (pow x 2) (+ 2/3 (* 17/45 (pow x 2))))))
(* (pow x 2) (+ 1 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 17/45 (* 62/315 (pow x 2))))))))
(+ 1 (* -1 (pow x 2)))
(+ 1 (* (pow x 2) (- (* -2/3 (pow x 2)) 1)))
(+ 1 (* (pow x 2) (- (* (pow x 2) (- (* -17/45 (pow x 2)) 2/3)) 1)))
(/ (- 1 (/ (pow (sin x) 2) (pow (cos x) 2))) (+ 1 (/ (pow (sin x) 2) (pow (cos x) 2))))
(/ (sin x) (cos x))
(/ (pow (sin x) 2) (pow (cos x) 2))
(- 1 (/ (pow (sin x) 2) (pow (cos x) 2)))
Outputs
1
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (tan.f64 x))
(+ 1 (* -2 (pow x 2)))
(tan.f64 x)
(+ 1 (* (pow x 2) (- (* 2/3 (pow x 2)) 2)))
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) (tan.f64 x)))
(+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/3 (* -4/45 (pow x 2)))) 2)))
(*.f64 (tan.f64 x) (tan.f64 x))
x
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
(* x (+ 1 (* 1/3 (pow x 2))))
(-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))

rewrite1.0ms (0%)

Memory
1.0MiB live, 1.0MiB allocated
Counts
6 → 6
Calls
Call 1
Inputs
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (tan.f64 x))
(tan.f64 x)
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) (tan.f64 x)))
(*.f64 (tan.f64 x) (tan.f64 x))
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
(-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))
Outputs
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (tan.f64 x))
(tan.f64 x)
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) (tan.f64 x)))
(*.f64 (tan.f64 x) (tan.f64 x))
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
(-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))

eval2.0ms (0.1%)

Memory
4.5MiB live, 4.5MiB allocated
Compiler

Compiled 678 to 36 computations (94.7% saved)

prune5.0ms (0.3%)

Memory
9.7MiB live, 9.7MiB allocated
Pruning

6 alts after pruning (2 fresh and 4 done)

PrunedKeptTotal
New21223
Fresh000
Picked033
Done011
Total21627
Accuracy
99.4%
Counts
27 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.4%
(/.f64 (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))) (+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
59.1%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
55.2%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))
7.0%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) (tan.f64 x)))
7.1%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))
6.4%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (tan.f64 x))
Compiler

Compiled 137 to 67 computations (51.1% saved)

simplify1.0ms (0%)

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

Found 8 expressions of interest:

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

localize36.0ms (2.4%)

Memory
-1.2MiB live, 46.5MiB allocated
Localize:

Found 8 expressions of interest:

NewMetricScoreProgram
accuracy0.3125
(*.f64 (tan.f64 x) (tan.f64 x))
accuracy0.3125
(*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))
accuracy26.17230104025385
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))
accuracy59.731847152683116
#s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
accuracy0.3125
(*.f64 (tan.f64 x) (tan.f64 x))
accuracy0.3125
(*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))
accuracy59.488315758504385
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))
accuracy59.731847152683116
#s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
Samples
27.0ms256×0valid
Compiler

Compiled 238 to 25 computations (89.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 18.0ms
ival-add: 8.0ms (43.5% of total)
ival-tan: 6.0ms (32.7% of total)
ival-mult: 2.0ms (10.9% of total)
ival-sub: 1.0ms (5.4% of total)
ival-div: 1.0ms (5.4% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series2.0ms (0.1%)

Memory
3.9MiB live, 3.9MiB allocated
Counts
7 → 19
Calls
Call 1
Inputs
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))
(*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))
(tan.f64 x)
#s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))
(-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))
(*.f64 (tan.f64 x) (tan.f64 x))
Outputs
1
(+ 1 (* -2 (pow x 2)))
(+ 1 (* (pow x 2) (- (* 2/3 (pow x 2)) 2)))
(+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/3 (* -4/45 (pow x 2)))) 2)))
(pow x 2)
(* (pow x 2) (+ 1 (* 2/3 (pow x 2))))
(* (pow x 2) (+ 1 (* (pow x 2) (+ 2/3 (* 17/45 (pow x 2))))))
(* (pow x 2) (+ 1 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 17/45 (* 62/315 (pow x 2))))))))
x
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 2/15 (pow x 2))))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 2/15 (* 17/315 (pow x 2))))))))
(+ 1 (* -1 (pow x 2)))
(+ 1 (* (pow x 2) (- (* -2/3 (pow x 2)) 1)))
(+ 1 (* (pow x 2) (- (* (pow x 2) (- (* -17/45 (pow x 2)) 2/3)) 1)))
(/ (- 1 (/ (pow (sin x) 2) (pow (cos x) 2))) (+ 1 (/ (pow (sin x) 2) (pow (cos x) 2))))
(/ (pow (sin x) 2) (pow (cos x) 2))
(/ (sin x) (cos x))
(- 1 (/ (pow (sin x) 2) (pow (cos x) 2)))
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@inf
((/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (* (tan x) (tan x)) (tan x) (tan x) (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (- 1 (* (tan x) (tan x))) (* (tan x) (tan x)))
1.0ms
x
@-inf
((/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (* (tan x) (tan x)) (tan x) (tan x) (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (- 1 (* (tan x) (tan x))) (* (tan x) (tan x)))
0.0ms
x
@0
((/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (* (tan x) (tan x)) (tan x) (tan x) (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (- 1 (* (tan x) (tan x))) (* (tan x) (tan x)))

simplify0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Algorithm
egg-herbie
Counts
19 → 7
Calls
Call 1
Inputs
1
(+ 1 (* -2 (pow x 2)))
(+ 1 (* (pow x 2) (- (* 2/3 (pow x 2)) 2)))
(+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/3 (* -4/45 (pow x 2)))) 2)))
(pow x 2)
(* (pow x 2) (+ 1 (* 2/3 (pow x 2))))
(* (pow x 2) (+ 1 (* (pow x 2) (+ 2/3 (* 17/45 (pow x 2))))))
(* (pow x 2) (+ 1 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 17/45 (* 62/315 (pow x 2))))))))
x
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 2/15 (pow x 2))))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 2/15 (* 17/315 (pow x 2))))))))
(+ 1 (* -1 (pow x 2)))
(+ 1 (* (pow x 2) (- (* -2/3 (pow x 2)) 1)))
(+ 1 (* (pow x 2) (- (* (pow x 2) (- (* -17/45 (pow x 2)) 2/3)) 1)))
(/ (- 1 (/ (pow (sin x) 2) (pow (cos x) 2))) (+ 1 (/ (pow (sin x) 2) (pow (cos x) 2))))
(/ (pow (sin x) 2) (pow (cos x) 2))
(/ (sin x) (cos x))
(- 1 (/ (pow (sin x) 2) (pow (cos x) 2)))
Outputs
1
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))
(+ 1 (* -2 (pow x 2)))
(*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))
(+ 1 (* (pow x 2) (- (* 2/3 (pow x 2)) 2)))
(tan.f64 x)
(+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/3 (* -4/45 (pow x 2)))) 2)))
#s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
(pow x 2)
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))
(* (pow x 2) (+ 1 (* 2/3 (pow x 2))))
(-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))
(* (pow x 2) (+ 1 (* (pow x 2) (+ 2/3 (* 17/45 (pow x 2))))))
(*.f64 (tan.f64 x) (tan.f64 x))

rewrite1.0ms (0%)

Memory
1.0MiB live, 1.0MiB allocated
Counts
7 → 7
Calls
Call 1
Inputs
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))
(*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))
(tan.f64 x)
#s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))
(-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))
(*.f64 (tan.f64 x) (tan.f64 x))
Outputs
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))
(*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))
(tan.f64 x)
#s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))
(-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))
(*.f64 (tan.f64 x) (tan.f64 x))

eval5.0ms (0.4%)

Memory
-34.1MiB live, 3.7MiB allocated
Compiler

Compiled 780 to 31 computations (96% saved)

prune3.0ms (0.2%)

Memory
5.3MiB live, 5.3MiB allocated
Pruning

7 alts after pruning (1 fresh and 6 done)

PrunedKeptTotal
New23124
Fresh000
Picked022
Done044
Total23730
Accuracy
99.4%
Counts
30 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.4%
(/.f64 (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))) (+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
59.1%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
55.2%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))
6.8%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) #s(approx (* (tan x) (tan x)) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))))
7.0%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) (tan.f64 x)))
7.1%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))
6.4%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (tan.f64 x))
Compiler

Compiled 176 to 84 computations (52.3% saved)

simplify1.0ms (0%)

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

Found 4 expressions of interest:

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

localize27.0ms (1.8%)

Memory
30.1MiB live, 30.1MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.3125
(*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))
accuracy26.17230104025385
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) #s(approx (* (tan x) (tan x)) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))))
accuracy59.45185464220286
#s(approx (* (tan x) (tan x)) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))
accuracy59.731847152683116
#s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
Samples
19.0ms256×0valid
Compiler

Compiled 196 to 26 computations (86.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-tan: 6.0ms (52.4% of total)
ival-mult: 2.0ms (17.5% of total)
ival-sub: 1.0ms (8.7% of total)
ival-div: 1.0ms (8.7% of total)
ival-add: 1.0ms (8.7% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series3.0ms (0.2%)

Memory
-36.3MiB live, 2.7MiB allocated
Counts
6 → 19
Calls
Call 1
Inputs
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) #s(approx (* (tan x) (tan x)) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))))
(-.f64 #s(literal 1 binary64) #s(approx (* (tan x) (tan x)) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))))
#s(approx (* (tan x) (tan x)) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))
(-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))
#s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
(*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))
Outputs
1
(+ 1 (* -2 (pow x 2)))
(+ 1 (* (pow x 2) (- (* 2/3 (pow x 2)) 2)))
(+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/3 (* -4/45 (pow x 2)))) 2)))
(+ 1 (* -1 (pow x 2)))
(+ 1 (* (pow x 2) (- (* -2/3 (pow x 2)) 1)))
(+ 1 (* (pow x 2) (- (* (pow x 2) (- (* -17/45 (pow x 2)) 2/3)) 1)))
(pow x 2)
(* (pow x 2) (+ 1 (* 2/3 (pow x 2))))
(* (pow x 2) (+ 1 (* (pow x 2) (+ 2/3 (* 17/45 (pow x 2))))))
(* (pow x 2) (+ 1 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 17/45 (* 62/315 (pow x 2))))))))
x
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 2/15 (pow x 2))))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 2/15 (* 17/315 (pow x 2))))))))
(/ (- 1 (/ (pow (sin x) 2) (pow (cos x) 2))) (+ 1 (/ (pow (sin x) 2) (pow (cos x) 2))))
(- 1 (/ (pow (sin x) 2) (pow (cos x) 2)))
(/ (pow (sin x) 2) (pow (cos x) 2))
(/ (sin x) (cos x))
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@0
((/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (- 1 (* (tan x) (tan x))) (* (tan x) (tan x)) (- 1 (* (tan x) (tan x))) (tan x) (* (tan x) (tan x)))
1.0ms
x
@inf
((/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (- 1 (* (tan x) (tan x))) (* (tan x) (tan x)) (- 1 (* (tan x) (tan x))) (tan x) (* (tan x) (tan x)))
1.0ms
x
@-inf
((/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (- 1 (* (tan x) (tan x))) (* (tan x) (tan x)) (- 1 (* (tan x) (tan x))) (tan x) (* (tan x) (tan x)))

simplify0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Algorithm
egg-herbie
Counts
19 → 6
Calls
Call 1
Inputs
1
(+ 1 (* -2 (pow x 2)))
(+ 1 (* (pow x 2) (- (* 2/3 (pow x 2)) 2)))
(+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/3 (* -4/45 (pow x 2)))) 2)))
(+ 1 (* -1 (pow x 2)))
(+ 1 (* (pow x 2) (- (* -2/3 (pow x 2)) 1)))
(+ 1 (* (pow x 2) (- (* (pow x 2) (- (* -17/45 (pow x 2)) 2/3)) 1)))
(pow x 2)
(* (pow x 2) (+ 1 (* 2/3 (pow x 2))))
(* (pow x 2) (+ 1 (* (pow x 2) (+ 2/3 (* 17/45 (pow x 2))))))
(* (pow x 2) (+ 1 (* (pow x 2) (+ 2/3 (* (pow x 2) (+ 17/45 (* 62/315 (pow x 2))))))))
x
(* x (+ 1 (* 1/3 (pow x 2))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* 2/15 (pow x 2))))))
(* x (+ 1 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 2/15 (* 17/315 (pow x 2))))))))
(/ (- 1 (/ (pow (sin x) 2) (pow (cos x) 2))) (+ 1 (/ (pow (sin x) 2) (pow (cos x) 2))))
(- 1 (/ (pow (sin x) 2) (pow (cos x) 2)))
(/ (pow (sin x) 2) (pow (cos x) 2))
(/ (sin x) (cos x))
Outputs
1
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) #s(approx (* (tan x) (tan x)) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))))
(+ 1 (* -2 (pow x 2)))
(-.f64 #s(literal 1 binary64) #s(approx (* (tan x) (tan x)) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))))
(+ 1 (* (pow x 2) (- (* 2/3 (pow x 2)) 2)))
#s(approx (* (tan x) (tan x)) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))
(+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/3 (* -4/45 (pow x 2)))) 2)))
(-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))
(+ 1 (* -1 (pow x 2)))
#s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
(+ 1 (* (pow x 2) (- (* -2/3 (pow x 2)) 1)))
(*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))

rewrite0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Counts
6 → 6
Calls
Call 1
Inputs
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) #s(approx (* (tan x) (tan x)) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))))
(-.f64 #s(literal 1 binary64) #s(approx (* (tan x) (tan x)) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))))
#s(approx (* (tan x) (tan x)) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))
(-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))
#s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
(*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))
Outputs
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) #s(approx (* (tan x) (tan x)) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))))
(-.f64 #s(literal 1 binary64) #s(approx (* (tan x) (tan x)) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))))
#s(approx (* (tan x) (tan x)) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))
(-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))
#s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
(*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))

eval1.0ms (0.1%)

Memory
2.0MiB live, 2.0MiB allocated
Compiler

Compiled 428 to 24 computations (94.4% saved)

prune4.0ms (0.2%)

Memory
5.4MiB live, 5.4MiB allocated
Pruning

7 alts after pruning (0 fresh and 7 done)

PrunedKeptTotal
New11011
Fresh000
Picked011
Done066
Total11718
Accuracy
99.4%
Counts
18 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.4%
(/.f64 (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))) (+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
59.1%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
55.2%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))
6.8%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) #s(approx (* (tan x) (tan x)) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))))
7.0%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) (tan.f64 x)))
7.1%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))
6.4%
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (tan.f64 x))
Compiler

Compiled 352 to 108 computations (69.3% saved)

regimes12.0ms (0.8%)

Memory
17.4MiB live, 17.4MiB allocated
Counts
7 → 1
Calls
Call 1
Inputs
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (tan.f64 x))
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) (tan.f64 x)))
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) #s(approx (* (tan x) (tan x)) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))))
(/.f64 (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))) (+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
Outputs
(/.f64 (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))) (+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
Calls

4 calls:

3.0ms
(tan.f64 x)
3.0ms
x
3.0ms
(/.f64 (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))) (+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
3.0ms
(*.f64 (tan.f64 x) (tan.f64 x))
Results
AccuracySegmentsBranch
99.4%1x
99.4%1(/.f64 (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))) (+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
99.4%1(*.f64 (tan.f64 x) (tan.f64 x))
99.4%1(tan.f64 x)
Compiler

Compiled 23 to 13 computations (43.5% saved)

regimes11.0ms (0.7%)

Memory
-21.1MiB live, 17.7MiB allocated
Counts
6 → 1
Calls
Call 1
Inputs
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (tan.f64 x))
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) (tan.f64 x)))
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))))
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) #s(approx (* (tan x) (tan x)) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) #s(approx (tan x) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x)))))))))
Outputs
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
Calls

4 calls:

3.0ms
(/.f64 (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))) (+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
2.0ms
(tan.f64 x)
2.0ms
x
2.0ms
(*.f64 (tan.f64 x) (tan.f64 x))
Results
AccuracySegmentsBranch
59.1%1x
59.1%1(/.f64 (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))) (+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
59.1%1(*.f64 (tan.f64 x) (tan.f64 x))
59.1%1(tan.f64 x)
Compiler

Compiled 23 to 13 computations (43.5% saved)

regimes6.0ms (0.4%)

Memory
12.2MiB live, 12.2MiB allocated
Counts
2 → 1
Calls
Call 1
Inputs
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (tan.f64 x))
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) (tan.f64 x)))
Outputs
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (*.f64 (tan.f64 x) (tan.f64 x)))
Calls

4 calls:

1.0ms
(/.f64 (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))) (+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
1.0ms
(tan.f64 x)
1.0ms
x
1.0ms
(*.f64 (tan.f64 x) (tan.f64 x))
Results
AccuracySegmentsBranch
7.0%1x
7.0%1(tan.f64 x)
7.0%1(/.f64 (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))) (+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
7.0%1(*.f64 (tan.f64 x) (tan.f64 x))
Compiler

Compiled 23 to 13 computations (43.5% saved)

regimes5.0ms (0.3%)

Memory
10.7MiB live, 10.7MiB allocated
Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

Counts
1 → 1
Calls
Call 1
Inputs
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (tan.f64 x))
Outputs
#s(approx (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))) (tan.f64 x))
Calls

4 calls:

1.0ms
(tan.f64 x)
1.0ms
(/.f64 (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))) (+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
1.0ms
x
1.0ms
(*.f64 (tan.f64 x) (tan.f64 x))
Results
AccuracySegmentsBranch
6.4%1(*.f64 (tan.f64 x) (tan.f64 x))
6.4%1(tan.f64 x)
6.4%1x
6.4%1(/.f64 (-.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))) (+.f64 #s(literal 1 binary64) (*.f64 (tan.f64 x) (tan.f64 x))))
Compiler

Compiled 23 to 13 computations (43.5% saved)

simplify5.0ms (0.3%)

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

soundness1.0ms (0.1%)

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

Compiled 77 to 16 computations (79.2% saved)

preprocess26.0ms (1.7%)

Memory
-39.2MiB live, 40.6MiB allocated
Compiler

Compiled 184 to 46 computations (75% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...