GY-63_MS5611/libraries/IEEE754tools/examples/IEEE754_equal/IEEE754_equal.ino
2021-12-20 08:09:14 +01:00

191 lines
3.3 KiB
C++

//
// FILE: IEEE754_equal.ino
// AUTHOR: Rob Tillaart
// PURPOSE: experimental
//
// NOTE
// - WORKS ON AVR
// - FAILS FOR ESP32
#include <IEEE754tools.h>
uint32_t start, duration;
volatile bool b;
void setup()
{
Serial.begin(115200);
Serial.println(__FILE__);
test_FLOAT_EQ_1();
test_FLOAT_EQ_2();
test_DIV2();
test_POW2();
Serial.println("done");
}
void loop()
{
}
void test_FLOAT_EQ_1()
{
Serial.println();
Serial.println(__FUNCTION__);
float f = PI;
float g = PI;
Serial.print("IEEE_FLOAT_EQ : ");
Serial.println(IEEE_FLOAT_EQ(f, g));
Serial.print("IEEE_FLOAT_NEQ: ");
Serial.println(IEEE_FLOAT_NEQ(f, g));
f += 1;
Serial.print("IEEE_FLOAT_EQ : ");
Serial.println(IEEE_FLOAT_EQ(f, g));
Serial.print("IEEE_FLOAT_NEQ: ");
Serial.println(IEEE_FLOAT_NEQ(f, g));
Serial.println();
}
void test_FLOAT_EQ_2()
{
Serial.println();
Serial.println(__FUNCTION__);
delay(10);
float f = PI;
float g = PI;
start = micros();
b = (f == g);
duration = micros() - start;
Serial.print("TIME : ");
Serial.println(duration);
delay(10);
start = micros();
b = IEEE_FLOAT_EQ(f, g);
duration = micros() - start;
Serial.print("TIME : ");
Serial.println(duration);
delay(10);
g += 1;
start = micros();
b = (f == g);
duration = micros() - start;
Serial.print("TIME : ");
Serial.println(duration);
delay(10);
start = micros();
b = IEEE_FLOAT_EQ(f, g);
duration = micros() - start;
Serial.print("TIME : ");
Serial.println(duration);
Serial.println();
}
void test_DIV2()
{
Serial.println();
Serial.println(__FUNCTION__);
delay(10);
volatile float f = random(1000) * 0.01;
Serial.print("VALUE: ");
Serial.println(f, 10);
delay(10);
start = micros();
float g = f / 2;
duration = micros() - start;
Serial.print("TIME : ");
Serial.println(duration);
Serial.print("VALUE: ");
Serial.println(f, 10);
Serial.print("VALUE: ");
Serial.println(g, 10);
delay(10);
start = micros();
g = IEEE_FLOAT_DIV2(f);
duration = micros() - start;
Serial.print("TIME : ");
Serial.println(duration);
Serial.print("VALUE: ");
Serial.println(f, 10);
Serial.print("VALUE: ");
Serial.println(g, 10);
delay(10);
start = micros();
g = IEEE_FLOAT_POW2fast(f, -1);
duration = micros() - start;
Serial.print("TIME : ");
Serial.println(duration);
Serial.print("VALUE: ");
Serial.println(f, 10);
Serial.print("VALUE: ");
Serial.println(g, 10);
delay(10);
Serial.println();
}
void test_POW2()
{
Serial.println();
Serial.println(__FUNCTION__);
delay(10);
int p = random(10);
float f = random(1000) * 0.001;
Serial.println(f, 10);
delay(10);
start = micros();
float g = f * pow(2, p);
duration = micros() - start;
Serial.print("TIME : ");
Serial.println(duration);
Serial.print("VALUE: ");
Serial.println(g, 10);
delay(10);
start = micros();
g = IEEE_POW2(f, p);
duration = micros() - start;
Serial.print("TIME : ");
Serial.println(duration);
Serial.print("VALUE: ");
Serial.println(g, 10);
delay(10);
start = micros();
g = IEEE_FLOAT_POW2fast(f, p);
duration = micros() - start;
Serial.print("TIME : ");
Serial.println(duration);
Serial.print("VALUE: ");
Serial.println(g, 10);
delay(10);
Serial.println();
}
// -- END OF FILE --