Incerteza
Como Sounio representa e (eventualmente) propaga incerteza de medição.
Incerteza
Código científico é cheio de medições, e medições nunca são exatas. Sounio trata incerteza como dado de primeira classe, em vez de algo que você acompanha em comentários ou planilhas.
O que Funciona Hoje (Realidade do Compilador)
O compilador aplica a regra de “sem unwrap silencioso” para Knowledge<T> (veja Knowledge<T>). Isso te dá uma fronteira confiável onde a informação epistêmica é descartada de forma intencional.
Além disso, a propagação automática completa de incerteza depende de quanto da stdlib epistêmica você usa e de quais features/backends do compilador estão habilitados.
Na Spec / Semântica Pretendida
O modelo pretendido segue práticas padrão de metrologia (propagação estilo GUM para entradas independentes):
- Para
c = a ± b:u(c) = sqrt(u(a)^2 + u(b)^2)
- Para
c = a * bouc = a / b(forma relativa):u_rel(c) = sqrt(u_rel(a)^2 + u_rel(b)^2), ondeu_rel(x) = u(x) / x
No nível da linguagem, o objetivo é que operações em Knowledge<T>:
- calculem a nova estimativa pontual
- propaguem incerteza
- atualizem confiança (quando aplicável)
- anexem proveniência
Orientação Prática
- Mantenha valores como
Knowledge<T>pelo maior tempo possível. - Quando precisar cruzar para “dados puros”, use
unwrap(reason)e registre o motivo. - Para código de domínio (PK/PD, neuroimagem, etc.), prefira módulos da stdlib que já modelam incerteza e proveniência explicitamente.