Newton's approximation - Benchmark based on Steve Curd Adruino IDE code for STM32 Nucleo F7 ARM M7 MCU's
main.cpp
- Committer:
- JovanEps
- Date:
- 2017-07-02
- Revision:
- 0:11c8121e645d
File content as of revision 0:11c8121e645d:
#include "mbed.h"
//********************************************************
//** ARM Cortex M7 MCU ******
//** ST Nucleo-144 Stm32F746 and Stm32F767 MCU ******
//** Newton's approximation - Benchmark based on ******
//** Steve Curd Adruino IDE code ******
//** Jovan Ivković - 2017. ******
//** JovanEps (jovan.eps@gmail.com). ******
//********************************************************
DigitalOut myled(LED1);
//DigitalOut PD13(PA_5); //introduce D13 pin-out
DigitalIn PD8(PF_12); //introduce D8 *-Clear port
Serial pc(USBTX, USBRX);
Timer timer;
#define ITERATIONS 10000000L // number of iterations 100k-10M
#define FFLASH 1000000 // blink LED every 100k-1M iterations
//#include <TM1638.h> // include the display library
// TM1638 module(DIO, CLK, STB0)
//TM1638 module(8, 9, 7);
//*********************************
//** MAIN block **
//*********************************
int main()
{
while(true) {
unsigned long start, ttime;
unsigned long niter = ITERATIONS;
int LEDcounter = 0;
bool alternate = false;
long i, count = 0;
double x = 1.0;
double temp, pi = 1.0;
pc.printf(" \n Beginning %d",niter );
pc.printf(" \n iterations...");
pc.printf("\n");
timer.start();
start = timer.read_ms();
for ( i = 2; i < niter; i++) {
x *= -1.0;
pi += x / (2.0f * (float) i - 1.0f);
// /*
if (LEDcounter++ > FFLASH) {
LEDcounter = 0;
if (alternate) {
myled = 1;
alternate = false;
} else {
myled = 0;
alternate = true;
}
temp = (float) 40000000.0 * pi;
//module.setDisplayToDecNumber( temp, 0x80);
}
//*/
}
ttime = timer.read_ms() - start;
pi = (double) pi * 4.0;
pc.printf("# of trials = %d \n", niter);
pc.printf("\n\n");
pc.printf("Estimate of pi = %6.10f 10 \n" , pi);
pc.printf("Time: %d ms \n", ttime);
printf("state: %d \n", alternate);
timer.stop();
wait(1);
}
}