Binary Mass Function Calculator

Calculate the binary mass function f(M) = PK³/(2πG)(1-e²)^1.5 from an orbital period and radial-velocity semi-amplitude, giving an assumption-free lower bound on an unseen companion's mass — plus an advanced mode that numerically solves for M2 given an inclination and the visible star's mass, with a mass-benchmark ruler and an inclination-dependence chart.

Binary mass function calculator

From an orbital period P and RV semi-amplitude K alone — f(M) = PK³/(2πG) · (1−e²)^1.5 = M2³sin³i / (M1+M2)² — you get something genuinely useful even with the inclination i and the visible star's mass M1 completely unknown: f(M) is always a strict lower bound on the companion's mass, M2 ≥ f(M), true for any M1 and any i.

f(M) = 0.2507 M☉
M2 ≥ 0.2507 M☉ — regardless of inclination or the visible star's mass
0123456Typical neutron star (~1.4 M☉)Maximum neutron star mass (~2.2 M☉, TOV limit)Typical stellar black hole (≳5 M☉)f(M) — hard lower bound

The shaded band is every mass the companion is allowed to have; the marked f(M) is its left edge. Landmark masses give a sense of the neutron-star/black-hole boundary.

You can’t see the compact object in an X-ray binary directly — no telescope resolves a black hole or neutron star that way. What you can see is its visible companion star wobbling back and forth, Doppler-shifted by the pull of something orbiting it. From just that wobble’s period and speed, one number — the binary mass function — tells you something concrete about the invisible thing on the other end, without needing to know the system’s orientation in space at all.

The mass function

f(M)=PK32πG(1e2)3/2=M23sin3i(M1+M2)2f(M) = \frac{PK^3}{2\pi G}(1-e^2)^{3/2} = \frac{M_2^3 \sin^3 i}{(M_1+M_2)^2}

P is the orbital period, K the visible star’s radial-velocity semi-amplitude (how fast its line-of-sight speed swings from the orbit), and e the orbital eccentricity. The right-hand side is where the physics lives: M1 and M2 are the two stars’ masses, and i is the orbital inclination — how tilted the orbit’s plane is relative to our line of sight. Radial velocity only measures the line-of-sight component of orbital motion, which is why sin i (and, cubed, sin³i) appears: at i = 90° (edge-on) we see the full orbital speed; at i = 0° (face-on) the star moves entirely across the sky and K would be zero regardless of how fast it’s actually orbiting.

The result that needs no assumptions at all

Both M1 and i are usually unknown. But look at what f(M) can never exceed: because M1 ≥ 0 makes (M1+M2)² ≥ M2², and sin i ≤ 1,

f(M)=M23sin3i(M1+M2)2M23M22=M2f(M) = \frac{M_2^3 \sin^3 i}{(M_1+M_2)^2} \le \frac{M_2^3}{M_2^2} = M_2

f(M) is always a lower bound on M2 — true for any M1 and any inclination, no assumptions required. This is exactly the argument historically used to build the case for Cygnus X-1: even the bare mass function, computed from nothing but the optical star’s period and velocity, already exceeded what a neutron star could plausibly weigh.

Solving for an exact companion mass

If you’re willing to estimate the visible star’s mass (usually from its spectral type) and assume an inclination (from eclipse timing, ellipsoidal light-curve variations, or a model fit), the relation becomes a genuine cubic equation in M2, which this calculator solves numerically rather than approximating. Try it on the Cygnus X-1 preset: with the donor star’s mass (~40.6 M☉) and the system’s measured inclination (~27.5°) plugged in, the mass function alone (f(M) ≈ 0.25 M☉ from P ≈ 5.6 days and K ≈ 75.6 km/s) resolves to a companion mass of about 21 M☉ — matching modern measurements of the black hole at Cygnus X-1’s heart.

Reading the two charts