SoftFloat integrated (#8668)
authorRostislav Vasilikhin <savuor@gmail.com>
Mon, 29 May 2017 14:07:25 +0000 (17:07 +0300)
committerVadim Pisarevsky <vadim.pisarevsky@gmail.com>
Mon, 29 May 2017 14:07:25 +0000 (17:07 +0300)
commitc6a3a18894095cb9c168056e63918e9255b2a717
tree1491b266cb6ac8b68b806ab3fec727fbb31062e2
parentd54b1ad88ad2a0564356ba114116abd1f7666f8c
SoftFloat integrated  (#8668)

* everything is put into softfloat.cpp and softfloat.hpp

* WIP: try to integrate softfloat into OpenCV

* extra functions removed

* softfloat made stateless

* CV_EXPORTS added

* operators fixed

* exp added, log: WIP

* log32 fixed

* shorter names; a lot of TODOs

* log64 rewritten

* cbrt32 added

* minors, refactoring

* "inline" -> "CV_INLINE"

* cast to bool warnings fixed

* several warnings fixed

* fixed warning about unsigned unary minus

* fixed warnings on type cast

* inline -> CV_INLINE

* special cases processing added (NaNs, Infs, etc.)

* constants for NaN and Inf added

* more macros and helper functions added

* added (or fixed) tests for pow32, pow64, cbrt32

* exp-like functions fixed

* minor changes

* fixed random number generation for tests

* tests for exp32 and exp64: values are compared to SoftFloat-based naive implementation

* minor warning fix

* pow(f, i) 32/64: special cases handling added

* unused functions removed

* refactoring is in progress (not compiling)

* CV_inline added

* unions {uint_t, float_t} removed

* tests compilation fixed

* static const members -> static methods returning const

* reinterpret_cast

* warning fixed

* const-ness fixed

* all FP calculations (even compile-time) are done in SoftFloat + minor fixes

* pow(f, i) removed from interface (can cause incorrect cast) to internals of pow(f, f), tests fixed

* CV_INLINE -> inline

* internal constants moved to .cpp file

* toInt_minMag() methods merged into toInt() methods

* macros moved to .cpp file

* refactoring: types renamed to softfloat and softdouble; explicit constructors, etc.

* toFloat(), toDouble() -> operator float(), operator double()

* removed f32/f64 prefixes from functions names

* toType() methods removed, round() and trunc() functions added

* minor change

* minors

* MSVC: warnings fixed

* added int cvRound(), cvFloor, cvCeil, cvTrunc, saturate_cast<T>()

* typo fixed

* type cast fixed
modules/core/include/opencv2/core.hpp
modules/core/include/opencv2/core/softfloat.hpp [new file with mode: 0644]
modules/core/src/precomp.hpp
modules/core/src/softfloat.cpp [new file with mode: 0644]
modules/core/test/test_math.cpp
modules/ts/include/opencv2/ts/ts_gtest.h