1 /* -- translated by f2c (version 20100827).
2 You must link the resulting object file with libf2c:
3 on Microsoft Windows system, link with libf2c.lib;
4 on Linux or Unix systems, link with .../path/to/libf2c.a -lm
5 or, if you install libf2c.a in a standard place, with -lf2c -lm
6 -- in that order, at the end of the command line, as in
7 cc *.o -lf2c -lm
8 Source for libf2c is in /netlib/f2c/libf2c.zip, e.g.,
9
10 http://www.netlib.org/f2c/libf2c.zip
11 */
12
13 #include "libtinyf2c.h"
14
15 /* ----------------------------------------------------------------------- */
16 /* SUBROUTINE SINTI(N,WSAVE) */
17
18 /* SUBROUTINE SINTI INITIALIZES THE ARRAY WSAVE WHICH IS USED IN */
19 /* SUBROUTINE SINT. THE PRIME FACTORIZATION OF N TOGETHER WITH */
20 /* A TABULATION OF THE TRIGONOMETRIC FUNCTIONS ARE COMPUTED AND */
21 /* STORED IN WSAVE. */
22
23 /* INPUT PARAMETER */
24
25 /* N THE LENGTH OF THE SEQUENCE TO BE TRANSFORMED. THE METHOD */
26 /* IS MOST EFFICIENT WHEN N+1 IS A PRODUCT OF SMALL PRIMES. */
27
28 /* OUTPUT PARAMETER */
29
30 /* WSAVE A WORK ARRAY WITH AT LEAST INT(2.5*N+15) LOCATIONS. */
31 /* DIFFERENT WSAVE ARRAYS ARE REQUIRED FOR DIFFERENT VALUES */
32 /* OF N. THE CONTENTS OF WSAVE MUST NOT BE CHANGED BETWEEN */
33 /* CALLS OF SINT. */
34
sinti_(integer * n,real * wsave)35 /* Subroutine */ int sinti_(integer *n, real *wsave)
36 {
37 /* System generated locals */
38 integer i__1;
39
40 /* Builtin functions */
41 double sin(doublereal);
42
43 /* Local variables */
44 static integer k;
45 static real dt, pi;
46 static integer np1, ns2;
47 extern real rfpi_(void);
48 extern /* Subroutine */ int rffti_(integer *, real *);
49
50
51 /* Parameter adjustments */
52 --wsave;
53
54 /* Function Body */
55 pi = rfpi_();
56 if (*n <= 1) {
57 return 0;
58 }
59 ns2 = *n / 2;
60 np1 = *n + 1;
61 dt = pi / (real) np1;
62 i__1 = ns2;
63 for (k = 1; k <= i__1; ++k) {
64 wsave[k] = sin(k * dt) * 2.f;
65 /* L101: */
66 }
67 rffti_(&np1, &wsave[ns2 + 1]);
68 return 0;
69 } /* sinti_ */
70
71