xref: /sqlite-3.40.0/test/func7.test (revision 724e298e)
1f6e904bdSdrh# 2020-12-07
2f6e904bdSdrh#
3f6e904bdSdrh# The author disclaims copyright to this source code.  In place of
4f6e904bdSdrh# a legal notice, here is a blessing:
5f6e904bdSdrh#
6f6e904bdSdrh#    May you do good and not evil.
7f6e904bdSdrh#    May you find forgiveness for yourself and forgive others.
8f6e904bdSdrh#    May you share freely, never taking more than you give.
9f6e904bdSdrh#
10f6e904bdSdrh#*************************************************************************
11f6e904bdSdrh#
12f6e904bdSdrh# Test cases for SQL functions based off the standard math library
13f6e904bdSdrh#
14f6e904bdSdrhset testdir [file dirname $argv0]
15f6e904bdSdrhsource $testdir/tester.tcl
16f6e904bdSdrhifcapable !mathlib {
17f6e904bdSdrh  finish_test
18f6e904bdSdrh  return
19f6e904bdSdrh}
20f6e904bdSdrh
21f6e904bdSdrhdo_execsql_test func7-100 {
22f6e904bdSdrh  SELECT ceil(99.9), ceiling(-99.01), floor(17), floor(-17.99);
23f6e904bdSdrh} {100.0 -99.0 17 -18.0}
24f6e904bdSdrhdo_execsql_test func7-110 {
25f6e904bdSdrh  SELECT quote(ceil(NULL)), ceil('-99.99');
26f6e904bdSdrh} {NULL -99.0}
27f6e904bdSdrhdo_execsql_test func7-200 {
2863f8f98aSdrh  SELECT round(ln(5),2), log(100.0), log(100), log(2,'256');
29f6e904bdSdrh} {1.61 2.0 2.0 8.0}
30f6e904bdSdrhdo_execsql_test func7-210 {
3163f8f98aSdrh  SELECT ln(-5), log(-5,100.0);
32f6e904bdSdrh} {{} {}}
33f6e904bdSdrh
3463f8f98aSdrh# Test cases derived from PostgreSQL documentation
3563f8f98aSdrh#
3663f8f98aSdrhdo_execsql_test func7-pg-100 {
3763f8f98aSdrh  SELECT abs(-17.4)
3863f8f98aSdrh} {17.4}
3963f8f98aSdrhdo_execsql_test func7-pg-110 {
4063f8f98aSdrh  SELECT ceil(42.2)
4163f8f98aSdrh} {43.0}
4263f8f98aSdrhdo_execsql_test func7-pg-120 {
4363f8f98aSdrh  SELECT ceil(-42.2)
4463f8f98aSdrh} {-42.0}
4563f8f98aSdrhdo_execsql_test func7-pg-130 {
4663f8f98aSdrh  SELECT round(exp(1.0),7)
4763f8f98aSdrh} {2.7182818}
4863f8f98aSdrhdo_execsql_test func7-pg-140 {
4963f8f98aSdrh  SELECT floor(42.8)
5063f8f98aSdrh} {42.0}
5163f8f98aSdrhdo_execsql_test func7-pg-150 {
5263f8f98aSdrh  SELECT floor(-42.8)
5363f8f98aSdrh} {-43.0}
5463f8f98aSdrhdo_execsql_test func7-pg-160 {
5563f8f98aSdrh  SELECT round(ln(2.0),7)
5663f8f98aSdrh} {0.6931472}
5763f8f98aSdrhdo_execsql_test func7-pg-170 {
5863f8f98aSdrh  SELECT log(100.0)
5963f8f98aSdrh} {2.0}
6063f8f98aSdrhdo_execsql_test func7-pg-180 {
6163f8f98aSdrh  SELECT log10(1000.0)
6263f8f98aSdrh} {3.0}
63*724e298eSdrhdo_execsql_test func7-pg-181 {
64*724e298eSdrh  SELECT format('%.30f', log10(100.0) );
65*724e298eSdrh} {2.000000000000000000000000000000}
66*724e298eSdrhdo_execsql_test func7-pg-182 {
67*724e298eSdrh  SELECT format('%.30f', ln(exp(2.0)) );
68*724e298eSdrh} {2.000000000000000000000000000000}
6963f8f98aSdrhdo_execsql_test func7-pg-190 {
7063f8f98aSdrh  SELECT log(2.0, 64.0)
7163f8f98aSdrh} {6.0}
7263f8f98aSdrhdo_execsql_test func7-pg-200 {
7363f8f98aSdrh   SELECT mod(9,4);
7463f8f98aSdrh} {1.0}
7563f8f98aSdrhdo_execsql_test func7-pg-210 {
7663f8f98aSdrh   SELECT round(pi(),7);
7763f8f98aSdrh} {3.1415927}
7863f8f98aSdrhdo_execsql_test func7-pg-220 {
7963f8f98aSdrh   SELECT power(9,3);
8063f8f98aSdrh} {729.0}
8163f8f98aSdrhdo_execsql_test func7-pg-230 {
8263f8f98aSdrh   SELECT round(radians(45.0),7);
8363f8f98aSdrh} {0.7853982}
8463f8f98aSdrhdo_execsql_test func7-pg-240 {
8563f8f98aSdrh   SELECT round(42.4);
8663f8f98aSdrh} {42.0}
8763f8f98aSdrhdo_execsql_test func7-pg-250 {
8863f8f98aSdrh   SELECT round(42.4382,2);
8963f8f98aSdrh} {42.44}
9063f8f98aSdrhdo_execsql_test func7-pg-260 {
9163f8f98aSdrh   SELECT sign(-8.4);
9263f8f98aSdrh} {-1}
9363f8f98aSdrhdo_execsql_test func7-pg-270 {
9463f8f98aSdrh   SELECT round( sqrt(2), 7);
9563f8f98aSdrh} {1.4142136}
9663f8f98aSdrhdo_execsql_test func7-pg-280 {
9763f8f98aSdrh   SELECT trunc(42.8), trunc(-42.8);
9863f8f98aSdrh} {42.0 -42.0}
9963f8f98aSdrhdo_execsql_test func7-pg-300 {
10063f8f98aSdrh   SELECT acos(1);
10163f8f98aSdrh} {0.0}
10263f8f98aSdrhdo_execsql_test func7-pg-301 {
10363f8f98aSdrh   SELECT degrees(acos(0.5));
10463f8f98aSdrh} {60.0}
10563f8f98aSdrhdo_execsql_test func7-pg-310 {
10663f8f98aSdrh   SELECT round( asin(1), 7);
10763f8f98aSdrh} {1.5707963}
10863f8f98aSdrhdo_execsql_test func7-pg-311 {
10963f8f98aSdrh   SELECT degrees( asin(0.5) );
11063f8f98aSdrh} {30.0}
11163f8f98aSdrhdo_execsql_test func7-pg-320 {
11263f8f98aSdrh   SELECT round( atan(1), 7);
11363f8f98aSdrh} {0.7853982}
11463f8f98aSdrhdo_execsql_test func7-pg-321 {
11563f8f98aSdrh   SELECT degrees( atan(1) );
11663f8f98aSdrh} {45.0}
11763f8f98aSdrhdo_execsql_test func7-pg-330 {
11863f8f98aSdrh   SELECT round( atan2(1,0), 7);
11963f8f98aSdrh} {1.5707963}
12063f8f98aSdrhdo_execsql_test func7-pg-331 {
12163f8f98aSdrh   SELECT degrees( atan2(1,0) );
12263f8f98aSdrh} {90.0}
12363f8f98aSdrhdo_execsql_test func7-pg-400 {
12463f8f98aSdrh   SELECT cos(0);
12563f8f98aSdrh} {1.0}
12663f8f98aSdrhdo_execsql_test func7-pg-401 {
12763f8f98aSdrh   SELECT cos( radians(60.0) );
12863f8f98aSdrh} {0.5}
12963f8f98aSdrhdo_execsql_test func7-pg-400 {
13063f8f98aSdrh   SELECT cos(0);
13163f8f98aSdrh} {1.0}
13263f8f98aSdrhdo_execsql_test func7-pg-410 {
13363f8f98aSdrh   SELECT round( sin(1), 7);
13463f8f98aSdrh} {0.841471}
13563f8f98aSdrhdo_execsql_test func7-pg-411 {
13663f8f98aSdrh   SELECT sin( radians(30) );
13763f8f98aSdrh} {0.5}
13863f8f98aSdrhdo_execsql_test func7-pg-420 {
13963f8f98aSdrh   SELECT round( tan(1), 7);
14063f8f98aSdrh} {1.5574077}
14163f8f98aSdrhdo_execsql_test func7-pg-421 {
14263f8f98aSdrh   SELECT tan( radians(45) );
14363f8f98aSdrh} {1.0}
14463f8f98aSdrhdo_execsql_test func7-pg-500 {
14563f8f98aSdrh   SELECT round( sinh(1), 7);
14663f8f98aSdrh} {1.1752012}
14763f8f98aSdrhdo_execsql_test func7-pg-510 {
14863f8f98aSdrh   SELECT round( cosh(0), 7);
14963f8f98aSdrh} {1.0}
15063f8f98aSdrhdo_execsql_test func7-pg-520 {
15163f8f98aSdrh   SELECT round( tanh(1), 7);
15263f8f98aSdrh} {0.7615942}
15363f8f98aSdrhdo_execsql_test func7-pg-530 {
15463f8f98aSdrh   SELECT round( asinh(1), 7);
15563f8f98aSdrh} {0.8813736}
15663f8f98aSdrhdo_execsql_test func7-pg-540 {
15763f8f98aSdrh   SELECT round( acosh(1), 7);
15863f8f98aSdrh} {0.0}
15963f8f98aSdrhdo_execsql_test func7-pg-550 {
16063f8f98aSdrh   SELECT round( atanh(0.5), 7);
16163f8f98aSdrh} {0.5493061}
16263f8f98aSdrh
16363f8f98aSdrh# Test cases derived from MySQL documentation
16463f8f98aSdrh#
16563f8f98aSdrhdo_execsql_test func7-mysql-100 {
16663f8f98aSdrh   SELECT acos(1);
16763f8f98aSdrh} {0.0}
16863f8f98aSdrhdo_execsql_test func7-mysql-110 {
16963f8f98aSdrh   SELECT acos(1.0001);
17063f8f98aSdrh} {{}}
17163f8f98aSdrhdo_execsql_test func7-mysql-120 {
17263f8f98aSdrh   SELECT round( acos(0.0), 7);
17363f8f98aSdrh} {1.5707963}
17463f8f98aSdrhdo_execsql_test func7-mysql-130 {
17563f8f98aSdrh   SELECT round( asin(0.2), 7);
17663f8f98aSdrh} {0.2013579}
17763f8f98aSdrhdo_execsql_test func7-mysql-140 {
17863f8f98aSdrh   SELECT asin('foo');
17963f8f98aSdrh} {{}}  ;# Note: MySQL returns 0 here, not NULL.
18063f8f98aSdrh         # SQLite deliberately returns NULL.
18163f8f98aSdrh         # SQLServer and Oracle throw an error.
18263f8f98aSdrhdo_execsql_test func7-mysql-150 {
18363f8f98aSdrh   SELECT round( atan(2), 7), round( atan(-2), 7);
18463f8f98aSdrh} {1.1071487 -1.1071487}
18563f8f98aSdrhdo_execsql_test func7-mysql-160 {
18663f8f98aSdrh   SELECT round( atan2(-2,2), 7), round( atan2(pi(),0), 7);
18763f8f98aSdrh} {-0.7853982 1.5707963}
18863f8f98aSdrhdo_execsql_test func7-mysql-170 {
18963f8f98aSdrh   SELECT ceiling(1.23), ceiling(-1.23);
19063f8f98aSdrh} {2.0 -1.0}
19163f8f98aSdrhdo_execsql_test func7-mysql-180 {
19263f8f98aSdrh   SELECT cos(pi());
19363f8f98aSdrh} {-1.0}
19463f8f98aSdrhdo_execsql_test func7-mysql-190 {
19563f8f98aSdrh   SELECT degrees(pi()), degrees(pi()/2);
19663f8f98aSdrh} {180.0 90.0}
19763f8f98aSdrhdo_execsql_test func7-mysql-190 {
19863f8f98aSdrh   SELECT round( exp(2), 7), round( exp(-2), 7), exp(0);
19963f8f98aSdrh} {7.3890561 0.1353353 1.0}
20063f8f98aSdrhdo_execsql_test func7-mysql-200 {
20163f8f98aSdrh   SELECT floor(1.23), floor(-1.23);
20263f8f98aSdrh} {1.0 -2.0}
20363f8f98aSdrhdo_execsql_test func7-mysql-210 {
20463f8f98aSdrh   SELECT round(ln(2),7), quote(ln(-2));
20563f8f98aSdrh} {0.6931472 NULL}
20663f8f98aSdrh#do_execsql_test func7-mysql-220 {
20763f8f98aSdrh#   SELECT round(log(2),7), log(-2);
20863f8f98aSdrh#} {0.6931472 NULL}
20963f8f98aSdrh# log() means natural logarithm in MySQL
21063f8f98aSdrhdo_execsql_test func7-mysql-230 {
21102d6f9b2Sdrh   SELECT log(2,65536), log(10,100), quote(log(1,100)), quote(log(0,100));
21202d6f9b2Sdrh} {16.0 2.0 NULL NULL}
21363f8f98aSdrhdo_execsql_test func7-mysql-240 {
21402d6f9b2Sdrh   SELECT log2(65536), quote(log2(-100)), quote(log2(0));
21502d6f9b2Sdrh} {16.0 NULL NULL}
21663f8f98aSdrhdo_execsql_test func7-mysql-250 {
21763f8f98aSdrh   SELECT round(log10(2),7), log10(100), quote(log10(-100));
21863f8f98aSdrh} {0.30103 2.0 NULL}
21963f8f98aSdrhdo_execsql_test func7-mysql-260 {
22063f8f98aSdrh   SELECT mod(234,10), 253%7, mod(29,9), 29%9;
22163f8f98aSdrh} {4.0 1 2.0 2}
22263f8f98aSdrhdo_execsql_test func7-mysql-270 {
22363f8f98aSdrh   SELECT mod(34.5,3);
22463f8f98aSdrh} {1.5}
22563f8f98aSdrhdo_execsql_test func7-mysql-280 {
22663f8f98aSdrh   SELECT pow(2,2), pow(2,-2);
22763f8f98aSdrh} {4.0 0.25}
22863f8f98aSdrhdo_execsql_test func7-mysql-281 {
22963f8f98aSdrh   SELECT power(2,2), power(2,-2);
23063f8f98aSdrh} {4.0 0.25}
23163f8f98aSdrhdo_execsql_test func7-mysql-290 {
23263f8f98aSdrh   SELECT round(radians(90),7);
23363f8f98aSdrh} {1.5707963}
23463f8f98aSdrhdo_execsql_test func7-mysql-300 {
23563f8f98aSdrh   SELECT sign(-32), sign(0), sign(234);
23663f8f98aSdrh} {-1 0 1}
23763f8f98aSdrhdo_execsql_test func7-mysql-310 {
23863f8f98aSdrh   SELECT sin(pi()) BETWEEN -1.0e-15 AND 1.0e-15;
23963f8f98aSdrh} {1}
24063f8f98aSdrhdo_execsql_test func7-mysql-320 {
24163f8f98aSdrh   SELECT sqrt(4), round(sqrt(20),7), quote(sqrt(-16));
24263f8f98aSdrh} {2.0 4.472136 NULL}
24363f8f98aSdrhdo_execsql_test func7-mysql-330 {
24463f8f98aSdrh   SELECT tan(pi()) BETWEEN -1.0e-15 AND 1.0e-15;
24563f8f98aSdrh} {1}
24663f8f98aSdrhdo_execsql_test func7-mysql-331 {
24763f8f98aSdrh   SELECT round(tan(pi()+1),7);
24863f8f98aSdrh} {1.5574077}
24963f8f98aSdrh
250f6e904bdSdrh
251f6e904bdSdrhfinish_test
252