Chronaxis用户手册English
本页目录

chronaxis.core.mean_weights_reference

源码基线:8904c2f744951857659abd40aaa3535d57faf53c

1"""复用标量均值的先归一化再相乘规则,避免先求面积导致溢出。"""23from math import isfinite4from .types import QualityFlag as Q567def normalized_mean_terms(values, weights, denominator):8    """将有限有效值按整窗正分母加权,返回原序项和计算质量。910    参数: 同长有效数值/正权重序列,denominator为已核实总权重。11    返回: (tuple, QualityFlag)。异常: 结构或分配错误传播;非有限/下溢标质量。12    """13    try:14        if len(values) != len(weights) or not isfinite(denominator) or denominator <= 0:15            raise ValueError('均值需要同长输入和有限正分母')16        terms, quality = [], Q.NONE17        for value, weight in zip(values, weights):18            if not isfinite(value) or not isfinite(weight) or weight <= 0:19                raise ValueError('均值回读需要有限数值和正权重')20            term = value * (weight / denominator)21            failure = Q.NONFINITE if not isfinite(term) else Q.PRECISION_LOSS if term == 0 and value != 0 else Q.NONE22            quality |= failure23            terms.append(term if failure == Q.NONE else 0.0)24        return tuple(terms), quality25    finally:26        # 保留原异常,断开本帧借用列,避免调用方保存traceback时延长其生命周期。27        values = weights = terms = None28
Chronaxis 用户手册 · 离线阅读