TheAlgorithms/Python · error · ValueError
Relative densities cannot be greater than one
Error message
Relative densities cannot be greater than one
What it means
Raised by hubble_parameter() when radiation_density, matter_density, or dark_energy exceeds 1. These are relative (dimensionless) densities expressed as fractions of the critical density, so any value above 1 is rejected; their sum may still exceed or fall below 1, which the code interprets as curvature via curvature = 1 - sum.
Source
Thrown at physics/hubble_parameter.py:77
...
ValueError: All input parameters must be positive
>>> hubble_parameter(hubble_constant=68.3, radiation_density=1e-4,
... matter_density= 1.2, dark_energy=0.7, redshift=1)
Traceback (most recent call last):
...
ValueError: Relative densities cannot be greater than one
>>> hubble_parameter(hubble_constant=68.3, radiation_density=1e-4,
... matter_density= 0.3, dark_energy=0.7, redshift=0)
68.3
"""
parameters = [redshift, radiation_density, matter_density, dark_energy]
if any(p < 0 for p in parameters):
raise ValueError("All input parameters must be positive")
if any(p > 1 for p in parameters[1:4]):
raise ValueError("Relative densities cannot be greater than one")
else:
curvature = 1 - (matter_density + radiation_density + dark_energy)
e_2 = (
radiation_density * (redshift + 1) ** 4
+ matter_density * (redshift + 1) ** 3
+ curvature * (redshift + 1) ** 2
+ dark_energy
)
hubble = hubble_constant * e_2 ** (1 / 2)
return hubble
if __name__ == "__main__":
import doctest
# run doctestView on GitHub (pinned to f5988cc097)
Solutions
- Convert densities to fractions of the critical density (divide by rho_crit) so each is in [0, 1].
- If you passed percentages, divide by 100: dark_energy=70 -> 0.7.
- Add a pre-call assertion all(0 <= p <= 1 for p in (radiation_density, matter_density, dark_energy)).
Example fix
# before hubble_parameter(68.3, 1e-4, 1.2, 0.7, 1) # ValueError # after hubble_parameter(68.3, 1e-4, 0.3, 0.7, 1) # fractions of critical density
Defensive patterns
Strategy: validation
Validate before calling
assert all(0.0 <= p <= 1.0 for p in (radiation_density, matter_density, dark_energy)), \
'relative densities must be fractions of the critical density in [0, 1]'
hubble_parameter(hubble_constant, radiation_density, matter_density, dark_energy, redshift) Prevention
- Never pass percentages; divide by 100 first.
- Use Omega-notation values (~0.3, ~0.7) from published cosmology tables directly.
- Unit-test your parameter loader with the [0,1] constraint.
When it happens
Trigger: hubble_parameter(68.3, 1e-4, matter_density=1.2, dark_energy=0.7, redshift=1) — matter_density > 1 triggers it. The check applies only to parameters[1:4]; hubble_constant and redshift are not range-checked.
Common situations: Mixing up absolute densities with relative (Omega) densities; entering percentages (e.g. 70 instead of 0.7); datasets using Omega_m ~ 0.3 but Omega_L stored as 70.
Related errors
- All input parameters must be positive
- Speed must not exceed light speed 299,792,458 [m/s]!
- Speed must be greater than or equal to 1!
- Expected a_coeffs to have {self.order + 1} elements for {sel
- n must not be negative
AI-assisted analysis of TheAlgorithms/Python@f5988cc097 (2026-08-14).
Data as JSON: /api/errors/b27ff66318f16919.
Report an issue: GitHub.