Project

General

Profile

Statistics
| Revision:

root / trunk / code / projects / fp_math / test / server_test.c @ 1602

History | View | Annotate | Download (1.2 KB)

1 1602 justin
2
#include <math.h>
3
#include <stdio.h>
4
#include <stdlib.h>
5
#include "serial.h"
6
7
#define X_IN 0
8
#define Y_OUT 1
9
10
#define FP_COS 2
11
#define FP_SIN 3
12
#define FP_TAN 4
13
14
#define EXIT 5
15
16
typedef union fp_t {
17
        char d[4];
18
        int v;
19
} fp_t;
20
21
int main(int argc, char** argv) {
22
23
        int fd, i, n = 0;
24
        float input, output, error, avg_error, max_error;
25
        fp_t fp_input, fp_output;
26
27
28
        fd = openport("/dev/ttyUSB0");
29
30
        printf("Beginning test loop.");
31
32
        while(1) {
33
34
                switch(getbyte(fd)) {
35
36
                case X_IN:
37
                        for(i=0; i < 4; i++)
38
                                fp_input.d[i] = getbyte(fd);
39
40
                        input = ((float)fp_input.v) / 65536.;
41
42
                        break;
43
44
                case Y_OUT:
45
                        for(i=0; i < 4; i++)
46
                                fp_output.d[i] = getbyte(fd);
47
48
                        output = ((float)fp_output.v) / 65536.;
49
50
                        break;
51
52
                case FP_COS:
53
54
                        n++;
55
                        printf("%f = cos(%f)\n", output, input);
56
                        error = abs(cos(input) - output);
57
                        if(error > max_error) max_error = error;
58
                        avg_error = (avg_error * (n - 1) + error) / n;
59
60
                        break;
61
62
                case FP_SIN:
63
64
                        break;
65
66
                case FP_TAN:
67
68
                        break;
69
70
                case EXIT:
71
72
                        printf("Average error: %f\n", avg_error);
73
                        printf("Max error: %f\n", max_error);
74
                        exit(EXIT_SUCCESS);
75
76
                        break;
77
78
                default: break;
79
                        printf("Uh oh - defauled\n");
80
81
                        break;
82
83
                }
84
        }
85
}
86
87