sqrwave(t, duty)
{
local s, sqr, t0;
if (argc < 2)
{
if (argc < 1) error("sqrwave - input series required");
duty = 50;
}
duty /= 100;
t0 = t / (2 * pi);
s = t0 - floor(t0);
sqr = (s < duty);
/* rescale -1 to 1 */
sqr = 2 * (sqr - 0.5);
if (isarray(t))
{
sqr = xy(t, sqr);
}
return(sqr);
}