tanhf (example 3.4)

Time bar (total: 5.3s)

start0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

analyze113.0ms (2.1%)

Memory
-12.9MiB live, 140.6MiB 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)

sample1.8s (33.8%)

Memory
75.3MiB live, 1 672.6MiB allocated
Samples
652.0ms2 182×2valid
470.0ms4 257×0valid
235.0ms602×3valid
158.0ms1 213×1valid
2.0ms4valid
Precisions
Click to see histograms. Total time spent on operations: 1.3s
ival-cos: 768.0ms (60.3% of total)
ival-sin: 187.0ms (14.7% of total)
adjust: 109.0ms (8.6% of total)
ival-div: 105.0ms (8.2% of total)
ival-sub: 89.0ms (7% of total)
ival-true: 7.0ms (0.5% of total)
exact: 6.0ms (0.5% of total)
ival-assert: 4.0ms (0.3% of total)
Bogosity

explain265.0ms (5%)

Memory
-5.8MiB live, 153.6MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
72152(-1.0948402402852244e+145)0-(-.f64 #s(literal 1 binary64) (cos.f64 x))
720-72(-1.9189812812229288e-268)(/.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))cancellation2241
Confusion
Predicted +Predicted -
+1450
-7932
Precision
0.6473214285714286
Recall
1.0
Confusion?
Predicted +Predicted MaybePredicted -
+14500
-79131
Precision?
0.6444444444444445
Recall?
1.0
Freqs
test
numberfreq
032
1224
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
85.0ms154×2valid
35.0ms46×3valid
28.0ms252×0valid
7.0ms60×1valid
Compiler

Compiled 96 to 46 computations (52.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 94.0ms
ival-cos: 62.0ms (65.6% of total)
ival-sin: 11.0ms (11.6% of total)
adjust: 8.0ms (8.5% of total)
ival-div: 7.0ms (7.4% of total)
ival-sub: 6.0ms (6.4% of total)
ival-true: 1.0ms (1.1% of total)
ival-assert: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

preprocess44.0ms (0.8%)

Memory
-2.3MiB live, 35.6MiB 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
(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
(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.7MiB live, 0.7MiB 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)

simplify23.0ms (0.4%)

Memory
10.9MiB live, 10.9MiB 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
(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
(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)

localize108.0ms (2%)

Memory
-13.8MiB live, 61.8MiB 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
58.0ms126×0valid
24.0ms77×2valid
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: 85.0ms
ival-sin: 51.0ms (60.2% of total)
ival-cos: 22.0ms (26% of total)
adjust: 4.0ms (4.7% of total)
ival-div: 3.0ms (3.5% of total)
ival-sub: 3.0ms (3.5% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series3.0ms (0.1%)

Memory
4.4MiB live, 4.4MiB allocated
Counts
4 → 48
Calls
Call 1
Inputs
#s(alt (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())
#s(alt (-.f64 #s(literal 1 binary64) (cos.f64 x)) (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())
#s(alt (cos.f64 x) (patch (cos.f64 x) #<representation binary64>) () ())
#s(alt (sin.f64 x) (patch (sin.f64 x) #<representation binary64>) () ())
Outputs
#s(alt (* 1/2 x) (taylor 0 x) (#s(alt (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1/2 (* 1/24 (pow x 2)))) (taylor 0 x) (#s(alt (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1/2 (* (pow x 2) (+ 1/24 (* 1/240 (pow x 2)))))) (taylor 0 x) (#s(alt (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1/2 (* (pow x 2) (+ 1/24 (* (pow x 2) (+ 1/240 (* 17/40320 (pow x 2)))))))) (taylor 0 x) (#s(alt (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 (pow x 2)) (taylor 0 x) (#s(alt (-.f64 #s(literal 1 binary64) (cos.f64 x)) (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1/2 (* -1/24 (pow x 2)))) (taylor 0 x) (#s(alt (-.f64 #s(literal 1 binary64) (cos.f64 x)) (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1/2 (* (pow x 2) (- (* 1/720 (pow x 2)) 1/24)))) (taylor 0 x) (#s(alt (-.f64 #s(literal 1 binary64) (cos.f64 x)) (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1/2 (* (pow x 2) (- (* (pow x 2) (+ 1/720 (* -1/40320 (pow x 2)))) 1/24)))) (taylor 0 x) (#s(alt (-.f64 #s(literal 1 binary64) (cos.f64 x)) (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt 1 (taylor 0 x) (#s(alt (cos.f64 x) (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt (+ 1 (* -1/2 (pow x 2))) (taylor 0 x) (#s(alt (cos.f64 x) (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt (+ 1 (* (pow x 2) (- (* 1/24 (pow x 2)) 1/2))) (taylor 0 x) (#s(alt (cos.f64 x) (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt (+ 1 (* (pow x 2) (- (* (pow x 2) (+ 1/24 (* -1/720 (pow x 2)))) 1/2))) (taylor 0 x) (#s(alt (cos.f64 x) (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt x (taylor 0 x) (#s(alt (sin.f64 x) (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* -1/6 (pow x 2)))) (taylor 0 x) (#s(alt (sin.f64 x) (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* (pow x 2) (- (* 1/120 (pow x 2)) 1/6)))) (taylor 0 x) (#s(alt (sin.f64 x) (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* (pow x 2) (- (* (pow x 2) (+ 1/120 (* -1/5040 (pow x 2)))) 1/6)))) (taylor 0 x) (#s(alt (sin.f64 x) (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor inf x) (#s(alt (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor inf x) (#s(alt (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor inf x) (#s(alt (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor inf x) (#s(alt (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt (- 1 (cos x)) (taylor inf x) (#s(alt (-.f64 #s(literal 1 binary64) (cos.f64 x)) (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt (- 1 (cos x)) (taylor inf x) (#s(alt (-.f64 #s(literal 1 binary64) (cos.f64 x)) (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt (- 1 (cos x)) (taylor inf x) (#s(alt (-.f64 #s(literal 1 binary64) (cos.f64 x)) (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt (- 1 (cos x)) (taylor inf x) (#s(alt (-.f64 #s(literal 1 binary64) (cos.f64 x)) (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt (cos x) (taylor inf x) (#s(alt (cos.f64 x) (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt (cos x) (taylor inf x) (#s(alt (cos.f64 x) (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt (cos x) (taylor inf x) (#s(alt (cos.f64 x) (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt (cos x) (taylor inf x) (#s(alt (cos.f64 x) (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt (sin x) (taylor inf x) (#s(alt (sin.f64 x) (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt (sin x) (taylor inf x) (#s(alt (sin.f64 x) (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt (sin x) (taylor inf x) (#s(alt (sin.f64 x) (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt (sin x) (taylor inf x) (#s(alt (sin.f64 x) (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor -inf x) (#s(alt (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor -inf x) (#s(alt (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor -inf x) (#s(alt (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor -inf x) (#s(alt (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) (patch (/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x)) #<representation binary64>) () ())) ())
#s(alt (- 1 (cos x)) (taylor -inf x) (#s(alt (-.f64 #s(literal 1 binary64) (cos.f64 x)) (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt (- 1 (cos x)) (taylor -inf x) (#s(alt (-.f64 #s(literal 1 binary64) (cos.f64 x)) (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt (- 1 (cos x)) (taylor -inf x) (#s(alt (-.f64 #s(literal 1 binary64) (cos.f64 x)) (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt (- 1 (cos x)) (taylor -inf x) (#s(alt (-.f64 #s(literal 1 binary64) (cos.f64 x)) (patch (-.f64 #s(literal 1 binary64) (cos.f64 x)) #<representation binary64>) () ())) ())
#s(alt (cos x) (taylor -inf x) (#s(alt (cos.f64 x) (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt (cos x) (taylor -inf x) (#s(alt (cos.f64 x) (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt (cos x) (taylor -inf x) (#s(alt (cos.f64 x) (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt (cos x) (taylor -inf x) (#s(alt (cos.f64 x) (patch (cos.f64 x) #<representation binary64>) () ())) ())
#s(alt (sin x) (taylor -inf x) (#s(alt (sin.f64 x) (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt (sin x) (taylor -inf x) (#s(alt (sin.f64 x) (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt (sin x) (taylor -inf x) (#s(alt (sin.f64 x) (patch (sin.f64 x) #<representation binary64>) () ())) ())
#s(alt (sin x) (taylor -inf x) (#s(alt (sin.f64 x) (patch (sin.f64 x) #<representation binary64>) () ())) ())
Calls

3 calls:

TimeVariablePointExpression
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))
1.0ms
x
@-inf
((/ (- 1 (cos x)) (sin x)) (- 1 (cos x)) (cos x) (sin x))

simplify227.0ms (4.3%)

Memory
-4.4MiB live, 155.9MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
079286
1224286
2555280
31661280
43000280
54254280
64606280
75336280
86824280
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
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* x (+ 1/2 (* 1/24 (pow x 2))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* 1/240 (pow x 2))))))
(*.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)
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* (pow x 2) (+ 1/240 (* 17/40320 (pow x 2))))))))
(*.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)
(* 1/2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 1/2 binary64))
(* (pow x 2) (+ 1/2 (* -1/24 (pow x 2))))
(*.f64 (*.f64 (fma.f64 #s(literal -1/24 binary64) (*.f64 x x) #s(literal 1/2 binary64)) x) x)
(* (pow x 2) (+ 1/2 (* (pow x 2) (- (* 1/720 (pow x 2)) 1/24))))
(*.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)
(* (pow x 2) (+ 1/2 (* (pow x 2) (- (* (pow x 2) (+ 1/720 (* -1/40320 (pow x 2)))) 1/24))))
(*.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)
1
#s(literal 1 binary64)
(+ 1 (* -1/2 (pow x 2)))
(fma.f64 #s(literal -1/2 binary64) (*.f64 x x) #s(literal 1 binary64))
(+ 1 (* (pow x 2) (- (* 1/24 (pow x 2)) 1/2)))
(fma.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal -1/2 binary64)) (*.f64 x x) #s(literal 1 binary64))
(+ 1 (* (pow x 2) (- (* (pow x 2) (+ 1/24 (* -1/720 (pow x 2)))) 1/2)))
(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
(* x (+ 1 (* -1/6 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal -1/6 binary64) x)
(* x (+ 1 (* (pow x 2) (- (* 1/120 (pow x 2)) 1/6))))
(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)
(* x (+ 1 (* (pow x 2) (- (* (pow x 2) (+ 1/120 (* -1/5040 (pow x 2)))) 1/6))))
(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)
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(- 1 (cos x))
(-.f64 #s(literal 1 binary64) (cos.f64 x))
(- 1 (cos x))
(-.f64 #s(literal 1 binary64) (cos.f64 x))
(- 1 (cos x))
(-.f64 #s(literal 1 binary64) (cos.f64 x))
(- 1 (cos x))
(-.f64 #s(literal 1 binary64) (cos.f64 x))
(cos x)
(cos.f64 x)
(cos x)
(cos.f64 x)
(cos x)
(cos.f64 x)
(cos x)
(cos.f64 x)
(sin x)
(sin.f64 x)
(sin x)
(sin.f64 x)
(sin x)
(sin.f64 x)
(sin x)
(sin.f64 x)
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(- 1 (cos x))
(-.f64 #s(literal 1 binary64) (cos.f64 x))
(- 1 (cos x))
(-.f64 #s(literal 1 binary64) (cos.f64 x))
(- 1 (cos x))
(-.f64 #s(literal 1 binary64) (cos.f64 x))
(- 1 (cos x))
(-.f64 #s(literal 1 binary64) (cos.f64 x))
(cos x)
(cos.f64 x)
(cos x)
(cos.f64 x)
(cos x)
(cos.f64 x)
(cos x)
(cos.f64 x)
(sin x)
(sin.f64 x)
(sin x)
(sin.f64 x)
(sin x)
(sin.f64 x)
(sin x)
(sin.f64 x)

rewrite148.0ms (2.8%)

Memory
16.9MiB live, 208.6MiB 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>

eval235.0ms (4.4%)

Memory
10.3MiB live, 129.2MiB allocated
Compiler

Compiled 13 164 to 1 644 computations (87.5% saved)

prune14.0ms (0.3%)

Memory
0.5MiB live, 36.8MiB 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 x #s(literal 1/2 binary64)))
Compiler

Compiled 20 to 19 computations (5% saved)

simplify27.0ms (0.5%)

Memory
-26.2MiB live, 12.8MiB 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 x #s(literal 1/2 binary64))
cost-diff0
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01866
02658
14258
25758
37458
49858
512258
615558
722958
835258
956258
1060458
1160758
1261558
1362058
1462458
1563158
1666458
1768858
1869058
069058
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64)))
(*.f64 x #s(literal 1/2 binary64))
x
#s(literal 1/2 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))
(*.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 x #s(literal 1/2 binary64)))
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 #s(literal 1/2 binary64) x))
(*.f64 x #s(literal 1/2 binary64))
(*.f64 #s(literal 1/2 binary64) x)
x
#s(literal 1/2 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(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 (*.f64 x x) #s(literal 1/24 binary64) #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 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(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
(pow.f64 #s(literal 1 binary64) #s(literal -1/2 binary64))
#s(literal 1 binary64)
#s(literal 1 binary64)
#s(literal -1/2 binary64)

localize101.0ms (1.9%)

Memory
-8.7MiB live, 115.6MiB 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 x #s(literal 1/2 binary64))
accuracy29.940780754014934
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64)))
Samples
34.0ms77×2valid
31.0ms126×0valid
12.0ms23×3valid
7.0ms30×1valid
Compiler

Compiled 109 to 33 computations (69.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 67.0ms
ival-cos: 24.0ms (35.7% of total)
adjust: 8.0ms (11.9% of total)
ival-mult: 7.0ms (10.4% of total)
ival-tan: 6.0ms (8.9% of total)
ival-sin: 5.0ms (7.4% of total)
const: 4.0ms (5.9% of total)
ival-add: 4.0ms (5.9% of total)
ival-div: 3.0ms (4.5% of total)
ival-sub: 3.0ms (4.5% of total)
ival-pow: 2.0ms (3% 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
11.9MiB live, 11.9MiB allocated
Counts
9 → 96
Calls
Call 1
Inputs
#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) #<representation binary64>) () ())
#s(alt (*.f64 x #s(literal 1/2 binary64)) (patch (*.f64 x #s(literal 1/2 binary64)) #<representation binary64>) () ())
#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) (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 (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())
#s(alt (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())
#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())
#s(alt (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())
#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())
#s(alt (pow.f64 #s(literal 1 binary64) #s(literal -1/2 binary64)) (patch (pow.f64 #s(literal 1 binary64) #s(literal -1/2 binary64)) #<representation binary64>) () ())
Outputs
#s(alt (* 1/2 x) (taylor 0 x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1/2 (* 1/24 (pow x 2)))) (taylor 0 x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1/2 (* (pow x 2) (+ 1/24 (* 1/240 (pow x 2)))))) (taylor 0 x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1/2 (* (pow x 2) (+ 1/24 (* (pow x 2) (+ 1/240 (* 17/40320 (pow x 2)))))))) (taylor 0 x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor 0 x) (#s(alt (*.f64 x #s(literal 1/2 binary64)) (patch (*.f64 x #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor 0 x) (#s(alt (*.f64 x #s(literal 1/2 binary64)) (patch (*.f64 x #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor 0 x) (#s(alt (*.f64 x #s(literal 1/2 binary64)) (patch (*.f64 x #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor 0 x) (#s(alt (*.f64 x #s(literal 1/2 binary64)) (patch (*.f64 x #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor 0 x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) (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 (* x (+ 1/2 (* 1/24 (pow x 2)))) (taylor 0 x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) (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 (* x (+ 1/2 (* (pow x 2) (+ 1/24 (* 1/240 (pow x 2)))))) (taylor 0 x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) (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 (* x (+ 1/2 (* (pow x 2) (+ 1/24 (* (pow x 2) (+ 1/240 (* 17/40320 (pow x 2)))))))) (taylor 0 x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) (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 (* 1/2 x) (taylor 0 x) (#s(alt (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1/2 (* 1/24 (pow x 2)))) (taylor 0 x) (#s(alt (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1/2 (* 1/24 (pow x 2)))) (taylor 0 x) (#s(alt (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1/2 (* 1/24 (pow x 2)))) (taylor 0 x) (#s(alt (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt 1/2 (taylor 0 x) (#s(alt (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (+ 1/2 (* 1/24 (pow x 2))) (taylor 0 x) (#s(alt (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (+ 1/2 (* 1/24 (pow x 2))) (taylor 0 x) (#s(alt (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (+ 1/2 (* 1/24 (pow x 2))) (taylor 0 x) (#s(alt (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor 0 x) (#s(alt (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1/2 (* 1/24 (pow x 2)))) (taylor 0 x) (#s(alt (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1/2 (* (pow x 2) (+ 1/24 (* 1/240 (pow x 2)))))) (taylor 0 x) (#s(alt (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1/2 (* (pow x 2) (+ 1/24 (* (pow x 2) (+ 1/240 (* 17/40320 (pow x 2)))))))) (taylor 0 x) (#s(alt (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor inf x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor inf x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor inf x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor inf x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor inf x) (#s(alt (*.f64 x #s(literal 1/2 binary64)) (patch (*.f64 x #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor inf x) (#s(alt (*.f64 x #s(literal 1/2 binary64)) (patch (*.f64 x #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor inf x) (#s(alt (*.f64 x #s(literal 1/2 binary64)) (patch (*.f64 x #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor inf x) (#s(alt (*.f64 x #s(literal 1/2 binary64)) (patch (*.f64 x #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor inf x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) (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 (/ (- 1 (cos x)) (sin x)) (taylor inf x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) (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 (/ (- 1 (cos x)) (sin x)) (taylor inf x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) (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 (/ (- 1 (cos x)) (sin x)) (taylor inf x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) (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 (* 1/24 (pow x 3)) (taylor inf x) (#s(alt (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* 1/24 (pow x 2)) (taylor inf x) (#s(alt (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1/24 (* 1/2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1/24 (* 1/2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1/24 (* 1/2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (/ (sin (* 1/2 x)) (cos (* 1/2 x))) (taylor inf x) (#s(alt (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (/ (sin (* 1/2 x)) (cos (* 1/2 x))) (taylor inf x) (#s(alt (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (/ (sin (* 1/2 x)) (cos (* 1/2 x))) (taylor inf x) (#s(alt (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (/ (sin (* 1/2 x)) (cos (* 1/2 x))) (taylor inf x) (#s(alt (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor -inf x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor -inf x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor -inf x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor -inf x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) (patch #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor -inf x) (#s(alt (*.f64 x #s(literal 1/2 binary64)) (patch (*.f64 x #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor -inf x) (#s(alt (*.f64 x #s(literal 1/2 binary64)) (patch (*.f64 x #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor -inf x) (#s(alt (*.f64 x #s(literal 1/2 binary64)) (patch (*.f64 x #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor -inf x) (#s(alt (*.f64 x #s(literal 1/2 binary64)) (patch (*.f64 x #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor -inf x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) (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 (/ (- 1 (cos x)) (sin x)) (taylor -inf x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) (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 (/ (- 1 (cos x)) (sin x)) (taylor -inf x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) (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 (/ (- 1 (cos x)) (sin x)) (taylor -inf x) (#s(alt #s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)) (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 (* 1/24 (pow x 3)) (taylor -inf x) (#s(alt (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2))))) (taylor -inf x) (#s(alt (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2))))) (taylor -inf x) (#s(alt (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2))))) (taylor -inf x) (#s(alt (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) (patch (*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x) #<representation binary64>) () ())) ())
#s(alt (* 1/24 (pow x 2)) (taylor -inf x) (#s(alt (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1/24 (* 1/2 (/ 1 (pow x 2))))) (taylor -inf x) (#s(alt (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1/24 (* 1/2 (/ 1 (pow x 2))))) (taylor -inf x) (#s(alt (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 2) (+ 1/24 (* 1/2 (/ 1 (pow x 2))))) (taylor -inf x) (#s(alt (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) (patch (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (/ (sin (* 1/2 x)) (cos (* 1/2 x))) (taylor -inf x) (#s(alt (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (/ (sin (* 1/2 x)) (cos (* 1/2 x))) (taylor -inf x) (#s(alt (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (/ (sin (* 1/2 x)) (cos (* 1/2 x))) (taylor -inf x) (#s(alt (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (/ (sin (* 1/2 x)) (cos (* 1/2 x))) (taylor -inf x) (#s(alt (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) (patch (tan.f64 (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
Calls

3 calls:

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

simplify176.0ms (3.3%)

Memory
31.4MiB live, 106.8MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
039556
1114556
2285556
3660556
41236556
52808556
63651556
74498556
84915556
95453556
106084556
116835556
127410556
08145520
Stop Event
iter limit
node limit
Counts
96 → 96
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/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/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/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/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/2 x)
(* 1/2 x)
(* 1/2 x)
(* 1/2 x)
Outputs
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* x (+ 1/2 (* 1/24 (pow x 2))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* 1/240 (pow x 2))))))
(*.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)
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* (pow x 2) (+ 1/240 (* 17/40320 (pow x 2))))))))
(*.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)
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* x (+ 1/2 (* 1/24 (pow x 2))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* 1/240 (pow x 2))))))
(*.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)
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* (pow x 2) (+ 1/240 (* 17/40320 (pow x 2))))))))
(*.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)
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* x (+ 1/2 (* 1/24 (pow x 2))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* x (+ 1/2 (* 1/24 (pow x 2))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* x (+ 1/2 (* 1/24 (pow x 2))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
1/2
#s(literal 1/2 binary64)
(+ 1/2 (* 1/24 (pow x 2)))
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(+ 1/2 (* 1/24 (pow x 2)))
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(+ 1/2 (* 1/24 (pow x 2)))
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* x (+ 1/2 (* 1/24 (pow x 2))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* 1/240 (pow x 2))))))
(*.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)
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* (pow x 2) (+ 1/240 (* 17/40320 (pow x 2))))))))
(*.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)
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(* 1/24 (pow x 3))
(*.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/24 binary64))
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* 1/24 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 1/24 binary64))
(* (pow x 2) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(* (pow x 2) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(* (pow x 2) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(/ (sin (* 1/2 x)) (cos (* 1/2 x)))
(/.f64 (sin.f64 (*.f64 x #s(literal 1/2 binary64))) (cos.f64 (*.f64 x #s(literal 1/2 binary64))))
(/ (sin (* 1/2 x)) (cos (* 1/2 x)))
(/.f64 (sin.f64 (*.f64 x #s(literal 1/2 binary64))) (cos.f64 (*.f64 x #s(literal 1/2 binary64))))
(/ (sin (* 1/2 x)) (cos (* 1/2 x)))
(/.f64 (sin.f64 (*.f64 x #s(literal 1/2 binary64))) (cos.f64 (*.f64 x #s(literal 1/2 binary64))))
(/ (sin (* 1/2 x)) (cos (* 1/2 x)))
(/.f64 (sin.f64 (*.f64 x #s(literal 1/2 binary64))) (cos.f64 (*.f64 x #s(literal 1/2 binary64))))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(* 1/24 (pow x 3))
(*.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/24 binary64))
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* 1/24 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 1/24 binary64))
(* (pow x 2) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(* (pow x 2) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(* (pow x 2) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64))
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(/ (sin (* 1/2 x)) (cos (* 1/2 x)))
(/.f64 (sin.f64 (*.f64 x #s(literal 1/2 binary64))) (cos.f64 (*.f64 x #s(literal 1/2 binary64))))
(/ (sin (* 1/2 x)) (cos (* 1/2 x)))
(/.f64 (sin.f64 (*.f64 x #s(literal 1/2 binary64))) (cos.f64 (*.f64 x #s(literal 1/2 binary64))))
(/ (sin (* 1/2 x)) (cos (* 1/2 x)))
(/.f64 (sin.f64 (*.f64 x #s(literal 1/2 binary64))) (cos.f64 (*.f64 x #s(literal 1/2 binary64))))
(/ (sin (* 1/2 x)) (cos (* 1/2 x)))
(/.f64 (sin.f64 (*.f64 x #s(literal 1/2 binary64))) (cos.f64 (*.f64 x #s(literal 1/2 binary64))))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))

rewrite345.0ms (6.5%)

Memory
-13.2MiB live, 147.0MiB allocated
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01857
02652
18552
245452
3393140
01155740
Stop Event
iter limit
node limit
iter limit
Counts
9 → 178
Calls
Call 1
Inputs
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64)))
(*.f64 x #s(literal 1/2 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))
(*.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))
(*.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>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>

eval64.0ms (1.2%)

Memory
-1.4MiB live, 50.2MiB allocated
Compiler

Compiled 4 181 to 743 computations (82.2% saved)

prune15.0ms (0.3%)

Memory
-9.5MiB live, 26.4MiB 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 x #s(literal 1/2 binary64)))
6.9%
#s(literal 1 binary64)
Compiler

Compiled 29 to 25 computations (13.8% saved)

simplify26.0ms (0.5%)

Memory
14.6MiB live, 14.6MiB 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
834836
955436
1059636
1159936
1260736
1361336
1461736
1562436
1665736
1768036
1868236
068234
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)) (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)) (*.f64 (fma.f64 (*.f64 #s(literal 1/24 binary64) x) x #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 (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)

localize90.0ms (1.7%)

Memory
-19.8MiB live, 99.9MiB 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
33.0ms77×2valid
31.0ms126×0valid
10.0ms22×3valid
5.0ms30×1valid
1.0ms5exit
Compiler

Compiled 67 to 24 computations (64.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 61.0ms
ival-cos: 28.0ms (45.6% of total)
ival-mult: 11.0ms (17.9% of total)
adjust: 6.0ms (9.8% of total)
ival-sin: 5.0ms (8.2% of total)
const: 4.0ms (6.5% of total)
ival-div: 3.0ms (4.9% of total)
ival-sub: 3.0ms (4.9% 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)

series5.0ms (0.1%)

Memory
9.3MiB live, 9.3MiB allocated
Counts
5 → 60
Calls
Call 1
Inputs
#s(alt (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())
#s(alt #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))) (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 (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())
#s(alt (*.f64 #s(literal 1/24 binary64) x) (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())
#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())
Outputs
#s(alt (* 1/2 x) (taylor 0 x) (#s(alt (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1/2 (* 1/24 (pow x 2)))) (taylor 0 x) (#s(alt (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1/2 (* 1/24 (pow x 2)))) (taylor 0 x) (#s(alt (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1/2 (* 1/24 (pow x 2)))) (taylor 0 x) (#s(alt (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor 0 x) (#s(alt #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))) (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 (* x (+ 1/2 (* 1/24 (pow x 2)))) (taylor 0 x) (#s(alt #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))) (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 (* x (+ 1/2 (* (pow x 2) (+ 1/24 (* 1/240 (pow x 2)))))) (taylor 0 x) (#s(alt #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))) (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 (* x (+ 1/2 (* (pow x 2) (+ 1/24 (* (pow x 2) (+ 1/240 (* 17/40320 (pow x 2)))))))) (taylor 0 x) (#s(alt #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))) (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 (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 1/24 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/24 binary64) x) (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/24 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/24 binary64) x) (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/24 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/24 binary64) x) (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/24 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/24 binary64) x) (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor 0 x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/24 (pow x 3)) (taylor inf x) (#s(alt (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2))))) (taylor inf x) (#s(alt (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor inf x) (#s(alt #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))) (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 (/ (- 1 (cos x)) (sin x)) (taylor inf x) (#s(alt #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))) (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 (/ (- 1 (cos x)) (sin x)) (taylor inf x) (#s(alt #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))) (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 (/ (- 1 (cos x)) (sin x)) (taylor inf x) (#s(alt #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))) (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 (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 1/24 x) (taylor inf x) (#s(alt (*.f64 #s(literal 1/24 binary64) x) (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/24 x) (taylor inf x) (#s(alt (*.f64 #s(literal 1/24 binary64) x) (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/24 x) (taylor inf x) (#s(alt (*.f64 #s(literal 1/24 binary64) x) (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/24 x) (taylor inf x) (#s(alt (*.f64 #s(literal 1/24 binary64) x) (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/24 (pow x 3)) (taylor -inf x) (#s(alt (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2))))) (taylor -inf x) (#s(alt (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2))))) (taylor -inf x) (#s(alt (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2))))) (taylor -inf x) (#s(alt (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) (patch (fma.f64 (*.f64 x x) (*.f64 #s(literal 1/24 binary64) x) (*.f64 #s(literal 1/2 binary64) x)) #<representation binary64>) () ())) ())
#s(alt (/ (- 1 (cos x)) (sin x)) (taylor -inf x) (#s(alt #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))) (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 (/ (- 1 (cos x)) (sin x)) (taylor -inf x) (#s(alt #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))) (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 (/ (- 1 (cos x)) (sin x)) (taylor -inf x) (#s(alt #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))) (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 (/ (- 1 (cos x)) (sin x)) (taylor -inf x) (#s(alt #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))) (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 (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 1/24 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/24 binary64) x) (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/24 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/24 binary64) x) (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/24 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/24 binary64) x) (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/24 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/24 binary64) x) (patch (*.f64 #s(literal 1/24 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (patch (*.f64 #s(literal 1/2 binary64) x) #<representation binary64>) () ())) ())
#s(alt (* 1/2 x) (taylor -inf x) (#s(alt (*.f64 #s(literal 1/2 binary64) x) (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))

simplify191.0ms (3.6%)

Memory
24.6MiB live, 132.2MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
036282
1106282
2260282
3593282
4978282
51680282
63001282
74194282
85162282
95857282
106736282
117161282
127944282
08070267
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
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* x (+ 1/2 (* 1/24 (pow x 2))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* x (+ 1/2 (* 1/24 (pow x 2))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* x (+ 1/2 (* 1/24 (pow x 2))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* x (+ 1/2 (* 1/24 (pow x 2))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* 1/240 (pow x 2))))))
(*.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)
(* x (+ 1/2 (* (pow x 2) (+ 1/24 (* (pow x 2) (+ 1/240 (* 17/40320 (pow x 2))))))))
(*.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)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(* 1/24 x)
(*.f64 #s(literal 1/24 binary64) x)
(* 1/24 x)
(*.f64 #s(literal 1/24 binary64) x)
(* 1/24 x)
(*.f64 #s(literal 1/24 binary64) x)
(* 1/24 x)
(*.f64 #s(literal 1/24 binary64) x)
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/24 (pow x 3))
(*.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/24 binary64))
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(* 1/24 x)
(*.f64 #s(literal 1/24 binary64) x)
(* 1/24 x)
(*.f64 #s(literal 1/24 binary64) x)
(* 1/24 x)
(*.f64 #s(literal 1/24 binary64) x)
(* 1/24 x)
(*.f64 #s(literal 1/24 binary64) x)
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/24 (pow x 3))
(*.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal 1/24 binary64))
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(* (pow x 3) (+ 1/24 (* 1/2 (/ 1 (pow x 2)))))
(*.f64 (fma.f64 (*.f64 x x) #s(literal 1/24 binary64) #s(literal 1/2 binary64)) x)
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(/ (- 1 (cos x)) (sin x))
(tan.f64 (*.f64 x #s(literal 1/2 binary64)))
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(* 1/24 x)
(*.f64 #s(literal 1/24 binary64) x)
(* 1/24 x)
(*.f64 #s(literal 1/24 binary64) x)
(* 1/24 x)
(*.f64 #s(literal 1/24 binary64) x)
(* 1/24 x)
(*.f64 #s(literal 1/24 binary64) x)
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))
(* 1/2 x)
(*.f64 x #s(literal 1/2 binary64))

rewrite200.0ms (3.8%)

Memory
-36.5MiB live, 222.8MiB 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>

eval33.0ms (0.6%)

Memory
21.1MiB live, 87.0MiB allocated
Compiler

Compiled 3 848 to 543 computations (85.9% saved)

prune18.0ms (0.3%)

Memory
-25.5MiB live, 26.2MiB 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 x #s(literal 1/2 binary64)))
6.9%
#s(literal 1 binary64)
Compiler

Compiled 68 to 46 computations (32.4% saved)

regimes6.0ms (0.1%)

Memory
16.6MiB live, 16.6MiB allocated
Counts
7 → 1
Calls
Call 1
Inputs
#s(literal 1 binary64)
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 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(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:

3.0ms
(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
3.0ms
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)

regimes6.0ms (0.1%)

Memory
-25.0MiB live, 14.3MiB allocated
Counts
5 → 2
Calls
Call 1
Inputs
#s(literal 1 binary64)
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 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(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:

3.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
8.7MiB live, 8.7MiB allocated
Counts
3 → 2
Calls
Call 1
Inputs
#s(literal 1 binary64)
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 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))
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
10.1MiB live, 10.1MiB allocated
Counts
2 → 2
Calls
Call 1
Inputs
#s(literal 1 binary64)
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64)))
Outputs
#s(approx (/ (- 1 (cos x)) (sin x)) (*.f64 x #s(literal 1/2 binary64)))
#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)

regimes3.0ms (0.1%)

Memory
7.2MiB live, 7.2MiB 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:

1.0ms
(/.f64 (-.f64 #s(literal 1 binary64) (cos.f64 x)) (sin.f64 x))
1.0ms
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)

bsearch154.0ms (2.9%)

Memory
9.3MiB live, 48.7MiB allocated
Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
153.0ms
2.170259495541874e-5
50.44192046136823
Samples
147.0ms144×0valid
Compiler

Compiled 118 to 118 computations (0% saved)

Precisions
Click to see histograms. Total time spent on operations: 144.0ms
ival-sin: 138.0ms (95.9% of total)
ival-cos: 4.0ms (2.8% of total)
ival-sub: 1.0ms (0.7% of total)
ival-div: 1.0ms (0.7% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

bsearch10.0ms (0.2%)

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

Compiled 100 to 109 computations (-9% saved)

bsearch10.0ms (0.2%)

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

Compiled 55 to 82 computations (-49.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 5.0ms
ival-cos: 2.0ms (42.6% of total)
ival-sin: 2.0ms (42.6% 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)

simplify25.0ms (0.5%)

Memory
-30.5MiB live, 48.1MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02665
13265
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 x #s(literal 1/2 binary64))) #s(literal 1 binary64))
#s(literal 1 binary64)
Outputs
(tan.f64 (*.f64 #s(literal 1/2 binary64) x))
(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 #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)) (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)

soundness714.0ms (13.5%)

Memory
2.5MiB live, 341.4MiB allocated
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01857
02652
18552
245452
3393140
01155740
079286
1224286
2555280
31661280
43000280
54254280
64606280
75336280
86824280
08376256
0615
01012
13912
224512
3235511
0888511
Stop Event
done
iter limit
node limit
iter limit
iter limit
node limit
iter limit
node limit
iter limit
Compiler

Compiled 127 to 88 computations (30.7% saved)

preprocess88.0ms (1.7%)

Memory
-13.2MiB live, 102.8MiB allocated
Remove

(negabs x)

Compiler

Compiled 126 to 78 computations (38.1% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...