vectorized rung builder

This commit is contained in:
Tim
2024-04-30 16:43:12 -04:00
parent 2effb1f43a
commit 9094a10fe3
3 changed files with 107 additions and 24 deletions

58
src/vector.js Normal file
View File

@@ -0,0 +1,58 @@
export function vectorize(value) {
if (value === undefined) {
console.warn('vectorizing undefined as null')
return null
}
if (value === null)
return null
if (value.length === undefined)
value = [value]
return value;
}
export function devectorize(value) {
return value === null || value.length === 0 ? null : value.length === 1 ? value[0] : value
}
export function vectorIsNull(value) {
console.log('vectorIsNull', value, value === null || value.length === 1 && value[0] === null)
return value === null || value.length === 1 && value[0] === null
}
export function vectorAdd(a, b) {
const result = []
const scalarB = b.length === undefined
for( let i=0; i<a.length; i++ )
result.push(a[i]+(scalarB ? b : b[i]))
console.log('vectorAdd', a, b, result)
return result
}
export function vectorSub(a, b) {
const result = []
const scalarB = b.length === undefined
for( let i=0; i<a.length; i++ )
result.push(a[i]-(scalarB ? b : b[i]))
console.log('vectorSub', a, b, result)
return result
}
export function vectorMul(a, b) {
const result = []
const scalarB = b.length === undefined
for( let i=0; i<a.length; i++ )
result.push(a[i]*(scalarB ? b : b[i]))
console.log('vectorMul', a, b, result)
return result
}
export function vectorDiv(a, b) {
const result = []
const scalarB = b.length === undefined
for( let i=0; i<a.length; i++ )
result.push(a[i]/(scalarB ? b : b[i]))
console.log('vectorDiv', a, b, result)
return result
}