• Gerrit Renker's avatar
    [DCCP]: Simplify TFRC calculation · d63d8364
    Gerrit Renker authored
    In migrating towards using the newer functions scaled_div/scaled_div32
    for TFRC computations mapped from floating-point onto integer arithmetic,
    this completes the last stage of modifications.
    
    In particular, the overflow case for computing X_calc is circumvented by
     * breaking the computation into two stages
     * the first stage, res = (s*1E6)/R, cannot overflow due to use of u64
     * in the second stage, res = (res*1E6)/f, overflow on u32 is avoided due
       to (i) returning UINT_MAX in this case (which is logically appropriate)
       and (ii) issuing a warning message into the system log (since very likely
       there is a problem somewhere else with the parameters)
    
    Lastly, all such scaling operations are now exported into tfrc.h, since
    actually this form of scaled computation is specific to TFRC and not to CCID3.
    Signed-off-by: default avatarGerrit Renker <gerrit@erg.abdn.ac.uk>
    Acked-by: default avatarIan McDonald <ian.mcdonald@jandi.co.nz>
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@mandriva.com>
    d63d8364
tfrc_equation.c 18.3 KB