[ADOL-C] Bug in extreme cases of pow()

Leweke, Samuel s.leweke at fz-juelich.de
Tue Jul 29 18:29:47 EDT 2014


Hi,

I've noticed a bug in some special cases of the pow() function (see the code attached).
The troubling statement is y = pow(x, e). The output for several values of x and e (admittedly extreme cases) is given below:

x = 0, e = 0
y = 1
dy/dx = nan
dy/de = nan
======================
x = 1, e = 0
y = 1
dy/dx = 0
dy/de = 0
======================
x = 0, e = 1
y = 0
dy/dx = nan
dy/de = nan
======================
x = 1, e = 1
y = 1
dy/dx = 1
dy/de = 0

Let's check the values produced in each test.
Test 1: Since 0^0 = 1 and x^0 = 1 for all x != 0, dy / dx should be 0 here. The value of dy / de is correct because the derivative does not exist (0^e is discontinuous at e = 0).
Test 2: This is correct.
Test 3: For fixed e, the function x^e is differentiable and its derivative dy / dx is 1 for x = 0 and e = 1. For fixed x = 0, we have 0^e = 0 for all e > 0. Hence, we should get dy / de = 0 in this case.
Test 4: This is correct.

Am I doing something seriously wrong or is this really a bug?
Is there a work around for this bug to get the correct behavior?

Best regards,
Samuel Leweke


------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
Forschungszentrum Juelich GmbH
52425 Juelich
Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzender des Aufsichtsrats: MinDir Dr. Karl Eugen Huthmacher
Geschaeftsfuehrung: Prof. Dr.-Ing. Wolfgang Marquardt (Vorsitzender),
Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,
Prof. Dr. Sebastian M. Schmidt
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------

-------------- next part --------------
A non-text attachment was scrubbed...
Name: powBug.cpp
Type: application/octet-stream
Size: 1370 bytes
Desc: powBug.cpp
URL: <http://list.coin-or.org/pipermail/adol-c/attachments/20140730/05411ed8/attachment.obj>


More information about the ADOL-C mailing list