arduino-audio-tools
Loading...
Searching...
No Matches
float32.h
Go to the documentation of this file.
1#pragma once
2#include "AudioToolsConfig.h"
3
4namespace audio_tools {
5
21class float32 {
22 public:
23 float32() = default;
24 float32(float value){
25 this->value = float32::as_uint(value);
26 }
28 this->value = value.value;
29 }
30 inline operator float() {
31 return as_float(value);
32 }
33 explicit inline operator double() {
34 return (double) float32::as_float(value);
35 }
36 explicit inline operator int() {
37 return (int) float32::as_float(value);
38 }
39 explicit inline operator int() const {
40 return (int) float32::as_float(value);
41 }
42 inline bool operator< (float32 other) const{
43 return float() < (float)other;
44 }
45 inline bool operator<= (float32 other) const{
46 return float() <= (float)other;
47 }
48 inline bool operator> (float32 other) const{
49 return float() > (float)other;
50 }
51 inline bool operator>= (float32 other) const{
52 return float() >= (float)other;
53 }
54 inline bool operator== (float32 other) const{
55 return float() == (float)other;
56 }
57 inline bool operator!= (float32 other) const{
58 return float() != (float)other;
59 }
60
61 protected:
62 uint32_t value=0;
63
64 static uint32_t as_uint(float x) {
65 return *(uint32_t*)&x;
66 }
67 static float as_float(uint32_t x) {
68 return *(float*)&x;
69 }
70
71};
72
73inline float operator+ (float32 one, float32 two)
74{
75 return (float)one + (float)two;
76}
77inline float operator- (float32 one, float32 two)
78{
79 return (float)one - (float)two;
80}
81inline float operator* (float32 one, float32 two)
82{
83 return (float)one * (float)two;
84}
85inline float operator/ (float32 one, float32 two)
86{
87 return (float)one / (float)two;
88}
89inline float operator+ (float32 one, float two)
90{
91 return (float)one + two;
92}
93inline float operator- (float32 one, float two)
94{
95 return (float)one - two;
96}
97inline float operator* (float32 one, float two)
98{
99 return (float)one * two;
100}
101inline float operator/ (float32 one, float two)
102{
103 return (float)one / two;
104}
105inline float operator+ (float one, float32 two)
106{
107 return two + float(one);
108}
109inline float operator- (float one, float32 two)
110{
111 return two - float(one);
112}
113inline float operator* (float one, float32 two)
114{
115 return two * float(one);
116}
117inline float operator/ (float one, float32 two)
118{
119 return two / float(one);
120}
121
122}
123
124namespace std {
125
126inline float floor ( float32 arg ) { return std::floor((float)arg);}
127inline float fabs ( float32 arg ) { return std::fabs((float)arg);}
128
129}
A plain 32-bit float's bit pattern reinterpreted as a uint32_t, so instances can live in memory obtai...
Definition float32.h:21
bool operator>=(float32 other) const
Definition float32.h:51
bool operator>(float32 other) const
Definition float32.h:48
bool operator<=(float32 other) const
Definition float32.h:45
bool operator!=(float32 other) const
Definition float32.h:57
static uint32_t as_uint(float x)
Definition float32.h:64
float32(const float32 &value)
Definition float32.h:27
bool operator<(float32 other) const
Definition float32.h:42
bool operator==(float32 other) const
Definition float32.h:54
float32(float value)
Definition float32.h:24
static float as_float(uint32_t x)
Definition float32.h:67
uint32_t value
Definition float32.h:62
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition LMSEchoCancellationStream.h:6
float operator+(float16 one, float16 two)
Definition float16.h:102
float operator/(float16 one, float16 two)
Definition float16.h:111
float operator-(float16 one, float16 two)
Definition float16.h:105
float operator*(float16 one, float16 two)
Definition float16.h:108
Definition InitializerList.h:7
float floor(float16 arg)
Definition float16.h:127
float fabs(float16 arg)
Definition float16.h:128