mirror of
https://github.com/glest/glest-source.git
synced 2025-08-10 18:34:05 +02:00
Fixed the god-awful indentation
This commit is contained in:
@@ -1,14 +1,14 @@
|
||||
/*
|
||||
streflop: STandalone REproducible FLOating-Point
|
||||
Copyright 2006 Nicolas Brodu
|
||||
2010 Mark Vejvoda
|
||||
streflop: STandalone REproducible FLOating-Point
|
||||
Copyright 2006 Nicolas Brodu
|
||||
2010 Mark Vejvoda
|
||||
|
||||
Code released according to the GNU Lesser General Public License
|
||||
Code released according to the GNU Lesser General Public License
|
||||
|
||||
Heavily relies on GNU Libm, itself depending on netlib fplibm, GNU MP, and IBM MP lib.
|
||||
Uses SoftFloat too.
|
||||
Heavily relies on GNU Libm, itself depending on netlib fplibm, GNU MP, and IBM MP lib.
|
||||
Uses SoftFloat too.
|
||||
|
||||
Please read the history and copyright information in the documentation provided with the source code
|
||||
Please read the history and copyright information in the documentation provided with the source code
|
||||
*/
|
||||
|
||||
#ifdef STREFLOP_SOFT
|
||||
@@ -28,41 +28,49 @@
|
||||
#include "IntegerTypes.h"
|
||||
namespace streflop {
|
||||
|
||||
// Generic define
|
||||
template<int Nbits> struct SoftFloatWrapper {
|
||||
// Generic define
|
||||
template<int Nbits> struct SoftFloatWrapper {
|
||||
|
||||
char holder[(Nbits/STREFLOP_INTEGER_TYPES_CHAR_BITS)];
|
||||
template<typename T> inline T& value() {return *reinterpret_cast<T*>(&holder);}
|
||||
template<typename T> inline const T& value() const {return *reinterpret_cast<const T*>(&holder);}
|
||||
char holder[(Nbits / STREFLOP_INTEGER_TYPES_CHAR_BITS)];
|
||||
template<typename T> inline T& value() {
|
||||
return *reinterpret_cast<T*>(&holder);
|
||||
}
|
||||
template<typename T> inline const T& value() const {
|
||||
return *reinterpret_cast<const T*>(&holder);
|
||||
}
|
||||
|
||||
/// Use dummy bool argument for construction from an already initialized holder
|
||||
template<typename T> inline SoftFloatWrapper(T init_value, bool) {value<T>() = init_value;}
|
||||
/// Use dummy bool argument for construction from an already initialized holder
|
||||
template<typename T> inline SoftFloatWrapper(T init_value, bool) {
|
||||
value<T>() = init_value;
|
||||
}
|
||||
|
||||
/// Uninitialized object
|
||||
inline SoftFloatWrapper() {}
|
||||
/// Uninitialized object
|
||||
inline SoftFloatWrapper() {
|
||||
}
|
||||
|
||||
/// Conversion between different types. Also unfortunately includes otherwise perfectly fine copy constructor
|
||||
SoftFloatWrapper(const SoftFloatWrapper<32>& f);
|
||||
SoftFloatWrapper& operator=(const SoftFloatWrapper<32>& f);
|
||||
SoftFloatWrapper(const SoftFloatWrapper<64>& f);
|
||||
SoftFloatWrapper& operator=(const SoftFloatWrapper<64>& f);
|
||||
SoftFloatWrapper(const SoftFloatWrapper<96>& f);
|
||||
SoftFloatWrapper& operator=(const SoftFloatWrapper<96>& f);
|
||||
/// Conversion between different types. Also unfortunately includes otherwise perfectly fine copy constructor
|
||||
SoftFloatWrapper(const SoftFloatWrapper<32>& f);
|
||||
SoftFloatWrapper& operator=(const SoftFloatWrapper<32>& f);
|
||||
SoftFloatWrapper(const SoftFloatWrapper<64>& f);
|
||||
SoftFloatWrapper& operator=(const SoftFloatWrapper<64>& f);
|
||||
SoftFloatWrapper(const SoftFloatWrapper<96>& f);
|
||||
SoftFloatWrapper& operator=(const SoftFloatWrapper<96>& f);
|
||||
|
||||
/// Destructor
|
||||
inline ~SoftFloatWrapper() {}
|
||||
/// Destructor
|
||||
inline ~SoftFloatWrapper() {
|
||||
}
|
||||
|
||||
/// Now the real fun, arithmetic operator overloading
|
||||
SoftFloatWrapper& operator+=(const SoftFloatWrapper& f);
|
||||
SoftFloatWrapper& operator-=(const SoftFloatWrapper& f);
|
||||
SoftFloatWrapper& operator*=(const SoftFloatWrapper& f);
|
||||
SoftFloatWrapper& operator/=(const SoftFloatWrapper& f);
|
||||
bool operator==(const SoftFloatWrapper& f) const;
|
||||
bool operator!=(const SoftFloatWrapper& f) const;
|
||||
bool operator<(const SoftFloatWrapper& f) const;
|
||||
bool operator<=(const SoftFloatWrapper& f) const;
|
||||
bool operator>(const SoftFloatWrapper& f) const;
|
||||
bool operator>=(const SoftFloatWrapper& f) const;
|
||||
/// Now the real fun, arithmetic operator overloading
|
||||
SoftFloatWrapper& operator+=(const SoftFloatWrapper& f);
|
||||
SoftFloatWrapper& operator-=(const SoftFloatWrapper& f);
|
||||
SoftFloatWrapper& operator*=(const SoftFloatWrapper& f);
|
||||
SoftFloatWrapper& operator/=(const SoftFloatWrapper& f);
|
||||
bool operator==(const SoftFloatWrapper& f) const;
|
||||
bool operator!=(const SoftFloatWrapper& f) const;
|
||||
bool operator<(const SoftFloatWrapper& f) const;
|
||||
bool operator<=(const SoftFloatWrapper& f) const;
|
||||
bool operator>(const SoftFloatWrapper& f) const;
|
||||
bool operator>=(const SoftFloatWrapper& f) const;
|
||||
|
||||
#define STREFLOP_SOFT_WRAPPER_NATIVE_OPS(native_type) \
|
||||
SoftFloatWrapper(const native_type f); \
|
||||
@@ -79,21 +87,21 @@ template<int Nbits> struct SoftFloatWrapper {
|
||||
bool operator>(const native_type f) const; \
|
||||
bool operator>=(const native_type f) const;
|
||||
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(float)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(double)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(long double)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(char)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(unsigned char)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(short)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(unsigned short)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(int)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(unsigned int)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(long)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(unsigned long)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(long long)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(unsigned long long)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(float)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(double)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(long double)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(char)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(unsigned char)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(short)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(unsigned short)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(int)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(unsigned int)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(long)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(unsigned long)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(long long)
|
||||
STREFLOP_SOFT_WRAPPER_NATIVE_OPS(unsigned long long)
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
#define STREFLOP_SOFT_WRAPPER_MAKE_REAL_CLASS_OPS(N) \
|
||||
template<> bool SoftFloatWrapper<N>::operator<(const SoftFloatWrapper& f) const; \
|
||||
@@ -107,13 +115,13 @@ template<> bool SoftFloatWrapper<N>::operator<(const SoftFloatWrapper<N>& f) con
|
||||
template<> bool SoftFloatWrapper<N>::operator<=(const SoftFloatWrapper<N>& f) const; \
|
||||
template<> bool SoftFloatWrapper<N>::operator>(const SoftFloatWrapper<N>& f) const; \
|
||||
template<> bool SoftFloatWrapper<N>::operator>=(const SoftFloatWrapper<N>& f) const;
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_CLASS_OPS(32)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_CLASS_OPS(64)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_CLASS_OPS(96)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_CLASS_OPS(32)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_CLASS_OPS(64)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_CLASS_OPS(96)
|
||||
|
||||
|
||||
// Making real the conversion N->M
|
||||
// Have to include default constructors for template overloading reasons
|
||||
// Making real the conversion N->M
|
||||
// Have to include default constructors for template overloading reasons
|
||||
#define STREFLOP_SOFT_WRAPPER_MAKE_REAL_NM_CONVERSION(Nbits) \
|
||||
template<> SoftFloatWrapper<Nbits>::SoftFloatWrapper(const SoftFloatWrapper<32>& f); \
|
||||
template<> SoftFloatWrapper<Nbits>& SoftFloatWrapper<Nbits>::operator=(const SoftFloatWrapper<32>& f); \
|
||||
@@ -121,9 +129,9 @@ template<> SoftFloatWrapper<Nbits>::SoftFloatWrapper(const SoftFloatWrapper<64>&
|
||||
template<> SoftFloatWrapper<Nbits>& SoftFloatWrapper<Nbits>::operator=(const SoftFloatWrapper<64>& f); \
|
||||
template<> SoftFloatWrapper<Nbits>::SoftFloatWrapper(const SoftFloatWrapper<96>& f); \
|
||||
template<> SoftFloatWrapper<Nbits>& SoftFloatWrapper<Nbits>::operator=(const SoftFloatWrapper<96>& f);
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NM_CONVERSION(32)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NM_CONVERSION(64)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NM_CONVERSION(96)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NM_CONVERSION(32)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NM_CONVERSION(64)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NM_CONVERSION(96)
|
||||
|
||||
|
||||
#define STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(N,native_type) \
|
||||
@@ -141,64 +149,64 @@ template<> bool SoftFloatWrapper<N>::operator<=(const native_type f) const; \
|
||||
template<> bool SoftFloatWrapper<N>::operator>(const native_type f) const; \
|
||||
template<> bool SoftFloatWrapper<N>::operator>=(const native_type f) const;
|
||||
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32,float)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32,double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32,long double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32,char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32,unsigned char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32,short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32,unsigned short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32,int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32,unsigned int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32,long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32,unsigned long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32,long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32,unsigned long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64,float)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64,double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64,long double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64,char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64,unsigned char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64,short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64,unsigned short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64,int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64,unsigned int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64,long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64,unsigned long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64,long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64,unsigned long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96,float)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96,double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96,long double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96,char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96,unsigned char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96,short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96,unsigned short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96,int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96,unsigned int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96,long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96,unsigned long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96,long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96,unsigned long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32, float)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32, double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32, long double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32, char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32, unsigned char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32, short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32, unsigned short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32, int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32, unsigned int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32, long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32, unsigned long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32, long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(32, unsigned long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64, float)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64, double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64, long double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64, char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64, unsigned char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64, short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64, unsigned short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64, int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64, unsigned int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64, long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64, unsigned long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64, long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(64, unsigned long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96, float)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96, double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96, long double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96, char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96, unsigned char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96, short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96, unsigned short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96, int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96, unsigned int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96, long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96, unsigned long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96, long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_NATIVE_OPS(96, unsigned long long)
|
||||
|
||||
|
||||
|
||||
// Generic versions are fine here, specializations in the cpp
|
||||
// Generic versions are fine here, specializations in the cpp
|
||||
|
||||
/// binary operators
|
||||
template<int N> SoftFloatWrapper<N> operator+(const SoftFloatWrapper<N>& f1, const SoftFloatWrapper<N>& f2);
|
||||
template<int N> SoftFloatWrapper<N> operator-(const SoftFloatWrapper<N>& f1, const SoftFloatWrapper<N>& f2);
|
||||
template<int N> SoftFloatWrapper<N> operator*(const SoftFloatWrapper<N>& f1, const SoftFloatWrapper<N>& f2);
|
||||
template<int N> SoftFloatWrapper<N> operator/(const SoftFloatWrapper<N>& f1, const SoftFloatWrapper<N>& f2);
|
||||
/// binary operators
|
||||
template<int N> SoftFloatWrapper<N> operator+(const SoftFloatWrapper<N>& f1, const SoftFloatWrapper<N>& f2);
|
||||
template<int N> SoftFloatWrapper<N> operator-(const SoftFloatWrapper<N>& f1, const SoftFloatWrapper<N>& f2);
|
||||
template<int N> SoftFloatWrapper<N> operator*(const SoftFloatWrapper<N>& f1, const SoftFloatWrapper<N>& f2);
|
||||
template<int N> SoftFloatWrapper<N> operator/(const SoftFloatWrapper<N>& f1, const SoftFloatWrapper<N>& f2);
|
||||
|
||||
#define STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_CLASS_OPS(N) \
|
||||
template<> SoftFloatWrapper<N> operator+(const SoftFloatWrapper<N>& f1, const SoftFloatWrapper<N>& f2); \
|
||||
template<> SoftFloatWrapper<N> operator-(const SoftFloatWrapper<N>& f1, const SoftFloatWrapper<N>& f2); \
|
||||
template<> SoftFloatWrapper<N> operator*(const SoftFloatWrapper<N>& f1, const SoftFloatWrapper<N>& f2); \
|
||||
template<> SoftFloatWrapper<N> operator/(const SoftFloatWrapper<N>& f1, const SoftFloatWrapper<N>& f2);
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_CLASS_OPS(32)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_CLASS_OPS(64)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_CLASS_OPS(96)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_CLASS_OPS(32)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_CLASS_OPS(64)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_CLASS_OPS(96)
|
||||
|
||||
#define STREFLOP_SOFT_WRAPPER_BINARY_OPS(native_type) \
|
||||
template<int N> SoftFloatWrapper<N> operator+(const SoftFloatWrapper<N>& f1, const native_type f2); \
|
||||
@@ -216,19 +224,19 @@ template<int N> bool operator<=(const native_type value, const SoftFloatWrapper<
|
||||
template<int N> bool operator>(const native_type value, const SoftFloatWrapper<N>& f); \
|
||||
template<int N> bool operator>=(const native_type value, const SoftFloatWrapper<N>& f);
|
||||
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(float)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(double)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(long double)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(char)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(unsigned char)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(short)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(unsigned short)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(int)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(unsigned int)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(long)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(unsigned long)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(long long)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(unsigned long long)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(float)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(double)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(long double)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(char)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(unsigned char)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(short)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(unsigned short)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(int)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(unsigned int)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(long)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(unsigned long)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(long long)
|
||||
STREFLOP_SOFT_WRAPPER_BINARY_OPS(unsigned long long)
|
||||
|
||||
|
||||
#define STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(N,native_type) \
|
||||
@@ -246,56 +254,56 @@ template<> bool operator<(const native_type value, const SoftFloatWrapper<N>& f)
|
||||
template<> bool operator<=(const native_type value, const SoftFloatWrapper<N>& f); \
|
||||
template<> bool operator>(const native_type value, const SoftFloatWrapper<N>& f); \
|
||||
template<> bool operator>=(const native_type value, const SoftFloatWrapper<N>& f);
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32,float)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32,double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32,long double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32,char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32,unsigned char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32,short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32,unsigned short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32,int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32,unsigned int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32,long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32,unsigned long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32,long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32,unsigned long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64,float)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64,double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64,long double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64,char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64,unsigned char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64,short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64,unsigned short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64,int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64,unsigned int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64,long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64,unsigned long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64,long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64,unsigned long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96,float)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96,double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96,long double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96,char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96,unsigned char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96,short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96,unsigned short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96,int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96,unsigned int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96,long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96,unsigned long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96,long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96,unsigned long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32, float)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32, double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32, long double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32, char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32, unsigned char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32, short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32, unsigned short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32, int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32, unsigned int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32, long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32, unsigned long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32, long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(32, unsigned long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64, float)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64, double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64, long double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64, char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64, unsigned char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64, short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64, unsigned short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64, int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64, unsigned int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64, long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64, unsigned long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64, long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(64, unsigned long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96, float)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96, double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96, long double)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96, char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96, unsigned char)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96, short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96, unsigned short)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96, int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96, unsigned int)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96, long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96, unsigned long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96, long long)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_BINARY_OPS(96, unsigned long long)
|
||||
|
||||
/// Unary operators
|
||||
template<int N> SoftFloatWrapper<N> operator-(const SoftFloatWrapper<N>& f);
|
||||
template<int N> SoftFloatWrapper<N> operator+(const SoftFloatWrapper<N>& f);
|
||||
/// Unary operators
|
||||
template<int N> SoftFloatWrapper<N> operator-(const SoftFloatWrapper<N>& f);
|
||||
template<int N> SoftFloatWrapper<N> operator+(const SoftFloatWrapper<N>& f);
|
||||
|
||||
#define STREFLOP_SOFT_WRAPPER_MAKE_REAL_UNARY_CLASS_OPS(N) \
|
||||
template<> SoftFloatWrapper<N> operator-(const SoftFloatWrapper<N>& f); \
|
||||
template<> SoftFloatWrapper<N> operator+(const SoftFloatWrapper<N>& f);
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_UNARY_CLASS_OPS(32)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_UNARY_CLASS_OPS(64)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_UNARY_CLASS_OPS(96)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_UNARY_CLASS_OPS(32)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_UNARY_CLASS_OPS(64)
|
||||
STREFLOP_SOFT_WRAPPER_MAKE_REAL_UNARY_CLASS_OPS(96)
|
||||
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user