-
-
Notifications
You must be signed in to change notification settings - Fork 610
update Giac to v1.9.0-53 #35745
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
update Giac to v1.9.0-53 #35745
Conversation
it builds, but does not work. |
How so? No more patches for autotools sources needed? |
I mean, we now have something for |
We don't -- unless we no longer need to use the spkg-src script. |
it appears we don't need this any more. |
Note that part of spkg-src is to remove non-GPL material from the tarball. |
@parisseb |
What should I change in configure.ac? The only line I see relative to xft is line 452 |
well, if any of the many X11 libraries you need are not available, you should not try building a GUI-enabled Giac - it's doomed to fail (the build succeeds, but Giac is not fully functional - some of our tests fail). Just having these macros there is not enough, you need to process what they output. An easy fix (although not too user-friendly) would be to error out. |
I see a seemingly unmodified GPL 3 in the main directory of the package (file COPYING). In
but I don't see any "specific conditions" anywhere. |
ah, we already do that. |
The source files in the src directory are under GPL, except maybe the 3d implicit plot code (I can not find the original reference, 404 error).
My own manuals (algo.pdf/algo.html in doc/fr) are under GPL, but most of the French documentation is (c) by Renée De Graeve and may be distributed freely for non commercial use. Some parts of the English documentation are (c) by their respectives authors and there are also translator rights (for example Jay Belanger did the translation of a part of the French documentation in English). For example the graph theory manual or the optimization/signalprocessing sections are (c) by Luka Marohnić, they can of course obviously be distributed inside the Xcas distribution, but I don't know what licence Luka choosed, the best would be to ask him. |
What about AC_CHECK_LIB(Xft, main,[], [AC_MSG_ERROR(exiting, as libXft cannot be found. Hint: you can run ./configure --disable-fltk to compile without GUI)])? |
But |
In the latest giac versions, disable-gui should not work anymore (since FLTK is shipped inside the giac archive) and the Xft check is done inside if test "$CONFIG_FLTK" = "yes"; then ... |
This is what giac's
|
OK, I'll postpone dealing with GUI to another PR, which most probably will need CI changes, doc changes, etc. |
the only failed test. |
I can not reproduce. Running with giac native laplace(5cos(3t-2)Heaviside(t-2), t, s); |
OK, re-running doctests produced a clean run. |
This one definitely needs to go through portability testing... |
Also on musl libc, 1.9.0-55 fails on
The expected is the correct Again, without published source history, is much harder to bisect what causes the change. |
I'm not certain, because if vector size is smaller then 4, then doing &v[v.size()-4] would also raise an abort from your checking system. Or &v[0]+v.size()-4 if v is empty. And anyway, I do not want to modify working code at several locations, why should I risk an error?
Can you explain how? The pointer is used at one location |
Well, I do not update pari myself, and the direction for giac is to become independant on PARI (I would say it's about 99.9% now). The link will be kept of course for users doing an explicit call to PARI with a pari() command. This was one reason for me to rewrite the univariate polynomial rooter code which was calling PARI for large degrees (a few hundred). This explains that checks involving the polynomial rooter may fail, due to precision. They should be rewritten to be more stable (I'm updating them to work on my own devel PC).
Actually, it depends on the compiler/platform, I have #ifdef in first.h to call tgammaf. Maybe they should be modified ? Giac is used with some compilers that are relatively old (e.g. closed-source compilers targetting ARM).
How should it be guarded? Anyway, it's not a big concern, it's only used once in Xcas GUI source code.
I'm afraid I'm too old to change my way of working. There is a github repository for Giac source files at Geogebra, that I maintain with svn commits (Geogebra has set up an automatic translation tool) because I find myself tortoise svn easier to use than git. |
A priori there's no reason you would expect to be able to do that pointer arithmetic with the addresses of the entries of the vector. For it to be valid, you need several guarantees: the underlying memory must be contiguous, arranged in the correct order, of fixed size, etc. The C++ standard makes a very specific guarantee in that regard:
Specifically it does not guarantee that |
The correct way to check which
I am 60 y.o., and can testify to rejuvenating features of
|
I can't imagine why it could be different from &v[0]+v.size(). Can you please configure giac disabling these security features and confirm if han17 works or not. I think it would also be a good idea if you could specify how to disable these security features. @dima: I'm certainly different from you. I hate doing all "management" tasks, that are wasting a lot of my time, because of inadequate documentation that would require me to become an expert just to do simple tasks. I'm not comfortable at all with software that do not explain in plain text what they do, all these pictures do not mean anything for me and I really much prefer to have a large edit window from start, and that do not eat newlines in a "code" block. Ok, life is short, I have a lot of work waiting for me. If you need to have git access to giac, just look at geogebra repository. If you want to send constructive comments or report bugs, please send me a mail or post to Xcas forum (don't expect me to learn new tools like PR because it would be more comfortable for you :-)) |
Because an instance of the vector class isn't a C array. With a C array, it would be guaranteed to work, because the array offset is translated literally into a memory offset. But asking for the
I'm sure it works if no one else has reported the problem. We would need to append |
Fine, but 2.11 was released in 2018, and you still ship a check that fails with 2.11+. If you won't apply https://xcas.univ-grenoble-alpes.fr/forum/viewtopic.php?f=4&t=2102, then just remove the test.
Is this why we are getting some tests with weird precision failures? One problem for us is that you don't communicate which releases are supposed to be stable and which ones are not, and there is no detailed changelog, etc. so we just have to guess when to update or not.
Can you use autoconf to test for
in
Maybe same as above, I think the point of using autoconf is that you don't need to add knowledge about which systems have or have not a certain function, header, etc, but let autoconf do that work for you, then your
That repo doesn't seem fully self contained, it's certainly different than the tarballs you publish and we use to build giac, and releases are not tagged. Maybe I'm missing something? Is there a public svn repo for giac? That would be more useful.
The point of PR is that it should be easier for you. If you want patches, here are my current patches: https://github.com/tornaria/void-packages/tree/giac/srcpkgs/giac/patches. Some are taken from your forum (https://xcas.univ-grenoble-alpes.fr/forum/viewtopic.php?f=3&t=2875#p12762, https://xcas.univ-grenoble-alpes.fr/forum/viewtopic.php?f=4&t=2102). |
Who does tell you that I enjoy them? I'm not paid for these, I'm paid for writing papers: https://zbmath.org/authors/pasechnik.dmitrii-v I hate such tasks too, and not being able to use git to report issues and propose fixes is wasting my time, and your time as well, due to the ambiguity that gets in patches which are not tightly coupled to the source tree. |
But I can't see any reason why someone writing a vector class template would change that, except for checking bounds, and then he would provide a way to avoid this if needed, and that's exactly the case for giac.
OK, thanks! I'll add it in configure.ac. |
@tornaria : I'm also adding in configure.ac AC_CHECK_FUNCS(tgammaf) and I make a change AC_CHECK_HEADERS(malloc.h,AC_CHECK_FUNCS(mallinfo)) @dimpase : I already spend a lot of time managing Giac for Xcas, Xcas for Firefox (wasm target), Geogebra, the HP Prime (Giac is the builtin CAS) and other calculators ports, each port has its own managing system and I'm alone to do that. Now consider that I'm not a Sage user, Sage is a competing CAS to Xcas, Sage is using some of the code I have optimized during years. Moreover Sage does not support a full version of Giac since it is configured without GUI. Therefore I'm ok to collaborate but I won't change my way of working. |
The worst possible take. I give up. I'll patch it myself. |
|
FYI I'm developping with commandline, emacs, tarballs and scp. I find tortoise svn very useful to send my changes to geogebra because I don't have to remember any command and it displays the changes in a very clear manner, that way I'm sure not to make errors. Geogebra does not react like that. They respect my work, they certainly would not require me to change working code at several locations, nobody would describe adding U_GLIBCXX_ASSERTIONS as the worst way to handle this issue. They facilitate my collaboration, for example when they migrated to git, they kept a way for me to synchronize with svn. |
@parisseb - we've put up with your interesting ways of doing work for years, all these vague version changes, renamed tarballs, patches god knows where to apply, etc etc. Here we have an example of your interesting code:
It would not pass any sort of code review anywhere, it's, just, well, hmm, not how one writes C++. Yet, people spend time debugging this for you, because we value |
Please don't reverse things, I spent some hours trying to debug what seems not to be a Giac bug, but an inadapted configuration. |
With @tornaria's patch for the pari test, and after replacing the UB, both |
@parisseb thanks. I'm still getting two test failures that seem to come from some precision trouble in
In the first one, the root is really In the second one, the roots are really BTW, my interest on this is that I package giac for void linux, and I ship the whole thing with fltk support and all (see here: https://github.com/void-linux/void-packages/blob/master/srcpkgs/giac/template). For all my packages I try to upstream patches as much as possible (both because I think it's helpful for upstream and it's easier for me not to maintain a lot of patches). |
@tornaria : I can not reproduce the first small imaginary part with my latest devel version, I get [[-4.60555127546,1],[2.60555127546,1],[4.0,1]] |
you need musl libc to reproduce. |
geogebra/giac@d260eb5 |
I've created the fork at https://github.com/sagemath/giac |
I've got a new PC that can't run any version of giac. The path of least resistance: #38668 |
If you don't give any details ("a new PC" is not really sufficent), I can't help... |
RISC V machine? |
Yeah, RISC-V International was nice enough to send me one of these: https://milkv.io/pioneer |
By default, Giac has many low level optimizations that will work on arm64 or amd64 but may fail on other 64 bits processors. For example the SMARTPTR64 define. |
Also, we finally have a stable location for stable giac tarballs