gitlab.com/CoiaPrant/sqlite3@v1.19.1/testdata/tcl/func7.test (about)

     1  # 2020-12-07
     2  #
     3  # The author disclaims copyright to this source code.  In place of
     4  # a legal notice, here is a blessing:
     5  #
     6  #    May you do good and not evil.
     7  #    May you find forgiveness for yourself and forgive others.
     8  #    May you share freely, never taking more than you give.
     9  #
    10  #*************************************************************************
    11  #
    12  # Test cases for SQL functions based off the standard math library
    13  #
    14  set testdir [file dirname $argv0]
    15  source $testdir/tester.tcl
    16  ifcapable !mathlib {
    17    finish_test
    18    return
    19  }
    20  
    21  do_execsql_test func7-100 {
    22    SELECT ceil(99.9), ceiling(-99.01), floor(17), floor(-17.99);
    23  } {100.0 -99.0 17 -18.0}
    24  do_execsql_test func7-110 {
    25    SELECT quote(ceil(NULL)), ceil('-99.99');
    26  } {NULL -99.0}
    27  do_execsql_test func7-200 {
    28    SELECT round(ln(5),2), log(100.0), log(100), log(2,'256');
    29  } {1.61 2.0 2.0 8.0}
    30  do_execsql_test func7-210 {
    31    SELECT ln(-5), log(-5,100.0);
    32  } {{} {}}
    33  
    34  # Test cases derived from PostgreSQL documentation
    35  #
    36  do_execsql_test func7-pg-100 {
    37    SELECT abs(-17.4)
    38  } {17.4}
    39  do_execsql_test func7-pg-110 {
    40    SELECT ceil(42.2)
    41  } {43.0}
    42  do_execsql_test func7-pg-120 {
    43    SELECT ceil(-42.2)
    44  } {-42.0}
    45  do_execsql_test func7-pg-130 {
    46    SELECT round(exp(1.0),7)
    47  } {2.7182818}
    48  do_execsql_test func7-pg-140 {
    49    SELECT floor(42.8)
    50  } {42.0}
    51  do_execsql_test func7-pg-150 {
    52    SELECT floor(-42.8)
    53  } {-43.0}
    54  do_execsql_test func7-pg-160 {
    55    SELECT round(ln(2.0),7)
    56  } {0.6931472}
    57  do_execsql_test func7-pg-170 {
    58    SELECT log(100.0)
    59  } {2.0}
    60  do_execsql_test func7-pg-180 {
    61    SELECT log10(1000.0)
    62  } {3.0}
    63  do_execsql_test func7-pg-181 {
    64    SELECT format('%.30f', log10(100.0) );
    65  } {2.000000000000000000000000000000}
    66  do_execsql_test func7-pg-182 {
    67    SELECT format('%.30f', ln(exp(2.0)) );
    68  } {2.000000000000000000000000000000}
    69  do_execsql_test func7-pg-190 {
    70    SELECT log(2.0, 64.0)
    71  } {6.0}
    72  do_execsql_test func7-pg-200 {
    73     SELECT mod(9,4);
    74  } {1.0}
    75  do_execsql_test func7-pg-210 {
    76     SELECT round(pi(),7);
    77  } {3.1415927}
    78  do_execsql_test func7-pg-220 {
    79     SELECT power(9,3);
    80  } {729.0}
    81  do_execsql_test func7-pg-230 {
    82     SELECT round(radians(45.0),7);
    83  } {0.7853982}
    84  do_execsql_test func7-pg-240 {
    85     SELECT round(42.4);
    86  } {42.0}
    87  do_execsql_test func7-pg-250 {
    88     SELECT round(42.4382,2);
    89  } {42.44}
    90  do_execsql_test func7-pg-260 {
    91     SELECT sign(-8.4);
    92  } {-1}
    93  do_execsql_test func7-pg-270 {
    94     SELECT round( sqrt(2), 7);
    95  } {1.4142136}
    96  do_execsql_test func7-pg-280 {
    97     SELECT trunc(42.8), trunc(-42.8);
    98  } {42.0 -42.0}
    99  do_execsql_test func7-pg-300 {
   100     SELECT acos(1);
   101  } {0.0}
   102  do_execsql_test func7-pg-301 {
   103     SELECT degrees(acos(0.5));
   104  } {60.0}
   105  do_execsql_test func7-pg-310 {
   106     SELECT round( asin(1), 7);
   107  } {1.5707963}
   108  do_execsql_test func7-pg-311 {
   109     SELECT degrees( asin(0.5) );
   110  } {30.0}
   111  do_execsql_test func7-pg-320 {
   112     SELECT round( atan(1), 7);
   113  } {0.7853982}
   114  do_execsql_test func7-pg-321 {
   115     SELECT degrees( atan(1) );
   116  } {45.0}
   117  do_execsql_test func7-pg-330 {
   118     SELECT round( atan2(1,0), 7);
   119  } {1.5707963}
   120  do_execsql_test func7-pg-331 {
   121     SELECT degrees( atan2(1,0) );
   122  } {90.0}
   123  do_execsql_test func7-pg-400 {
   124     SELECT cos(0);
   125  } {1.0}
   126  do_execsql_test func7-pg-401 {
   127     SELECT cos( radians(60.0) );
   128  } {0.5}
   129  do_execsql_test func7-pg-400 {
   130     SELECT cos(0);
   131  } {1.0}
   132  do_execsql_test func7-pg-410 {
   133     SELECT round( sin(1), 7);
   134  } {0.841471}
   135  do_execsql_test func7-pg-411 {
   136     SELECT sin( radians(30) );
   137  } {0.5}
   138  do_execsql_test func7-pg-420 {
   139     SELECT round( tan(1), 7);
   140  } {1.5574077}
   141  do_execsql_test func7-pg-421 {
   142     SELECT tan( radians(45) );
   143  } {1.0}
   144  do_execsql_test func7-pg-500 {
   145     SELECT round( sinh(1), 7);
   146  } {1.1752012}
   147  do_execsql_test func7-pg-510 {
   148     SELECT round( cosh(0), 7);
   149  } {1.0}
   150  do_execsql_test func7-pg-520 {
   151     SELECT round( tanh(1), 7);
   152  } {0.7615942}
   153  do_execsql_test func7-pg-530 {
   154     SELECT round( asinh(1), 7);
   155  } {0.8813736}
   156  do_execsql_test func7-pg-540 {
   157     SELECT round( acosh(1), 7);
   158  } {0.0}
   159  do_execsql_test func7-pg-550 {
   160     SELECT round( atanh(0.5), 7);
   161  } {0.5493061}
   162  
   163  # Test cases derived from MySQL documentation
   164  #
   165  do_execsql_test func7-mysql-100 {
   166     SELECT acos(1);
   167  } {0.0}
   168  do_execsql_test func7-mysql-110 {
   169     SELECT acos(1.0001);
   170  } {{}}
   171  do_execsql_test func7-mysql-120 {
   172     SELECT round( acos(0.0), 7);
   173  } {1.5707963}
   174  do_execsql_test func7-mysql-130 {
   175     SELECT round( asin(0.2), 7);
   176  } {0.2013579}
   177  do_execsql_test func7-mysql-140 {
   178     SELECT asin('foo');
   179  } {{}}  ;# Note: MySQL returns 0 here, not NULL.
   180           # SQLite deliberately returns NULL.
   181           # SQLServer and Oracle throw an error.
   182  do_execsql_test func7-mysql-150 {
   183     SELECT round( atan(2), 7), round( atan(-2), 7);
   184  } {1.1071487 -1.1071487}
   185  do_execsql_test func7-mysql-160 {
   186     SELECT round( atan2(-2,2), 7), round( atan2(pi(),0), 7);
   187  } {-0.7853982 1.5707963}
   188  do_execsql_test func7-mysql-170 {
   189     SELECT ceiling(1.23), ceiling(-1.23);
   190  } {2.0 -1.0}
   191  do_execsql_test func7-mysql-180 {
   192     SELECT cos(pi());
   193  } {-1.0}
   194  do_execsql_test func7-mysql-190 {
   195     SELECT degrees(pi()), degrees(pi()/2);
   196  } {180.0 90.0}
   197  do_execsql_test func7-mysql-190 {
   198     SELECT round( exp(2), 7), round( exp(-2), 7), exp(0);
   199  } {7.3890561 0.1353353 1.0}
   200  do_execsql_test func7-mysql-200 {
   201     SELECT floor(1.23), floor(-1.23);
   202  } {1.0 -2.0}
   203  do_execsql_test func7-mysql-210 {
   204     SELECT round(ln(2),7), quote(ln(-2));
   205  } {0.6931472 NULL}
   206  #do_execsql_test func7-mysql-220 {
   207  #   SELECT round(log(2),7), log(-2);
   208  #} {0.6931472 NULL}
   209  # log() means natural logarithm in MySQL
   210  do_execsql_test func7-mysql-230 {
   211     SELECT log(2,65536), log(10,100), quote(log(1,100)), quote(log(0,100));
   212  } {16.0 2.0 NULL NULL}
   213  do_execsql_test func7-mysql-240 {
   214     SELECT log2(65536), quote(log2(-100)), quote(log2(0));
   215  } {16.0 NULL NULL}
   216  do_execsql_test func7-mysql-250 {
   217     SELECT round(log10(2),7), log10(100), quote(log10(-100));
   218  } {0.30103 2.0 NULL}
   219  do_execsql_test func7-mysql-260 {
   220     SELECT mod(234,10), 253%7, mod(29,9), 29%9;
   221  } {4.0 1 2.0 2}
   222  do_execsql_test func7-mysql-270 {
   223     SELECT mod(34.5,3);
   224  } {1.5}
   225  do_execsql_test func7-mysql-280 {
   226     SELECT pow(2,2), pow(2,-2);
   227  } {4.0 0.25}
   228  do_execsql_test func7-mysql-281 {
   229     SELECT power(2,2), power(2,-2);
   230  } {4.0 0.25}
   231  do_execsql_test func7-mysql-290 {
   232     SELECT round(radians(90),7);
   233  } {1.5707963}
   234  do_execsql_test func7-mysql-300 {
   235     SELECT sign(-32), sign(0), sign(234);
   236  } {-1 0 1}
   237  do_execsql_test func7-mysql-310 {
   238     SELECT sin(pi()) BETWEEN -1.0e-15 AND 1.0e-15;
   239  } {1}
   240  do_execsql_test func7-mysql-320 {
   241     SELECT sqrt(4), round(sqrt(20),7), quote(sqrt(-16));
   242  } {2.0 4.472136 NULL}
   243  do_execsql_test func7-mysql-330 {
   244     SELECT tan(pi()) BETWEEN -1.0e-15 AND 1.0e-15;
   245  } {1}
   246  do_execsql_test func7-mysql-331 {
   247     SELECT round(tan(pi()+1),7);
   248  } {1.5574077}
   249  
   250  
   251  finish_test