tanhf (example 3.4)

Time bar (total: 5.2s)

start0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated

analyze129.0ms (2.5%)

Memory
-2.9MiB live, 176.0MiB 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
25%25%75%0%0%0%0%3
37.5%37.5%62.5%0%0%0%0%4
43.8%43.7%56.2%0%0%0%0%5
46.9%46.9%53.1%0%0%0%0%6
48.4%48.4%51.5%0%0%0%0%7
49.2%49.2%50.8%0%0%0%0%8
49.6%49.6%50.4%0%0%0%0%9
49.8%49.8%50.2%0%0%0%0%10
49.9%49.9%50.1%0%0%0%0%11
50%49.9%50%0%0%0%0%12
Compiler

Compiled 9 to 8 computations (11.1% saved)

sample2.0s (38.2%)

Memory
54.4MiB live, 1 692.6MiB allocated
Samples
641.0ms2 182×2valid
557.0ms4 257×0valid
253.0ms602×3valid
131.0ms1 213×1valid
2.0ms4valid
Precisions
Click to see histograms. Total time spent on operations: 1.3s
ival-cos: 760.0ms (58.1% of total)
ival-sin: 210.0ms (16.1% of total)
ival-div: 111.0ms (8.5% of total)
adjust: 111.0ms (8.5% of total)
ival-sub: 101.0ms (7.7% of total)
ival-true: 6.0ms (0.5% of total)
exact: 6.0ms (0.5% of total)
ival-assert: 3.0ms (0.2% of total)
Bogosity

explain223.0ms (4.3%)

Memory
14.6MiB live, 176.7MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
721(2.233511361333238e+66)1(-2.122452999747606e+63)(-.f64 #s(literal 1 binary64) (cos.f64 x))
720-0-(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
00-0-#s(literal 1 binary64)
00-0-(cos.f64 x)
00-0-(sin.f64 x)
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
-.f64(-.f64 #s(literal 1 binary64) (cos.f64 x))cancellation729
/.f64(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))u/n720
(-.f64 #s(literal 1 binary64) (cos.f64 x))underflow72
Confusion
Predicted +Predicted -
+1432
-1110
Precision
0.9930555555555556
Recall
0.9862068965517241
Confusion?
Predicted +Predicted MaybePredicted -
+14320
-17103
Precision?
0.9477124183006536
Recall?
1.0
Freqs
test
numberfreq
0112
1144
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
42.0ms154×2valid
38.0ms46×3valid
28.0ms252×0valid
7.0ms60×1valid
Compiler

Compiled 62 to 28 computations (54.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 97.0ms
ival-cos: 43.0ms (44.5% of total)
ival-div: 28.0ms (29% of total)
ival-sin: 11.0ms (11.4% of total)
adjust: 7.0ms (7.3% of total)
ival-sub: 6.0ms (6.2% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

preprocess47.0ms (0.9%)

Memory
-0.6MiB live, 36.0MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0811
13011
2738
31808
44438
56818
67068
067
0104
1204
2264
3374
4584
5814
61144
71884
83104
95194
105614
115644
125724
135784
145824
155894
165964
175974
05974
Stop Event
iter limit
saturated
iter limit
saturated
Calls
Call 1
Inputs
(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
Outputs
(tan.f64 (/.f64 x #s(literal 2 binary64)))
Symmetry

(negabs x)

Compiler

Compiled 7 to 6 computations (14.3% saved)

eval0.0ms (0%)

Memory
0.2MiB live, 0.2MiB allocated
Compiler

Compiled 0 to 1 computations (-∞% saved)

prune1.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
50.5%
(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
Compiler

Compiled 7 to 6 computations (14.3% saved)

simplify27.0ms (0.5%)

Memory
-33.8MiB live, 11.6MiB allocated
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(sin.f64 x)
cost-diff0
(cos.f64 x)
cost-diff0
(-.f64 #s(literal 1 binary64) (cos.f64 x))
cost-diff6592
(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0617
01014
12014
22614
33714
45814
58114
611414
718814
831014
951914
1056114
1156414
1257214
1357814
1458214
1558914
1659614
1759714
059714
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
(-.f64 #s(literal 1 binary64) (cos.f64 x))
#s(literal 1 binary64)
(cos.f64 x)
x
(sin.f64 x)
Outputs
(tan.f64 (/.f64 x #s(literal 2 binary64)))
(-.f64 #s(literal 1 binary64) (cos.f64 x))
#s(literal 1 binary64)
(cos.f64 x)
x
(sin.f64 x)

localize58.0ms (1.1%)

Memory
35.2MiB live, 71.5MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0
(sin.f64 x)
accuracy0
(cos.f64 x)
accuracy14.702661555645198
(-.f64 #s(literal 1 binary64) (cos.f64 x))
accuracy16.867090233349177
(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
Samples
26.0ms77×2valid
14.0ms126×0valid
8.0ms23×3valid
3.0ms30×1valid
Compiler

Compiled 36 to 14 computations (61.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 42.0ms
ival-cos: 22.0ms (52.9% of total)
adjust: 8.0ms (19.2% of total)
ival-sin: 5.0ms (12% of total)
ival-div: 3.0ms (7.2% of total)
ival-sub: 3.0ms (7.2% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series7.0ms (0.1%)

Memory
-28.9MiB live, 7.3MiB allocated
Counts
4 → 48
Calls
Call 1
Inputs
#s(alt #<batchref> (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())
#s(alt #<batchref> (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())
#s(alt #<batchref> (patch (cos.f64 x) #<representation binary64>) () ())
#s(alt #<batchref> (patch (sin.f64 x) #<representation binary64>) () ())
Outputs
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (sin.f64 x) #<representation binary64>) () ())) ())
Calls

3 calls:

TimeVariablePointExpression
4.0ms
x
@-inf
((/ (- 1 (cos x)) (sin x)) (- 1 (cos x)) (cos x) (sin x))
1.0ms
x
@0
((/ (- 1 (cos x)) (sin x)) (- 1 (cos x)) (cos x) (sin x))
1.0ms
x
@inf
((/ (- 1 (cos x)) (sin x)) (- 1 (cos x)) (cos x) (sin x))

simplify203.0ms (3.9%)

Memory
10.5MiB live, 163.1MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
079286
1224286
2555280
31661280
43000280
54247280
64597280
75328280
86820280
08376256
Stop Event
iter limit
node limit
Counts
48 → 47
Calls
Call 1
Inputs
(* 1/2 x)
(* x (+ 1/2 (* 1/24 (pow x 2))))
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* 1/240 (pow x 2))))))
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* (pow x 2) (+ 1/240 (* 17/40320 (pow x 2))))))))
(* 1/2 (pow x 2))
(* (pow x 2) (+ 1/2 (* -1/24 (pow x 2))))
(* (pow x 2) (+ 1/2 (* (pow x 2) (- (* 1/720 (pow x 2)) 1/24))))
(* (pow x 2) (+ 1/2 (* (pow x 2) (- (* (pow x 2) (+ 1/720 (* -1/40320 (pow x 2)))) 1/24))))
1
(+ 1 (* -1/2 (pow x 2)))
(+ 1 (* (pow x 2) (- (* 1/24 (pow x 2)) 1/2)))
(+ 1 (* (pow x 2) (- (* (pow x 2) (+ 1/24 (* -1/720 (pow x 2)))) 1/2)))
x
(* x (+ 1 (* -1/6 (pow x 2))))
(* x (+ 1 (* (pow x 2) (- (* 1/120 (pow x 2)) 1/6))))
(* x (+ 1 (* (pow x 2) (- (* (pow x 2) (+ 1/120 (* -1/5040 (pow x 2)))) 1/6))))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(- 1 (cos x))
(- 1 (cos x))
(- 1 (cos x))
(- 1 (cos x))
(cos x)
(cos x)
(cos x)
(cos x)
(sin x)
(sin x)
(sin x)
(sin x)
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(- 1 (cos x))
(- 1 (cos x))
(- 1 (cos x))
(- 1 (cos x))
(cos x)
(cos x)
(cos x)
(cos x)
(sin x)
(sin x)
(sin x)
(sin x)
Outputs
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (fma.f64 #s(literal 1/240 binary64) (*.f64 x x) #s(literal 1/24 binary64)) (*.f64 x x) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (fma.f64 (fma.f64 #s(literal 17/40320 binary64) (*.f64 x x) #s(literal 1/240 binary64)) (*.f64 x x) #s(literal 1/24 binary64)) (*.f64 x x) #s(literal 1/2 binary64)) x)
(*.f64 (*.f64 x x) #s(literal 1/2 binary64))
(*.f64 (*.f64 (fma.f64 #s(literal -1/24 binary64) (*.f64 x x) #s(literal 1/2 binary64)) x) x)
(*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/720 binary64) (*.f64 x x) #s(literal -1/24 binary64)) (*.f64 x x) #s(literal 1/2 binary64)) x) x)
(*.f64 (*.f64 (fma.f64 (fma.f64 (fma.f64 #s(literal -1/40320 binary64) (*.f64 x x) #s(literal 1/720 binary64)) (*.f64 x x) #s(literal -1/24 binary64)) (*.f64 x x) #s(literal 1/2 binary64)) x) x)
#s(literal 1 binary64)
(fma.f64 #s(literal -1/2 binary64) (*.f64 x x) #s(literal 1 binary64))
(fma.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal -1/2 binary64)) (*.f64 x x) #s(literal 1 binary64))
(fma.f64 (fma.f64 (fma.f64 #s(literal -1/720 binary64) (*.f64 x x) #s(literal 1/24 binary64)) (*.f64 x x) #s(literal -1/2 binary64)) (*.f64 x x) #s(literal 1 binary64))
x
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal -1/6 binary64) x)
(fma.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 #s(literal 1/120 binary64) (*.f64 x x) #s(literal -1/6 binary64)) x)
(fma.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 (fma.f64 #s(literal -1/5040 binary64) (*.f64 x x) #s(literal 1/120 binary64)) (*.f64 x x) #s(literal -1/6 binary64)) x)
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(-.f64 #s(literal 1 binary64) (cos.f64 x))
(-.f64 #s(literal 1 binary64) (cos.f64 x))
(-.f64 #s(literal 1 binary64) (cos.f64 x))
(-.f64 #s(literal 1 binary64) (cos.f64 x))
(cos.f64 x)
(cos.f64 x)
(cos.f64 x)
(cos.f64 x)
(sin.f64 x)
(sin.f64 x)
(sin.f64 x)
(sin.f64 x)
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(-.f64 #s(literal 1 binary64) (cos.f64 x))
(-.f64 #s(literal 1 binary64) (cos.f64 x))
(-.f64 #s(literal 1 binary64) (cos.f64 x))
(-.f64 #s(literal 1 binary64) (cos.f64 x))
(cos.f64 x)
(cos.f64 x)
(cos.f64 x)
(cos.f64 x)
(sin.f64 x)
(sin.f64 x)
(sin.f64 x)
(sin.f64 x)

rewrite313.0ms (6%)

Memory
1.8MiB live, 203.2MiB allocated
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0615
01012
13912
224512
3235511
0888511
Stop Event
iter limit
node limit
iter limit
Counts
4 → 615
Calls
Call 1
Inputs
(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
(-.f64 #s(literal 1 binary64) (cos.f64 x))
(cos.f64 x)
(sin.f64 x)
Outputs
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>

eval95.0ms (1.8%)

Memory
-4.8MiB live, 155.7MiB allocated
Compiler

Compiled 13 342 to 1 647 computations (87.7% saved)

prune15.0ms (0.3%)

Memory
-10.2MiB live, 37.0MiB allocated
Pruning

4 alts after pruning (4 fresh and 0 done)

PrunedKeptTotal
New6584662
Fresh000
Picked101
Done000
Total6594663
Accuracy
100.0%
Counts
663 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
6.9%
(pow.f64 #s(literal 1 binary64) #s(literal -1/2 binary64))
100.0%
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
53.0%
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x))
53.2%
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x))
Compiler

Compiled 34 to 29 computations (14.7% saved)

simplify26.0ms (0.5%)

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

Found 9 expressions of interest:

NewMetricScoreProgram
cost-diff6464
(pow.f64 #s(literal 1 binary64) #s(literal -1/2 binary64))
cost-diff0
(*.f64 #s(literal 1/2 binary64) x)
cost-diff0
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
cost-diff0
(*.f64 x x)
cost-diff0
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
cost-diff0
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
cost-diff0
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x))
cost-diff0
(*.f64 #s(literal 1/2 binary64) x)
cost-diff0
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01766
02458
14058
25558
37258
49658
512058
615358
722758
835058
955858
1060058
1160358
1261158
1361658
1462058
1562758
1666058
1768258
1868458
068458
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x))
(*.f64 #s(literal 1/2 binary64) x)
#s(literal 1/2 binary64)
x
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(*.f64 x x)
x
#s(literal 1/24 binary64)
#s(literal 1/2 binary64)
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(*.f64 #s(literal 1/2 binary64) x)
#s(literal 1/2 binary64)
x
(pow.f64 #s(literal 1 binary64) #s(literal -1/2 binary64))
#s(literal 1 binary64)
#s(literal -1/2 binary64)
Outputs
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x))
(*.f64 #s(literal 1/2 binary64) x)
#s(literal 1/2 binary64)
x
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 #s(literal 1/24 binary64) (*.f64 x x) #s(literal 1/2 binary64)) x))
(*.f64 (fma.f64 #s(literal 1/24 binary64) (*.f64 x x) #s(literal 1/2 binary64)) x)
(fma.f64 #s(literal 1/24 binary64) (*.f64 x x) #s(literal 1/2 binary64))
(*.f64 x x)
x
#s(literal 1/24 binary64)
#s(literal 1/2 binary64)
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(*.f64 #s(literal 1/2 binary64) x)
#s(literal 1/2 binary64)
x
#s(literal 1 binary64)
#s(literal 1 binary64)
#s(literal -1/2 binary64)

localize149.0ms (2.9%)

Memory
-17.0MiB live, 178.4MiB allocated
Localize:

Found 9 expressions of interest:

NewMetricScoreProgram
accuracy0
(pow.f64 #s(literal 1 binary64) #s(literal -1/2 binary64))
accuracy0
(*.f64 #s(literal 1/2 binary64) x)
accuracy0
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
accuracy0
(*.f64 x x)
accuracy0.04296875
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
accuracy0.09375
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
accuracy30.050614278630103
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x))
accuracy0
(*.f64 #s(literal 1/2 binary64) x)
accuracy29.940780754014934
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x))
Samples
80.0ms126×0valid
35.0ms77×2valid
15.0ms23×3valid
6.0ms30×1valid
Compiler

Compiled 123 to 36 computations (70.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 118.0ms
ival-cos: 75.0ms (63.6% of total)
ival-mult: 11.0ms (9.3% of total)
adjust: 8.0ms (6.8% of total)
ival-tan: 5.0ms (4.2% of total)
ival-sin: 5.0ms (4.2% of total)
const: 4.0ms (3.4% of total)
ival-div: 3.0ms (2.5% of total)
ival-sub: 3.0ms (2.5% of total)
ival-pow: 2.0ms (1.7% of total)
ival-add: 1.0ms (0.8% of total)
exact: 1.0ms (0.8% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)

series8.0ms (0.2%)

Memory
4.0MiB live, 4.0MiB allocated
Counts
8 → 84
Calls
Call 1
Inputs
#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())
#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())
#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) #<representation binary64>) () ())
#s(alt #<batchref> (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())
#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())
#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())
#s(alt #<batchref> (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())
#s(alt #<batchref> (patch (pow.f64 #s(literal 1 binary64) #s(literal -1/2 binary64)) #<representation binary64>) () ())
Outputs
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
Calls

3 calls:

TimeVariablePointExpression
2.0ms
x
@inf
((/ (- 1 (cos x)) (sin x)) (* 1/2 x) (/ (- 1 (cos x)) (sin x)) (* (+ (* (* x x) 1/24) 1/2) x) (+ (* (* x x) 1/24) 1/2) (* x x) (tan (* 1/2 x)) (pow 1 -1/2))
2.0ms
x
@-inf
((/ (- 1 (cos x)) (sin x)) (* 1/2 x) (/ (- 1 (cos x)) (sin x)) (* (+ (* (* x x) 1/24) 1/2) x) (+ (* (* x x) 1/24) 1/2) (* x x) (tan (* 1/2 x)) (pow 1 -1/2))
1.0ms
x
@0
((/ (- 1 (cos x)) (sin x)) (* 1/2 x) (/ (- 1 (cos x)) (sin x)) (* (+ (* (* x x) 1/24) 1/2) x) (+ (* (* x x) 1/24) 1/2) (* x x) (tan (* 1/2 x)) (pow 1 -1/2))

simplify170.0ms (3.3%)

Memory
2.6MiB live, 125.0MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
039520
1114520
2285520
3660520
41224520
52800520
63632520
74484520
84907520
95454520
106074520
116831520
127406520
08141484
Stop Event
iter limit
node limit
Counts
84 → 84
Calls
Call 1
Inputs
(* 1/2 x)
(* x (+ 1/2 (* 1/24 (pow x 2))))
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* 1/240 (pow x 2))))))
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* (pow x 2) (+ 1/240 (* 17/40320 (pow x 2))))))))
(* 1/2 x)
(* 1/2 x)
(* 1/2 x)
(* 1/2 x)
(* 1/2 x)
(* x (+ 1/2 (* 1/24 (pow x 2))))
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* 1/240 (pow x 2))))))
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* (pow x 2) (+ 1/240 (* 17/40320 (pow x 2))))))))
(* 1/2 x)
(* x (+ 1/2 (* 1/24 (pow x 2))))
(* x (+ 1/2 (* 1/24 (pow x 2))))
(* x (+ 1/2 (* 1/24 (pow x 2))))
1/2
(+ 1/2 (* 1/24 (pow x 2)))
(+ 1/2 (* 1/24 (pow x 2)))
(+ 1/2 (* 1/24 (pow x 2)))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(* 1/2 x)
(* x (+ 1/2 (* 1/24 (pow x 2))))
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* 1/240 (pow x 2))))))
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* (pow x 2) (+ 1/240 (* 17/40320 (pow x 2))))))))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(* 1/2 x)
(* 1/2 x)
(* 1/2 x)
(* 1/2 x)
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(* 1/24 (pow x 3))
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(* 1/24 (pow x 2))
(* (pow x 2) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(* (pow x 2) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(* (pow x 2) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(/ (sin (* 1/2 x)) (cos (* 1/2 x)))
(/ (sin (* 1/2 x)) (cos (* 1/2 x)))
(/ (sin (* 1/2 x)) (cos (* 1/2 x)))
(/ (sin (* 1/2 x)) (cos (* 1/2 x)))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(* 1/2 x)
(* 1/2 x)
(* 1/2 x)
(* 1/2 x)
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(* 1/24 (pow x 3))
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(* 1/24 (pow x 2))
(* (pow x 2) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(* (pow x 2) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(* (pow x 2) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(/ (sin (* 1/2 x)) (cos (* 1/2 x)))
(/ (sin (* 1/2 x)) (cos (* 1/2 x)))
(/ (sin (* 1/2 x)) (cos (* 1/2 x)))
(/ (sin (* 1/2 x)) (cos (* 1/2 x)))
Outputs
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (fma.f64 #s(literal 1/240 binary64) (*.f64 x x) #s(literal 1/24 binary64)) (*.f64 x x) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (fma.f64 (fma.f64 #s(literal 17/40320 binary64) (*.f64 x x) #s(literal 1/240 binary64)) (*.f64 x x) #s(literal 1/24 binary64)) (*.f64 x x) #s(literal 1/2 binary64)) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (fma.f64 #s(literal 1/240 binary64) (*.f64 x x) #s(literal 1/24 binary64)) (*.f64 x x) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (fma.f64 (fma.f64 #s(literal 17/40320 binary64) (*.f64 x x) #s(literal 1/240 binary64)) (*.f64 x x) #s(literal 1/24 binary64)) (*.f64 x x) #s(literal 1/2 binary64)) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
#s(literal 1/2 binary64)
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(*.f64 x x)
(*.f64 x x)
(*.f64 x x)
(*.f64 x x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (fma.f64 #s(literal 1/240 binary64) (*.f64 x x) #s(literal 1/24 binary64)) (*.f64 x x) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (fma.f64 (fma.f64 #s(literal 17/40320 binary64) (*.f64 x x) #s(literal 1/240 binary64)) (*.f64 x x) #s(literal 1/24 binary64)) (*.f64 x x) #s(literal 1/2 binary64)) x)
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(*.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/24 binary64))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 (*.f64 x x) #s(literal 1/24 binary64))
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(*.f64 x x)
(*.f64 x x)
(*.f64 x x)
(*.f64 x x)
(/.f64 (sin.f64 (*.f64 #s(literal 1/2 binary64) x)) (cos.f64 (*.f64 #s(literal 1/2 binary64) x)))
(/.f64 (sin.f64 (*.f64 #s(literal 1/2 binary64) x)) (cos.f64 (*.f64 #s(literal 1/2 binary64) x)))
(/.f64 (sin.f64 (*.f64 #s(literal 1/2 binary64) x)) (cos.f64 (*.f64 #s(literal 1/2 binary64) x)))
(/.f64 (sin.f64 (*.f64 #s(literal 1/2 binary64) x)) (cos.f64 (*.f64 #s(literal 1/2 binary64) x)))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(*.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/24 binary64))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 (*.f64 x x) #s(literal 1/24 binary64))
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(*.f64 x x)
(*.f64 x x)
(*.f64 x x)
(*.f64 x x)
(/.f64 (sin.f64 (*.f64 #s(literal 1/2 binary64) x)) (cos.f64 (*.f64 #s(literal 1/2 binary64) x)))
(/.f64 (sin.f64 (*.f64 #s(literal 1/2 binary64) x)) (cos.f64 (*.f64 #s(literal 1/2 binary64) x)))
(/.f64 (sin.f64 (*.f64 #s(literal 1/2 binary64) x)) (cos.f64 (*.f64 #s(literal 1/2 binary64) x)))
(/.f64 (sin.f64 (*.f64 #s(literal 1/2 binary64) x)) (cos.f64 (*.f64 #s(literal 1/2 binary64) x)))

rewrite241.0ms (4.6%)

Memory
-13.4MiB live, 180.6MiB allocated
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01754
02449
18349
245249
3393237
01156837
Stop Event
iter limit
node limit
iter limit
Counts
8 → 163
Calls
Call 1
Inputs
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x))
(*.f64 #s(literal 1/2 binary64) x)
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(*.f64 x x)
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(pow.f64 #s(literal 1 binary64) #s(literal -1/2 binary64))
Outputs
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>

eval35.0ms (0.7%)

Memory
41.5MiB live, 77.3MiB allocated
Compiler

Compiled 6 160 to 755 computations (87.7% saved)

prune15.0ms (0.3%)

Memory
-4.8MiB live, 30.7MiB allocated
Pruning

5 alts after pruning (2 fresh and 3 done)

PrunedKeptTotal
New2722274
Fresh000
Picked134
Done000
Total2735278
Accuracy
100.0%
Counts
278 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
53.0%
#s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)))
53.0%
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x))
53.2%
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x))
6.9%
#s(literal 1 binary64)
Compiler

Compiled 50 to 40 computations (20% saved)

simplify30.0ms (0.6%)

Memory
-32.2MiB live, 16.2MiB allocated
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 #s(literal 1/24 binary64) x)
cost-diff0
(*.f64 x x)
cost-diff0
#s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)))
cost-diff320
(fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01341
01838
13636
25836
37336
49436
511836
615136
722536
834936
955536
1059736
1160036
1260836
1361436
1461836
1562536
1665836
1767636
1867836
067834
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
#s(literal 1 binary64)
#s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)))
(fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x))
(*.f64 x x)
x
(*.f64 #s(literal 1/24 binary64) x)
#s(literal 1/24 binary64)
(*.f64 #s(literal 1/2 binary64) x)
#s(literal 1/2 binary64)
Outputs
#s(literal 1 binary64)
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 #s(literal 1/24 binary64) x) x #s(literal 1/2 binary64)) x))
(*.f64 (fma.f64 (*.f64 #s(literal 1/24 binary64) x) x #s(literal 1/2 binary64)) x)
(*.f64 x x)
x
(*.f64 #s(literal 1/24 binary64) x)
#s(literal 1/24 binary64)
(*.f64 #s(literal 1/2 binary64) x)
#s(literal 1/2 binary64)

localize85.0ms (1.6%)

Memory
32.9MiB live, 103.7MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0
(*.f64 #s(literal 1/2 binary64) x)
accuracy0.05078125
(fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x))
accuracy0.359375
(*.f64 #s(literal 1/24 binary64) x)
accuracy30.050614278630103
#s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)))
Samples
35.0ms77×2valid
20.0ms126×0valid
14.0ms22×3valid
5.0ms30×1valid
1.0ms5exit
Compiler

Compiled 74 to 29 computations (60.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 63.0ms
ival-cos: 31.0ms (49.1% of total)
adjust: 10.0ms (15.8% of total)
ival-mult: 6.0ms (9.5% of total)
ival-sin: 5.0ms (7.9% of total)
const: 4.0ms (6.3% of total)
ival-div: 3.0ms (4.7% of total)
ival-sub: 3.0ms (4.7% of total)
ival-add: 1.0ms (1.6% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series6.0ms (0.1%)

Memory
8.3MiB live, 8.3MiB allocated
Counts
5 → 60
Calls
Call 1
Inputs
#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())
#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x))) #<representation binary64>) () ())
#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())
#s(alt #<batchref> (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())
#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())
Outputs
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor 0 x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch #s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x))) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt #<batchref> (taylor -inf x) (#s(alt #<batchref> (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@inf
((+ (* (* x x) (* 1/24 x)) (* 1/2 x)) (/ (- 1 (cos x)) (sin x)) (* x x) (* 1/24 x) (* 1/2 x))
1.0ms
x
@-inf
((+ (* (* x x) (* 1/24 x)) (* 1/2 x)) (/ (- 1 (cos x)) (sin x)) (* x x) (* 1/24 x) (* 1/2 x))
1.0ms
x
@0
((+ (* (* x x) (* 1/24 x)) (* 1/2 x)) (/ (- 1 (cos x)) (sin x)) (* x x) (* 1/24 x) (* 1/2 x))

simplify175.0ms (3.4%)

Memory
-6.6MiB live, 135.2MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
036282
1106282
2259282
3595282
4995282
51717282
63040282
74209282
85167282
95858282
106747282
117172282
127953282
08079267
Stop Event
iter limit
node limit
Counts
60 → 60
Calls
Call 1
Inputs
(* 1/2 x)
(* x (+ 1/2 (* 1/24 (pow x 2))))
(* x (+ 1/2 (* 1/24 (pow x 2))))
(* x (+ 1/2 (* 1/24 (pow x 2))))
(* 1/2 x)
(* x (+ 1/2 (* 1/24 (pow x 2))))
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* 1/240 (pow x 2))))))
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* (pow x 2) (+ 1/240 (* 17/40320 (pow x 2))))))))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(* 1/24 x)
(* 1/24 x)
(* 1/24 x)
(* 1/24 x)
(* 1/2 x)
(* 1/2 x)
(* 1/2 x)
(* 1/2 x)
(* 1/24 (pow x 3))
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(* 1/24 x)
(* 1/24 x)
(* 1/24 x)
(* 1/24 x)
(* 1/2 x)
(* 1/2 x)
(* 1/2 x)
(* 1/2 x)
(* 1/24 (pow x 3))
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(/ (- 1 (cos x)) (sin x))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(* 1/24 x)
(* 1/24 x)
(* 1/24 x)
(* 1/24 x)
(* 1/2 x)
(* 1/2 x)
(* 1/2 x)
(* 1/2 x)
Outputs
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (fma.f64 #s(literal 1/240 binary64) (*.f64 x x) #s(literal 1/24 binary64)) (*.f64 x x) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (fma.f64 (fma.f64 #s(literal 17/40320 binary64) (*.f64 x x) #s(literal 1/240 binary64)) (*.f64 x x) #s(literal 1/24 binary64)) (*.f64 x x) #s(literal 1/2 binary64)) x)
(*.f64 x x)
(*.f64 x x)
(*.f64 x x)
(*.f64 x x)
(*.f64 #s(literal 1/24 binary64) x)
(*.f64 #s(literal 1/24 binary64) x)
(*.f64 #s(literal 1/24 binary64) x)
(*.f64 #s(literal 1/24 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/24 binary64))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(*.f64 x x)
(*.f64 x x)
(*.f64 x x)
(*.f64 x x)
(*.f64 #s(literal 1/24 binary64) x)
(*.f64 #s(literal 1/24 binary64) x)
(*.f64 #s(literal 1/24 binary64) x)
(*.f64 #s(literal 1/24 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/24 binary64))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(*.f64 x x)
(*.f64 x x)
(*.f64 x x)
(*.f64 x x)
(*.f64 #s(literal 1/24 binary64) x)
(*.f64 #s(literal 1/24 binary64) x)
(*.f64 #s(literal 1/24 binary64) x)
(*.f64 #s(literal 1/24 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)

rewrite203.0ms (3.9%)

Memory
-29.1MiB live, 193.2MiB allocated
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01337
01834
16832
247432
3483631
0878629
Stop Event
iter limit
node limit
iter limit
Counts
5 → 135
Calls
Call 1
Inputs
(fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x))
#s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)))
(*.f64 x x)
(*.f64 #s(literal 1/24 binary64) x)
(*.f64 #s(literal 1/2 binary64) x)
Outputs
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>

eval48.0ms (0.9%)

Memory
-9.2MiB live, 115.4MiB allocated
Compiler

Compiled 5 453 to 555 computations (89.8% saved)

prune7.0ms (0.1%)

Memory
26.8MiB live, 26.8MiB allocated
Pruning

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New1950195
Fresh000
Picked022
Done033
Total1955200
Accuracy
100.0%
Counts
200 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
53.0%
#s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)))
53.0%
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x))
53.2%
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x))
6.9%
#s(literal 1 binary64)
Compiler

Compiled 110 to 65 computations (40.9% saved)

regimes9.0ms (0.2%)

Memory
-20.1MiB live, 16.0MiB allocated
Counts
7 → 1
Calls
Call 1
Inputs
#s(literal 1 binary64)
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x))
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x))
#s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)))
(pow.f64 #s(literal 1 binary64) #s(literal -1/2 binary64))
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
Outputs
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
Calls

2 calls:

6.0ms
x
3.0ms
(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
Results
AccuracySegmentsBranch
100.0%1x
100.0%1(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
Compiler

Compiled 8 to 7 computations (12.5% saved)

regimes5.0ms (0.1%)

Memory
15.0MiB live, 15.0MiB allocated
Counts
5 → 2
Calls
Call 1
Inputs
#s(literal 1 binary64)
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x))
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x))
#s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)))
(pow.f64 #s(literal 1 binary64) #s(literal -1/2 binary64))
Outputs
#s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)))
#s(literal 1 binary64)
Calls

2 calls:

2.0ms
x
2.0ms
(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
Results
AccuracySegmentsBranch
56.2%2x
56.0%2(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
Compiler

Compiled 8 to 7 computations (12.5% saved)

regimes2.0ms (0%)

Memory
6.2MiB live, 6.2MiB allocated
Counts
3 → 2
Calls
Call 1
Inputs
#s(literal 1 binary64)
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x))
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x))
Outputs
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x))
#s(literal 1 binary64)
Calls

1 calls:

2.0ms
x
Results
AccuracySegmentsBranch
56.2%2x
Compiler

Compiled 1 to 1 computations (0% saved)

regimes4.0ms (0.1%)

Memory
15.4MiB live, 15.4MiB allocated
Counts
2 → 2
Calls
Call 1
Inputs
#s(literal 1 binary64)
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x))
Outputs
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x))
#s(literal 1 binary64)
Calls

2 calls:

2.0ms
x
2.0ms
(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
Results
AccuracySegmentsBranch
55.8%2(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
55.9%2x
Compiler

Compiled 8 to 7 computations (12.5% saved)

regimes9.0ms (0.2%)

Memory
-31.1MiB live, 13.9MiB allocated
Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
#s(literal 1 binary64)
Outputs
#s(literal 1 binary64)
Calls

2 calls:

7.0ms
x
1.0ms
(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
Results
AccuracySegmentsBranch
6.9%1(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
6.9%1x
Compiler

Compiled 8 to 7 computations (12.5% saved)

bsearch52.0ms (1%)

Memory
-3.7MiB live, 35.8MiB allocated
Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
51.0ms
2.170259495541874e-5
50.44192046136823
Samples
45.0ms144×0valid
Compiler

Compiled 181 to 163 computations (9.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 42.0ms
ival-sub: 32.0ms (76% of total)
ival-cos: 4.0ms (9.5% of total)
ival-sin: 4.0ms (9.5% of total)
ival-div: 1.0ms (2.4% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

bsearch1.0ms (0%)

Memory
0.9MiB live, 0.9MiB allocated
Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
1.0ms
2.170259495541874e-5
50.44192046136823
Compiler

Compiled 163 to 154 computations (5.5% saved)

bsearch10.0ms (0.2%)

Memory
3.7MiB live, 3.7MiB allocated
Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
9.0ms
2.170259495541874e-5
50.44192046136823
Samples
6.0ms64×0valid
Compiler

Compiled 118 to 127 computations (-7.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 5.0ms
ival-cos: 2.0ms (43.9% of total)
ival-sin: 2.0ms (43.9% of total)
ival-sub: 0.0ms (0% of total)
ival-div: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

simplify38.0ms (0.7%)

Memory
-8.2MiB live, 29.9MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02565
13165
Stop Event
saturated
Calls
Call 1
Inputs
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(if (<=.f64 x #s(literal 3602879701896397/1125899906842624 binary64)) #s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x))) #s(literal 1 binary64))
(if (<=.f64 x #s(literal 3602879701896397/1125899906842624 binary64)) #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) #s(literal 1 binary64))
(if (<=.f64 x #s(literal 6530219459687219/4503599627370496 binary64)) #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x)) #s(literal 1 binary64))
#s(literal 1 binary64)
Outputs
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(if (<=.f64 x #s(literal 3602879701896397/1125899906842624 binary64)) #s(approx (/ (- 1 (cos x)) (sin x)) (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 x #s(literal 1/2 binary64)))) #s(literal 1 binary64))
(if (<=.f64 x #s(literal 3602879701896397/1125899906842624 binary64)) #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) #s(literal 1 binary64))
(if (<=.f64 x #s(literal 6530219459687219/4503599627370496 binary64)) #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) #s(literal 1 binary64))
#s(literal 1 binary64)

soundness672.0ms (12.9%)

Memory
3.4MiB live, 366.5MiB allocated
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
079286
1224286
2555280
31661280
43000280
54247280
64597280
75328280
86820280
08376256
0615
01012
13912
224512
3235511
0888511
01754
02449
18349
245249
3393237
01156837
Stop Event
done
iter limit
node limit
iter limit
iter limit
node limit
iter limit
iter limit
node limit
Compiler

Compiled 155 to 98 computations (36.8% saved)

preprocess103.0ms (2%)

Memory
8.9MiB live, 59.6MiB allocated
Remove

(negabs x)

Compiler

Compiled 168 to 88 computations (47.6% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...