<a href="http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd.png"><img class="aligncenter size-medium wp-image-242" alt="arrayfire_logo_whitebkgnd" src="http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd-300x42.png" width="300" height="42" /></a>

It's that time again—we're pleased to announce the release of our newest version of ArrayFire: <strong>ArrayFire v2.1</strong>.

ArrayFire v2.1 is now bigger, faster, and stronger, thanks to some key function additions, API changes, feature improvements, and bug fixes.

ArrayFire is a CUDA and OpenCL library designed for maximum speed without the hassle of writing time-consuming CUDA and OpenCL device code.  With ArrayFire’s library functions, developers can maximize productivity and performance. Each of ArrayFire’s functions has been hand-tuned by CUDA and OpenCL experts.
<h3>Major Updates</h3>
[icon type="angle-double-right"] Support for CUDA 6.0
[icon type="angle-double-right"] Support for Mac OS X
[icon type="angle-double-right"] New language support (<a href="https://github.com/arrayfire">available on github</a>)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type="caret-right"] <a href="https://github.com/arrayfire/arrayfire_java">ArrayFire for Java</a>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type="caret-right"] <a href="https://github.com/arrayfire/arrayfire_r">ArrayFire for R!</a>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type="caret-right"] <a href="https://github.com/arrayfire/arrayfire_fortran">ArrayFire for Fortran</a>*
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type="angle-double-right"] <a href="https://github.com/arrayfire">ArrayFire Extras on Github</a>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type="caret-right"] All language wrappers
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type="caret-right"] <a href="https://github.com/arrayfire/arrayfire_examples">Rolling updates to examples</a>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type="caret-right"] <a href="https://github.com/arrayfire/arrayfire_opengl_interop">OpenGL interop example</a>

<em>*ArrayFire for Fortan has been removed from the installed library, but can be downloaded from the ArrayFire Extras GitHub page linked above.</em>
<h3>Function Additions</h3>
[icon type="angle-double-right"] Image transformation (warp affine) functions
[icon type="caret-right"] <a href="http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__transform.htm#ga886e586ee8e8c259202c06bd134d828a">transform()</a>
[icon type="angle-right"] affine and inverse affine transform of an image
[icon type="caret-right"] <a href="http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__translate.htm#ga1615c8ea000ad113a0dc7a9313d7b645">translate()</a>
[icon type="angle-right"] translate an image using affine transforms
[icon type="caret-right"] <a href="http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__scale.htm#ga288ebb8f3c3fb1c3a96260db4cc3b0cc">scale()</a>
[icon type="angle-right"] scale an image using affine transforms
[icon type="caret-right"] <a href="http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__skew.htm#gaacc7eb5f757a28d2e7d762f6b489fd5b">skew()</a>
[icon type="angle-right"] skew an image using affine transforms
[icon type="angle-double-right"] Coordinate transformation (homogeneous transformation) functions
[icon type="caret-right"] transform_coords()
[icon type="angle-right"] Up to 3D homogeneous transformations
[icon type="caret-right"] rotate_coords()
[icon type="angle-right"] rotation matrix wrapper for homogeneous coordinate transformation
<h3>API Changes</h3>
[icon type="angle-double-right"] <a href="http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98">rotate()</a>
[icon type="caret-right"] Added optional 4th parameter `recenter`
[icon type="angle-double-right"] af_filter removed
<h3>Feature Improvements</h3>
[icon type="angle-double-right"] <a href="http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073">approx1()</a> and <a href="http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#ga33ead0c86faace1072a227cd82a19bc1">approx2()</a> now support nearest interpolation
[icon type="angle-double-right"] <a href="http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98">rotate()</a>, <a href="http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b">resize()</a>, <a href="http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__convolve.htm#ga7a76750edf6c2d200ce8adf0740574c5">convolve()</a> work for stack of images(3D) and gfor
[icon type="angle-double-right"] new indexing functions to add support for 4-th dimension gfor
[icon type="angle-double-right"] host pinned memory support for OpenCL
<h3>Bug Fixes</h3>
[icon type="angle-double-right"] <a href="http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__loadimage.htm#gacd12e91d2760fe62fc6b781ae39d30be">loadimage()</a>
[icon type="caret-right"] fixed bug with grayscale image reading
[icon type="angle-double-right"] <a href="http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__gaussiankernel.htm#gad77314eb6df8aae428d52898b5b6a78e">gaussiankernel()</a>
[icon type="caret-right"] fixed computation of gaussian kernel values
[icon type="angle-double-right"] <a href="http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b">resize()</a>
[icon type="caret-right"] fixed resize in OpenCL
[icon type="angle-double-right"] <a href="http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__medfilt.htm#ga4bf90c566ac99adb38d679a5a598b65f">medfilt()</a>
[icon type="caret-right"] fixed to handle more data types
[icon type="angle-double-right"] <a href="http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98">rotate()</a>
[icon type="caret-right"] fixed rounding issue on Tahiti GPUs
[icon type="angle-double-right"] <a href="http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073">approx1()</a>
[icon type="caret-right"] fixed for gfor use
[icon type="angle-double-right"] <a href="http://www.sandbox.arrayfire.com/docs/group__array__func__cpp__flip.htm#ga920af856ce0c993a929850149a289d60">flip()</a>
[icon type="caret-right"] fixed launch configuration
[icon type="angle-double-right"] indexing now works on intel GPUs
<h3>Performance Improvements</h3>
[icon type="angle-double-right"] <a href="http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98">rotate()</a> rewritten to improve performance

<span style="line-height: 1.5em;">Visit our sleek, new <a href="http://www.sandbox.arrayfire.com/docs/">documentation</a> to see ArrayFire in action and to view the complete list of all the enhancements available with ArrayFire v2.1.</span>

While you're at it, be sure to check out our <a href="http://sandbox.arrayfire.com/#licensing">ArrayFire licensing information</a>  to learn more about which licensing option would be the best for your needs.
<div>

Just getting started with GPU computing? Need an extra hand on a project? Tap into our deep parallel computing expertise and vast code base by setting up a free <a href="http://www.meetme.so/arrayfire">technical consultation</a> today.

We’re always looking to make ArrayFire even better—let us know your thoughts through this short <a href="https://www.surveymonkey.com/s/arrayfire-new-feature">survey</a>. We promise it’ll be worth your while!

</div>