input sigflow;

beginfig(1);
  numeric u, xp, xm, yp, ym, d, tick, fix;
  path    xaxis, yaxis;
  color   fxn_color, axis_color;

  u          := 30;
  fix        := -1.5;
  d          := .5u;
  tick       := .1u;
  xp         := 2u;
  xm         := -xp;
  yp         := u;
  ym         := -yp;
  xaxis      := (xm-d,0)--(xp+d,0);
  yaxis      := (0,ym-d)--(0,yp+d);
  fxn_color  := .5blue;
  axis_color := .5white;

  drawoptions(withcolor axis_color);
  drawdblarrow xaxis;
  drawdblarrow yaxis;
  draw (xm,-tick)--(xm,tick);
  draw (xp,-tick)--(xp,tick);

  drawoptions(withcolor fxn_color);
  draw (xm,yp)--(0 ,yp);
  dotlabel("", origin);
  draw (0 ,ym)--(xp,ym);
  dotlabel("", (xp,0));

  drawoptions();
  label.lft(TEX("\(-j\)"),               (0,ym));
  label.rt (TEX("\(j\)"),                (0,yp));
  label.bot(TEX("\(-\pi\)"),             (xm,0));
  label.bot(TEX("\(\pi\)"),              (xp,fix));
  label.top(TEX("\(H(\omega)\)"),        (0,yp+d));
  label.rt (TEX("\(\omega\) [radians]"), (xp+d,0));

  addcaption("DTFT of the ideal discrete Hilbert transform");
  addcaption("filter for \(-\pi < \omega \leq \pi\)");

  draw bbox(currentpicture) withcolor white;
endfig;

end;