Change log for Vector class library
-----------------------------------

2021-08-18 version 2.01.04
  * fix bug in elementtype for Vec8uq
  * improved optimization of permute functions in MS compiler by using constexpr

2020-11-04 version 2.01.03
  * fix overflow in sin, cos, tan for large x
  * fix bug in is_nan for instruction sets prior to AVX
  * warning for MS compiler versions with poor support for AVX512

2020-04-11 version 2.01.02
  * only minor fixes

2020-02-25 version 2.01.01
  * added function store_nt
  * New dispatch_example1.cpp dispatch_example2.cpp

2019-11-23 version 2.01.00
  * problem with performance of permute and blend functions fixed by avoiding
    unions in constexpr functions

2019-10-31 version 2.00.02
  * bug fix in permute function
  * is_nan function improved
  * templates constant4ui etc. improved

2019-08-02 version 2.00
  Derived from version 1.40
  * use C++17
  * use compact boolean vectors of all sizes if AVX512VL is enabled
  * permute and blend functions improved, using C++17 metaprogramming features
  * deprecated functions removed

2019-08-02 version 1.40
  * hosted on github
  * license changed to Apache 2.0.
  * added classes Vec64c, Vec64uc, Vec32s, Vec32us
  * test bench and scripts for automatic testing of VCL
  * new functions: maximum, minimum, to_float, to_double
  * conversion of bitfields to boolean vectors with load_bits. This replaces to_vec4ib etc.
  * shift_bytes_up/down functions changed to templates (old versions deprecated)
  * removed VECTORMATH define. vectormath_lib.h rewritten. svmlpatch.lib added.
  * many improvements and bug fixes
  * renamed functions: round_to_int and round_to_int64 functions renamed to roundi,
  * renamed functions: the type letter is removed from all permute and blend functions,
    e.g. permute4f renamed to permute4.
    These changes are made to facilitate generic template programming
  * renamed functions: to_Vec.. Replaced by load_bits member functions
  * deprecated functions: set_bit, get_bit
  * deprecated bit vector classes: Vec128b, Vec256b, Vec512b

2017-07-27 version 1.30
  * fixed bug in permute8f for a particular combination of indexes

2017-05-10 version 1.29
  * Reversed Apple Clang patch in version 1.28 because the problem has reoccurred in
    later versions of Clang

2017-05-02 version 1.28
  * Fixed problem with Apple Clang version 6.2 in vectorf128.h
  * Fixed return type for Vec8sb operator > (Vec8us, Vec8us)
  * cpuid function modified in instrset_detect.cpp

2017-02-19 version 1.27
  * fixed problem with scatter functions in MS Visual Studio

2016-12-21 version 1.26
  * added constant4ui template
  * fixed error for complexvec.h with clang
  * fixed error in vectormath_exp.h for MAX_VECTOR_SIZE < 512

2016-11-25 version 1.25
  * scatter functions
  * new functions to_float for unsigned integer vectors
  * instrset_detect function can detect AVX512VL, AVX512BW, AVX512DQ
  * functions hasF16C and hasAVX512ER for detecting instruction set extensions
  * fix bugs in horizontal_and and pow(0,0) for AVX512
  * functions improved for AVX512 and AVX512VL: pow, approx_recipr,
      approx_rsqrt
  * functions improved for AVX512DQ: 64 bit multiplication, to_double,
      32 and 64 bit rotate_left, round_to_int64, truncate_to_int64
  * functions improved for AVX512ER: approx_recipr, approx_rsqrt,
      exponential functions

2016-10-31 version 1.24
  * fix bug in Vec8uq constructor in vectori512e.h

2016-09-27 version 1.23
  * temporary fix of a problem in Clang version 3.9 inserted in vectorf128.h

2016-05-03 version 1.22
  * added optional namespace
  * fixed problem with decimal.h

2016-04-24 version 1.21
  * fix problems with XOP option in gcc
  * improved horizontal_and/or for sse2
  * improved Vec2q and Vec4q constructor on Microsoft Visual Studio 2015
  * removed warnings by gcc option -Wcast-qual

2015-12-04 version 1.20
  * round functions: suppress precision exception under SSE4.1 and higher
  * fix compiler problems with AVX512 multiplication in gcc version 5.1
  * fix compiler problems with pow function in Microsoft Visual Studio 2015

2015-11-14 version 1.19
  * fix various problems with Clang compiler

2015-09-25 version 1.18
  * fix compiler error for Vec8s divide_by_i(Vec8s const & x) under Clang compiler
  * fix error in Vec4d::size() in vectorf256e.h

2015-07-31 version 1.17
  * improved operator > for Vec4uq
  * more special cases in blend4q
  * nan_code functions made static inline
  * template parameter BTYPE renamed to BVTYPE in mathematical functions to avoid clash
      with macro named BTYPE in winnt.h
  * fixed bug in Vec4db constructor

2014-10-24 version 1.16
  * workaround for problem in Clang compiler extended to version 3.09 because not
      fixed yet by Clang (vectorf128.h line 134)
  * recognize problem with Apple version of Clang reporting wrong version number
  * remove various minor problems with Clang
  * function pow(vector, int) modified to strengthen type checking and avoid compiler warnings
  * manual discusses dynamic allocation of arrays of vectors
  * various minor changes

2014-10-17 version 1.15
  * added files ranvec1.h and ranvec1.cpp for random number generator
  * constructors to make boolean vectors from their elements
  * constructors and = operators to broadcast boolean scalar into boolean vectors
  * various lookup functions improved
  * operators &, |, ^, ~, etc. defined for various boolean vectors to avoid converson
      to integer vectors
  * nmul_add functions
  * mul_add etc. moved to main header files
  * explicit fused multiply-and-add used in math functions to improve performance
      on compilers that don't automatically insert FMA

2014-07-24 version 1.14
  * support for AVX-512f instruction set and 512-bit vectors:
      Vec16i, Vec16ui, Vec8q, Vec8uq, Vec16f, Vec8d, and corresponding boolean vectors
  * new define MAX_VECTOR_SIZE, valid values are 128, 256 and 512
  * added hyperbolic functions sinh, cosh, tanh, asinh, acosh, atanh
  * size() member function on all vector classes returns the number of elements
  * functions for conversion between boolean vectors and integer bitfields
  * extracting an element from a boolean vector now returns a bool, not an int
  * improved precision in exp2 and exp10 functions
  * various bug fixes

2014-05-11 version 1.13
  * pow function improved
  * mul_add, mul_sub, mul_sub_x functions
  * propagation of error codes through nan_code function
  * "denormal" renamed to "subnormal" everywhere, in accordance with IEEE 754-2008 standard

2014-04-20 version 1.12
  * inline implementation of mathematical functions added (vectormath_exp.h vectormath_trig.h
      vectormath_common.h)
  * vectormath.h renamed to vectormath_lib.h because a new alternative is added
  * gather functions with constant indexes
  * function sign_combine
  * function pow_const(vector, const int)
  * function pow_ratio(vector, const int, const int)
  * functions horizontal_find_first, horizontal_count
  * function recipr_sqrt removed
  * functions round_to_int64_limited, truncate_to_int64_limited, to_double_limited
  * function cubic_root renamed to cbrt
  * function atan(vector,vector) renamed to atan2
  * function if_mul
  * function Vec4i round_to_int(Vec2d)
  * operator & (float vector, boolean vector)
  * operator &= (int vector, int vector)
  * removed constructor Vec128b(int) and Vec256b(int) to avoid implicit conversion
  * removed signalling nan function
  * minor improvements in various blend and lookup functions

2014-03-01 version 1.11
  * fixed missing unsigned operators >>= in vectori256.h

2013-10-04 version 1.10
  * clear distinction between boolean vectors and integer vectors for the sake of
      compatibility with mask registers in forthcoming AVX512 instruction set
  * added function if_add
  * tentative support for clang version 3.3 with workaround for bugs
  * remove ambiguity for builtin m128i operator == in clang compiler.
  * problems in clang compiler, bug reports filed at clang
      (http://llvm.org/bugs/show_bug.cgi?id=17164, 17312)
  * instrset.h fixes problem with macros named min and max in MS windows.h
  * workaround problem in MS Visual Studio 11.0. Bug report 735861 and 804274
  * minor bug fixes

2013-03-31 version 1.03 beta
  * bug fix for Vec2d cos (Vec2d const & x), VECTORMATH = 1

2012-08-01 version 1.02 beta
  * added file vector3d.h for 3-dimensional vectors
  * added file complexvec.h for complex numbers and complex vectors
  * added file quaternion.h for quaternions
  * added function change_sign for floating point vectors
  * added operators +, -, *, / between floating point vectors and scalars to remove
      overloading ambiguity

2012-07-08 version 1.01 beta
  * added file decimal.h with Number <-> string conversion functions:
      bin2bcd, bin2ascii, bin2hex_ascii, ascii2bin
  * added andnot function for boolean vectors
  * added functions shift_bytes_up and shift_bytes_down
  * added operators for unsigned integer vector classes: >>=, &, &&, |, ||, ^, ~
  * inteldispatchpatch.cpp removed. Use asmlib instead (www.agner.org/optimize/#asmlib)
  * prefix ++ and -- operators now return a reference, postfix operators return a value
  * various improvements in permute and blend functions
  * minor improvement in abs function
  * added version number to VECTORCLASS_H

2012-05-30 version 1.00 beta
  * first public release at www.agner.org
