JacquesC

Prof. Jacques Carette

2401 Reputation

17 Badges

20 years, 88 days
McMaster University
Professor or university staff
Hamilton, Ontario, Canada

Social Networks and Content at Maplesoft.com

From a Maple perspective: I first started using it in 1985 (it was Maple 4.0, but I still have a Maple 3.3 manual!). Worked as a Maple tutor in 1987. Joined the company in 1991 as the sole GUI developer and wrote the first Windows version of Maple (for Windows 3.0). Founded the Math group in 1992. Worked remotely from France (still in Math, hosted by the ALGO project) from fall 1993 to summer 1996 where I did my PhD in complex dynamics in Orsay. Soon after I returned to Ontario, I became the Manager of the Math Group, which I grew from 2 people to 12 in 2.5 years. Got "promoted" into project management (for Maple 6, the last of the releases which allowed a lot of backward incompatibilities, aka the last time that design mistakes from the past were allowed to be fixed), and then moved on to an ill-fated web project (it was 1999 after all). After that, worked on coordinating the output from the (many!) research labs Maplesoft then worked with, as well as some Maple design and coding (inert form, the box model for Maplets, some aspects of MathML, context menus, a prototype compiler, and more), as well as some of the initial work on MapleNet. In 2002, an opportunity came up for a faculty position, which I took. After many years of being confronted with Maple weaknesses, I got a number of ideas of how I would go about 'doing better' -- but these ideas required a radical change of architecture, which I could not do within Maplesoft. I have been working on producing a 'better' system ever since.

MaplePrimes Activity


These are replies submitted by JacquesC

Those would all be weaknesses -- the 'specification' for prep2trans (informally) says that these things should be covered. I will try to submit a piece of code that gets around these limitations [it is quite easy to do].
Those would all be weaknesses -- the 'specification' for prep2trans (informally) says that these things should be covered. I will try to submit a piece of code that gets around these limitations [it is quite easy to do].
I believe that codegen[prep2trans] will automatically do what you want -- it is written to "prepare code to translate". It knows about a number of Maple constructs that can be ``expanded'' so that they can be translated to languages like C. If prep2trans does not work, write back, with ToInert/FromInert, it is just a few lines of code to translate a product to a for loop.
I believe that codegen[prep2trans] will automatically do what you want -- it is written to "prepare code to translate". It knows about a number of Maple constructs that can be ``expanded'' so that they can be translated to languages like C. If prep2trans does not work, write back, with ToInert/FromInert, it is just a few lines of code to translate a product to a for loop.
For the purposes of C code generation, I believe the generator will automatically convert things to float anyways [or at least, there are options to CodeGeneration[C] for that purpose], so 1/4 is fine. It really depends on what you are doing, and in fact, what your ultimate purpose is, what will be faster/slower. There are (usually) good reasons why some functions are faster/slower depending on whether the inputs are numeric or symbolic - but since the reasons can vary depending on the functionality, I can't give a blanket explanation. When I use Maple for code generation, the main task I perform with Maple is model-based manipulations, which are by far best done symbolically. Then since the eventual use is numeric, sometimes I convert to float before doing the actual code generation. For example, you can take a look at a Maple Conference 2005 paper for an example.
For the purposes of C code generation, I believe the generator will automatically convert things to float anyways [or at least, there are options to CodeGeneration[C] for that purpose], so 1/4 is fine. It really depends on what you are doing, and in fact, what your ultimate purpose is, what will be faster/slower. There are (usually) good reasons why some functions are faster/slower depending on whether the inputs are numeric or symbolic - but since the reasons can vary depending on the functionality, I can't give a blanket explanation. When I use Maple for code generation, the main task I perform with Maple is model-based manipulations, which are by far best done symbolically. Then since the eventual use is numeric, sometimes I convert to float before doing the actual code generation. For example, you can take a look at a Maple Conference 2005 paper for an example.
The basic difference is that in a piece of code, common sub-expressions (ie repeated computations) can be pulled out. And there is explicit code in codegen to do this (since in some cases it is very easy to do). This is not a fundamental difference between automatic differentiation and symbolic differentiation: if the Maple language had a let-in ``expression'', then these would be equivalent. Alas, Maple still does not have a let expression.
The basic difference is that in a piece of code, common sub-expressions (ie repeated computations) can be pulled out. And there is explicit code in codegen to do this (since in some cases it is very easy to do). This is not a fundamental difference between automatic differentiation and symbolic differentiation: if the Maple language had a let-in ``expression'', then these would be equivalent. Alas, Maple still does not have a let expression.
If you really need a reboot, then it sounds like a Java problem - the Maple kernel really does shut down properly, so that simply exiting should be sufficient. Have you tried your computations in Classic or the TTY version? It would be really useful to be able to pin down a little more closely which Maple component seems to be causing you all these problems.
If you really need a reboot, then it sounds like a Java problem - the Maple kernel really does shut down properly, so that simply exiting should be sufficient. Have you tried your computations in Classic or the TTY version? It would be really useful to be able to pin down a little more closely which Maple component seems to be causing you all these problems.
proc(p::procedure)     FromInert(eval(ToInert(p), _Inert_LOCALSEQ = proc() _Inert_LOCALSEQ(op(map(proc(mm) if mm::specfunc(anything,_Inert_DCOLON) then mm else _Inert_DCOLON(mm, _Inert_NAME("float",_Inert_ATTRIBUTE(_Inert_NAME("protected")))) end if end proc, [args]))) end)); end; should be right.
proc(p::procedure)     FromInert(eval(ToInert(p), _Inert_LOCALSEQ = proc() _Inert_LOCALSEQ(op(map(proc(mm) if mm::specfunc(anything,_Inert_DCOLON) then mm else _Inert_DCOLON(mm, _Inert_NAME("float",_Inert_ATTRIBUTE(_Inert_NAME("protected")))) end if end proc, [args]))) end)); end; should be right.
Is what I had in mind. However that seems to cause 'merely' a slowdown of a factor of 10. Could be that it is much worse on Windows XP though.
Is what I had in mind. However that seems to cause 'merely' a slowdown of a factor of 10. Could be that it is much worse on Windows XP though.
I wonder what kind of leaf it should be?
First 65 66 67 68 69 70 71 Last Page 67 of 119