math.fma() în Python

Numere și matematică Python 3.13+

Calculează x * y + z cu o singură rotunjire, mai precis decât expresia obișnuită.

Sintaxă
math.fma(x, y, z)

Ce face math.fma()

„Fused multiply-add”: fma(x, y, z) calculează x * y + z ca și cum ar avea precizie infinită și rotunjește o singură dată, la final. Expresia x * y + z rotunjește de două ori (după înmulțire și după adunare), ceea ce poate pierde cifre în calcule științifice.

Parametri

Parametru Descriere
x, y, z Numerele.

Ce returnează

Un float.

Exemple

Exemplul 1: Diferența de precizie

Numărul 0.1 nu este stocat exact. Expresia obișnuită rotunjește produsul la 1.0 și dă 0.0; fma păstrează eroarea reală de reprezentare.

import math
x = 0.1
print(x * 10 - 1.0, math.fma(x, 10, -1.0))
print(math.fma(2, 3, 4))

Rezultat

0.0 5.551115123125783e-17
10.0

Greșeli frecvente

  • Folosești funcția pe Python mai vechi de 3.13 și primești AttributeError.

Comenzi înrudite

  • math.fsum(): Adună numere zecimale cu precizie maximă, fără erorile de rotunjire acumulate.
  • math.prod() și math.sumprod(): Produsul tuturor elementelor și suma produselor a două liste (produs scalar).