Rasmus Munk Larsen
125cc9a5df
Implement vectorized complex square root.
Closes #1905
Measured speedup for sqrt of `complex<float>` on Skylake:
SSE:
```
name old time/op new time/op delta
BM_eigen_sqrt_ctype/1 49.4ns ± 0% 54.3ns ± 0% +10.01%
BM_eigen_sqrt_ctype/8 332ns ± 0% 50ns ± 1% -84.97%
BM_eigen_sqrt_ctype/64 2.81µs ± 1% 0.38µs ± 0% -86.49%
BM_eigen_sqrt_ctype/512 23.8µs ± 0% 3.0µs ± 0% -87.32%
BM_eigen_sqrt_ctype/4k 202µs ± 0% 24µs ± 2% -88.03%
BM_eigen_sqrt_ctype/32k 1.63ms ± 0% 0.19ms ± 0% -88.18%
BM_eigen_sqrt_ctype/256k 13.0ms ± 0% 1.5ms ± 1% -88.20%
BM_eigen_sqrt_ctype/1M 52.1ms ± 0% 6.2ms ± 0% -88.18%
```
AVX2:
```
name old cpu/op new cpu/op delta
BM_eigen_sqrt_ctype/1 53.6ns ± 0% 55.6ns ± 0% +3.71%
BM_eigen_sqrt_ctype/8 334ns ± 0% 27ns ± 0% -91.86%
BM_eigen_sqrt_ctype/64 2.79µs ± 0% 0.22µs ± 2% -92.28%
BM_eigen_sqrt_ctype/512 23.8µs ± 1% 1.7µs ± 1% -92.81%
BM_eigen_sqrt_ctype/4k 201µs ± 0% 14µs ± 1% -93.24%
BM_eigen_sqrt_ctype/32k 1.62ms ± 0% 0.11ms ± 1% -93.29%
BM_eigen_sqrt_ctype/256k 13.0ms ± 0% 0.9ms ± 1% -93.31%
BM_eigen_sqrt_ctype/1M 52.0ms ± 0% 3.5ms ± 1% -93.31%
```
AVX512:
```
name old cpu/op new cpu/op delta
BM_eigen_sqrt_ctype/1 53.7ns ± 0% 56.2ns ± 1% +4.75%
BM_eigen_sqrt_ctype/8 334ns ± 0% 18ns ± 2% -94.63%
BM_eigen_sqrt_ctype/64 2.79µs ± 0% 0.12µs ± 1% -95.54%
BM_eigen_sqrt_ctype/512 23.9µs ± 1% 1.0µs ± 1% -95.89%
BM_eigen_sqrt_ctype/4k 202µs ± 0% 8µs ± 1% -96.13%
BM_eigen_sqrt_ctype/32k 1.63ms ± 0% 0.06ms ± 1% -96.15%
BM_eigen_sqrt_ctype/256k 13.0ms ± 0% 0.5ms ± 4% -96.11%
BM_eigen_sqrt_ctype/1M 52.1ms ± 0% 2.0ms ± 1% -96.13%
```
2020-12-08 18:13:35 -08:00
..
2019-01-17 11:33:43 +01:00
2019-10-08 16:28:14 +02:00
2020-12-04 21:45:09 +00: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
2020-11-14 05:50:42 +00:00
2019-12-19 13:42:14 +01:00
2020-11-23 14:13:59 -08:00
2019-01-25 14:54:39 +01:00
2020-11-13 16:21:53 +01:00
2019-01-15 15:09:49 +01:00
2020-11-10 13:07:34 -03: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
2020-11-27 08:11:49 +11:00
2020-04-13 16:41:20 +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
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
2020-09-30 08:42:03 -07:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2020-06-11 00:56:54 +00:00
2018-07-17 14:46:15 +02:00
2018-07-17 14:46:15 +02:00
2020-07-09 19:54:48 +00:00
2020-01-11 15:02:29 +01:00
2018-07-17 14:46:15 +02:00
2020-08-20 00:29:57 +00:00
2020-11-23 14:13:59 -08: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
2020-05-20 16:04:16 +02:00
2020-03-23 18:09:02 +00:00
2018-07-17 14:46:15 +02:00
2020-01-07 14:35:35 +00:00
2019-01-29 10:27:13 +01:00
2019-12-11 18:22:57 +00: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
2020-12-03 11:27:32 -08: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
2020-11-18 20:23:20 +00: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
2020-06-11 23:43:25 +00: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
2020-06-20 19:16:24 +00:00
2020-10-09 20:05:49 +00:00
2020-12-08 18:13:35 -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
2020-04-28 16:12:47 +00: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
2020-06-30 18:53:55 +00: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
2020-06-11 23:43:25 +00: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
2020-08-26 12:32:20 +02:00
2018-07-18 23:33:07 +02:00
2018-07-17 14:46:15 +02:00
2020-11-18 23:15:33 +00: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
2020-05-14 22:38:20 +00: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
2020-07-01 00:51:15 +00: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