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
    • coneprog
    • fminbnd
    • fminunc
    • fsolve
    • fzero
    • integral
    • linprog
    • lsqcurvefit
    • lsqnonlin
    • optimoptions
    • optimset
    • quad
    • secondordercone

quad — Approximate finite scalar definite integrals with MATLAB's legacy quad interface.

q = quad(fun, a, b) approximates the definite integral of scalar integrand fun from a to b using adaptive Simpson quadrature. It supports the legacy MATLAB call forms with optional tolerance, trace output, forwarded parameters, and [q, fcnt] output.

Syntax

q = quad(fun, a, b)
q = quad(fun, a, b, tol, trace, p1, p2, ...)
[q, fcnt] = quad(fun, a, b)
[q, fcnt] = quad(fun, a, b, tol, trace, p1, p2, ...)

Inputs

NameTypeRequiredDefaultDescription
funAnyYes—Scalar integrand callback.
aAnyYes—Lower integration bound.
bAnyYes—Upper integration bound.
tolNumericScalarNo1e-6Absolute error tolerance. Empty uses the default.
traceAnyNofalseNonzero value prints legacy [fcnEvals, a, b-a, Q] trace rows.
pAnyVariadic—Additional arguments forwarded to the integrand.

Returns

NameTypeDescription
qNumericScalarNumerical integral estimate.
fcntNumericScalarNumber of integrand evaluations.

Returned values from quad depend on how many outputs the caller requests.

Errors

IdentifierWhenMessage
RunMat:quad:InvalidArgumentTolerance, trace flag, or argument grammar is invalid.quad: invalid argument
RunMat:quad:InvalidInputBounds, integrand values, or adaptive solver semantics are invalid.quad: invalid input
RunMat:quad:TooManyOutputs`quad` is called with more than two requested output arguments.quad: too many output arguments

How quad works

  • The function may be a named function handle such as @sin, an anonymous function such as @(x) x.^2, or a function-handle string.
  • The integration loop evaluates the integrand at scalar sample points and adapts subintervals using Simpson error estimates.
  • tol is an absolute positive scalar tolerance and defaults to 1e-6; an empty tol uses the default.
  • trace prints legacy adaptive subdivision rows as [fcnEvals, a, b-a, Q] when nonzero; an empty trace disables tracing.
  • Arguments after trace are forwarded to the integrand as fun(x, p1, p2, ...).
  • Integer bounds and tolerance are gated RunMat extensions and must be exactly representable in the double quadrature domain.
  • Integer trace values are documented structural controls tested for exact zero/nonzero state without floating conversion. Integer forwarded parameters are documented callback payloads and retain exact native storage.
  • Integer integrand results are a gated RunMat extension and must be exactly representable before adaptive Simpson arithmetic.
  • The integrand must return a finite real scalar. Array-valued and complex-valued integrands are not supported by quad.
  • Finite reversed bounds are accepted and negate the result. Equal bounds return zero with a function count of zero.
  • Requests for more than two outputs are rejected.

Examples

Integrate sine over one half-period

q = quad(@sin, 0, pi)

Expected output:

q =
    2.0000

Return the function evaluation count

[q, fcnt] = quad(@(x) x.^2, 0, 1)

Expected output:

q =
    0.3333

Forward an extra argument to the integrand

q = quad(@(x,a) a.*x, 0, 2, [], [], 3)

Expected output:

q =
    6.0000

Using quad with coding agents

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

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

FAQ

Should new code use quad or integral?⌄

Use integral for new code when possible. quad exists for legacy MATLAB script compatibility.

Does quad support extra parameters?⌄

Yes. Values after trace are forwarded to the function handle after the scalar sample point.

Does quad run on the GPU?⌄

The adaptive solver runs on the host because it repeatedly invokes user code through function-handle dispatch. The callback itself may call GPU-aware builtins.

Related Math functions

Optim

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

Elementwise

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

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

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 quad is executed, line by line, in Rust.

  • View the source for quad 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 quad works
  • Examples
  • Integrate sine over one half-period
  • Return the function evaluation count
  • Forward an extra argument to the integrand
  • Using quad with coding agents
  • FAQ
  • Related Math functions
  • Optim
  • Elementwise
  • Trigonometry
  • Reduction
  • Structure
  • Signal
  • Rounding
  • Factor
  • Solve
  • Ops
  • Symbolic
  • Fft
  • Interpolation
  • Discrete
  • Ode
  • Poly
  • Open-source implementation
  • About RunMat