Sayısal kararlılık ile doğruluk demek istiyorsanız, evet, doğruluk sorunları ile sonuçlanabilir. En büyük / en küçük değerlerin oranına ve sonuçtaki doğruluk gereksinimlerinize bağlı olarak, bu bir sorun olabilir veya olmayabilir.
Yüksek hassasiyete sahip olmak istiyorsanız, Kahan toplamını düşünün - bu, hata telafisi için ekstra bir şamandıra kullanır. Aynı zamanda ikili bir toplam vardır .
Doğruluk ve zaman arasındaki dengenin ayrıntılı analizi için bu makaleye bakın .
C ++ 17 için GÜNCELLEME:
Diğer cevaplardan bazıları belirtiliyor std::accumulate
. C ++ 17'den beri algoritmaların paralelleştirilmesine izin veren yürütme ilkeleri vardır.
Örneğin
#include <vector>
#include <execution>
#include <iostream>
#include <numeric>
int main()
{
std::vector<double> input{0.1, 0.9, 0.2, 0.8, 0.3, 0.7, 0.4, 0.6, 0.5};
double reduceResult = std::reduce(std::execution::par, std::begin(input), std::end(input));
std:: cout << "reduceResult " << reduceResult << '\n';
}
Bu, büyük veri kümelerinin belirsiz olmayan yuvarlama hataları pahasına daha hızlı toplanmasını sağlamalıdır (kullanıcının iş parçacığı bölümlemesini belirleyemeyeceğini varsayıyorum).