GY-63_MS5611/libraries/Prandom/examples/test_range/test_range.ino
2021-12-23 20:43:00 +01:00

534 lines
9.9 KiB
C++

//
// FILE: test_range.ino
// AUTHOR: Rob Tillaart
// PURPOSE: demo
// DATE: 2020-05-13
#include "Prandom.h"
const int runs = 1000;
Prandom R;
uint32_t start, stop;
void setup()
{
Serial.begin(115200);
Serial.println(__FILE__);
Serial.println();
Serial.println(F("TIME\tSUM\t\tSSQ\t\tMIN\tMAX\t\tFunction"));
for (int i = 0; i < 70; i++) Serial.print('=');
Serial.println();
test_randrange_1();
test_randrange_2();
test_randrange_3();
Serial.println();
test_random_0();
test_random_1();
test_uniform_2();
test_triangular_0();
test_normalvariate_2();
test_lognormvariate_2();
test_gauss_2();
test_expovariate_1();
test_gammavariate_2();
test_betavariate_2();
test_paretovariate_1();
test_weibullvariate_2();
test_vonmisesvariate_2();
Serial.println("\nDone...");
}
void loop() {}
void test_randrange_1()
{
float sum = 0;
float sqsum = 0;
float _min = 1e20;
float _max = -1e20;
start = micros();
for (int i = 0; i < runs; i++)
{
float x = R.randrange(100);
if (x < _min) _min = x;
if (x > _max) _max = x;
sum += x;
sqsum += x * x;
}
stop = micros();
Serial.print(stop - start);
Serial.print("\t");
Serial.print(sum);
Serial.print("\t");
Serial.print(sqsum);
Serial.print("\t");
Serial.print(_min);
Serial.print("\t");
Serial.print(_max);
Serial.print("\t");
Serial.println(__FUNCTION__);
}
void test_randrange_2()
{
float sum = 0;
float sqsum = 0;
float _min = 1e20;
float _max = -1e20;
start = micros();
for (int i = 0; i < runs; i++)
{
float x = R.randrange(100, 200);
if (x < _min) _min = x;
if (x > _max) _max = x;
sum += x;
sqsum += x * x;
}
stop = micros();
Serial.print(stop - start);
Serial.print("\t");
Serial.print(sum);
Serial.print("\t");
Serial.print(sqsum);
Serial.print("\t");
Serial.print(_min);
Serial.print("\t");
Serial.print(_max);
Serial.print("\t\t");
Serial.println(__FUNCTION__);
}
void test_randrange_3()
{
float sum = 0;
float sqsum = 0;
float _min = 1e20;
float _max = -1e20;
start = micros();
for (int i = 0; i < runs; i++)
{
float x = R.randrange(100, 200, 5);
if (x < _min) _min = x;
if (x > _max) _max = x;
sum += x;
sqsum += x * x;
}
stop = micros();
Serial.print(stop - start);
Serial.print("\t");
Serial.print(sum);
Serial.print("\t");
Serial.print(sqsum);
Serial.print("\t");
Serial.print(_min);
Serial.print("\t");
Serial.print(_max);
Serial.print("\t\t");
Serial.println(__FUNCTION__);
}
void test_random_0()
{
float sum = 0;
float sqsum = 0;
float _min = 1e20;
float _max = -1e20;
start = micros();
for (int i = 0; i < runs; i++)
{
float x = R.random();
if (x < _min) _min = x;
if (x > _max) _max = x;
sum += x;
sqsum += x * x;
}
stop = micros();
Serial.print(stop - start);
Serial.print("\t");
Serial.print(sum);
Serial.print("\t\t");
Serial.print(sqsum);
Serial.print("\t\t");
Serial.print(_min);
Serial.print("\t");
Serial.print(_max);
Serial.print("\t\t");
Serial.println(__FUNCTION__);
}
void test_random_1()
{
float sum = 0;
float sqsum = 0;
float _min = 1e20;
float _max = -1e20;
start = micros();
for (int i = 0; i < runs; i++)
{
float x = R.random(4);
if (x < _min) _min = x;
if (x > _max) _max = x;
sum += x;
sqsum += x * x;
}
stop = micros();
Serial.print(stop - start);
Serial.print("\t");
Serial.print(sum);
Serial.print("\t\t");
Serial.print(sqsum);
Serial.print("\t\t");
Serial.print(_min);
Serial.print("\t");
Serial.print(_max);
Serial.print("\t\t");
Serial.println(__FUNCTION__);
}
void test_uniform_2()
{
float sum = 0;
float sqsum = 0;
float _min = 1e20;
float _max = -1e20;
start = micros();
for (int i = 0; i < runs; i++)
{
float x = R.uniform(EULER, PI);
if (x < _min) _min = x;
if (x > _max) _max = x;
sum += x;
sqsum += x * x;
}
stop = micros();
Serial.print(stop - start);
Serial.print("\t");
Serial.print(sum);
Serial.print("\t\t");
Serial.print(sqsum);
Serial.print("\t\t");
Serial.print(_min);
Serial.print("\t");
Serial.print(_max);
Serial.print("\t\t");
Serial.println(__FUNCTION__);
}
void test_triangular_0()
{
float sum = 0;
float sqsum = 0;
float _min = 1e20;
float _max = -1e20;
start = micros();
for (int i = 0; i < runs; i++)
{
float x = R.triangular(0, 10, 3);
if (x < _min) _min = x;
if (x > _max) _max = x;
sum += x;
sqsum += x * x;
}
stop = micros();
Serial.print(stop - start);
Serial.print("\t");
Serial.print(sum);
Serial.print("\t");
Serial.print(sqsum);
Serial.print("\t");
Serial.print(_min);
Serial.print("\t");
Serial.print(_max);
Serial.print("\t\t");
Serial.println(__FUNCTION__);
}
void test_normalvariate_2()
{
float sum = 0;
float sqsum = 0;
float _min = 1e20;
float _max = -1e20;
start = micros();
for (int i = 0; i < runs; i++)
{
float x = R.normalvariate(5, 1);
if (x < _min) _min = x;
if (x > _max) _max = x;
sum += x;
sqsum += x * x;
}
stop = micros();
Serial.print(stop - start);
Serial.print("\t");
Serial.print(sum);
Serial.print("\t\t");
Serial.print(sqsum);
Serial.print("\t");
Serial.print(_min);
Serial.print("\t");
Serial.print(_max);
Serial.print("\t\t");
Serial.println(__FUNCTION__);
}
void test_lognormvariate_2()
{
float sum = 0;
float sqsum = 0;
float _min = 1e20;
float _max = -1e20;
start = micros();
for (int i = 0; i < runs; i++)
{
float x = R.lognormvariate(5, 1);
if (x < _min) _min = x;
if (x > _max) _max = x;
sum += x;
sqsum += x * x;
}
stop = micros();
Serial.print(stop - start);
Serial.print("\t");
Serial.print(sum);
Serial.print("\t");
Serial.print(sqsum);
Serial.print("\t");
Serial.print(_min);
Serial.print("\t");
Serial.print(_max);
Serial.print("\t\t");
Serial.println(__FUNCTION__);
}
void test_gauss_2()
{
float sum = 0;
float sqsum = 0;
float _min = 1e20;
float _max = -1e20;
start = micros();
for (int i = 0; i < runs; i++)
{
float x = R.gauss(5, 1);
if (x < _min) _min = x;
if (x > _max) _max = x;
sum += x;
sqsum += x * x;
}
stop = micros();
Serial.print(stop - start);
Serial.print("\t");
Serial.print(sum);
Serial.print("\t\t");
Serial.print(sqsum);
Serial.print("\t");
Serial.print(_min);
Serial.print("\t");
Serial.print(_max);
Serial.print("\t\t");
Serial.println(__FUNCTION__);
}
void test_expovariate_1()
{
float sum = 0;
float sqsum = 0;
float _min = 1e20;
float _max = -1e20;
start = micros();
for (int i = 0; i < runs; i++)
{
float x = R.expovariate(1.0 / 5);
if (x < _min) _min = x;
if (x > _max) _max = x;
sum += x;
sqsum += x * x;
}
stop = micros();
Serial.print(stop - start);
Serial.print("\t");
Serial.print(sum);
Serial.print("\t\t");
Serial.print(sqsum);
Serial.print("\t");
Serial.print(_min);
Serial.print("\t");
Serial.print(_max);
Serial.print("\t\t");
Serial.println(__FUNCTION__);
}
void test_gammavariate_2()
{
float sum = 0;
float sqsum = 0;
float _min = 1e20;
float _max = -1e20;
start = micros();
for (int i = 0; i < runs; i++)
{
float x = R.gammavariate(200, 1);
if (x < _min) _min = x;
if (x > _max) _max = x;
sum += x;
sqsum += x * x;
}
stop = micros();
Serial.print(stop - start);
Serial.print("\t");
Serial.print(sum);
Serial.print("\t");
Serial.print(sqsum);
Serial.print("\t");
Serial.print(_min);
Serial.print("\t");
Serial.print(_max);
Serial.print("\t\t");
Serial.println(__FUNCTION__);
}
void test_betavariate_2()
{
float sum = 0;
float sqsum = 0;
float _min = 1e20;
float _max = -1e20;
start = micros();
for (int i = 0; i < runs; i++)
{
float x = R.betavariate(3, 3);
if (x < _min) _min = x;
if (x > _max) _max = x;
sum += x;
sqsum += x * x;
}
stop = micros();
Serial.print(stop - start);
Serial.print("\t");
Serial.print(sum);
Serial.print("\t\t");
Serial.print(sqsum);
Serial.print("\t\t");
Serial.print(_min);
Serial.print("\t");
Serial.print(_max);
Serial.print("\t\t");
Serial.println(__FUNCTION__);
}
void test_paretovariate_1()
{
float sum = 0;
float sqsum = 0;
float _min = 1e20;
float _max = -1e20;
start = micros();
for (int i = 0; i < runs; i++)
{
float x = R.paretovariate(10);
if (x < _min) _min = x;
if (x > _max) _max = x;
sum += x;
sqsum += x * x;
}
stop = micros();
Serial.print(stop - start);
Serial.print("\t");
Serial.print(sum);
Serial.print("\t\t");
Serial.print(sqsum);
Serial.print("\t\t");
Serial.print(_min);
Serial.print("\t");
Serial.print(_max);
Serial.print("\t\t");
Serial.println(__FUNCTION__);
}
void test_weibullvariate_2()
{
float sum = 0;
float sqsum = 0;
float _min = 1e20;
float _max = -1e20;
start = micros();
for (int i = 0; i < runs; i++)
{
float x = R.weibullvariate(PI, 1);
if (x < _min) _min = x;
if (x > _max) _max = x;
sum += x;
sqsum += x * x;
}
stop = micros();
Serial.print(stop - start);
Serial.print("\t");
Serial.print(sum);
Serial.print("\t\t");
Serial.print(sqsum);
Serial.print("\t");
Serial.print(_min);
Serial.print("\t");
Serial.print(_max);
Serial.print("\t\t");
Serial.println(__FUNCTION__);
}
void test_vonmisesvariate_2()
{
float sum = 0;
float sqsum = 0;
float _min = 1e20;
float _max = -1e20;
start = micros();
for (int i = 0; i < runs; i++)
{
float x = R.vonmisesvariate(PI / 2, 0);
if (x < _min) _min = x;
if (x > _max) _max = x;
sum += x;
sqsum += x * x;
}
stop = micros();
Serial.print(stop - start);
Serial.print("\t");
Serial.print(sum);
Serial.print("\t\t");
Serial.print(sqsum);
Serial.print("\t");
Serial.print(_min);
Serial.print("\t");
Serial.print(_max);
Serial.print("\t\t");
Serial.println(__FUNCTION__);
}
// -- END OF FILE --