Eigen vs. BLAS/LAPACK libraries, Apple M4 with NEON (October 2026)

Single-threaded BLAS (AXPY, DOT, GEMV, GEMM, TRSM, SYRK) and LAPACK (POTRF, GETRF, GEQRF, SYEV, GESDD, GEEV): Eigen master built for NEON alone against OpenBLAS on an Apple M4 Mac mini.

The cells of the Apple M4 SME page measured again on the same machine with Eigen compiled for NEON alone, the default for this platform, against OpenBLAS: what the comparison looks like without the SME unit.

Apple Accelerate and Arm Performance Libraries are not on this page: neither can be held to NEON through documented means. For the comparison with them, see the SME page.

This page was first published with a measurement of 2026-09-20 at Eigen master 46a2d0c56 on macOS 27.0. It now shows Eigen measured again at master 3cf994918 on macOS 27.0.1, the tree of the SME page’s October measurement. Against September, Eigen’s NEON rates repeat within 3 % (geometric mean per operation and scalar) except TRSM, 12 % faster, and SYEV in double and GEEV, 7 to 9 % slower. The GEMV ratios in double above n = 1000 fell because OpenBLAS’s dgemv measured faster in the October session than in September’s (2.6× at n = 1024). The September version of the page and its result files are in the history of the website repository.

Conditions

CPU Apple M4 (Mac mini, Mac16,10), 4 performance and 6 efficiency cores; performance cores: L1d 128 KiB, L2 16 MiB shared by the four; efficiency cores: L1d 64 KiB, L2 4 MiB shared by the six; 24 GiB unified memory; SME2 with a 512-bit streaming vector length and FEAT_SME_F64F64, no non-streaming SVE
OS macOS 27.0.1 (build 26A434), Darwin 27.0.0
Compiler Apple clang 21.0.0 (clang-2100.3.34.2), -O3 -DNDEBUG for the default arm64 target, no -mcpu, C++17
Eigen master 3cf994918 (5.0.1-dev), default configuration, no external BLAS. Without -mcpu=apple-m4 the compiler does not define __ARM_FEATURE_SME2, so every Eigen kernel is the NEON code
OpenBLAS 0.3.34 (Homebrew bottle, DYNAMIC_ARCH, OpenMP build), kernel target vortexm4, not measured again: its rates are those of the SME page’s session of 2026-10-01 to 2026-10-02, whose OpenBLAS result files are kept with this page’s
Interface the library is called through the Fortran BLAS and LAPACK symbols (dgemm_, dpotrf_, …) with column-major operands
Threads 1 for every arm: OPENBLAS_NUM_THREADS and OMP_NUM_THREADS set to 1; Eigen built without OpenMP
Method Google Benchmark 1.9.5, 10 repetitions of at least 0.2 s each per cell, median of the 10 rates. macOS has no interface for binding a thread to a core, so the process is not pinned
Date Eigen: 2026-10-02 to 2026-10-03 (36 runs, about 3.0 hours of measurement). OpenBLAS: the night of 2026-10-01 to 2026-10-02, the SME page’s session
Harness benchmarks/comparison/run.py --isa aarch64-neon from Eigen merge request !2903, machine profile apple-m4-mac-mini

GEMM at n = 1024 ran at 60 GFLOP/s in double and 121 in float in Eigen, against 57 and 114 for OpenBLAS.

How to read the numbers. Every rate is nominal GFLOP/s: the textbook operation count of the operation, stated in each section below, divided by the median wall time of one call. Both arms of a comparison are built into the same binary and run on the same freshly randomized operands, and the reference library’s result is validated against Eigen’s before it is timed. Eigen was measured three times, in the three binaries of the same build, those linked against OpenBLAS, Accelerate and Arm Performance Libraries, where only the Eigen cells ran. The Eigen line on each chart is the median of the three passes and the shaded band is their spread, the run-to-run noise on this host: within 3 % for 95 % of the cells and above 10 % for 0.2 %. The widest spread depends on the binary rather than on noise: GETRF in float at n = 100 runs at 23 GFLOP/s in the binaries linked against OpenBLAS and Accelerate and at 36.5 in the third, while the ten repetitions within each binary span at most 4 % and the neighbouring sizes n = 96 and 128 agree across all three.

A ratio divides that median by OpenBLAS’s rate from the SME page’s session, 22 to 33 hours earlier for any one operation, since the library does not change with Eigen’s build. OpenBLAS’s own rates bound the drift between sessions on this machine: between the SME page’s September and October sessions, 13 days apart, they repeated within a geometric mean of 0.97 to 1.03 for every operation and scalar except dgemv (1.11).

Each run covered one operation in one binary. A run started only once the machine had been idle (other processes using less than 0.35 of a core over two 5 s windows, no keyboard or mouse input for 10 minutes) with no thermal or performance warning from pmset. It was first discarded and repeated if the whole machine averaged 1.35 busy cores or more during it, or reached 2.0 in any 5 s window, the limits of the SME page. Background services of the logged-in session (malware scans, search and photo indexing, mail) kept the machine near those limits through the night: 11 runs passed, and 14 failed four times each, although their discarded attempts agreed with the passed runs within 1 % (geometric mean over the cells of a run). The limits were then raised to 1.45 and 3.0. The fourth attempt of each of the 14 runs meets them (averages 1.27 to 1.40, peaks at most 2.76) and was kept; each agrees with the other two passes of its cells within 0.5 %. The remaining 11 runs were measured under the raised limits, 1 of them twice. Spotlight indexing was switched off for the session.

The dotted vertical lines on the charts mark the sizes at which the operands of the call, inputs and outputs together, fill a performance core’s L1 data cache (128 KiB) and the L2 cache that the four performance cores share (16 MiB); the M4 has no L3.

For the eigenvalue and singular value decompositions the operation count is the one of the classical algorithm, so a divide-and-conquer or blocked implementation is credited with work it does not do; the ratios between arms are unaffected.

AXPY

y += alpha * x against ?axpy, alpha = 0.75; (2n) flops. Lengths run from 2 to (2^{24}) (128 MiB per double vector), through every cache level into DRAM.

Short vectors. Up to about n = 32 the AXPY and DOT rates measure the cost of a call rather than the kernel. Eigen’s expression compiles inline into the calling loop, while a call into a shared library pays a cost of its own before it reads an element. That cost is fixed per call, so the ratios at the small end are ratios of fixed costs. The DOT cells in double at n = 2 show it directly: 0.49 ns per call for Eigen against 12.4 ns for OpenBLAS. Eigen still computes the whole operation on every call; nothing is hoisted out of the timed loop.

AXPY double AXPY float

DOT

x.dot(y) against ?dot; (2n) flops, the same lengths. Real scalars only: the Fortran convention for returning a complex function value is not fixed by the platform ABI and differs between library builds, so ?dotc cannot be declared portably.

Up to about n = 32 the rates measure the cost of a call; see AXPY.

DOT double DOT float

GEMV

y.noalias() += A * x against ?gemv, column-major, no transposition; (2mn) flops.

Square matrices, then the short-fat (n = 10000, m grows) and tall-skinny (m = 10000, n grows) sweeps.

GEMV double, square GEMV double, sweeps GEMV float, square GEMV float, sweeps

GEMM

C.noalias() += A * B against ?gemm, column-major, no transposition; (2mnk) flops.

Square matrices first; then the two tall-skinny sweeps, where m stays at 4096 or 10000 while n = k grows; then the assorted non-square shapes that fit neither.

GEMM double, square GEMM double, tall-skinny sweeps GEMM double, other shapes GEMM float, square GEMM float, tall-skinny sweeps GEMM float, other shapes

TRSM

A.triangularView<Lower>().solveInPlace(X) against ?trsm with the m-by-m lower triangle on the left and n right-hand sides, no transposition, non-unit diagonal; (m(m+1)n) flops. The solve is destructive, so the timed region includes one copy of B for both arms.

Square shapes (m = n), then the sweeps with a fixed triangle of order 1024 or 4096 and a growing number of right-hand sides, then the remaining shapes with 4096 right-hand sides against a small triangle.

TRSM double, square TRSM double, sweeps TRSM double, other shapes TRSM float, square TRSM float, sweeps TRSM float, other shapes

SYRK

C.selfadjointView<Lower>().rankUpdate(A) against ?syrk, lower triangle, no transposition, with C n-by-n and A n-by-k; (n(n+1)k) flops.

Square shapes (n = k), then the sweeps: a 4096-by-4096 matrix updated by a growing number of columns, and the Gram matrix of a short, wide factor with 4096 columns.

SYRK double, square SYRK double, sweeps SYRK float, square SYRK float, sweeps

POTRF

LLT<Ref<MatrixXd>> in place against ?potrf, lower triangle, symmetric positive definite operand; (n^3/3) flops. The timed region includes one copy of the operand for both arms, since the factorization is destructive.

POTRF double POTRF float

GETRF

PartialPivLU<Ref<MatrixXd>> in place against ?getrf, square operand; (2n^3/3) flops. Both arms copy the operand into a destination allocated once and factorize the copy; neither allocates inside the timed region.

GETRF double GETRF float

GEQRF

HouseholderQR<Ref<MatrixXd>> in place against ?geqrf, m ≥ n; (2mn^2 - 2n^3/3) flops, the same copy-then-factorize protocol as GETRF.

Square shapes, then the tall-skinny sweeps with m fixed at 4096, 10000 and 100000.

GEQRF double, square GEQRF double, tall-skinny sweeps GEQRF float, square GEQRF float, tall-skinny sweeps

SYEV

SelfAdjointEigenSolver with eigenvectors against ?syev (jobz = 'V', lower triangle), the like-for-like pair: tridiagonalization followed by implicit QR iteration on both sides; (9n^3) flops, the count of that algorithm (Golub & Van Loan, section 8.3.3). Neither works in place: the solver copies the operand internally and the reference arm pays the same one copy. Sizes to 2048, where a call of SelfAdjointEigenSolver takes 3.0 s in double.

SYEV double SYEV float

GESDD

BDCSVD<MatrixXd, ComputeThinU | ComputeThinV> against ?gesdd with jobz = 'S', divide and conquer on both sides, m ≥ n, the thin U and V computed; (14mn^2 + 8n^3) flops, the Golub-Reinsch count (Golub & Van Loan, table 8.6.1). Square sizes to 2048, then tall-skinny sweeps with m fixed at 4096 and 10000.

GESDD double, square GESDD double, tall-skinny sweeps GESDD float, square GESDD float, tall-skinny sweeps

GEEV

EigenSolver with eigenvectors against ?geev (jobvr = 'V'), a dense random nonsymmetric operand: Hessenberg reduction, QR iteration to the Schur form and back-substitution for the eigenvectors on both sides; (25n^3) flops, the count of the Hessenberg QR algorithm with Schur vectors (Golub & Van Loan, section 7.5.6). Sizes to 1024, where a call of EigenSolver takes 3.7 s in double.

GEEV double GEEV float

Summary

Geometric mean of the Eigen ÷ library rate ratio over the square shapes in each size band. Above 1, Eigen is faster. Only the vector operations reach the last band.

Operation Scalar Library n ≤ 16 24–128 192–1024 1536–16384 > 16384
AXPY float OpenBLAS 4.15 1.77 1.07 1.12 1.12
AXPY double OpenBLAS 4.16 1.30 0.71 0.87 1.02
DOT float OpenBLAS 17.14 7.38 1.63 1.15 1.06
DOT double OpenBLAS 16.93 3.50 1.32 1.29 1.05
GEMV float OpenBLAS 2.70 1.18 1.05 0.91 –
GEMV double OpenBLAS 3.94 2.29 1.38 0.83 –
GEMM float OpenBLAS 1.77 0.98 1.07 1.07 –
GEMM double OpenBLAS 1.59 1.07 1.06 1.06 –
TRSM float OpenBLAS 3.56 4.44 1.63 1.16 –
TRSM double OpenBLAS 2.24 2.19 1.19 1.07 –
SYRK float OpenBLAS 0.67 1.02 1.11 1.07 –
SYRK double OpenBLAS 0.54 0.95 1.05 1.04 –
POTRF float OpenBLAS 2.01 1.43 1.14 1.05 –
POTRF double OpenBLAS 2.28 1.14 1.00 1.02 –
GETRF float OpenBLAS 1.77 2.07 1.31 1.06 –
GETRF double OpenBLAS 2.20 1.70 1.04 1.00 –
GEQRF float OpenBLAS 1.50 1.37 1.11 1.16 –
GEQRF double OpenBLAS 1.58 1.42 1.04 1.09 –
SYEV float OpenBLAS 1.22 1.60 2.13 2.20 –
SYEV double OpenBLAS 1.19 1.39 1.35 1.31 –
GESDD float OpenBLAS 1.58 0.99 1.65 1.75 –
GESDD double OpenBLAS 1.50 0.82 1.14 1.06 –
GEEV float OpenBLAS 2.18 1.05 0.32 – –
GEEV double OpenBLAS 2.01 0.82 0.30 – –

Caveats

  • Accelerate and Arm Performance Libraries are left out because neither can be held to NEON through documented means; the SME page has the comparison with them.
  • The OpenBLAS ratios are formed across two sessions on the same machine, 22 to 33 hours apart for any one operation; the drift bound above applies to them.
  • macOS cannot bind a thread to a core, so a single-threaded rate is that of whichever core the scheduler chose; a busy foreground thread normally stays on a performance core.
  • The machine is a desktop with a logged-in session and its background services. Runs that they disturbed beyond the limits above were repeated; smaller disturbances remain in the numbers. This session ran busier than the SME page’s (1.27 to 1.40 busy cores averaged over a kept run, against 1.10 to 1.13), and Eigen’s AXPY, DOT and GEMV came out 2 to 3 % below their September rates; whether that is the load or the code is not separated here.

Full tables

GFLOP/s per shape and library, with the Eigen ÷ library ratio: Eigen’s median over its three passes against the library’s rate.

AXPY float
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 5.0 1.3 3.73
3 5.6 1.9 2.95
4 11.8 1.9 6.30
6 11.3 2.3 4.90
8 20.3 4.7 4.31
12 23.5 4.9 4.76
16 25.0 8.2 3.04
24 26.9 10.8 2.48
32 18.1 12.8 1.42
48 19.3 12.8 1.50
64 22.0 9.2 2.38
96 26.3 15.7 1.68
100 26.3 15.6 1.68
128 27.3 18.0 1.51
192 28.6 21.1 1.35
256 29.2 23.0 1.27
384 25.9 25.3 1.03
512 26.9 26.6 1.01
768 27.3 28.0 0.98
1000 27.9 28.1 0.99
1001 27.6 28.4 0.97
1024 28.1 28.2 0.99
1536 29.1 29.3 0.99
2048 29.6 29.8 0.99
3072 30.2 30.3 1.00
4096 30.5 16.6 1.84
6144 30.8 30.8 1.00
8192 31.0 21.3 1.45
10000 30.9 31.1 0.99
12288 31.1 30.9 1.01
16384 31.3 29.3 1.07
32768 23.1 19.6 1.18
65536 23.2 19.6 1.18
100000 23.2 19.9 1.17
131072 23.3 19.7 1.18
262144 23.3 19.7 1.18
524288 23.1 19.7 1.17
1000000 20.3 16.9 1.20
1048576 23.1 19.2 1.20
2097152 22.9 20.0 1.14
4194304 18.5 18.6 1.00
8388608 17.7 18.2 0.98
16777216 15.9 16.9 0.94
AXPY double
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 6.0 1.3 4.46
3 7.6 1.9 4.10
4 10.5 1.9 5.61
6 11.8 2.2 5.26
8 12.5 2.8 4.49
12 13.5 3.0 4.42
16 9.0 4.5 2.01
24 9.8 4.8 2.04
32 10.9 8.8 1.25
48 13.2 9.7 1.36
64 13.7 9.0 1.54
96 14.3 13.2 1.08
100 14.3 13.2 1.08
128 14.6 14.8 0.99
192 12.9 16.7 0.78
256 13.4 17.7 0.76
384 13.6 19.2 0.71
512 14.0 20.0 0.70
768 14.5 21.0 0.69
1000 14.7 21.4 0.69
1001 14.7 21.5 0.69
1024 14.8 21.5 0.69
1536 15.1 21.9 0.69
2048 15.2 22.4 0.68
3072 15.4 18.6 0.83
4096 15.5 18.7 0.83
6144 15.5 18.8 0.83
8192 15.6 18.0 0.87
10000 12.8 11.2 1.14
12288 11.8 11.1 1.07
16384 11.5 11.1 1.04
32768 11.6 11.1 1.04
65536 11.6 11.1 1.04
100000 11.6 11.1 1.04
131072 11.6 11.2 1.04
262144 11.6 11.1 1.04
524288 11.5 10.8 1.07
1000000 11.4 11.1 1.03
1048576 11.4 11.1 1.03
2097152 9.1 9.2 0.99
4194304 8.9 9.0 0.98
8388608 7.9 8.4 0.94
16777216 7.7 8.0 0.97
DOT float
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 6.5 0.3 20.21
3 8.0 0.5 16.90
4 11.3 0.6 18.10
6 12.0 0.9 13.42
8 21.6 1.1 19.18
12 31.6 1.6 20.10
16 25.6 1.9 13.56
24 37.7 2.5 14.92
32 44.2 3.1 14.36
48 45.7 3.4 13.64
64 45.4 9.4 4.82
96 44.5 8.4 5.28
100 45.0 8.0 5.63
128 45.2 15.9 2.84
192 45.4 20.4 2.23
256 45.4 23.5 1.93
384 45.4 27.5 1.65
512 45.5 28.9 1.57
768 45.0 32.0 1.40
1000 43.5 27.9 1.56
1001 43.1 27.6 1.56
1024 43.8 33.2 1.32
1536 42.2 34.2 1.23
2048 40.7 35.4 1.15
3072 38.9 36.2 1.08
4096 37.9 20.5 1.85
6144 36.9 37.0 1.00
8192 36.5 26.6 1.37
10000 35.7 36.7 0.98
12288 36.1 37.2 0.97
16384 35.9 36.3 0.99
32768 29.7 25.4 1.17
65536 29.8 26.2 1.14
100000 29.6 27.2 1.09
131072 29.8 26.8 1.11
262144 29.8 27.2 1.10
524288 29.1 27.0 1.08
1000000 25.8 23.7 1.09
1048576 29.1 26.6 1.09
2097152 27.9 25.6 1.09
4194304 21.0 23.9 0.88
8388608 18.7 18.6 1.00
16777216 17.8 18.3 0.98
DOT double
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 8.2 0.3 25.50
3 9.6 0.5 20.16
4 12.8 0.6 20.53
6 16.0 0.9 17.97
8 15.9 1.1 14.04
12 19.0 1.6 12.21
16 23.4 1.9 12.24
24 22.6 2.6 8.84
32 22.7 4.6 4.91
48 22.2 5.4 4.11
64 22.6 8.0 2.85
96 22.7 10.2 2.23
100 22.6 10.2 2.22
128 22.7 8.8 2.57
192 22.7 13.9 1.64
256 22.7 14.8 1.53
384 22.5 16.0 1.41
512 22.1 16.5 1.34
768 21.0 17.2 1.22
1000 20.2 17.5 1.16
1001 20.2 17.5 1.16
1024 20.4 17.6 1.16
1536 19.4 18.0 1.07
2048 18.9 7.1 2.67
3072 18.5 18.4 1.00
4096 18.2 10.2 1.79
6144 18.0 15.0 1.20
8192 17.9 15.2 1.18
10000 15.5 15.2 1.02
12288 15.0 12.9 1.16
16384 14.9 12.7 1.17
32768 14.9 13.1 1.14
65536 14.9 13.4 1.11
100000 14.8 13.7 1.08
131072 14.9 13.6 1.10
262144 14.6 13.5 1.08
524288 14.6 13.3 1.09
1000000 14.1 13.1 1.08
1048576 14.2 13.3 1.07
2097152 9.9 11.4 0.87
4194304 9.3 9.2 1.01
8388608 8.9 9.1 0.98
16777216 8.9 9.1 0.98
GEMV float
m×n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 1.4 0.4 3.24
3x3 2.6 1.0 2.65
4x4 5.4 1.7 3.11
6x6 9.7 3.6 2.68
8x8 17.1 6.0 2.84
12x12 28.9 11.7 2.48
16x16 39.2 19.0 2.06
24x24 48.0 28.6 1.68
32x32 64.4 37.7 1.71
48x48 56.4 51.0 1.11
64x64 72.2 58.7 1.23
96x96 70.9 69.1 1.03
100x100 56.5 69.2 0.82
128x128 69.3 68.9 1.00
192x192 57.2 45.9 1.24
200x200 56.1 46.5 1.21
256x256 46.2 46.1 1.00
257x257 40.5 40.8 0.99
384x384 43.1 46.1 0.93
500x500 49.9 46.7 1.07
512x512 47.1 46.4 1.01
768x768 46.9 47.3 0.99
1000x1000 49.0 47.4 1.03
1001x1001 45.6 44.2 1.03
1024x1024 47.7 44.2 1.08
1536x1536 47.5 44.0 1.08
2048x2048 41.6 42.5 0.98
3072x3072 27.6 25.1 1.10
4096x4096 23.4 27.9 0.84
4097x4097 16.8 26.0 0.65
8x10000 36.0 10.5 3.43
100x10000 43.0 50.5 0.85
1000x10000 21.0 29.4 0.71
4000x10000 25.0 23.5 1.06
10000x8 47.3 42.8 1.10
10000x100 43.8 41.8 1.05
10000x1000 35.2 35.8 0.98
10000x4000 30.0 27.9 1.07
GEMV double
m×n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 1.8 0.4 4.47
3x3 2.9 0.8 3.53
4x4 5.5 1.5 3.64
6x6 11.3 2.2 5.04
8x8 17.0 4.2 4.06
12x12 20.8 6.0 3.44
16x16 27.8 7.6 3.64
24x24 30.1 9.7 3.09
32x32 34.5 12.5 2.76
48x48 36.4 17.1 2.13
64x64 35.4 12.9 2.75
96x96 34.0 18.0 1.89
100x100 31.0 18.1 1.71
128x128 34.0 16.5 2.06
192x192 21.0 16.8 1.25
200x200 22.6 17.1 1.32
256x256 23.2 16.6 1.40
257x257 22.5 15.8 1.42
384x384 23.1 16.8 1.38
500x500 24.3 16.9 1.44
512x512 23.6 17.2 1.37
768x768 23.6 16.7 1.41
1000x1000 24.4 16.8 1.45
1001x1001 23.7 16.2 1.47
1024x1024 21.9 17.1 1.28
1536x1536 21.3 16.6 1.28
2048x2048 13.2 16.4 0.80
3072x3072 13.5 16.3 0.83
4096x4096 11.7 16.2 0.72
4097x4097 9.8 15.6 0.63
8x10000 22.3 4.3 5.19
100x10000 20.1 16.6 1.21
1000x10000 10.1 16.2 0.62
4000x10000 14.0 16.0 0.87
10000x8 23.8 11.7 2.04
10000x100 20.6 11.4 1.81
10000x1000 15.8 11.0 1.43
10000x4000 15.5 11.0 1.40
GEMM float
m×n×k Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2x2 2.2 0.5 4.33
3x3x3 4.3 1.5 2.93
4x4x4 14.1 4.0 3.55
6x6x6 11.1 8.9 1.24
8x8x8 22.8 21.1 1.08
12x12x12 46.3 43.3 1.07
16x16x16 56.1 67.9 0.83
24x24x24 78.7 79.4 0.99
32x32x32 89.5 96.4 0.93
48x48x48 99.8 104.5 0.96
64x64x64 102.2 104.1 0.98
96x96x96 107.4 109.1 0.98
100x100x100 103.2 101.5 1.02
128x128x128 108.4 109.9 0.99
160x160x160 109.4 109.9 1.00
192x192x192 115.4 91.5 1.26
200x200x200 113.7 108.1 1.05
224x224x224 114.2 111.1 1.03
256x256x256 115.1 110.8 1.04
257x257x257 110.2 104.4 1.06
288x288x288 116.9 112.0 1.04
320x320x320 117.5 112.1 1.05
384x384x384 119.0 106.8 1.11
448x448x448 118.4 113.0 1.05
500x500x500 119.2 111.4 1.07
512x512x512 120.1 113.1 1.06
768x768x768 121.4 113.6 1.07
1000x1000x1000 121.0 113.2 1.07
1001x1001x1001 119.5 111.4 1.07
1024x1024x1024 121.4 113.7 1.07
1536x1536x1536 121.6 113.7 1.07
2048x2048x2048 121.2 113.4 1.07
3072x3072x3072 121.6 113.5 1.07
4096x4096x4096 121.6 113.8 1.07
4097x4097x4097 121.1 113.1 1.07
64x64x1024 99.2 100.2 0.99
64x1024x64 99.7 109.7 0.91
256x256x1024 115.8 109.7 1.06
1024x64x64 100.3 107.0 0.94
1024x256x256 116.0 112.5 1.03
4096x96x96 106.4 109.5 0.97
4096x128x128 110.3 110.5 1.00
4096x144x144 111.8 111.3 1.00
4096x160x160 112.9 111.7 1.01
4096x176x176 113.7 112.0 1.02
8192x128x128 110.6 110.5 1.00
10000x8x8 68.2 73.5 0.93
10000x100x100 110.1 111.1 0.99
10000x1000x1000 121.0 113.3 1.07
10000x4000x4000 122.0 113.7 1.07
GEMM double
m×n×k Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2x2 3.6 0.6 6.05
3x3x3 4.8 1.7 2.75
4x4x4 9.4 4.3 2.19
6x6x6 10.2 9.3 1.10
8x8x8 15.6 18.0 0.87
12x12x12 26.5 31.1 0.85
16x16x16 33.8 38.9 0.87
24x24x24 41.0 46.5 0.88
32x32x32 44.2 48.1 0.92
48x48x48 50.4 52.1 0.97
64x64x64 50.5 28.9 1.74
96x96x96 52.2 53.3 0.98
100x100x100 51.7 52.7 0.98
128x128x128 54.1 43.8 1.24
160x160x160 55.7 54.6 1.02
192x192x192 57.2 49.8 1.15
200x200x200 56.5 55.2 1.02
224x224x224 56.9 55.4 1.03
256x256x256 57.7 52.4 1.10
257x257x257 56.6 53.8 1.05
288x288x288 58.3 55.9 1.04
320x320x320 58.1 56.0 1.04
384x384x384 59.2 53.3 1.11
448x448x448 59.1 56.5 1.05
500x500x500 59.3 56.4 1.05
512x512x512 59.4 56.5 1.05
768x768x768 60.0 56.9 1.06
1000x1000x1000 59.9 56.7 1.06
1001x1001x1001 59.7 56.3 1.06
1024x1024x1024 59.7 56.8 1.05
1536x1536x1536 60.0 56.7 1.06
2048x2048x2048 59.9 56.9 1.05
3072x3072x3072 60.3 56.7 1.06
4096x4096x4096 60.4 57.1 1.06
4097x4097x4097 60.2 56.7 1.06
64x64x1024 51.7 49.8 1.04
64x1024x64 51.3 54.5 0.94
256x256x1024 58.5 55.6 1.05
1024x64x64 49.8 53.3 0.93
1024x256x256 58.0 56.2 1.03
4096x96x96 53.3 54.5 0.98
4096x128x128 55.0 55.0 1.00
4096x144x144 55.6 55.5 1.00
4096x160x160 56.2 55.7 1.01
4096x176x176 56.6 55.9 1.01
8192x128x128 55.0 55.0 1.00
10000x8x8 33.5 36.2 0.92
10000x100x100 54.9 55.4 0.99
10000x1000x1000 60.1 56.5 1.06
10000x4000x4000 60.6 56.8 1.07
TRSM float
m×n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 0.5 0.4 1.10
3x3 1.0 0.7 1.46
4x4 6.2 1.0 5.91
6x6 6.9 2.1 3.24
8x8 20.1 3.6 5.56
12x12 28.5 5.6 5.06
16x16 45.9 5.4 8.42
24x24 56.4 9.0 6.29
32x32 66.5 10.5 6.31
48x48 77.0 15.4 4.99
64x64 83.5 15.5 5.38
96x96 92.0 27.2 3.38
100x100 89.8 27.1 3.32
128x128 94.7 33.2 2.85
192x192 93.6 40.0 2.34
200x200 91.2 44.2 2.06
256x256 99.0 51.3 1.93
257x257 91.8 49.2 1.87
384x384 103.3 60.5 1.71
500x500 105.8 68.6 1.54
512x512 107.4 70.9 1.52
768x768 111.2 80.9 1.37
1000x1000 112.6 86.0 1.31
1001x1001 111.5 84.2 1.32
1024x1024 113.1 87.3 1.30
1536x1536 114.6 94.2 1.22
2048x2048 116.3 98.3 1.18
3072x3072 118.3 102.6 1.15
4096x4096 118.5 105.4 1.12
4097x4097 116.5 104.3 1.12
64x4096 80.2 20.1 4.00
256x4096 99.1 52.4 1.89
1024x8 63.7 37.9 1.68
1024x64 103.6 76.0 1.36
1024x256 111.0 84.9 1.31
1024x4096 111.5 86.9 1.28
4096x8 44.0 42.5 1.04
4096x64 98.2 88.3 1.11
4096x256 113.7 101.1 1.12
4096x1024 116.3 104.5 1.11
TRSM double
m×n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 0.5 0.5 0.97
3x3 1.2 0.9 1.27
4x4 4.7 1.7 2.83
6x6 6.8 2.8 2.39
8x8 14.2 3.9 3.62
12x12 20.0 6.5 3.09
16x16 23.6 7.9 2.98
24x24 30.3 10.7 2.83
32x32 34.0 13.1 2.59
48x48 38.5 17.9 2.16
64x64 41.7 13.9 2.99
96x96 44.3 26.6 1.66
100x100 44.2 26.3 1.68
128x128 46.5 25.6 1.81
192x192 47.0 32.7 1.44
200x200 46.5 36.6 1.27
256x256 49.1 37.2 1.32
257x257 46.2 38.4 1.20
384x384 52.4 44.0 1.19
500x500 53.2 46.0 1.16
512x512 52.9 46.5 1.14
768x768 55.2 49.8 1.11
1000x1000 56.1 51.3 1.09
1001x1001 55.7 50.6 1.10
1024x1024 55.6 51.4 1.08
1536x1536 57.3 52.6 1.09
2048x2048 57.3 53.6 1.07
3072x3072 57.9 54.5 1.06
4096x4096 58.6 55.3 1.06
4097x4097 57.8 54.9 1.05
64x4096 40.5 21.5 1.89
256x4096 48.6 40.0 1.22
1024x8 31.2 31.5 0.99
1024x64 51.0 47.7 1.07
1024x256 54.9 50.6 1.08
1024x4096 55.1 50.8 1.08
4096x8 24.6 24.9 0.99
4096x64 50.1 48.2 1.04
4096x256 56.2 53.5 1.05
4096x1024 57.8 54.8 1.05
SYRK float
n×k Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 0.2 0.4 0.51
3x3 0.5 1.0 0.45
4x4 1.2 2.2 0.54
6x6 2.8 4.7 0.61
8x8 7.0 8.3 0.84
12x12 10.8 13.0 0.83
16x16 20.2 18.2 1.11
24x24 33.8 34.3 0.98
32x32 46.4 44.0 1.06
48x48 61.2 62.3 0.98
64x64 73.4 70.6 1.04
96x96 84.7 85.1 1.00
100x100 85.4 77.7 1.10
128x128 89.2 88.8 1.00
192x192 99.4 71.4 1.39
200x200 98.8 93.3 1.06
256x256 101.2 97.7 1.04
257x257 99.6 91.8 1.09
384x384 108.9 95.5 1.14
500x500 111.4 104.1 1.07
512x512 112.1 99.2 1.13
768x768 115.8 108.4 1.07
1000x1000 116.7 109.8 1.06
1001x1001 115.4 107.0 1.08
1024x1024 116.1 105.8 1.10
1536x1536 118.7 111.6 1.06
2048x2048 118.8 109.6 1.08
3072x3072 119.8 110.9 1.08
4096x4096 119.1 111.7 1.07
4097x4097 118.7 111.0 1.07
64x4096 66.3 50.6 1.31
256x4096 100.6 84.9 1.19
1024x4096 115.0 105.4 1.09
4096x8 57.9 57.7 1.00
4096x64 110.1 113.2 0.97
4096x256 118.3 113.5 1.04
4096x1024 118.4 111.9 1.06
SYRK double
n×k Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 0.2 0.3 0.45
3x3 0.4 0.9 0.43
4x4 1.0 2.0 0.48
6x6 2.5 4.4 0.58
8x8 4.6 7.3 0.63
12x12 7.7 14.5 0.53
16x16 13.1 17.6 0.74
24x24 18.1 26.2 0.69
32x32 23.6 32.9 0.72
48x48 30.6 40.9 0.75
64x64 35.7 19.1 1.87
96x96 40.0 45.5 0.88
100x100 40.6 44.7 0.91
128x128 43.3 33.4 1.30
192x192 48.1 42.3 1.14
200x200 47.8 51.0 0.94
256x256 49.8 45.0 1.11
257x257 49.4 49.4 1.00
384x384 53.6 49.7 1.08
500x500 55.1 54.4 1.01
512x512 55.3 50.6 1.09
768x768 57.0 55.5 1.03
1000x1000 57.8 56.1 1.03
1001x1001 57.4 55.5 1.03
1024x1024 57.3 53.8 1.07
1536x1536 58.2 54.9 1.06
2048x2048 57.4 55.4 1.04
3072x3072 57.7 55.7 1.04
4096x4096 58.0 56.4 1.03
4097x4097 58.4 56.0 1.04
64x4096 34.6 27.1 1.28
256x4096 51.0 45.0 1.13
1024x4096 56.1 53.6 1.05
4096x8 35.8 24.0 1.49
4096x64 54.7 55.8 0.98
4096x256 58.8 56.7 1.04
4096x1024 57.9 56.3 1.03
POTRF float
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 0.4 0.1 3.92
3 0.6 0.3 2.32
4 1.0 0.5 2.20
6 1.5 0.9 1.59
8 2.1 1.4 1.51
12 3.6 2.3 1.55
16 5.4 3.0 1.81
24 9.1 3.7 2.42
32 8.1 4.0 2.00
48 13.4 12.1 1.11
64 18.2 16.3 1.12
96 26.8 22.7 1.18
100 27.0 21.8 1.24
128 38.2 26.7 1.43
192 49.7 46.6 1.07
200 50.3 44.8 1.12
256 64.3 55.1 1.17
257 60.2 52.8 1.14
384 77.0 68.3 1.13
500 83.3 68.3 1.22
512 84.9 67.7 1.25
768 95.1 83.9 1.13
1000 99.8 88.9 1.12
1001 98.1 86.3 1.14
1024 94.9 88.8 1.07
1536 105.3 97.0 1.09
2048 105.3 100.4 1.05
3072 110.1 105.4 1.04
4096 110.3 105.8 1.04
4097 109.7 105.0 1.05
POTRF double
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 0.5 0.1 4.23
3 0.8 0.3 2.88
4 1.1 0.5 2.29
6 1.5 0.9 1.75
8 2.2 1.3 1.77
12 3.9 2.1 1.84
16 5.6 2.8 2.00
24 8.8 4.0 2.23
32 6.6 4.2 1.56
48 9.8 10.6 0.92
64 12.4 14.1 0.88
96 16.9 18.4 0.91
100 16.9 18.6 0.91
128 22.5 21.6 1.04
192 27.6 32.0 0.86
200 28.0 31.3 0.89
256 33.7 29.5 1.14
257 32.6 34.7 0.94
384 39.5 38.0 1.04
500 42.4 42.0 1.01
512 42.1 39.8 1.06
768 47.8 45.8 1.04
1000 50.4 49.2 1.02
1001 50.1 48.5 1.03
1024 47.7 46.7 1.02
1536 51.5 50.6 1.02
2048 51.9 51.4 1.01
3072 54.8 53.1 1.03
4096 55.4 54.1 1.02
4097 55.3 53.8 1.03
GETRF float
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 0.2 0.3 0.83
3 0.4 0.4 0.89
4 0.7 0.6 1.26
6 1.3 0.7 1.82
8 2.1 0.9 2.47
12 3.9 1.2 3.29
16 5.8 1.5 3.92
24 8.1 3.4 2.36
32 11.9 4.2 2.85
48 18.6 8.4 2.22
64 24.7 9.5 2.60
96 35.9 18.9 1.90
100 23.1 19.2 1.20
128 43.0 23.2 1.86
192 52.3 35.0 1.49
200 52.4 35.5 1.47
256 63.2 43.1 1.46
257 60.5 41.5 1.46
384 75.8 54.6 1.39
500 80.1 63.0 1.27
512 82.3 64.9 1.27
768 91.9 76.0 1.21
1000 96.5 81.9 1.18
1001 95.0 80.4 1.18
1024 95.8 83.8 1.14
1536 102.6 92.3 1.11
2048 104.8 96.2 1.09
3072 107.5 100.8 1.07
4096 105.9 103.3 1.03
4097 105.1 102.5 1.03
GETRF double
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 0.3 0.2 1.37
3 0.5 0.4 1.31
4 0.7 0.5 1.58
6 1.2 0.6 1.95
8 2.0 0.7 2.71
12 3.8 1.0 3.87
16 5.3 1.2 4.31
24 7.0 2.9 2.42
32 9.0 3.7 2.40
48 13.5 7.9 1.71
64 16.9 10.0 1.70
96 22.6 16.9 1.34
100 23.0 17.1 1.35
128 24.4 17.9 1.36
192 28.3 28.6 0.99
200 28.3 28.6 0.99
256 34.7 30.5 1.14
257 33.6 31.2 1.08
384 40.5 37.8 1.07
500 42.4 41.4 1.02
512 43.0 41.1 1.05
768 47.7 46.2 1.03
1000 49.8 48.1 1.04
1001 49.3 47.5 1.04
1024 49.1 48.2 1.02
1536 51.5 50.7 1.02
2048 50.6 51.3 0.99
3072 52.9 52.7 1.00
4096 53.4 53.7 0.99
4097 52.8 53.4 0.99
GEQRF float
m×n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 0.2 0.2 1.52
3x3 0.4 0.3 1.42
4x4 0.6 0.5 1.41
6x6 1.3 0.9 1.47
8x8 1.9 1.3 1.55
12x12 4.0 2.5 1.56
16x16 6.1 3.8 1.61
24x24 10.2 6.6 1.56
32x32 13.8 9.0 1.53
48x48 19.4 13.2 1.46
64x64 15.4 12.1 1.28
96x96 24.4 20.0 1.22
100x100 24.3 20.4 1.19
128x128 33.3 23.5 1.42
192x192 44.5 35.9 1.24
200x200 46.7 42.8 1.09
256x256 54.8 45.4 1.21
257x257 50.9 51.7 0.98
384x384 67.5 61.0 1.11
500x500 74.5 71.9 1.04
512x512 75.9 63.1 1.20
768x768 85.7 74.3 1.15
1000x1000 90.0 87.2 1.03
1001x1001 88.3 85.7 1.03
1024x1024 90.0 76.3 1.18
1536x1536 96.5 86.5 1.11
2048x2048 98.6 84.3 1.17
3072x3072 100.4 90.4 1.11
4096x4096 100.7 83.2 1.21
4097x4097 99.4 84.2 1.18
4096x8 21.0 10.0 2.10
4096x64 26.1 21.3 1.23
4096x256 56.4 43.9 1.28
4096x1024 87.5 77.6 1.13
10000x8 21.2 9.8 2.16
10000x100 37.6 22.9 1.65
10000x1000 90.3 83.1 1.09
10000x4000 100.8 87.8 1.15
100000x8 19.8 9.2 2.15
100000x64 25.7 19.0 1.35
100000x256 55.0 41.4 1.33
GEQRF double
m×n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 0.2 0.2 1.48
3x3 0.4 0.3 1.49
4x4 0.7 0.4 1.51
6x6 1.3 0.8 1.57
8x8 2.0 1.2 1.59
12x12 3.7 2.2 1.69
16x16 5.4 3.1 1.76
24x24 8.2 4.6 1.80
32x32 10.0 5.8 1.73
48x48 12.8 9.0 1.42
64x64 10.7 9.6 1.11
96x96 16.8 12.7 1.32
100x100 15.7 13.0 1.21
128x128 19.6 13.6 1.44
192x192 25.6 21.5 1.19
200x200 25.7 25.5 1.01
256x256 29.2 24.9 1.17
257x257 28.2 29.8 0.95
384x384 35.1 33.1 1.06
500x500 38.1 39.4 0.97
512x512 37.6 35.0 1.07
768x768 42.4 41.0 1.04
1000x1000 44.9 45.6 0.98
1001x1001 44.3 45.0 0.98
1024x1024 43.9 40.9 1.07
1536x1536 47.4 45.8 1.03
2048x2048 47.2 43.6 1.08
3072x3072 49.7 44.4 1.12
4096x4096 49.9 45.0 1.11
4097x4097 49.3 43.6 1.13
4096x8 10.6 7.2 1.47
4096x64 13.6 12.2 1.11
4096x256 28.8 24.7 1.17
4096x1024 43.5 41.8 1.04
10000x8 10.4 6.9 1.50
10000x100 18.6 12.2 1.53
10000x1000 44.7 41.5 1.08
10000x4000 50.4 43.9 1.15
100000x8 9.9 6.6 1.51
100000x64 12.6 10.5 1.19
100000x256 27.3 22.1 1.23
SYEV float
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 0.9 0.7 1.34
3 0.9 0.6 1.39
4 1.1 0.9 1.24
6 1.7 1.5 1.16
8 2.3 2.1 1.10
12 3.6 3.1 1.16
16 5.1 4.4 1.17
24 7.7 6.5 1.18
32 10.3 8.3 1.24
48 15.5 10.2 1.52
64 20.0 11.3 1.77
96 27.4 15.0 1.83
100 27.3 14.7 1.85
128 33.1 16.5 2.00
192 41.2 19.2 2.15
200 41.8 19.9 2.10
256 43.6 19.6 2.22
257 42.2 20.5 2.06
384 49.4 21.9 2.26
500 51.1 23.0 2.22
512 50.1 24.2 2.07
768 54.8 25.9 2.11
1000 58.4 26.3 2.22
1001 51.2 27.5 1.86
1024 56.9 25.7 2.21
1536 59.2 27.8 2.13
2048 59.6 26.3 2.27
SYEV double
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 0.9 0.7 1.29
3 0.8 0.6 1.37
4 0.9 0.8 1.13
6 1.4 1.2 1.12
8 1.8 1.7 1.10
12 2.9 2.5 1.15
16 4.0 3.3 1.22
24 6.0 4.9 1.21
32 7.8 5.7 1.35
48 11.1 7.9 1.40
64 13.4 9.4 1.43
96 16.4 11.0 1.48
100 16.6 12.1 1.38
128 18.8 12.5 1.50
192 21.0 14.6 1.44
200 21.5 13.4 1.61
256 21.3 15.9 1.34
257 20.9 16.0 1.30
384 23.6 16.5 1.44
500 25.4 19.1 1.33
512 24.8 17.5 1.41
768 26.0 19.7 1.32
1000 27.4 20.7 1.32
1001 23.3 20.7 1.12
1024 26.5 20.3 1.31
1536 27.3 20.7 1.32
2048 25.4 19.5 1.30
GESDD float
m×n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 2.5 0.4 6.83
3x3 1.6 0.7 2.31
4x4 2.2 1.1 2.04
6x6 2.1 1.9 1.14
8x8 2.5 2.6 0.96
12x12 2.9 4.3 0.68
16x16 5.7 5.6 1.02
24x24 7.9 7.8 1.01
32x32 11.0 12.3 0.89
48x48 16.9 18.5 0.92
64x64 24.5 26.6 0.92
96x96 38.6 36.0 1.07
100x100 39.3 36.6 1.07
128x128 49.9 46.0 1.09
192x192 72.9 49.5 1.47
200x200 74.2 50.3 1.47
256x256 81.1 49.0 1.65
257x257 85.4 57.0 1.50
384x384 107.3 63.5 1.69
500x500 125.8 77.2 1.63
512x512 117.8 64.7 1.82
768x768 140.3 77.8 1.80
1000x1000 158.8 96.3 1.65
1001x1001 156.3 95.7 1.63
1024x1024 148.6 81.5 1.82
1536x1536 167.6 95.3 1.76
2048x2048 162.8 94.1 1.73
4096x64 91.9 62.8 1.46
4096x256 149.4 105.3 1.42
4096x1024 168.0 118.9 1.41
10000x8 32.4 29.7 1.09
10000x100 124.9 70.1 1.78
10000x1000 201.6 169.0 1.19
GESDD double
m×n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 2.6 0.4 7.12
3x3 1.3 0.6 2.12
4x4 1.7 0.9 1.76
6x6 1.9 1.6 1.17
8x8 1.9 2.2 0.86
12x12 2.1 3.3 0.65
16x16 4.3 4.3 1.00
24x24 5.7 6.0 0.96
32x32 7.5 9.7 0.78
48x48 11.7 14.4 0.82
64x64 15.1 20.6 0.74
96x96 22.5 28.0 0.80
100x100 24.1 28.9 0.83
128x128 29.1 35.4 0.82
192x192 40.0 38.4 1.04
200x200 42.1 38.3 1.10
256x256 45.5 39.1 1.16
257x257 47.9 43.9 1.09
384x384 58.2 51.2 1.14
500x500 67.9 59.8 1.14
512x512 64.4 51.2 1.26
768x768 76.1 63.9 1.19
1000x1000 83.6 74.5 1.12
1001x1001 82.8 75.6 1.10
1024x1024 76.9 63.7 1.21
1536x1536 84.8 75.6 1.12
2048x2048 69.8 69.3 1.01
4096x64 48.4 36.6 1.32
4096x256 77.3 62.3 1.24
4096x1024 86.1 75.2 1.14
10000x8 13.6 20.7 0.66
10000x100 62.8 37.7 1.67
10000x1000 102.7 93.1 1.10
GEEV float
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 2.6 0.4 6.35
3 1.3 0.6 2.14
4 2.2 0.9 2.43
6 2.7 1.6 1.70
8 3.9 2.2 1.79
12 5.4 3.5 1.54
16 6.7 4.5 1.50
24 9.4 6.9 1.36
32 10.8 8.7 1.24
48 12.6 11.7 1.08
64 13.7 13.9 0.98
96 15.8 16.4 0.96
100 16.0 16.8 0.95
128 16.8 19.9 0.84
192 17.5 32.2 0.54
200 18.5 35.1 0.53
256 17.8 41.9 0.42
257 18.4 42.9 0.43
384 16.2 58.7 0.28
500 20.1 71.1 0.28
512 19.5 49.4 0.39
768 20.8 82.6 0.25
1000 22.2 108.2 0.21
1001 21.8 106.6 0.20
1024 19.2 76.9 0.25
GEEV double
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 2.6 0.4 6.26
3 1.2 0.6 2.14
4 1.7 0.8 2.00
6 2.2 1.3 1.69
8 3.0 2.0 1.54
12 4.1 2.8 1.43
16 4.9 3.7 1.32
24 5.7 5.3 1.09
32 6.1 6.8 0.90
48 7.4 8.8 0.85
64 7.8 10.3 0.76
96 8.5 11.0 0.77
100 8.8 11.6 0.75
128 8.7 13.0 0.67
192 8.8 18.3 0.48
200 9.2 19.4 0.47
256 8.8 22.2 0.40
257 9.1 22.5 0.40
384 9.1 30.5 0.30
500 9.7 36.6 0.27
512 9.0 21.7 0.41
768 9.4 36.9 0.25
1000 9.5 51.3 0.19
1001 9.6 51.2 0.19
1024 7.2 35.7 0.20