j6
Version:
Javascript scientific library (like R, NumPy, Matlab)
67 lines (59 loc) • 1.37 kB
JavaScript
module.exports = function (j6) {
/* eslint-disable no-undef */
var V = j6.V = {}
V.new = function (n, value = 0) { return j6.T.repeat([n], value) }
// V.random = function (n, a, b) { return j6.T.random([n], a, b) }
V.resize = function (a, size) {
var v = a.slice()
for (var i = a.length; i < size; i++) {
v.push(0)
}
return v
}
V.dot = function (x, y, isComplex = false) {
let cadd = j6.ComplexField.add
let cmul = j6.ComplexField.mul
let sum = 0
let len = x.length
for (var i = 0; i < len; i++) {
if (!isComplex) {
sum += x[i] * y[i] // 速度較快
} else {
sum = cadd(sum, cmul(x[i], y[i])) // 速度稍慢(不使用多型,否則會很慢)
}
}
return sum
}
V.add = function (a, b) {
let len = a.length
let r = new Array(len)
for (var i = 0; i < len; i++) {
r[i] = a[i] + b[i]
}
return r
}
V.sub = function (a, b) {
let len = a.length
let r = new Array(len)
for (var i = 0; i < len; i++) {
r[i] = a[i] - b[i]
}
return r
}
V.mul = function (a, b) {
let len = a.length
let r = new Array(len)
for (var i = 0; i < len; i++) {
r[i] = a[i] * b[i]
}
return r
}
V.div = function (a, b) {
let len = a.length
let r = new Array(len)
for (var i = 0; i < len; i++) {
r[i] = a[i] / b[i]
}
return r
}
}