On Sat, 25 Nov 2023 at 20:38, Oleg Nesterov <o...@redhat.com> wrote: > On 11/25, Oleg Nesterov wrote: > > > > Thanks for looking at this! > > Yes, and this reminds me another discussion on discord ;) > > To remind, ma.zc() is wrong in that it can't detect the crossing if the > input > is zero in between. > > So how about the patch below? > > This change is not compatible too, but I guess we can treat it as a bugfix? >
Agreed. It wouldn't break anything that already works correctly. > > I think the new ba.tAndH() makes sense regardless, for example we can do > > zc_threshold(t) = ba.tAndH(abs >= t) <: *(mem) < 0; > > which reports the "significant" changes from -t to +t or vice versa. > Also good to have this. Thank you, Oleg. Dario > > Oleg. > --- > > diff --git a/basics.lib b/basics.lib > index ed3e9c5..d150872 100644 > --- a/basics.lib > +++ b/basics.lib > @@ -1777,8 +1777,22 @@ latch(trig, x) = x * s : + ~ *(1-s) with { s = > (trig' <= 0) & (trig > 0); }; > //---------------------------------------------------------------- > declare sAndH author "Romain Michon"; > > -sAndH(trig) = select2(trig,_,_) ~ _; > +sAndH(trig) = select2(trig) ~ _; > > +//--------------------------`(ba.)tAndH`------------------------------- > +// Test And Hold: "records" the input when pred(input) is true, outputs a > frozen value otherwise. > +// > +// #### Usage > +// > +// ``` > +// _ : tAndH(pred) : _ > +// ``` > +// > +// Where: > +// > +// * `pred`: predicate to test the input > +//---------------------------------------------------------------- > +tAndH(pred) = _ <: pred,_ : sAndH; > > > //--------------------------`(ba.)downSample`------------------------------- > // Down sample a signal. WARNING: this function doesn't change the > diff --git a/maths.lib b/maths.lib > index aa92b11..9f04037 100644 > --- a/maths.lib > +++ b/maths.lib > @@ -50,6 +50,7 @@ closed source license or any other license if you decide > so. > ************************************************************************/ > > // This library contains platform specific constants > +ba = library("basics.lib"); > pl = library("platform.lib"); > ma = library("maths.lib"); // for compatible copy/paste out of this file > > @@ -794,5 +795,4 @@ nextpow2(x) = ceil(log(x)/log(2.0)); > // _ : zc : _ > // ``` > > > //----------------------------------------------------------------------------- > -zc(x) = x * x' < 0; > - > +zc = ba.tAndH(!=(0)) <: *(mem) < 0; > >
_______________________________________________ Faudiostream-users mailing list Faudiostream-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/faudiostream-users