Re: Optimize numeric multiplication for one and two base-NBASE digit multiplicands.
Joel Jacobson <joel@compiler.org>
From: "Joel Jacobson" <joel@compiler.org>
To: "Dean Rasheed" <dean.a.rasheed@gmail.com>
Cc: Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2024-07-02T19:55:19Z
Lists: pgsql-hackers
On Tue, Jul 2, 2024, at 20:53, Joel Jacobson wrote: > Trying to wrap my head around what could cause this. > > It's rounding down instead of up, and these cases all end with decimal .500XXXX. Interesting, I actually think there is a bug in the normal mul_var() code. Found a case that rounds down, when it should round up: Calling mul_var() with: var1=51.2945442386599 var2=0.828548712212 rscale=0 returns 42, but I think it should return 43, since 51.2945442386599*0.828548712212=42.5000285724431241296446988 But maybe this is expected and OK, having to do with MUL_GUARD_DIGITS? /Joel
Commits
-
Optimise numeric multiplication for short inputs.
- ca481d3c9ab7 18.0 landed
-
Optimise numeric division for 3 and 4 base-NBASE digit divisors.
- 0aa38db56bf4 16.0 cited
-
Optimise numeric division for one and two base-NBASE digit divisors.
- d1b307eef281 15.0 cited