|
I confirm this
patch fix problem only with this select power(-3, 2.0) from RDB$DATABASE but brake all others select 'power( 3, 2 )', power( 3, 2 ) from RDB$DATABASE union all select 'power( -3, 2 )', power( -3, 2 ) from RDB$DATABASE union all select 'power( 3, -2 )', power( 3, -2 ) from RDB$DATABASE union all select 'power( -3, -2 )', power( -3, -2 ) from RDB$DATABASE union all select 'power( 3, 2.0 )', power( 3, 2.0 ) from RDB$DATABASE union all select 'power( 3, -2.0 )', power( 3, -2.0 ) from RDB$DATABASE union all select 'power( -3, 2.0 )', power( -3, 2.0 ) from RDB$DATABASE union all select 'power( -3, -2.0 )', power( -3, -2.0 ) from RDB$DATABASE union all select 'power( -3.0, 2 )', power( -3.0, 2 ) from RDB$DATABASE union all select 'power( -3.0, 2.0 )', power( -3.0, 2.0 ) from RDB$DATABASE union all select 'power( -3.0, -2.0 )', power( -3.0, -2.0 ) from RDB$DATABASE union all select 'power( 3.0, -2.0 )', power( 3.0, -2.0 ) from RDB$DATABASE union all select 'power( 3.0, 2.0 )', power( 3.0, 2.0 ) from RDB$DATABASE union all select 'power( 3.0, 2 )', power( 3.0, 2 ) from RDB$DATABASE union all select 'power( 3.0, -2 )', power( 3.0, -2 ) from RDB$DATABASE power( 3, 2 ) 0.000000 power( -3, 2 ) 0.000000 power( 3, -2 ) 0.000000 power( -3, -2 ) 0.000000 power( 3, 2.0 ) 0.000000 power( 3, -2.0 ) 0.000000 power( -3, 2.0 ) 9.000000 power( -3, -2.0 ) 0.111111 power( -3.0, 2 ) 0.000000 power( -3.0, 2.0 ) 9.000000 power( -3.0, -2.0 ) 0.111111 power( 3.0, -2.0 ) 0.000000 power( 3.0, 2.0 ) 0.000000 power( 3.0, 2 ) 0.000000 power( 3.0, -2 ) 0.000000 return wrong values as GR show Just works for me. And I see no way my change to alter the result. It was all about exceptions.
SQL> select 'power( 2, 2 )', power( 2, 2 ) from RDB$DATABASE CON> union all CON> select 'power(3, 2)', power(3, 2) from RDB$DATABASE CON> union all CON> select 'power(-3.0, 2)', power(-3.0, 2) from RDB$DATABASE CON> union all CON> select 'power(3.0, 2.0)', power(3.0, 2.0) from RDB$DATABASE CON> union all CON> select 'power(-3, 2.0)', power(-3, 2.0) from RDB$DATABASE CON> ; =============== ======================= power( 2, 2 ) 4.000000000000000 power(3, 2) 9.000000000000000 power(-3.0, 2) 9.000000000000000 power(3.0, 2.0) 9.000000000000000 power(-3, 2.0) 9.000000000000000 ========================== SQL> select 'power( 3, 2 )', power( 3, 2 ) from RDB$DATABASE CON> union all CON> select 'power( -3, 2 )', power( -3, 2 ) from RDB$DATABASE CON> union all CON> select 'power( 3, -2 )', power( 3, -2 ) from RDB$DATABASE CON> union all CON> select 'power( -3, -2 )', power( -3, -2 ) from RDB$DATABASE CON> union all CON> select 'power( 3, 2.0 )', power( 3, 2.0 ) from RDB$DATABASE CON> union all CON> select 'power( 3, -2.0 )', power( 3, -2.0 ) from RDB$DATABASE CON> union all CON> select 'power( -3, 2.0 )', power( -3, 2.0 ) from RDB$DATABASE CON> union all CON> select 'power( -3, -2.0 )', power( -3, -2.0 ) from RDB$DATABASE CON> union all CON> select 'power( -3.0, 2 )', power( -3.0, 2 ) from RDB$DATABASE CON> union all CON> select 'power( -3.0, 2.0 )', power( -3.0, 2.0 ) from RDB$DATABASE CON> union all CON> select 'power( -3.0, -2.0 )', power( -3.0, -2.0 ) from RDB$DATABASE CON> union all CON> select 'power( 3.0, -2.0 )', power( 3.0, -2.0 ) from RDB$DATABASE CON> union all CON> select 'power( 3.0, 2.0 )', power( 3.0, 2.0 ) from RDB$DATABASE CON> union all CON> select 'power( 3.0, 2 )', power( 3.0, 2 ) from RDB$DATABASE CON> union all CON> select 'power( 3.0, -2 )', power( 3.0, -2 ) from RDB$DATABASE; =================== ======================= power( 3, 2 ) 9.000000000000000 power( -3, 2 ) 9.000000000000000 power( 3, -2 ) 0.1111111111111111 power( -3, -2 ) 0.1111111111111111 power( 3, 2.0 ) 9.000000000000000 power( 3, -2.0 ) 0.1111111111111111 power( -3, 2.0 ) 9.000000000000000 power( -3, -2.0 ) 0.1111111111111111 power( -3.0, 2 ) 9.000000000000000 power( -3.0, 2.0 ) 9.000000000000000 power( -3.0, -2.0 ) 0.1111111111111111 power( 3.0, -2.0 ) 0.1111111111111111 power( 3.0, 2.0 ) 9.000000000000000 power( 3.0, 2 ) 9.000000000000000 power( 3.0, -2 ) 0.1111111111111111 Now I see, I was testing 3.0 and 2.5 only.
It was an error in the 2.1 backport. I committed a fix and will test later. I'm having problems to build 2.1 in any environments, due to theyr build not supporting new compilers supported in 2.5. Thanks. I test this under this snapshot 2.1.4.18359 and now all is ok
power( 3, 2 ) 9.000000 power( -3, 2 ) 9.000000 power( 3, -2 ) 0.111111 power( -3, -2 ) 0.111111 power( 3, 2.0 ) 9.000000 power( 3, -2.0 ) 0.111111 power( -3, 2.0 ) 9.000000 power( -3, -2.0 ) 0.111111 power( -3.0, 2 ) 9.000000 power( -3.0, 2.0 ) 9.000000 power( -3.0, -2.0 ) 0.111111 power( 3.0, -2.0 ) 0.111111 power( 3.0, 2.0 ) 9.000000 power( 3.0, 2 ) 9.000000 power( 3.0, -2 ) 0.111111 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
select 'power( 2, 2 )', power( 2, 2 ) from RDB$DATABASE
union all
select 'power(3, 2)', power(3, 2) from RDB$DATABASE
union all
select 'power(-3.0, 2)', power(-3.0, 2) from RDB$DATABASE
union all
select 'power(3.0, 2.0)', power(3.0, 2.0) from RDB$DATABASE
union all
select 'power(-3, 2.0)', power(-3, 2.0) from RDB$DATABASE
returns
power( 2, 2 ) 0
power( 3, 2 ) 0
power(-3.0, 2 ) 0
power(3.0, 2.0) 0
power(-3, 2.0) 9