This file is indexed.

/usr/share/octave/packages/signal-1.2.2/dst.m is in octave-signal 1.2.2-1build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
## Author: Paul Kienzle <pkienzle@users.sf.net> (2006)
## This program is granted to the public domain.

## -*- texinfo -*-
## @deftypefn {Function File} {@var{y} =} dst (@var{x})
## @deftypefnx {Function File} {@var{y} =} dst (@var{x}, @var{n})
## Computes the type I discrete sine transform of @var{x}.  If @var{n} is given, 
## then @var{x} is padded or trimmed to length @var{n} before computing the transform.
## If @var{x} is a matrix, compute the transform along the columns of the
## the matrix.
##
## The discrete sine transform X of x can be defined as follows:
##
## @verbatim
##        N
## X[k] = sum x[n] sin (pi n k / (N+1) ),  k = 1, ..., N
##        n=1
## @end verbatim
##
## @seealso{idst}
## @end deftypefn

function y = dst (x, n)

  if (nargin < 1 || nargin > 2)
    print_usage;
  endif

  transpose = (rows (x) == 1);
  if transpose, x = x (:); endif

  [nr, nc] = size (x);
  if nargin == 1
    n = nr;
  elseif n > nr
    x = [ x ; zeros(n-nr,nc) ];
  elseif n < nr
    x (nr-n+1 : n, :) = [];
  endif

  y = fft ([ zeros(1,nc); x ; zeros(1,nc); -flipud(x) ])/-2j;
  y = y(2:nr+1,:);
  if isreal(x), y = real (y); endif

  ## Compare directly against the slow transform
  # y2 = x;
  # w = pi*[1:n]'/(n+1);
  # for k = 1:n, y2(k) = sum(x(:).*sin(k*w)); end
  # y = [y,y2];

  if transpose, y = y.'; endif

endfunction

%!test
%! x = log(linspace(0.1,1,32));
%! y = dst(x);
%! assert(y(3), sum(x.*sin(3*pi*[1:32]/33)), 100*eps)