On 13.11.2021 00:58, Ichthyostega wrote: > > Hi Will, > Hi Kristian, > > last week I was rather busy, and moreover, the AnalogFilter turns out > to be challenging with respect to getting reproducible numbers on different > compilers. For Investigation, I've added several more test cases to cover > the various filter types and frequency responses. Running on the same > plattform/compiler, the waveform is 100% reproducible. But GCC-7 or > GCC-6 on older Ubuntu versions produce non-trivial differences, often > even just -50dB RMS (which means, the residual is even faintly audible). > > My tests and investigations with the debugger indicate that the > discrepancies > happen already when computing the /filter coefficients/. And, as we all > know, > filters can be quite sensible to minute changes on those coefficients. > > The assembly does the computations in different ways, and esp. allocates > things to registers and SSE registers differently, which is fair enough. > > The only solution I could find is to switch this computation of filter > coefficients over to using doubles. This works, because then the > discrepancies > happen in a range that does not matter, since I won't change the type of > the > coefficients as such, i.e. the coefficients themselves are still floats and > thus all the actual filter computations also stay on floats. Which also > means, there is no tangible impact on performance, as the coefficients are > only recomputed on parameter change, which means at most once per puffer. > > I have added this change on top of my "power" branch > https://github.com/Ichthyostega/yoshimi/compare/power > > Moreover, the testsuite has a total of 53 tests now and I have > (re)computed the stored baseline waveforms with a Yoshimi from that > "power" branch. With that change, the only differences I get on the > different plattforms/compiles are some occasional flips at the last bit, > especially with the SUBSynth and PADSynth. These discrepancies are below > the > tolerance for rounding errors built into the testsuite (-120dB), i.e. they > will not be reported (unless you use the commandline argument --strict)
I wanted to try with the updated power functions, but at the end of the run I got this: Yoshimi-Testsuite failed: Unforeseen state: No rows in DataTable yet Do you know what it means? -- Kristian _______________________________________________ Yoshimi-devel mailing list Yoshimi-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/yoshimi-devel