Expand description
Germs at dt = 0: the hyperreals a loop of infinitely many infinitesimal steps leaves, known by
the series of their expansion in dt with exact computable-real coefficients.
A Hyperreal is a rational function of dt; (1 + dt)^(1/dt), the state after ⌈1/dt⌉
Euler steps of x′ = x, is not. It is the germ of an analytic function at dt = 0, whose series
e − (e/2)·dt + (11e/24)·dt² − … has computable coefficients, and its standard part is the
first of them. A Germ holds such a value as the operations that built it — the series of a
rational function, a flow, sums, products, reciprocals — and computes coefficients on demand,
each once.
Flows. N steps of an affine update x ↦ A(dt)·x with A(0) = I, A(dt) = I + Σ_{k≥1} dt^k·A_k, and N = T/dt + δ, leave exp(N·log A(dt))·x₀. Writing L(dt) = log A(dt) = Σ_{k≥1} dt^k·L_k, the exponent is C_0 + Σ_{j≥1} dt^j·C_j with C_j = T·L_{j+1} + δ·L_j, and C_0 = T·A_1. The standard part is e^{T·A_1}·x₀ always. When the A_k commute, so do the C_j,
and exp(Σ_{j≥1} dt^j·C_j) = Σ_m dt^m·E_m with E_0 = I and E_m = (1/m)·Σ_{k=1}^m k·C_k·E_{m−k};
every coefficient is then exact. When they do not, the coefficients past the standard part are
refused by name rather than approximated.
Nonlinear flows. A flow of a polynomial differential equation is known to its standard part,
the equation’s solution at T enclosed by validated integration; its higher orders are refused
by name (Germ::standard). A solution that leaves every bound before T leaves a germ that is
not limited and has only a sign (Germ::unlimited); the sum of it and a limited germ, and its
product with one whose standard part is nonzero, are unlimited too.
Fractional orders. A germ’s orders are the multiples of 1/q for its ramification q: order
k is the coefficient of dt^(k/q). A value of the real closure (Puiseux) is read from its
branch on that branch’s own grid; two germs meet on the least grid both lie on, each refined to it.
Functions. exp, ln and the real n-th roots are germs of their arguments, each coefficient
from the ones before it: with g = Σ g_k·t^k, t = dt^(1/q),
e = exp(g)for a limitedg:e_0 = e^{g_0}andk·e_k = Σ_{j=1..k} j·g_j·e_{k−j};l = ln(g)for an appreciable positiveg:l_0 = ln(g_0)andl_k = (g_k − (1/k)·Σ_{j=1..k−1} j·l_j·g_{k−j}) / g_0;w = ⁿ√gforg = c·t^v·(1 + …), refined untilndividesv,c > 0for an evenn:wstarts atⁿ√c·t^(v/n)andw_{v/n+j} = (1/(j·c))·Σ_{i=1..j} ((1/n + 1)·i − j)·g_{v+i}·w_{v/n+j−i}(Miller’s recurrence for a power series raised to1/n).
The exponential of an infinite value lies beyond every power of dt, and the logarithm of an
infinitesimal or an infinite one carries ln(dt); neither is a germ, and both are refused by name.
Signs. A germ’s sign is the sign of its first nonzero coefficient. Coefficients compare
exactly on the exact forms; a general one that cannot be told from zero within the budget, or a
germ whose coefficients through dt^SIGN_ORDERS all vanish, is a loud error, never a guess.
Structs§
- Flow
Nsteps of an affine update, the shared part of each component’s germ.- Germ
- A germ at
dt = 0. See the module documentation.
Enums§
- Germ
Error - Why a coefficient or a sign is not given.
Constants§
- SIGN_
ORDERS - How many orders of
dta sign or a standard part looks through before it is refused.