Ryo Od
/
FloatingPointTest
floating point test
Diff: main.cpp
- Revision:
- 1:48013e8906f5
- Parent:
- 0:1d7e5ce49ede
--- a/main.cpp Thu Jun 01 18:53:16 2017 +0000 +++ b/main.cpp Sun Nov 19 00:50:55 2017 +0000 @@ -4,21 +4,19 @@ float buffer[LOOP_N]; -int main() +Timer t; + + +void floatTest() { - Timer t; - printf("\r\nFloating Point Test\r\n"); - printf("op\ttotal\t1-p\r\n"); - printf("-------------------------------\r\n"); - - // div + // divf 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); + printf("divf\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N); // sinf t.reset(); @@ -68,8 +66,83 @@ } t.stop(); elapse = t.read_us(); - printf("sqrtf\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N); - + printf("sqrtf\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N); +} + +void doubleTest() +{ + // div + t.start(); + for (int i = 0; i < LOOP_N; i++) { + buffer[i] = (double)i / LOOP_N; + } + t.stop(); + int elapse = t.read_us(); + printf("div\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N); + + // sin + t.reset(); + t.start(); + for (int i = 0; i < LOOP_N; i++) { + buffer[i] = sin((double)i / LOOP_N); + } + t.stop(); + elapse = t.read_us(); + printf("sin\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N); + + // cos + t.reset(); + t.start(); + for (int i = 0; i < LOOP_N; i++) { + buffer[i] = cos((double)i / LOOP_N); + } + t.stop(); + elapse = t.read_us(); + printf("cos\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N); + + // exp + t.reset(); + t.start(); + for (int i = 0; i < LOOP_N; i++) { + buffer[i] = exp((double)i / LOOP_N); + } + t.stop(); + elapse = t.read_us(); + printf("exp\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N); + + // log + t.reset(); + t.start(); + for (int i = 0; i < LOOP_N; i++) { + buffer[i] = log((double)i / LOOP_N); + } + t.stop(); + elapse = t.read_us(); + printf("log\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N); + + // sqrt + t.reset(); + t.start(); + for (int i = 0; i < LOOP_N; i++) { + buffer[i] = sqrt((double)i / LOOP_N); + } + t.stop(); + elapse = t.read_us(); + printf("sqrt\t%d\t%f\r\n", elapse, (float)elapse / LOOP_N); +} + +int main() +{ + printf("\r\nFloating Point Test\r\n"); + printf("float\r\n"); + printf("op\ttotal\t1-op\r\n"); + printf("-------------------------------\r\n"); + floatTest(); + + printf("\r\ndouble\r\n"); + printf("op\ttotal\t1-op\r\n"); + printf("-------------------------------\r\n"); + doubleTest(); printf("\r\nEnd.\r\n"); }