Resources Numerical accuracy
Calculations
Every calculation under our calculation policies: what it works out, its formula and the precision it runs at. Open one to see its code as it is in the released app.
Calculations
-
Conversion with to
M to kN m: checks the dimension and records the unit to show the answer in.
shown = value ÷ factor of the target unit
Calc sheet units, functions and driven parameters calc.js Every app64-bit -
Shown amount
The number and unit a row displays, and the amount passed to other modules.
amount = value ÷ factor
Calc sheet units, functions and driven parameters calc.js Every app64-bit -
Square root and absolute value
sqrt(a) and abs(a) for a value with units.
√a halves the dimensions
Calc sheet units, functions and driven parameters calc.js Every app64-bit -
Rounding to a step
round, floor and ceil, with an optional step such as round(x, 5 mm).
round(a ÷ s) × s
Calc sheet units, functions and driven parameters calc.js Every app64-bit -
Minimum, maximum, sum and average
min, max, sum and avg of values of one kind.
sum = Σ aᵢ in order; avg = sum ÷ n
Calc sheet units, functions and driven parameters calc.js Every app64-bit -
Trigonometry, logarithms and exponent
sin, cos, tan, their inverses, atan2, ln, log10, exp and pow.
sin, cos, tan of radians; asin, acos need |x| ≤ 1; ln, log10 need x > 0
Calc sheet units, functions and driven parameters calc.js Every app64-bit -
Reading an app parameter
@Name: the app's parameter as a value in SI.
value = parameter value × factor of its unit
Calc sheet units, functions and driven parameters calc.js Every app64-bit -
Values written to driven parameters
What each drive would set in the app: the row's answer in the parameter's unit.
value = row value ÷ factor of the unit; change when |current − value| > 1e-9 × max(1, |value|)
Calc sheet units, functions and driven parameters calc.js Every app64-bit -
Time-weighted average
The average of a value that changes at events: queue length, units busy, work in process.
average = (Σ vᵢ × Δtᵢ) ÷ (t − t₀)
Flow simulation (discrete events) engine.js Every app64-bit -
Mean, deviation and percentiles of observations
Waiting time, service time and time in system: mean, standard deviation, minimum, maximum, P50 and P95.
m ← m + (x − m) ÷ n; s ← s + (x − m_old)(x − m_new); sd = √(s ÷ (n − 1)); P = sorted[⌊p × k⌋]
Flow simulation (discrete events) engine.js Every app64-bit -
Event time
When a scheduled event happens.
t_event = t_now + delay
Flow simulation (discrete events) engine.js Every app64-bit -
Conveyor slots and timing
How many items fit on a belt, the gap between items and the travel time.
slots = max(1, ⌊length ÷ pitch + 1e-9⌋); headway = pitch ÷ speed; travel = length ÷ speed
Flow simulation (discrete events) engine.js Every app64-bit -
Shift edges
When a server goes on and off shift.
x = t − ⌊t ÷ period⌋ × period; on shift when a ≤ x < b
Flow simulation (discrete events) engine.js Every app64-bit -
Throughput
Finished entities per unit of time at a sink.
throughput = count ÷ (t − t₀)
Flow simulation (discrete events) engine.js Every app64-bit -
Resource utilization
The share of a shared resource's capacity that was in use.
utilization = average in use ÷ average capacity
Flow simulation (discrete events) engine.js Every app64-bit -
Vehicle trip times
How long a vehicle takes to reach the pick station and to carry the load to the drop station.
to pick = distance ÷ speed + load time; carry = distance ÷ speed + unload time
Flow simulation (discrete events) engine.js Every app64-bit -
Student t factor
The factor for a 95 % confidence range.
df ≤ 30: table value; df ≤ 60: 2.0; df ≤ 120: 1.98; above: 1.96
Flow simulation (discrete events) engine.js Every app64-bit -
Replication mean and confidence half-width
The mean of each result over independent runs and its 95 % range.
mean = Σx ÷ n; sd = √(Σ(x − mean)² ÷ (n − 1)); half = t × sd ÷ √n
Flow simulation (discrete events) engine.js Every app64-bit -
Uniform and normal draws
The random numbers every arrival, service time and route choice is drawn from.
u = (k + 0.5) ÷ 2³², k a 32-bit integer; z = √(−2 ln u) × cos(2π v)
Flow simulation (discrete events) rng.js Every app64-bit -
Draw from a distribution
One value from an exponential, uniform, triangular, normal, lognormal, Erlang, Weibull or empirical distribution.
exp: −mean × ln u; tri: a + √(u (b − a)(c − a)) or b − √((1 − u)(b − a)(b − c)); weibull: scale × (−ln u)^(1 ÷ shape)
Flow simulation (discrete events) rng.js Every app64-bit -
Mean of a distribution
The mean used for load estimates and for routing to the least loaded target.
tri: (a + m + b) ÷ 3; weibull: scale × Γ(1 + 1 ÷ shape)
Flow simulation (discrete events) rng.js Every app64-bit -
Gamma function
Γ(x), used for the mean of a Weibull distribution.
Lanczos approximation, g = 7, 9 coefficients
Flow simulation (discrete events) rng.js Every app64-bit -
Thermal voltage
kT/q, the voltage scale of every diode and transistor junction.
VT = 0.025852 V
Circuit solver circuit.js Every app64-bit -
Value with an engineering suffix
4.7k, 100n, 1meg: a component value read from text.
value = number × factor of the suffix (t, g, meg, k, m, u, n, p, f); mil = 25.4e-6
Circuit solver circuit.js Every app64-bit -
Source waveform value
The value of a DC, sine or pulse source at a time.
sin: off + amp × e^(−damp (t − delay)) × sin(2π f (t − delay) + phase); pulse: linear edges over tr and tf
Circuit solver circuit.js Every app64-bit -
Diode current and conductance
The current through a diode and its slope at a junction voltage.
i = Is (e^(v ÷ (n VT)) − 1); g = Is e^(v ÷ (n VT)) ÷ (n VT)
Circuit solver circuit.js Every app64-bit -
Transistor currents
Collector and base current of a bipolar transistor.
ic = If − Ir − Ir ÷ βr; ib = If ÷ βf + Ir ÷ βr; If = Is (e^(vbe ÷ VT) − 1)
Circuit solver circuit.js Every app64-bit -
MOSFET level 1 current
Drain current of a MOSFET in the triode and saturation regions.
triode: id = kp (vov vds − vds² ÷ 2)(1 + λ vds); saturation: id = kp vov² (1 + λ vds) ÷ 2
Circuit solver circuit.js Every app64-bit -
Switch conductance
The conductance of a voltage-controlled switch.
ln g = ln(1 ÷ roff) + a (ln(1 ÷ ron) − ln(1 ÷ roff)); a = 1 ÷ (1 + e^(−(v − vt) ÷ vh))
Circuit solver circuit.js Every app64-bit -
Circuit equations
The matrix and right side for one Newton step, at DC or at one time step.
capacitor: geq = C ÷ h (backward Euler) or 2C ÷ h (trapezoid); inductor: r = L ÷ h or 2L ÷ h
Circuit solver circuit.js Every app64-bit -
Newton iteration
Repeats the linear solve until the voltages and currents stop changing.
stop when |Δxᵢ| ≤ 1e-3 × max(|xᵢ new|, |xᵢ old|) + 1e-6 V (or 1e-12 A) for every unknown
Circuit solver circuit.js Every app64-bit -
Operating point
The DC voltages and currents of the circuit.
direct Newton, then gmin stepping, then source stepping
Circuit solver circuit.js Every app64-bit -
DC sweep
The circuit solved for each value of a swept source.
Circuit solver circuit.js Every app64-bit -
AC small-signal response
Complex node voltages and branch currents at each frequency.
capacitor: jωC; inductor: −jωL on its branch row; ω = 2π f
Circuit solver circuit.js Every app64-bit -
Transient
Voltages and currents over time.
trapezoidal rule after a first backward-Euler step; output at t = k × tstep
Circuit solver circuit.js Every app64-bit -
Junction voltage limiting
Keeps a diode or transistor voltage from jumping too far in one iteration.
v = v_old + vt ln(1 + (v_new − v_old) ÷ vt) when the step exceeds 2 vt above vcrit
Circuit solver circuit.js Every app64-bit -
Sweep and frequency lists
The source values of a DC sweep and the frequencies of an AC analysis.
dc: start, start + step, …; ac dec or oct: f = fstart × (fstop ÷ fstart)^(k ÷ N); lin: fstart + (fstop − fstart) k ÷ (points − 1)
Circuit solver circuit.js Every app64-bit -
Magnitude and phase
The size and angle of a complex result.
|z| = hypot(re, im); phase = atan2(im, re) × 180 ÷ π
Circuit solver circuit.js Every app64-bit -
Real linear solve
Solves the circuit equations of one Newton step.
LU with partial pivoting, then back substitution
Circuit solver linalg.js Every app64-bit -
Complex linear solve
Solves the AC equations and the antenna's impedance matrix.
LU with partial pivoting on separate real and imaginary arrays
Circuit solver linalg.js Every app64-bit -
Magnetic and electric constants
μ0 and ε0 used by every field result.
μ0 = 4π × 10⁻⁷ H/m; ε0 = 8.8541878128 × 10⁻¹² F/m
Magnetic and electric field solvers fields.js Every app64-bit -
Field of straight wire segments
The magnetic flux density at a point from current-carrying segments.
B = μ0 I ÷ (4π d) × (z_b ÷ √(z_b² + d²) − z_a ÷ √(z_a² + d²))
Magnetic and electric field solvers fields.js Every app64-bit -
Loop as straight segments
A circular loop turned into chords for the segment formulas.
n chords with their ends on the circle, 128 by default
Magnetic and electric field solvers fields.js Every app64-bit -
Mutual inductance of two loops
The Neumann integral over two loops given as segments.
M = μ0 ÷ 4π × Σ Σ (dl₁ · dl₂) ÷ R
Magnetic and electric field solvers fields.js Every app64-bit -
Complete elliptic integrals
K(k) and E(k), used for coaxial loops.
K = π ÷ (2a) at the limit of the arithmetic–geometric mean; E = K (1 − Σ 2ⁿ⁻¹ cₙ²)
Magnetic and electric field solvers fields.js Every app64-bit -
Mutual inductance of coaxial loops
Maxwell's formula for two circular loops on one axis.
M = μ0 √(r₁ r₂) ((2 ÷ k − k) K − (2 ÷ k) E); k² = 4 r₁ r₂ ÷ ((r₁ + r₂)² + d²)
Magnetic and electric field solvers fields.js Every app64-bit -
2D finite-element solve
The potential at every mesh node and its gradient in every triangle.
∇·(k ∇u) = −s on linear triangles; element matrix k (bᵢ · bⱼ) A
Magnetic and electric field solvers fields.js Every app64-bit -
Magnetic field, energy and saturating iron
Flux density per triangle, stored energy per meter, and the iteration for a B–H curve.
B = (∂A/∂y, −∂A/∂x); W = Σ ½ ν B² A
Magnetic and electric field solvers fields.js Every app64-bit -
Electric field and energy
Field per triangle and stored energy per meter.
E = −∇V; W = Σ ½ ε E² A
Magnetic and electric field solvers fields.js Every app64-bit
A calculation is added only after its source was read. Each statement can be checked in the code shown on its policy's page; the app repositories are public. When a release changes a calculation, its page says so until it has been read again.