The release notes, newest first. Each release's full entry, with what was
checked, is in debian/changelog (the same text as
crmvec.spec's), and on the
releases page.
- 0.12.2: the bfloat16 functions are correctly rounded when built by GCC
13 on AArch64 with the fp16 extension (
-march=nativeon most current Arm cores), where GCC 13 loads__bf16constants as binary16 (GCC bug 111867): those files are now compiled with fp16 off there; packages built for the baseline architecture were not affected. On AArch64,make checknow checks every half and bfloat16 input. The CORE-MATH files are those of its master atea7a421, with the same numeric results and exception flags as before on every input checked.sinof an infinity or a NaN now returns +NaN (it was -NaN), as CORE-MATH's does since 040ee48, so the fast mode's kernel version is 2 (onlysindiffers from version 1). The libraries' results are otherwise the same as 0.12.1's. - 0.12.1: builds on older distribution releases:
crmvec.specbuilds with gcc-toolset-14 on RHEL 8 and 9 and with gcc13 on openSUSE Leap 15, and its packages passmake checkon AlmaLinux 8, 9 and 10, Leap 15.6 and 16.0 and Debian 13; building needs gcc 13 or newer, whichmakechecks first; the checks work on openSUSE and with MPFR older than 4.2. The libraries are the same as 0.12.0's. - 0.12.0: the fast mode's AVX2 entry points bind straight to its kernels
(a median 1.02 times glibc's time, from 1.09) with the same results, which
are now versioned and checked (kernel version 1, unchanged since 0.10.0);
crmvec-stamprecords a fast-mode run as such; and docs/distros.md, what crmvec changes on 14 LTS distributions. - 0.11.1: CORE-MATH's current
f16/cbrtf16.c, which no longer calls the C library'scbrtf, so crmvec's workaround for it is gone; the same results on every half and bfloat16 input. - 0.11.0:
libcrpreload.soon aarch64 too; in it, a faster path for underflowingexp,exp2,exp10,erfcandtgamma(a whole FreeSurfer run costs 13% more than with glibc, not 27%); ways to turn the correctly rounded math on without changing the operating system (docs/lab.md); and CORE-MATH's currentsin.candpow.c, with the same results. - 0.10.0: on x86-64, a fast mode,
fast/libmvec.so.1(crmvec-run --fast), which is not correctly rounded but stays within OpenCL's accuracy bound for each function at about glibc's speed, with the same bits on every CPU with AVX2 and FMA (docs/fast-mode.md). - 0.9.0:
libcrpreload.so, which puts CORE-MATH's correctly rounded functions behind a program's ordinary scalar libm calls (crmvec-run --libm;crpreload/README.md). - 0.8.0: 18 float functions on new AVX2 vector paths that compute just enough precision to decide the rounding, with the same results as before on every input and 0.22 to 0.90 of 0.7.2's time.
- 0.7.2: a vector path for double
rsqrton x86, 2.6 times faster than CORE-MATH's scalarrsqrton a Zen 3, and CORE-MATH's currentpowf.candsin.c, with no changed result found. - 0.7.1: a
powf.cwithout an undefined shift that 0.7.0's copy reaches. - 0.7.0: on riscv64, a build for VLEN 256, chosen at load, which is 2.3 times faster on a SpacemiT X60 (1.64 times SLEEF's time, with correctly rounded results).
- 0.6.1: the library links and runs with glibc before 2.25, as conda-forge needs.
- 0.6.0: fixes from a full review (among them a crash on CPUs with AVX but not AVX2), AVX-512 entry points from the portable core, and faster aarch64 floats.
- 0.1.0 to 0.5.0: in
debian/changelog.