The intention is to perform the analysis of pure functions at the pre-compilation stage where all the Pascal code is transmuted into nodes, which are platform-independent and also have the advantage of not requiring total rebuilding of a project, since it is these nodes that are stored in PPU files. It may turn out that that is more difficult in practice, but that's the current theory.
Everything will be programmed in Pascal... no platform-specific assembly language (and I think that is a global rule with the Free Pascal Compiler because of cross compilation). I admit I'm not sure what will happen if you try to use floating-point numbers that the platform simply does not support, in which case, ANY program that uses them might run into problems. If floats are however emulated by the Free Pascal Compiler in these cases, then the same will happen when pre-calculating the functions. Just for some extra fun - this is a video that shows the Ackermann Function being run on a relatively modern computer, and hence the importance of being able to catch functions that will take too long to compute (but which are still nonetheless "decidable"). https://www.youtube.com/watch?v=i7sm9dzFtEI&t=9m30s - I've done some calculations by hand, and shown that storing and recalling partial results to the Ackermann Function does reduce the amount of recursion required (e.g. when calculating A(3,2), it comes across 7 results from the function with smaller arguments that it can reuse later that can significantly cut down the processing requird), but there are still cases that are too ridiculous to work out, not least because the answer will cause an overflow (e.g. the result of A(4,2) has almost 20,000 decimal digits and, naïvely, takes longer than the age of the Universe to compute). Gareth aka. Kit On Mon 09/07/18 18:36 , "Thorsten Engler" thorsten.eng...@gmx.net sent: > > -----Original Message----- > > > From: fpc-devel On Behalf Of > > Max Nazhalov via fpc-devel > > > Sent: Tuesday, 10 July 2018 02:25 > > > > > > Just one question: doesn't all this new stuff > introduce another kind > > of mess during cross-compiling? > > > > > > E.g. some complex nested const.expr. > "sin(cos(0.12345))" evaluated by > > the compiler on x64 (double precision) is not > the same as if it would > > be evaluated by the compiled program itself > running on some x32 > > (float80), or some future float128 alikes.. > > > > How would that be any different from floating point consts currently that > are defined with an expression involving calculations? > > > _______________________________________________ > > fpc-devel maillist - fpc-devel@lists.freepascal.org > http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel > > > > _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel