RunMat
  • Pricing
RunMat
GitHub
GitHub
DownloadSign InTry in Browser
DesktopRuntimeServer
RunMat

Run math blazing fast

GitHubX (Twitter)LinkedIn

Company

  • About
  • Pricing
  • Contact

Explore

  • RunMat for academia
  • RunMat vs MATLAB Online
  • Benchmarks

Get product updates and release notes from the RunMat team.

© 2026 Dystr · Made withfor the scientific community.

RunMat™ is a registered trademark of Dystr, Inc. MATLAB® is a registered trademark of The MathWorks, Inc. RunMat is not affiliated with, endorsed by, or sponsored by The MathWorks, Inc.

LicensePrivacy
/
See all docs
Builtin Reference
    • abs
    • angle
    • bsxfun
    • complex
    • conj
    • double
    • erf
    • erfcinv
    • exp
    • expm1
    • factorial
    • flintmax
    • gamma
    • gammaln
    • heaviside
    • hypot
    • idivide
    • imag
    • intmax
    • intmin
    • ldivide
    • log
    • log10
    • log1p
    • log2
    • minus
    • nextpow2
    • plus
    • pow2
    • power
    • rdivide
    • real
    • realmax
    • realmin
    • realsqrt
    • rescale
    • sign
    • single
    • sqrt
    • swapbytes
    • times
    • typecast
    • uint16
    • uint32
    • uint8

bsxfun — Apply a binary function element-wise with MATLAB-compatible singleton expansion.

C = bsxfun(fun,A,B) applies binary function fun element-wise to A and B after expanding singleton dimensions to a common compatible size.

Syntax

C = bsxfun(fun, A, B)

Inputs

NameTypeRequiredDefaultDescription
funAnyYes—Binary function handle; callable text is a RunMat-only extension.
AAnyYes—Left scalar or array input.
BAnyYes—Right scalar or array input.

Returns

NameTypeDescription
CAnyElement-wise callback result after singleton expansion.

Errors

IdentifierWhenMessage
RunMat:bsxfun:InvalidFunctionThe first input cannot be used as a binary function.bsxfun: first input must be a function handle or callable name
RunMat:bsxfun:InvalidInputInput arrays use unsupported types for bsxfun scalar expansion.bsxfun: inputs must be numeric, logical, complex, or character arrays
RunMat:bsxfun:SizeMismatchInput arrays are not compatible for singleton expansion.bsxfun: input sizes are not compatible for singleton expansion
RunMat:bsxfun:FunctionErrorThe binary function errors or does not return scalar-uniform values.bsxfun: callback execution error
RunMat:bsxfun:InternalInternal output allocation or GPU gather fails.bsxfun: internal error

How bsxfun works

  • fun can be a function handle, closure, or bound function handle. Callable text is an explicitly gated RunMat-only extension.
  • A and B can be numeric, logical, complex, or character scalars or arrays.
  • All eight integer classes are passed to the callback exactly. The callback controls mixed-class admission, saturation or other overflow behavior, and output class.
  • Native single inputs remain single callback scalars, and homogeneous numeric callback results retain their native single or exact integer storage.
  • Dimensions must either match or have length one. A singleton dimension can expand to a zero-length dimension, producing an empty output.
  • The callback is invoked once per output element with scalar values from the expanded inputs.
  • Callback outputs must be scalar numeric, logical, complex, or character values and must have one consistent class across the result.
  • The result shape is the MATLAB implicit-expansion shape of A and B.
  • RunMat currently gathers gpuArray inputs, runs callbacks on the host, and returns a host value. Public gpuArray bsxfun instead evaluates supported callbacks on the GPU and returns a gpuArray, so this fallback remains a tracked compatibility gap rather than a RunMat extension.

Examples

Subtract column means from a matrix

A = [1 2 10; 3 4 20; 9 6 15];
C = bsxfun(@minus,A,mean(A))

Expected output:

% C has the same size as A.

Compare every column-vector value with every row-vector value

A = [8; 17; 20; 24];
B = [0 10 21];
C = bsxfun(@gt,A,B)

Expected output:

C = logical 4-by-3 array

Use a custom binary function

f = @(a,b) a - exp(b);
C = bsxfun(f,1:7,pi*[0 1/4 1/3].')

Expected output:

% C contains every pairwise callback result.

Using bsxfun with coding agents

Open a RunMat example with live inputs, then ask the agent to explain how bsxfun changes the result.

Run a small bsxfun example, explain the result, then change one input and compare the output.

FAQ

Should new code use bsxfun?⌄

MATLAB now supports implicit expansion for many operators directly, but bsxfun remains useful for older code and for applying custom binary callbacks.

Can callbacks return arrays?⌄

No. bsxfun collects one scalar result per expanded element. Use arrayfun or cellfun when you need non-scalar or non-uniform outputs.

Does bsxfun keep gpuArray inputs on the GPU?⌄

Not currently in RunMat. Public gpuArray bsxfun evaluates supported callbacks on the GPU and returns a gpuArray, while RunMat currently gathers to the host and returns a host value. Direct element-wise builtins such as plus, minus, and times are the provider-native RunMat path.

Related Math functions

Elementwise

abs · angle · complex · conj · double · erf · erfcinv · exp · expm1 · factorial · flintmax · gamma · gammaln · heaviside · hypot · idivide · imag · intmax · intmin · ldivide · log · log10 · log1p · log2 · minus · nextpow2 · plus · pow2 · power · rdivide · real · realmax · realmin · realsqrt · rescale · sign · single · sqrt · swapbytes · times · typecast · uint16 · uint32 · uint8

Trigonometry

acos · acosh · asin · asinh · atan · atan2 · atanh · cos · cosd · cosh · cospi · deg2rad · pol2cart · rad2deg · sin · sind · sinh · sinpi · tan · tand · tanh

Reduction

all · any · bounds · cummax · cummin · cumprod · cumsum · cumtrapz · diff · gradient · max · maxk · mean · median · min · mink · movmax · movmean · movmedian · movmin · movprod · movstd · movsum · movvar · nnz · prod · rms · std · sum · trapz · var

Structure

bandwidth · isdiag · ishermitian · issymmetric · istril · istriu · symrcm

Signal

blackman · butter · buttord · cheb2ord · conv · conv2 · deconv · downsample · envelope · filter · filtfilt · fir1 · freqz · gauspuls · hamming · hann · hilbert · periodogram · pulstran · pwelch · rectpuls · resample · sawtooth · sinc · spectrogram · square · tripuls · unwrap · upsample · zplane

Rounding

ceil · fix · floor · mod · rem · round

Factor

chol · decomposition · eig · eigs · lu · qr · svd

Solve

cond · det · inv · linsolve · norm · null · pinv · rank · rcond · rref · vecnorm

Optim

coneprog · fminbnd · fminunc · fsolve · fzero · integral · linprog · lsqcurvefit · lsqnonlin · optimoptions · optimset · quad · secondordercone

Ops

cross · ctranspose · dot · mldivide · mpower · mrdivide · mtimes · pagemtimes · pagetranspose · trace · transpose

Symbolic

digits · int · limit · piecewise · sym · syms · vpa

Fft

fft · fft2 · fftn · fftshift · ifft · ifft2 · ifftn · ifftshift

Interpolation

griddedInterpolant · interp1 · interp1q · interp2 · pchip · ppval · spline

Discrete

lcm · primes

Ode

ode15s · ode23 · ode45

Poly

polyder · polyfit · polyint · polyval · roots

Open-source implementation

Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how bsxfun is executed, line by line, in Rust.

  • View the source for bsxfun in Rust on GitHub
  • Learn how the RunMat runtime works
  • Found a bug? Open an issue with a minimal reproduction.

About RunMat

RunMat is an open-source runtime that executes MATLAB-syntax code blazing on any GPU. It is licensed under the Apache 2.0 license.

  • RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed. Simulations that took hours now take minutes.
  • Start running code in seconds. RunMat runs in the browser, on the desktop, or from the CLI. No license server, no IT ticket.

Getting started · Benchmarks · Pricing

Download RunMat

Download RunMat for full performance, or use RunMat in your browser for zero setup.

Download RunMatOpen Sandbox
On this page
  • Syntax
  • Inputs
  • Returns
  • Errors
  • How bsxfun works
  • Examples
  • Subtract column means from a matrix
  • Compare every column-vector value with every row-vector value
  • Use a custom binary function
  • Using bsxfun with coding agents
  • FAQ
  • Related Math functions
  • Elementwise
  • Trigonometry
  • Reduction
  • Structure
  • Signal
  • Rounding
  • Factor
  • Solve
  • Optim
  • Ops
  • Symbolic
  • Fft
  • Interpolation
  • Discrete
  • Ode
  • Poly
  • Open-source implementation
  • About RunMat