forked from jh4xsy/klatt80
-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetabc.for
28 lines (25 loc) · 828 Bytes
/
setabc.for
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
C SETABC.FOR D.H. KLATT 8/1/78
C
C CONVERT FORMANT FREQENCIES AND BANDWIDTH TO RESONATOR
C DIFFERENCE EQUATION CONSTANTS
elemental SUBROUTINE SETABC(F,FB,A,B,C)
use, intrinsic:: iso_fortran_env, only: int16, sp=>real32
implicit none
INTEGER(int16), intent(in) :: F,FB
REAL(sp), intent(out) :: A, B, C
real(sp) R, PIT, TWOPIT
COMMON /PIXX/ PIT,TWOPIT
C
C---REPLACE BY R=EXPTAB(FB) FOR FASTER EXECUTION
R=EXP(-PIT*FLOAT(FB))
C=-R*R
C---REPLACE BY B=COSTAB(F) FOR FASTER EXECUTION
B=2.*R*COS(TWOPIT*FLOAT(F))
A=1.-B-C
620 CONTINUE
C IF F IS MINUS, COMPUTE A,B,C FOR A ZERO PAIR
IF (F.GE.0) RETURN
630 A=1./A
B=-A*B
C=-A*C
END SUBROUTINE SETABC