def BET_radius(surface: float, surface_err: float, density: float):
    """
    Estimate the radius of a nanoparticle based on the measurement of
    BET specific surface area analysis, assuming a spherical morphology
    of the nanoparticle.
    :param density: Density of the material (g/cm³).
    :param surface: BET specific surface area (m²/g).
    :param surface_err: ± Error in measurement of surface (m²/g).
    :return radius: Estimated radius (nm)
    """
    def bet_formula(surface, density):
        return 3 / (density * surface * 1e-3)

    surface_low = surface - surface_err
    surface_high = surface + surface_err
    radius_low = bet_formula(surface_low, density)
    radius_high = bet_formula(surface_high, density)
    radius = (radius_high + radius_low) / 2.0
    radius_err = abs(radius_high - radius)
    return radius, radius_err