1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-29 08:01:23 +03:00

Improved implementation of 64-bit signed integer multiply that correctly

detects overflow (and promotes to floating-point) in some corner cases.
Fix for ticket [1ec41379c9c1e400]

FossilOrigin-Name: db3ebd7c52cfc5fcc7be00f52e9d7c84719f7b93
This commit is contained in:
drh
2016-09-20 22:04:05 +00:00
parent d8992cef36
commit 09952c6490
4 changed files with 47 additions and 35 deletions

View File

@ -308,6 +308,33 @@ ifcapable floatingpoint {if {[working_64bit_int]} {
test_realnum_expr expr-1.257\
{i1=-4294967296, i2=-2147483647} {i1*i2} 9223372032559808512
test_realnum_expr expr-1.260\
{i1=3037000500, i2=3037000500} {i1*i2} 9.22337203700025e+18
test_realnum_expr expr-1.261\
{i1=3037000500, i2=-3037000500} {i1*i2} -9.22337203700025e+18
test_realnum_expr expr-1.262\
{i1=-3037000500, i2=3037000500} {i1*i2} -9.22337203700025e+18
test_realnum_expr expr-1.263\
{i1=-3037000500, i2=-3037000500} {i1*i2} 9.22337203700025e+18
test_realnum_expr expr-1.264\
{i1=3037000500, i2=3037000499} {i1*i2} 9223372033963249500
test_realnum_expr expr-1.265\
{i1=3037000500, i2=-3037000499} {i1*i2} -9223372033963249500
test_realnum_expr expr-1.266\
{i1=-3037000500, i2=3037000499} {i1*i2} -9223372033963249500
test_realnum_expr expr-1.267\
{i1=-3037000500, i2=-3037000499} {i1*i2} 9223372033963249500
test_realnum_expr expr-1.268\
{i1=3037000499, i2=3037000500} {i1*i2} 9223372033963249500
test_realnum_expr expr-1.269\
{i1=3037000499, i2=-3037000500} {i1*i2} -9223372033963249500
test_realnum_expr expr-1.270\
{i1=-3037000499, i2=3037000500} {i1*i2} -9223372033963249500
test_realnum_expr expr-1.271\
{i1=-3037000499, i2=-3037000500} {i1*i2} 9223372033963249500
}}
ifcapable floatingpoint {