From: Me S. <vla...@gm...> - 2022-07-01 19:39:32
|
Hello everyone Is it possible to return a function with an if, from a block()? In a very simple example: (%i1) f(x) := block([y, r, n], r:map(rhs,allroots(x)), y:if n=0 then 1.618 else x*n)$ (%i2) f(x+1); (%o2) -1.0*n (%i3) g(n) := ''%$ (%i4) g([0, 1, 2]); (%o4) [0, -1.0, -2.0] f(x) takes a function (polynomial here, for simplicity) as an argument (see %i2) which is used, internally, to generate some numbers (a bogus allroots() here), and I need it to return a function of n, where n will take discrete values. As it is now, it simply evaluates n to be false (n is just n, not 0) so it spits out the rest of the conditional. What I want it to return is this (based off on the rest of the example code above): (%i2) f(x+1); (%o2) if n=0 then 1.618 else -1*n I don't want to use makelist() as that requires a numerical 4th argument, which would mean f(x) will need an extra argument for f(x) -- but only one is needed. I have tried declaring y like this inside the block(): y:'(if n=0 then 1.618 else n*r), which returns: (%o2) if n=0 then 1.618 else n*r but when evaluated: (%o4) [0, r, 2*r] So, how can I make the block() return this: (%o2) f(x+1); (%o2) if n=0 then 1.618 else n*r but which, when evaluated it returns: (%i3) g(n) := ''%$ (%o4) g([0, 1, 2]); (%o4) [1.618, -1.0, -2.0] Regards, Vlad |
From: Robert D. <rob...@gm...> - 2022-07-01 20:26:32
|
On Fri, Jul 1, 2022 at 12:41 PM Me Self <vla...@gm...> wrote: > (%i1) f(x) := block([y, r, n], r:map(rhs,allroots(x)), y:if n=0 then > 1.618 else x*n)$ I'm not entirely sure, but maybe try equal(n, 0) instead of n = 0. best, Robert |
From: Gunter K. <gu...@pe...> - 2022-07-01 20:27:30
|
I believe you can wrap a '() around your if or makelist in order to prevent a premature evaluation. Lateron you can remove that ' by the '' operator. Kind regards, Gunter. Am 1. Juli 2022 21:39:23 MESZ schrieb Me Self <vla...@gm...>: >Hello everyone > >Is it possible to return a function with an if, from a block()? In a >very simple example: > >(%i1) f(x) := block([y, r, n], r:map(rhs,allroots(x)), y:if n=0 then >1.618 else x*n)$ >(%i2) f(x+1); >(%o2) -1.0*n >(%i3) g(n) := ''%$ >(%i4) g([0, 1, 2]); >(%o4) [0, -1.0, -2.0] > >f(x) takes a function (polynomial here, for simplicity) as an argument >(see %i2) which is used, internally, to generate some numbers (a bogus >allroots() here), and I need it to return a function of n, where n >will take discrete values. As it is now, it simply evaluates n to be >false (n is just n, not 0) so it spits out the rest of the >conditional. What I want it to return is this (based off on the rest >of the example code above): > >(%i2) f(x+1); >(%o2) if n=0 then 1.618 else -1*n > >I don't want to use makelist() as that requires a numerical 4th >argument, which would mean f(x) will need an extra argument for f(x) >-- but only one is needed. > >I have tried declaring y like this inside the block(): y:'(if n=0 then >1.618 else n*r), which returns: > >(%o2) if n=0 then 1.618 else n*r > >but when evaluated: > >(%o4) [0, r, 2*r] > >So, how can I make the block() return this: > >(%o2) f(x+1); >(%o2) if n=0 then 1.618 else n*r > >but which, when evaluated it returns: > >(%i3) g(n) := ''%$ >(%o4) g([0, 1, 2]); >(%o4) [1.618, -1.0, -2.0] > > >Regards, >Vlad > > >_______________________________________________ >Maxima-discuss mailing list >Max...@li... >https://lists.sourceforge.net/lists/listinfo/maxima-discuss |
From: Stavros M. <mac...@al...> - 2022-07-03 17:13:42
|
The ''(...) operator does not remove quotes or evaluate expressions. It simply *substitutes* a value *at read time*, which makes it inappropriate for programming. This is a common error among Maxima users -- spread, originally, by a blunder in our documentation. Also, using '(if ...) does not work because it does not take into account the value of the value of *x* in a call to *f(x)*. Of course, it will happen to work if *f* is called with the argument *x*, but not with other values. -s On Fri, Jul 1, 2022 at 4:28 PM Gunter Königsmann via Maxima-discuss < max...@li...> wrote: > I believe you can wrap a '() around your if or makelist in order to > prevent a premature evaluation. Lateron you can remove that ' by the '' > operator. > > Kind regards, > > Gunter. > > Am 1. Juli 2022 21:39:23 MESZ schrieb Me Self <vla...@gm...>: >> >> Hello everyone >> >> Is it possible to return a function with an if, from a block()? In a >> very simple example: >> >> (%i1) f(x) := block([y, r, n], r:map(rhs,allroots(x)), y:if n=0 then >> 1.618 else x*n)$ >> (%i2) f(x+1); >> (%o2) -1.0*n >> (%i3) g(n) := ''%$ >> (%i4) g([0, 1, 2]); >> (%o4) [0, -1.0, -2.0] >> >> f(x) takes a function (polynomial here, for simplicity) as an argument >> (see %i2) which is used, internally, to generate some numbers (a bogus >> allroots() here), and I need it to return a function of n, where n >> will take discrete values. As it is now, it simply evaluates n to be >> false (n is just n, not 0) so it spits out the rest of the >> conditional. What I want it to return is this (based off on the rest >> of the example code above): >> >> (%i2) f(x+1); >> (%o2) if n=0 then 1.618 else -1*n >> >> I don't want to use makelist() as that requires a numerical 4th >> argument, which would mean f(x) will need an extra argument for f(x) >> -- but only one is needed. >> >> I have tried declaring y like this inside the block(): y:'(if n=0 then >> 1.618 else n*r), which returns: >> >> (%o2) if n=0 then 1.618 else n*r >> >> but when evaluated: >> >> (%o4) [0, r, 2*r] >> >> So, how can I make the block() return this: >> >> (%o2) f(x+1); >> (%o2) if n=0 then 1.618 else n*r >> >> but which, when evaluated it returns: >> >> (%i3) g(n) := ''%$ >> (%o4) g([0, 1, 2]); >> (%o4) [1.618, -1.0, -2.0] >> >> >> Regards, >> Vlad >> ------------------------------ >> Maxima-discuss mailing list >> Max...@li... >> https://lists.sourceforge.net/lists/listinfo/maxima-discuss >> >> _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > |
From: Stavros M. <mac...@al...> - 2022-07-01 20:36:30
|
Let's look at a simpler example. Consider: f(x):= block([n],if n=0 then 1 else x); In Maxima, if a variable *n* is not assigned a value, it evaluates to itself (the symbol *n*). The "=" operation checks for structural equality, not mathematical equality. The symbol *n* is not equal to the number *0*, so the predicate is false, and thus your function returns *x*. So you should use *equal*: f(x):= block([n],if equal(n,0) then 1 else x); Until *n* is defined, the test *equal(n,0) *is undefined, so an unevaluated conditional is returned. -s On Fri, Jul 1, 2022 at 3:39 PM Me Self <vla...@gm...> wrote: > Hello everyone > > Is it possible to return a function with an if, from a block()? In a > very simple example: > > (%i1) f(x) := block([y, r, n], r:map(rhs,allroots(x)), y:if n=0 then > 1.618 else x*n)$ > (%i2) f(x+1); > (%o2) -1.0*n > (%i3) g(n) := ''%$ > (%i4) g([0, 1, 2]); > (%o4) [0, -1.0, -2.0] > > f(x) takes a function (polynomial here, for simplicity) as an argument > (see %i2) which is used, internally, to generate some numbers (a bogus > allroots() here), and I need it to return a function of n, where n > will take discrete values. As it is now, it simply evaluates n to be > false (n is just n, not 0) so it spits out the rest of the > conditional. What I want it to return is this (based off on the rest > of the example code above): > > (%i2) f(x+1); > (%o2) if n=0 then 1.618 else -1*n > > I don't want to use makelist() as that requires a numerical 4th > argument, which would mean f(x) will need an extra argument for f(x) > -- but only one is needed. > > I have tried declaring y like this inside the block(): y:'(if n=0 then > 1.618 else n*r), which returns: > > (%o2) if n=0 then 1.618 else n*r > > but when evaluated: > > (%o4) [0, r, 2*r] > > So, how can I make the block() return this: > > (%o2) f(x+1); > (%o2) if n=0 then 1.618 else n*r > > but which, when evaluated it returns: > > (%i3) g(n) := ''%$ > (%o4) g([0, 1, 2]); > (%o4) [1.618, -1.0, -2.0] > > > Regards, > Vlad > > > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > |
From: Me S. <vla...@gm...> - 2022-07-01 20:57:23
|
Hello Robert, Gunther, Stavros > The "=" operation checks for structural equality, not mathematical > equality. The symbol *n* is not equal to the number *0*, so the predicate > is false, and thus your function returns *x*. So you should use *equal*: I can confirm that equal() does work. Funny enough, another problem reared its head, but that might be for another day. Thank you for the help. Regards, Vlad |
From: Barton W. <wi...@un...> - 2022-07-01 20:54:36
|
Depending on what you want, you might consider returning a lambda form instead of an expression. The macro buildq is a good way to do this. Example: (%i27) f(x) := buildq([r : map('rhs, allroots(x))], lambda([n], if n=0 then 1.618 else r*n))$ Assign the lambda form to g: (%i28) g : f((x-7)*(x-1)); (%o28) lambda([n],if n=0 then 1.618 else [1.0,7.0]*n) (%i29) g(2022); (%o29) [2022.0,14154.0] Let us know if you have more questions. --Barton From: Gunter Königsmann via Maxima-discuss<mailto:max...@li...> Sent: Friday, July 1, 2022 3:28 PM To: max...@li...<mailto:max...@li...> Subject: Re: [Maxima-discuss] Return a funcion with an if, from block Non-NU Email I believe you can wrap a '() around your if or makelist in order to prevent a premature evaluation. Lateron you can remove that ' by the '' operator. Kind regards, Gunter. Am 1. Juli 2022 21:39:23 MESZ schrieb Me Self <vla...@gm...>: Hello everyone Is it possible to return a function with an if, from a block()? In a very simple example: (%i1) f(x) := block([y, r, n], r:map(rhs,allroots(x)), y:if n=0 then 1.618 else x*n)$ (%i2) f(x+1); (%o2) -1.0*n (%i3) g(n) := ''%$ (%i4) g([0, 1, 2]); (%o4) [0, -1.0, -2.0] f(x) takes a function (polynomial here, for simplicity) as an argument (see %i2) which is used, internally, to generate some numbers (a bogus allroots() here), and I need it to return a function of n, where n will take discrete values. As it is now, it simply evaluates n to be false (n is just n, not 0) so it spits out the rest of the conditional. What I want it to return is this (based off on the rest of the example code above): (%i2) f(x+1); (%o2) if n=0 then 1.618 else -1*n I don't want to use makelist() as that requires a numerical 4th argument, which would mean f(x) will need an extra argument for f(x) -- but only one is needed. I have tried declaring y like this inside the block(): y:'(if n=0 then 1.618 else n*r), which returns: (%o2) if n=0 then 1.618 else n*r but when evaluated: (%o4) [0, r, 2*r] So, how can I make the block() return this: (%o2) f(x+1); (%o2) if n=0 then 1.618 else n*r but which, when evaluated it returns: (%i3) g(n) := ''%$ (%o4) g([0, 1, 2]); (%o4) [1.618, -1.0, -2.0] Regards, Vlad Maxima-discuss mailing list Max...@li... https://lists.sourceforge.net/lists/listinfo/maxima-discuss<https://urldefense.com/v3/__https:/lists.sourceforge.net/lists/listinfo/maxima-discuss__;!!PvXuogZ4sRB2p-tU!G3Iwi7QcWH8_qJemsQrhzj-KBvowyOEuFKsmgzne62RnBoXAYZslzwgSNOA5Cv7ICIm4MWu_4AsebP805-EYyekbUaW6R4l3fA$> |
From: Me S. <vla...@gm...> - 2022-07-01 21:03:08
|
Hello Barton > Depending on what you want, you might consider returning a lambda form > instead of an expression. The macro buildq is a good way to do this. > > Example: > > (%i27) f(x) := buildq([r : map('rhs, allroots(x))], lambda([n], if n=0 then > 1.618 else r*n))$ > > Assign the lambda form to g: > > (%i28) g : f((x-7)*(x-1)); > (%o28) lambda([n],if n=0 then 1.618 else [1.0,7.0]*n) > > (%i29) g(2022); > (%o29) [2022.0,14154.0] This works as well, thank you. The only change was that I added [1] to allroots(), to avoid lists within lists. > Let us know if you have more questions. The client declares himself satisfied. Regards, Vlad |
From: Me S. <vla...@gm...> - 2022-07-02 13:54:12
|
Everything works, but just wanted to say two things: @Gunther That trick doesn't seem to work? If I write y:'makelist() in the block() then it does return this: (%i2) f(x+1); (%o2) makelist(if equal(k,0) then 1.618 else -1.0*k,k,0,n) but when I try to assign that to g(n) it fails, no matter if I do it directly: g(n):=f(x+1); /* (with or without '') */ or with define(). After this, g(2) or with any other number returns: makelist(if equal(k,0) then 1.618 else -1.0*k,k,0,2) I also tried using y:map('makelist, ...), but still complains. I'm probably missing something. @Barton While that does work, it looks like buildq() only allows buildq(list,expr), one expression. Unfortunately, for my case, there are more than one (but you didn't know that). Regards, Vlad |
From: Barton W. <wi...@un...> - 2022-07-02 14:54:06
|
> While that does work, it looks like buildq() only allows buildq(list,expr), one expression. Unfortunately, for my case, there are more than one (but you didn't know that). Guess: There is a way to do what you need to do with buildq. But I’d need a simple example of your input and your desired output to know for certain. It’s possible for buildq to return a list of things, if that helps: (%i2) [f,g] : buildq([p : x+1], [lambda([x], p), lambda([x], p^2)]); (%o2) [lambda([x],x+1),lambda([x],(x+1)^2)] (%i3) f(3); (%o3) 4 (%i4) g(3); (%o4) 16 |
From: Me S. <vla...@gm...> - 2022-07-02 20:35:55
|
> Guess: There is a way to do what you need to do with buildq. But I’d need a > simple example of your input and your desired output to know for certain. It might not be the simple example you're expecting, but here's the whole function: > imp(G,[a]) := block ( > [p, r, N, pf, var, y, magR, argR, magP, argP, B, n, H:float(G)], > var:listofvars(H)[1], > p:map(rhs,allroots(denom(H))), > N:length(p), > if var=s or var=z then ( > if var=s then ( > for i:1 thru N do if realpart(p[i])>0 then print("RHP found! ",p[i]) ) > else ( > for i:1 thru N do if 1/cabs(p[i])-1>1e-10 then print("Pole outside ROC! |p|=",1/cabs(p[i])) ), > /* take the denominator and divide it by the product of all the s-p[k], except the one in question */ > pf:makelist(num(H)/prod(if m=k then 1 else var-p[m],m,1,N),k,1,N), > /* the t.f. may not have a monic denominator, so divide to the coeff of the highest power */ > B:coeff(denom(H),var,length(args(denom(H)))-1), > B:if B=0 or B=0.0 then 1 else B, > r:rectform(makelist(subst(''var=p[k],pf[k]),k,1,N)), > if var=s then r:r/B else r:r/B, /* ???! */ > if var=s then ( > magR:cabs(r), > argR:carg(%i*r), /* for 's' it's -b*sin+a*cos, not a*sin+b*cos, so it's rotated */ > /* the equivalent is: exp(re(P)*t)*(re(R)*cos(im(p)*t)-im(R)*sin(im(P)*t)) */ > y:sum(exp(realpart(p[k])*t)*mag[k]*sin(imagpart(p[k])*t+arg[k]),k,1,N) ) > else ( /* var=z */ > /* h[n] is of the form: sum( r*p^n ) = 2|p|^n( Re(r)*cos(n*<p)-Im(r)*sin(n*<p) ) > to which, applying the same simplification as with 's': > = |p|^n*hypot(r)*sin(n*<p + <r*) */ > p:rectform(1/p), > r:rectform(-r*p), > magR:cabs(r), > argR:carg(%i*r), > magP:cabs(p), > argP:carg(p), > H0:ev(H,z=0), > y:map(ev,if equal(n,0) then H0 else sum(magP[k]^n*magR[k]*sin(n*argP[k]+argR[k]),k,1,N)) ), > if length(a)=1 and stringp(a[1]) then > if a[1]="residues" then > [y,r] > elseif a[1]="poles" then > [y,p] > elseif a[1]="both" then > ([y,r,p]) > else > print("Only these flags are supported: \"residues\", \"poles\", or \"both\"") > else > y ) > else > print("Use 's' for analog, or 'z' for digital.") )$ I hope the "> " will avoid wrapping but, if not, it should be easier to detect line breaks (search&replace, too). It calculates the expression for the impulse response given a transfer function in either 's', or 'z'. For 'z', be sure to use z, not z^(-1), or 1/z (it relies on it). Use it as: imp(H(s)); /* or H(z), or bla(s), or ..., returns h(t), only */ imp(G(z)); /* returns h(n), only */ imp(F(s),"residues"); /* returns residues, too */ imp(E(z),"poles"); /* returns poles, too */ imp(D(s),"both"); /* returns impulse, residues, poles */ As test cases, try these two 4th order, Bessel and Thiran: B(s):=105/(s^4+10*s^3+45*s^2+105*s+105)$ T(z):=1/(3*(z^4/42-(4*z^3)/21+(9*z^2)/14-(8*z)/7+1))$ The output is meant to be numerical, because you can analyze higher orders, too, and I don't have a big enough display for symbolic, or NASA's computers. Regards, Vlad |
From: Gunter K. <gu...@pe...> - 2022-07-06 19:46:12
|
On Samstag, 2. Juli 2022 15:54:00 CEST Me Self wrote: > Everything works, but just wanted to say two things: > > @Gunther > > That trick doesn't seem to work? If I write y:'makelist() in the > block() then it does return this: > > (%i2) f(x+1); > (%o2) makelist(if equal(k,0) then 1.618 else -1.0*k,k,0,n) > 'makelist() makes the makelist a noun. But '(makelist()) might work. The manual says: Applied to a parenthesized expression, the single quote prevents evaluation of all symbols and function calls in the expression. E.g., '(f(x)) means do not evaluate the expression f(x). 'f(x) (with the single quote applied to f instead of f(x)) means return the noun form of f applied to [x]. Kind regards, Gunter. |
From: Gunter K. <gu...@pe...> - 2022-07-07 05:25:59
|
The background of my last mail is that I interpreted the maxima manual this way and wxMaxima currently states: Maxima automatically simplifys expressions it gets as input and then tries to evaluate their value. The '() operator tells maxima that we want a whole expression to be in noun form, which means: stand here as is, and unevaluated. This is useful, for example, if one doesn't want an if() to be executed prematurely (which means: Before enough information is available in order to decide if the condition is false or true). Another example would be if a command checks if its argument contains unassigned variables too early. The ' operator can be undone by using the '' operator. => What can we do to improve the documentation of '()? |
From: Me S. <vla...@gm...> - 2022-07-07 08:39:46
|
> 'makelist() makes the makelist a noun. But '(makelist()) might work. I'm afraid it doesn't. Here's my attempt: (%i1) f(x) := block( [y, r:map(rhs, allroots(x))[1], n, z], y : '(makelist( (if equal(k, 0) then 1.618 else k*r), k, 0, n) ) )$ (%i2) f(x+1); (%o2) makelist(if equal(k,0) then 1.618 else k*r,k,0,n) (%i3) define(g(n), ''f(x+1)); (%o3) g(n):=makelist(if equal(k,0) then 1.618 else k*r,k,0,n) (%i4) map(g, [0,1,2]); (%o4) [[1.618],[1.618,r],[1.618,r,2*r]] (%i5) ev(g(n),n=2); (%o5) [1.618,r,2*r] (%i6) g(3); (%o6) [1.618,r,2*r,3*r] It seems it "forgets" to evaluate r. But, as I said, I've managed to make it work with the previous guides, see my previous post for the whole function (actually, there have been some modifications since). Regards, Vlad |
From: Barton W. <wi...@un...> - 2022-07-07 10:41:01
|
Try: (%i6) g(x) := buildq([r : first(map('rhs, allroots(x)))] , lambda([n], makelist(if equal(k, 0) then 1.618 else k*r, k, 0, n)))$ (%i7) f : g(x+1); (%o7) lambda([n],makelist(if equal(k,0) then 1.618 else k*(-1.0),k,0,n)) (%i8) f(3); (%o8) [1.618,-1.0,-2.0,-3.0] |
From: Me S. <vla...@gm...> - 2022-07-07 11:53:04
|
> Try: > > (%i6) g(x) := buildq([r : first(map('rhs, allroots(x)))] , lambda([n], > makelist(if equal(k, 0) then 1.618 else k*r, k, 0, n)))$ > > (%i7) f : g(x+1); > (%o7) lambda([n],makelist(if equal(k,0) then 1.618 else k*(-1.0),k,0,n)) > > (%i8) f(3); > (%o8) [1.618,-1.0,-2.0,-3.0] I've already said this works, but it couldn't accomodate the number of expressions inside the block. Have you seen my previous reply (where I give the full function)? At any rate, as I said, the problem has been solved, but if you think there's something missing, or that can be added, I won't mind. Regards, Vlad |
From: Stavros M. <mac...@al...> - 2022-07-07 14:31:34
|
The text below is seriously wrong in almost every possible way: - Evaluation happens *before* simplification, not after, recursively. For example, given a:3, the processing of a-1 (internally "+"(a,-1) ) proceeds as follows: - evaluate a-1 - evaluate a, return 3; simplify 3, return 3 - evaluate -1, return -1; simplify -1, return -1 - this returns "+"(3,-1) - simplify that to get 2 - What does "try" in "try to evaluate" mean? Although there are parts of Maxima which use heuristic methods where multiple approaches are "tried", evaluation is strictly algorithmic. There is no "trying". - "tells maxima that we want" -- Maxima doesn't care what we want; it does what we tell it to do. - '() has nothing to do with noun forms. - There is no such concept as having a "whole expression in noun form". - "Stand here as is" is unintelligible. - The '' operator does not "undo" the '() operator. This (and some similar language that used to be in the Maxima manual) may explain why so many of our users are confused about '() and ''(). I would recommend *removing this text entirely *until it can be rewritten by someone who understands Maxima evaluation. Where exactly does this text appear? -s On Thu, Jul 7, 2022 at 1:26 AM Gunter Königsmann via Maxima-discuss < max...@li...> wrote: > The background of my last mail is that I interpreted the maxima manual > this way and wxMaxima currently states: > > Maxima automatically simplifys expressions it gets as input and then tries > to evaluate their value. The '() operator tells maxima that we want a whole > expression to be in noun form, which means: stand here as is, and > unevaluated. > > This is useful, for example, if one doesn't want an if() to be executed > prematurely (which means: Before enough information is available in order > to decide if the condition is false or true). Another example would be if a > command checks if its argument contains unassigned variables too early. > > The ' operator can be undone by using the '' operator. > > => What can we do to improve the documentation of '()? > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > |
From: Gunter K. <gu...@pe...> - 2022-07-07 19:08:52
|
Since the last release wxMaxima has gained many new wizards, many wizards were improved and part of that was that the functionality that shows a description for the wizards that need it now show the description in a way that users will find => I would very happy if anyone could grab a Nightly Build and help me correct the wizards. When I started to try to improve them I was surprised how many didn't work. But I have no Idea if I have made things better, or just looking friendlier. Kind regards, Gunter. |
From: Stavros M. <mac...@al...> - 2022-07-07 20:37:59
|
I'm not a regular user of wxMaxima, and wasn't aware of a wizard feature in it. How do I access that feature? Where is the text about evaluation you quoted earlier found? Thanks, -s On Thu, Jul 7, 2022 at 3:08 PM Gunter Königsmann <gu...@pe...> wrote: > Since the last release wxMaxima has gained many new wizards, many wizards > were improved and part of that was that the functionality that shows a > description for the wizards that need it now show the description in a way > that users will find => I would very happy if anyone could grab a Nightly > Build and help me correct the wizards. When I started to try to improve > them I was surprised how many didn't work. But I have no Idea if I have > made things better, or just looking friendlier. > > Kind regards, > > Gunter. > |
From: Gunter K. <gu...@pe...> - 2022-07-08 06:18:55
|
I mainly have worked in the wizards that are to be found in the maxima menu and in the matrix menu. But there were two feature requests (a "build fraction" wizard, that didn't make too much sense it one could not prevent the wizard from auto-closing) and making the Greek buttons work in wizards, too, which wouldn't work with modal dialogues) that required me to basically re-write what feels like 100 other wizards... Am 7. Juli 2022 22:51:03 MESZ schrieb Marcus Menzel <fla...@gm...>: >Dear Gunter > >I use the git version from about 1 1/2 weeks ago and it is very stable, first of all. >I tried mainly the draw and plot wizard and i had no bad surprise at all. >Thank you very much for your work. >What wizards need testing the most? > >Regards >Marcus Menzel > >P.S. >I'll recompile on the weekend to the latest git version. Using sbcl and ecl. > > >Am 7. Juli 2022 21:08:28 MESZ schrieb "Gunter Königsmann via Maxima-discuss" <max...@li...>: >>Since the last release wxMaxima has gained many new wizards, many >>wizards were improved and part of that was that the functionality that >>shows a description for the wizards that need it now show the >>description in a way that users will find => I would very happy if anyone >>could grab a Nightly Build and help me correct the wizards. When I >>started to try to improve them I was surprised how many didn't work. >>But I have no Idea if I have made things better, or just looking friendlier. >> >>Kind regards, >> >> Gunter. > >-- >Viele Grüße >Marcus Menzel |