mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
0.2.6 IEEE754tools
This commit is contained in:
parent
591bac1953
commit
74df5f6571
@ -6,13 +6,17 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
|||||||
and this project adheres to [Semantic Versioning](http://semver.org/).
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
|
|
||||||
|
|
||||||
|
## [0.2.6] - 2024-01-08
|
||||||
|
- Fix URL in examples.
|
||||||
|
- minor edits
|
||||||
|
|
||||||
|
|
||||||
## [0.2.5] - 2023-11-06
|
## [0.2.5] - 2023-11-06
|
||||||
- update readme.md
|
- update readme.md
|
||||||
- fix CHANGELOG.md
|
- fix CHANGELOG.md
|
||||||
- renamed IEEE754_VERSION to IEEE754_LIB_VERSION
|
- renamed IEEE754_VERSION to IEEE754_LIB_VERSION
|
||||||
- minor edits examples.
|
- minor edits examples.
|
||||||
|
|
||||||
|
|
||||||
## [0.2.4] - 2022-11-12
|
## [0.2.4] - 2022-11-12
|
||||||
- Add RP2040 support to build-CI.
|
- Add RP2040 support to build-CI.
|
||||||
- Add CHANGELOG.md
|
- Add CHANGELOG.md
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
//
|
//
|
||||||
// FILE: IEEE754tools.h
|
// FILE: IEEE754tools.h
|
||||||
// AUTHOR: Rob Tillaart
|
// AUTHOR: Rob Tillaart
|
||||||
// VERSION: 0.2.5
|
// VERSION: 0.2.6
|
||||||
// PURPOSE: manipulate IEEE754 float numbers fast
|
// PURPOSE: manipulate IEEE754 float numbers fast
|
||||||
// URL: https://github.com/RobTillaart/IEEE754tools.git
|
// URL: https://github.com/RobTillaart/IEEE754tools
|
||||||
//
|
//
|
||||||
// EXPERIMENTAL ==> USE WITH CARE
|
// EXPERIMENTAL ==> USE WITH CARE
|
||||||
// not tested extensively,
|
// not tested extensively,
|
||||||
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
|
|
||||||
#define IEEE754_LIB_VERSION (F("0.2.5"))
|
#define IEEE754_LIB_VERSION (F("0.2.6"))
|
||||||
|
|
||||||
|
|
||||||
// (un)comment lines to configure functionality / size
|
// (un)comment lines to configure functionality / size
|
||||||
@ -305,7 +305,6 @@ bool IEEE_FLOAT_NEQ(float &f, float &g)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// NOT TESTED FUNCTIONS
|
// NOT TESTED FUNCTIONS
|
||||||
@ -388,7 +387,7 @@ float IEEE_FLIP(float number)
|
|||||||
|
|
||||||
|
|
||||||
// s = *(((uint8_t*) &number)+3) & 0x80; // s = sign(number);
|
// s = *(((uint8_t*) &number)+3) & 0x80; // s = sign(number);
|
||||||
// if ( *(((byte*) &number)+3) & 0x80) x=2; // if (number < 0) x=2;
|
// if ( *(((byte*) &number)+3) & 0x80) x = 2; // if (number < 0) x = 2;
|
||||||
// GAIN = factor 5
|
// GAIN = factor 5
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2013-2023 Rob Tillaart
|
Copyright (c) 2013-2024 Rob Tillaart
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,48 +1,37 @@
|
|||||||
//
|
//
|
||||||
// FILE: FastNegate.ino
|
// FILE: FastNegate.ino
|
||||||
// AUTHOR: Rob dot Tillaart at gmail dot com
|
// AUTHOR: Rob Tillaart
|
||||||
// PURPOSE: Fast negate for floating points
|
// PURPOSE: Fast negate for floating points
|
||||||
|
// URL: https://github.com/RobTillaart/IEEE754tools
|
||||||
|
|
||||||
|
|
||||||
#include "IEEE754tools.h"
|
#include "IEEE754tools.h"
|
||||||
|
|
||||||
|
|
||||||
volatile float zz = 100;
|
volatile float zz = 100;
|
||||||
volatile int x = 3;
|
volatile int x = 3;
|
||||||
|
|
||||||
uint32_t start, duration1, duration2;
|
uint32_t start, duration1, duration2;
|
||||||
|
|
||||||
|
|
||||||
void setup()
|
|
||||||
{
|
|
||||||
Serial.begin(115200);
|
|
||||||
Serial.println();
|
|
||||||
Serial.println(__FILE__);
|
|
||||||
Serial.print("IEEE754_LIB_VERSION: ");
|
|
||||||
Serial.println(IEEE754_LIB_VERSION);
|
|
||||||
Serial.println();
|
|
||||||
|
|
||||||
test_negfabs();
|
|
||||||
test_fabs();
|
|
||||||
test_negate();
|
|
||||||
test_less_zero();
|
|
||||||
test5();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void test_negfabs()
|
void test_negfabs()
|
||||||
{
|
{
|
||||||
Serial.println(__FUNCTION__);
|
Serial.println(__FUNCTION__);
|
||||||
Serial.println("TEST : zz = -fabs(zz)");
|
Serial.println("TEST : zz = -fabs(zz)");
|
||||||
|
delay(100);
|
||||||
|
|
||||||
start = micros();
|
start = micros();
|
||||||
for (int i = 0; i < 30000; i++)
|
for (int i = 0; i < 30000; i++)
|
||||||
{
|
{
|
||||||
*(((byte*) &zz) + 3) |= 0x80; // Force negative == -fabs(zz);
|
*(((byte*) &zz) + 3) |= 0x80; // Force negative == -fabs(zz);
|
||||||
}
|
}
|
||||||
duration1 = micros() - start;
|
duration1 = micros() - start;
|
||||||
|
|
||||||
Serial.print("TIME : ");
|
Serial.print("TIME : ");
|
||||||
Serial.println(duration1 / 30000.0, 4);
|
Serial.println(duration1 / 30000.0, 4);
|
||||||
Serial.print("VALUE: ");
|
Serial.print("VALUE: ");
|
||||||
Serial.println(zz);
|
Serial.println(zz);
|
||||||
delay(10);
|
delay(100);
|
||||||
|
|
||||||
zz = 100;
|
zz = 100;
|
||||||
start = micros();
|
start = micros();
|
||||||
@ -51,6 +40,7 @@ void test_negfabs()
|
|||||||
zz = -fabs(zz);
|
zz = -fabs(zz);
|
||||||
}
|
}
|
||||||
duration2 = micros() - start;
|
duration2 = micros() - start;
|
||||||
|
|
||||||
Serial.print("TIME : ");
|
Serial.print("TIME : ");
|
||||||
Serial.println(duration2 / 30000.0, 4);
|
Serial.println(duration2 / 30000.0, 4);
|
||||||
Serial.print("VALUE: ");
|
Serial.print("VALUE: ");
|
||||||
@ -58,7 +48,7 @@ void test_negfabs()
|
|||||||
Serial.print("GAIN : ");
|
Serial.print("GAIN : ");
|
||||||
Serial.println(1.0 * duration2 / duration1, 2);
|
Serial.println(1.0 * duration2 / duration1, 2);
|
||||||
Serial.println();
|
Serial.println();
|
||||||
delay(10);
|
delay(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -66,17 +56,20 @@ void test_fabs()
|
|||||||
{
|
{
|
||||||
Serial.println(__FUNCTION__);
|
Serial.println(__FUNCTION__);
|
||||||
Serial.println("TEST : zz = fabs(zz)");
|
Serial.println("TEST : zz = fabs(zz)");
|
||||||
|
delay(100);
|
||||||
|
|
||||||
start = micros();
|
start = micros();
|
||||||
for (int i = 0; i < 30000; i++)
|
for (int i = 0; i < 30000; i++)
|
||||||
{
|
{
|
||||||
*(((byte*) &zz) + 3) &= 0x7F; // force positive == fabs(zz);
|
*(((byte*) &zz) + 3) &= 0x7F; // force positive == fabs(zz);
|
||||||
}
|
}
|
||||||
duration1 = micros() - start;
|
duration1 = micros() - start;
|
||||||
|
|
||||||
Serial.print("TIME : ");
|
Serial.print("TIME : ");
|
||||||
Serial.println(duration1 / 30000.0, 4);
|
Serial.println(duration1 / 30000.0, 4);
|
||||||
Serial.print("VALUE: ");
|
Serial.print("VALUE: ");
|
||||||
Serial.println(zz);
|
Serial.println(zz);
|
||||||
delay(10);
|
delay(100);
|
||||||
|
|
||||||
start = micros();
|
start = micros();
|
||||||
for (int i = 0; i < 30000; i++)
|
for (int i = 0; i < 30000; i++)
|
||||||
@ -84,6 +77,7 @@ void test_fabs()
|
|||||||
zz = fabs(zz);
|
zz = fabs(zz);
|
||||||
}
|
}
|
||||||
duration2 = micros() - start;
|
duration2 = micros() - start;
|
||||||
|
|
||||||
Serial.print("TIME : ");
|
Serial.print("TIME : ");
|
||||||
Serial.println(duration2 / 30000.0, 4);
|
Serial.println(duration2 / 30000.0, 4);
|
||||||
Serial.print("VALUE: ");
|
Serial.print("VALUE: ");
|
||||||
@ -91,7 +85,7 @@ void test_fabs()
|
|||||||
Serial.print("GAIN : ");
|
Serial.print("GAIN : ");
|
||||||
Serial.println(1.0 * duration2 / duration1, 2);
|
Serial.println(1.0 * duration2 / duration1, 2);
|
||||||
Serial.println();
|
Serial.println();
|
||||||
delay(10);
|
delay(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -99,16 +93,20 @@ void test_negate()
|
|||||||
{
|
{
|
||||||
Serial.println(__FUNCTION__);
|
Serial.println(__FUNCTION__);
|
||||||
Serial.println("TEST : zz = -zz");
|
Serial.println("TEST : zz = -zz");
|
||||||
|
delay(100);
|
||||||
|
|
||||||
start = micros();
|
start = micros();
|
||||||
for (int i = 0; i < 30000; i++)
|
for (int i = 0; i < 30000; i++)
|
||||||
{
|
{
|
||||||
*(((byte*) &zz) + 3) ^= 0x80;
|
*(((byte*) &zz) + 3) ^= 0x80;
|
||||||
}
|
}
|
||||||
duration1 = micros() - start;
|
duration1 = micros() - start;
|
||||||
|
|
||||||
Serial.print("TIME : ");
|
Serial.print("TIME : ");
|
||||||
Serial.println(duration1 / 30000.0, 4);
|
Serial.println(duration1 / 30000.0, 4);
|
||||||
Serial.print("VALUE: ");
|
Serial.print("VALUE: ");
|
||||||
Serial.println(zz);
|
Serial.println(zz);
|
||||||
|
delay(100);
|
||||||
|
|
||||||
start = micros();
|
start = micros();
|
||||||
for (int i = 0; i < 30000; i++)
|
for (int i = 0; i < 30000; i++)
|
||||||
@ -116,6 +114,7 @@ void test_negate()
|
|||||||
zz = -zz;
|
zz = -zz;
|
||||||
}
|
}
|
||||||
duration2 = micros() - start;
|
duration2 = micros() - start;
|
||||||
|
|
||||||
Serial.print("TIME : ");
|
Serial.print("TIME : ");
|
||||||
Serial.println(duration2 / 30000.0, 4);
|
Serial.println(duration2 / 30000.0, 4);
|
||||||
Serial.print("VALUE: ");
|
Serial.print("VALUE: ");
|
||||||
@ -123,7 +122,7 @@ void test_negate()
|
|||||||
Serial.print("GAIN : ");
|
Serial.print("GAIN : ");
|
||||||
Serial.println(1.0 * duration2 / duration1, 2);
|
Serial.println(1.0 * duration2 / duration1, 2);
|
||||||
Serial.println();
|
Serial.println();
|
||||||
delay(10);
|
delay(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -131,16 +130,20 @@ void test_less_zero()
|
|||||||
{
|
{
|
||||||
Serial.println(__FUNCTION__);
|
Serial.println(__FUNCTION__);
|
||||||
Serial.println("TEST : if (zz < 0) ");
|
Serial.println("TEST : if (zz < 0) ");
|
||||||
|
delay(100);
|
||||||
|
|
||||||
start = micros();
|
start = micros();
|
||||||
for (int i = 0; i < 30000; i++)
|
for (int i = 0; i < 30000; i++)
|
||||||
{
|
{
|
||||||
if ( *(((byte*) &zz) + 3) & 0x80) x = 2; // equals if (zz < 0);
|
if ( *(((byte*) &zz) + 3) & 0x80) x = 2; // equals if (zz < 0);
|
||||||
}
|
}
|
||||||
duration1 = micros() - start;
|
duration1 = micros() - start;
|
||||||
|
|
||||||
Serial.print("TIME : ");
|
Serial.print("TIME : ");
|
||||||
Serial.println(duration1 / 30000.0, 4);
|
Serial.println(duration1 / 30000.0, 4);
|
||||||
Serial.print("VALUE: ");
|
Serial.print("VALUE: ");
|
||||||
Serial.println(zz);
|
Serial.println(zz);
|
||||||
|
delay(100);
|
||||||
|
|
||||||
start = micros();
|
start = micros();
|
||||||
for (int i = 0; i < 30000; i++)
|
for (int i = 0; i < 30000; i++)
|
||||||
@ -148,6 +151,7 @@ void test_less_zero()
|
|||||||
if (zz < 0) x = 2;
|
if (zz < 0) x = 2;
|
||||||
}
|
}
|
||||||
duration2 = micros() - start;
|
duration2 = micros() - start;
|
||||||
|
|
||||||
Serial.print("TIME : ");
|
Serial.print("TIME : ");
|
||||||
Serial.println(duration2 / 30000.0, 4);
|
Serial.println(duration2 / 30000.0, 4);
|
||||||
Serial.print("VALUE: ");
|
Serial.print("VALUE: ");
|
||||||
@ -160,10 +164,12 @@ void test_less_zero()
|
|||||||
{
|
{
|
||||||
x = 2;
|
x = 2;
|
||||||
}
|
}
|
||||||
|
uint32_t duration3 = micros() - start;
|
||||||
|
|
||||||
Serial.print("TIME : ");
|
Serial.print("TIME : ");
|
||||||
Serial.println((micros() - start) / 30000.0, 4);
|
Serial.println(duration3 / 30000.0, 4);
|
||||||
Serial.println();
|
Serial.println();
|
||||||
delay(10);
|
delay(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -183,6 +189,25 @@ void test5()
|
|||||||
zz = 100;
|
zz = 100;
|
||||||
if (*(((byte*) &zz) + 3) & 0x80) Serial.println("N");
|
if (*(((byte*) &zz) + 3) & 0x80) Serial.println("N");
|
||||||
else Serial.println("P");
|
else Serial.println("P");
|
||||||
|
delay(100);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
Serial.begin(115200);
|
||||||
|
Serial.println();
|
||||||
|
Serial.println(__FILE__);
|
||||||
|
Serial.print("IEEE754_LIB_VERSION: ");
|
||||||
|
Serial.println(IEEE754_LIB_VERSION);
|
||||||
|
Serial.println();
|
||||||
|
delay(100);
|
||||||
|
|
||||||
|
test_negfabs();
|
||||||
|
test_fabs();
|
||||||
|
test_negate();
|
||||||
|
test_less_zero();
|
||||||
|
test5();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -192,4 +217,3 @@ void loop()
|
|||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
45
libraries/IEEE754tools/examples/FastNegate/output_0.2.6.txt
Normal file
45
libraries/IEEE754tools/examples/FastNegate/output_0.2.6.txt
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
|
||||||
|
IDE: 1.8.19
|
||||||
|
Board: UNO
|
||||||
|
|
||||||
|
IEEE754tools\examples\FastNegate\FastNegate.ino
|
||||||
|
IEEE754_LIB_VERSION: 0.2.6
|
||||||
|
|
||||||
|
test_negfabs
|
||||||
|
TEST : zz = -fabs(zz)
|
||||||
|
TIME : 0.3144
|
||||||
|
VALUE: -100.00
|
||||||
|
TIME : 1.3835
|
||||||
|
VALUE: -100.00
|
||||||
|
GAIN : 4.40
|
||||||
|
|
||||||
|
test_fabs
|
||||||
|
TEST : zz = fabs(zz)
|
||||||
|
TIME : 0.3144
|
||||||
|
VALUE: 100.00
|
||||||
|
TIME : 1.3205
|
||||||
|
VALUE: 100.00
|
||||||
|
GAIN : 4.20
|
||||||
|
|
||||||
|
test_negate
|
||||||
|
TEST : zz = -zz
|
||||||
|
TIME : 0.3144
|
||||||
|
VALUE: 100.00
|
||||||
|
TIME : 1.3205
|
||||||
|
VALUE: 100.00
|
||||||
|
GAIN : 4.20
|
||||||
|
|
||||||
|
test_less_zero
|
||||||
|
TEST : if (zz < 0)
|
||||||
|
TIME : 0.4403
|
||||||
|
VALUE: 100.00
|
||||||
|
TIME : 4.0868
|
||||||
|
VALUE: 100.00
|
||||||
|
GAIN : 9.28
|
||||||
|
TIME : 0.5087
|
||||||
|
|
||||||
|
test5
|
||||||
|
N
|
||||||
|
P
|
||||||
|
N
|
||||||
|
P
|
@ -2,41 +2,20 @@
|
|||||||
// FILE: IEEE754_equal.ino
|
// FILE: IEEE754_equal.ino
|
||||||
// AUTHOR: Rob Tillaart
|
// AUTHOR: Rob Tillaart
|
||||||
// PURPOSE: experimental
|
// PURPOSE: experimental
|
||||||
|
// URL: https://github.com/RobTillaart/IEEE754tools
|
||||||
//
|
//
|
||||||
// NOTE
|
// Notes
|
||||||
// - WORKS ON AVR
|
// - Works on AVR
|
||||||
// - FAILS FOR ESP32
|
// - Fails on ESP32
|
||||||
|
|
||||||
|
|
||||||
#include <IEEE754tools.h>
|
#include "IEEE754tools.h"
|
||||||
|
|
||||||
|
|
||||||
uint32_t start, duration;
|
uint32_t start, duration;
|
||||||
volatile bool b;
|
volatile bool b;
|
||||||
|
|
||||||
|
|
||||||
void setup()
|
|
||||||
{
|
|
||||||
Serial.begin(115200);
|
|
||||||
Serial.println();
|
|
||||||
Serial.println(__FILE__);
|
|
||||||
Serial.print("IEEE754_LIB_VERSION: ");
|
|
||||||
Serial.println(IEEE754_LIB_VERSION);
|
|
||||||
Serial.println();
|
|
||||||
|
|
||||||
test_FLOAT_EQ_1();
|
|
||||||
test_FLOAT_EQ_2();
|
|
||||||
test_DIV2();
|
|
||||||
test_POW2();
|
|
||||||
|
|
||||||
Serial.println("done");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void loop()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void test_FLOAT_EQ_1()
|
void test_FLOAT_EQ_1()
|
||||||
{
|
{
|
||||||
Serial.println();
|
Serial.println();
|
||||||
@ -190,5 +169,28 @@ void test_POW2()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
Serial.begin(115200);
|
||||||
|
Serial.println();
|
||||||
|
Serial.println(__FILE__);
|
||||||
|
Serial.print("IEEE754_LIB_VERSION: ");
|
||||||
|
Serial.println(IEEE754_LIB_VERSION);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
test_FLOAT_EQ_1();
|
||||||
|
test_FLOAT_EQ_2();
|
||||||
|
test_DIV2();
|
||||||
|
test_POW2();
|
||||||
|
|
||||||
|
Serial.println("done");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
@ -2,32 +2,28 @@
|
|||||||
// FILE: float2double.ino
|
// FILE: float2double.ino
|
||||||
// AUTHOR: Rob Tillaart
|
// AUTHOR: Rob Tillaart
|
||||||
// PURPOSE: experimental expands a float in a IEEE 754 double to be printed to PC.
|
// PURPOSE: experimental expands a float in a IEEE 754 double to be printed to PC.
|
||||||
|
// URL: https://github.com/RobTillaart/IEEE754tools
|
||||||
//
|
//
|
||||||
// NOTE
|
// Notes
|
||||||
// - WORKS ON AVR
|
// - Works on AVR
|
||||||
// - FAILS ON ESP32
|
// - Fails on ESP32
|
||||||
|
|
||||||
|
|
||||||
#include <IEEE754tools.h>
|
#include "IEEE754tools.h"
|
||||||
|
|
||||||
|
|
||||||
byte x[8];
|
byte x[8];
|
||||||
|
|
||||||
|
|
||||||
void setup()
|
void dumpByteArray(byte *ar)
|
||||||
{
|
{
|
||||||
Serial.begin(115200);
|
for (int i = 0; i < 8; i++)
|
||||||
|
{
|
||||||
|
if (ar[i] < 0x10) Serial.print('0');
|
||||||
|
Serial.print(ar[i], HEX);
|
||||||
|
Serial.print(' ');
|
||||||
|
}
|
||||||
Serial.println();
|
Serial.println();
|
||||||
Serial.println(__FILE__);
|
|
||||||
Serial.print("IEEE754_LIB_VERSION: ");
|
|
||||||
Serial.println(IEEE754_LIB_VERSION);
|
|
||||||
Serial.println();
|
|
||||||
|
|
||||||
test1();
|
|
||||||
test2();
|
|
||||||
test3();
|
|
||||||
test4();
|
|
||||||
|
|
||||||
Serial.println("done");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -90,22 +86,28 @@ void test4()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
Serial.begin(115200);
|
||||||
|
Serial.println();
|
||||||
|
Serial.println(__FILE__);
|
||||||
|
Serial.print("IEEE754_LIB_VERSION: ");
|
||||||
|
Serial.println(IEEE754_LIB_VERSION);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
test1();
|
||||||
|
test2();
|
||||||
|
test3();
|
||||||
|
test4();
|
||||||
|
|
||||||
|
Serial.println("done");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void loop()
|
void loop()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void dumpByteArray(byte *ar)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < 8; i++)
|
|
||||||
{
|
|
||||||
if (ar[i] < 0x10) Serial.print('0');
|
|
||||||
Serial.print(ar[i], HEX);
|
|
||||||
Serial.print(' ');
|
|
||||||
}
|
|
||||||
Serial.println();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/RobTillaart/IEEE754tools.git"
|
"url": "https://github.com/RobTillaart/IEEE754tools.git"
|
||||||
},
|
},
|
||||||
"version": "0.2.5",
|
"version": "0.2.6",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"frameworks": "*",
|
"frameworks": "*",
|
||||||
"platforms": "*",
|
"platforms": "*",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
name=IEEE754tools
|
name=IEEE754tools
|
||||||
version=0.2.5
|
version=0.2.6
|
||||||
author=Rob Tillaart <rob.tillaart@gmail.com>
|
author=Rob Tillaart <rob.tillaart@gmail.com>
|
||||||
maintainer=Rob Tillaart <rob.tillaart@gmail.com>
|
maintainer=Rob Tillaart <rob.tillaart@gmail.com>
|
||||||
sentence=Fast helper functions for IEEE754 floats.
|
sentence=Fast helper functions for IEEE754 floats.
|
||||||
|
@ -26,6 +26,7 @@ These bit-hacks started in 2010 (oldest code found), maybe even earlier.
|
|||||||
- http://en.wikipedia.org/wiki/Double_precision
|
- http://en.wikipedia.org/wiki/Double_precision
|
||||||
- http://en.wikipedia.org/wiki/Single-precision_floating-point_format
|
- http://en.wikipedia.org/wiki/Single-precision_floating-point_format
|
||||||
- https://github.com/RobTillaart/float16
|
- https://github.com/RobTillaart/float16
|
||||||
|
- https://github.com/RobTillaart/printHelpers (to print scientific format float).
|
||||||
|
|
||||||
|
|
||||||
## WARNING
|
## WARNING
|
||||||
@ -57,6 +58,8 @@ ESP32 - needs investigation as UNO verified code fails.
|
|||||||
#include "IEEE754tools.h"
|
#include "IEEE754tools.h"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
See .h file for details.
|
||||||
|
|
||||||
|
|
||||||
## Operations
|
## Operations
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ unittest(test_all)
|
|||||||
fprintf(stderr, "IEEE_NegINF\n");
|
fprintf(stderr, "IEEE_NegINF\n");
|
||||||
assertTrue(IEEE_NegINF(-exp(800)));
|
assertTrue(IEEE_NegINF(-exp(800)));
|
||||||
|
|
||||||
// crash - AVR specific
|
// crash - AVR specific
|
||||||
// fprintf(stderr, "IEEE_Sign\n");
|
// fprintf(stderr, "IEEE_Sign\n");
|
||||||
// assertTrue(IEEE_Sign(PI));
|
// assertTrue(IEEE_Sign(PI));
|
||||||
// assertTrue(IEEE_Sign(-PI));
|
// assertTrue(IEEE_Sign(-PI));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user