Graphics.Rasterific.Svg.PathConverter:segmentToBezier from rasterific-svg-0.2.3.1, A

Time bar (total: 1.7s)

start0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated

analyze182.0ms (10.6%)

Memory
-1.5MiB live, 229.3MiB 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 18 to 13 computations (27.8% saved)

sample1.1s (66.4%)

Memory
10.7MiB live, 1 602.2MiB allocated
Samples
856.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 672.0ms
ival-sin: 362.0ms (53.9% of total)
ival-mult: 153.0ms (22.8% of total)
ival-div: 139.0ms (20.7% of total)
exact: 10.0ms (1.5% of total)
ival-true: 6.0ms (0.9% of total)
ival-assert: 3.0ms (0.4% of total)
Bogosity

explain127.0ms (7.4%)

Memory
34.3MiB live, 190.1MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
620-2(-6.812195187839744e-159)(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
00-0-(*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
0126(1.50765641061592e+282)0-(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
00-0-#s(literal 8 binary64)
00-0-#s(literal 3 binary64)
00-0-(*.f64 x #s(literal 1/2 binary64))
00-0-(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
00-0-(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
00-0-(sin.f64 x)
00-0-#s(literal 1/2 binary64)
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
sin.f64(sin.f64 (*.f64 x #s(literal 1/2 binary64)))sensitivity1260
/.f64(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))u/n600
(*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))underflow60
Confusion
Predicted +Predicted -
+602
-12668
Precision
0.3225806451612903
Recall
0.967741935483871
Confusion?
Predicted +Predicted MaybePredicted -
+6002
-126068
Precision?
0.3225806451612903
Recall?
0.967741935483871
Freqs
test
numberfreq
070
1186
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
57.0ms512×0valid
Compiler

Compiled 179 to 48 computations (73.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 39.0ms
ival-sin: 22.0ms (56.9% of total)
ival-mult: 9.0ms (23.3% of total)
ival-div: 7.0ms (18.1% of total)
exact: 1.0ms (2.6% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess2.0ms (0.1%)

Memory
3.9MiB live, 3.9MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
Outputs
(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
Compiler

Compiled 16 to 11 computations (31.3% saved)

eval0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated
Compiler

Compiled 0 to 1 computations (-∞% saved)

prune1.0ms (0%)

Memory
1.3MiB live, 1.3MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
77.3%
(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
Compiler

Compiled 16 to 11 computations (31.3% saved)

simplify1.0ms (0%)

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

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
cost-diff0
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
cost-diff0
(*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
cost-diff0
(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
Calls
Call 1
Inputs
(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
(*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
#s(literal 8 binary64)
#s(literal 3 binary64)
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
(*.f64 x #s(literal 1/2 binary64))
x
#s(literal 1/2 binary64)
(sin.f64 x)
Outputs
(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
(*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
#s(literal 8 binary64)
#s(literal 3 binary64)
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
(*.f64 x #s(literal 1/2 binary64))
x
#s(literal 1/2 binary64)
(sin.f64 x)

localize40.0ms (2.3%)

Memory
-15.9MiB live, 58.2MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.00390625
(sin.f64 x)
accuracy0.22265625
(*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
accuracy0.3671875
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
accuracy14.32113526389757
(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
Samples
32.0ms256×0valid
Compiler

Compiled 108 to 24 computations (77.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 23.0ms
ival-sin: 14.0ms (61.5% of total)
ival-div: 4.0ms (17.6% of total)
ival-mult: 4.0ms (17.6% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series5.0ms (0.3%)

Memory
7.9MiB live, 7.9MiB allocated
Counts
5 → 20
Calls
Call 1
Inputs
(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
(*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
(sin.f64 x)
Outputs
(* 2/3 x)
(* x (+ 2/3 (* 1/18 (pow x 2))))
(* x (+ 2/3 (* (pow x 2) (+ 1/18 (* 1/180 (pow x 2))))))
(* x (+ 2/3 (* (pow x 2) (+ 1/18 (* (pow x 2) (+ 1/180 (* 17/30240 (pow x 2))))))))
(* 2/3 (pow x 2))
(* (pow x 2) (+ 2/3 (* -1/18 (pow x 2))))
(* (pow x 2) (+ 2/3 (* (pow x 2) (- (* 1/540 (pow x 2)) 1/18))))
(* (pow x 2) (+ 2/3 (* (pow x 2) (- (* (pow x 2) (+ 1/540 (* -1/30240 (pow x 2)))) 1/18))))
(* 4/3 x)
(* x (+ 4/3 (* -1/18 (pow x 2))))
(* x (+ 4/3 (* (pow x 2) (- (* 1/1440 (pow x 2)) 1/18))))
(* x (+ 4/3 (* (pow x 2) (- (* (pow x 2) (+ 1/1440 (* -1/241920 (pow x 2)))) 1/18))))
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))))
(* 8/3 (/ (pow (sin (* 1/2 x)) 2) (sin x)))
(* 8/3 (pow (sin (* 1/2 x)) 2))
(* 8/3 (sin (* 1/2 x)))
(sin x)
Calls

3 calls:

TimeVariablePointExpression
2.0ms
x
@-inf
((/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (* (/ 8 3) (sin (* x 1/2))) (/ 8 3) (sin x))
1.0ms
x
@inf
((/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (* (/ 8 3) (sin (* x 1/2))) (/ 8 3) (sin x))
1.0ms
x
@0
((/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (* (/ 8 3) (sin (* x 1/2))) (/ 8 3) (sin x))

simplify1.0ms (0%)

Memory
1.0MiB live, 1.0MiB allocated
Algorithm
egg-herbie
Counts
20 → 5
Calls
Call 1
Inputs
(* 2/3 x)
(* x (+ 2/3 (* 1/18 (pow x 2))))
(* x (+ 2/3 (* (pow x 2) (+ 1/18 (* 1/180 (pow x 2))))))
(* x (+ 2/3 (* (pow x 2) (+ 1/18 (* (pow x 2) (+ 1/180 (* 17/30240 (pow x 2))))))))
(* 2/3 (pow x 2))
(* (pow x 2) (+ 2/3 (* -1/18 (pow x 2))))
(* (pow x 2) (+ 2/3 (* (pow x 2) (- (* 1/540 (pow x 2)) 1/18))))
(* (pow x 2) (+ 2/3 (* (pow x 2) (- (* (pow x 2) (+ 1/540 (* -1/30240 (pow x 2)))) 1/18))))
(* 4/3 x)
(* x (+ 4/3 (* -1/18 (pow x 2))))
(* x (+ 4/3 (* (pow x 2) (- (* 1/1440 (pow x 2)) 1/18))))
(* x (+ 4/3 (* (pow x 2) (- (* (pow x 2) (+ 1/1440 (* -1/241920 (pow x 2)))) 1/18))))
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))))
(* 8/3 (/ (pow (sin (* 1/2 x)) 2) (sin x)))
(* 8/3 (pow (sin (* 1/2 x)) 2))
(* 8/3 (sin (* 1/2 x)))
(sin x)
Outputs
(* 2/3 x)
(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
(* x (+ 2/3 (* 1/18 (pow x 2))))
(*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(* x (+ 2/3 (* (pow x 2) (+ 1/18 (* 1/180 (pow x 2))))))
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(* x (+ 2/3 (* (pow x 2) (+ 1/18 (* (pow x 2) (+ 1/180 (* 17/30240 (pow x 2))))))))
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
(* 2/3 (pow x 2))
(sin.f64 x)

rewrite0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Counts
5 → 5
Calls
Call 1
Inputs
(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
(*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
(sin.f64 x)
Outputs
(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
(*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
(sin.f64 x)

eval1.0ms (0.1%)

Memory
2.3MiB live, 2.3MiB allocated
Compiler

Compiled 207 to 27 computations (87% saved)

prune2.0ms (0.1%)

Memory
4.5MiB live, 4.5MiB allocated
Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New6410
Fresh000
Picked011
Done000
Total6511
Accuracy
80.0%
Counts
11 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
77.3%
(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
6.6%
(/.f64 #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x)) (sin.f64 x))
6.4%
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)))
15.1%
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
8.5%
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
Compiler

Compiled 110 to 77 computations (30% saved)

simplify1.0ms (0.1%)

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

Found 13 expressions of interest:

NewMetricScoreProgram
cost-diff0
(sin.f64 x)
cost-diff0
#s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x))
cost-diff0
(/.f64 #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x)) (sin.f64 x))
cost-diff0
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
cost-diff0
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)))
cost-diff0
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
cost-diff0
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
cost-diff0
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
cost-diff0
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
cost-diff0
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
cost-diff0
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
cost-diff0
(*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
cost-diff0
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
Calls
Call 1
Inputs
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
(*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
#s(literal 8 binary64)
#s(literal 3 binary64)
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
(*.f64 x #s(literal 1/2 binary64))
x
#s(literal 1/2 binary64)
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
#s(literal 8 binary64)
#s(literal 3 binary64)
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
(*.f64 x #s(literal 1/2 binary64))
x
#s(literal 1/2 binary64)
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)))
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
#s(literal 8 binary64)
#s(literal 3 binary64)
(/.f64 #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x)) (sin.f64 x))
#s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x))
(sin.f64 x)
x
Outputs
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
(*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
#s(literal 8 binary64)
#s(literal 3 binary64)
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
(*.f64 x #s(literal 1/2 binary64))
x
#s(literal 1/2 binary64)
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
#s(literal 8 binary64)
#s(literal 3 binary64)
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
(*.f64 x #s(literal 1/2 binary64))
x
#s(literal 1/2 binary64)
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)))
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
#s(literal 8 binary64)
#s(literal 3 binary64)
(/.f64 #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x)) (sin.f64 x))
#s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x))
(sin.f64 x)
x

localize52.0ms (3.1%)

Memory
0.7MiB live, 80.6MiB allocated
Localize:

Found 13 expressions of interest:

NewMetricScoreProgram
accuracy0.00390625
(sin.f64 x)
accuracy14.32113526389757
(/.f64 #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x)) (sin.f64 x))
accuracy59.09496949247669
#s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x))
accuracy0.0
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
accuracy59.88746470605214
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)))
accuracy0.0
(*.f64 x #s(literal 1/2 binary64))
accuracy0.0
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
accuracy0.3671875
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
accuracy54.33482900110065
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
accuracy0.0
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
accuracy0.22265625
(*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
accuracy0.3671875
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
accuracy58.55796263255368
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
Samples
35.0ms256×0valid
Compiler

Compiled 319 to 38 computations (88.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 19.0ms
ival-sin: 10.0ms (53.1% of total)
ival-div: 4.0ms (21.3% of total)
ival-mult: 4.0ms (21.3% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series10.0ms (0.6%)

Memory
-28.9MiB live, 7.9MiB allocated
Counts
11 → 25
Calls
Call 1
Inputs
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
(*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)))
(/.f64 #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x)) (sin.f64 x))
#s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x))
(sin.f64 x)
(*.f64 x #s(literal 1/2 binary64))
Outputs
(* 2/3 x)
(* x (+ 2/3 (* 1/18 (pow x 2))))
(* x (+ 2/3 (* (pow x 2) (+ 1/18 (* 1/180 (pow x 2))))))
(* x (+ 2/3 (* (pow x 2) (+ 1/18 (* (pow x 2) (+ 1/180 (* 17/30240 (pow x 2))))))))
(* 2/3 (pow x 2))
(* (pow x 2) (+ 2/3 (* -1/18 (pow x 2))))
(* (pow x 2) (+ 2/3 (* (pow x 2) (- (* 1/540 (pow x 2)) 1/18))))
(* (pow x 2) (+ 2/3 (* (pow x 2) (- (* (pow x 2) (+ 1/540 (* -1/30240 (pow x 2)))) 1/18))))
(* 4/3 x)
(* x (+ 4/3 (* -1/18 (pow x 2))))
(* x (+ 4/3 (* (pow x 2) (- (* 1/1440 (pow x 2)) 1/18))))
(* x (+ 4/3 (* (pow x 2) (- (* (pow x 2) (+ 1/1440 (* -1/241920 (pow x 2)))) 1/18))))
(* 1/2 x)
(* x (+ 1/2 (* -1/48 (pow x 2))))
(* x (+ 1/2 (* (pow x 2) (- (* 1/3840 (pow x 2)) 1/48))))
(* x (+ 1/2 (* (pow x 2) (- (* (pow x 2) (+ 1/3840 (* -1/645120 (pow x 2)))) 1/48))))
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))))
(* 8/3 (/ (pow (sin (* 1/2 x)) 2) (sin x)))
(* 8/3 (pow (sin (* 1/2 x)) 2))
(* 8/3 (sin (* 1/2 x)))
(sin (* 1/2 x))
(sin x)
Calls

3 calls:

TimeVariablePointExpression
7.0ms
x
@inf
((/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (* (/ 8 3) (sin (* x 1/2))) (/ 8 3) (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (sin (* x 1/2)) (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x) (* x 1/2))
1.0ms
x
@-inf
((/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (* (/ 8 3) (sin (* x 1/2))) (/ 8 3) (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (sin (* x 1/2)) (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x) (* x 1/2))
1.0ms
x
@0
((/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (* (/ 8 3) (sin (* x 1/2))) (/ 8 3) (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (sin (* x 1/2)) (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x) (* x 1/2))

simplify1.0ms (0%)

Memory
1.5MiB live, 1.5MiB allocated
Algorithm
egg-herbie
Counts
25 → 11
Calls
Call 1
Inputs
(* 2/3 x)
(* x (+ 2/3 (* 1/18 (pow x 2))))
(* x (+ 2/3 (* (pow x 2) (+ 1/18 (* 1/180 (pow x 2))))))
(* x (+ 2/3 (* (pow x 2) (+ 1/18 (* (pow x 2) (+ 1/180 (* 17/30240 (pow x 2))))))))
(* 2/3 (pow x 2))
(* (pow x 2) (+ 2/3 (* -1/18 (pow x 2))))
(* (pow x 2) (+ 2/3 (* (pow x 2) (- (* 1/540 (pow x 2)) 1/18))))
(* (pow x 2) (+ 2/3 (* (pow x 2) (- (* (pow x 2) (+ 1/540 (* -1/30240 (pow x 2)))) 1/18))))
(* 4/3 x)
(* x (+ 4/3 (* -1/18 (pow x 2))))
(* x (+ 4/3 (* (pow x 2) (- (* 1/1440 (pow x 2)) 1/18))))
(* x (+ 4/3 (* (pow x 2) (- (* (pow x 2) (+ 1/1440 (* -1/241920 (pow x 2)))) 1/18))))
(* 1/2 x)
(* x (+ 1/2 (* -1/48 (pow x 2))))
(* x (+ 1/2 (* (pow x 2) (- (* 1/3840 (pow x 2)) 1/48))))
(* x (+ 1/2 (* (pow x 2) (- (* (pow x 2) (+ 1/3840 (* -1/645120 (pow x 2)))) 1/48))))
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))))
(* 8/3 (/ (pow (sin (* 1/2 x)) 2) (sin x)))
(* 8/3 (pow (sin (* 1/2 x)) 2))
(* 8/3 (sin (* 1/2 x)))
(sin (* 1/2 x))
(sin x)
Outputs
(* 2/3 x)
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
(* x (+ 2/3 (* 1/18 (pow x 2))))
(*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(* x (+ 2/3 (* (pow x 2) (+ 1/18 (* 1/180 (pow x 2))))))
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(* x (+ 2/3 (* (pow x 2) (+ 1/18 (* (pow x 2) (+ 1/180 (* 17/30240 (pow x 2))))))))
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
(* 2/3 (pow x 2))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
(* (pow x 2) (+ 2/3 (* -1/18 (pow x 2))))
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
(* (pow x 2) (+ 2/3 (* (pow x 2) (- (* 1/540 (pow x 2)) 1/18))))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)))
(* (pow x 2) (+ 2/3 (* (pow x 2) (- (* (pow x 2) (+ 1/540 (* -1/30240 (pow x 2)))) 1/18))))
(/.f64 #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x)) (sin.f64 x))
(* 4/3 x)
#s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x))
(* x (+ 4/3 (* -1/18 (pow x 2))))
(sin.f64 x)
(* x (+ 4/3 (* (pow x 2) (- (* 1/1440 (pow x 2)) 1/18))))
(*.f64 x #s(literal 1/2 binary64))

rewrite1.0ms (0%)

Memory
1.8MiB live, 1.8MiB allocated
Counts
11 → 11
Calls
Call 1
Inputs
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
(*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)))
(/.f64 #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x)) (sin.f64 x))
#s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x))
(sin.f64 x)
(*.f64 x #s(literal 1/2 binary64))
Outputs
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
(*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(/.f64 #s(literal 8 binary64) #s(literal 3 binary64))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)))
(/.f64 #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x)) (sin.f64 x))
#s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x))
(sin.f64 x)
(*.f64 x #s(literal 1/2 binary64))

eval3.0ms (0.2%)

Memory
7.6MiB live, 7.6MiB allocated
Compiler

Compiled 933 to 46 computations (95.1% saved)

prune4.0ms (0.3%)

Memory
10.7MiB live, 10.7MiB allocated
Pruning

8 alts after pruning (3 fresh and 5 done)

PrunedKeptTotal
New27330
Fresh000
Picked044
Done011
Total27835
Accuracy
80.5%
Counts
35 → 8
Alt Table
Click to see full alt table
StatusAccuracyProgram
77.3%
(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
6.6%
(/.f64 #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x)) (sin.f64 x))
6.4%
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)))
15.1%
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
8.5%
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
12.2%
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64))))
19.8%
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x)))
15.9%
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
Compiler

Compiled 202 to 122 computations (39.6% saved)

simplify1.0ms (0%)

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

Found 10 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 x #s(literal 1/2 binary64))
cost-diff0
#s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64)))
cost-diff0
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64))))
cost-diff0
(sin.f64 x)
cost-diff0
#s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x))
cost-diff0
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x)))
cost-diff0
(*.f64 x #s(literal 1/2 binary64))
cost-diff0
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
cost-diff0
#s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
cost-diff0
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
Calls
Call 1
Inputs
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
#s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
(*.f64 x #s(literal 1/2 binary64))
x
#s(literal 1/2 binary64)
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x)))
#s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x))
(sin.f64 x)
x
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64))))
#s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64)))
(*.f64 x #s(literal 1/2 binary64))
x
#s(literal 1/2 binary64)
Outputs
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
#s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
(*.f64 x #s(literal 1/2 binary64))
x
#s(literal 1/2 binary64)
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x)))
#s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x))
(sin.f64 x)
x
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64))))
#s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64)))
(*.f64 x #s(literal 1/2 binary64))
x
#s(literal 1/2 binary64)

localize50.0ms (2.9%)

Memory
-0.2MiB live, 75.5MiB allocated
Localize:

Found 10 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 x #s(literal 1/2 binary64))
accuracy54.33482900110065
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64))))
accuracy57.21910735291053
#s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64)))
accuracy0.00390625
(sin.f64 x)
accuracy53.83393467697283
#s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x))
accuracy54.33482900110065
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x)))
accuracy0.0
(*.f64 x #s(literal 1/2 binary64))
accuracy0.0
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
accuracy58.55796263255368
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
accuracy58.70767003559877
#s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
Samples
36.0ms256×0valid
Compiler

Compiled 246 to 34 computations (86.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 19.0ms
ival-sin: 10.0ms (53.1% of total)
ival-div: 4.0ms (21.3% of total)
ival-mult: 4.0ms (21.3% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series3.0ms (0.2%)

Memory
6.6MiB live, 6.6MiB allocated
Counts
9 → 25
Calls
Call 1
Inputs
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
#s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
(*.f64 x #s(literal 1/2 binary64))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x)))
#s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x))
(sin.f64 x)
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64))))
#s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64)))
Outputs
(* 2/3 x)
(* x (+ 2/3 (* 1/18 (pow x 2))))
(* x (+ 2/3 (* (pow x 2) (+ 1/18 (* 1/180 (pow x 2))))))
(* x (+ 2/3 (* (pow x 2) (+ 1/18 (* (pow x 2) (+ 1/180 (* 17/30240 (pow x 2))))))))
(* 2/3 (pow x 2))
(* (pow x 2) (+ 2/3 (* -1/18 (pow x 2))))
(* (pow x 2) (+ 2/3 (* (pow x 2) (- (* 1/540 (pow x 2)) 1/18))))
(* (pow x 2) (+ 2/3 (* (pow x 2) (- (* (pow x 2) (+ 1/540 (* -1/30240 (pow x 2)))) 1/18))))
(* 1/2 x)
(* x (+ 1/2 (* -1/48 (pow x 2))))
(* x (+ 1/2 (* (pow x 2) (- (* 1/3840 (pow x 2)) 1/48))))
(* x (+ 1/2 (* (pow x 2) (- (* (pow x 2) (+ 1/3840 (* -1/645120 (pow x 2)))) 1/48))))
(* 4/3 x)
(* x (+ 4/3 (* -1/18 (pow x 2))))
(* x (+ 4/3 (* (pow x 2) (- (* 1/1440 (pow x 2)) 1/18))))
(* x (+ 4/3 (* (pow x 2) (- (* (pow x 2) (+ 1/1440 (* -1/241920 (pow x 2)))) 1/18))))
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))))
(* 8/3 (/ (pow (sin (* 1/2 x)) 2) (sin x)))
(* 8/3 (pow (sin (* 1/2 x)) 2))
(sin (* 1/2 x))
(* 8/3 (sin (* 1/2 x)))
(sin x)
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
((/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin (* x 1/2)) (* x 1/2) (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (* (/ 8 3) (sin (* x 1/2))) (sin x) (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (* (/ 8 3) (sin (* x 1/2))))
1.0ms
x
@inf
((/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin (* x 1/2)) (* x 1/2) (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (* (/ 8 3) (sin (* x 1/2))) (sin x) (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (* (/ 8 3) (sin (* x 1/2))))
0.0ms
x
@0
((/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin (* x 1/2)) (* x 1/2) (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (* (/ 8 3) (sin (* x 1/2))) (sin x) (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (* (/ 8 3) (sin (* x 1/2))))

simplify1.0ms (0%)

Memory
1.4MiB live, 1.4MiB allocated
Algorithm
egg-herbie
Counts
25 → 9
Calls
Call 1
Inputs
(* 2/3 x)
(* x (+ 2/3 (* 1/18 (pow x 2))))
(* x (+ 2/3 (* (pow x 2) (+ 1/18 (* 1/180 (pow x 2))))))
(* x (+ 2/3 (* (pow x 2) (+ 1/18 (* (pow x 2) (+ 1/180 (* 17/30240 (pow x 2))))))))
(* 2/3 (pow x 2))
(* (pow x 2) (+ 2/3 (* -1/18 (pow x 2))))
(* (pow x 2) (+ 2/3 (* (pow x 2) (- (* 1/540 (pow x 2)) 1/18))))
(* (pow x 2) (+ 2/3 (* (pow x 2) (- (* (pow x 2) (+ 1/540 (* -1/30240 (pow x 2)))) 1/18))))
(* 1/2 x)
(* x (+ 1/2 (* -1/48 (pow x 2))))
(* x (+ 1/2 (* (pow x 2) (- (* 1/3840 (pow x 2)) 1/48))))
(* x (+ 1/2 (* (pow x 2) (- (* (pow x 2) (+ 1/3840 (* -1/645120 (pow x 2)))) 1/48))))
(* 4/3 x)
(* x (+ 4/3 (* -1/18 (pow x 2))))
(* x (+ 4/3 (* (pow x 2) (- (* 1/1440 (pow x 2)) 1/18))))
(* x (+ 4/3 (* (pow x 2) (- (* (pow x 2) (+ 1/1440 (* -1/241920 (pow x 2)))) 1/18))))
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))))
(* 8/3 (/ (pow (sin (* 1/2 x)) 2) (sin x)))
(* 8/3 (pow (sin (* 1/2 x)) 2))
(sin (* 1/2 x))
(* 8/3 (sin (* 1/2 x)))
(sin x)
Outputs
(* 2/3 x)
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
(* x (+ 2/3 (* 1/18 (pow x 2))))
#s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(* x (+ 2/3 (* (pow x 2) (+ 1/18 (* 1/180 (pow x 2))))))
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
(* x (+ 2/3 (* (pow x 2) (+ 1/18 (* (pow x 2) (+ 1/180 (* 17/30240 (pow x 2))))))))
(*.f64 x #s(literal 1/2 binary64))
(* 2/3 (pow x 2))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x)))
(* (pow x 2) (+ 2/3 (* -1/18 (pow x 2))))
#s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x))
(* (pow x 2) (+ 2/3 (* (pow x 2) (- (* 1/540 (pow x 2)) 1/18))))
(sin.f64 x)
(* (pow x 2) (+ 2/3 (* (pow x 2) (- (* (pow x 2) (+ 1/540 (* -1/30240 (pow x 2)))) 1/18))))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64))))
(* 1/2 x)
#s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64)))

rewrite1.0ms (0%)

Memory
1.3MiB live, 1.3MiB allocated
Counts
9 → 9
Calls
Call 1
Inputs
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
#s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
(*.f64 x #s(literal 1/2 binary64))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x)))
#s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x))
(sin.f64 x)
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64))))
#s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64)))
Outputs
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
#s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 (*.f64 x #s(literal 1/2 binary64))))
(sin.f64 (*.f64 x #s(literal 1/2 binary64)))
(*.f64 x #s(literal 1/2 binary64))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x)))
#s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x))
(sin.f64 x)
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64))))
#s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64)))

eval2.0ms (0.1%)

Memory
4.6MiB live, 4.6MiB allocated
Compiler

Compiled 646 to 35 computations (94.6% saved)

prune13.0ms (0.7%)

Memory
-30.5MiB live, 17.3MiB allocated
Pruning

8 alts after pruning (0 fresh and 8 done)

PrunedKeptTotal
New18018
Fresh000
Picked033
Done055
Total18826
Accuracy
80.5%
Counts
26 → 8
Alt Table
Click to see full alt table
StatusAccuracyProgram
77.3%
(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
6.6%
(/.f64 #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x)) (sin.f64 x))
6.4%
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)))
15.1%
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
8.5%
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
12.2%
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64))))
19.8%
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x)))
15.9%
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
Compiler

Compiled 404 to 154 computations (61.9% saved)

regimes7.0ms (0.4%)

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

2 calls:

3.0ms
(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
3.0ms
x
Results
AccuracySegmentsBranch
80.5%3x
80.5%3(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
Compiler

Compiled 17 to 12 computations (29.4% saved)

regimes10.0ms (0.6%)

Memory
-23.8MiB live, 14.4MiB allocated
Counts
7 → 1
Calls
Call 1
Inputs
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64))))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x)))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
(/.f64 #s(approx (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin.f64 x)) (sin.f64 x))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))))
Outputs
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x)))
Calls

2 calls:

6.0ms
x
3.0ms
(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
Results
AccuracySegmentsBranch
19.8%1x
19.8%1(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
Compiler

Compiled 17 to 12 computations (29.4% saved)

regimes3.0ms (0.2%)

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

2 calls:

1.0ms
(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
1.0ms
x
Results
AccuracySegmentsBranch
15.3%2(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
12.2%1x
Compiler

Compiled 17 to 12 computations (29.4% saved)

regimes2.0ms (0.1%)

Memory
3.8MiB live, 3.8MiB allocated
Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

Counts
1 → 1
Calls
Call 1
Inputs
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64))))
Outputs
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64))))
Calls

1 calls:

1.0ms
(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
Results
AccuracySegmentsBranch
12.2%1(/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))
Compiler

Compiled 16 to 11 computations (31.3% saved)

bsearch1.0ms (0%)

Memory
1.1MiB live, 1.1MiB allocated
Algorithm
left-value
Steps
TimeLeftRight
0.0ms
-0.0
2.8018086940986535e-151
0.0ms
-4.541463153804241e-159
-0.0
Compiler

Compiled 19 to 15 computations (21.1% saved)

bsearch0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Algorithm
left-value
Steps
TimeLeftRight
0.0ms
3.831494924123177e-8
0.0008286669582209398
Compiler

Compiled 19 to 15 computations (21.1% saved)

simplify5.0ms (0.3%)

Memory
13.1MiB live, 13.1MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(if (<=.f64 (/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x)) #s(literal -7914572847139345/1978643211784836272484020168157177520281050792809694719312504448743177800852254937362531208489944359916781371408129114714810920274454009679740369240815145343332854177189593088 binary64)) (/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x)) (if (<=.f64 (/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x)) #s(literal 0 binary64)) #s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64)))) (/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x)))
(if (<=.f64 (/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x)) #s(literal 944473296573929/18889465931478580854784 binary64)) #s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64)))) #s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (/.f64 #s(literal 8 binary64) #s(literal 3 binary64))))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64))))
Outputs
(if (<=.f64 (/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x)) #s(literal -7914572847139345/1978643211784836272484020168157177520281050792809694719312504448743177800852254937362531208489944359916781371408129114714810920274454009679740369240815145343332854177189593088 binary64)) (/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x)) (if (<=.f64 (/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x)) #s(literal 0 binary64)) #s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64)))) (/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x))))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (sin.f64 x)))
(if (<=.f64 (/.f64 (*.f64 (*.f64 (/.f64 #s(literal 8 binary64) #s(literal 3 binary64)) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 (*.f64 x #s(literal 1/2 binary64)))) (sin.f64 x)) #s(literal 944473296573929/18889465931478580854784 binary64)) #s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64)))) #s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) (/.f64 #s(literal 8 binary64) #s(literal 3 binary64))))
#s(approx (/ (* (* (/ 8 3) (sin (* x 1/2))) (sin (* x 1/2))) (sin x)) #s(approx (* (/ 8 3) (sin (* x 1/2))) (*.f64 x #s(literal 1/2 binary64))))

soundness1.0ms (0.1%)

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

Compiled 224 to 35 computations (84.4% saved)

preprocess42.0ms (2.5%)

Memory
-46.5MiB live, 90.0MiB allocated
Compiler

Compiled 512 to 114 computations (77.7% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...