sin(PI*x)

Time bar (total: 40.4s)

start0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

analyze0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%25%75%0%0%0%0
100%25%0%75%0%0%0%1
Compiler

Compiled 12 to 8 computations (33.3% saved)

sample609.0ms (1.5%)

Memory
47.7MiB live, 265.8MiB allocated
Samples
321.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 171.0ms
ival-sinu: 103.0ms (60.2% of total)
ival-<=: 43.0ms (25.1% of total)
ival-and: 12.0ms (7% of total)
exact: 11.0ms (6.4% of total)
ival-assert: 3.0ms (1.8% of total)
Bogosity

explain100.0ms (0.2%)

Memory
42.0MiB live, 94.9MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-(sin.f64 (*.f64 (PI.f64) x))
00-0-(*.f64 (PI.f64) x)
00-0-(PI.f64)
00-0-x
Confusion
Predicted +Predicted -
+00
-0256
Precision
0/0
Recall
0/0
Confusion?
Predicted +Predicted MaybePredicted -
+000
-00256
Precision?
0/0
Recall?
0/0
Freqs
test
numberfreq
0256
Total Confusion?
Predicted +Predicted MaybePredicted -
+000
-001
Precision?
0/0
Recall?
0/0
Samples
71.0ms512×0valid
Compiler

Compiled 26 to 16 computations (38.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 13.0ms
ival-sinu: 7.0ms (54.2% of total)
ival-mult: 4.0ms (31% of total)
ival-pi: 2.0ms (15.5% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess46.0ms (0.1%)

Memory
-67.1MiB live, 5.5MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0611
11511
2309
3499
4749
5939
61079
71129
81189
91189
044
074
184
084
Stop Event
iter limit
saturated
iter limit
saturated
Calls
Call 1
Inputs
(sin.f64 (*.f64 (PI.f64) x))
Outputs
(sin.f64 (*.f64 (PI.f64) x))
(sin.f64 (*.f64 x (PI.f64)))
Symmetry

(negabs x)

Compiler

Compiled 4 to 4 computations (0% saved)

eval0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated
Compiler

Compiled 0 to 1 computations (-∞% saved)

prune0.0ms (0%)

Memory
0.3MiB live, 0.3MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.7%
(sin.f64 (*.f64 (PI.f64) x))
Compiler

Compiled 4 to 4 computations (0% saved)

simplify3.0ms (0%)

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

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff0
(PI.f64)
cost-diff0
(*.f64 (PI.f64) x)
cost-diff0
(sin.f64 (*.f64 (PI.f64) x))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
049
079
189
089
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
(sin.f64 (*.f64 (PI.f64) x))
(*.f64 (PI.f64) x)
(PI.f64)
x
Outputs
(sin.f64 (*.f64 (PI.f64) x))
(sin.f64 (*.f64 x (PI.f64)))
(*.f64 (PI.f64) x)
(*.f64 x (PI.f64))
(PI.f64)
x

localize16.0ms (0%)

Memory
5.9MiB live, 5.9MiB allocated
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(PI.f64)
accuracy0.01171875
(sin.f64 (*.f64 (PI.f64) x))
accuracy0.2109375
(*.f64 (PI.f64) x)
Samples
12.0ms256×0valid
Compiler

Compiled 11 to 6 computations (45.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 6.0ms
ival-sinu: 3.0ms (51.1% of total)
ival-mult: 2.0ms (34% of total)
ival-pi: 1.0ms (17% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series2.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Counts
3 → 5
Calls
Call 1
Inputs
(sin.f64 (*.f64 (PI.f64) x))
(*.f64 (PI.f64) x)
(PI.f64)
Outputs
(* x (PI))
(* x (+ (PI) (* -1/6 (* (pow x 2) (pow (PI) 3)))))
(* x (+ (PI) (* (pow x 2) (+ (* -1/6 (pow (PI) 3)) (* 1/120 (* (pow x 2) (pow (PI) 5)))))))
(* x (+ (PI) (* (pow x 2) (+ (* -1/6 (pow (PI) 3)) (* (pow x 2) (+ (* -1/5040 (* (pow x 2) (pow (PI) 7))) (* 1/120 (pow (PI) 5))))))))
(sin (* x (PI)))
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@0
((sin (* (PI) x)) (* (PI) x) (PI))
0.0ms
x
@inf
((sin (* (PI) x)) (* (PI) x) (PI))
0.0ms
x
@-inf
((sin (* (PI) x)) (* (PI) x) (PI))

simplify80.0ms (0.2%)

Memory
8.5MiB live, 8.5MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
03576
19776
231576
387270
4113970
5144770
6168270
7183570
8185570
9261070
10266670
11266670
12266670
13274770
14274970
0274964
Stop Event
iter limit
saturated
Counts
5 → 5
Calls
Call 1
Inputs
(* x (PI))
(* x (+ (PI) (* -1/6 (* (pow x 2) (pow (PI) 3)))))
(* x (+ (PI) (* (pow x 2) (+ (* -1/6 (pow (PI) 3)) (* 1/120 (* (pow x 2) (pow (PI) 5)))))))
(* x (+ (PI) (* (pow x 2) (+ (* -1/6 (pow (PI) 3)) (* (pow x 2) (+ (* -1/5040 (* (pow x 2) (pow (PI) 7))) (* 1/120 (pow (PI) 5))))))))
(sin (* x (PI)))
Outputs
(* x (PI))
(*.f64 (PI.f64) x)
(* x (+ (PI) (* -1/6 (* (pow x 2) (pow (PI) 3)))))
(fma.f64 (pow.f64 (*.f64 (PI.f64) x) #s(literal 3 binary64)) #s(literal -1/6 binary64) (*.f64 (PI.f64) x))
(* x (+ (PI) (* (pow x 2) (+ (* -1/6 (pow (PI) 3)) (* 1/120 (* (pow x 2) (pow (PI) 5)))))))
(fma.f64 (pow.f64 x #s(literal 5 binary64)) (*.f64 (pow.f64 (PI.f64) #s(literal 5 binary64)) #s(literal 1/120 binary64)) (fma.f64 (pow.f64 (*.f64 (PI.f64) x) #s(literal 3 binary64)) #s(literal -1/6 binary64) (*.f64 (PI.f64) x)))
(* x (+ (PI) (* (pow x 2) (+ (* -1/6 (pow (PI) 3)) (* (pow x 2) (+ (* -1/5040 (* (pow x 2) (pow (PI) 7))) (* 1/120 (pow (PI) 5))))))))
(fma.f64 (pow.f64 x #s(literal 7 binary64)) (*.f64 (pow.f64 (PI.f64) #s(literal 7 binary64)) #s(literal -1/5040 binary64)) (fma.f64 (pow.f64 x #s(literal 5 binary64)) (*.f64 (pow.f64 (PI.f64) #s(literal 5 binary64)) #s(literal 1/120 binary64)) (fma.f64 (pow.f64 (*.f64 (PI.f64) x) #s(literal 3 binary64)) #s(literal -1/6 binary64) (*.f64 (PI.f64) x))))
(sin (* x (PI)))
(sin.f64 (*.f64 (PI.f64) x))

rewrite61.0ms (0.2%)

Memory
12.8MiB live, 12.8MiB allocated
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
048
078
1238
21218
38134
460114
560784
663644
777274
080564
Stop Event
iter limit
node limit
iter limit
Counts
3 → 6
Calls
Call 1
Inputs
(sin.f64 (*.f64 (PI.f64) x))
(*.f64 (PI.f64) x)
(PI.f64)
Outputs
(sin.f64 x)
(*.f64 x (PI.f64))
(*.f64 (PI.f64) x)
x
(PI.f64)
#s(literal 1 binary64)

eval1.0ms (0%)

Memory
1.0MiB live, 1.0MiB allocated
Compiler

Compiled 109 to 34 computations (68.8% saved)

prune1.0ms (0%)

Memory
1.0MiB live, 1.0MiB allocated
Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New9211
Fresh000
Picked011
Done000
Total9312
Accuracy
99.7%
Counts
12 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.7%
(sin.f64 (*.f64 (PI.f64) x))
17.6%
(sin.f64 x)
98.0%
#s(approx (sin (* (PI) x)) (*.f64 (PI.f64) x))
Compiler

Compiled 14 to 13 computations (7.1% saved)

simplify3.0ms (0%)

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

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(sin.f64 x)
cost-diff0
(PI.f64)
cost-diff0
(*.f64 (PI.f64) x)
cost-diff0
#s(approx (sin (* (PI) x)) (*.f64 (PI.f64) x))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0816
01116
11216
01216
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
#s(approx (sin (* (PI) x)) (*.f64 (PI.f64) x))
(*.f64 (PI.f64) x)
(PI.f64)
x
(sin.f64 x)
x
Outputs
#s(approx (sin (* (PI) x)) (*.f64 (PI.f64) x))
(*.f64 (PI.f64) x)
(PI.f64)
x
(sin.f64 x)
x

localize19.0ms (0%)

Memory
7.1MiB live, 7.1MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(sin.f64 x)
accuracy0.0
(PI.f64)
accuracy0.2109375
(*.f64 (PI.f64) x)
accuracy1.0601052760903882
#s(approx (sin (* (PI) x)) (*.f64 (PI.f64) x))
Samples
14.0ms256×0valid
Compiler

Compiled 14 to 7 computations (50% saved)

Precisions
Click to see histograms. Total time spent on operations: 8.0ms
ival-sinu: 3.0ms (38.5% of total)
ival-mult: 2.0ms (25.7% of total)
ival-sin: 2.0ms (25.7% of total)
ival-pi: 1.0ms (12.8% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series1.0ms (0%)

Memory
0.6MiB live, 0.6MiB allocated
Counts
4 → 10
Calls
Call 1
Inputs
#s(approx (sin (* (PI) x)) (*.f64 (PI.f64) x))
(*.f64 (PI.f64) x)
(PI.f64)
(sin.f64 x)
Outputs
(* x (PI))
(* x (+ (PI) (* -1/6 (* (pow x 2) (pow (PI) 3)))))
(* x (+ (PI) (* (pow x 2) (+ (* -1/6 (pow (PI) 3)) (* 1/120 (* (pow x 2) (pow (PI) 5)))))))
(* x (+ (PI) (* (pow x 2) (+ (* -1/6 (pow (PI) 3)) (* (pow x 2) (+ (* -1/5040 (* (pow x 2) (pow (PI) 7))) (* 1/120 (pow (PI) 5))))))))
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))))
(sin (* x (PI)))
(sin x)
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@0
((sin (* (PI) x)) (* (PI) x) (PI) (sin x))
0.0ms
x
@-inf
((sin (* (PI) x)) (* (PI) x) (PI) (sin x))
0.0ms
x
@inf
((sin (* (PI) x)) (* (PI) x) (PI) (sin x))

simplify172.0ms (0.4%)

Memory
38.8MiB live, 38.8MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
053124
1149124
2423118
31352112
42096112
53160112
63853112
74093112
84368112
96359112
08224100
Stop Event
iter limit
node limit
Counts
10 → 9
Calls
Call 1
Inputs
(* x (PI))
(* x (+ (PI) (* -1/6 (* (pow x 2) (pow (PI) 3)))))
(* x (+ (PI) (* (pow x 2) (+ (* -1/6 (pow (PI) 3)) (* 1/120 (* (pow x 2) (pow (PI) 5)))))))
(* x (+ (PI) (* (pow x 2) (+ (* -1/6 (pow (PI) 3)) (* (pow x 2) (+ (* -1/5040 (* (pow x 2) (pow (PI) 7))) (* 1/120 (pow (PI) 5))))))))
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))))
(sin (* x (PI)))
(sin x)
Outputs
(* x (PI))
(*.f64 x (PI.f64))
(* x (+ (PI) (* -1/6 (* (pow x 2) (pow (PI) 3)))))
(fma.f64 (pow.f64 (*.f64 x (PI.f64)) #s(literal 3 binary64)) #s(literal -1/6 binary64) (*.f64 x (PI.f64)))
(* x (+ (PI) (* (pow x 2) (+ (* -1/6 (pow (PI) 3)) (* 1/120 (* (pow x 2) (pow (PI) 5)))))))
(fma.f64 (fma.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 (pow.f64 (PI.f64) #s(literal 5 binary64)) #s(literal 1/120 binary64)) (PI.f64)) x (*.f64 (pow.f64 (*.f64 x (PI.f64)) #s(literal 3 binary64)) #s(literal -1/6 binary64)))
(* x (+ (PI) (* (pow x 2) (+ (* -1/6 (pow (PI) 3)) (* (pow x 2) (+ (* -1/5040 (* (pow x 2) (pow (PI) 7))) (* 1/120 (pow (PI) 5))))))))
(fma.f64 (pow.f64 x #s(literal 5 binary64)) (fma.f64 (*.f64 (*.f64 (pow.f64 (PI.f64) #s(literal 7 binary64)) #s(literal -1/5040 binary64)) x) x (*.f64 (pow.f64 (PI.f64) #s(literal 5 binary64)) #s(literal 1/120 binary64))) (fma.f64 (pow.f64 (*.f64 x (PI.f64)) #s(literal 3 binary64)) #s(literal -1/6 binary64) (*.f64 x (PI.f64))))
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)
(sin (* x (PI)))
(sin.f64 (*.f64 x (PI.f64)))
(sin x)
(sin.f64 x)

rewrite103.0ms (0.3%)

Memory
-71.9MiB live, 10.2MiB allocated
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0814
01114
12714
212514
38068
459808
560478
663368
777028
084198
Stop Event
iter limit
node limit
iter limit
Counts
4 → 7
Calls
Call 1
Inputs
#s(approx (sin (* (PI) x)) (*.f64 (PI.f64) x))
(*.f64 (PI.f64) x)
(PI.f64)
(sin.f64 x)
Outputs
#s(approx (sin (* (PI) x)) x)
(*.f64 x (PI.f64))
(*.f64 (PI.f64) x)
x
(PI.f64)
#s(literal 1 binary64)
(sin.f64 x)

eval2.0ms (0%)

Memory
1.4MiB live, 1.4MiB allocated
Compiler

Compiled 182 to 53 computations (70.9% saved)

prune3.0ms (0%)

Memory
2.5MiB live, 2.5MiB allocated
Pruning

5 alts after pruning (2 fresh and 3 done)

PrunedKeptTotal
New14216
Fresh000
Picked022
Done011
Total14519
Accuracy
99.7%
Counts
19 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.7%
(sin.f64 (*.f64 (PI.f64) x))
17.6%
(sin.f64 x)
99.2%
#s(approx (sin (* (PI) x)) (fma.f64 (pow.f64 x #s(literal 5 binary64)) (fma.f64 (*.f64 (*.f64 (pow.f64 (PI.f64) #s(literal 7 binary64)) #s(literal -1/5040 binary64)) x) x (*.f64 (pow.f64 (PI.f64) #s(literal 5 binary64)) #s(literal 1/120 binary64))) (fma.f64 (pow.f64 (*.f64 x (PI.f64)) #s(literal 3 binary64)) #s(literal -1/6 binary64) (*.f64 x (PI.f64)))))
98.0%
#s(approx (sin (* (PI) x)) (*.f64 (PI.f64) x))
17.6%
#s(approx (sin (* (PI) x)) x)
Compiler

Compiled 106 to 69 computations (34.9% saved)

regimes5.0ms (0%)

Memory
5.6MiB live, 5.6MiB allocated
Counts
5 → 1
Calls
Call 1
Inputs
#s(approx (sin (* (PI) x)) x)
#s(approx (sin (* (PI) x)) (*.f64 (PI.f64) x))
(sin.f64 x)
(sin.f64 (*.f64 (PI.f64) x))
#s(approx (sin (* (PI) x)) (fma.f64 (pow.f64 x #s(literal 5 binary64)) (fma.f64 (*.f64 (*.f64 (pow.f64 (PI.f64) #s(literal 7 binary64)) #s(literal -1/5040 binary64)) x) x (*.f64 (pow.f64 (PI.f64) #s(literal 5 binary64)) #s(literal 1/120 binary64))) (fma.f64 (pow.f64 (*.f64 x (PI.f64)) #s(literal 3 binary64)) #s(literal -1/6 binary64) (*.f64 x (PI.f64)))))
Outputs
(sin.f64 (*.f64 (PI.f64) x))
Calls

3 calls:

2.0ms
(*.f64 (PI.f64) x)
2.0ms
(sin.f64 (*.f64 (PI.f64) x))
2.0ms
x
Results
AccuracySegmentsBranch
99.7%1x
99.7%1(sin.f64 (*.f64 (PI.f64) x))
99.7%1(*.f64 (PI.f64) x)
Compiler

Compiled 8 to 8 computations (0% saved)

regimes4.0ms (0%)

Memory
5.1MiB live, 5.1MiB allocated
Counts
3 → 1
Calls
Call 1
Inputs
#s(approx (sin (* (PI) x)) x)
#s(approx (sin (* (PI) x)) (*.f64 (PI.f64) x))
(sin.f64 x)
Outputs
#s(approx (sin (* (PI) x)) (*.f64 (PI.f64) x))
Calls

3 calls:

1.0ms
(sin.f64 (*.f64 (PI.f64) x))
1.0ms
(*.f64 (PI.f64) x)
1.0ms
x
Results
AccuracySegmentsBranch
98.0%1x
98.0%1(sin.f64 (*.f64 (PI.f64) x))
98.0%1(*.f64 (PI.f64) x)
Compiler

Compiled 8 to 8 computations (0% saved)

regimes3.0ms (0%)

Memory
4.5MiB live, 4.5MiB allocated
Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
#s(approx (sin (* (PI) x)) x)
Outputs
#s(approx (sin (* (PI) x)) x)
Calls

3 calls:

1.0ms
(sin.f64 (*.f64 (PI.f64) x))
1.0ms
(*.f64 (PI.f64) x)
1.0ms
x
Results
AccuracySegmentsBranch
17.6%1x
17.6%1(*.f64 (PI.f64) x)
17.6%1(sin.f64 (*.f64 (PI.f64) x))
Compiler

Compiled 8 to 8 computations (0% saved)

simplify11.0ms (0%)

Memory
5.1MiB live, 5.1MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0918
11018
Stop Event
saturated
Calls
Call 1
Inputs
(sin.f64 (*.f64 (PI.f64) x))
#s(approx (sin (* (PI) x)) (*.f64 (PI.f64) x))
#s(approx (sin (* (PI) x)) x)
Outputs
(sin.f64 (*.f64 (PI.f64) x))
#s(approx (sin (* (PI) x)) (*.f64 (PI.f64) x))
#s(approx (sin (* (PI) x)) x)

soundness39.2s (96.9%)

Memory
138.6MiB live, 212.8MiB allocated
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
03576
19776
231576
387270
4113970
5144770
6168270
7183570
8185570
9261070
10266670
11266670
12266670
13274770
14274970
0274964
0814
01114
12714
212514
38068
459808
560478
663368
777028
084198
Stop Event
fuel
iter limit
node limit
iter limit
iter limit
saturated
Compiler

Compiled 24 to 15 computations (37.5% saved)

preprocess22.0ms (0.1%)

Memory
14.4MiB live, 14.4MiB allocated
Remove

(negabs x)

Compiler

Compiled 60 to 42 computations (30% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...