flopscope.numpy.vdot
fnp.vdot(a, b)[flopscope source]
Return the dot product of two vectors.
Adapted from NumPy docs np.vdot
Dot product with conjugation; cost = N (FMA=1).
The vdot function handles complex numbers differently than dot: if the first argument is complex, it is replaced by its complex conjugate in the dot product calculation. vdot also handles multidimensional arrays differently than dot: it does not perform a matrix product, but flattens the arguments to 1-D arrays before taking a vector dot product.
Consequently, when the arguments are 2-D arrays of the same shape, this function effectively returns their Frobenius inner product (also known as the trace inner product or the standard inner product on a vector space of matrices).
Parameters
- a:array_like
If
ais complex the complex conjugate is taken before calculation of the dot product.- b:array_like
Second argument to the dot product.
Returns
- output:ndarray
Dot product of
aandb. Can be an int, float, or complex depending on the types ofaandb.
See also
- we.flops.dot Return the dot product without using the complex conjugate of the first argument.
Examples
>>> import flopscope.numpy as fnp
>>> a = flops.array([1+2j,3+4j])
>>> b = flops.array([5+6j,7+8j])
>>> flops.vdot(a, b)
(70-8j)
>>> flops.vdot(b, a)
(70+8j)Note that higher-dimensional arrays are flattened!
>>> a = flops.array([[1, 4], [5, 6]])
>>> b = flops.array([[4, 1], [2, 2]])
>>> flops.vdot(a, b)
30
>>> flops.vdot(b, a)
30
>>> 1*4 + 4*1 + 5*2 + 6*2
30