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