Ryo Od
/
FloatingPointTest
floating point test
main.cpp
- Committer:
- ryood
- Date:
- 2017-11-19
- Revision:
- 1:48013e8906f5
- Parent:
- 0:1d7e5ce49ede
File content as of revision 1:48013e8906f5:
#include "mbed.h" #define LOOP_N (10000) float buffer[LOOP_N]; Timer t; void floatTest() { // 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("divf\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); } 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"); }