Activating FFT multiplication *still not ideally optimised) for
Here I tidy up after ye4sterdays big checkin so that now the --with-arithlib
A load of CSL files are changed here nut at least in principle not a lot
Instead of using the C++ "high_resolution_clock" I now used the "steady_clock"
fftmod.cpp and cthread.cpp are freestanding at present but I intend to
Add a new file cthread.cpp
iMake the gf2 package build under PSL, even if its output is not consistent
The forthcoming Fedora 43 seems to defined an "extern double rsqrt()" and
Add code into fftmod that counts in a 32-bit number but in a bit-reversed
Add fftmod.cpp that is to do with FFT techniques for multiplying
The CSL console mode version may generate different symbols for the input keystrokes "phi<alt-x>" and "varphi<alt-x>" where in that world alg-x tries to cycle funny symbols between thier unicode name, the unicode character that they are and a string of numbers. So eg try the input 03c6 and then hit alt-x repeatedly. I hardly expect anybody to have noticed this or use it.</alt-x></alt-x> I do not see varphi being given special trreatment in tmprint.red, but I think that in the tex-like system that...
Thank you for this report. "gf2.red" as you will see from comments in it is a starting point for anybody who wants to work on it - and is there because somebody wanted to know if Reduce could work with polynomials over the finite field with 2 elements. It was coded with a view to being usable with CSL, where by "usable" I mean a state where a keen person could play with it. It is known to have defects for them to find and fix!!!! In the Lisps that Reduce uses mkhash can have argument 3 omitted and...
Fix calls to mkhash for broader compatibility.
gf2: This is now cap[able of addings some new polynomials to a base set over
The gf2 code can now (I think) generate S polynominals but at present it
Add a package "gf2" which will be for distributed polynomials with
scripts/test.sh still does not manage to generate exactly the final
This is not complete work yet but I am checking it in to keep the files
Thank you very much! Thaty now looks small enough that to work through and try to understand why g5 gets used before it is defined might be feasible!!! But with a bit more trial I can shrink it yet further on echo; off nat; load scope; KK := (DXEY - DXEZ + DYEX)k * (DXEY - DXEZ + DYEX); w11 := zx11 / KK; w4 := zx4 / KK; optimize m11 :=: w11, m4 :=: w4; end; For me the output now comes as just 5 lines: g8 := g3dx$ g3 := (dyex + dx(ey - ez))k$ g6 := dyexg3 - g8ez + g8*ey$ m11 := zx11/g6$ m4 := zx4/g6$...
Thank you. Can you find a smaller thing that goes into I1 (with an exponent for J) that causes pain? Even the cut-down version I got still generated somewhat over 100 lines of output. One that failed while generating just a dozen would be much nicer for somebody who needs to dig into that code from a cold start to use! Arthur On Sun, 22 Jun 2025, videohead wrote: The g10 problem only appears when J has an exponent. No such problem occurs when I1bar := I1/J;
Eg here is a somewhat trimmed down version. It will be good to see if it can be cut down yet further... off fancy,raise,lower; on echo; load_package scope; depend(DvDX, x4, x11); depend(DvDY, x4, x11); depend(DvDZ, x4, x11); F := mat((1,0,0),(0,1,0),(0,0,1)) + mat((DuDX,DuDY,DuDZ), (DvDX, DvDY,DvDZ),(DwDX,DwDY,DwDZ))/j; J := det(F); B := F*tp(F); B11 := B(1,1); I1 := B11; I1bar := I1/J^(2/3); off nat; vDI1barDx11 := df(I1bar,x11); vDI1barDx4 := df(I1bar,x4); optimize DI1barDx11 :=: vDI1barDx11, DI1barDx4...
In your first test file maybe the first thing to say is that without "optimize" the results are very voluminous but with they are a lot better. However your "missing definition of g10" looks like a clear-cut bug in the "scope" package. The code impleme4nting that seems to date from 1981 and 1983 (see scope/codopt.red that points to papers that describe how it works) and it is not clear that the the originators are immediatly available to investigate! Of course all the code is there in the source...
Here parhaps the key thing I do is to introduce a configure option
I should explain this one too. log.h had been syable for many years but a new version of Windows headers led to compilation failures of an ugly nature (well very much like the ones you were hit with on the Mac!). Investigation showed that this was a name clash where the new Windows headers were unhappy about a name I had used in log.h. I fixed it by changing the name in log.h by sticking an underscore in front of it. In due corse it emerged that that then clashed witha a macOS header, so now I have...
Grovelling apologies that was an accident! A couple of us have been trying to get the very final version of crack that its author had produced in a good state to make the standard one for Reduce and for out work we are putting the new version in a directory new-crack and altering package.map in the way you see. That change was not intended to be distributed to all but got swept up in an unrelated checkin. I have just put that back (I hope) and also fixed a file that meant that a Mac header file clashed...
Change log.h to avoid name conflicts with some Mac headers. And repair
Alter crinit (and a bit more) so that initialization goes into
These are changes that make various things fluid rather than global and
iThis has my *.diff files - it also has BAD changes to crineq.red -
I hope that what I have here is a set of *.rlg files from the old
Update some scripts
CSL: For a Windows build the version of windows.h that comes with the
Sme work that is at present very much basic and foundational as well as
Reduce2 from 2025 as for a software demonstration at ISSAC-2025
If already root avoid use of sudo
Fixes and updated triggered by webview and reduce.web.
The restyled versions (eg crack.red) now lead to the same set of
CSL: *MAYBE* after --with-webgui this lets a working version of reduce.web
Check in test files etc.
Put in original not-styled versions.
Initial checkin
Bring tps log file up to date wrt improvements in the code there.
CSL: After a configure --enable-webgui one should now be able to
CSL: Some progress on reduce.web but image files do not match yet.
This tried to support configure --enable-webgui followed by
Make the name --enable-webgui
CSL: There is now a switch "in show!-shared;" such that trace and backtrace
Fix a somewhat spurious compile-time moan in qsieve.cpp and update
A typo in previous!
Fix some forward references so that the example file has a better chance of
I came across a liberally licensed C implementation of Quadratic Sieve
More activity on packages/workfarm and its support. The file pollard.tst
Add some files that are part of work in progress to see about an embedded
A sample log file from workfarm.tst
The CSL-only workfarm/workfarm.tst script now at least SEEMS to be doing
Add a directory packages/workfarm to show what I am trying to do for
forks.cpp starting to work better - still things to do but it deserves
CSL: Partial success with forke.cpp
CSL: good news and bad news! WIth the JIT enabled all the reduce tests
CSL: A few more JIT fixes - in particular tail-calls are now better
CSL: WIth everything tagged as "try the JIT" the script alg.tst now
CSL: The JIT now has a flag !*jit!-noisy to control whether it prints out
The main thing here is that if !*rprint is on while parsing then where you
rlisp/tok.red has some of the older code fragments in the system and they
This adds an experimental module rstyle which is a version of rprint that
Further JIT progress (ast least on x86_64) such that I can compile the
CSL: the placement of "$Id" in many files has been changed and the
CSL: For the JIT I new call many functions directly rather than by loading
Beginnings of support for another experiment - that if it works will
A bunch more JIT improvements. I *think* that the current blockage is probably
CSL: With a small fix it looks as if the test "alg.tst" ran when the
CSL: With a few fixed the JIT now supports all the bytecodes that it does
CSL: re the JIT I have now fixed an issue that had been really bugging
CSL: fluid binding is now supposed to work in the JIT, with just the following
CSL: yet more JIT stuff. I have very nearly all the bytecodes that will
CSL: This leaves parts of the JIT more broken than they were a few days
SOme JIT mends based on testing on Mac.
Put "$Id:$" info in each ops file.
More progress on JIT but note that a dozen or more ops while "implemented"
This checkin tries to do 2 things for CSL:
More testing/fixing/breaking/tidying-up etc for the JIT.
Getting ARM code for JIT better up to a good state. Compiles not but
Many chhanges relating to the JIT experiment for CSL.
Make gcdf ignore any "let x^N=>0" style rules while doing its stuff.
CSL: "remob" just did not work. This was to a large extent because
On Sun, 23 Mar 2025, Rainer Schöpf wrote: Agreed. Especially if you consider the case d=-a. Rainer This is with revision 3000 from March 2015... P-Q; 4 3 2 2 3 4 a - a d + a d - a*d + d 5 a let d^5=>0; P-Q; 1 a + d so this has been the bahaviour for some while... I will go yet further back.... Arthur
A few patches to the previous checkin after testing on Mac etc.
Many cbages relating to a JIT that need checkin in for safe-keeping.
rational not polynomial result after d^5=>0
Adjust many files that are to do with generating Intel code via a JIT.
A bunch of JJIT-related work (still not working properly!) so that it is
CSL: More JIT-related changes.
CSL: start a directory cslbase/jittests to contain test of JIT behaviour.
CSL: make jit.cpp compile on Mac again (when --enable-jit is configured)
The next bytecode implemented plus the odd fix to what had been there.
CSL: cslbase/ops/op_lessp.cpp is the first opcode that calls a function
CSL: *maybe* the byte operator OP_LESSP now JIT compiles on x86_64 such that
CSL: A whole bunch of adjustments aimed at support for a JIT, and in
Sort out a merge-onflict in configure.ac.