floating point test

Dependencies:   mbed

Committer:
ryood
Date:
Thu Jun 01 18:53:16 2017 +0000
Revision:
0:1d7e5ce49ede
Child:
1:48013e8906f5
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ryood 0:1d7e5ce49ede 1 #include "mbed.h"
ryood 0:1d7e5ce49ede 2
ryood 0:1d7e5ce49ede 3 #define LOOP_N (10000)
ryood 0:1d7e5ce49ede 4
ryood 0:1d7e5ce49ede 5 float buffer[LOOP_N];
ryood 0:1d7e5ce49ede 6
ryood 0:1d7e5ce49ede 7 int main()
ryood 0:1d7e5ce49ede 8 {
ryood 0:1d7e5ce49ede 9 Timer t;
ryood 0:1d7e5ce49ede 10 printf("\r\nFloating Point Test\r\n");
ryood 0:1d7e5ce49ede 11 printf("op\ttotal\t1-p\r\n");
ryood 0:1d7e5ce49ede 12 printf("-------------------------------\r\n");
ryood 0:1d7e5ce49ede 13
ryood 0:1d7e5ce49ede 14 // div
ryood 0:1d7e5ce49ede 15 t.start();
ryood 0:1d7e5ce49ede 16 for (int i = 0; i < LOOP_N; i++) {
ryood 0:1d7e5ce49ede 17 buffer[i] = (float)i / LOOP_N;
ryood 0:1d7e5ce49ede 18 }
ryood 0:1d7e5ce49ede 19 t.stop();
ryood 0:1d7e5ce49ede 20 int elapse = t.read_us();
ryood 0:1d7e5ce49ede 21 printf("div\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N);
ryood 0:1d7e5ce49ede 22
ryood 0:1d7e5ce49ede 23 // sinf
ryood 0:1d7e5ce49ede 24 t.reset();
ryood 0:1d7e5ce49ede 25 t.start();
ryood 0:1d7e5ce49ede 26 for (int i = 0; i < LOOP_N; i++) {
ryood 0:1d7e5ce49ede 27 buffer[i] = sinf((float)i / LOOP_N);
ryood 0:1d7e5ce49ede 28 }
ryood 0:1d7e5ce49ede 29 t.stop();
ryood 0:1d7e5ce49ede 30 elapse = t.read_us();
ryood 0:1d7e5ce49ede 31 printf("sinf\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N);
ryood 0:1d7e5ce49ede 32
ryood 0:1d7e5ce49ede 33 // cosf
ryood 0:1d7e5ce49ede 34 t.reset();
ryood 0:1d7e5ce49ede 35 t.start();
ryood 0:1d7e5ce49ede 36 for (int i = 0; i < LOOP_N; i++) {
ryood 0:1d7e5ce49ede 37 buffer[i] = cosf((float)i / LOOP_N);
ryood 0:1d7e5ce49ede 38 }
ryood 0:1d7e5ce49ede 39 t.stop();
ryood 0:1d7e5ce49ede 40 elapse = t.read_us();
ryood 0:1d7e5ce49ede 41 printf("cosf\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N);
ryood 0:1d7e5ce49ede 42
ryood 0:1d7e5ce49ede 43 // expf
ryood 0:1d7e5ce49ede 44 t.reset();
ryood 0:1d7e5ce49ede 45 t.start();
ryood 0:1d7e5ce49ede 46 for (int i = 0; i < LOOP_N; i++) {
ryood 0:1d7e5ce49ede 47 buffer[i] = expf((float)i / LOOP_N);
ryood 0:1d7e5ce49ede 48 }
ryood 0:1d7e5ce49ede 49 t.stop();
ryood 0:1d7e5ce49ede 50 elapse = t.read_us();
ryood 0:1d7e5ce49ede 51 printf("expf\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N);
ryood 0:1d7e5ce49ede 52
ryood 0:1d7e5ce49ede 53 // logf
ryood 0:1d7e5ce49ede 54 t.reset();
ryood 0:1d7e5ce49ede 55 t.start();
ryood 0:1d7e5ce49ede 56 for (int i = 0; i < LOOP_N; i++) {
ryood 0:1d7e5ce49ede 57 buffer[i] = logf((float)i / LOOP_N);
ryood 0:1d7e5ce49ede 58 }
ryood 0:1d7e5ce49ede 59 t.stop();
ryood 0:1d7e5ce49ede 60 elapse = t.read_us();
ryood 0:1d7e5ce49ede 61 printf("logf\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N);
ryood 0:1d7e5ce49ede 62
ryood 0:1d7e5ce49ede 63 // sqrtf
ryood 0:1d7e5ce49ede 64 t.reset();
ryood 0:1d7e5ce49ede 65 t.start();
ryood 0:1d7e5ce49ede 66 for (int i = 0; i < LOOP_N; i++) {
ryood 0:1d7e5ce49ede 67 buffer[i] = sqrtf((float)i / LOOP_N);
ryood 0:1d7e5ce49ede 68 }
ryood 0:1d7e5ce49ede 69 t.stop();
ryood 0:1d7e5ce49ede 70 elapse = t.read_us();
ryood 0:1d7e5ce49ede 71 printf("sqrtf\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N);
ryood 0:1d7e5ce49ede 72
ryood 0:1d7e5ce49ede 73
ryood 0:1d7e5ce49ede 74 printf("\r\nEnd.\r\n");
ryood 0:1d7e5ce49ede 75 }