You can subscribe to this list here.
2014 |
Jan
|
Feb
(232) |
Mar
(323) |
Apr
(383) |
May
(359) |
Jun
(435) |
Jul
(252) |
Aug
(172) |
Sep
(265) |
Oct
(263) |
Nov
(350) |
Dec
(359) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2015 |
Jan
(267) |
Feb
(220) |
Mar
(311) |
Apr
(269) |
May
(388) |
Jun
(403) |
Jul
(172) |
Aug
(399) |
Sep
(364) |
Oct
(269) |
Nov
(357) |
Dec
(468) |
2016 |
Jan
(618) |
Feb
(592) |
Mar
(625) |
Apr
(516) |
May
(375) |
Jun
(155) |
Jul
(346) |
Aug
(262) |
Sep
(346) |
Oct
(291) |
Nov
(333) |
Dec
(335) |
2017 |
Jan
(436) |
Feb
(460) |
Mar
(370) |
Apr
(189) |
May
(252) |
Jun
(272) |
Jul
(286) |
Aug
(293) |
Sep
(303) |
Oct
(331) |
Nov
(346) |
Dec
(273) |
2018 |
Jan
(295) |
Feb
(343) |
Mar
(265) |
Apr
(290) |
May
(233) |
Jun
(201) |
Jul
(234) |
Aug
(125) |
Sep
(287) |
Oct
(322) |
Nov
(274) |
Dec
(293) |
2019 |
Jan
(406) |
Feb
(255) |
Mar
(418) |
Apr
(187) |
May
(247) |
Jun
(282) |
Jul
(84) |
Aug
(108) |
Sep
(175) |
Oct
(161) |
Nov
(215) |
Dec
(184) |
2020 |
Jan
(205) |
Feb
(287) |
Mar
(180) |
Apr
(285) |
May
(272) |
Jun
(266) |
Jul
(133) |
Aug
(253) |
Sep
(281) |
Oct
(346) |
Nov
(293) |
Dec
(253) |
2021 |
Jan
(218) |
Feb
(194) |
Mar
(399) |
Apr
(312) |
May
(425) |
Jun
(358) |
Jul
(160) |
Aug
(251) |
Sep
(110) |
Oct
(113) |
Nov
(257) |
Dec
(99) |
2022 |
Jan
(233) |
Feb
(184) |
Mar
(284) |
Apr
(221) |
May
(178) |
Jun
(231) |
Jul
(337) |
Aug
(264) |
Sep
(181) |
Oct
(183) |
Nov
(281) |
Dec
(406) |
2023 |
Jan
(479) |
Feb
(263) |
Mar
(278) |
Apr
(149) |
May
(186) |
Jun
(215) |
Jul
(353) |
Aug
(195) |
Sep
(232) |
Oct
(140) |
Nov
(211) |
Dec
(197) |
2024 |
Jan
(348) |
Feb
(167) |
Mar
(131) |
Apr
(222) |
May
(113) |
Jun
(136) |
Jul
(242) |
Aug
(105) |
Sep
(94) |
Oct
(237) |
Nov
(110) |
Dec
(155) |
2025 |
Jan
(372) |
Feb
(234) |
Mar
(332) |
Apr
(310) |
May
(203) |
Jun
(63) |
Jul
(156) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Raymond T. <toy...@gm...> - 2025-07-25 14:34:03
|
On 7/25/25 12:52 AM, Jaime Villate wrote: > On 25/07/25 04:52, Raymond Toy wrote: >> >> First, it seems that you've changed the background for the nav bar to >> be a fairly light gray. I find that really hard to distinguish from >> the current white background. This is a matter of taste, I guess, but >> I liked the blue from the Emacs manual because it stands out more. >> > I didn't like that blue because it got confused with the blue example > boxes. Adding an extra color, different from the blue of the examples > and the yellow of the category boxes seemed ugly, so I opted for gray. > As a compromise, I will try a darker, more bluish, gray. > Yeah, I noticed that the color was similar to the example boxes, but thought it was pretty clear that it's not an example. Something darker would be fine. The emacs manual uses a light yellowish background so there's no confusion between examples and the nav bar. I didn't want to change Maxima's existing blue for examples. > > >> Second, you are using div.header for the CSS for the nav bar. That's >> fine for texinfo 6.8, but for 7.2, that doesn't exist. I guess that's >> why I chose .nav-panel originally. I guess we need to handle both >> cases. I have texinfo 7.1 and 7.1.1 around; I'll try those out soon >> to see what CSS property is used. >> > Okay, I will copy the same style for both div.header and div.nav-panel. Checked with 7.1. It uses nav-panel too. I think nav-panel will take care of all of the versions. (There's a typo in the current manual.css. I'll fix it in a bit.) >> >> Third, you're using FreeSans for the font (with a fallback to sans >> serif) and Courier New with a fallback to monospace. Based on >> https://stackoverflow.com/questions/10277002/where-can-i-find-list-with-web-safe-fonts, >> maybe we should try to use some web-safe fonts instead. No font is >> universally available, but the links there do suggest some of the >> most common fonts available on Windows and Mac. (The list is >> outdated, I think.) I suspect Windows (presumably the most common >> users of the manual?) don't have FreeSans. >> > I hadn't paid much attention to the fonts because my intention was to > add DejaVu fonts provided by us for all users. But after some testing > I think the extra trouble of providing WOFF fonts is not worth it. The > page already looks good with Web safe fonts. "FreeSans" was already > there in manual.css; I didn't add it. It seems like a relic that is > not used anymore. I think a good list of fonts that will work fine for > the manual (and be consistent with Maxima's website) is the following: > > text: Arial, Helvetica, sans-serif > > code: "Courier New", monospace > > They work fine in Ubuntu and Windows 10. You can check in Mac and add > something else to the list (preferably at the end but before > sans-serif or monospace) > That list matches one of the suggested font stacks so I think we're set. I only have a really old version of macos around. It might not be too relevant. I'll check soon though. ​ |
From: Jaime V. <vi...@fe...> - 2025-07-25 07:52:21
|
On 25/07/25 04:52, Raymond Toy wrote: > > First, it seems that you've changed the background for the nav bar to > be a fairly light gray. I find that really hard to distinguish from > the current white background. This is a matter of taste, I guess, but > I liked the blue from the Emacs manual because it stands out more. > I didn't like that blue because it got confused with the blue example boxes. Adding an extra color, different from the blue of the examples and the yellow of the category boxes seemed ugly, so I opted for gray. As a compromise, I will try a darker, more bluish, gray. > Second, you are using div.header for the CSS for the nav bar. That's > fine for texinfo 6.8, but for 7.2, that doesn't exist. I guess that's > why I chose .nav-panel originally. I guess we need to handle both > cases. I have texinfo 7.1 and 7.1.1 around; I'll try those out soon to > see what CSS property is used. > Okay, I will copy the same style for both div.header and div.nav-panel. > > Third, you're using FreeSans for the font (with a fallback to sans > serif) and Courier New with a fallback to monospace. Based on > https://stackoverflow.com/questions/10277002/where-can-i-find-list-with-web-safe-fonts, > maybe we should try to use some web-safe fonts instead. No font is > universally available, but the links there do suggest some of the most > common fonts available on Windows and Mac. (The list is outdated, I > think.) I suspect Windows (presumably the most common users of the > manual?) don't have FreeSans. > I hadn't paid much attention to the fonts because my intention was to add DejaVu fonts provided by us for all users. But after some testing I think the extra trouble of providing WOFF fonts is not worth it. The page already looks good with Web safe fonts. "FreeSans" was already there in manual.css; I didn't add it. It seems like a relic that is not used anymore. I think a good list of fonts that will work fine for the manual (and be consistent with Maxima's website) is the following: text: Arial, Helvetica, sans-serif code: "Courier New", monospace They work fine in Ubuntu and Windows 10. You can check in Mac and add something else to the list (preferably at the end but before sans-serif or monospace) Jaime |
From: Raymond T. <toy...@gm...> - 2025-07-25 03:52:23
|
Thanks Jamie for the recent CSS changes. I have a few of questions/comments. First, it seems that you've changed the background for the nav bar to be a fairly light gray. I find that really hard to distinguish from the current white background. This is a matter of taste, I guess, but I liked the blue from the Emacs manual because it stands out more. Second, you are using div.header for the CSS for the nav bar. That's fine for texinfo 6.8, but for 7.2, that doesn't exist. I guess that's why I chose .nav-panel originally. I guess we need to handle both cases. I have texinfo 7.1 and 7.1.1 around; I'll try those out soon to see what CSS property is used. For the record, this is part of the HTML generated by texinfo 7.2: |<div class="top-level-extent" id="Top"> <div class="nav-panel"> <p> Next: <a href="Introduction-to-Maxima.html" accesskey="n" rel="next">Introduction to Maxima</a>, Previous: <a href="../dir_html/index.html" accesskey="p" rel="prev">(dir)</a>, Up: <a href="../dir_html/index.html" accesskey="u" rel="up">(dir)</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Function-and-Variable-Index.html" title="Index" rel="index">Index</a>]</p> </div> | Third, you're using FreeSans for the font (with a fallback to sans serif) and Courier New with a fallback to monospace. Based on https://stackoverflow.com/questions/10277002/where-can-i-find-list-with-web-safe-fonts, maybe we should try to use some web-safe fonts instead. No font is universally available, but the links there do suggest some of the most common fonts available on Windows and Mac. (The list is outdated, I think.) I suspect Windows (presumably the most common users of the manual?) don't have FreeSans. https://kinsta.com/blog/web-safe-fonts/#what-fonts-are-web-safe has a list of the best web-safe fonts. I don't know how true it is. They also suggest an appropriate font stack. ​ |
From: Viktor T. T. <vt...@vt...> - 2025-07-24 17:28:27
|
Dear Daniel, Indeed many (most?) of Richard's proposed changes were incorporated into ctensor years ago, though not necessarily verbatim. There are a few that remain in my "open issues" notes, because behind the change, there are deeper concerns. Richard, I believe, is inspired in part by what he has seen in the later commercial Macsyma releases, but my concern is that not everything in those releases was 100% kosher, and indeed, "old" Maxima had issues from the onset with nonsymmetric tensors as it could not manage index ordering across mixed indices for starters. (This was what led me in a slightly different direction with itensor in the early 2000's; so Maxima's itensor and Macsyma's version are cousins, one is not a descendant of the other.) Viktor On 7/23/2025 5:25 PM, Daniel Volinski via Maxima-discuss wrote: > Hi Viktor, > > I understand that Richard Gobeli suggested some modification and bug > fixes to the ctensor package > in Maxima -- GPL CAS based on DOE-MACSYMA / Patches / #96 Ctensor > patch <https://sourceforge.net/p/maxima/patches/96/>. > Have these modifications been incorporated into Maxima ctensor package? > > Thanks, > > Daniel Volinski > > > > > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss |
From: Daniel V. <dan...@ya...> - 2025-07-23 21:36:14
|
Hi Viktor, I understand that Richard Gobeli suggested some modification and bug fixes to the ctensor packagein Maxima -- GPL CAS based on DOE-MACSYMA / Patches / #96 Ctensor patch.Have these modifications been incorporated into Maxima ctensor package? Thanks, Daniel Volinski |
From: Jaime V. <vi...@fe...> - 2025-07-23 12:12:15
|
On 22/07/25 14:50, kvutza--- via Maxima-discuss wrote: > file doc/man/ru/maxima.1.in of maxima-5.47.0 contains its descriptory > text in the windows-1251 encoding, while my Linux computer is set to > UTF-8. As a result, the respective man page is unreadable on my comp. > It gets corrected when I recode it to UTF-8 via: > recode windows-1251..UTF8 maxima.1.in Done. Thanks for you contribution. Jaime |
From: Andrey G. G. <A.G...@in...> - 2025-07-23 07:05:23
|
On Tue, 22 Jul 2025, kvutza--- via Maxima-discuss wrote: > file doc/man/ru/maxima.1.in of maxima-5.47.0 contains its descriptory > text in the windows-1251 encoding, while my Linux computer is set to > UTF-8. I think all texts in stone-age 8-bit encodings, including this one, should be recoded to UTF-8. Andrey |
From: Vince Blay-M. <v.b...@gm...> - 2025-07-22 22:47:14
|
Thanx for this tip/ tutorial Michel! Shoutout to everyone else who have been contributing thus. I have seen some great initiatives in recent times that are going to make the user experience much better. Thanks to all active contributors. You are all appreciated🙌🏿 This e-mail (including any attachment) is for the sole use of the intended recipient(s) and may contain confidential and/or privileged information. If you are not an intended recipient, please notify the sender immediately and delete or destroy the original and any copy. On Mon, Jul 21, 2025, 5:36 a.m. Michel Talon <ta...@lp...> wrote: > > Le 19/07/2025 à 18:36, Robert Dodier a écrit : > > Setting breakpoints isn't straightforward, from what I know. Here's my > clumsy workaround. > > > Like Robert i have not found the lisp debugger of gcl usable. I think the > first step to debug something in maxima is to use a maxima compiled with > sbcl. Then to set breakpoints at entry of a function one can use the sbcl > extension of the trace function such as: > > :lisp (trace 'some-function' :break true) > > If one wants to single step the program one must first recompile it > setting some > > (declaim (optimize (debug 3))) > > at its beginning. The at the breakpoint one can say first: start which > starts tracing and the commands like step to single step, etc. One then > gets something very close to what gdb allows. > > Here are some extracts from sbcl documentation: (describe 'trace) > > :BREAK Form > :BREAK-AFTER Form > :BREAK-ALL Form > If specified, and Form evaluates to true, then the debugger is > invoked > at the start of the function, at the end of the function, or > both, > according to the respective option. > > and for the debugger, printing *DEBUG-HELP-STRING* > > Inspecting frames: > BACKTRACE [n] shows n frames going down the stack. > LIST-LOCALS, L lists locals in current frame. > PRINT, P displays function call for current frame. > SOURCE [n] displays frame's source form with n levels of enclosing > forms. > > Stepping: > START Selects the CONTINUE restart if one exists and starts > single-stepping. Single stepping affects only code compiled with > under high DEBUG optimization quality. See User Manual for details. > STEP Steps into the current form. > NEXT Steps over the current form. > OUT Stops stepping temporarily, but resumes it when the topmost frame > that > was stepped into returns. > STOP Stops single-stepping. > > > > > -- > Michel Talon > > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > |
From: El O. De M. <obs...@gm...> - 2025-07-22 18:41:44
|
Yes, in wxMaxima That works. Thanks for the tip El mar, 22 jul 2025 a las 13:20, Barton Willis (<wi...@un...>) escribió: > Are you using wxMaxima? If so, trying to look in the configuration menu > for "Worksheet." Under that, look for 'Interaction" and uncheck "Offer > answer for questions known from previous runs." > > If that works, please let us know. > > --Barton > ------------------------------ > *From:* El Observatorio De Matemática <obs...@gm...> > *Sent:* Tuesday, July 22, 2025 10:56 AM > *To:* <max...@li...> < > max...@li...> > *Subject:* [Maxima-discuss] About the behaviour of read > > Caution: Non-NU Email > > Hi > > I have used the command read many times and have noticed something like > data persistence. > You can try once the following attempted tic, tac, toe implementation, > which uses read. > --> /* Tic-Tac-Toe game implementation */ > > /* Initialize the game state */ > /*grid: matrix(["", "", ""], ["", "", ""], ["", "", ""])$*/ > grid:genmatrix(lambda([x,y],""),3,3)$ > player: X$ > --> /* Function to make a move */ > make_move(my_row,my_col) := > block(if grid[my_row][my_col] = "" then > (grid[my_row][my_col]: player, > player: if player = X then O else X) > else > (print("Invalid move, try again.")))$ > --> diagonalp(grid):=is(unique(makelist(grid[i,i],i,3))#[""] and > length(unique(makelist(grid[i,i],i,3)))=1)$ > --> antidiagonalp(grid):=is(unique(makelist(grid[i,4-i],i,3))#[""] and > length(unique(makelist(grid[i,4-i],i,3)))=1)$ > --> rowp(grid):=block( > L:[], > for i from 1 thru 3 do if unique(flatten(args(row(grid,i))))#[""] and > length(unique(flatten(args(row(grid,i)))))=1 then > push(row(grid,i),L), > if L#[] then true > )$ > --> columnp(grid):=block( > L:[], > for i from 1 thru 3 do if unique(flatten(args(col(grid,i))))#[""] and > length(unique(flatten(args(col(grid,i)))))=1 then > push(col(grid,i),L), > if L#[] then true > )$ > --> check_winner(grid):=is(diagonalp(grid) or antidiagonalp(grid) or > rowp(grid) or columnp(grid))$ > --> /* Game loop */ > tictactoe():=block( > runner:true, > while runner do ( > print(grid), > [my_row,my_col]: read("Enter row and col (1-3) as a list: "), > make_move(my_row,my_col), > winner: check_winner(grid), > if winner then ( > print("Player ", if player = X then O else X, " wins!"), > runner:false), > if not member("", flatten(args(grid))) then ( > print("It's a draw!"), > runner:false > ) > ) > )$ > --> reset_game() := ( > grid: genmatrix(lambda([x,y],""),3,3), > player: X > )$ > --> tictactoe(); > > After one play, if another game is initialized, a "suggestion" is shown > for the player, namely the initial for the previous play. I mean, Is it > good that while using read some "options" appear? > > There is another way to see the persistence behaviour. > I could use vscode copilot in agent mode to ask it to do changes in .wxm > files. One file in which I ask for changes was one with the code above, but > after a play of tic, tac, toe additional lines were added, like: > /* [wxMaxima: input start ] */ > columnp(grid):=block( > L:[], > for i from 1 thru 3 do if unique(flatten(args(col(grid,i))))#[""] and > length(unique(flatten(args(col(grid,i)))))=1 then > push(col(grid,i),L), > if L#[] then true > )$ > /* [wxMaxima: input end ] */ > > or > > /* [wxMaxima: question start ] */ > <math><st>Enter column (1-3): </st><st> </st></math> > /* [wxMaxima: question end ] */ > /* [wxMaxima: answer start ] */ > 2;3;3;2;1; > /* [wxMaxima: answer end ] */ > > These lines persisted in vscode even if the wxmaxima code was returned to > an unevaluated form (all cells not evaluated) and saved. > > If this kind of behavior is wanted, let me know > > best regards > > -- > https://github.com/Observatorio-de-Matematica > <https://urldefense.com/v3/__https://github.com/Observatorio-de-Matematica__;!!PvXuogZ4sRB2p-tU!AueoHCgwSkiFcHLdq05Vw_EiLoIwcQKMtHZt04UcdfhWQQL_Q7VwYsSKWTZRE5zMiVIGqAvDx4-T42SqB9FBb07QLQ$> > |
From: Barton W. <wi...@un...> - 2025-07-22 18:21:01
|
Are you using wxMaxima? If so, trying to look in the configuration menu for "Worksheet." Under that, look for 'Interaction" and uncheck "Offer answer for questions known from previous runs." If that works, please let us know. --Barton ________________________________ From: El Observatorio De Matemática <obs...@gm...> Sent: Tuesday, July 22, 2025 10:56 AM To: <max...@li...> <max...@li...> Subject: [Maxima-discuss] About the behaviour of read Caution: Non-NU Email Hi I have used the command read many times and have noticed something like data persistence. You can try once the following attempted tic, tac, toe implementation, which uses read. --> /* Tic-Tac-Toe game implementation */ /* Initialize the game state */ /*grid: matrix(["", "", ""], ["", "", ""], ["", "", ""])$*/ grid:genmatrix(lambda([x,y],""),3,3)$ player: X$ --> /* Function to make a move */ make_move(my_row,my_col) := block(if grid[my_row][my_col] = "" then (grid[my_row][my_col]: player, player: if player = X then O else X) else (print("Invalid move, try again.")))$ --> diagonalp(grid):=is(unique(makelist(grid[i,i],i,3))#[""] and length(unique(makelist(grid[i,i],i,3)))=1)$ --> antidiagonalp(grid):=is(unique(makelist(grid[i,4-i],i,3))#[""] and length(unique(makelist(grid[i,4-i],i,3)))=1)$ --> rowp(grid):=block( L:[], for i from 1 thru 3 do if unique(flatten(args(row(grid,i))))#[""] and length(unique(flatten(args(row(grid,i)))))=1 then push(row(grid,i),L), if L#[] then true )$ --> columnp(grid):=block( L:[], for i from 1 thru 3 do if unique(flatten(args(col(grid,i))))#[""] and length(unique(flatten(args(col(grid,i)))))=1 then push(col(grid,i),L), if L#[] then true )$ --> check_winner(grid):=is(diagonalp(grid) or antidiagonalp(grid) or rowp(grid) or columnp(grid))$ --> /* Game loop */ tictactoe():=block( runner:true, while runner do ( print(grid), [my_row,my_col]: read("Enter row and col (1-3) as a list: "), make_move(my_row,my_col), winner: check_winner(grid), if winner then ( print("Player ", if player = X then O else X, " wins!"), runner:false), if not member("", flatten(args(grid))) then ( print("It's a draw!"), runner:false ) ) )$ --> reset_game() := ( grid: genmatrix(lambda([x,y],""),3,3), player: X )$ --> tictactoe(); After one play, if another game is initialized, a "suggestion" is shown for the player, namely the initial for the previous play. I mean, Is it good that while using read some "options" appear? There is another way to see the persistence behaviour. I could use vscode copilot in agent mode to ask it to do changes in .wxm files. One file in which I ask for changes was one with the code above, but after a play of tic, tac, toe additional lines were added, like: /* [wxMaxima: input start ] */ columnp(grid):=block( L:[], for i from 1 thru 3 do if unique(flatten(args(col(grid,i))))#[""] and length(unique(flatten(args(col(grid,i)))))=1 then push(col(grid,i),L), if L#[] then true )$ /* [wxMaxima: input end ] */ or /* [wxMaxima: question start ] */ <math><st>Enter column (1-3): </st><st> </st></math> /* [wxMaxima: question end ] */ /* [wxMaxima: answer start ] */ 2;3;3;2;1; /* [wxMaxima: answer end ] */ These lines persisted in vscode even if the wxmaxima code was returned to an unevaluated form (all cells not evaluated) and saved. If this kind of behavior is wanted, let me know best regards -- https://github.com/Observatorio-de-Matematica<https://urldefense.com/v3/__https://github.com/Observatorio-de-Matematica__;!!PvXuogZ4sRB2p-tU!AueoHCgwSkiFcHLdq05Vw_EiLoIwcQKMtHZt04UcdfhWQQL_Q7VwYsSKWTZRE5zMiVIGqAvDx4-T42SqB9FBb07QLQ$> |
From: El O. De M. <obs...@gm...> - 2025-07-22 15:56:38
|
Hi I have used the command read many times and have noticed something like data persistence. You can try once the following attempted tic, tac, toe implementation, which uses read. --> /* Tic-Tac-Toe game implementation */ /* Initialize the game state */ /*grid: matrix(["", "", ""], ["", "", ""], ["", "", ""])$*/ grid:genmatrix(lambda([x,y],""),3,3)$ player: X$ --> /* Function to make a move */ make_move(my_row,my_col) := block(if grid[my_row][my_col] = "" then (grid[my_row][my_col]: player, player: if player = X then O else X) else (print("Invalid move, try again.")))$ --> diagonalp(grid):=is(unique(makelist(grid[i,i],i,3))#[""] and length(unique(makelist(grid[i,i],i,3)))=1)$ --> antidiagonalp(grid):=is(unique(makelist(grid[i,4-i],i,3))#[""] and length(unique(makelist(grid[i,4-i],i,3)))=1)$ --> rowp(grid):=block( L:[], for i from 1 thru 3 do if unique(flatten(args(row(grid,i))))#[""] and length(unique(flatten(args(row(grid,i)))))=1 then push(row(grid,i),L), if L#[] then true )$ --> columnp(grid):=block( L:[], for i from 1 thru 3 do if unique(flatten(args(col(grid,i))))#[""] and length(unique(flatten(args(col(grid,i)))))=1 then push(col(grid,i),L), if L#[] then true )$ --> check_winner(grid):=is(diagonalp(grid) or antidiagonalp(grid) or rowp(grid) or columnp(grid))$ --> /* Game loop */ tictactoe():=block( runner:true, while runner do ( print(grid), [my_row,my_col]: read("Enter row and col (1-3) as a list: "), make_move(my_row,my_col), winner: check_winner(grid), if winner then ( print("Player ", if player = X then O else X, " wins!"), runner:false), if not member("", flatten(args(grid))) then ( print("It's a draw!"), runner:false ) ) )$ --> reset_game() := ( grid: genmatrix(lambda([x,y],""),3,3), player: X )$ --> tictactoe(); After one play, if another game is initialized, a "suggestion" is shown for the player, namely the initial for the previous play. I mean, Is it good that while using read some "options" appear? There is another way to see the persistence behaviour. I could use vscode copilot in agent mode to ask it to do changes in .wxm files. One file in which I ask for changes was one with the code above, but after a play of tic, tac, toe additional lines were added, like: /* [wxMaxima: input start ] */ columnp(grid):=block( L:[], for i from 1 thru 3 do if unique(flatten(args(col(grid,i))))#[""] and length(unique(flatten(args(col(grid,i)))))=1 then push(col(grid,i),L), if L#[] then true )$ /* [wxMaxima: input end ] */ or /* [wxMaxima: question start ] */ <math><st>Enter column (1-3): </st><st> </st></math> /* [wxMaxima: question end ] */ /* [wxMaxima: answer start ] */ 2;3;3;2;1; /* [wxMaxima: answer end ] */ These lines persisted in vscode even if the wxmaxima code was returned to an unevaluated form (all cells not evaluated) and saved. If this kind of behavior is wanted, let me know best regards -- https://github.com/Observatorio-de-Matematica |
From: Jaime V. <vi...@fe...> - 2025-07-22 14:05:00
|
On 22/07/25 14:52, Raymond Toy wrote: > Either the current head, you don't need to do that. I used > --css-ref=manual.css to get a link to the CSS. I think the inline CSS > comes from texinfo for its default styling. I think you you need to > override the styles using !important. Yes, the inline CSS is a makeinfo default. I tried many thinks to get rid of it but I couldn't. Some years ago a makeinfo developer suggested to add an option --css-omit-defaults, but it was rejected. In any case, that default CSS is very minimal and we can override it in our manual.css. I have just done that with commit [a1a98c]. I will then work on providing our won web fonts to give us more control on how the manual looks. Regards, Jaime |
From: Raymond T. <toy...@gm...> - 2025-07-22 13:52:22
|
Either the current head, you don't need to do that. I used --css-ref=manual.css to get a link to the CSS. I think the inline CSS comes from texinfo for its default styling. I think you you need to override the styles using !important. Ray On Tue, Jul 22, 2025, 4:24 AM Jaime Villate <vi...@fe...> wrote: > On 19/07/25 23:44, Raymond Toy wrote: > > Yeah, I just recently noticed that the CSS is just inlined. I'm working on > this now. But you can just paste this in doc/info/texi2html.init.in: > > <link rel="stylesheet" type="text/css" href="manual.css"> > > as the second line. > > If I add that line to doc/info/texi2html.init.in, now I get the link to > manual.css twice. Without that line I get already get that link and only > once. > > Then remove this: > > > --css-include=@abs_srcdir@/manual.css > > from TEXIOPT in doc/info/build_html.sh.in. > > That doesn't work for me. I still get an in-lined CSS tag in all .html > files, which conflicts with manual.css > > Regards, > > Jaime > |
From: <kv...@us...> - 2025-07-22 13:50:23
|
Hi, file doc/man/ru/maxima.1.in of maxima-5.47.0 contains its descriptory text in the windows-1251 encoding, while my Linux computer is set to UTF-8. As a result, the respective man page is unreadable on my comp. It gets corrected when I recode it to UTF-8 via: recode windows-1251..UTF8 maxima.1.in I do not use this man file, thus it is not important for me. I'm just wondering whether it is intentionally in a non-UTF encoding. Best, M. |
From: Jaime V. <vi...@fe...> - 2025-07-22 11:25:02
|
On 19/07/25 23:44, Raymond Toy wrote: > > Yeah, I just recently noticed that the CSS is just inlined. I'm > working on this now. But you can just paste this in > doc/info/texi2html.init.in: > > |<link rel="stylesheet" type="text/css" href="manual.css"> | > > as the second line. > If I add that line to doc/info/texi2html.init.in, now I get the link to manual.css twice. Without that line I get already get that link and only once. > Then remove this: > > |--css-include=@abs_srcdir@/manual.css | > > from |TEXIOPT| in doc/info/build_html.sh.in. > That doesn't work for me. I still get an in-lined CSS tag in all .html files, which conflicts with manual.css Regards, Jaime |
From: Stavros M. <mac...@gm...> - 2025-07-21 14:32:25
|
Agree with Dodier. One convention is to use names like _foo for "hidden" variables like match variables that the user isn't intended to use or to see. I also use _foo for local (helper) functions in load files which the user isn't intended to call. Those typically have function-like names, e.g., _refactor_inner, whereas match variables tend to be named for their type, e.g. _positive_integer1 , so there's little likelihood of confusion. On Sun, Jul 20, 2025 at 1:28 PM Robert Dodier <rob...@gm...> wrote: > Hi Eduardo, couple of comments about the question you posted. > > The conventional way to avoid name collisions with match variables is > to give the match variables names which are unlikely to occur > otherwise. E.g. aa, bb, cc, xx, yy, zz. > > It's not clear what is the larger goal towards which you are working. > If you are trying to denest radicals, take a look at sqrtdenest. If > you are trying to solve equations containing radicals, take a look at > to_poly_solve. If it's something else, maybe you can say more about > what you want to do. > > best > > Robert > > > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > |
From: Michel T. <ta...@lp...> - 2025-07-21 10:30:02
|
Le 19/07/2025 à 18:36, Robert Dodier a écrit : > Setting breakpoints isn't straightforward, from what I know. Here's my > clumsy workaround. Like Robert i have not found the lisp debugger of gcl usable. I think the first step to debug something in maxima is to use a maxima compiled with sbcl. Then to set breakpoints at entry of a function one can use the sbcl extension of the trace function such as: :lisp (trace 'some-function' :break true) If one wants to single step the program one must first recompile it setting some (declaim (optimize (debug 3))) at its beginning. The at the breakpoint one can say first: start which starts tracing and the commands like step to single step, etc. One then gets something very close to what gdb allows. Here are some extracts from sbcl documentation: (describe 'trace) :BREAK Form :BREAK-AFTER Form :BREAK-ALL Form If specified, and Form evaluates to true, then the debugger is invoked at the start of the function, at the end of the function, or both, according to the respective option. and for the debugger, printing *DEBUG-HELP-STRING* Inspecting frames: BACKTRACE [n] shows n frames going down the stack. LIST-LOCALS, L lists locals in current frame. PRINT, P displays function call for current frame. SOURCE [n] displays frame's source form with n levels of enclosing forms. Stepping: START Selects the CONTINUE restart if one exists and starts single-stepping. Single stepping affects only code compiled with under high DEBUG optimization quality. See User Manual for details. STEP Steps into the current form. NEXT Steps over the current form. OUT Stops stepping temporarily, but resumes it when the topmost frame that was stepped into returns. STOP Stops single-stepping. -- Michel Talon |
From: Raymond T. <toy...@gm...> - 2025-07-20 21:18:02
|
On 7/20/25 9:39 AM, Raymond Toy wrote: > On 7/20/25 8:36 AM, Richard Fateman wrote: > >> works for me in 5.46.0. >> -li[2](x) > Clearly, it's a change since then. For future reference, see https://sourceforge.net/p/maxima/bugs/4581/. The Risch integrator is used and something weird happens substituting in the limits for the definite integral. I think. >> >> On Sun, Jul 20, 2025 at 11:25 AM Raymond Toy <toy...@gm...> >> wrote: >> >> I was running update_examples in MathFunctions.texi.m4. One of >> the examples is |integrate ((log (1 - t)) / t, t, 0, x);|. The >> current manual says it's |-li[2](x)|, if we assume |x>0|. >> >> I can't get this answer at all. But |diff(-li[2](x),x)| is the >> integrand. >> >> The best I can get is for 0 < x < 1 the integral is >> >> |(%i27) integrate ((log (1 - t)) / t, t, 0, x); Is x positive, >> negative or zero? pos; Is x - 1 positive, negative or zero? neg; >> 2 1 log(1 - x) (2 log(x) - 2 log(x - 1)) + log (1 - x) - 2 li (- >> ─────) 2 x - 1 (%o27) >> ─────────────────────────────────────────────────────────────────── >> 2 2 %pi + ──── 6 | >> >> However, >> >> |(%i36) factor(logcontract(ratsimp(diff(%o27,x)))); log(1 - x) >> (%o36) ────────── x | >> >> This has the wrong sign. >> >> I guess this is a new bug. >> >> ​ >> _______________________________________________ >> Maxima-discuss mailing list >> Max...@li... >> https://lists.sourceforge.net/lists/listinfo/maxima-discuss >> > ​ ​ |
From: Raymond T. <toy...@gm...> - 2025-07-20 21:15:38
|
On 7/20/25 10:33 AM, Robert Dodier wrote: > On Sun, Jul 20, 2025 at 7:25 AM Raymond Toy<toy...@gm...> wrote: >> In Integration.texi.m4, we have this block: >> >> @c ===beg=== >> @c f_1 (a) := integrate (x^3, x, 1, a); >> @c ev (f_1 (7), nouns); >> @c /* Note parentheses around integrate(...) in f_2 */ f_2 (a) := ''(integrate (x^3, x, 1, a)); >> @c f_2 (7); >> @c ===end=== > Probably a better approach is to just bring the comment out and make > it part of the text. I think that's better in general anyway. In this > case something like: > > Note parentheses around @code{integrate(...)} in code{f_2}. > > @c ===beg=== > [code, sans comment, goes here] > @c ===end=== Yes, that's a perfectly reasonable solution. > I suppose the use of quote-quote is questionable -- it is easy to > misunderstand what it does -- but that's apart from the formatting > problem. Yeah, I'm not generally trying to fix any of those things. I'm just basically running update_examples over the whole file and doing some minor tweaks on assumptions and such, if needed. ​ |
From: Raymond T. <toy...@gm...> - 2025-07-20 21:03:37
|
On 7/20/25 12:07 PM, Robert Dodier wrote: > On Sun, Jul 20, 2025 at 10:57 AM Raymond Toy<toy...@gm...> wrote: > >> (%i1) load(distrib)$ >> (%i2) pdf_bernoulli(1,p); >> (%o2) if equal(p, 0) then 0 elseif equal(p, 1) then 1 else p > The definition of pdf_bernoulli goes through some gyrations to avoid > 0^0, filtering out special cases -- > > pdf_bernoulli(x,p) := > if maybe(p >= 0 and p <= 1) = false > then error("pdf_bernoulli: p must be a probability") > else > if x < 0 or x > 1 or x-floor(x) > 0 then 0 > elseif equal (p, 0) then kron_delta(x,0) > elseif equal (p, 1) then kron_delta(x,1) > else p^x*(1-p)^(1-x) $ Yeah. I think this is all ok. I'm going to update the examples to show what we currently do. git blame says you made the changes in last few lines there around 2-3 years ago. ​ |
From: Robert D. <rob...@gm...> - 2025-07-20 19:07:28
|
On Sun, Jul 20, 2025 at 10:57 AM Raymond Toy <toy...@gm...> wrote: > (%i1) load(distrib)$ > (%i2) pdf_bernoulli(1,p); > (%o2) if equal(p, 0) then 0 elseif equal(p, 1) then 1 else p The definition of pdf_bernoulli goes through some gyrations to avoid 0^0, filtering out special cases -- pdf_bernoulli(x,p) := if maybe(p >= 0 and p <= 1) = false then error("pdf_bernoulli: p must be a probability") else if x < 0 or x > 1 or x-floor(x) > 0 then 0 elseif equal (p, 0) then kron_delta(x,0) elseif equal (p, 1) then kron_delta(x,1) else p^x*(1-p)^(1-x) $ and the result you mentioned is just what we get from plugging x = 1 into that. I don't see a simple way to collapse the conditional result, or to avoid it to begin with, so I'm inclined to leave it as it stands, and update the manual accordingly. But if someone can suggest a way to rephrase it which has the same behavior in special cases, that would be terrific. best Robert |
From: Eduardo O. <edu...@gm...> - 2025-07-20 18:19:22
|
Hi Robert! I have lots of students who don't know how to start from this eq : (x-2)^2+(y+3)^2=4; and "solve(eq,y)" it _by hand_ to obtain these two solutions [y = -sqrt(4*x-x^2)-3, y = sqrt(4*x-x^2)-3] in a series of steps that are easy to understand and to debug... I have a nice way to do the steps in the blackboard/whiteboard, including the bifurcation, and I wanted to be sure that all the kinds of steps that I use - we only see a handful of examples - would be easy to translate to Maxima. And apparently this is good enough: display2d : false$ matchdeclare(x, all)$ defmatch(isx2__, x^2)$ isx2_ (o) := block([x], isx2__(o))$ isx2 (o) := not atom(isx2_(o))$ isx2_body(o) := if isx2(o) then part(isx2_(o),1,2)$ sqrtp_ (o) := if isx2(o) then isx2_body(o) else sqrt(o)$ sqrtn_ (o) := if isx2(o) then -isx2_body(o) else sqrt(o)$ sqrtp (o) := map('sqrtp_,o)$ sqrtn (o) := map('sqrtn_,o)$ (x-2)^2+(y+3)^2=4; % - (x-2)^2; /* (y+3)^2 = 4-(x-2)^2 */ sqrtp(%); /* y+3 = sqrt(4-(x-2)^2) */ % - 3; /* y = sqrt(4-(x-2)^2)-3 */ (x-2)^2+(y+3)^2=4; % - (x-2)^2; /* (y+3)^2 = 4-(x-2)^2 */ sqrtn(%); /* -y-3 = sqrt(4-(x-2)^2) */ - %; /* y+3 = -sqrt(4-(x-2)^2) */ % - 3; /* y = -sqrt(4-(x-2)^2)-3 */ So: it's a precalculus thing... Cheers, Eduardo On Sun, 20 Jul 2025 at 14:27, Robert Dodier <rob...@gm...> wrote: > Hi Eduardo, couple of comments about the question you posted. > > The conventional way to avoid name collisions with match variables is > to give the match variables names which are unlikely to occur > otherwise. E.g. aa, bb, cc, xx, yy, zz. > > It's not clear what is the larger goal towards which you are working. > If you are trying to denest radicals, take a look at sqrtdenest. If > you are trying to solve equations containing radicals, take a look at > to_poly_solve. If it's something else, maybe you can say more about > what you want to do. > > best > > Robert > |
From: Raymond T. <toy...@gm...> - 2025-07-20 17:52:10
|
The current version of distrib says: |(%i1) load(distrib)$ (%i2) pdf_bernoulli(1,p); (%o2) if equal(p, 0) then 0 elseif equal(p, 1) then 1 else p | This is right, but the manual says it should just return |p|. What should the answer be? ​ |
From: Robert D. <rob...@gm...> - 2025-07-20 17:33:43
|
On Sun, Jul 20, 2025 at 7:25 AM Raymond Toy <toy...@gm...> wrote: > > In Integration.texi.m4, we have this block: > > @c ===beg=== > @c f_1 (a) := integrate (x^3, x, 1, a); > @c ev (f_1 (7), nouns); > @c /* Note parentheses around integrate(...) in f_2 */ f_2 (a) := ''(integrate (x^3, x, 1, a)); > @c f_2 (7); > @c ===end=== Probably a better approach is to just bring the comment out and make it part of the text. I think that's better in general anyway. In this case something like: Note parentheses around @code{integrate(...)} in code{f_2}. @c ===beg=== [code, sans comment, goes here] @c ===end=== I suppose the use of quote-quote is questionable -- it is easy to misunderstand what it does -- but that's apart from the formatting problem. Hope this helps Robert |
From: Robert D. <rob...@gm...> - 2025-07-20 17:27:54
|
Hi Eduardo, couple of comments about the question you posted. The conventional way to avoid name collisions with match variables is to give the match variables names which are unlikely to occur otherwise. E.g. aa, bb, cc, xx, yy, zz. It's not clear what is the larger goal towards which you are working. If you are trying to denest radicals, take a look at sqrtdenest. If you are trying to solve equations containing radicals, take a look at to_poly_solve. If it's something else, maybe you can say more about what you want to do. best Robert |