Существует функция точка :
Для любых итерируемых контейнеров x
и y
(включая массивы любого измерения) чисел (или любого типа элемента длякакая точка определена), вычислите скалярное произведение (или внутреннее произведение, или скалярное произведение), то есть сумму dot(x[i],y[i])
, как если бы они были векторами.
x ⋅ y
(где можно набрать ⋅
завершением табуляции \cdot
в REPL) является синонимом dot(x, y)
.
Это кажется быстрее, чем вызов gemm BLAS:
using LinearAlgebra
using BenchmarkTools
n = 10000
x = rand(n, 1);
y = rand(n, 1);
@btime(BLAS.gemm('T','N', x, y))
19.212 μs (1 allocation: 96 bytes)
@btime(x ⋅ y)
1.536 μs (1 allocation: 16 bytes)
versioninfo()
Julia Version 1.0.3
Commit 099e826241* (2018-12-18 01:34 UTC)
Platform Info:
OS: Linux (x86_64-suse-linux)
CPU: Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-6.0.0 (ORCJIT, haswell)