We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Date: 2014-07-25 12:34:30 +0200 From: Martin van Dinther <<martin.van.dinther>> To: SQL devs <> Version: 11.17.17 (Jan2014-SP2) CC: @njnes
Last updated: 2014-10-31 14:14:21 +0100
Date: 2014-07-25 12:34:30 +0200 From: Martin van Dinther <<martin.van.dinther>>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0 Build Identifier:
Calling exp(number) function for large numbers (>= 89) returns inf instead of the value as a double.
Reproducible: Always
sql>select exp(88), log(exp(88)); +-----------------+----------------------+ | L1 | log_exp_single_value | +=================+======================+ | 1.65163627e+38 | 88 | +-----------------+----------------------+ 1 tuple (0.894ms)
sql>select exp(89), log(exp(89)); +-----------------+----------------------+ | L1 | log_exp_single_value | +=================+======================+ | inf | inf | +-----------------+----------------------+ 1 tuple (0.944ms)
sql>select exp(89.0), log(exp(89.0)); +-----------------+----------------------+ | L1 | log_exp_single_value | +=================+======================+ | inf | inf | +-----------------+----------------------+ 1 tuple (0.642ms)
When the result of the exp() is too large to be defined as float (which seems to be the default return type), it should return the value as a double.
Possibly exp() should always have return type double instead of float to avoid confusion.
There is a workaround for the problem by using cast( as double) to explicitly comvert the input arguments data type to a double.
sql>select exp(cast(89 as double)), log(exp(cast(89 as double))); +--------------------------+--------------------------+ | L1 | log_exp_single_value | +==========================+==========================+ | 4.4896128191743455e+38 | 89 | +--------------------------+--------------------------+
Date: 2014-08-04 19:29:52 +0200 From: MonetDB Mercurial Repository <>
Changeset 8f619c2ff336 made by Niels Nes niels@cwi.nl in the MonetDB repo, refers to this bug.
For complete details, see http//devmonetdborg/hg/MonetDB?cmd=changeset;node=8f619c2ff336
Changeset description:
fixed bug #3521, ie use exp(double) (and other related math functions) when the input type isn't a real (ie single precision floating point).
Date: 2014-08-04 19:30:30 +0200 From: @njnes
close we now (again) use exp(double) when the type is unknown (ie not equal to a real)
Date: 2014-10-31 14:14:21 +0100 From: @sjoerdmullender
Oct2014 has been released.
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Date: 2014-07-25 12:34:30 +0200
From: Martin van Dinther <<martin.van.dinther>>
To: SQL devs <>
Version: 11.17.17 (Jan2014-SP2)
CC: @njnes
Last updated: 2014-10-31 14:14:21 +0100
Comment 19928
Date: 2014-07-25 12:34:30 +0200
From: Martin van Dinther <<martin.van.dinther>>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0
Build Identifier:
Calling exp(number) function for large numbers (>= 89) returns inf instead of the value as a double.
Reproducible: Always
Steps to Reproduce:
+-----------------+----------------------+
| L1 | log_exp_single_value |
+=================+======================+
| inf | inf |
+-----------------+----------------------+
Actual Results:
sql>select exp(88), log(exp(88));
+-----------------+----------------------+
| L1 | log_exp_single_value |
+=================+======================+
| 1.65163627e+38 | 88 |
+-----------------+----------------------+
1 tuple (0.894ms)
sql>select exp(89), log(exp(89));
+-----------------+----------------------+
| L1 | log_exp_single_value |
+=================+======================+
| inf | inf |
+-----------------+----------------------+
1 tuple (0.944ms)
sql>select exp(89.0), log(exp(89.0));
+-----------------+----------------------+
| L1 | log_exp_single_value |
+=================+======================+
| inf | inf |
+-----------------+----------------------+
1 tuple (0.642ms)
Expected Results:
When the result of the exp() is too large to be defined as float (which seems to be the default return type), it should return the value as a double.
Possibly exp() should always have return type double instead of float to avoid confusion.
There is a workaround for the problem by using cast( as double) to explicitly comvert the input arguments data type to a double.
sql>select exp(cast(89 as double)), log(exp(cast(89 as double)));
+--------------------------+--------------------------+
| L1 | log_exp_single_value |
+==========================+==========================+
| 4.4896128191743455e+38 | 89 |
+--------------------------+--------------------------+
Comment 19946
Date: 2014-08-04 19:29:52 +0200
From: MonetDB Mercurial Repository <>
Changeset 8f619c2ff336 made by Niels Nes niels@cwi.nl in the MonetDB repo, refers to this bug.
For complete details, see http//devmonetdborg/hg/MonetDB?cmd=changeset;node=8f619c2ff336
Changeset description:
Comment 19947
Date: 2014-08-04 19:30:30 +0200
From: @njnes
close we now (again) use exp(double) when the type is unknown (ie not equal to a real)
Comment 20366
Date: 2014-10-31 14:14:21 +0100
From: @sjoerdmullender
Oct2014 has been released.
The text was updated successfully, but these errors were encountered: