numbl 0.4.21 → 0.4.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.gyp +12 -6
- package/dist-browser/browser/index.d.ts +1 -1
- package/dist-browser/browser/mip.d.ts +7 -0
- package/dist-browser/browser/protocol.d.ts +1 -1
- package/dist-browser/browser.js +1 -1
- package/dist-browser/db/operations.d.ts +0 -1
- package/dist-browser/gpuHelper.d.ts +29 -0
- package/dist-browser/hooks/projectFilesState.d.ts +37 -0
- package/dist-browser/numbl-core/execSession.d.ts +39 -0
- package/dist-browser/numbl-core/executeCode.d.ts +10 -1
- package/dist-browser/numbl-core/executors/classification.d.ts +2 -10
- package/dist-browser/numbl-core/executors/jit/backend.d.ts +65 -0
- package/dist-browser/numbl-core/executors/jit/cBackend.d.ts +22 -0
- package/dist-browser/numbl-core/executors/jit/callExecutor.d.ts +13 -44
- package/dist-browser/numbl-core/executors/jit/hostHelpers.d.ts +24 -0
- package/dist-browser/numbl-core/executors/jit/jsBackend.d.ts +15 -0
- package/dist-browser/numbl-core/executors/jit/loopExecutor.d.ts +13 -40
- package/dist-browser/numbl-core/executors/jit/session.d.ts +1 -1
- package/dist-browser/numbl-core/executors/jit/topLevelExecutor.d.ts +13 -33
- package/dist-browser/numbl-core/executors/jit/valueAdapterC.d.ts +32 -48
- package/dist-browser/numbl-core/executors/lowering.d.ts +38 -96
- package/dist-browser/numbl-core/executors/plugins.d.ts +14 -28
- package/dist-browser/numbl-core/executors/registry.d.ts +32 -133
- package/dist-browser/numbl-core/executors/types.d.ts +30 -92
- package/dist-browser/numbl-core/functionResolve.d.ts +3 -13
- package/dist-browser/numbl-core/helpers/check-helpers.d.ts +0 -5
- package/dist-browser/numbl-core/helpers/glob.d.ts +14 -0
- package/dist-browser/numbl-core/helpers/linsolve.d.ts +3 -13
- package/dist-browser/numbl-core/helpers/reduction-helpers.d.ts +2 -4
- package/dist-browser/numbl-core/helpers/shape-utils.d.ts +10 -0
- package/dist-browser/numbl-core/interpreter/builtins/index.d.ts +3 -1
- package/dist-browser/numbl-core/interpreter/builtins/time-system.d.ts +0 -1
- package/dist-browser/numbl-core/interpreter/builtins/types.d.ts +7 -7
- package/dist-browser/numbl-core/interpreter/interpreter.d.ts +6 -6
- package/dist-browser/numbl-core/interpreter/interpreterFunctions.d.ts +9 -1
- package/dist-browser/numbl-core/interpreter/interpreterSpecialBuiltins.d.ts +6 -3
- package/dist-browser/numbl-core/jit/builtins/defs/_shared.d.ts +1 -5
- package/dist-browser/numbl-core/jit/builtins/defs/arithmetic/_elemwise.d.ts +1 -2
- package/dist-browser/numbl-core/jit/builtins/defs/logical/_unary_pred.d.ts +3 -3
- package/dist-browser/numbl-core/jit/builtins/defs/logical/fieldnames.d.ts +1 -1
- package/dist-browser/numbl-core/jit/builtins/defs/logical/strcmp.d.ts +1 -1
- package/dist-browser/numbl-core/jit/builtins/defs/math/_unary_real.d.ts +5 -2
- package/dist-browser/numbl-core/jit/builtins/defs/math/realsqrt.d.ts +6 -0
- package/dist-browser/numbl-core/jit/builtins/defs/reduction/_shape.d.ts +0 -5
- package/dist-browser/numbl-core/jit/builtins/defs/shape/_construct.d.ts +0 -4
- package/dist-browser/numbl-core/jit/builtins/defs/shape/_triangular.d.ts +2 -8
- package/dist-browser/numbl-core/jit/builtins/defs/system/deal.d.ts +4 -5
- package/dist-browser/numbl-core/jit/builtins/defs/system/feval.d.ts +7 -29
- package/dist-browser/numbl-core/jit/builtins/registry.d.ts +15 -30
- package/dist-browser/numbl-core/jit/builtins/runtime/system/cdiv.d.ts +4 -0
- package/dist-browser/numbl-core/jit/builtins/runtime/system/cscalar.d.ts +4 -0
- package/dist-browser/numbl-core/jit/builtins/runtime/tensor_ops/tensor_elemwise_real_fn.d.ts +45 -15
- package/dist-browser/numbl-core/jit/builtins/runtime/tensor_ops/tensor_reduce_real.d.ts +5 -5
- package/dist-browser/numbl-core/jit/builtins/runtime/tensor_ops/tensor_unary_real_math.d.ts +6 -0
- package/dist-browser/numbl-core/jit/codegen/emit.d.ts +9 -30
- package/dist-browser/numbl-core/jit/codegen/emitJs.d.ts +9 -27
- package/dist-browser/numbl-core/jit/codegen/emitStmt.d.ts +8 -31
- package/dist-browser/numbl-core/jit/codegen/emitTensorFused.d.ts +10 -9
- package/dist-browser/numbl-core/jit/codegen/inlinePass.d.ts +39 -48
- package/dist-browser/numbl-core/jit/codegen/prettyIR.d.ts +1 -6
- package/dist-browser/numbl-core/jit/codegen/runtime.d.ts +7 -28
- package/dist-browser/numbl-core/jit/compileSpec.d.ts +3 -6
- package/dist-browser/numbl-core/jit/compileSpecC.d.ts +5 -0
- package/dist-browser/numbl-core/jit/lowering/assignedFlags.d.ts +24 -0
- package/dist-browser/numbl-core/jit/lowering/definiteAssign.d.ts +3 -1
- package/dist-browser/numbl-core/jit/lowering/errors.d.ts +3 -15
- package/dist-browser/numbl-core/jit/lowering/ir.d.ts +0 -2
- package/dist-browser/numbl-core/jit/lowering/lower.d.ts +4 -12
- package/dist-browser/numbl-core/jit/lowering/types.d.ts +2 -7
- package/dist-browser/numbl-core/jit/numbl/index.d.ts +5 -14
- package/dist-browser/numbl-core/jit/parser/index.d.ts +4 -9
- package/dist-browser/numbl-core/jit/workspace/workspace.d.ts +32 -136
- package/dist-browser/numbl-core/jitDeclineDiagnostics.d.ts +1 -1
- package/dist-browser/numbl-core/jsUserFunctions.d.ts +10 -12
- package/dist-browser/numbl-core/lowering/classInfo.d.ts +4 -1
- package/dist-browser/numbl-core/lowering/loweringContext.d.ts +15 -23
- package/dist-browser/numbl-core/native/lapack-bridge.d.ts +111 -130
- package/dist-browser/numbl-core/native/ts-lapack-bridge.d.ts +4 -5
- package/dist-browser/numbl-core/native/ts-lapack-complex.d.ts +23 -0
- package/dist-browser/numbl-core/native/ts-lapack-qr-lu.d.ts +37 -0
- package/dist-browser/numbl-core/native/wasm-lapack-bridge.d.ts +4 -5
- package/dist-browser/numbl-core/ops/dispatch.d.ts +4 -5
- package/dist-browser/numbl-core/parser/types.d.ts +1 -21
- package/{dist-lib/numbl-core/runtime → dist-browser/numbl-core/plotting}/axisCommand.d.ts +2 -2
- package/dist-browser/{graphics → numbl-core/plotting}/axisLimits.d.ts +14 -2
- package/dist-browser/numbl-core/plotting/builtins.d.ts +8 -0
- package/dist-browser/numbl-core/plotting/colormaps.d.ts +10 -0
- package/dist-browser/numbl-core/{runtime/plotBuiltinDispatch.d.ts → plotting/dispatch.d.ts} +14 -25
- package/dist-browser/numbl-core/plotting/imagescExtent.d.ts +19 -0
- package/dist-browser/numbl-core/{runtime/runtimePlot.d.ts → plotting/instructions.d.ts} +5 -17
- package/dist-browser/numbl-core/plotting/parseArgsChart.d.ts +94 -0
- package/dist-browser/numbl-core/plotting/parseArgsCommon.d.ts +64 -0
- package/dist-browser/numbl-core/plotting/parseArgsLine.d.ts +103 -0
- package/dist-browser/numbl-core/plotting/parseArgsPatch.d.ts +38 -0
- package/dist-browser/numbl-core/plotting/parseArgsQuiver.d.ts +32 -0
- package/dist-browser/numbl-core/plotting/parseArgsSurface.d.ts +75 -0
- package/dist-browser/numbl-core/plotting/streamline.d.ts +16 -0
- package/{dist-graphics/graphics → dist-browser/numbl-core/plotting}/types.d.ts +9 -7
- package/dist-browser/numbl-core/runtime/cow.d.ts +0 -8
- package/dist-browser/numbl-core/runtime/refcount.d.ts +0 -3
- package/dist-browser/numbl-core/runtime/registerSpecial.d.ts +15 -0
- package/dist-browser/numbl-core/runtime/runtime.d.ts +11 -35
- package/dist-browser/numbl-core/runtime/runtimeDispatch.d.ts +6 -0
- package/dist-browser/numbl-core/runtime/specialBuiltins.d.ts +3 -9
- package/dist-browser/numbl-core/runtime/uihtmlSession.d.ts +5 -13
- package/dist-browser/numbl-core/runtime/utils.d.ts +4 -1
- package/dist-browser/numbl-core/version.d.ts +1 -1
- package/dist-browser/numbl-core/workspace/workspace.d.ts +64 -0
- package/dist-browser/vfs/syncVfsChanges.d.ts +2 -2
- package/dist-cli/cli.js +74244 -80566
- package/dist-graphics/graphics/FigureView.d.ts +1 -1
- package/dist-graphics/graphics/SurfView.d.ts +3 -2
- package/dist-graphics/graphics/drawPlot.d.ts +1 -1
- package/dist-graphics/graphics/exportFigureHdf5.d.ts +1 -1
- package/dist-graphics/graphics/figureHashTransport.d.ts +1 -1
- package/dist-graphics/graphics/figureUpload.d.ts +1 -1
- package/dist-graphics/graphics/importFigureHdf5.d.ts +1 -1
- package/dist-graphics/graphics/openInFigureViewer.d.ts +1 -1
- package/dist-graphics/graphics/plotHelpers.d.ts +1 -1
- package/dist-graphics/graphics/plotLegend.d.ts +1 -1
- package/dist-graphics/graphics/plotMarkers.d.ts +1 -1
- package/dist-graphics/graphics/restoreNaNs.d.ts +1 -1
- package/dist-graphics/graphics/uihtmlRelay.d.ts +16 -0
- package/dist-graphics/graphics-lib.d.ts +3 -3
- package/dist-graphics/index.js +294 -328
- package/{dist-lib/graphics → dist-graphics/numbl-core/plotting}/axisLimits.d.ts +14 -2
- package/dist-graphics/numbl-core/plotting/colormaps.d.ts +10 -0
- package/dist-graphics/numbl-core/plotting/imagescExtent.d.ts +19 -0
- package/{dist-browser/graphics → dist-graphics/numbl-core/plotting}/types.d.ts +9 -7
- package/dist-lib/browser/mip.d.ts +17 -0
- package/dist-lib/cli-scan.d.ts +8 -1
- package/dist-lib/lib.d.ts +1 -1
- package/dist-lib/lib.js +29201 -35301
- package/dist-lib/node.js +22 -14
- package/dist-lib/numbl-core/execSession.d.ts +39 -0
- package/dist-lib/numbl-core/executeCode.d.ts +10 -1
- package/dist-lib/numbl-core/executors/classification.d.ts +2 -10
- package/dist-lib/numbl-core/executors/jit/backend.d.ts +65 -0
- package/dist-lib/numbl-core/executors/jit/cBackend.d.ts +22 -0
- package/dist-lib/numbl-core/executors/jit/callExecutor.d.ts +13 -44
- package/dist-lib/numbl-core/executors/jit/hostHelpers.d.ts +24 -0
- package/dist-lib/numbl-core/executors/jit/jsBackend.d.ts +15 -0
- package/dist-lib/numbl-core/executors/jit/loopExecutor.d.ts +13 -40
- package/dist-lib/numbl-core/executors/jit/session.d.ts +1 -1
- package/dist-lib/numbl-core/executors/jit/topLevelExecutor.d.ts +13 -33
- package/dist-lib/numbl-core/executors/jit/valueAdapterC.d.ts +32 -48
- package/dist-lib/numbl-core/executors/lowering.d.ts +38 -96
- package/dist-lib/numbl-core/executors/plugins.d.ts +14 -28
- package/dist-lib/numbl-core/executors/registry.d.ts +32 -133
- package/dist-lib/numbl-core/executors/types.d.ts +30 -92
- package/dist-lib/numbl-core/functionResolve.d.ts +3 -13
- package/dist-lib/numbl-core/helpers/check-helpers.d.ts +0 -5
- package/dist-lib/numbl-core/helpers/glob.d.ts +14 -0
- package/dist-lib/numbl-core/helpers/linsolve.d.ts +3 -13
- package/dist-lib/numbl-core/helpers/reduction-helpers.d.ts +2 -4
- package/dist-lib/numbl-core/helpers/shape-utils.d.ts +10 -0
- package/dist-lib/numbl-core/interpreter/builtins/index.d.ts +3 -1
- package/dist-lib/numbl-core/interpreter/builtins/time-system.d.ts +0 -1
- package/dist-lib/numbl-core/interpreter/builtins/types.d.ts +7 -7
- package/dist-lib/numbl-core/interpreter/interpreter.d.ts +6 -6
- package/dist-lib/numbl-core/interpreter/interpreterFunctions.d.ts +9 -1
- package/dist-lib/numbl-core/interpreter/interpreterSpecialBuiltins.d.ts +6 -3
- package/dist-lib/numbl-core/jit/builtins/defs/_shared.d.ts +1 -5
- package/dist-lib/numbl-core/jit/builtins/defs/arithmetic/_elemwise.d.ts +1 -2
- package/dist-lib/numbl-core/jit/builtins/defs/logical/_unary_pred.d.ts +3 -3
- package/dist-lib/numbl-core/jit/builtins/defs/logical/fieldnames.d.ts +1 -1
- package/dist-lib/numbl-core/jit/builtins/defs/logical/strcmp.d.ts +1 -1
- package/dist-lib/numbl-core/jit/builtins/defs/math/_unary_real.d.ts +5 -2
- package/dist-lib/numbl-core/jit/builtins/defs/math/realsqrt.d.ts +6 -0
- package/dist-lib/numbl-core/jit/builtins/defs/reduction/_shape.d.ts +0 -5
- package/dist-lib/numbl-core/jit/builtins/defs/shape/_construct.d.ts +0 -4
- package/dist-lib/numbl-core/jit/builtins/defs/shape/_triangular.d.ts +2 -8
- package/dist-lib/numbl-core/jit/builtins/defs/system/deal.d.ts +4 -5
- package/dist-lib/numbl-core/jit/builtins/defs/system/feval.d.ts +7 -29
- package/dist-lib/numbl-core/jit/builtins/registry.d.ts +15 -30
- package/dist-lib/numbl-core/jit/builtins/runtime/system/cdiv.d.ts +4 -0
- package/dist-lib/numbl-core/jit/builtins/runtime/system/cscalar.d.ts +4 -0
- package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_elemwise_real_fn.d.ts +45 -15
- package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_reduce_real.d.ts +5 -5
- package/dist-lib/numbl-core/jit/builtins/runtime/tensor_ops/tensor_unary_real_math.d.ts +6 -0
- package/dist-lib/numbl-core/jit/codegen/emit.d.ts +9 -30
- package/dist-lib/numbl-core/jit/codegen/emitJs.d.ts +9 -27
- package/dist-lib/numbl-core/jit/codegen/emitStmt.d.ts +8 -31
- package/dist-lib/numbl-core/jit/codegen/emitTensorFused.d.ts +10 -9
- package/dist-lib/numbl-core/jit/codegen/inlinePass.d.ts +39 -48
- package/dist-lib/numbl-core/jit/codegen/prettyIR.d.ts +1 -6
- package/dist-lib/numbl-core/jit/codegen/runtime.d.ts +7 -28
- package/dist-lib/numbl-core/jit/compileSpec.d.ts +3 -6
- package/dist-lib/numbl-core/jit/compileSpecC.d.ts +5 -0
- package/dist-lib/numbl-core/jit/lowering/assignedFlags.d.ts +24 -0
- package/dist-lib/numbl-core/jit/lowering/definiteAssign.d.ts +3 -1
- package/dist-lib/numbl-core/jit/lowering/errors.d.ts +3 -15
- package/dist-lib/numbl-core/jit/lowering/ir.d.ts +0 -2
- package/dist-lib/numbl-core/jit/lowering/lower.d.ts +4 -12
- package/dist-lib/numbl-core/jit/lowering/types.d.ts +2 -7
- package/dist-lib/numbl-core/jit/numbl/index.d.ts +5 -14
- package/dist-lib/numbl-core/jit/parser/index.d.ts +4 -9
- package/dist-lib/numbl-core/jit/workspace/workspace.d.ts +32 -136
- package/dist-lib/numbl-core/jitDeclineDiagnostics.d.ts +1 -1
- package/dist-lib/numbl-core/jsUserFunctions.d.ts +10 -12
- package/dist-lib/numbl-core/lowering/classInfo.d.ts +4 -1
- package/dist-lib/numbl-core/lowering/loweringContext.d.ts +15 -23
- package/dist-lib/numbl-core/native/lapack-bridge.d.ts +111 -130
- package/dist-lib/numbl-core/native/ts-lapack-bridge.d.ts +4 -5
- package/dist-lib/numbl-core/native/ts-lapack-complex.d.ts +23 -0
- package/dist-lib/numbl-core/native/ts-lapack-qr-lu.d.ts +37 -0
- package/dist-lib/numbl-core/native/wasm-lapack-bridge.d.ts +4 -5
- package/dist-lib/numbl-core/ops/dispatch.d.ts +4 -5
- package/dist-lib/numbl-core/parser/types.d.ts +1 -21
- package/{dist-browser/numbl-core/runtime → dist-lib/numbl-core/plotting}/axisCommand.d.ts +2 -2
- package/{dist-graphics/graphics → dist-lib/numbl-core/plotting}/axisLimits.d.ts +14 -2
- package/dist-lib/numbl-core/plotting/builtins.d.ts +8 -0
- package/dist-lib/numbl-core/plotting/colormaps.d.ts +10 -0
- package/dist-lib/numbl-core/{runtime/plotBuiltinDispatch.d.ts → plotting/dispatch.d.ts} +14 -25
- package/dist-lib/numbl-core/plotting/imagescExtent.d.ts +19 -0
- package/dist-lib/numbl-core/{runtime/runtimePlot.d.ts → plotting/instructions.d.ts} +5 -17
- package/dist-lib/numbl-core/plotting/parseArgsChart.d.ts +94 -0
- package/dist-lib/numbl-core/plotting/parseArgsCommon.d.ts +64 -0
- package/dist-lib/numbl-core/plotting/parseArgsLine.d.ts +103 -0
- package/dist-lib/numbl-core/plotting/parseArgsPatch.d.ts +38 -0
- package/dist-lib/numbl-core/plotting/parseArgsQuiver.d.ts +32 -0
- package/dist-lib/numbl-core/plotting/parseArgsSurface.d.ts +75 -0
- package/dist-lib/numbl-core/plotting/streamline.d.ts +16 -0
- package/dist-lib/{graphics → numbl-core/plotting}/types.d.ts +9 -7
- package/dist-lib/numbl-core/runtime/cow.d.ts +0 -8
- package/dist-lib/numbl-core/runtime/refcount.d.ts +0 -3
- package/dist-lib/numbl-core/runtime/registerSpecial.d.ts +15 -0
- package/dist-lib/numbl-core/runtime/runtime.d.ts +11 -35
- package/dist-lib/numbl-core/runtime/runtimeDispatch.d.ts +6 -0
- package/dist-lib/numbl-core/runtime/specialBuiltins.d.ts +3 -9
- package/dist-lib/numbl-core/runtime/uihtmlSession.d.ts +5 -13
- package/dist-lib/numbl-core/runtime/utils.d.ts +4 -1
- package/dist-lib/numbl-core/version.d.ts +1 -1
- package/dist-lib/numbl-core/workspace/workspace.d.ts +64 -0
- package/dist-lib/vfs/unzipToFiles.d.ts +7 -0
- package/dist-plot-viewer/assets/index-C0fIevlp.js +4504 -0
- package/dist-plot-viewer/index.html +1 -1
- package/dist-site-viewer/assets/index-BDaviCH6.js +4832 -0
- package/dist-site-viewer/assets/numbl-worker-D6m4K2PP.js +5691 -0
- package/dist-site-viewer/index.html +2 -2
- package/native/numbl_addon.cpp +2 -12
- package/native/numbl_addon_common.h +0 -5
- package/package.json +6 -5
- package/dist-browser/hooks/useProjectFiles.d.ts +0 -45
- package/dist-browser/numbl-core/executors/context.d.ts +0 -76
- package/dist-browser/numbl-core/executors/index.d.ts +0 -14
- package/dist-browser/numbl-core/executors/jit/cJitCallExecutor.d.ts +0 -35
- package/dist-browser/numbl-core/executors/jit/cJitLoopExecutor.d.ts +0 -31
- package/dist-browser/numbl-core/executors/jit/cJitTopLevelExecutor.d.ts +0 -29
- package/dist-browser/numbl-core/helpers/dummy.d.ts +0 -5
- package/dist-browser/numbl-core/jit/runtime/context.d.ts +0 -23
- package/dist-browser/numbl-core/jit/runtime/inferType.d.ts +0 -10
- package/dist-browser/numbl-core/jit/runtime/value.d.ts +0 -101
- package/dist-browser/numbl-core/jit/workspace/driverPrologue.d.ts +0 -59
- package/dist-browser/numbl-core/jit/workspace/mtoc2UserFunctionLoader.d.ts +0 -62
- package/dist-browser/numbl-core/native/bridge-resolve.d.ts +0 -14
- package/dist-browser/numbl-core/runtime/plotUtils.d.ts +0 -336
- package/dist-browser/numbl-core/runtime/specialBuiltinNames.d.ts +0 -2
- package/dist-graphics/graphics/surfColormap.d.ts +0 -2
- package/dist-lib/numbl-core/executors/context.d.ts +0 -76
- package/dist-lib/numbl-core/executors/index.d.ts +0 -14
- package/dist-lib/numbl-core/executors/jit/cJitCallExecutor.d.ts +0 -35
- package/dist-lib/numbl-core/executors/jit/cJitLoopExecutor.d.ts +0 -31
- package/dist-lib/numbl-core/executors/jit/cJitTopLevelExecutor.d.ts +0 -29
- package/dist-lib/numbl-core/helpers/dummy.d.ts +0 -5
- package/dist-lib/numbl-core/jit/runtime/context.d.ts +0 -23
- package/dist-lib/numbl-core/jit/runtime/inferType.d.ts +0 -10
- package/dist-lib/numbl-core/jit/runtime/value.d.ts +0 -101
- package/dist-lib/numbl-core/jit/workspace/driverPrologue.d.ts +0 -59
- package/dist-lib/numbl-core/jit/workspace/mtoc2UserFunctionLoader.d.ts +0 -62
- package/dist-lib/numbl-core/native/bridge-resolve.d.ts +0 -14
- package/dist-lib/numbl-core/runtime/plotUtils.d.ts +0 -336
- package/dist-lib/numbl-core/runtime/specialBuiltinNames.d.ts +0 -2
- package/dist-plot-viewer/assets/index-YeXWXIxH.js +0 -4504
- package/dist-site-viewer/assets/index-DrtkDG_M.js +0 -4832
- package/dist-site-viewer/assets/numbl-worker-Dz_Z8B9u.js +0 -5327
- package/native/elemwise.cpp +0 -360
- package/native/unary_elemwise.cpp +0 -67
- /package/dist-browser/{graphics → numbl-core/plotting}/figuresReducer.d.ts +0 -0
- /package/dist-graphics/{graphics → numbl-core/plotting}/figuresReducer.d.ts +0 -0
- /package/dist-lib/{graphics → numbl-core/plotting}/figuresReducer.d.ts +0 -0
package/native/elemwise.cpp
DELETED
|
@@ -1,360 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Element-wise binary operations on Float64Arrays.
|
|
3
|
-
*
|
|
4
|
-
* Real:
|
|
5
|
-
* elemwise(a: Float64Array, b: Float64Array, op: number): Float64Array
|
|
6
|
-
* op: 0=add, 1=sub, 2=mul, 3=div
|
|
7
|
-
*
|
|
8
|
-
* elemwiseScalar(scalar: number, arr: Float64Array, op: number, scalarOnLeft: boolean): Float64Array
|
|
9
|
-
* op: 0=add, 1=sub, 2=mul, 3=div
|
|
10
|
-
* scalarOnLeft=true: result[i] = scalar op arr[i]
|
|
11
|
-
* scalarOnLeft=false: result[i] = arr[i] op scalar
|
|
12
|
-
*
|
|
13
|
-
* Complex:
|
|
14
|
-
* elemwiseComplex(aRe: Float64Array, aIm: Float64Array,
|
|
15
|
-
* bRe: Float64Array, bIm: Float64Array,
|
|
16
|
-
* op: number): { re: Float64Array, im: Float64Array }
|
|
17
|
-
* op: 0=add, 1=sub, 2=mul, 3=div
|
|
18
|
-
* Pass null for aIm or bIm to treat as zero (mixed real/complex).
|
|
19
|
-
*
|
|
20
|
-
* elemwiseComplexScalar(scalarRe: number, scalarIm: number,
|
|
21
|
-
* arrRe: Float64Array, arrIm: Float64Array|null,
|
|
22
|
-
* op: number, scalarOnLeft: boolean)
|
|
23
|
-
* : { re: Float64Array, im: Float64Array }
|
|
24
|
-
* op: 0=add, 1=sub, 2=mul, 3=div
|
|
25
|
-
* Complex scalar with a possibly-complex tensor. When scalar is purely
|
|
26
|
-
* real (scalarIm == 0) and the tensor is real (arrIm == null), prefer
|
|
27
|
-
* elemwiseScalar for better throughput.
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
#include "numbl_addon_common.h"
|
|
31
|
-
|
|
32
|
-
// ── elemwise() — real element-wise binary op ────────────────────────────────
|
|
33
|
-
|
|
34
|
-
Napi::Value Elemwise(const Napi::CallbackInfo& info) {
|
|
35
|
-
Napi::Env env = info.Env();
|
|
36
|
-
|
|
37
|
-
if (info.Length() < 3
|
|
38
|
-
|| !info[0].IsTypedArray()
|
|
39
|
-
|| !info[1].IsTypedArray()
|
|
40
|
-
|| !info[2].IsNumber()) {
|
|
41
|
-
Napi::TypeError::New(env,
|
|
42
|
-
"elemwise: expected (Float64Array a, Float64Array b, number op)")
|
|
43
|
-
.ThrowAsJavaScriptException();
|
|
44
|
-
return env.Null();
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
auto arrA = info[0].As<Napi::Float64Array>();
|
|
48
|
-
auto arrB = info[1].As<Napi::Float64Array>();
|
|
49
|
-
int op = info[2].As<Napi::Number>().Int32Value();
|
|
50
|
-
|
|
51
|
-
size_t n = arrA.ElementLength();
|
|
52
|
-
if (arrB.ElementLength() != n) {
|
|
53
|
-
Napi::RangeError::New(env, "elemwise: arrays must have same length")
|
|
54
|
-
.ThrowAsJavaScriptException();
|
|
55
|
-
return env.Null();
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
auto result = Napi::Float64Array::New(env, n);
|
|
59
|
-
const double* a = arrA.Data();
|
|
60
|
-
const double* b = arrB.Data();
|
|
61
|
-
double* out = result.Data();
|
|
62
|
-
|
|
63
|
-
switch (op) {
|
|
64
|
-
case 0: // add
|
|
65
|
-
for (size_t i = 0; i < n; i++) out[i] = a[i] + b[i];
|
|
66
|
-
break;
|
|
67
|
-
case 1: // sub
|
|
68
|
-
for (size_t i = 0; i < n; i++) out[i] = a[i] - b[i];
|
|
69
|
-
break;
|
|
70
|
-
case 2: // mul
|
|
71
|
-
for (size_t i = 0; i < n; i++) out[i] = a[i] * b[i];
|
|
72
|
-
break;
|
|
73
|
-
case 3: // div
|
|
74
|
-
for (size_t i = 0; i < n; i++) out[i] = a[i] / b[i];
|
|
75
|
-
break;
|
|
76
|
-
default:
|
|
77
|
-
Napi::RangeError::New(env, "elemwise: op must be 0-3")
|
|
78
|
-
.ThrowAsJavaScriptException();
|
|
79
|
-
return env.Null();
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
return result;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// ── elemwiseComplex() — complex element-wise binary op ──────────────────────
|
|
86
|
-
|
|
87
|
-
Napi::Value ElemwiseComplex(const Napi::CallbackInfo& info) {
|
|
88
|
-
Napi::Env env = info.Env();
|
|
89
|
-
|
|
90
|
-
// (aRe, aIm_or_null, bRe, bIm_or_null, op)
|
|
91
|
-
if (info.Length() < 5 || !info[0].IsTypedArray() || !info[2].IsTypedArray()
|
|
92
|
-
|| !info[4].IsNumber()) {
|
|
93
|
-
Napi::TypeError::New(env,
|
|
94
|
-
"elemwiseComplex: expected (Float64Array aRe, Float64Array|null aIm, "
|
|
95
|
-
"Float64Array bRe, Float64Array|null bIm, number op)")
|
|
96
|
-
.ThrowAsJavaScriptException();
|
|
97
|
-
return env.Null();
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
auto arrARe = info[0].As<Napi::Float64Array>();
|
|
101
|
-
auto arrBRe = info[2].As<Napi::Float64Array>();
|
|
102
|
-
int op = info[4].As<Napi::Number>().Int32Value();
|
|
103
|
-
|
|
104
|
-
size_t n = arrARe.ElementLength();
|
|
105
|
-
if (arrBRe.ElementLength() != n) {
|
|
106
|
-
Napi::RangeError::New(env, "elemwiseComplex: arrays must have same length")
|
|
107
|
-
.ThrowAsJavaScriptException();
|
|
108
|
-
return env.Null();
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
const double* aRe = arrARe.Data();
|
|
112
|
-
const double* bRe = arrBRe.Data();
|
|
113
|
-
|
|
114
|
-
// aIm and bIm may be null (treat as zero)
|
|
115
|
-
bool hasAIm = info[1].IsTypedArray();
|
|
116
|
-
bool hasBIm = info[3].IsTypedArray();
|
|
117
|
-
const double* aIm = hasAIm ? info[1].As<Napi::Float64Array>().Data() : nullptr;
|
|
118
|
-
const double* bIm = hasBIm ? info[3].As<Napi::Float64Array>().Data() : nullptr;
|
|
119
|
-
|
|
120
|
-
auto outRe = Napi::Float64Array::New(env, n);
|
|
121
|
-
auto outIm = Napi::Float64Array::New(env, n);
|
|
122
|
-
double* oRe = outRe.Data();
|
|
123
|
-
double* oIm = outIm.Data();
|
|
124
|
-
|
|
125
|
-
switch (op) {
|
|
126
|
-
case 0: // add
|
|
127
|
-
for (size_t i = 0; i < n; i++) {
|
|
128
|
-
oRe[i] = aRe[i] + bRe[i];
|
|
129
|
-
oIm[i] = (aIm ? aIm[i] : 0.0) + (bIm ? bIm[i] : 0.0);
|
|
130
|
-
}
|
|
131
|
-
break;
|
|
132
|
-
case 1: // sub
|
|
133
|
-
for (size_t i = 0; i < n; i++) {
|
|
134
|
-
oRe[i] = aRe[i] - bRe[i];
|
|
135
|
-
oIm[i] = (aIm ? aIm[i] : 0.0) - (bIm ? bIm[i] : 0.0);
|
|
136
|
-
}
|
|
137
|
-
break;
|
|
138
|
-
case 2: { // mul: (a+bi)(c+di) = (ac-bd) + (ad+bc)i
|
|
139
|
-
for (size_t i = 0; i < n; i++) {
|
|
140
|
-
double ar = aRe[i], ai = aIm ? aIm[i] : 0.0;
|
|
141
|
-
double br = bRe[i], bi = bIm ? bIm[i] : 0.0;
|
|
142
|
-
oRe[i] = ar * br - ai * bi;
|
|
143
|
-
oIm[i] = ar * bi + ai * br;
|
|
144
|
-
}
|
|
145
|
-
break;
|
|
146
|
-
}
|
|
147
|
-
case 3: { // div: (a+bi)/(c+di) = ((ac+bd) + (bc-ad)i) / (c²+d²)
|
|
148
|
-
for (size_t i = 0; i < n; i++) {
|
|
149
|
-
double ar = aRe[i], ai = aIm ? aIm[i] : 0.0;
|
|
150
|
-
double br = bRe[i], bi = bIm ? bIm[i] : 0.0;
|
|
151
|
-
double denom = br * br + bi * bi;
|
|
152
|
-
if (denom == 0.0) {
|
|
153
|
-
oRe[i] = (ar == 0.0 && ai == 0.0) ? 0.0 / 0.0 /* NaN */
|
|
154
|
-
: (ar > 0 ? 1.0 : ar < 0 ? -1.0 : 0.0) / 0.0 /* ±Inf */;
|
|
155
|
-
oIm[i] = (ar == 0.0 && ai == 0.0) ? 0.0
|
|
156
|
-
: (ai > 0 ? 1.0 : ai < 0 ? -1.0 : 0.0) / 0.0;
|
|
157
|
-
} else {
|
|
158
|
-
oRe[i] = (ar * br + ai * bi) / denom;
|
|
159
|
-
oIm[i] = (ai * br - ar * bi) / denom;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
break;
|
|
163
|
-
}
|
|
164
|
-
default:
|
|
165
|
-
Napi::RangeError::New(env, "elemwiseComplex: op must be 0-3")
|
|
166
|
-
.ThrowAsJavaScriptException();
|
|
167
|
-
return env.Null();
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
// Check if result is purely real
|
|
171
|
-
bool isReal = true;
|
|
172
|
-
for (size_t i = 0; i < n; i++) {
|
|
173
|
-
if (oIm[i] != 0.0) { isReal = false; break; }
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
auto result = Napi::Object::New(env);
|
|
177
|
-
result.Set("re", outRe);
|
|
178
|
-
if (!isReal) {
|
|
179
|
-
result.Set("im", outIm);
|
|
180
|
-
}
|
|
181
|
-
return result;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
// ── elemwiseScalar() — scalar-tensor element-wise binary op ────────────────
|
|
185
|
-
|
|
186
|
-
Napi::Value ElemwiseScalar(const Napi::CallbackInfo& info) {
|
|
187
|
-
Napi::Env env = info.Env();
|
|
188
|
-
|
|
189
|
-
if (info.Length() < 4
|
|
190
|
-
|| !info[0].IsNumber()
|
|
191
|
-
|| !info[1].IsTypedArray()
|
|
192
|
-
|| !info[2].IsNumber()
|
|
193
|
-
|| !info[3].IsBoolean()) {
|
|
194
|
-
Napi::TypeError::New(env,
|
|
195
|
-
"elemwiseScalar: expected (number scalar, Float64Array arr, number op, boolean scalarOnLeft)")
|
|
196
|
-
.ThrowAsJavaScriptException();
|
|
197
|
-
return env.Null();
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
double scalar = info[0].As<Napi::Number>().DoubleValue();
|
|
201
|
-
auto arr = info[1].As<Napi::Float64Array>();
|
|
202
|
-
int op = info[2].As<Napi::Number>().Int32Value();
|
|
203
|
-
bool scalarOnLeft = info[3].As<Napi::Boolean>().Value();
|
|
204
|
-
|
|
205
|
-
size_t n = arr.ElementLength();
|
|
206
|
-
auto result = Napi::Float64Array::New(env, n);
|
|
207
|
-
const double* a = arr.Data();
|
|
208
|
-
double* out = result.Data();
|
|
209
|
-
|
|
210
|
-
if (scalarOnLeft) {
|
|
211
|
-
switch (op) {
|
|
212
|
-
case 0: for (size_t i = 0; i < n; i++) out[i] = scalar + a[i]; break;
|
|
213
|
-
case 1: for (size_t i = 0; i < n; i++) out[i] = scalar - a[i]; break;
|
|
214
|
-
case 2: for (size_t i = 0; i < n; i++) out[i] = scalar * a[i]; break;
|
|
215
|
-
case 3: for (size_t i = 0; i < n; i++) out[i] = scalar / a[i]; break;
|
|
216
|
-
default:
|
|
217
|
-
Napi::RangeError::New(env, "elemwiseScalar: op must be 0-3")
|
|
218
|
-
.ThrowAsJavaScriptException();
|
|
219
|
-
return env.Null();
|
|
220
|
-
}
|
|
221
|
-
} else {
|
|
222
|
-
switch (op) {
|
|
223
|
-
case 0: for (size_t i = 0; i < n; i++) out[i] = a[i] + scalar; break;
|
|
224
|
-
case 1: for (size_t i = 0; i < n; i++) out[i] = a[i] - scalar; break;
|
|
225
|
-
case 2: for (size_t i = 0; i < n; i++) out[i] = a[i] * scalar; break;
|
|
226
|
-
case 3: for (size_t i = 0; i < n; i++) out[i] = a[i] / scalar; break;
|
|
227
|
-
default:
|
|
228
|
-
Napi::RangeError::New(env, "elemwiseScalar: op must be 0-3")
|
|
229
|
-
.ThrowAsJavaScriptException();
|
|
230
|
-
return env.Null();
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
return result;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
// ── elemwiseComplexScalar() — complex-scalar-tensor element-wise binary op ──
|
|
238
|
-
|
|
239
|
-
Napi::Value ElemwiseComplexScalar(const Napi::CallbackInfo& info) {
|
|
240
|
-
Napi::Env env = info.Env();
|
|
241
|
-
|
|
242
|
-
// (scalarRe, scalarIm, arrRe, arrIm_or_null, op, scalarOnLeft)
|
|
243
|
-
if (info.Length() < 6
|
|
244
|
-
|| !info[0].IsNumber()
|
|
245
|
-
|| !info[1].IsNumber()
|
|
246
|
-
|| !info[2].IsTypedArray()
|
|
247
|
-
|| !info[4].IsNumber()
|
|
248
|
-
|| !info[5].IsBoolean()) {
|
|
249
|
-
Napi::TypeError::New(env,
|
|
250
|
-
"elemwiseComplexScalar: expected (number sRe, number sIm, "
|
|
251
|
-
"Float64Array arrRe, Float64Array|null arrIm, number op, "
|
|
252
|
-
"boolean scalarOnLeft)")
|
|
253
|
-
.ThrowAsJavaScriptException();
|
|
254
|
-
return env.Null();
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
double sRe = info[0].As<Napi::Number>().DoubleValue();
|
|
258
|
-
double sIm = info[1].As<Napi::Number>().DoubleValue();
|
|
259
|
-
auto arrRe = info[2].As<Napi::Float64Array>();
|
|
260
|
-
int op = info[4].As<Napi::Number>().Int32Value();
|
|
261
|
-
bool scalarOnLeft = info[5].As<Napi::Boolean>().Value();
|
|
262
|
-
|
|
263
|
-
size_t n = arrRe.ElementLength();
|
|
264
|
-
const double* aRe = arrRe.Data();
|
|
265
|
-
const bool hasAIm = info[3].IsTypedArray();
|
|
266
|
-
const double* aIm = hasAIm ? info[3].As<Napi::Float64Array>().Data() : nullptr;
|
|
267
|
-
|
|
268
|
-
auto outRe = Napi::Float64Array::New(env, n);
|
|
269
|
-
auto outIm = Napi::Float64Array::New(env, n);
|
|
270
|
-
double* oRe = outRe.Data();
|
|
271
|
-
double* oIm = outIm.Data();
|
|
272
|
-
|
|
273
|
-
switch (op) {
|
|
274
|
-
case 0: // add: result is (sRe + aRe) + (sIm + aIm) i
|
|
275
|
-
for (size_t i = 0; i < n; i++) {
|
|
276
|
-
oRe[i] = sRe + aRe[i];
|
|
277
|
-
oIm[i] = sIm + (aIm ? aIm[i] : 0.0);
|
|
278
|
-
}
|
|
279
|
-
break;
|
|
280
|
-
case 1: // sub
|
|
281
|
-
if (scalarOnLeft) {
|
|
282
|
-
for (size_t i = 0; i < n; i++) {
|
|
283
|
-
oRe[i] = sRe - aRe[i];
|
|
284
|
-
oIm[i] = sIm - (aIm ? aIm[i] : 0.0);
|
|
285
|
-
}
|
|
286
|
-
} else {
|
|
287
|
-
for (size_t i = 0; i < n; i++) {
|
|
288
|
-
oRe[i] = aRe[i] - sRe;
|
|
289
|
-
oIm[i] = (aIm ? aIm[i] : 0.0) - sIm;
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
break;
|
|
293
|
-
case 2: // mul: (sRe + sIm i)(aRe + aIm i)
|
|
294
|
-
for (size_t i = 0; i < n; i++) {
|
|
295
|
-
double ar = aRe[i];
|
|
296
|
-
double ai = aIm ? aIm[i] : 0.0;
|
|
297
|
-
oRe[i] = sRe * ar - sIm * ai;
|
|
298
|
-
oIm[i] = sRe * ai + sIm * ar;
|
|
299
|
-
}
|
|
300
|
-
break;
|
|
301
|
-
case 3: // div
|
|
302
|
-
if (scalarOnLeft) {
|
|
303
|
-
// (sRe + sIm i) / (ar + ai i)
|
|
304
|
-
for (size_t i = 0; i < n; i++) {
|
|
305
|
-
double ar = aRe[i];
|
|
306
|
-
double ai = aIm ? aIm[i] : 0.0;
|
|
307
|
-
double denom = ar * ar + ai * ai;
|
|
308
|
-
if (denom == 0.0) {
|
|
309
|
-
// Match JS: produce Inf/NaN components.
|
|
310
|
-
oRe[i] = (sRe == 0.0 && sIm == 0.0) ? 0.0 / 0.0
|
|
311
|
-
: (sRe > 0 ? 1.0 : sRe < 0 ? -1.0 : 0.0) / 0.0;
|
|
312
|
-
oIm[i] = (sRe == 0.0 && sIm == 0.0) ? 0.0
|
|
313
|
-
: (sIm > 0 ? 1.0 : sIm < 0 ? -1.0 : 0.0) / 0.0;
|
|
314
|
-
} else {
|
|
315
|
-
oRe[i] = (sRe * ar + sIm * ai) / denom;
|
|
316
|
-
oIm[i] = (sIm * ar - sRe * ai) / denom;
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
} else {
|
|
320
|
-
// (ar + ai i) / (sRe + sIm i)
|
|
321
|
-
double denom = sRe * sRe + sIm * sIm;
|
|
322
|
-
if (denom == 0.0) {
|
|
323
|
-
for (size_t i = 0; i < n; i++) {
|
|
324
|
-
double ar = aRe[i];
|
|
325
|
-
double ai = aIm ? aIm[i] : 0.0;
|
|
326
|
-
oRe[i] = (ar == 0.0 && ai == 0.0) ? 0.0 / 0.0
|
|
327
|
-
: (ar > 0 ? 1.0 : ar < 0 ? -1.0 : 0.0) / 0.0;
|
|
328
|
-
oIm[i] = (ar == 0.0 && ai == 0.0) ? 0.0
|
|
329
|
-
: (ai > 0 ? 1.0 : ai < 0 ? -1.0 : 0.0) / 0.0;
|
|
330
|
-
}
|
|
331
|
-
} else {
|
|
332
|
-
double invDenom = 1.0 / denom;
|
|
333
|
-
for (size_t i = 0; i < n; i++) {
|
|
334
|
-
double ar = aRe[i];
|
|
335
|
-
double ai = aIm ? aIm[i] : 0.0;
|
|
336
|
-
oRe[i] = (ar * sRe + ai * sIm) * invDenom;
|
|
337
|
-
oIm[i] = (ai * sRe - ar * sIm) * invDenom;
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
break;
|
|
342
|
-
default:
|
|
343
|
-
Napi::RangeError::New(env, "elemwiseComplexScalar: op must be 0-3")
|
|
344
|
-
.ThrowAsJavaScriptException();
|
|
345
|
-
return env.Null();
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
// Check if result is purely real
|
|
349
|
-
bool isReal = true;
|
|
350
|
-
for (size_t i = 0; i < n; i++) {
|
|
351
|
-
if (oIm[i] != 0.0) { isReal = false; break; }
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
auto result = Napi::Object::New(env);
|
|
355
|
-
result.Set("re", outRe);
|
|
356
|
-
if (!isReal) {
|
|
357
|
-
result.Set("im", outIm);
|
|
358
|
-
}
|
|
359
|
-
return result;
|
|
360
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Native unary element-wise math operations on Float64Arrays.
|
|
3
|
-
*
|
|
4
|
-
* unaryElemwise(arr: Float64Array, op: number): Float64Array
|
|
5
|
-
* op codes:
|
|
6
|
-
* 0=exp, 1=log, 2=log2, 3=log10,
|
|
7
|
-
* 4=sqrt, 5=abs, 6=floor, 7=ceil, 8=round, 9=trunc (fix),
|
|
8
|
-
* 10=sin, 11=cos, 12=tan, 13=asin, 14=acos, 15=atan,
|
|
9
|
-
* 16=sinh, 17=cosh, 18=tanh, 19=sign
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
#include "numbl_addon_common.h"
|
|
13
|
-
#include <cmath>
|
|
14
|
-
|
|
15
|
-
Napi::Value UnaryElemwise(const Napi::CallbackInfo& info) {
|
|
16
|
-
Napi::Env env = info.Env();
|
|
17
|
-
|
|
18
|
-
if (info.Length() < 2
|
|
19
|
-
|| !info[0].IsTypedArray()
|
|
20
|
-
|| !info[1].IsNumber()) {
|
|
21
|
-
Napi::TypeError::New(env,
|
|
22
|
-
"unaryElemwise: expected (Float64Array arr, number op)")
|
|
23
|
-
.ThrowAsJavaScriptException();
|
|
24
|
-
return env.Null();
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
auto arr = info[0].As<Napi::Float64Array>();
|
|
28
|
-
int op = info[1].As<Napi::Number>().Int32Value();
|
|
29
|
-
|
|
30
|
-
size_t n = arr.ElementLength();
|
|
31
|
-
auto result = Napi::Float64Array::New(env, n);
|
|
32
|
-
const double* a = arr.Data();
|
|
33
|
-
double* out = result.Data();
|
|
34
|
-
|
|
35
|
-
switch (op) {
|
|
36
|
-
case 0: for (size_t i = 0; i < n; i++) out[i] = std::exp(a[i]); break;
|
|
37
|
-
case 1: for (size_t i = 0; i < n; i++) out[i] = std::log(a[i]); break;
|
|
38
|
-
case 2: for (size_t i = 0; i < n; i++) out[i] = std::log2(a[i]); break;
|
|
39
|
-
case 3: for (size_t i = 0; i < n; i++) out[i] = std::log10(a[i]); break;
|
|
40
|
-
case 4: for (size_t i = 0; i < n; i++) out[i] = std::sqrt(a[i]); break;
|
|
41
|
-
case 5: for (size_t i = 0; i < n; i++) out[i] = std::abs(a[i]); break;
|
|
42
|
-
case 6: for (size_t i = 0; i < n; i++) out[i] = std::floor(a[i]); break;
|
|
43
|
-
case 7: for (size_t i = 0; i < n; i++) out[i] = std::ceil(a[i]); break;
|
|
44
|
-
case 8: for (size_t i = 0; i < n; i++) out[i] = std::round(a[i]); break;
|
|
45
|
-
case 9: for (size_t i = 0; i < n; i++) out[i] = std::trunc(a[i]); break;
|
|
46
|
-
case 10: for (size_t i = 0; i < n; i++) out[i] = std::sin(a[i]); break;
|
|
47
|
-
case 11: for (size_t i = 0; i < n; i++) out[i] = std::cos(a[i]); break;
|
|
48
|
-
case 12: for (size_t i = 0; i < n; i++) out[i] = std::tan(a[i]); break;
|
|
49
|
-
case 13: for (size_t i = 0; i < n; i++) out[i] = std::asin(a[i]); break;
|
|
50
|
-
case 14: for (size_t i = 0; i < n; i++) out[i] = std::acos(a[i]); break;
|
|
51
|
-
case 15: for (size_t i = 0; i < n; i++) out[i] = std::atan(a[i]); break;
|
|
52
|
-
case 16: for (size_t i = 0; i < n; i++) out[i] = std::sinh(a[i]); break;
|
|
53
|
-
case 17: for (size_t i = 0; i < n; i++) out[i] = std::cosh(a[i]); break;
|
|
54
|
-
case 18: for (size_t i = 0; i < n; i++) out[i] = std::tanh(a[i]); break;
|
|
55
|
-
case 19:
|
|
56
|
-
for (size_t i = 0; i < n; i++) {
|
|
57
|
-
out[i] = (a[i] > 0.0) ? 1.0 : (a[i] < 0.0) ? -1.0 : 0.0;
|
|
58
|
-
}
|
|
59
|
-
break;
|
|
60
|
-
default:
|
|
61
|
-
Napi::RangeError::New(env, "unaryElemwise: unknown op code")
|
|
62
|
-
.ThrowAsJavaScriptException();
|
|
63
|
-
return env.Null();
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
return result;
|
|
67
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|