File: unravel-variance.c

package info (click to toggle)
frama-c 20140301%2Bneon%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 19,548 kB
  • ctags: 28,183
  • sloc: ml: 181,252; ansic: 13,776; makefile: 2,452; sh: 1,085; lisp: 178
file content (58 lines) | stat: -rw-r--r-- 2,131 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/* run.config
   OPT: -check -slice-calls printf1 -journal-disable -float-normal -remove-redundant-alarms -then-on 'Slicing export' -print
   OPT: -check -slice-calls printf2 -journal-disable -float-normal -remove-redundant-alarms -then-on 'Slicing export' -print
   OPT: -check -slice-calls printf3 -journal-disable -float-normal -remove-redundant-alarms -then-on 'Slicing export' -print
   OPT: -check -slice-calls printf4 -journal-disable -float-normal -remove-redundant-alarms -then-on 'Slicing export' -print
   OPT: -check -slice-calls printf5 -journal-disable -float-normal -remove-redundant-alarms -then-on 'Slicing export' -print
   */
/* Small example devired from examples given for UNRAVEL tool : */

int scanf (char const *, int * p);
int printf1 (char const *, int);
int printf2 (char const *, int);
int printf3 (char const *, int);
int printf4 (char const *, int);
int printf5 (char const *, int);

#define MAX 1024
main()
{
      float x[MAX];
      float var2, var3, var4 ;
      float var5, var1;
      float t1, t2;
      float ssq;
      float avg;
      float dev;
      int  i, n;
         t2 = 0 ;
         t1 = 0 ;
         ssq = 0 ;
         dev = 0;
         scanf ("%d", &n);
         for ( i = 0 ; i < n ; i = i + 1)
         {
           scanf ("%f", &x[i]);
           t1 = t1 + x[i];
           ssq = ssq + x[i] * x[i];
          }
         avg = t1 / n;
         var3 = (ssq  - n * avg * avg) / (n - 1);
         var4 = (ssq  - t1 * avg) / (n - 1);
         t1 = t1 * t1 / n;
         var2 = (ssq  -  t1 ) / (n - 1);
         t1 = 0 ;
         for ( i = 0 ; i < n ; i = i + 1)
         {
           dev = x[i] - avg ;
           t2 = t2 + dev ;
           t1 = t1 + dev * dev ;
         }
         var5 = (t1 - t2 * t2 / n ) / (n -1);
         var1 = t1 / (n - 1);
         printf1("variance (one pass, using square of sum): %f \n",var2);
         printf2("variance (one pass, using average): %f \n",var3);
         printf3("variance (one pass, using average, sum): %f \n",var4);
         printf4("variance (two pass, corrected): %f \n",var5);
         printf5("variance (two pass): %f \n",var1);
}