You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(67) |
Jul
(61) |
Aug
(49) |
Sep
(43) |
Oct
(59) |
Nov
(24) |
Dec
(18) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(34) |
Feb
(35) |
Mar
(72) |
Apr
(42) |
May
(46) |
Jun
(15) |
Jul
(64) |
Aug
(62) |
Sep
(22) |
Oct
(41) |
Nov
(57) |
Dec
(56) |
| 2004 |
Jan
(48) |
Feb
(47) |
Mar
(33) |
Apr
(39) |
May
(6) |
Jun
(17) |
Jul
(19) |
Aug
(10) |
Sep
(14) |
Oct
(74) |
Nov
(80) |
Dec
(22) |
| 2005 |
Jan
(43) |
Feb
(33) |
Mar
(52) |
Apr
(74) |
May
(32) |
Jun
(58) |
Jul
(18) |
Aug
(41) |
Sep
(71) |
Oct
(28) |
Nov
(65) |
Dec
(68) |
| 2006 |
Jan
(54) |
Feb
(37) |
Mar
(82) |
Apr
(211) |
May
(69) |
Jun
(75) |
Jul
(279) |
Aug
(139) |
Sep
(135) |
Oct
(58) |
Nov
(81) |
Dec
(78) |
| 2007 |
Jan
(141) |
Feb
(134) |
Mar
(65) |
Apr
(49) |
May
(61) |
Jun
(90) |
Jul
(72) |
Aug
(53) |
Sep
(86) |
Oct
(61) |
Nov
(62) |
Dec
(101) |
| 2008 |
Jan
(100) |
Feb
(66) |
Mar
(76) |
Apr
(95) |
May
(77) |
Jun
(93) |
Jul
(103) |
Aug
(76) |
Sep
(42) |
Oct
(55) |
Nov
(44) |
Dec
(75) |
| 2009 |
Jan
(103) |
Feb
(105) |
Mar
(121) |
Apr
(59) |
May
(103) |
Jun
(82) |
Jul
(67) |
Aug
(76) |
Sep
(85) |
Oct
(75) |
Nov
(181) |
Dec
(133) |
| 2010 |
Jan
(107) |
Feb
(116) |
Mar
(145) |
Apr
(89) |
May
(138) |
Jun
(85) |
Jul
(82) |
Aug
(111) |
Sep
(70) |
Oct
(83) |
Nov
(60) |
Dec
(16) |
| 2011 |
Jan
(61) |
Feb
(16) |
Mar
(52) |
Apr
(41) |
May
(34) |
Jun
(41) |
Jul
(57) |
Aug
(73) |
Sep
(21) |
Oct
(45) |
Nov
(50) |
Dec
(28) |
| 2012 |
Jan
(70) |
Feb
(36) |
Mar
(71) |
Apr
(29) |
May
(48) |
Jun
(61) |
Jul
(44) |
Aug
(54) |
Sep
(20) |
Oct
(28) |
Nov
(41) |
Dec
(137) |
| 2013 |
Jan
(62) |
Feb
(55) |
Mar
(31) |
Apr
(23) |
May
(54) |
Jun
(54) |
Jul
(90) |
Aug
(46) |
Sep
(38) |
Oct
(60) |
Nov
(92) |
Dec
(17) |
| 2014 |
Jan
(62) |
Feb
(35) |
Mar
(72) |
Apr
(30) |
May
(97) |
Jun
(81) |
Jul
(63) |
Aug
(64) |
Sep
(28) |
Oct
(45) |
Nov
(48) |
Dec
(109) |
| 2015 |
Jan
(106) |
Feb
(36) |
Mar
(65) |
Apr
(63) |
May
(95) |
Jun
(56) |
Jul
(48) |
Aug
(55) |
Sep
(100) |
Oct
(57) |
Nov
(33) |
Dec
(46) |
| 2016 |
Jan
(76) |
Feb
(53) |
Mar
(88) |
Apr
(79) |
May
(62) |
Jun
(65) |
Jul
(37) |
Aug
(23) |
Sep
(108) |
Oct
(68) |
Nov
(66) |
Dec
(47) |
| 2017 |
Jan
(55) |
Feb
(11) |
Mar
(30) |
Apr
(19) |
May
(14) |
Jun
(21) |
Jul
(30) |
Aug
(48) |
Sep
(39) |
Oct
(30) |
Nov
(75) |
Dec
(28) |
| 2018 |
Jan
(70) |
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
| 2019 |
Jan
(19) |
Feb
(61) |
Mar
(14) |
Apr
(7) |
May
(5) |
Jun
(17) |
Jul
(5) |
Aug
(7) |
Sep
(11) |
Oct
(2) |
Nov
(17) |
Dec
(9) |
| 2020 |
Jan
(8) |
Feb
(8) |
Mar
(12) |
Apr
(17) |
May
(2) |
Jun
(10) |
Jul
(24) |
Aug
(6) |
Sep
(16) |
Oct
(3) |
Nov
(10) |
Dec
(40) |
| 2021 |
Jan
(53) |
Feb
(18) |
Mar
(20) |
Apr
(11) |
May
(23) |
Jun
(37) |
Jul
(28) |
Aug
(32) |
Sep
(105) |
Oct
(81) |
Nov
(109) |
Dec
(41) |
| 2022 |
Jan
(139) |
Feb
(82) |
Mar
(96) |
Apr
(51) |
May
(58) |
Jun
(104) |
Jul
(32) |
Aug
(61) |
Sep
(37) |
Oct
(25) |
Nov
(94) |
Dec
(81) |
| 2023 |
Jan
(113) |
Feb
(77) |
Mar
(98) |
Apr
(43) |
May
(48) |
Jun
(28) |
Jul
(72) |
Aug
(40) |
Sep
(44) |
Oct
(61) |
Nov
(70) |
Dec
(94) |
| 2024 |
Jan
(101) |
Feb
(21) |
Mar
(66) |
Apr
(88) |
May
(55) |
Jun
(109) |
Jul
(57) |
Aug
(103) |
Sep
(50) |
Oct
(75) |
Nov
(132) |
Dec
(69) |
| 2025 |
Jan
(216) |
Feb
(161) |
Mar
(85) |
Apr
(50) |
May
(80) |
Jun
(51) |
Jul
(49) |
Aug
(27) |
Sep
(30) |
Oct
(84) |
Nov
(54) |
Dec
(100) |
| 2026 |
Jan
(61) |
Feb
(59) |
Mar
(85) |
Apr
(220) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Robert D. <rob...@us...> - 2026-04-28 04:46:23
|
For the record, I also think the DWIM inferred subscript stuff is terrible. That said, I think (1) is better than what we have now (and also preferable to (2)).
---
**[bugs:#4725] tex-array creates invalid double subscript**
**Status:** open
**Group:** None
**Created:** Mon Apr 27, 2026 07:22 PM UTC by Leo Butler
**Last Updated:** Mon Apr 27, 2026 07:22 PM UTC
**Owner:** Leo Butler
`tex-array` is used to implement the (terrible, in my opinion) dwim subscripting and to typeset array arguments as subscripts. This produces invalid TeX:
```
tex(a_1[4]);
$$a_{1}_{4}$$
```
or
```
tex(a1[4]);
$$a_{1}_{4}$$
```
There are at least two alternatives:
1. Wrap the output of `tex-array` in brace brackets. That would produce valid TeX like `{{a_{1}}_{4}}` in both cases.
2. Add a switch to disable dwim subscripting. This would also produce valid TeX (like `{\it a\_1}_{4}` or `{\it a1}_{4}`)
Attached is a patch that implements both (but only does 1. when dwim subscripting is active).
This bug was first observed in [bug #4696](https://sourceforge.net/p/maxima/bugs/4696/).
---
Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Leo B. <l_b...@us...> - 2026-04-27 19:22:26
|
Patch. Attachments: - [0001-tex-array-braces.patch](https://sourceforge.net/p/maxima/bugs/_discuss/thread/add48bab23/8f11/attachment/0001-tex-array-braces.patch) (1.4 kB; text/x-patch) --- **[bugs:#4725] tex-array creates invalid double subscript** **Status:** open **Group:** None **Created:** Mon Apr 27, 2026 07:22 PM UTC by Leo Butler **Last Updated:** Mon Apr 27, 2026 07:22 PM UTC **Owner:** Leo Butler `tex-array` is used to implement the (terrible, in my opinion) dwim subscripting and to typeset array arguments as subscripts. This produces invalid TeX: ``` tex(a_1[4]); $$a_{1}_{4}$$ ``` or ``` tex(a1[4]); $$a_{1}_{4}$$ ``` There are at least two alternatives: 1. Wrap the output of `tex-array` in brace brackets. That would produce valid TeX like `{{a_{1}}_{4}}` in both cases. 2. Add a switch to disable dwim subscripting. This would also produce valid TeX (like `{\it a\_1}_{4}` or `{\it a1}_{4}`) Attached is a patch that implements both (but only does 1. when dwim subscripting is active). This bug was first observed in [bug #4696](https://sourceforge.net/p/maxima/bugs/4696/). --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Leo B. <l_b...@us...> - 2026-04-27 19:22:07
|
---
**[bugs:#4725] tex-array creates invalid double subscript**
**Status:** open
**Group:** None
**Created:** Mon Apr 27, 2026 07:22 PM UTC by Leo Butler
**Last Updated:** Mon Apr 27, 2026 07:22 PM UTC
**Owner:** Leo Butler
`tex-array` is used to implement the (terrible, in my opinion) dwim subscripting and to typeset array arguments as subscripts. This produces invalid TeX:
```
tex(a_1[4]);
$$a_{1}_{4}$$
```
or
```
tex(a1[4]);
$$a_{1}_{4}$$
```
There are at least two alternatives:
1. Wrap the output of `tex-array` in brace brackets. That would produce valid TeX like `{{a_{1}}_{4}}` in both cases.
2. Add a switch to disable dwim subscripting. This would also produce valid TeX (like `{\it a\_1}_{4}` or `{\it a1}_{4}`)
Attached is a patch that implements both (but only does 1. when dwim subscripting is active).
This bug was first observed in [bug #4696](https://sourceforge.net/p/maxima/bugs/4696/).
---
Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Robert D. <rob...@us...> - 2026-04-27 15:15:22
|
About declaring `.` and `sconcat` as n-ary, I seem to recall that Maxima's notion of n-ary-ness is equivalent to being associative in addition to being defined for arbitrary lists of arguments (maybe this coincides with a conventional understanding of the term, I dunno). I guess that implies such functions are defined for the no-arguments case, although I don't know if all n-ary functions behave that way in Maxima.
Sounds like `.` (with suitable flags) and `sconcat` have those properties; given that, it makes sense to me to declare them `nary` as well. The same considerations apply to any other such functions, I think.
---
**[bugs:#4724] xreduce with init arg and declared nary function**
**Status:** open
**Group:** None
**Created:** Sat Apr 25, 2026 05:46 PM UTC by Kris Katterjohn
**Last Updated:** Sun Apr 26, 2026 07:29 PM UTC
**Owner:** Kris Katterjohn
Users can `declare` functions to be nary; below I'll call these "just-`declare`d-nary". `xreduce` also handles certain nary cases specially (like `and`, `or`, `append`, ...); below I'll call these "special-cased-nary". (I'm too lazy to come up with less silly names.)
`xreduce` does not pass a given init arg to just-`declare`d-nary functions, but it does for special-cased-nary functions.
In the examples below `foo` is not nary, `fnary` is just-`declare`d-nary, and (the arbitrarily chosen) `and` is special-cased-nary.
~~~
(%i1) declare (fnary, nary)$
(%i2) xreduce (foo, [], 0); /* correct: the 0 is just returned */
(%o2) 0
(%i3) xreduce (fnary, [], 0); /* wrong: should be fnary(0) */
(%o3) fnary()
(%i4) xreduce ("and", [], 0); /* correct: this is from "and"(0) */
(%o4) 0
(%i5) xreduce (foo, [1, 2, 3], 0); /* correct */
(%o5) foo(foo(foo(0,1),2),3)
(%i6) xreduce (fnary, [1, 2, 3], 0); /* wrong: should be fnary(0,1,2,3) */
(%o6) fnary(1,2,3)
(%i7) xreduce ("and", [1, 2, 3], 0); /* correct */
(%o7) 0 and 1 and 2 and 3
~~~
Regarding the unary cases `%o3` and `%o4`, compare to:
~~~
(%i8) xreduce (fnary, [0]); /* this one is correct */
(%o8) fnary(0)
(%i9) xreduce ("and", [0]); /* again correct: this is also from "and"(0) */
(%o9) 0
~~~
While running the test suite (with share tests), it doesn't seem that `xreduce` is ever called with both an init arg and a just-`declare`d-nary function.
A quick look suggests that this bug was introduced in commit [5557be].
Patch below. I tried to keep with the style of the surrounding code.
~~~
diff --git a/src/nset.lisp b/src/nset.lisp
index d9970b8ed..05ed8f2d9 100644
--- a/src/nset.lisp
+++ b/src/nset.lisp
@@ -1171,8 +1171,10 @@
(funcall opfn s)))
(op-props
- ($apply f ($listify s)))
-
+ (setq s (require-list-or-set s '$xreduce))
+ (unless (eq init 'no-init)
+ (setq s (cons init s)))
+ ($apply f (cons '(mlist) s)))
(t
(rl-reduce f ($listify s) nil init '$xreduce)))))
~~~
I'll commit this patch along with some tests if there are no objections.
---
Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Viktor T. <vt...@us...> - 2026-04-27 03:31:19
|
- **status**: open --> wont-fix - **Comment**: Marking this as "won't fix" as the proposed fix interferes with ISHOW's primary function on ASCII displays. The real issue is how a) $TEX promotes trailing digits to subscripts (which, for itensor, is not an issue, really) and b) how ISHOW's output, then, is misprocessed with only the last of several indices being processed by $TEX in this manner (which produces the inconsistent appearance.) But it is not because ISHOW is doing anything it shouldn't (it produces correct output on ASCII terminals, which is its intended behavior) but how front-ends post-process that output. --- **[bugs:#4696] tex and lurkmathml typeset itensor output incorrectly** **Status:** wont-fix **Group:** None **Labels:** tex mathml lurkmathml itensor **Created:** Wed Apr 01, 2026 06:04 PM UTC by Leo Butler **Last Updated:** Fri Apr 24, 2026 01:58 PM UTC **Owner:** Leo Butler **Attachments:** - [itensor.lisp.diff](https://sourceforge.net/p/maxima/bugs/4696/attachment/itensor.lisp.diff) (612 Bytes; text/x-patch) In `hodge.dem`, the input line: ``` ishow(canform(hodge(%))) ``` produces the output (I print the Lisp sexp, because it is otherwise hard to see that `%1 %2 %3 %4` is single symbol): ``` ((MTIMES SIMP) ((RAT SIMP) 1 6) ((MEXPT SIMP) $LEVI_CIVITA #:|$%1 %2 %3 %4|) (($G ARRAY) #:|$%1 %102|) ((|$a| ARRAY) #:|$%2 %3 %4|)) ``` It seems clear that `4` and `102` are **not** subscripts. But both `tex` and `mathml` treat them as such: ``` (mfuncall '$mathml '((MTIMES SIMP) ((RAT SIMP) 1 6) ((MEXPT SIMP) $LEVI_CIVITA #:|$%1 %2 %3 %4|) (($G ARRAY) #:|$%1 %102|) ((|$a| ARRAY) #:|$%2 %3 %4|))) <math xmlns="http://www.w3.org/1998/Math/MathML"> <mfrac><mrow><msub><mrow><mi>g</mi> </mrow><mrow> <msub><mi>%1 %</mi> <mn>102</mn></msub> </mrow></msub> <mspace width="0.16666667em"/><msub><mrow><mi>A</mi> </mrow><mrow> <msub><mi>%2 %3 %</mi> <mn>4</mn></msub> </mrow></msub> <mspace width="0.16666667em"/><msup><mrow><mi>levi_civita</mi> </mrow> <mrow> <msub><mi>%1 %2 %3 %</mi> <mn>4</mn></msub> </mrow></msup> </mrow> <mrow> <mn>6</mn> </mrow></mfrac> </math> ``` and ``` (mfuncall '$tex (caddr +)) $${{g_{{\it \%1 \%}_{102}}\,A_{{\it \%2 \%3 \%}_{4}}\,{\it levi\_civita}^{ {\it \%1 \%2 \%3 \%}_{4}}}\over{6}}$$ ``` We see that both the `4` and `102` are treated as subscripts, which seems wrong. I am inclined to think that the `itensor` output is wrong and instead of constructing a symbol like `#:|$%1 %102|`, it would be better to add a space at the end to prevent subscripting. Patch attached. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Robert D. <rob...@us...> - 2026-04-27 02:13:13
|
- **status**: open --> closed
- **Comment**:
Fixed by commit [ b83d81f ].
---
**[bugs:#4711] Pretty-printer slightly incorrect output for 'product\(...\)**
**Status:** closed
**Group:** None
**Labels:** display2d product
**Created:** Tue Apr 14, 2026 12:55 AM UTC by Robert Dodier
**Last Updated:** Tue Apr 14, 2026 12:55 AM UTC
**Owner:** nobody
(1) `'product(...)` within `box` shows that one of the horizontal placement values is incorrect, as shown by the `box` outline not joining up. There's an off-by-one error somewhere, I guess.
```
(%i15) box ('product (blurf (bazquux, mumble[urgh]), urgh, 1000, 1000 + 'length (mumble)));
╔════════════════════════════════════════════════╗
║ length(mumble) + 1000 ║
║─┬───┬─ ║
║ │ │ ║
(%o15) ║ │ │ blurf(bazquux, mumble )║
║ │ │ urgh ║
║ urgh = 1000 ║
╚════════════════════════════════════════════════╝
```
(2) Probably would be better to center the product symbol under the stuff above and over the stuff below.
---
Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Stavros M. <mac...@us...> - 2026-04-26 19:29:07
|
Exactly. Is there any particular reason that **.** and **sconcat** aren't declared nary? In the case of **.**, it seems particularly important both because of **dotident** and **dotassoc**.
---
**[bugs:#4724] xreduce with init arg and declared nary function**
**Status:** open
**Group:** None
**Created:** Sat Apr 25, 2026 05:46 PM UTC by Kris Katterjohn
**Last Updated:** Sun Apr 26, 2026 01:17 AM UTC
**Owner:** Kris Katterjohn
Users can `declare` functions to be nary; below I'll call these "just-`declare`d-nary". `xreduce` also handles certain nary cases specially (like `and`, `or`, `append`, ...); below I'll call these "special-cased-nary". (I'm too lazy to come up with less silly names.)
`xreduce` does not pass a given init arg to just-`declare`d-nary functions, but it does for special-cased-nary functions.
In the examples below `foo` is not nary, `fnary` is just-`declare`d-nary, and (the arbitrarily chosen) `and` is special-cased-nary.
~~~
(%i1) declare (fnary, nary)$
(%i2) xreduce (foo, [], 0); /* correct: the 0 is just returned */
(%o2) 0
(%i3) xreduce (fnary, [], 0); /* wrong: should be fnary(0) */
(%o3) fnary()
(%i4) xreduce ("and", [], 0); /* correct: this is from "and"(0) */
(%o4) 0
(%i5) xreduce (foo, [1, 2, 3], 0); /* correct */
(%o5) foo(foo(foo(0,1),2),3)
(%i6) xreduce (fnary, [1, 2, 3], 0); /* wrong: should be fnary(0,1,2,3) */
(%o6) fnary(1,2,3)
(%i7) xreduce ("and", [1, 2, 3], 0); /* correct */
(%o7) 0 and 1 and 2 and 3
~~~
Regarding the unary cases `%o3` and `%o4`, compare to:
~~~
(%i8) xreduce (fnary, [0]); /* this one is correct */
(%o8) fnary(0)
(%i9) xreduce ("and", [0]); /* again correct: this is also from "and"(0) */
(%o9) 0
~~~
While running the test suite (with share tests), it doesn't seem that `xreduce` is ever called with both an init arg and a just-`declare`d-nary function.
A quick look suggests that this bug was introduced in commit [5557be].
Patch below. I tried to keep with the style of the surrounding code.
~~~
diff --git a/src/nset.lisp b/src/nset.lisp
index d9970b8ed..05ed8f2d9 100644
--- a/src/nset.lisp
+++ b/src/nset.lisp
@@ -1171,8 +1171,10 @@
(funcall opfn s)))
(op-props
- ($apply f ($listify s)))
-
+ (setq s (require-list-or-set s '$xreduce))
+ (unless (eq init 'no-init)
+ (setq s (cons init s)))
+ ($apply f (cons '(mlist) s)))
(t
(rl-reduce f ($listify s) nil init '$xreduce)))))
~~~
I'll commit this patch along with some tests if there are no objections.
---
Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Kris K. <kj...@us...> - 2026-04-26 01:17:44
|
Hi Stavros.
I think I might be missing what you're really trying to get at.
I think the results of all of your examples are expected, given that `xreduce` is defined and documented to behave like `lreduce` when given a function without the `nary` property. This includes your `xreduce` examples with `"."` since (as you point out) it doesn't currently have the `nary` property.
Are you asking if we should give more nary functions the `nary` property?
---
**[bugs:#4724] xreduce with init arg and declared nary function**
**Status:** open
**Group:** None
**Created:** Sat Apr 25, 2026 05:46 PM UTC by Kris Katterjohn
**Last Updated:** Sat Apr 25, 2026 09:15 PM UTC
**Owner:** Kris Katterjohn
Users can `declare` functions to be nary; below I'll call these "just-`declare`d-nary". `xreduce` also handles certain nary cases specially (like `and`, `or`, `append`, ...); below I'll call these "special-cased-nary". (I'm too lazy to come up with less silly names.)
`xreduce` does not pass a given init arg to just-`declare`d-nary functions, but it does for special-cased-nary functions.
In the examples below `foo` is not nary, `fnary` is just-`declare`d-nary, and (the arbitrarily chosen) `and` is special-cased-nary.
~~~
(%i1) declare (fnary, nary)$
(%i2) xreduce (foo, [], 0); /* correct: the 0 is just returned */
(%o2) 0
(%i3) xreduce (fnary, [], 0); /* wrong: should be fnary(0) */
(%o3) fnary()
(%i4) xreduce ("and", [], 0); /* correct: this is from "and"(0) */
(%o4) 0
(%i5) xreduce (foo, [1, 2, 3], 0); /* correct */
(%o5) foo(foo(foo(0,1),2),3)
(%i6) xreduce (fnary, [1, 2, 3], 0); /* wrong: should be fnary(0,1,2,3) */
(%o6) fnary(1,2,3)
(%i7) xreduce ("and", [1, 2, 3], 0); /* correct */
(%o7) 0 and 1 and 2 and 3
~~~
Regarding the unary cases `%o3` and `%o4`, compare to:
~~~
(%i8) xreduce (fnary, [0]); /* this one is correct */
(%o8) fnary(0)
(%i9) xreduce ("and", [0]); /* again correct: this is also from "and"(0) */
(%o9) 0
~~~
While running the test suite (with share tests), it doesn't seem that `xreduce` is ever called with both an init arg and a just-`declare`d-nary function.
A quick look suggests that this bug was introduced in commit [5557be].
Patch below. I tried to keep with the style of the surrounding code.
~~~
diff --git a/src/nset.lisp b/src/nset.lisp
index d9970b8ed..05ed8f2d9 100644
--- a/src/nset.lisp
+++ b/src/nset.lisp
@@ -1171,8 +1171,10 @@
(funcall opfn s)))
(op-props
- ($apply f ($listify s)))
-
+ (setq s (require-list-or-set s '$xreduce))
+ (unless (eq init 'no-init)
+ (setq s (cons init s)))
+ ($apply f (cons '(mlist) s)))
(t
(rl-reduce f ($listify s) nil init '$xreduce)))))
~~~
I'll commit this patch along with some tests if there are no objections.
---
Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Stavros M. <mac...@us...> - 2026-04-25 21:15:35
|
Kris, thanks for bringing this up. Here are some more edge cases with **xreduce**:
There seem to be some nary functions which aren't declared **nary**, and therefore aren't called with zero arguments:
~~~
sconcat() => ""
xreduce('sconcat,[]) => error
...
"."() => 1
xreduce(".",[]) => error
~~~
The base case of "." depends on **dotident**:
~~~
dotident: 'mydotident$
"."() => mydotident
~~~
Fortunately, "." does the right thing if called as nary even with **dotassoc:false**:
~~~
"."(a,b,c) => a.b.c
dotassoc:false$
"."(a,b,c) => a.(b.c)
~~~
but that isn't consistent with xreduce, which associates to the left:
~~~
xreduce(".",[a,b,c]) => (a.b).c
~~~
So should **xreduce(".", ...)** act like the nary form of **.**, or like **ldreduce** (its usual behavior)?
---
**[bugs:#4724] xreduce with init arg and declared nary function**
**Status:** open
**Group:** None
**Created:** Sat Apr 25, 2026 05:46 PM UTC by Kris Katterjohn
**Last Updated:** Sat Apr 25, 2026 07:14 PM UTC
**Owner:** Kris Katterjohn
Users can `declare` functions to be nary; below I'll call these "just-`declare`d-nary". `xreduce` also handles certain nary cases specially (like `and`, `or`, `append`, ...); below I'll call these "special-cased-nary". (I'm too lazy to come up with less silly names.)
`xreduce` does not pass a given init arg to just-`declare`d-nary functions, but it does for special-cased-nary functions.
In the examples below `foo` is not nary, `fnary` is just-`declare`d-nary, and (the arbitrarily chosen) `and` is special-cased-nary.
~~~
(%i1) declare (fnary, nary)$
(%i2) xreduce (foo, [], 0); /* correct: the 0 is just returned */
(%o2) 0
(%i3) xreduce (fnary, [], 0); /* wrong: should be fnary(0) */
(%o3) fnary()
(%i4) xreduce ("and", [], 0); /* correct: this is from "and"(0) */
(%o4) 0
(%i5) xreduce (foo, [1, 2, 3], 0); /* correct */
(%o5) foo(foo(foo(0,1),2),3)
(%i6) xreduce (fnary, [1, 2, 3], 0); /* wrong: should be fnary(0,1,2,3) */
(%o6) fnary(1,2,3)
(%i7) xreduce ("and", [1, 2, 3], 0); /* correct */
(%o7) 0 and 1 and 2 and 3
~~~
Regarding the unary cases `%o3` and `%o4`, compare to:
~~~
(%i8) xreduce (fnary, [0]); /* this one is correct */
(%o8) fnary(0)
(%i9) xreduce ("and", [0]); /* again correct: this is also from "and"(0) */
(%o9) 0
~~~
While running the test suite (with share tests), it doesn't seem that `xreduce` is ever called with both an init arg and a just-`declare`d-nary function.
A quick look suggests that this bug was introduced in commit [5557be].
Patch below. I tried to keep with the style of the surrounding code.
~~~
diff --git a/src/nset.lisp b/src/nset.lisp
index d9970b8ed..05ed8f2d9 100644
--- a/src/nset.lisp
+++ b/src/nset.lisp
@@ -1171,8 +1171,10 @@
(funcall opfn s)))
(op-props
- ($apply f ($listify s)))
-
+ (setq s (require-list-or-set s '$xreduce))
+ (unless (eq init 'no-init)
+ (setq s (cons init s)))
+ ($apply f (cons '(mlist) s)))
(t
(rl-reduce f ($listify s) nil init '$xreduce)))))
~~~
I'll commit this patch along with some tests if there are no objections.
---
Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Kris K. <kj...@us...> - 2026-04-25 19:14:34
|
Thanks Robert. I already have a patch that includes tests for the others as well, but it (like my patch above) appears to be slightly mangled in the "code view" here in the posts. Maybe something I'm doing wrong. I was going to come back later today to try to figure out why before posting, but I'll just go ahead and post it anyway.
This covers `lreduce`, `rreduce`, `xreduce`, and `tree_reduce`, for all of the cases of empty/nonempty lists and with/without init args.
~~~
diff --git a/tests/rtestnset.mac b/tests/rtestnset.mac
index 72c63730d..ae283b19a 100644
--- a/tests/rtestnset.mac
+++ b/tests/rtestnset.mac
@@ -2004,3 +2004,174 @@ true;
is (S1 = apply(op(S1), args(S1)));
true;
+/* Tests related to bug #4724 */
+
+/* In the tests below:
+ *
+ * * foo is not nary
+ * * fnary is declare'd nary
+ * * "and" is nary and handled specially by xreduce
+ */
+
+(kill (foo, fnary),
+ declare (fnary, nary),
+ 0)$
+0$
+
+/* Empty list and no init arg */
+
+errcatch (lreduce (foo, []))$
+[]$
+
+errcatch (lreduce (fnary, []))$
+[]$
+
+errcatch (lreduce ("and", []))$
+[]$
+
+errcatch (rreduce (foo, []))$
+[]$
+
+errcatch (rreduce (fnary, []))$
+[]$
+
+errcatch (rreduce ("and", []))$
+[]$
+
+errcatch (xreduce (foo, []))$
+[]$
+
+xreduce (fnary, [])$
+fnary ()$
+
+xreduce ("and", [])$
+true$
+
+errcatch (tree_reduce (foo, []))$
+[]$
+
+errcatch (tree_reduce (fnary, []))$
+[]$
+
+errcatch (tree_reduce ("and", []))$
+[]$
+
+/* Empty list and init arg */
+
+lreduce (foo, [], 13)$
+13$
+
+lreduce (fnary, [], 13)$
+13$
+
+lreduce ("and", [], 13)$
+13$
+
+rreduce (foo, [], 13)$
+13$
+
+rreduce (fnary, [], 13)$
+13$
+
+rreduce ("and", [], 13)$
+13$
+
+xreduce (foo, [], 13)$
+13$
+
+xreduce (fnary, [], 13)$
+fnary (13)$
+
+xreduce ("and", [], 13)$
+13$
+
+tree_reduce (foo, [], 13)$
+13$
+
+tree_reduce (fnary, [], 13)$
+13$
+
+tree_reduce ("and", [], 13)$
+13$
+
+/* Nonempty list and no init arg */
+
+lreduce (foo, [1, 2, 3, 4])$
+foo (foo (foo (1, 2), 3), 4)$
+
+lreduce (fnary, [1, 2, 3, 4])$
+fnary (1, 2, 3, 4)$
+
+lreduce ("and", [1, 2, 3, 4])$
+1 and 2 and 3 and 4$
+
+rreduce (foo, [1, 2, 3, 4])$
+foo (1, foo (2, foo (3, 4)))$
+
+rreduce (fnary, [1, 2, 3, 4])$
+fnary (1, 2, 3, 4)$
+
+rreduce ("and", [1, 2, 3, 4])$
+1 and 2 and 3 and 4$
+
+xreduce (foo, [1, 2, 3, 4])$
+foo (foo (foo (1, 2), 3), 4)$
+
+xreduce (fnary, [1, 2, 3, 4])$
+fnary (1, 2, 3, 4)$
+
+xreduce ("and", [1, 2, 3, 4])$
+1 and 2 and 3 and 4$
+
+tree_reduce (foo, [1, 2, 3, 4])$
+foo(foo (1, 2), foo (3, 4))$
+
+tree_reduce (fnary, [1, 2, 3, 4])$
+fnary (1, 2, 3, 4)$
+
+tree_reduce ("and", [1, 2, 3, 4])$
+1 and 2 and 3 and 4$
+
+/* Nonempty list and init arg */
+
+lreduce (foo, [1, 2, 3, 4], 13)$
+foo (foo (foo (foo (13, 1), 2), 3), 4)$
+
+lreduce (fnary, [1, 2, 3, 4], 13)$
+fnary (13, 1, 2, 3, 4)$
+
+lreduce ("and", [1, 2, 3, 4], 13)$
+13 and 1 and 2 and 3 and 4$
+
+rreduce (foo, [1, 2, 3, 4], 13)$
+foo (1, foo (2, foo (3, foo (4, 13))))$
+
+rreduce (fnary, [1, 2, 3, 4], 13)$
+fnary (1, 2, 3, 4, 13)$
+
+rreduce ("and", [1, 2, 3, 4], 13)$
+1 and 2 and 3 and 4 and 13$
+
+xreduce (foo, [1, 2, 3, 4], 13)$
+foo (foo (foo (foo (13, 1), 2), 3), 4)$
+
+xreduce (fnary, [1, 2, 3, 4], 13)$
+fnary (13, 1, 2, 3, 4)$
+
+xreduce ("and", [1, 2, 3, 4], 13)$
+13 and 1 and 2 and 3 and 4$
+
+tree_reduce (foo, [1, 2, 3, 4], 13)$
+foo(foo (foo (13, 1), foo (2, 3)), 4)$
+
+tree_reduce (fnary, [1, 2, 3, 4], 13)$
+fnary (13, 1, 2, 3, 4)$
+
+tree_reduce ("and", [1, 2, 3, 4], 13)$
+13 and 1 and 2 and 3 and 4$
+
+(kill (fnary), 0)$
+0$
+
+/* End of tests related to bug #4724 */
+
~~~
---
**[bugs:#4724] xreduce with init arg and declared nary function**
**Status:** open
**Group:** None
**Created:** Sat Apr 25, 2026 05:46 PM UTC by Kris Katterjohn
**Last Updated:** Sat Apr 25, 2026 06:40 PM UTC
**Owner:** Kris Katterjohn
Users can `declare` functions to be nary; below I'll call these "just-`declare`d-nary". `xreduce` also handles certain nary cases specially (like `and`, `or`, `append`, ...); below I'll call these "special-cased-nary". (I'm too lazy to come up with less silly names.)
`xreduce` does not pass a given init arg to just-`declare`d-nary functions, but it does for special-cased-nary functions.
In the examples below `foo` is not nary, `fnary` is just-`declare`d-nary, and (the arbitrarily chosen) `and` is special-cased-nary.
~~~
(%i1) declare (fnary, nary)$
(%i2) xreduce (foo, [], 0); /* correct: the 0 is just returned */
(%o2) 0
(%i3) xreduce (fnary, [], 0); /* wrong: should be fnary(0) */
(%o3) fnary()
(%i4) xreduce ("and", [], 0); /* correct: this is from "and"(0) */
(%o4) 0
(%i5) xreduce (foo, [1, 2, 3], 0); /* correct */
(%o5) foo(foo(foo(0,1),2),3)
(%i6) xreduce (fnary, [1, 2, 3], 0); /* wrong: should be fnary(0,1,2,3) */
(%o6) fnary(1,2,3)
(%i7) xreduce ("and", [1, 2, 3], 0); /* correct */
(%o7) 0 and 1 and 2 and 3
~~~
Regarding the unary cases `%o3` and `%o4`, compare to:
~~~
(%i8) xreduce (fnary, [0]); /* this one is correct */
(%o8) fnary(0)
(%i9) xreduce ("and", [0]); /* again correct: this is also from "and"(0) */
(%o9) 0
~~~
While running the test suite (with share tests), it doesn't seem that `xreduce` is ever called with both an init arg and a just-`declare`d-nary function.
A quick look suggests that this bug was introduced in commit [5557be].
Patch below. I tried to keep with the style of the surrounding code.
~~~
diff --git a/src/nset.lisp b/src/nset.lisp
index d9970b8ed..05ed8f2d9 100644
--- a/src/nset.lisp
+++ b/src/nset.lisp
@@ -1171,8 +1171,10 @@
(funcall opfn s)))
(op-props
- ($apply f ($listify s)))
-
+ (setq s (require-list-or-set s '$xreduce))
+ (unless (eq init 'no-init)
+ (setq s (cons init s)))
+ ($apply f (cons '(mlist) s)))
(t
(rl-reduce f ($listify s) nil init '$xreduce)))))
~~~
I'll commit this patch along with some tests if there are no objections.
---
Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Robert D. <rob...@us...> - 2026-04-25 18:40:32
|
Agreed that user-defined and built-in operators should act the same.
I see that `lreduce`, `rreduce`, and `tree_reduce` also take an initial value as an argument. Maybe while we're at it, we can ensure that those have the same behavior as `xreduce`.
---
**[bugs:#4724] xreduce with init arg and declared nary function**
**Status:** open
**Group:** None
**Created:** Sat Apr 25, 2026 05:46 PM UTC by Kris Katterjohn
**Last Updated:** Sat Apr 25, 2026 05:46 PM UTC
**Owner:** Kris Katterjohn
Users can `declare` functions to be nary; below I'll call these "just-`declare`d-nary". `xreduce` also handles certain nary cases specially (like `and`, `or`, `append`, ...); below I'll call these "special-cased-nary". (I'm too lazy to come up with less silly names.)
`xreduce` does not pass a given init arg to just-`declare`d-nary functions, but it does for special-cased-nary functions.
In the examples below `foo` is not nary, `fnary` is just-`declare`d-nary, and (the arbitrarily chosen) `and` is special-cased-nary.
~~~
(%i1) declare (fnary, nary)$
(%i2) xreduce (foo, [], 0); /* correct: the 0 is just returned */
(%o2) 0
(%i3) xreduce (fnary, [], 0); /* wrong: should be fnary(0) */
(%o3) fnary()
(%i4) xreduce ("and", [], 0); /* correct: this is from "and"(0) */
(%o4) 0
(%i5) xreduce (foo, [1, 2, 3], 0); /* correct */
(%o5) foo(foo(foo(0,1),2),3)
(%i6) xreduce (fnary, [1, 2, 3], 0); /* wrong: should be fnary(0,1,2,3) */
(%o6) fnary(1,2,3)
(%i7) xreduce ("and", [1, 2, 3], 0); /* correct */
(%o7) 0 and 1 and 2 and 3
~~~
Regarding the unary cases `%o3` and `%o4`, compare to:
~~~
(%i8) xreduce (fnary, [0]); /* this one is correct */
(%o8) fnary(0)
(%i9) xreduce ("and", [0]); /* again correct: this is also from "and"(0) */
(%o9) 0
~~~
While running the test suite (with share tests), it doesn't seem that `xreduce` is ever called with both an init arg and a just-`declare`d-nary function.
A quick look suggests that this bug was introduced in commit [5557be].
Patch below. I tried to keep with the style of the surrounding code.
~~~
diff --git a/src/nset.lisp b/src/nset.lisp
index d9970b8ed..05ed8f2d9 100644
--- a/src/nset.lisp
+++ b/src/nset.lisp
@@ -1171,8 +1171,10 @@
(funcall opfn s)))
(op-props
- ($apply f ($listify s)))
-
+ (setq s (require-list-or-set s '$xreduce))
+ (unless (eq init 'no-init)
+ (setq s (cons init s)))
+ ($apply f (cons '(mlist) s)))
(t
(rl-reduce f ($listify s) nil init '$xreduce)))))
~~~
I'll commit this patch along with some tests if there are no objections.
---
Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Kris K. <kj...@us...> - 2026-04-25 17:46:18
|
---
**[bugs:#4724] xreduce with init arg and declared nary function**
**Status:** open
**Group:** None
**Created:** Sat Apr 25, 2026 05:46 PM UTC by Kris Katterjohn
**Last Updated:** Sat Apr 25, 2026 05:46 PM UTC
**Owner:** Kris Katterjohn
Users can `declare` functions to be nary; below I'll call these "just-`declare`d-nary". `xreduce` also handles certain nary cases specially (like `and`, `or`, `append`, ...); below I'll call these "special-cased-nary". (I'm too lazy to come up with less silly names.)
`xreduce` does not pass a given init arg to just-`declare`d-nary functions, but it does for special-cased-nary functions.
In the examples below `foo` is not nary, `fnary` is just-`declare`d-nary, and (the arbitrarily chosen) `and` is special-cased-nary.
~~~
(%i1) declare (fnary, nary)$
(%i2) xreduce (foo, [], 0); /* correct: the 0 is just returned */
(%o2) 0
(%i3) xreduce (fnary, [], 0); /* wrong: should be fnary(0) */
(%o3) fnary()
(%i4) xreduce ("and", [], 0); /* correct: this is from "and"(0) */
(%o4) 0
(%i5) xreduce (foo, [1, 2, 3], 0); /* correct */
(%o5) foo(foo(foo(0,1),2),3)
(%i6) xreduce (fnary, [1, 2, 3], 0); /* wrong: should be fnary(0,1,2,3) */
(%o6) fnary(1,2,3)
(%i7) xreduce ("and", [1, 2, 3], 0); /* correct */
(%o7) 0 and 1 and 2 and 3
~~~
Regarding the unary cases `%o3` and `%o4`, compare to:
~~~
(%i8) xreduce (fnary, [0]); /* this one is correct */
(%o8) fnary(0)
(%i9) xreduce ("and", [0]); /* again correct: this is also from "and"(0) */
(%o9) 0
~~~
While running the test suite (with share tests), it doesn't seem that `xreduce` is ever called with both an init arg and a just-`declare`d-nary function.
A quick look suggests that this bug was introduced in commit [5557be].
Patch below. I tried to keep with the style of the surrounding code.
~~~
diff --git a/src/nset.lisp b/src/nset.lisp
index d9970b8ed..05ed8f2d9 100644
--- a/src/nset.lisp
+++ b/src/nset.lisp
@@ -1171,8 +1171,10 @@
(funcall opfn s)))
(op-props
- ($apply f ($listify s)))
-
+ (setq s (require-list-or-set s '$xreduce))
+ (unless (eq init 'no-init)
+ (setq s (cons init s)))
+ ($apply f (cons '(mlist) s)))
(t
(rl-reduce f ($listify s) nil init '$xreduce)))))
~~~
I'll commit this patch along with some tests if there are no objections.
---
Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Raymond T. <rt...@us...> - 2026-04-24 20:23:07
|
Not familiar with the discussion thing, but if it's not a bug, why not just use the mailing list? I think there are far more readers on the list than users who will look at bug reports.
---
**[bugs:#4723] NOT a bug but discuss : how to get maxima to auto express in all real form**
**Status:** open
**Group:** None
**Created:** Fri Apr 24, 2026 03:25 PM UTC by dan hayes
**Last Updated:** Fri Apr 24, 2026 07:31 PM UTC
**Owner:** nobody
something wrong with that source forge discuss says i do not have permission to post in any forums so i can only place this discussion request in bugs section. Anyway
WxMaxima version: 26.01.0_MSW
Using wxWidgets version: wxWidgets 3.2.9
Maxima version: 5.49.0
Maxima build date: 2026-01-02 21:27:51
Host type: x86_64-w64-mingw32
System type: Win32 10.0.19041 X86-64
Lisp implementation type: SBCL
Lisp implementation version: 2.6.0
Why does maxima often insist on putting things in a complex or with a %i multiplier when the obvious expression one wants is all real.
Maxima often does this in many other cases i have used. For example :
(assume_pos:true, file_output_append:true, ratprint:false, showtime:true,load(simplify_sum),intanalysis:false
, simpsum:true, load("lrats"),letrat:true,ratfac:true,algebraic:true,rootsconmode=super,algexact:true,fpprintprec:4);
assume(c0<2,c0>0,ws>-1,ws<1)
[t:1/sqrt(1+sqrt(1-ws^2)*(1-c0)),ty:taylor(t,ws,0,2)]
and maxima gives ty as -(sqrt(c0-2)*%i/(c0-2)-%i*(c0-1)*ws^2/(4*sqrt(c0-2)*(c0-2))+... which is correct but obviously not in the form
desired.Which is one reason i put in the assume(c0<2,c0>0,ws>-1,ws<1) so maxima should automatic make all real by using sqrt(2-c0)
instead of sqrt(c0-2). NOw ofcourse i can make the first term real by doing
ty:subst(sqrt(c0-2)=-%i*sqrt(2-c0),ty)
but right off hand i am not sure what branch of sqrt(-1) to use to transform the 2nd term which maxima gives as
-%i*(c0-1)*ws^2/(4*(c0-2)^(3/2)) to change it to all real only form of +or- (c0-1)*ws^2/(4*(2-c0)^(3/2))
YEA i could do some "dog work" analysis and figure out whether it should be + or minus but the point is maxima should have put all
in real only form so i wouldn't be plagued by having to this extra work. So is there a way to make it so maxima automatically puts out
the desired all real only form in all cases such as this. I even tried taylor_simplifier(ty) and that did not
make all real either and nor did taytorat make all real . So what is the proper command or option to give so that maxima always does
gives the all real form. I tried using lratsubst instead of just subst in places but that did not help either. If there is no convenient short
direct way with possible option flags etc. to do this then i want to propose a feature request.
---
Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Raymond T. <rt...@us...> - 2026-04-24 20:21:09
|
Complete directory path is fine. My suggestion was only for how I was using it. You clearly have something more interesting to do where the current scheme is better. --- **[bugs:#4721] test-directory-cached is slow** **Status:** open **Group:** None **Created:** Wed Apr 22, 2026 06:27 PM UTC by Dan Gildea **Last Updated:** Fri Apr 24, 2026 05:41 PM UTC **Owner:** nobody I recently found that tests that previously took <1 sec were taking 7 or so seconds. On digging around, the problem is that the load file routines are accessing all files under .maxima/test-directory-cached. I have hundreds of files of the form .maxima/test-directory-cached/branch_5_49_base_99_g71f2de25e that I didn't even know about. Clearing all these files makes things nice and zippy again - but I shouldn't have to do that. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: dan h. <zm...@us...> - 2026-04-24 19:31:36
|
Ok answer to your question. Yes i set radexpand:false and it did give all real form,thanks.
Though the documentation that i have in maxima help reads...
If radexpand is false, or radexpand is true and domain is complex, sqrt(x^2) is not simplified.
So then i should expect sqrt(x^2) to NOT be simplified but maxima output was just x. Interesting,
I wonder if any of text in my preface:
(assume_pos:true, file_output_append:true, ratprint:false, showtime:true, load(simplify_sum), intanalysis:false, simpsum:true, load("lrats"), letrat:true, ratfac:true, algebraic:true,rootsconmode=super,algexact:true,fpprintprec:4);
has anything to do with it ?
---
**[bugs:#4723] NOT a bug but discuss : how to get maxima to auto express in all real form**
**Status:** open
**Group:** None
**Created:** Fri Apr 24, 2026 03:25 PM UTC by dan hayes
**Last Updated:** Fri Apr 24, 2026 07:07 PM UTC
**Owner:** nobody
something wrong with that source forge discuss says i do not have permission to post in any forums so i can only place this discussion request in bugs section. Anyway
WxMaxima version: 26.01.0_MSW
Using wxWidgets version: wxWidgets 3.2.9
Maxima version: 5.49.0
Maxima build date: 2026-01-02 21:27:51
Host type: x86_64-w64-mingw32
System type: Win32 10.0.19041 X86-64
Lisp implementation type: SBCL
Lisp implementation version: 2.6.0
Why does maxima often insist on putting things in a complex or with a %i multiplier when the obvious expression one wants is all real.
Maxima often does this in many other cases i have used. For example :
(assume_pos:true, file_output_append:true, ratprint:false, showtime:true,load(simplify_sum),intanalysis:false
, simpsum:true, load("lrats"),letrat:true,ratfac:true,algebraic:true,rootsconmode=super,algexact:true,fpprintprec:4);
assume(c0<2,c0>0,ws>-1,ws<1)
[t:1/sqrt(1+sqrt(1-ws^2)*(1-c0)),ty:taylor(t,ws,0,2)]
and maxima gives ty as -(sqrt(c0-2)*%i/(c0-2)-%i*(c0-1)*ws^2/(4*sqrt(c0-2)*(c0-2))+... which is correct but obviously not in the form
desired.Which is one reason i put in the assume(c0<2,c0>0,ws>-1,ws<1) so maxima should automatic make all real by using sqrt(2-c0)
instead of sqrt(c0-2). NOw ofcourse i can make the first term real by doing
ty:subst(sqrt(c0-2)=-%i*sqrt(2-c0),ty)
but right off hand i am not sure what branch of sqrt(-1) to use to transform the 2nd term which maxima gives as
-%i*(c0-1)*ws^2/(4*(c0-2)^(3/2)) to change it to all real only form of +or- (c0-1)*ws^2/(4*(2-c0)^(3/2))
YEA i could do some "dog work" analysis and figure out whether it should be + or minus but the point is maxima should have put all
in real only form so i wouldn't be plagued by having to this extra work. So is there a way to make it so maxima automatically puts out
the desired all real only form in all cases such as this. I even tried taylor_simplifier(ty) and that did not
make all real either and nor did taytorat make all real . So what is the proper command or option to give so that maxima always does
gives the all real form. I tried using lratsubst instead of just subst in places but that did not help either. If there is no convenient short
direct way with possible option flags etc. to do this then i want to propose a feature request.
---
Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: dan h. <zm...@us...> - 2026-04-24 19:07:10
|
When do the equivalent by just taking derivatives and set ws=0 obtain :
[t:1/sqrt(1+(1-c0)*sqrt(1-ws^2)),subst(ws=0,diff(t,ws,0))+subst(ws=0,diff(t,ws,2)/2)*ws^2];
which at least in my computer output is in direct all real form, with NO %i....'s terms. Why is it inconsistent when go to taking taylor(....) ? NOte i did NOT do radexpand:false first which was default true.
---
**[bugs:#4723] NOT a bug but discuss : how to get maxima to auto express in all real form**
**Status:** open
**Group:** None
**Created:** Fri Apr 24, 2026 03:25 PM UTC by dan hayes
**Last Updated:** Fri Apr 24, 2026 06:41 PM UTC
**Owner:** nobody
something wrong with that source forge discuss says i do not have permission to post in any forums so i can only place this discussion request in bugs section. Anyway
WxMaxima version: 26.01.0_MSW
Using wxWidgets version: wxWidgets 3.2.9
Maxima version: 5.49.0
Maxima build date: 2026-01-02 21:27:51
Host type: x86_64-w64-mingw32
System type: Win32 10.0.19041 X86-64
Lisp implementation type: SBCL
Lisp implementation version: 2.6.0
Why does maxima often insist on putting things in a complex or with a %i multiplier when the obvious expression one wants is all real.
Maxima often does this in many other cases i have used. For example :
(assume_pos:true, file_output_append:true, ratprint:false, showtime:true,load(simplify_sum),intanalysis:false
, simpsum:true, load("lrats"),letrat:true,ratfac:true,algebraic:true,rootsconmode=super,algexact:true,fpprintprec:4);
assume(c0<2,c0>0,ws>-1,ws<1)
[t:1/sqrt(1+sqrt(1-ws^2)*(1-c0)),ty:taylor(t,ws,0,2)]
and maxima gives ty as -(sqrt(c0-2)*%i/(c0-2)-%i*(c0-1)*ws^2/(4*sqrt(c0-2)*(c0-2))+... which is correct but obviously not in the form
desired.Which is one reason i put in the assume(c0<2,c0>0,ws>-1,ws<1) so maxima should automatic make all real by using sqrt(2-c0)
instead of sqrt(c0-2). NOw ofcourse i can make the first term real by doing
ty:subst(sqrt(c0-2)=-%i*sqrt(2-c0),ty)
but right off hand i am not sure what branch of sqrt(-1) to use to transform the 2nd term which maxima gives as
-%i*(c0-1)*ws^2/(4*(c0-2)^(3/2)) to change it to all real only form of +or- (c0-1)*ws^2/(4*(2-c0)^(3/2))
YEA i could do some "dog work" analysis and figure out whether it should be + or minus but the point is maxima should have put all
in real only form so i wouldn't be plagued by having to this extra work. So is there a way to make it so maxima automatically puts out
the desired all real only form in all cases such as this. I even tried taylor_simplifier(ty) and that did not
make all real either and nor did taytorat make all real . So what is the proper command or option to give so that maxima always does
gives the all real form. I tried using lratsubst instead of just subst in places but that did not help either. If there is no convenient short
direct way with possible option flags etc. to do this then i want to propose a feature request.
---
Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Barton W. <wil...@us...> - 2026-04-24 18:41:38
|
Try setting `radexpand` to false:
~~~
(%i1) display2d : false$
(%i2) radexpand : false$
(%i3) xxx : 1/sqrt((1-c0)*sqrt(1-ws^2)+1);
(%o3) 1/sqrt((1-c0)*sqrt(1-ws^2)+1)
(%i4) taylor(xxx,ws,0,2);
(%o4) -(sqrt(-c0+2)/(c0-2))-((sqrt(-c0+2)*c0-sqrt(-c0+2))*ws^2)/(4*c0^2-16*c0+16)
~~~
The user documentation for `radexpand` has the details.
Let us know if setting `radexpand` to false resolves this issue.
---
**[bugs:#4723] NOT a bug but discuss : how to get maxima to auto express in all real form**
**Status:** open
**Group:** None
**Created:** Fri Apr 24, 2026 03:25 PM UTC by dan hayes
**Last Updated:** Fri Apr 24, 2026 03:25 PM UTC
**Owner:** nobody
something wrong with that source forge discuss says i do not have permission to post in any forums so i can only place this discussion request in bugs section. Anyway
WxMaxima version: 26.01.0_MSW
Using wxWidgets version: wxWidgets 3.2.9
Maxima version: 5.49.0
Maxima build date: 2026-01-02 21:27:51
Host type: x86_64-w64-mingw32
System type: Win32 10.0.19041 X86-64
Lisp implementation type: SBCL
Lisp implementation version: 2.6.0
Why does maxima often insist on putting things in a complex or with a %i multiplier when the obvious expression one wants is all real.
Maxima often does this in many other cases i have used. For example :
(assume_pos:true, file_output_append:true, ratprint:false, showtime:true,load(simplify_sum),intanalysis:false
, simpsum:true, load("lrats"),letrat:true,ratfac:true,algebraic:true,rootsconmode=super,algexact:true,fpprintprec:4);
assume(c0<2,c0>0,ws>-1,ws<1)
[t:1/sqrt(1+sqrt(1-ws^2)*(1-c0)),ty:taylor(t,ws,0,2)]
and maxima gives ty as -(sqrt(c0-2)*%i/(c0-2)-%i*(c0-1)*ws^2/(4*sqrt(c0-2)*(c0-2))+... which is correct but obviously not in the form
desired.Which is one reason i put in the assume(c0<2,c0>0,ws>-1,ws<1) so maxima should automatic make all real by using sqrt(2-c0)
instead of sqrt(c0-2). NOw ofcourse i can make the first term real by doing
ty:subst(sqrt(c0-2)=-%i*sqrt(2-c0),ty)
but right off hand i am not sure what branch of sqrt(-1) to use to transform the 2nd term which maxima gives as
-%i*(c0-1)*ws^2/(4*(c0-2)^(3/2)) to change it to all real only form of +or- (c0-1)*ws^2/(4*(2-c0)^(3/2))
YEA i could do some "dog work" analysis and figure out whether it should be + or minus but the point is maxima should have put all
in real only form so i wouldn't be plagued by having to this extra work. So is there a way to make it so maxima automatically puts out
the desired all real only form in all cases such as this. I even tried taylor_simplifier(ty) and that did not
make all real either and nor did taytorat make all real . So what is the proper command or option to give so that maxima always does
gives the all real form. I tried using lratsubst instead of just subst in places but that did not help either. If there is no convenient short
direct way with possible option flags etc. to do this then i want to propose a feature request.
---
Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: David S. <tom...@us...> - 2026-04-24 17:41:56
|
Thanks for the feedback! You're right, the `:host` and `:device` can be left out due to `:defaults`. I'd rather keep passing the complete directory path to the lambda, because we need it for one of the intended use-cases: We want to ignore all directories `binary/*` except for `binary/current_version`. Using a keyword argument seems like a good idea, I'll do that. --- **[bugs:#4721] test-directory-cached is slow** **Status:** open **Group:** None **Created:** Wed Apr 22, 2026 06:27 PM UTC by Dan Gildea **Last Updated:** Fri Apr 24, 2026 03:20 PM UTC **Owner:** nobody I recently found that tests that previously took <1 sec were taking 7 or so seconds. On digging around, the problem is that the load file routines are accessing all files under .maxima/test-directory-cached. I have hundreds of files of the form .maxima/test-directory-cached/branch_5_49_base_99_g71f2de25e that I didn't even know about. Clearing all these files makes things nice and zippy again - but I shouldn't have to do that. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: dan h. <zm...@us...> - 2026-04-24 15:25:44
|
---
**[bugs:#4723] NOT a bug but discuss : how to get maxima to auto express in all real form**
**Status:** open
**Group:** None
**Created:** Fri Apr 24, 2026 03:25 PM UTC by dan hayes
**Last Updated:** Fri Apr 24, 2026 03:25 PM UTC
**Owner:** nobody
something wrong with that source forge discuss says i do not have permission to post in any forums so i can only place this discussion request in bugs section. Anyway
WxMaxima version: 26.01.0_MSW
Using wxWidgets version: wxWidgets 3.2.9
Maxima version: 5.49.0
Maxima build date: 2026-01-02 21:27:51
Host type: x86_64-w64-mingw32
System type: Win32 10.0.19041 X86-64
Lisp implementation type: SBCL
Lisp implementation version: 2.6.0
Why does maxima often insist on putting things in a complex or with a %i multiplier when the obvious expression one wants is all real.
Maxima often does this in many other cases i have used. For example :
(assume_pos:true, file_output_append:true, ratprint:false, showtime:true,load(simplify_sum),intanalysis:false
, simpsum:true, load("lrats"),letrat:true,ratfac:true,algebraic:true,rootsconmode=super,algexact:true,fpprintprec:4);
assume(c0<2,c0>0,ws>-1,ws<1)
[t:1/sqrt(1+sqrt(1-ws^2)*(1-c0)),ty:taylor(t,ws,0,2)]
and maxima gives ty as -(sqrt(c0-2)*%i/(c0-2)-%i*(c0-1)*ws^2/(4*sqrt(c0-2)*(c0-2))+... which is correct but obviously not in the form
desired.Which is one reason i put in the assume(c0<2,c0>0,ws>-1,ws<1) so maxima should automatic make all real by using sqrt(2-c0)
instead of sqrt(c0-2). NOw ofcourse i can make the first term real by doing
ty:subst(sqrt(c0-2)=-%i*sqrt(2-c0),ty)
but right off hand i am not sure what branch of sqrt(-1) to use to transform the 2nd term which maxima gives as
-%i*(c0-1)*ws^2/(4*(c0-2)^(3/2)) to change it to all real only form of +or- (c0-1)*ws^2/(4*(2-c0)^(3/2))
YEA i could do some "dog work" analysis and figure out whether it should be + or minus but the point is maxima should have put all
in real only form so i wouldn't be plagued by having to this extra work. So is there a way to make it so maxima automatically puts out
the desired all real only form in all cases such as this. I even tried taylor_simplifier(ty) and that did not
make all real either and nor did taytorat make all real . So what is the proper command or option to give so that maxima always does
gives the all real form. I tried using lratsubst instead of just subst in places but that did not help either. If there is no convenient short
direct way with possible option flags etc. to do this then i want to propose a feature request.
---
Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Raymond T. <rt...@us...> - 2026-04-24 15:20:54
|
Tried with clisp and gcl this time. It all works as expected. Thanks!
A couple of comments.
You have
```
(make-pathname :host (pathname-host p)
:device (pathname-device p)
:directory (list (car (pathname-directory p)))
:name nil :type nil
:defaults p)
```
Don't the :host and :device slots inherit from :defaults?
It seems that the typical use of the descendp lambda is to detect if the name of a directory should be descended. And most of the time it's about NOT descending. So could we rename it to something else and just pass the name of the directory so we don't have to do `(car (last (pathname-directory p)))`? This is just based on use of just wanting to skip .git dirs. Perhaps you have more advanced uses in mind.
Finally, maybe make descendp a keyword arg in case you want to add more options later? I find it easier to extend functions using keyword args rather than optional args.
---
**[bugs:#4721] test-directory-cached is slow**
**Status:** open
**Group:** None
**Created:** Wed Apr 22, 2026 06:27 PM UTC by Dan Gildea
**Last Updated:** Fri Apr 24, 2026 12:12 PM UTC
**Owner:** nobody
I recently found that tests that previously took <1 sec were taking 7 or so seconds.
On digging around, the problem is that the load file routines are accessing all files under
.maxima/test-directory-cached. I have hundreds of files of the form
.maxima/test-directory-cached/branch_5_49_base_99_g71f2de25e
that I didn't even know about. Clearing all these files makes things nice and zippy
again - but I shouldn't have to do that.
---
Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Leo B. <l_b...@us...> - 2026-04-24 13:58:22
|
The interaction of the `tex` DWIM rule for subscripts and `itensor`'s convention causes double subscript errors in some `tex`.
```
demo(bradic);
```
contains such an example. The input line 48,
```
ishow(e([m,n],[])=canform(%*16*%pi/sqrt(-determinant(g))))$
```
produces a large expression that, when `tex`-ed, contains the following mal-formed code:
```
{\it ichr}_{2}_{{\it \%4 \%}_{5}}
```
The proposed patch would produce the valid tex:
```
{\it ichr}_{2}_{{\it \%4 \%5\ }}
```
---
**[bugs:#4696] tex and lurkmathml typeset itensor output incorrectly**
**Status:** open
**Group:** None
**Labels:** tex mathml lurkmathml itensor
**Created:** Wed Apr 01, 2026 06:04 PM UTC by Leo Butler
**Last Updated:** Wed Apr 01, 2026 06:04 PM UTC
**Owner:** Leo Butler
**Attachments:**
- [itensor.lisp.diff](https://sourceforge.net/p/maxima/bugs/4696/attachment/itensor.lisp.diff) (612 Bytes; text/x-patch)
In `hodge.dem`, the input line:
```
ishow(canform(hodge(%)))
```
produces the output (I print the Lisp sexp, because it is otherwise hard to see that `%1 %2 %3 %4` is single symbol):
```
((MTIMES SIMP) ((RAT SIMP) 1 6) ((MEXPT SIMP) $LEVI_CIVITA #:|$%1 %2 %3 %4|)
(($G ARRAY) #:|$%1 %102|) ((|$a| ARRAY) #:|$%2 %3 %4|))
```
It seems clear that `4` and `102` are **not** subscripts. But both `tex` and `mathml` treat them as such:
```
(mfuncall '$mathml '((MTIMES SIMP) ((RAT SIMP) 1 6) ((MEXPT SIMP) $LEVI_CIVITA #:|$%1 %2 %3 %4|)
(($G ARRAY) #:|$%1 %102|) ((|$a| ARRAY) #:|$%2 %3 %4|)))
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mfrac><mrow><msub><mrow><mi>g</mi> </mrow><mrow>
<msub><mi>%1 %</mi> <mn>102</mn></msub> </mrow></msub>
<mspace width="0.16666667em"/><msub><mrow><mi>A</mi> </mrow><mrow>
<msub><mi>%2 %3 %</mi> <mn>4</mn></msub> </mrow></msub>
<mspace width="0.16666667em"/><msup><mrow><mi>levi_civita</mi> </mrow> <mrow>
<msub><mi>%1 %2 %3 %</mi> <mn>4</mn></msub> </mrow></msup> </mrow> <mrow>
<mn>6</mn> </mrow></mfrac> </math>
```
and
```
(mfuncall '$tex (caddr +))
$${{g_{{\it \%1 \%}_{102}}\,A_{{\it \%2 \%3 \%}_{4}}\,{\it levi\_civita}^{
{\it \%1 \%2 \%3 \%}_{4}}}\over{6}}$$
```
We see that both the `4` and `102` are treated as subscripts, which seems wrong.
I am inclined to think that the `itensor` output is wrong and instead of constructing a symbol like `#:|$%1 %102|`, it would be better to add a space at the end to prevent subscripting.
Patch attached.
---
Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: David S. <tom...@us...> - 2026-04-24 12:12:36
|
I proposed something similar initially, for both the test files and the binary files that are created when one loads a share package. But the proposal wasn't met with enthusiasm. And Ray's case of .git directories + many subdirectories within the Maxima user directory wouldn't be solved by this. I believe this code will soon be production ready. --- **[bugs:#4721] test-directory-cached is slow** **Status:** open **Group:** None **Created:** Wed Apr 22, 2026 06:27 PM UTC by Dan Gildea **Last Updated:** Fri Apr 24, 2026 11:59 AM UTC **Owner:** nobody I recently found that tests that previously took <1 sec were taking 7 or so seconds. On digging around, the problem is that the load file routines are accessing all files under .maxima/test-directory-cached. I have hundreds of files of the form .maxima/test-directory-cached/branch_5_49_base_99_g71f2de25e that I didn't even know about. Clearing all these files makes things nice and zippy again - but I shouldn't have to do that. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Dan G. <dg...@us...> - 2026-04-24 11:59:06
|
Perhaps the cache files could go under $HOME/.cache instead of $HOME/.maxima. Then they wouldn't be on the search path, and I would know to get rid of them during my spring cleaning. --- **[bugs:#4721] test-directory-cached is slow** **Status:** open **Group:** None **Created:** Wed Apr 22, 2026 06:27 PM UTC by Dan Gildea **Last Updated:** Fri Apr 24, 2026 09:06 AM UTC **Owner:** nobody I recently found that tests that previously took <1 sec were taking 7 or so seconds. On digging around, the problem is that the load file routines are accessing all files under .maxima/test-directory-cached. I have hundreds of files of the form .maxima/test-directory-cached/branch_5_49_base_99_g71f2de25e that I didn't even know about. Clearing all these files makes things nice and zippy again - but I shouldn't have to do that. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: David S. <tom...@us...> - 2026-04-24 09:06:02
|
Thanks for testing, Ray! Interestingly, CLISP on Windows does support both `probe-file` and `file-write-date` on directories. But it doesn't on UNIX. Luckily, CLISP has `EXT:PROBE-DIRECTORY`, I'm now using this, and similar functions on other Lisps, where available. I attached a new version of my code. Used Claude heavily to help me debug across 9 different Lisps ... Attachments: - [dir.lisp](https://sourceforge.net/p/maxima/bugs/_discuss/thread/d4747f3bc4/9993/e42e/5109/attachment/dir.lisp) (7.8 kB; application/octet-stream) --- **[bugs:#4721] test-directory-cached is slow** **Status:** open **Group:** None **Created:** Wed Apr 22, 2026 06:27 PM UTC by Dan Gildea **Last Updated:** Thu Apr 23, 2026 02:05 PM UTC **Owner:** nobody I recently found that tests that previously took <1 sec were taking 7 or so seconds. On digging around, the problem is that the load file routines are accessing all files under .maxima/test-directory-cached. I have hundreds of files of the form .maxima/test-directory-cached/branch_5_49_base_99_g71f2de25e that I didn't even know about. Clearing all these files makes things nice and zippy again - but I shouldn't have to do that. --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: David S. <tom...@us...> - 2026-04-24 06:07:32
|
Mysterious indeed. I have tried again with your current nightly build - it's still working. Yes, it's ECL. Here are the full commands: ~~~ C:\maxima-5.49post\bin>maxima -l ecl ;;; Loading #P"C:/maxima-5.49post/lib/maxima/branch_5_49_base_410_gbf60af06a_dirty/binary-ecl/defsystem.lisp" ;;; Loading #P"C:/maxima-5.49post/lib/maxima/branch_5_49_base_410_gbf60af06a_dirty/binary-ecl/maxima.system" ;;; Loading #P"C:/maxima-5.49post/ecl/cmp.fas" Maxima branch_5_49_base_410_gbf60af06a_dirty https://maxima.sourceforge.io using Lisp ECL 26.3.27 Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. The function bug_report() provides bug reporting information. (%i1) file_search(mathml); (%o1) C:/maxima-5.49post/share/maxima/branch_5_49_base_410_gbf60af06a_dirty/sh\ are/contrib/lurkmathml/mathml.lisp ~~~ This time I really ran your installer, last time I just extracted the archive to some directory, which also worked. We need to find out why it's behaving differently on your system. Please try this: ~~~ :lisp (directory "C:/maxima-5.49post/share/**/") ~~~ This should return lots of directories (362 in my case). If that's the case, please try this: ~~~ :lisp (mapcar #'file-write-date (directory "C:/maxima-5.49post/share/**/")) ~~~ This should return the modification timestamp (a number) of each directory found. My filesystem is NTFS. Do you use a different one? --- **[bugs:#4713] file\_search\(\) doesn't work with ECL/Windows** **Status:** open **Group:** None **Created:** Wed Apr 15, 2026 02:32 PM UTC by Wolfgang Dautermann **Last Updated:** Thu Apr 23, 2026 07:59 PM UTC **Owner:** nobody Dear all, some time ago, I managed to get a Maxima using ECL in my crosscompiled Windows installer. See commit 72c6af1ce, etc. However - one can not load files, the reason is most likely, that `file_search()` does not work (here I run Maxima/Windows using 'wine' in Linux): ~~~ C:\maxima-5.49post\bin>maxima -l sbcl Maxima branch_5_49_base_320_g72c6af1ce https://maxima.sourceforge.io using Lisp SBCL 2.6.3 Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. The function bug_report() provides bug reporting information. (%i1) file_search_lisp; (%o1) [C:/users/dauti/maxima/**/*.fasl, C:/users/dauti/maxima/**/*.lisp, C:/ma\ xima-5.49post/share/maxima/branch_5_49_base_320_g72c6af1ce/share/**/*.lisp, C:/maxima-5.49post/share/maxima/branch_5_49_base_320_g72c6af1ce/src/*.fasl, C:/maxima-5.49post/share/maxima/branch_5_49_base_320_g72c6af1ce/src/*.lisp, C:/maxima-5.49post/share/maxima/branch_5_49_base_320_g72c6af1ce/*.fasl, C:/maxima-5.49post/share/maxima/branch_5_49_base_320_g72c6af1ce/*.lisp] (%i2) file_search("mathml"); (%o2) C:/maxima-5.49post/share/maxima/branch_5_49_base_320_g72c6af1ce/share/co\ ntrib/lurkmathml/mathml.lisp (%i3) quit(); C:\maxima-5.49post\bin>maxima -l ecl ;;; Loading #P"C:/maxima-5.49post/lib/maxima/branch_5_49_base_320_g72c6af1ce/binary-ecl/defsystem.lisp" ;;; Loading #P"C:/maxima-5.49post/lib/maxima/branch_5_49_base_320_g72c6af1ce/binary-ecl/maxima.system" ;;; Loading #P"C:/maxima-5.49post/bin/ecl/cmp.fas" Maxima branch_5_49_base_320_g72c6af1ce https://maxima.sourceforge.io using Lisp ECL 26.3.27 Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. The function bug_report() provides bug reporting information. (%i1) file_search_lisp; (%o1) [C:/users/dauti/maxima/**/*.fas, C:/users/dauti/maxima/**/*.lisp, C:/max\ ima-5.49post/share/maxima/branch_5_49_base_320_g72c6af1ce/share/**/*.lisp, C:/maxima-5.49post/share/maxima/branch_5_49_base_320_g72c6af1ce/src/*.fas, C:/maxima-5.49post/share/maxima/branch_5_49_base_320_g72c6af1ce/src/*.lisp, C:/maxima-5.49post/share/maxima/branch_5_49_base_320_g72c6af1ce/*.fas, C:/maxima-5.49post/share/maxima/branch_5_49_base_320_g72c6af1ce/*.lisp] (%i2) file_search("mathml"); (%o2) false (%i3) quit(); ~~~ It does work with other Lisp versions, e.g. SBCL or CLISP. Best regards, Wolfgang --- Sent from sourceforge.net because max...@li... is subscribed to https://sourceforge.net/p/maxima/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/maxima/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |