Rasmus Munk Larsen
f1e8307308
1. Fix a bug in psqrt and make it return 0 for +inf arguments.
...
2. Simplify handling of special cases by taking advantage of the fact that the
builtin vrsqrt approximation handles negative, zero and +inf arguments correctly.
This speeds up the SSE and AVX implementations by ~20%.
3. Make the Newton-Raphson formula used for rsqrt more numerically robust:
Before: y = y * (1.5 - x/2 * y^2)
After: y = y * (1.5 - y * (x/2) * y)
Forming y^2 can overflow for very large or very small (denormalized) values of x, while x*y ~= 1. For AVX512, this makes it possible to compute accurate results for denormal inputs down to ~1e-42 in single precision.
4. Add a faster double precision implementation for Knights Landing using the vrsqrt28 instruction and a single Newton-Raphson iteration.
Benchmark results: https://bitbucket.org/snippets/rmlarsen/5LBq9o
2019-11-15 17:09:46 -08:00
..
2019-01-17 11:33:43 +01:00
2019-10-08 16:28:14 +02:00
2019-10-08 09:15:17 +02:00
2018-10-09 22:54:54 +02:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2019-03-14 10:08:12 +01:00
2018-07-17 14:46:15 +02:00
2018-07-17 15:52:58 +02:00
2019-01-17 01:17:39 +01:00
2019-01-25 14:54:39 +01:00
2019-01-15 15:09:49 +01:00
2019-01-25 14:54:39 +01:00
2016-05-18 14:03:03 +02:00
2016-05-18 14:03:03 +02:00
2016-05-18 14:03:03 +02:00
2019-01-17 01:17:39 +01:00
2018-07-17 14:46:15 +02:00
2019-05-31 14:08:34 -07:00
2018-07-17 14:46:15 +02:00
2019-01-25 14:54:39 +01:00
2018-07-18 23:33:07 +02:00
2019-03-18 11:38:36 +01:00
2018-07-17 14:46:15 +02:00
2018-11-23 15:37:09 +01:00
2019-02-19 10:31:56 +01:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2019-03-14 10:18:24 +01:00
2018-07-17 14:46:15 +02:00
2018-10-10 23:38:22 +02:00
2018-07-17 14:46:15 +02:00
2019-02-20 13:52:11 +01:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2019-01-17 19:14:07 +01:00
2018-07-17 14:46:15 +02:00
2013-11-06 18:17:59 +01:00
2018-11-16 11:24:51 +01:00
2018-07-18 23:27:37 +02:00
2018-10-11 09:45:30 +02:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2018-08-27 10:38:20 +02:00
2019-01-15 22:50:42 +01:00
2018-07-17 14:46:15 +02:00
2019-05-31 15:26:06 -07:00
2019-08-27 11:30:31 -07:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2019-01-25 14:54:39 +01:00
2019-09-11 15:40:07 +02:00
2019-03-14 11:40:28 +01:00
2018-07-17 14:46:15 +02:00
2018-09-10 18:57:28 +02:00
2019-01-29 10:27:13 +01:00
2018-07-17 14:46:15 +02:00
2018-11-21 15:59:47 +01:00
2019-01-17 01:17:39 +01:00
2018-07-17 14:46:15 +02:00
2018-07-17 15:52:58 +02:00
2018-07-17 14:46:15 +02:00
2019-02-11 17:56:20 +01:00
2019-10-08 09:15:17 +02:00
2018-07-18 02:26:43 -07:00
2018-08-28 18:32:39 +02:00
2018-07-17 14:46:15 +02:00
2019-10-10 17:41:47 +02:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2018-07-26 00:01:24 +02:00
2019-08-07 14:19:00 -07:00
2019-01-17 18:27:25 +01:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2019-02-18 22:03:47 +01:00
2018-07-17 14:46:15 +02:00
2019-01-15 11:18:48 +01:00
2019-11-15 17:09:46 -08:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2019-11-13 21:16:53 +01:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2018-11-16 11:24:51 +01:00
2019-09-10 23:29:52 +02:00
2019-02-18 14:45:55 +01:00
2018-07-17 14:46:15 +02:00
2018-07-17 15:52:58 +02:00
2019-09-11 15:04:25 +02:00
2019-09-10 23:29:52 +02:00
2019-09-11 15:04:25 +02:00
2018-07-17 14:46:15 +02:00
2019-09-11 15:04:25 +02:00
2019-09-10 16:25:24 +02:00
2019-11-13 21:16:53 +01:00
2019-01-17 01:17:39 +01:00
2019-01-17 01:17:39 +01:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2018-10-10 13:23:52 -07:00
2019-03-03 15:25:25 +01:00
2019-01-17 17:35:32 +01:00
2018-07-17 14:46:15 +02:00
2019-09-24 11:09:58 +02:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2019-01-25 14:54:39 +01:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2019-01-17 01:17:39 +01:00
2019-01-28 17:29:50 +01:00
2018-07-18 23:33:07 +02:00
2018-07-17 14:46:15 +02:00
2018-07-20 17:51:17 +02:00
2018-07-17 14:46:15 +02:00
2018-10-16 00:43:44 +02:00
2019-01-16 15:24:59 +01:00
2018-07-17 14:46:15 +02:00
2019-02-20 13:59:34 +01:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2019-02-19 22:57:51 +01:00
2018-07-17 14:46:15 +02:00
2018-07-16 18:55:40 +02:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2018-10-07 21:54:49 +02:00
2018-10-07 21:54:49 +02:00
2018-10-07 21:54:49 +02:00
2018-10-07 21:54:49 +02:00
2018-10-07 21:54:49 +02:00
2018-10-07 21:54:49 +02:00
2019-11-14 11:45:52 +01:00
2018-07-17 14:46:15 +02:00
2019-01-17 01:17:39 +01:00
2018-07-12 17:16:40 +02:00
2018-07-17 14:46:15 +02:00
2019-01-15 10:51:03 +01:00
2019-05-10 14:57:05 +02:00
2019-02-20 15:23:23 +01:00
2018-11-23 15:12:06 +01:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2018-09-21 14:40:26 +02:00
2018-07-17 14:46:15 +02:00
2018-12-06 16:55:00 +01:00
2019-01-17 16:55:42 +01:00
2018-07-17 14:46:15 +02:00
2019-01-15 15:21:14 +01:00