@shumai/shumai
Version:
A fast, network-connected, differentiable tensor library for TypeScript (and JavaScript). Built with bun + flashlight for software engineers and researchers alike.
34 lines (27 loc) • 807 B
text/typescript
import { Tensor } from '@shumai/shumai'
import { ptr } from 'bun:ffi'
function arrayArg(arg: number | number[] | Tensor[] | BigInt64Array) {
if (typeof arg === 'number') arg = [arg]
if (arg.length == 0) {
return [0, 0]
}
let outArray: BigInt64Array
if (arg instanceof Array) {
const numArray: number[] = []
for (let i = 0; i < arg.length; ++i) {
const item = arg[i]
if (typeof item === 'number') {
numArray.push(item)
} else if (item instanceof Tensor) {
numArray.push(item.ptr)
} else {
throw new Error(`Unsupported type at position ${i} of input arg`)
}
}
outArray = new BigInt64Array(numArray.map((x) => BigInt(x)))
} else {
outArray = arg
}
return [ptr(outArray), outArray.length]
}
export { arrayArg }