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

Reply via email to