When evaluating polynomials although Horner's method is shorter to code,
and has the fewest actual operations used, on modern architectures with
deep pipelines I would recommend giving Estrin's scheme a go and let the
profiler / accurate cpu meter logging tell you which one is best:

https://en.wikipedia.org/wiki/Horner%27s_method
vs
https://en.wikipedia.org/wiki/Estrin%27s_scheme

Andy





On Sat, 23 Feb 2019 at 07:31, robert bristow-johnson <
r...@audioimagination.com> wrote:

>
>
> this is just a guess at what the C code might look like to calculate one
> sample.  this uses Olli's 7th-order with continuous derivative.  f0 is the
> oscillator frequency which can vary but it must be non-negative.  1/T is
> the sample rate.
>
>
>
> float sine_osc(float f0, float T)
> {
>    static float phase = 1.0;    // this is the only state.  -2.0 <= phase
> < +2.0
>
>    phase += 4.0*f0*T;
>    if (phase >= 2.0)
>    {
>       phase -= 4.0;
>    }
>
>    if (phase < 0.0)
>    {
>       triangle = -phase - 1.0;
>    }
>    else
>    {
>       triangle = phase - 1.0;
>    }
>
>    x2 = triangle*triangle;
>    return triangle*(1.570781972 - x2*(0.6458482979 - x2*(0.07935067784 -
> x2*0.004284352588)));
> }
>
> i haven't run this code nor checked it for syntax.  but it's conceptually
> so simple that i'll bet it works.
>
> r b-j
>
> ---------------------------- Original Message ----------------------------
> Subject: Re: [music-dsp] Time-variant 2nd-order sinusoidal resonator
> From: "Olli Niemitalo" <o...@iki.fi>
> Date: Thu, February 21, 2019 11:58 pm
> To: "A discussion list for music-related DSP" <
> music-dsp@music.columbia.edu>
> --------------------------------------------------------------------------
>
> > On Fri, Feb 22, 2019 at 9:08 AM robert bristow-johnson <
> > r...@audioimagination.com> wrote:
> >
> >> i just got in touch with Olli, and this "triangle wave to sine wave"
> >> shaper polynomial is discussed at this Stack Exchange:
> >>
> >>
> >>
> >>
> https://dsp.stackexchange.com/questions/46629/finding-polynomial-approximations-of-a-sine-wave/46761#46761
> >>
> > I'll just summarize the results here. The polynomials f(x) approximate
> > sin(pi/2*x) for x=-1..1 and are solutions with minimum peak harmonic
> > distortion compared to the fundamental frequency. Both solutions with
> > continuous and discontinuous derivative are given. In summary:
> >
> > Shared polynomial approximation properties and constraints:
> > x = -1..1, f(-1) = -1, f(0) = 0, f(1) = 1, and f(-x) = -f(x).
> >
> > If continuous derivative:
> > f'(-1) = 0 and f'(1) = 0 for the anti-periodic extension f(x + 2) =
> -f(x).
> >
> > 5th order, continuous derivative, -78.99 dB peak harmonic distortion:
> > f(x) = 1.569778813*x - 0.6395576276*x^3 + 0.06977881382*x^5
> >
> > 5th order, discontinuous derivative, -91.52 dB peak harmonic distortion:
> > f(x) = 1.570034357*x - 0.6425216143*x^3 + 0.07248725712*x^5
> >
> > 7th order, continuous derivative, -123.8368 dB peak harmonic distortion:
> > f(x) = 1.570781972*x - 0.6458482979*x^3 + 0.07935067784*x^5
> > - 0.004284352588*x^7
> >
> > 7th order, discontinuous derivative, -133.627 dB peak harmonic
> distortion:
> > f(x) = 1.5707953785726114835*x -
> > 0.64590724797262922190*x^3 + 0.079473610232926783079*x^5
> > - 0.0043617408329090447344*x^7
> >
> > Also the exact coefficients that are rational functions of pi are given
> in
> > the answer, in case anyone needs more precision.
> >
> > -olli
> > _______________________________________________
> > dupswapdrop: music-dsp mailing list
> > music-dsp@music.columbia.edu
> > https://lists.columbia.edu/mailman/listinfo/music-dsp
>
>
>
>
>
>
>
>
> --
>
> r b-j                         r...@audioimagination.com
>
> "Imagination is more important than knowledge."
>
>
>
>
>
>
>
> _______________________________________________
> dupswapdrop: music-dsp mailing list
> music-dsp@music.columbia.edu
> https://lists.columbia.edu/mailman/listinfo/music-dsp
_______________________________________________
dupswapdrop: music-dsp mailing list
music-dsp@music.columbia.edu
https://lists.columbia.edu/mailman/listinfo/music-dsp

Reply via email to