Ryo Od
/
FloatingPointTest
floating point test
Diff: main.cpp
- Revision:
- 0:1d7e5ce49ede
- Child:
- 1:48013e8906f5
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Jun 01 18:53:16 2017 +0000 @@ -0,0 +1,75 @@ +#include "mbed.h" + +#define LOOP_N (10000) + +float buffer[LOOP_N]; + +int main() +{ + Timer t; + printf("\r\nFloating Point Test\r\n"); + printf("op\ttotal\t1-p\r\n"); + printf("-------------------------------\r\n"); + + // div + t.start(); + for (int i = 0; i < LOOP_N; i++) { + buffer[i] = (float)i / LOOP_N; + } + t.stop(); + int elapse = t.read_us(); + printf("div\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N); + + // sinf + t.reset(); + t.start(); + for (int i = 0; i < LOOP_N; i++) { + buffer[i] = sinf((float)i / LOOP_N); + } + t.stop(); + elapse = t.read_us(); + printf("sinf\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N); + + // cosf + t.reset(); + t.start(); + for (int i = 0; i < LOOP_N; i++) { + buffer[i] = cosf((float)i / LOOP_N); + } + t.stop(); + elapse = t.read_us(); + printf("cosf\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N); + + // expf + t.reset(); + t.start(); + for (int i = 0; i < LOOP_N; i++) { + buffer[i] = expf((float)i / LOOP_N); + } + t.stop(); + elapse = t.read_us(); + printf("expf\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N); + + // logf + t.reset(); + t.start(); + for (int i = 0; i < LOOP_N; i++) { + buffer[i] = logf((float)i / LOOP_N); + } + t.stop(); + elapse = t.read_us(); + printf("logf\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N); + + // sqrtf + t.reset(); + t.start(); + for (int i = 0; i < LOOP_N; i++) { + buffer[i] = sqrtf((float)i / LOOP_N); + } + t.stop(); + elapse = t.read_us(); + printf("sqrtf\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N); + + + printf("\r\nEnd.\r\n"); +}