This is an important topic which is why I have labelled it as a post.  Many users would like to know how to implement a minor fix to versions where fixes have not been applied.

I will start with one example.

   pdsolve had an issue where the fourth order term was not evaluated in the pdsolve command.  The issue 
   works Maple 16.  To those users of earlier versions where the code didn't work, it was ...

   showstat(pdsolve)

   pdsolve := proc(PDE, {build::{truefalse, identical(NULL)} := NULL})
   local zz;
      1   zz := selectremove(member,[args],['numeric', ('type') = ('numeric')]);
      2   if zz[1] <> [] then
      3     `pdsolve/numeric`(op(zz[2]))
          else
      4     `PDEtools/pdsolve`(PDE,_rest,`if`(build = true,':-build',NULL))
          end if
   end proc

Maple 15 slightly changed line 4 and used atomicnames in the line.  I do not know exactly the code, but I do not know if that fixed the issue however Maple 16 again changed the code to something else (again no access to M16 at the moment) however I can tell you the fix does work.  Of course the calling of internal code may be present here but I don't see any.  I can't see any reason that it's possible to create some other new proc of my own which would work in versions where pdsolve doesn't.  For example pdsolvenew with the new coding. 

** edit change **

Okay just found out it does work in Maple 15 and the only change done to pdsolve is in line 4 which is changed to

    4   `PDEtools/pdsolve`(PDE,_rest, ':-atomizenames=atomizenames')

 

I created the new pdsolve, pdsolvenew with the adjusted coding and it sadly works the same as the old.  So that must mean there are some other changes I have no idea about internally. 

Simply adding the changed code to a new proc does not work.  It would be helpful for some insightful input from some more advanced users.


Please Wait...