1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
{{alias}}( N, scalar, x, strideX, y, strideY )
Computes the dot product of two single-precision floating-point vectors with
extended accumulation.
The `N`, `strideX`, and `strideY` parameters determine which elements in `x`
and `y` are accessed at runtime.
Indexing is relative to the first index. To introduce an offset, use a typed
array view.
If `N <= 0` the function returns `scalar`.
Parameters
----------
N: integer
Number of indexed elements.
scalar: number
Scalar constant added to dot product.
x: Float32Array
First input array.
strideX: integer
Index increment for `x`.
y: Float32Array
Second input array.
strideY: integer
Index increment for `y`.
Returns
-------
dot: number
The dot product of `x` and `y`.
Examples
--------
// Standard usage:
> var x = new {{alias:@stdlib/array/float32}}( [ 4.0, 2.0, -3.0, 5.0, -1.0 ] );
> var y = new {{alias:@stdlib/array/float32}}( [ 2.0, 6.0, -1.0, -4.0, 8.0 ] );
> var dot = {{alias}}( x.length, 0.0, x, 1, y, 1 )
-5.0
// Strides:
> x = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] );
> y = new {{alias:@stdlib/array/float32}}( [ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 ] );
> var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 );
> dot = {{alias}}( N, 0.0, x, 2, y, -1 )
9.0
// Using view offsets:
> x = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] );
> y = new {{alias:@stdlib/array/float32}}( [ 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );
> var x1 = new {{alias:@stdlib/array/float32}}( x.buffer, x.BYTES_PER_ELEMENT*1 );
> var y1 = new {{alias:@stdlib/array/float32}}( y.buffer, y.BYTES_PER_ELEMENT*3 );
> N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 );
> dot = {{alias}}( N, 0.0, x1, -2, y1, 1 )
128.0
{{alias}}.ndarray( N, scalar, x, strideX, offsetX, y, strideY, offsetY )
Computes the dot product of two single-precision floating-point vectors
using alternative indexing semantics and with extended accumulation.
While typed array views mandate a view offset based on the underlying
buffer, the `offsetX` and `offsetY` parameters support indexing based on a
starting index.
Parameters
----------
N: integer
Number of indexed elements.
scalar: number
Scalar constant added to dot product.
x: Float32Array
First input array.
strideX: integer
Index increment for `x`.
offsetX: integer
Starting index for `x`.
y: Float32Array
Second input array.
strideY: integer
Index increment for `y`.
offsetY: integer
Starting index for `y`.
Returns
-------
dot: number
The dot product of `x` and `y`.
Examples
--------
// Standard usage:
> var x = new {{alias:@stdlib/array/float32}}( [ 4.0, 2.0, -3.0, 5.0, -1.0 ] );
> var y = new {{alias:@stdlib/array/float32}}( [ 2.0, 6.0, -1.0, -4.0, 8.0 ] );
> var dot = {{alias}}.ndarray( x.length, 0.0, x, 1, 0, y, 1, 0 )
-5.0
// Strides:
> x = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] );
> y = new {{alias:@stdlib/array/float32}}( [ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 ] );
> var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 );
> dot = {{alias}}.ndarray( N, 0.0, x, 2, 0, y, 2, 0 )
9.0
// Using offset indices:
> x = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] );
> y = new {{alias:@stdlib/array/float32}}( [ 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );
> N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 );
> dot = {{alias}}.ndarray( N, 0.0, x, -2, x.length-1, y, 1, 3 )
128.0
References
----------
- Lawson, Charles L., Richard J. Hanson, Fred T. Krogh, and David Ronald
Kincaid. 1979. "Algorithm 539: Basic Linear Algebra Subprograms for Fortran
Usage [F1]." *ACM Transactions on Mathematical Software* 5 (3). New York,
NY, USA: Association for Computing Machinery: 324–25.
doi:10.1145/355841.355848.
See Also
--------
|