Christian Himpe schrieb am 2021-11-07:
> felix.winkelm...@bevuta.com schrieb am 2021-11-07: > > > Dear Felix, > > > > > > Thank you for the patch. I built the current git head with your patch. > > > After importing chicken.flonum, I get the following error when calling > > > fp*+: > > > > > I'm terribly sorry. I'm an ass, I didn't even test it in the interpreter. > > Please > > find attached a revised patch. > > felix > Dear felix, > the latest patch works. I extended my test code and here are the results: > without -C -mfma: > csc -O5 -d0 -C -O3 fma-test.scm && ./fma-test > 7.998s CPU time, 0/225861 GCs (major/minor), maximum live heap: 30.78 MiB > 10.104s CPU time, 0/256410 GCs (major/minor), maximum live heap: 30.78 MiB > 10.69s CPU time, 0/311364 GCs (major/minor), maximum live heap: 30.78 MiB > with -C -mfma: > csc -O5 -d0 -C -O3 -C -mfma fma-test.scm && ./fma-test > 7.697s CPU time, 0/238095 GCs (major/minor), maximum live heap: 30.78 MiB > 9.135s CPU time, 0/262467 GCs (major/minor), maximum live heap: 30.78 MiB > 11.008s CPU time, 0/317460 GCs (major/minor), maximum live heap: 30.78 MiB > It seems the number of GCs is a lot higher than for fp*/fp+ or c99-fma with > or without fma compiler flag. So currently, there seems to be no benefit > integrating c99's fma as fp*+ besides a slightly better rounding error. At > least for me, this comes unexpected. > Thank you for providing the patch. If you want to test something in this > regard in the future, I am happy to test further patches. > Cheers > Christian Dear felix, after coming back to this function and the associated issues regularly, I revised my opinion on integrating"fp+*" into (chicken flonum), given it uses the C99-fma function. On the one hand, this operation is so fundamental in numerical computations that it warrants a specialized function, on the other hand the (somewhat) improved rounding could help a little. Finally, Gauche ( https://practical-scheme.net/gauche/man/gauche-refe/R7RS-large.html#index-fl_002b_002a ) and MIT Scheme ( https://www.gnu.org/software/mit-scheme/documentation/stable/mit-scheme-ref.html#Flonum-Operations ) provide this functionality. All in all, I would really appreciate if an inclusion of a fma-based "fp+*" function into the (chicken flonum) module could be considered in future versions of CHICKEN Scheme. Maybe your provided patch reduces the effort for this. Thank you very much Christian