RunMat
GitHub

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
funAnyYesScalar integrand callback.
aAnyYesLower integration bound.
bAnyYesUpper integration bound.
tolNumericScalarNo1e-6Absolute error tolerance. Empty uses the default.
traceAnyNofalseNonzero value prints legacy [fcnEvals, a, b-a, Q] trace rows.
pAnyVariadicAdditional 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, ...).
  • 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.

Elementwise

abs · angle · complex · conj · double · exp · expm1 · factorial · gamma · heaviside · hypot · imag · ldivide · log · log10 · log1p · log2 · minus · nextpow2 · plus · pow2 · power · rdivide · real · sign · single · sqrt · times

Trigonometry

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

Reduction

all · any · cummax · cummin · cumprod · cumsum · cumtrapz · diff · gradient · max · mean · median · min · nnz · prod · std · sum · trapz · var

Rounding

ceil · fix · floor · mod · rem · round

Factor

chol · eig · lu · qr · svd

Solve

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

Symbolic

digits · int · limit · sym · syms · vpa

Fft

fft · fft2 · fftshift · ifft · ifft2 · ifftshift

Interpolation

interp1 · interp2 · pchip · ppval · spline

Ode

ode15s · ode23 · ode45

Open-source implementation

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

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.