On 2014-09-13 10:40 AM, "Waldek Hebisch" <[email protected]> wrote: > > Bill Page wrote: > > > > I made a preliminary change to ElementaryFunctionStructurePackage here: > > > > > > http://axiom-wiki.newsynthesis.org/SandBoxElementaryFunctionStructurePackage > > > > which avoids the "Hidden constant detected" error. The main idea is > > just to avoid differentiating conjugate by replacing it with a dummy > > placeholder: > > ... > > Maybe you see a better way? > > I think that this is wrong way. Namely you take unsound > default (that is make 'D(conjugate(x), x)' equal to 0)
To my knowledge Wirtinger calculus, which defines D(conjugate(x),x) = 0, is an accepted albeit infrequently taught part of complex analysis so your comment made me feel a bit irritated. Perhaps the fact that you seem to consider it unsound reflects a lack of knowledge or some unstated prejudice? The fundamental notion is that x and conjugate(x) are independent of each other. Do you think that this is wrong? > and then try to 'opt out' in places where is causes > troubles. I do not want to opt out anywhere. The problem in EFSTRUC seems to be that it assumes that f(x) cannot be independent of x which of course is not true for conjugate..The preliminary change was only intended to avoid the bug. I took a look at the code in EFSTRUC more carefully. Now in an updated version of http://axiom-wiki.newsynthesis.org/SandBoxElementaryFunctionStructurePackage I have the following code: -- total Wirtinger derivative allows expressions containing conjugate to be normalized -- Wirtinger derivatives: wdiff(f,x) and wdiff(f,conjugate(x)) wdiff(ex:F,z:K):F == eval(differentiate(eval(ex,[z],[coerce('%conjugate)]),'%conjugate),[kernel('%conjugate)],[z::F]) totalDifferentiate(f:F,x:SY):F == wdiff(f,kernel(x))+wdiff(f,kernels(conjugate(coerce x)$FunctionalSpecialFunction(R, F))(1) ) For holmorphic functions the "total" Wirtinger derivative (sum of both Wirtinger derivatives) is equal to the usual derivative since D(f(x),conjugate(x)) is 0. For non-holomorphic functions like conjugate itself, the result is not zero. The example shows that normalize now normalizes expressions containing conjugate successfully, but of course more testing is needed. > IME this leads to long tail of bugs, when > thing constantly break out in new ways. Instead, > 'opt in' when transformations are applied only when known > safe is much better. I understand that using unsafe > transforamations by default may look attractive, because > they are fequently correct and systems using them looks > smarter when tested on simple examples (safe system may > easily miss possibility of applying a transformation). > I do not consider this unsafe, though of course there may be still more places in FriCAS that do not handle conjugate properly by default. > Basicaly D(conjugate(x), x) = 0 or even > 'conjugate(log(x)) = log(conjugate(x))' are too unsafe to > apply them by default. Rather they should be done by > separate functions, which are either explicitely > requested by user or called when we know that needed > assumptions are satisfied. > I am not aware of any assumptions that are needed. Bill. -- You received this message because you are subscribed to the Google Groups "FriCAS - computer algebra system" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/fricas-devel. For more options, visit https://groups.google.com/d/optout.
