tensor-product

computes the product of tensors

js-standard-style

NPM version Build Status Dependency Status

Install

With npm do

npm install tensor-product --save

Usage

Signature is (multiplication, leftDim, rightDim, leftData, rightData) where

It returns the tensorData array given by the product of tensors defined by leftData and rightData.

Examples

All code in the examples below is intended to be contained into a single file.

Let’s use common real multiplication.

var tensorProduct = require('tensor-product')

function multiplication (a, b) { return a * b }

var product = tensorProduct.bind(null, multiplication)

scalar x scalar

A tensor with one index that has a unique value is like a scalar. This case degenerate to scalar multiplication.

var product_1x1 = product.bind(null, [1], [1])

product_1x1([2], [3]) // [6]

scalar x vector

A tensor with one index which range is greater than one is like a vector. This case is like vector multiplication by a scalar.

var product_1x2 = product.bind(null, [1], [2])

product_1x2([-1], [1, 2]) // [-1, -2]

vector x vector

The tensor product of two vectors is a matrix.

var product_2x2 = product.bind(null, [2], [2])

product_2x2([1, 2], [3, 4]) // [3, 4,
                            //  6, 8]

matrix x scalar

A tensor with two indices is like a matrix. This case is like matrix multiplication by a scalar.

var product_2_2x1 = product.bind(null, [2, 2], [1])

product_2_2x1( [1, 2,       // [2, 4,
                3, 4], [2]) //  6, 8]

scalar x matrix

Similar to example above, but commuted.

var product_1x2_2 = product.bind(null, [1], [2, 2])

product_1x2_2([2], [1, 2,  // [2, 4,
                    3, 4]) //  6, 8]

matrix x matrix

A product tensor of two matrices is a tensor with four indices.

var product_2_2x2_2 = product.bind(null, [2, 2], [2, 2])

product_2_2x2_2([2, 2,
                 2, 2], [1, 2,
                         3, 4]) // [2, 2,
                                //  2, 2, 4, 4,
                                //        4, 4, 6, 6,
                                //              6, 6, 8, 8,
                                //                    8, 8]

License

MIT