## Vc 0.7.0 Released

Vc 0.7.0 is ready. This release has seen major polishing, making it more intuitive and portable than any previous Vc release.

The compiler support was greatly improved:- GCC from version 4.1 on can compile Vc
- clang 3.2
- ICC 13.x
- MSVC 2010 and 2012 are nearly fully supported. Full support is targeted for Vc 0.7.1.

The trigonometric functions have been reworked, leading to much higher precision. This came at the cost of speed. Vc 0.8 will look at more improvements and compromises in this area.

A major feature in 0.7 is the way operators are implemented. The Vc types now follow the C/C++ standards much closer how types implicitly convert when two different types are used with an operator. Examples for builtin types:

int * unsigned int -> unsigned int float * int -> float float * double -> double

Vc was too picky before 0.7 and OTOH did some implicit conversions that could lead to unexpected results. For example `int_v * float`

would lead to the `float`

getting converted to `int_v`

instead of the `int_v`

getting converted to `float_v`

and the `float`

broadcast to another `float_v`

. I.e. old behavior:

int_v * float_v -> error int_v * float -> int_v int_v * uint_v -> error int_v * unsigned int -> int_v float_v * double -> float_v

The new behavior is now consistent with the behavior of builtin types - or stricter because different vector sizes do not combine

int_v * float_v -> float_v int_v * float -> float_v int_v * uint_v -> uint_v int_v * unsigned int -> uint_v float_v * double -> error (correct would be double_v, but that can't work because float_v::Size != double_v::Size)

*Download:*

Vc-0.7.0.tar.gz

## Comments