2019-05-25 01:58:16 +03:00
|
|
|
# 2019-05-24
|
|
|
|
#
|
|
|
|
# The author disclaims copyright to this source code. In place of
|
|
|
|
# a legal notice, here is a blessing:
|
|
|
|
#
|
|
|
|
# May you do good and not evil.
|
|
|
|
# May you find forgiveness for yourself and forgive others.
|
|
|
|
# May you share freely, never taking more than you give.
|
|
|
|
#
|
|
|
|
#***********************************************************************
|
|
|
|
# Test cases for rounding behavior of floating point values.
|
|
|
|
#
|
2022-07-18 22:32:30 +03:00
|
|
|
# TESTRUNNER: slow
|
2019-05-25 01:58:16 +03:00
|
|
|
|
|
|
|
set testdir [file dirname $argv0]
|
|
|
|
source $testdir/tester.tcl
|
|
|
|
set testprefix round1
|
|
|
|
|
|
|
|
expr srand(0)
|
|
|
|
unset -nocomplain iTest
|
2019-05-27 03:29:15 +03:00
|
|
|
for {set iTest 1} {$iTest<=50000} {incr iTest} {
|
2019-05-25 01:58:16 +03:00
|
|
|
set x1 [expr int(rand()*100000)]
|
|
|
|
set x2 [expr int(rand()*100000)+1000*int(rand()*10000)]
|
|
|
|
set n [expr int(rand()*8)+1]
|
|
|
|
set x3 [string range [format %09d $x2] [expr {9-$n}] end]
|
|
|
|
set r $x1.$x3
|
|
|
|
set ans [string trimright $r 0]
|
|
|
|
if {[string match *. $ans]} {set ans ${ans}0}
|
|
|
|
do_test $iTest/$n/${r}4=>$ans {
|
|
|
|
set x [db one "SELECT round(${r}4,$n)"]
|
|
|
|
} $ans
|
|
|
|
set x4 [string range [format %09d [expr {$x2+1}]] [expr {9-$n}] end]
|
|
|
|
if {[string trim $x3 9]==""} {incr x1}
|
|
|
|
set r2 $x1.$x4
|
|
|
|
set ans [string trimright $r2 0]
|
|
|
|
if {[string match *. $ans]} {set ans ${ans}0}
|
2023-07-01 20:56:00 +03:00
|
|
|
do_test $iTest/$n/${r}6=>$ans {
|
|
|
|
set x [db one "SELECT round(${r}6,$n)"]
|
2019-05-25 01:58:16 +03:00
|
|
|
} $ans
|
|
|
|
}
|
|
|
|
|
|
|
|
finish_test
|