0% found this document useful (0 votes)
9 views78 pages

A Numerical Library in Java For Scientists and Engineers 1st Edition Hang T. Lau PDF Download

The document provides information about a numerical library in Java tailored for scientists and engineers, authored by Hang T. Lau. It includes various mathematical procedures, algebraic evaluations, and linear algebra techniques essential for computational tasks. Additionally, it offers links to other related educational resources and books available for download.

Uploaded by

bovinlenra
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views78 pages

A Numerical Library in Java For Scientists and Engineers 1st Edition Hang T. Lau PDF Download

The document provides information about a numerical library in Java tailored for scientists and engineers, authored by Hang T. Lau. It includes various mathematical procedures, algebraic evaluations, and linear algebra techniques essential for computational tasks. Additionally, it offers links to other related educational resources and books available for download.

Uploaded by

bovinlenra
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 78

A Numerical Library in Java for Scientists and

Engineers 1st Edition Hang T. Lau pdf download

https://ebookgate.com/product/a-numerical-library-in-java-for-
scientists-and-engineers-1st-edition-hang-t-lau/

Get Instant Ebook Downloads – Browse at https://ebookgate.com


Instant digital products (PDF, ePub, MOBI) available
Download now and explore formats that suit you...

Patent Fundamentals for Scientists and Engineers 3rd


Edition Thomas T. Gordon (Author)

https://ebookgate.com/product/patent-fundamentals-for-scientists-and-
engineers-3rd-edition-thomas-t-gordon-author/

ebookgate.com

Basic Electronics for Scientists and Engineers Eggleston


D.L.

https://ebookgate.com/product/basic-electronics-for-scientists-and-
engineers-eggleston-d-l/

ebookgate.com

Physics for Scientists and Engineers Standard Version


Fifth Edition Paul A. Tipler

https://ebookgate.com/product/physics-for-scientists-and-engineers-
standard-version-fifth-edition-paul-a-tipler/

ebookgate.com

Reliability Models for Engineers and Scientists 1st


Edition Mark P. Kaminskiy

https://ebookgate.com/product/reliability-models-for-engineers-and-
scientists-1st-edition-mark-p-kaminskiy/

ebookgate.com
Essential MATLAB for Scientists and Engineers Second
Edition Brian Hahn

https://ebookgate.com/product/essential-matlab-for-scientists-and-
engineers-second-edition-brian-hahn/

ebookgate.com

Digital Signal Processing A Practical Guide for Engineers


and Scientists Steven W. Smith

https://ebookgate.com/product/digital-signal-processing-a-practical-
guide-for-engineers-and-scientists-steven-w-smith/

ebookgate.com

Fundamental Math and Physics for Scientists and Engineers


1st Edition David Yevick

https://ebookgate.com/product/fundamental-math-and-physics-for-
scientists-and-engineers-1st-edition-david-yevick/

ebookgate.com

Probability Statistics and Reliability for Engineers and


Scientists 3rd Edition Ayyub

https://ebookgate.com/product/probability-statistics-and-reliability-
for-engineers-and-scientists-3rd-edition-ayyub/

ebookgate.com

Probability statistics and reliability for engineers and


scientists Third Edition Ayyub

https://ebookgate.com/product/probability-statistics-and-reliability-
for-engineers-and-scientists-third-edition-ayyub/

ebookgate.com
C4304_TitlePage 6/26/03 8:46 AM Page 1

CHAPMAN & HALL/CRC


A CRC Press Company
Boca Raton London New York Washington, D.C.

© 2004 by Chapman & Hall/CRC


C4304_Disclaimer Page 1 Monday, July 21, 2003 10:43 AM

Cover design by Vill Mak

Library of Congress Cataloging-in-Publication Data

Lau, H. T. (Hang Tong), 1952-


A numerical library in Java for scientists and engineers / Hang T. Lau.
p. cm.
Includes bibliographical references and index.
ISBN 1-58488-430-4 (alk. paper)
1. Java (Computer program language) I. Title.

QA76.73.J38L363 2003
005.13′3—dc21 2003055149

This book contains information obtained from authentic and highly regarded sources. Reprinted material is quoted with
permission, and sources are indicated. A wide variety of references are listed. Reasonable efforts have been made to publish
reliable data and information, but the author and the publisher cannot assume responsibility for the validity of all materials
or for the consequences of their use.

Neither this book nor any part may be reproduced or transmitted in any form or by any means, electronic or mechanical,
including photocopying, microfilming, and recording, or by any information storage or retrieval system, without prior
permission in writing from the publisher.

The consent of CRC Press LLC does not extend to copying for general distribution, for promotion, for creating new works,
or for resale. Specific permission must be obtained in writing from CRC Press LLC for such copying.

Direct all inquiries to CRC Press LLC, 2000 N.W. Corporate Blvd., Boca Raton, Florida 33431.
Trademark Notice: Product or corporate names may be trademarks or registered trademarks, and are used only for
identification and explanation, without intent to infringe.

Visit the CRC Press Web site at www.crcpress.com

© 2004 by Chapman & Hall/CRC

No claim to original U.S. Government works


International Standard Book Number 1-58488-430-4
Library of Congress Card Number 2003055149
Printed in the United States of America 1 2 3 4 5 6 7 8 9 0
Printed on acid-free paper

© 2004 by Chapman & Hall/CRC


To my dearest wife, Helen,
and our children Matthew, Lawrence, and Tabia
for their patience, love, and support

© 2004 by Chapman & Hall/CRC


The Author

Hang T. Lau is a faculty lecturer in the Department of Career and Management


Studies, Centre for Continuing Education, McGill University, Montreal, Canada.
Dr. Lau has over twenty years of industrial experience in research and development
of telecommunication.

© 2004 by Chapman & Hall/CRC


Contents

INTRODUCTION

1. ELEMENTARY PROCEDURES

1.1 Real vector and matrix  Initialization


A. inivec
B. inimat
C. inimatd
D. inisymd
E. inisymrow

1.2 Real vector and matrix  Duplication


A. dupvec
B. dupvecrow
C. duprowvec
D. dupveccol
E. dupcolvec
F. dupmat

1.3 Real vector and matrix  Multiplication


A. mulvec
B. mulrow
C. mulcol
D. colcst
E. rowcst

1.4 Real vector vector products


A. vecvec
B. matvec
C. tamvec.
D. matmat
E. tammat
F. mattam
G. seqvec
H. scaprd1
I. symmatvec

1.5 Real matrix vector products


A. fulmatvec
B. fultamvec
C. fulsymmatvec

© 2004 by Chapman & Hall/CRC


D. resvec
E. symresvec

1.6 Real matrix matrix products


A. hshvecmat
B. hshcolmat
C. hshrowmat
D. hshvectam
E. hshcoltam
F. hshrowtam

1.7 Real vector and matrix  Elimination


A. elmvec
B. elmcol
C. elmrow
D. elmveccol
E. elmcolvec
F. elmvecrow
G. elmrowvec
H. elmcolrow
I. elmrowcol
J. maxelmrow

1.8 Real vector and matrix  Interchanging


A. ichvec
B. ichcol
C. ichrow
D. ichrowcol
E. ichseqvec
F. ichseq

1.9 Real vector and matrix  Rotation


A. rotcol
B. rotrow

1.10 Real vector and matrix  Norms


A. infnrmvec
B. infnrmrow
C. infnrmcol
D. infnrmmat
E. onenrmvec
F. onenrmrow
G. onenrmcol
H. onenrmmat
I. absmaxmat

1.11 Real vector and matrix  Scaling


reascl

© 2004 by Chapman & Hall/CRC


1.12 Complex vector and matrix  Multiplication
A. comcolcst
B. comrowcst

1.13 Complex vector and matrix  Scalar products


A. commatvec
B. hshcomcol
C. hshcomprd

1.14 Complex vector and matrix  Elimination


A. elmcomveccol
B. elmcomcol
C. elmcomrowvec

1.15 Complex vector and matrix  Rotation


A. rotcomcol
B. rotcomrow
C. chsh2

1.16 Complex vector and matrix  Norms


comeucnrm

1.17 Complex vector and matrix  Scaling


A. comscl
B. sclcom

1.18 Complex monadic operations


A. comabs
B. comsqrt
C. carpol

1.19 Complex dyadic operations


A. commul
B. comdiv

1.20 Long integer arithmetic


A. lngintadd
B. lngintsubtract
C. lngintmult
D. lngintdivide
E. lngintpower

2. ALGEBRAIC EVALUATIONS

2.1 Evaluation of polynomials in Grunert form


A. pol
B. taypol
C. norderpol
D. derpol

© 2004 by Chapman & Hall/CRC


2.2 Evaluation of general orthogonal polynomials
A. ortpol
B. ortpolsym
C. allortpol
D. allortpolsym
E. sumortpol
F. sumortpolsym

2.3 Evaluation of Chebyshev polynomials


A. chepolsum
B. oddchepolsum
C. chepol
D. allchepol

2.4 Evaluation of Fourier series


A. sinser
B. cosser
C. fouser
D. fouser1
E. fouser2
F. comfouser
G. comfouser1
H. comfouser2

2.5 Evaluation of continued fractions


jfrac

2.6 Transformation of polynomial representation


A. polchs
B. chspol
C. polshtchs
D. shtchspol
E. grnnew
F. newgrn
G. lintfmpol

2.7 Operations on orthogonal polynomials


intchs

3. LINEAR ALGEBRA

3.1 Full real general matrices


3.1.1 Preparatory procedures
A. dec
B. gsselm
C. onenrminv
D. erbelm
E. gsserb
F. gssnri

© 2004 by Chapman & Hall/CRC


3.1.2 Calculation of determinant
determ
3.1.3 Solution of linear equations
A. sol
B. decsol
C. solelm
D. gsssol
E. gsssolerb
3.1.4 Matrix inversion
A. inv
B. decinv
C. inv1
D. gssinv
E. gssinverb
3.1.5 Iteratively improved solution
A. itisol
B. gssitisol
C. itisolerb
D. gssitisolerb

3.2 Real symmetric positive definite matrices


3.2.1 Preparatory procedures
A. chldec2
B. chldec1
3.2.2 Calculation of determinant
A. chldeterm2
B. chldeterm1
3.2.3 Solution of linear equations
A. chlsol2
B. chlsol1
C. chldecsol2
D. chldecsol1
3.2.4 Matrix inversion
A. chlinv2
B. chlinv1
C. chldecinv2
D. chldecinv1

3.3 General real symmetric matrices


3.3.1 Preparatory procedure
decsym2
3.3.2 Calculation of determinant
determsym2
3.3.3 Solution of linear equations
A. solsym2
B. decsolsym2

© 2004 by Chapman & Hall/CRC


3.4 Real full rank overdetermined systems
3.4.1 Preparatory procedures
A. lsqortdec
B. lsqdglinv
3.4.2 Least squares solution
A. lsqsol
B. lsqortdecsol
3.4.3 Inverse matrix of normal equations
lsqinv
3.4.4 Least squares with linear constraints
A. lsqdecomp
B. lsqrefsol

3.5 Other real matrix problems


3.5.1 Solution of overdetermined systems
A. solsvdovr
B. solovr
3.5.2 Solution of underdetermined systems
A. solsvdund
B. solund
3.5.3 Solution of homogeneous equation
A. homsolsvd
B. homsol
3.5.4 Pseudo-inversion
A. psdinvsvd
B. psdinv

3.6 Real sparse nonsymmetric band matrices


3.6.1 Preparatory procedure
decbnd
3.6.2 Calculation of determinant
determbnd
3.6.3 Solution of linear equations
A. solbnd
B. decsolbnd

3.7 Real sparse nonsymmetric tridiagonal matrices


3.7.1 Preparatory procedures
A. dectri
B. dectripiv
3.7.2 Solution of linear equations
A. soltri
B. decsoltri
C. soltripiv
D. decsoltripiv

3.8 Sparse symmetric positive definite band matrices


3.8.1 Preparatory procedure
chldecbnd

© 2004 by Chapman & Hall/CRC


3.8.2 Calculation of determinant
chldetermbnd
3.8.3 Solution of linear equations
A. chlsolbnd
B. chldecsolbnd

3.9 Symmetric positive definite tridiagonal matrices


3.9.1 Preparatory procedure
decsymtri
3.9.2 Solution of linear equations
A. solsymtri
B. decsolsymtri

3.10 Sparse real matrices  Iterative methods


conjgrad

3.11 Similarity transformation


3.11.1 Equilibration - real matrices
A. eqilbr
B. baklbr
3.11.2 Equilibration - complex matrices
A. eqilbrcom
B. baklbrcom
3.11.3 To Hessenberg form - real symmetric
A. tfmsymtri2
B. baksymtri2
C. tfmprevec
D. tfmsymtri1
E. baksymtri1
3.11.4 To Hessenberg form - real asymmetric
A. tfmreahes
B. bakreahes1
C. bakreahes2
3.11.5 To Hessenberg form - complex Hermitian
A. hshhrmtri
B. hshhrmtrival
C. bakhrmtri
3.11.6 To Hessenberg form  Complex non-Hermitian
A. hshcomhes
B. bakcomhes

3.12 Other transformations


3.12.1 To bidiagonal form - real matrices
A. hshreabid
B. psttfmmat
C. pretfmmat

© 2004 by Chapman & Hall/CRC


3.13 The (ordinary) eigenvalue problem
3.13.1 Real symmetric tridiagonal matrices
A. valsymtri
B. vecsymtri
C. qrivalsymtri
D. qrisymtri
3.13.2 Real symmetric full matrices
A. eigvalsym2
B. eigsym2
C. eigvalsym1
D. eigsym1
E. qrivalsym2
F. qrisym
G. qrivalsym1
3.13.3 Symmetric matrices - Auxiliary procedures
A. mergesort
B. vecperm
C. rowperm
3.13.4 Symmetric matrices - Orthogonalization
orthog
3.13.5 Symmetric matrices - Iterative improvement
symeigimp
3.13.6 Asymmetric matrices in Hessenberg form
A. reavalqri
B. reaveches
C. reaqri
D. comvalqri
E. comveches
3.13.7 Real asymmetric full matrices
A. reaeigval
B. reaeig1
C. reaeig3
D. comeigval
E. comeig1
3.13.8 Complex Hermitian matrices
A. eigvalhrm
B. eighrm
C. qrivalhrm
D. qrihrm
3.13.9 Complex upper-Hessenberg matrices
A. valqricom
B. qricom
3.13.10 Complex full matrices
A. eigvalcom
B. eigcom

3.14 The generalized eigenvalue problem


3.14.1 Real asymmetric matrices
A. qzival
B. qzi

© 2004 by Chapman & Hall/CRC


C. hshdecmul
D. hestgl3
E. hestgl2
F. hsh2col
G. hsh3col
H. hsh2row3
I. hsh2row2
J. hsh3row3
K. hsh3row2

3.15 Singular values


3.15.1 Real bidiagonal matrices
A. qrisngvalbid
B. qrisngvaldecbid
3.15.2 Real full matrices
A. qrisngval
B. qrisngvaldec

3.16 Zeros of polynomials


3.16.1 Zeros of general real polynomials
A. zerpol
B. bounds
3.16.2 Zeros of orthogonal polynomials
A. allzerortpol
B. lupzerortpol
C. selzerortpol
D. alljaczer
E. alllagzer
3.16.3 Zeros of complex polynomials
comkwd

4. ANALYTIC EVALUATIONS

4.1 Evaluation of an infinite series


A. euler
B. sumposseries

4.2 Quadrature
4.2.1 One-dimensional quadrature
A. qadrat
B. integral
4.2.2 Multidimensional quadrature .
tricub
4.2.3 Gaussian quadrature - General weights
A. reccof
B. gsswts
C. gsswtssym

© 2004 by Chapman & Hall/CRC


4.2.4 Gaussian quadrature - Special weights
A. gssjacwghts
B. gsslagwghts

4.3 Numerical differentiation


4.3.1 Calculation with difference formulas
A. jacobnnf
B. jacobnmf
C. jacobnbndf

5. ANALYTIC PROBLEMS

5.1 Nonlinear equations


5.1.1 Single equation - No derivative available
A. zeroin
B. zeroinrat
5.1.2 Single equation - Derivative available
zeroinder
5.1.3 System of equations - No Jacobian matrix
A. quanewbnd
B. quanewbnd1

5.2 Unconstrained optimization


5.2.1 One variable - No derivative
minin
5.2.2 One variable - Derivative available
mininder
5.2.3 More variables - Auxiliary procedures
A. linemin
B. rnk1upd
C. davupd
D. fleupd
5.2.4 More variables - No derivatives
praxis
5.2.5 More variables - Gradient available
A. rnk1min
B. flemin

5.3 Overdetermined nonlinear systems


5.3.1 Least squares - With Jacobian matrix
A. marquardt
B. gssnewton

5.4 Differential equations  Initial value problems


5.4.1 First order - No derivatives right hand side
A. rk1
B. rke
C. rk4a
D. rk4na

© 2004 by Chapman & Hall/CRC


E. rk5na
F. multistep
G. diffsys
H. ark
I. efrk
5.4.2 First order - Jacobian matrix available
A. efsirk
B. eferk
C. liniger1vs
D. liniger2
E. gms
F. impex
5.4.3 First order - Several derivatives available
A. modifiedtaylor
B. eft
5.4.4 Second order - No derivatives right hand side
A. rk2
B. rk2n
C. rk3
D. rk3n
5.4.5 Initial boundary value problem
arkmat

5.5 Two point boundary value problems


5.5.1 Linear methods - Second order self adjoint
A. femlagsym
B. femlag
C. femlagspher
5.5.2 Linear methods - Second order skew adjoint
femlagskew
5.5.3 Linear methods - Fourth order self adjoint
femhermsym
5.5.4 Nonlinear methods
nonlinfemlagskew

5.6 Two-dimensional boundary value problems


5.6.1 Elliptic special linear systems
A. richardson
B. elimination

5.7 Parameter estimation in differential equations


5.7.1 Initial value problems
peide

6. SPECIAL FUNCTIONS

6.1 Elementary functions


6.1.1 Hyperbolic functions
A. arcsinh

© 2004 by Chapman & Hall/CRC


B. arccosh
C. arctanh
6.1.2 Logarithmic functions
logoneplusx

6.2 Exponential integral


6.2.1 Exponential integral
A. ei
B. eialpha
C. enx
D. nonexpenx
6.2.2 Sine and cosine integral
A. sincosint
B. sincosfg

6.3 Gamma function


A. recipgamma
B. gamma
C. loggamma
D. incomgam
E. incbeta
F. ibpplusn
G. ibqplusn
H. ixqfix
I. ixpfix
J. forward
K. backward

6.4 Error function


A. errorfunction
B. nonexperfc
C. inverseerrorfunction
D. fresnel
E. fg

6.5 Bessel functions of integer order


6.5.1 Bessel functions J and Y
A. bessj0
B. bessj1
C. bessj
D. bessy01
E. bessy
F. besspq0
G. besspq1
6.5.2 Bessel functions I and K
A. bessi0
B. bessi1
C. bessi
D. bessk01
E. bessk

© 2004 by Chapman & Hall/CRC


F. nonexpbessi0
G. nonexpbessi1
H. nonexpbessi
I. nonexpbessk01
J. nonexpbessk

6.6 Bessel functions of real order


6.6.1 Bessel functions J and Y
A. bessjaplusn
B. bessya01
C. bessyaplusn
D. besspqa01
E. besszeros
F. start
6.6.2 Bessel functions I and K
A. bessiaplusn
B. besska01
C. besskaplusn
D. nonexpbessiaplusn
E. nonexpbesska01
F. nonexpbesskaplusn
6.6.3 Spherical Bessel functions
A. spherbessj
B. spherbessy
C. spherbessi
D. spherbessk
E. nonexpspherbessi
F. nonexpspherbessk
6.6.4 Airy functions
A. airy
B. airyzeros

7. INTERPOLATION AND APPROXIMATION

7.1 Real data in one dimension


7.1.1 Interpolation with general polynomials
newton
7.1.2 Approximation in infinity norm
A. ini
B. sndremez
C. minmaxpol

ADDENDA

I. Fast Fourier transforms


A. cfftp
B. orderf
C. cfft2p

© 2004 by Chapman & Hall/CRC


D. cfft2r
E. Test_cfftp
F. rfftr
G. Test_rfftr

II. Time series analysis


A. powsp
B. Test_powsp
C. timser
D. Test_timser
E. timspc
F. Test_timspc

WORKED EXAMPLES

Examples for chapter 1 procedures


hshcomcol, hshcomprd
elmcomcol
rotcomcol
comabs
comsqrt
carpol
commul
comdiv
lngintadd, lngintsbtract, lngintmult, lngintdivide, lngintpower

Examples for chapter 2 procedures


derpol
allortpol
chepolsum
oddchepolsum
chepol, allchepol
fouser
jfrac
chspol, polchs
polshtchs, shtchspol
newgrn, grnnew
lintfmpol
intchs

Examples for chapter 3 procedures


determ, gsselm
decsol
gsssol
gsssolerb
decinv
gssinv
gssinverb
gssitisol
gssitisolerb

© 2004 by Chapman & Hall/CRC


chldec2, chlsol2, chlinv2
chldec1, chlsol1, chlinv1
chldecsol2, chldeterm2, chldecinv2
chldecsol1, chldeterm1, chldecinv1
determsym2
decsolsym2
lsqortdec, lsqsol, lsqdglinv
lsqortdecsol
lsqinv
lsqdecomp, lsqrefsol
solovr
solund
homsol
psdinv
solbnd, decbnd, determbnd
decsolbnd
decsoltri
soltripiv
decsoltripiv
chlsolbnd, chldecbnd, chldetermbnd
chldecsolbnd, chldetermbnd
decsolsymtri
conjgrad
eqilbrcom
hshhrmtri
valsymtri, vecsymtri
eigsym1
symeigimp
comvalqri, comveches
reaeig3
eighrm
qrihrm
valqricom
qricom
eigcom
qzival
qzi
qrisngvaldec
zerpol, bounds
allzerortpol
lupzerortpol
selzerortpol
alljaczer
alllagzer
comkwd

Examples for chapter 4 procedures


euler
sumposseries
qadrat

© 2004 by Chapman & Hall/CRC


integral
tricub
reccof
gsswtssym
gssjacwghts
gsslagwghts
jacobnnf
jacobnmf
jacobnbndf

Examples for chapter 5 procedures


zeroin
zeroinrat
zeroinder
quanewbnd1
minin
mininder
praxis
rnk1min, flemin
marquardt
gssnewton
rk1
rke
rk4a
rk4na
rk5na
multistep
diffsys
ark
efrk
efsirk
eferk
liniger1vs
liniger2
gms
impex
modifiedtaylor
eft
rk2
rk2n
rk3
rk3n
arkmat
femlagsym
femlag
femlagspher
femlagskew
femhermsym
nonlinfemlagskew
richardson

© 2004 by Chapman & Hall/CRC


elimination
peide

Examples for chapter 6 procedures


ei
eialpha
enx, nonexpenx
sincosint, sincosfg
recipgamma
gamma
loggamma
incomgam
incbeta
ibpplusn
ibqplusn
errorfunction, nonexperfc
inverseerrorfunction
fresnel, fg
bessj0, bessj1, bessj
bessy01
bessy
besspq0, besspq1
bessi, bessk
bessk01
nonexpbessk01
nonexpbessk
bessjaplusn
besspqa01
besszeros
spherbessi, nonexpspherbessi
spherbessk, nonexpspherbessk
airy
airyzeros

Examples for chapter 7 procedures


newton
ini
sndremez
minmaxpol

APPENDIX A: REFERENCES

APPENDIX B: PROCEDURES DESCRIPTION

INDEX OF PROCEDURES

© 2004 by Chapman & Hall/CRC


Addenda 749

Addenda
All procedures in this chapter are class methods of the following FFT class.

package numal;

import numal.*;

public class FFT extends Object {


// all procedures in this chapter are to be inserted here
}

I. Fast Fourier transforms

A. cfftp

Computes the values of


n −1
a k +1 = ∑ a ′j +1e 2πijk / n (k = 0, K , n − 1)
j =0
using a fast Fourier transform, where the {a’j+1} are complex numbers.

Procedure parameters:
void cfftp (a,n)
a: double a[1:2][1:n];
entry: Re(a’j+1) and Im(a’j+1) in locations (1,j+1) and (2,j+1) respectively
(j=0,..,n-1);
exit: Re(ak+1) and Im(ak+1) in locations (1,k+1) and (2,k+1) respectively
(k=0,..,n-1);
n: integer; the value of n above.

public static void cfftp(double a[][], int n)


{
int mp,m,ic,id,ill,ird,icc,iss,ick,isk,isf,iap,kd2,ibp,k,iam,ibm,mm1,i,ja,kt,ka,
ita,itb,idm1,ikt,im,jj,j,kb,kn,jf,ktp,icf,l,mm,kf,isp,k0,k1,k2,k3,ikb,ija,ii,
jk,kh;
int iwk[] = new int[6*n+150];
boolean l1,more,outloop,inloop;
boolean ll[] = new boolean[6*n+150];
double wk[] = new double[6*n+150];
double ak2[] = new double[3];
double cm,sm,c1,c2,c3,s1,s2,s3,c30,rad,a0,a1,a4,b4,a2,a3,b0,b1,b2,b3,zero,half,
one,two;
rad=2.0*Math.PI;
750 A Numerical Library in Java for Scientists and Engineers

c30=0.8660254037844386;
zero=0.0;
half=0.5;
one=1.0;
two=2.0;
cm=sm=c2=s2=c3=s3=0.0;
k2=0;
if (n == 1) return;
k = n;
m = 0;
j = 2;
jj = 4;
jf = 0;
iwk[1] = 1;
while (true) {
i = k/jj;
if (i*jj == k) {
m++;
iwk[m+1] = j;
k = i;
} else {
j += 2;
if (j == 4) j = 3;
jj = j * j;
if (jj > k) break;
}
}
kt = m;
j = 2;
while (true) {
i = k / j;
if (i*j == k) {
m++;
iwk[m+1] = j;
k = i;
} else {
j = j + 1;
if (j != 3) {
j++;
if (j > k) break;
}
}
}
k = iwk[m+1];
if (iwk[kt+1] > iwk[m+1]) k = iwk[kt+1];
if (kt > 0) {
ktp = kt + 2;
for (i=1; i<=kt; i++) {
j = ktp - i;
m++;
Addenda 751

iwk[m+1] = iwk[j];
}
}
mp = m+1;
ic = mp+1;
id = ic+mp;
ill = id+mp;
ird = ill+mp+1;
icc = ird+mp;
iss = icc+mp;
ick = iss+mp;
isk = ick+k;
icf = isk+k;
isf = icf+k;
iap = isf+k;
kd2 = (k-1) / 2 + 1;
ibp = iap + kd2;
iam = ibp + kd2;
ibm = iam + kd2;
mm1 = m-1;
i = 1;
do {
l = mp - i;
j = ic - i;
ll[ill+l] = (iwk[j-1] + iwk[j]) == 4;
if (ll[ill+l]) {
i++;
l--;
ll[ill+l] = false;
}
i++;
} while (i <= mm1);
ll[ill+1] = false;
ll[ill+mp] = false;
iwk[ic] = 1;
iwk[id] = n;
for (j=1; j<=m; j++) {
k = iwk[j+1];
iwk[ic+j] = iwk[ic+j-1] * k;
iwk[id+j] = iwk[id+j-1] / k;
wk[ird+j] = rad/iwk[ic+j];
c1 = rad/k;
if (k > 2) {
wk[icc+j] = Math.cos(c1);
wk[iss+j] = Math.sin(c1);
}
}
mm = m;
if (ll[ill+m]) mm = m - 1;
if (mm > 1) {
752 A Numerical Library in Java for Scientists and Engineers

sm = iwk[ic+mm-2] * wk[ird+m];
cm = Math.cos(sm);
sm = Math.sin(sm);
}
kb = 0;
kn = n;
jj = 0;
i = 1;
c1 = one;
s1 = zero;
l1 = true;
outloop: for (;;) {
if (ll[ill+i+1]) {
kf = 4;
i++;
} else
kf = iwk[i+1];
isp = iwk[id+i];
if (!l1) {
s1 = jj * wk[ird+i];
c1 = Math.cos(s1);
s1 = Math.sin(s1);
}
inloop: for (;;) {
if (kf <= 4) {
switch (kf) {
case 1:case 2:
k0 = kb + isp;
k2 = k0 + isp;
if (!l1) {
while (true) {
k0--;
if (k0 < kb) {
if ( i < mm ) {
i++;
continue outloop;
}
i = mm;
l1 = false;
kb = iwk[id+i-1] + kb;
if (kb >= kn) break outloop;
more=true;
while (more) {
jj = iwk[ic+i-2] + jj;
if (jj < iwk[ic+i-1]) {
more=false;
} else {
i--;
jj -= iwk[ic+i];
}
Addenda 753

}
if (i == mm) {
c2 = c1;
c1 = cm * c1 - sm * s1;
s1 = sm * c2 + cm * s1;
continue inloop;
} else {
if (ll[ill+i]) i++;
continue outloop;
}
}
k2--;
a4 = a[1][k2+1];
b4 = a[2][k2+1];
a0 = a4*c1-b4*s1;
b0 = a4*s1+b4*c1;
a[1][k2+1] = a[1][k0+1]-a0;
a[2][k2+1] = a[2][k0+1]-b0;
a[1][k0+1] = a[1][k0+1]+a0;
a[2][k0+1] = a[2][k0+1]+b0;
}
}
while (true) {
k0--;
if (k0 < kb) {
if ( i < mm ) {
i++;
continue outloop;
}
i = mm;
l1 = false;
kb = iwk[id+i-1] + kb;
if (kb >= kn) break outloop;
more=true;
while (more) {
jj = iwk[ic+i-2] + jj;
if (jj < iwk[ic+i-1]) {
more=false;
} else {
i--;
jj -= iwk[ic+i];
}
}
if (i == mm) {
c2 = c1;
c1 = cm * c1 - sm * s1;
s1 = sm * c2 + cm * s1;
continue inloop;
} else {
if (ll[ill+i]) i++;
754 A Numerical Library in Java for Scientists and Engineers

continue outloop;
}
}
k2--;
ak2[1] = a[1][k2+1];
ak2[2] = a[2][k2+1];
a[1][k2+1] = a[1][k0+1]-ak2[1];
a[2][k2+1] = a[2][k0+1]-ak2[2];
a[1][k0+1] = a[1][k0+1]+ak2[1];
a[2][k0+1] = a[2][k0+1]+ak2[2];
}

case 3:
if (!l1) {
c2 = c1 * c1 - s1 * s1;
s2 = two * c1 * s1;
}
ja = kb + isp - 1;
ka = ja + kb;
ikb = kb+1;
ija = ja+1;
for (ii=ikb; ii<=ija; ii++) {
k0 = ka - ii + 1;
k1 = k0 + isp;
k2 = k1 + isp;
a0 = a[1][k0+1];
b0 = a[2][k0+1];
if (l1) {
a1 = a[1][k1+1];
b1 = a[2][k1+1];
a2 = a[1][k2+1];
b2 = a[2][k2+1];
} else {
a4 = a[1][k1+1];
b4 = a[2][k1+1];
a1 = a4*c1-b4*s1;
b1 = a4*s1+b4*c1;
a4 = a[1][k2+1];
b4 = a[2][k2+1];
a2 = a4*c2-b4*s2;
b2 = a4*s2+b4*c2;
}
a[1][k0+1] = a0+a1+a2;
a[2][k0+1] = b0+b1+b2;
a0 = -half * (a1+a2) + a0;
a1 = (a1-a2) * c30;
b0 = -half * (b1+b2) + b0;
b1 = (b1-b2) * c30;
a[1][k1+1] = a0-b1;
a[2][k1+1] = b0+a1;
Addenda 755

a[1][k2+1] = a0+b1;
a[2][k2+1] = b0-a1;
}
if ( i < mm ) {
i++;
continue outloop;
}
i = mm;
l1 = false;
kb = iwk[id+i-1] + kb;
if (kb >= kn) break outloop;
more=true;
while (more) {
jj = iwk[ic+i-2] + jj;
if (jj < iwk[ic+i-1]) {
more=false;
} else {
i--;
jj -= iwk[ic+i];
}
}
if (i == mm) {
c2 = c1;
c1 = cm * c1 - sm * s1;
s1 = sm * c2 + cm * s1;
continue inloop;
} else {
if (ll[ill+i]) i++;
continue outloop;
}

case 4:
if (!l1) {
c2 = c1 * c1 - s1 * s1;
s2 = two * c1 * s1;
c3 = c1 * c2 - s1 * s2;
s3 = s1 * c2 + c1 * s2;
}
ja = kb + isp - 1;
ka = ja + kb;
ikb = kb+1;
ija = ja+1;
for (ii = ikb; ii<=ija; ii++) {
k0 = ka - ii + 1;
k1 = k0 + isp;
k2 = k1 + isp;
k3 = k2 + isp;
a0 = a[1][k0+1];
b0 = a[2][k0+1];
if (l1) {
756 A Numerical Library in Java for Scientists and Engineers

a1 = a[1][k1+1];
b1 = a[2][k1+1];
a2 = a[1][k2+1];
b2 = a[2][k2+1];
a3 = a[1][k3+1];
b3 = a[2][k3+1];
} else {
a4 = a[1][k1+1];
b4 = a[2][k1+1];
a1 = a4*c1-b4*s1;
b1 = a4*s1+b4*c1;
a4 = a[1][k2+1];
b4 = a[2][k2+1];
a2 = a4*c2-b4*s2;
b2 = a4*s2+b4*c2;
a4 = a[1][k3+1];
b4 = a[2][k3+1];
a3 = a4*c3-b4*s3;
b3 = a4*s3+b4*c3;
}
a[1][k0+1] = a0+a2+a1+a3;
a[2][k0+1] = b0+b1+b2+b3;
a[1][k1+1] = a0+a2-a1-a3;
a[2][k1+1] = b0+b2-b1-b3;
a[1][k2+1] = a0-a2-b1+b3;
a[2][k2+1] = b0-b2+a1-a3;
a[1][k3+1] = a0-a2+b1-b3;
a[2][k3+1] = b0-b2-a1+a3;
}

if ( i < mm ) {
i++;
continue outloop;
}
i = mm;
l1 = false;
kb += iwk[id+i-1];
if (kb >= kn) break outloop;
more=true;
while (more) {
jj = iwk[ic+i-2] + jj;
if (jj < iwk[ic+i-1]) {
more=false;
} else {
i--;
jj -= iwk[ic+i];
}
}
if (i == mm) {
c2 = c1;
Addenda 757

c1 = cm * c1 - sm * s1;
s1 = sm * c2 + cm * s1;
continue inloop;
} else {
if (ll[ill+i]) i++;
continue outloop;
}

} // end switch
}
jk = kf - 1;
kh = jk/2;
k3 = iwk[id+i-1];
k0 = kb + isp;
if (!l1) {
k = jk - 1;
wk[icf+1] = c1;
wk[isf+1] = s1;
for (j=1; j<=k; j++) {
wk[icf+j+1] = wk[icf+j] * c1 - wk[isf+j] * s1;
wk[isf+j+1] = wk[icf+j] * s1 + wk[isf+j] * c1;
}
}
if (kf != jf) {
c2 = wk[icc+i];
wk[ick+1] = c2;
wk[ick+jk] = c2;
s2 = wk[iss+i];
wk[isk+1] = s2;
wk[isk+jk] = -s2;
for (j = 1; j<=kh; j++) {
k = jk - j;
wk[ick+k] = wk[ick+j] * c2 - wk[isk+j] * s2;
wk[ick+j+1] = wk[ick+k];
wk[isk+j+1] = wk[ick+j] * s2 + wk[isk+j] * c2;
wk[isk+k] = -wk[isk+j+1];
}
}
do {
k0--;
k1 = k0;
k2 = k0 + k3;
a0 = a[1][k0+1];
b0 = a[2][k0+1];
a3 = a0;
b3 = b0;
for (j = 1; j<=kh; j++) {
k1 += isp;
k2 -= isp;
if (l1) {
758 A Numerical Library in Java for Scientists and Engineers

a1 = a[1][k1+1];
b1 = a[2][k1+1];
a2 = a[1][k2+1];
b2 = a[2][k2+1];
} else {
k = kf - j;
a4 = a[1][k1+1];
b4 = a[2][k1+1];
a1 = a4*wk[icf+j]-b4*wk[isf+j];
b1 = a4*wk[isf+j]+b4*wk[icf+j];
a4 = a[1][k2+1];
b4 = a[2][k2+1];
a2 = a4*wk[icf+k]-b4*wk[isf+k];
b2 = a4*wk[isf+k]+b4*wk[icf+k];
}
wk[iap+j] = a1 + a2;
wk[iam+j] = a1 - a2;
wk[ibp+j] = b1 + b2;
wk[ibm+j] = b1 - b2;
a3 += a1 + a2;
b3 += b1 + b2;
}
a[1][k0+1] = a3;
a[2][k0+1] = b3;
k1 = k0;
k2 = k0 + k3;
for (j=1; j<=kh; j++) {
k1 += isp;
k2 -= isp;
jk = j;
a1 = a0;
b1 = b0;
a2 = zero;
b2 = zero;
for (k=1; k<=kh; k++) {
a1 += wk[iap+k] * wk[ick+jk];
a2 += wk[iam+k] * wk[isk+jk];
b1 += wk[ibp+k] * wk[ick+jk];
b2 += wk[ibm+k] * wk[isk+jk];
jk += j;
if (jk >= kf) jk -= kf;
}
a[1][k1+1] = a1-b2;
a[2][k1+1] = b1+a2;
a[1][k2+1] = a1+b2;
a[2][k2+1] = b1-a2;
}
} while (k0 > kb);

jf = kf;
Addenda 759

if ( i < mm ) {
i++;
continue outloop;
}
i = mm;
l1 = false;
kb += iwk[id+i-1];
if (kb >= kn) break outloop;
more=true;
while (more) {
jj = iwk[ic+i-2] + jj;
if (jj < iwk[ic+i-1]) {
more=false;
} else {
i--;
jj -= iwk[ic+i];
}
}
if (i == mm) {
c2 = c1;
c1 = cm * c1 - sm * s1;
s1 = sm * c2 + cm * s1;
continue inloop;
} else {
if (ll[ill+i]) i++;
continue outloop;
}
} // inloop
} // outloop

i = 1;
ja = kt - 1;
ka = ja + 1;
if (ja >= 1) {
for (ii=1; ii<=ja; ii++) {
j = ka - ii;
iwk[j+1]--;
i = iwk[j+1] + i;
}
}
if (kt > 0) {
j = 1;
i = 0;
kb = 0;
while (true) {
k2 = iwk[id+j] + kb;
k3 = k2;
jj = iwk[ic+j-1];
jk = jj;
k0 = kb + jj;
760 A Numerical Library in Java for Scientists and Engineers

isp = iwk[ic+j] - jj;


while (true) {
k = k0 + jj;
do {
a4 = a[1][k0+1];
b4 = a[2][k0+1];
a[1][k0+1] = a[1][k2+1];
a[2][k0+1] = a[2][k2+1];
a[1][k2+1] = a4;
a[2][k2+1] = b4;
k0++;
k2++;
} while (k0 < k);
k0 += isp;
k2 += isp;
if (k0 >= k3) {
if (k0 >= k3 + isp) {
k3 += iwk[id+j];
if (k3 - kb >= iwk[id+j-1]) break;
k2 = k3 + jk;
jk += jj;
k0 = k3 - iwk[id+j] + jk;
} else
k0 = k0 - iwk[id+j] + jj;
}
}
if (j < kt) {
k = iwk[j+1] + i;
j++;
do {
i = i + 1;
iwk[ill+i] = j;
} while (i < k);
} else {
kb = k3;
if (i > 0) {
j = iwk[ill+i];
i--;
} else {
if (kb >= n) break;
j = 1;
}
}
}
}
jk = iwk[ic+kt];
isp = iwk[id+kt];
m -= kt;
kb = isp/jk-2;
if (kt >= m-1 ) return;
Addenda 761

ita = ill+kb+1;
itb = ita+jk;
idm1 = id-1;
ikt = kt+1;
im = m+1;
for (j=ikt; j<=im; j++)
iwk[idm1+j] = iwk[idm1+j]/jk;
jj = 0;
for (j = 1; j<=kb; j++) {
k = kt;
while (true) {
jj += iwk[id+k+1];
if (jj < iwk[id+k]) break;
jj -= iwk[id+k];
k++;
}
iwk[ill+j] = jj;
if (jj == j) iwk[ill+j] = -j;
}
for (j=1; j<=kb; j++) {
if (iwk[ill+j] > 0) {
k2 = j;
while (true) {
k2 = Math.abs(iwk[ill+k2]);
if (k2 == j) break;
iwk[ill+k2] = -iwk[ill+k2];
}
}
}
i = 0;
j = 0;
kb = 0;
kn = n;
while (true) {
j++;
if (iwk[ill+j] >= 0) {
k = iwk[ill+j];
k0 = jk * k + kb;
do {
a4 = a[1][k0+i+1];
b4 = a[2][k0+i+1];
wk[ita+i] = a4;
wk[itb+i] = b4;
i = i + 1;
} while (i < jk);
i = 0;
do {
k = -iwk[ill+k];
jj = k0;
k0 = jk * k + kb;
762 A Numerical Library in Java for Scientists and Engineers

do {
a[1][jj+i+1] = a[1][k0+i+1];
a[2][jj+i+1] = a[2][k0+i+1];
i++;
} while (i < jk);
i = 0;
} while (k != j);
do {
a[1][k0+i+1] = wk[ita+i];
a[2][k0+i+1] = wk[itb+i];
i++;
} while (i < jk);
i = 0;
if (j >= k2) {
j = 0;
kb += isp;
if (kb >= kn) break;
}
}
}
}

B. orderf

Replaces the numbers in locations (i,j+1) (j=0,1,…,2m-1; i=1,2) of the real array A
by those in the locations (i,r(j)+1) (j=0,1,...,2m-1; i=1,2) where when
m −1 m −1
j = ∑ d υ 2υ (dυ = 0 or 1), r ( j ) = ∑ d m −υ −1 2υ .
υ =0 υ =0

Procedure parameters:
void orderf (a,m)
a: double a[1:2][1:2m]; the array A above;
m: integer; the value of m above.

public static void orderf(double a[][], int m)


{
int i,mp,k,j,jj,jk,n2,n4,n8,lm,nn;
int iwk[] = new int[m+2];
double temp[] = new double[3];

if (m <= 1) return;
n8=0;
mp = m+1;
jj = 1;
iwk[1] = 1;
for (i = 2; i<=mp; i++)
Addenda 763

iwk[i] = iwk[i-1] * 2;
n4 = iwk[mp-2];
if (m > 2) n8 = iwk[mp-3];
n2 = iwk[mp-1];
lm = n2;
nn = iwk[mp]+1;
mp -= 4;
j = 2;
do {
jk = jj + n2;
temp[1] = a[1][j];
temp[2] = a[2][j];
a[1][j] = a[1][jk];
a[2][j] = a[2][jk];
a[1][jk] = temp[1];
a[2][jk] = temp[2];
j++;
if (jj <= n4) {
jj += n4;
} else {
jj -= n4;
if (jj <= n8) {
jj += n8;
} else {
jj -= n8;
k = mp;
while (iwk[k] < jj) {
jj -= iwk[k];
k--;
}
jj += iwk[k];
}
}
if (jj > j) {
k = nn - j;
jk = nn - jj;
temp[1] = a[1][j];
temp[2] = a[2][j];
a[1][j] = a[1][jj];
a[2][j] = a[2][jj];
a[1][jj] = temp[1];
a[2][jj] = temp[2];
temp[1] = a[1][k];
temp[2] = a[2][k];
a[1][k] = a[1][jk];
a[2][k] = a[2][jk];
a[1][jk] = temp[1];
a[2][jk] = temp[2];
}
j++;
764 A Numerical Library in Java for Scientists and Engineers

} while (j <= lm);


}

C. cfft2p

Computes the values of


n −1
ar ( k )+1 = ∑ a′j +1e 2πijk / n (k = 0, K , n − 1)
j =0
using a fast Fourier transform, where the {a’j+1} are complex numbers, n=2m, and
with
m −1 m −1
k = ∑ d υ 2υ (dυ = 0 or 1), r (k ) = ∑ d m −υ −1 2υ (k = 0,K, n − 1) .
υ =0 υ =0

Procedure parameters:
void cfft2p (a,m)
a: double a[1:2][1:n];
entry: the values of Re(a’j+1) and Im(a’j+1) in locations (1,j+1) and (2,j+1)
respectively (j=0,..,n-1);
exit: the values of Re(ar(k)+1) and Im(ar(k)+1) in locations (1,k+1) and (2,k+1)
respectively (k=0,..,n-1);
m: integer; the value of m above.

public static void cfft2p(double a[][], int m)


{
int i,mp,k,j,jj,mm,n,kb,mk,kn,k0,k1,k2,k3,isp,jsp;
int iwk[] = new int[m+2];
double ak2[] = new double[3];
double zero,one,rad,c1,c2,c3,s1,s2,s3,ck,sk,sq,a0,a1,a2,a3,b0,b1,b2,b3,temp;

sq=0.7071067811865475;
sk=0.3826834323650898;
ck=0.9238795325112868;
zero=0.0;
one=1.0;
c2=c3=s2=s3=0.0;
k3=0;
mp = m+1;
n = (int)Math.pow(2,m);
iwk[1] = 1;
mm = (m/2)*2;
kn = n+1;
for (i=2;i<=mp;i++)
iwk[i] = iwk[i-1]+iwk[i-1];
rad = (2.0*Math.PI)/n;
mk = m - 4;
Addenda 765

kb = 1;
if (mm != m) {
k2 = kn;
k0 = iwk[mm+1] + kb;
do {
k2--;
k0--;
ak2[1] = a[1][k2];
ak2[2] = a[2][k2];
a[1][k2] = a[1][k0] - ak2[1];
a[2][k2] = a[2][k0] - ak2[2];
a[1][k0] = a[1][k0] + ak2[1];
a[2][k0] = a[2][k0] + ak2[2];
} while (k0 > kb);
}
c1 = one;
s1 = zero;
jj = 0;
k = mm - 1;
j = 4;
if (k < 1) return;
isp = iwk[k];
if (jj != 0) {
c2 = jj * isp * rad;
c1 = Math.cos(c2);
s1 = Math.sin(c2);
c2 = c1 * c1 - s1 * s1;
s2 = c1 * (s1 + s1);
c3 = c2 * c1 - s2 * s1;
s3 = c2 * s1 + s2 * c1;
}
while (true) {
jsp = isp + kb;
for (i=1;i<=isp;i++) {
k0 = jsp - i;
k1 = k0 + isp;
k2 = k1 + isp;
k3 = k2 + isp;
a0 = a[1][k0];
b0 = a[2][k0];
a1 = a[1][k1];
b1 = a[2][k1];
a2 = a[1][k2];
b2 = a[2][k2];
a3 = a[1][k3];
b3 = a[2][k3];
if (s1 != zero) {
temp = a1;
a1 = a1 * c1 - b1 * s1;
b1 = temp * s1 + b1 * c1;
766 A Numerical Library in Java for Scientists and Engineers

temp = a2;
a2 = a2 * c2 - b2 * s2;
b2 = temp * s2 + b2 * c2;
temp = a3;
a3 = a3 * c3 - b3 * s3;
b3 = temp * s3 + b3 * c3;
}
temp = a0 + a2;
a2 = a0 - a2;
a0 = temp;
temp = a1 + a3;
a3 = a1 - a3;
a1 = temp;
temp = b0 + b2;
b2 = b0 - b2;
b0 = temp;
temp = b1 + b3;
b3 = b1 - b3;
b1 = temp;
a[1][k0] = a0+a1;
a[2][k0] = b0+b1;
a[1][k1] = a0-a1;
a[2][k1] = b0-b1;
a[1][k2] = a2-b3;
a[2][k2] = b2+a3;
a[1][k3] = a2+b3;
a[2][k3] = b2-a3;
}
if (k > 1) {
k -= 2;
isp = iwk[k];
if (jj != 0) {
c2 = jj * isp * rad;
c1 = Math.cos(c2);
s1 = Math.sin(c2);
c2 = c1 * c1 - s1 * s1;
s2 = c1 * (s1 + s1);
c3 = c2 * c1 - s2 * s1;
s3 = c2 * s1 + s2 * c1;
}
} else {
kb = k3 + isp;
if (kn <= kb) return;
if (j == 1) {
k = 3;
j = mk;
while (true) {
if (iwk[j] > jj) break;
jj -= iwk[j];
j--;
Addenda 767

if (iwk[j] > jj) break;


jj -= iwk[j];
j--;
k += 2;
}
jj += iwk[j];
j = 4;
isp = iwk[k];
if (jj != 0) {
c2 = jj * isp * rad;
c1 = Math.cos(c2);
s1 = Math.sin(c2);
c2 = c1 * c1 - s1 * s1;
s2 = c1 * (s1 + s1);
c3 = c2 * c1 - s2 * s1;
s3 = c2 * s1 + s2 * c1;
}
} else {
j--;
c2 = c1;
if (j == 2) {
c1 = c1 * ck + s1 * sk;
s1 = s1 * ck - c2 * sk;
} else {
c1 = (c1 - s1) * sq;
s1 = (c2 + s1) * sq;
}
c2 = c1 * c1 - s1 * s1;
s2 = c1 * (s1 + s1);
c3 = c2 * c1 - s2 * s1;
s3 = c2 * s1 + s2 * c1;
}
}
}
}

D. cfft2r

Computes the values of


n −1
ak +1 = ∑ ar′ ( j )+1e 2πijk / n (k = 0,K, n − 1)
j =0
where the {a’r(j)+1} are complex numbers, n=2m, and with
m −1 m −1
j = ∑ d υ 2υ (dυ = 0 or 1), r ( j ) = ∑ d m −υ −1 2υ ( j = 0,K, n − 1)
υ =0 υ =0
r(j) being the binary permutation of the numbers 0,…,n-1 of the procedure orderf.
768 A Numerical Library in Java for Scientists and Engineers

Procedure parameters:
void cfft2r (a,m)
a: double a[1:2][1:n];
entry: the values of Re(a’r(j)+1) and Im(a’r(j)+1) in locations (1,j+1) and (2,j+1)
respectively (j=0,..,n-1);
exit: the values of Re(ak+1) and Im(ak+1) in locations (1,k+1) and (2,k+1)
respectively (k=0,..,n-1);
m: integer; the value of m above.

public static void cfft2r(double a[][], int m)


{
int i,mp1,k,j,jj,n,kb,kn,ks,mk,k0,k1,k2,k3,k4,nt,isp;
int iwk[] = new int[m+2];
double ak2[] = new double[3];
double rad,c1,c2,c3,s1,s2,s3,ck,sk,sq,a0,a1,a2,a3,b0,b1,b2,b3,zero,one,pie,tr,ti,
temp;

sq=0.7071067811865475;
sk=0.3826834323650898;
ck=0.9238795325112867;
zero=0.0;
one=1.0;
if (m == 0) return;
n = (int)Math.pow(2,m);
c2=c3=s2=s3=0.0;
mp1 = m + 1;
iwk[1] = 1;
kn = 0;
k4 = 4;
mk = m - 3;
ks = 1;
for (i=2; i<=mp1; i++) {
ks = ks + ks;
iwk[i] = ks;
}
rad = Math.PI / ks;
do {
kb = kn + k4;
kn += ks;
if (m != 1) {
jj = 0;
k = 1;
j = mk;
nt = 3;
c1 = one;
isp = iwk[k];
s1 = zero;
if (jj != 0) {
c2 = jj * isp * rad;
Addenda 769

c1 = Math.cos(c2);
s1 = Math.sin(c2);
c2 = c1 * c1 - s1 * s1;
s2 = 2 * c1 * s1;
c3 = c1 * c2 - s1 * s2;
s3 = s1 * c2 + c1 * s2;
}
k3 = kb - isp + 1;
while (true) {
k2 = k3 - isp;
k1 = k2 - isp;
k0 = k1 - isp;
a0 = a[1][k0];
b0 = a[2][k0];
a1 = a[1][k1];
b1 = a[2][k1];
a2 = a[1][k2];
b2 = a[2][k2];
a3 = a[1][k3];
b3 = a[2][k3];
temp = a0 + a1;
a1 = a0 - a1;
a0 = temp;
temp = a2 + a3;
a3 = a2 - a3;
a2 = temp;
temp = b0 + b1;
b1 = b0 - b1;
b0 = temp;
temp = b2 + b3;
b3 = b2 - b3;
b2 = temp;
a[1][k0] = a0+a2;
a[2][k0] = b0+b2;
if (s1 == zero) {
a[1][k1] = a1-b3;
a[2][k1] = b1+a3;
a[1][k2] = a0-a2;
a[2][k2] = b0-b2;
a[1][k3] = a1+b3;
a[2][k3] = b1-a3;
} else {
tr = a1 - b3;
ti = b1 + a3;
a[1][k1] = tr*c1-ti*s1;
a[2][k1] = tr*s1+ti*c1;
tr = a0 - a2;
ti = b0 - b2;
a[1][k2] = tr*c2-ti*s2;
a[2][k2] = tr*s2+ti*c2;
770 A Numerical Library in Java for Scientists and Engineers

tr = a1 + b3;
ti = b1 - a3;
a[1][k3] = tr*c3-ti*s3;
a[2][k3] = tr*s3+ti*c3;
}
k3++;
if (k3 > kb) {
nt--;
if (nt >= 0) {
c2 = c1;
if (nt != 1) {
c1 = (c1 - s1) * sq;
s1 = (c2 + s1) * sq;
} else {
c1 = c1 * ck + s1 * sk;
s1 = s1 * ck - c2 * sk;
}
kb += k4;
if (kb <= kn) {
c2 = c1 * c1 - s1 * s1;
s2 = 2 * c1 * s1;
c3 = c1 * c2 - s1 * s2;
s3 = s1 * c2 + c1 * s2;
k3 = kb - isp + 1;
} else
break;
} else {
if (nt == -1) {
k = 3;
isp = iwk[k];
s1 = zero;
if (jj != 0) {
c2 = jj * isp * rad;
c1 = Math.cos(c2);
s1 = Math.sin(c2);
c2 = c1 * c1 - s1 * s1;
s2 = 2 * c1 * s1;
c3 = c1 * c2 - s1 * s2;
s3 = s1 * c2 + c1 * s2;
}
k3 = kb - isp + 1;
} else {
if (iwk[j] <= jj) {
jj -= iwk[j];
j--;
if (iwk[j] <= jj) {
jj -= iwk[j];
j--;
k += 2;
} else {
Addenda 771

jj += iwk[j];
j = mk;
}
} else {
jj += iwk[j];
j = mk;
}
if (j < mk) {
isp = iwk[k];
s1 = zero;
if (jj != 0) {
c2 = jj * isp * rad;
c1 = Math.cos(c2);
s1 = Math.sin(c2);
c2 = c1 * c1 - s1 * s1;
s2 = 2 * c1 * s1;
c3 = c1 * c2 - s1 * s2;
s3 = s1 * c2 + c1 * s2;
}
k3 = kb - isp + 1;
} else {
k = 1;
nt = 3;
kb += k4;
if (kb <= kn) {
isp = iwk[k];
s1 = zero;
if (jj != 0) {
c2 = jj * isp * rad;
c1 = Math.cos(c2);
s1 = Math.sin(c2);
c2 = c1 * c1 - s1 * s1;
s2 = 2 * c1 * s1;
c3 = c1 * c2 - s1 * s2;
s3 = s1 * c2 + c1 * s2;
}
k3 = kb - isp + 1;
} else
break;
}
}
}
}
}
}
k = (m/2) * 2;
if (k != m) {
k2 = kn + 1;
j = kn - iwk[k+1] + 1;
k0 = j;
772 A Numerical Library in Java for Scientists and Engineers

do {
k2--;
k0--;
ak2[1] = a[1][k2];
ak2[2] = a[2][k2];
a[1][k2] = a[1][k0] - ak2[1];
a[2][k2] = a[2][k0] - ak2[2];
a[1][k0] = a[1][k0] + ak2[1];
a[2][k0] = a[2][k0] + ak2[2];
} while (k2 > j);
}
} while (kn < n);
}

E. Test_cfftp

Procedures tested: cfftp, cfft2p, cfft2r, orderf.

Example:
Computes
n −1
{ }
(1) a k +1 = ∑ e
2 ij β + πnk

j =0

sin(nβ )
(2) = [cos{(n − 1)β − πnk } + i sin{(n − 1)β − πnk }] (k = 0, K, n − 1)
sin (β + πnk )
with β = 0.001 − 
a) when n=25 by a call of cfftp,
b) when n=32 by a call of cfft2p, and
c) when n=16 by a call of cfft2r.

package numal;

import java.text.DecimalFormat;
import numal.*;

public class Test_cfftp extends Object {

public static void main(String args[]) {

double beta;
double a[][] = new double[3][301];

Test_cfftp testcfftp = new Test_cfftp();


beta=0.001-Math.PI;
testcfftp.setfft(a,25,beta);
FFT.cfftp(a,25);
Other documents randomly have
different content
(distribution list—over)
Distribution list:
General Staff of the Army—1st copy.
Chief of Ordnance and Commander of Replacement Army—2nd copy.
High Command of the Navy Sea Warfare Diary—3rd copy.
High Command of the Air Force command staff—4th copy.
Commanding Officer of the Armed Forces in Norway—5th copy.
Commanding Officer of the Armed Forces in The Netherlands—6th
copy.
Commanding Officer of the Armed Forces in the South-east—7th
copy.
Commanding Officer of the Armed Forces in The Eastern Territory
(Ostland)—8th copy.
Commanding Officer of the Armed Forces in the Ukraine—9th copy.
High Command West—10th copy.
High Command 20th Mountain army—11th copy.
(GEB.) AOH 20)

Commanding Officer of German troops in Denmark—12th copy.


(Bfh. d. dt. Tr. in Denmark)
High Command South—13th copy.
Tank Army—Africa—14th copy.
German General in Headquarters of Italian Armed Forces—15th
copy.
Reich Fuehrer SS and Chief of German Police and Main Bureau for
Security Police—16th and 17th copies.
High Command of the Armed Forces:
Foreign Counter Intelligence—18th copy.
Armed Forces legal section (WR)—19th copy.
Armed Forces propaganda section (PR)—20th copy.
Armed Forces Command Staff, Quartermaster inclusive file copy—
21st copy.
War Diary (KtC)—22nd copy.

Top Secret

By officer only

The Fuehrer and Commander in Chief of the Armed Forces

18 K
I have been compelled to issue strict orders for the destruction of
enemy sabotage troops and to declare non-compliance with these
orders severely punishable. I deem it necessary to announce to the
competent commanding officers and commanders the reasons for
this decree.
As in no previous war, a method of destruction of communications
behind the front, intimidation of the populace working for Germany,
as well as the destruction of war-important industrial plants in
territories occupied by us has been developed in this war.
In the east, this type of combat in the form of partisan warfare as
early as last winter led to severe encroachment upon our fighting
strength and cost the lives of numerous German soldiers, railroad
workers, members of the labor corps [Organization Todt], the labor
service, etc. It severely interfered with and sometimes delayed for
days, the performance of transportation necessary for the
maintenance of the fighting strength of the troops. By a successful
continuation or perhaps even intensification of this form of war, a
grave crisis in one or another place at the front might develop. Many
measures against these horrible, as well as wily, sabotage activities
have failed, simply because the German officer and his soldiers were
not aware of the great danger confronting them and therefore in
individual cases did not act against these enemy groups as would
have been necessary in order to help the forward echelons of the
front thereby the entire conduct of the war.
It was therefore in part necessary in the East to organize special
units who mastered this danger or to assign this task to special SS
formations.
Only where the fight against this partisan disgrace was begun and
executed with ruthless brutality were results achieved which eased
the position of the fighting front.
In all eastern territories the war against the partisans is therefore a
struggle of absolute annihilation of one or the other part.
As soon as the realization of this fact becomes the common
knowledge of troops, they will regularly be able to cope with these
occurrences in short order; otherwise their efforts achieve no
decisive results and become purposeless.
Even though under a different name, England and America have
decided upon a similar kind of warfare, while the Russian attempts
to put partisan troops behind our front by land and only in
exceptional cases uses air transportation to land men and to drop
supplies, England and America use this method of warfare primarily
by landing sabotage troops from submarines or pneumatic boats or
by means of parachute agents. Essentially, however, this form of
warfare does not differ from the activities of the Russian partisans.
For it is the task of these troops:
1. to build up a general espionage service with the assistance of
willing natives,
2. to organize troops of terrorists and supply them with the
necessary weapons and explosives,
3. to undertake sabotage activities which by destruction of traffic
installations, not only continuously disrupt our communications, but
also, when things become serious, make troop movements
absolutely impossible and eliminate our communications system.
Finally, these troops are to make attacks on war-important
installations, in which, according to a scientifically worked out
program, they destroy key works by dynamiting, thereby forcing
whole industries into idleness.
The consequences of these activities are of extraordinary weight. I
do not know whether each commander and officer is cognizant of
the fact that the destruction of one single electric power plant, for
instance, can deprive the Luftwaffe of many thousand tons of
aluminum, thereby eliminating the construction of countless aircraft
that will be missed in the fight at the front and so contribute to
serious damage of the Homeland as well as bloody losses of the
fighting soldiers.
Yet this form of war is completely without danger for the adversary.
Since he lands his sabotage troops in uniform but at the same time
supplies them with civilian clothes, they can, according to need,
appear as soldiers or civilians. While they themselves have orders to
ruthlessly remove any German soldiers or even natives who get in
their way, they run no danger of suffering really serious losses in
their operations, since at the worst, if they are caught, they can
immediately surrender and thus believe that they will theoretically
fall under the provisions of the Geneva Convention. There is no
doubt, however, that this is a misuse in the worst form of the
Geneva agreements, especially since part of these elements are
even criminals, liberated from prisons, who can rehabilitate
themselves through these activities.
England and America will therefore always be able to find volunteers
for this kind of warfare, as long as they can truthfully assure them
that there is no danger of loss of life for them. At worst, all they
have to do is to successfully commit their attack on people, traffic
installations, or other installations, and upon being encountered by
the enemy, to capitulate.
If the German conduct of war is not to suffer grievous damage
through these incidents, it must be made clear to the adversary that
all sabotage troops will be exterminated, without exception, to the
last man.
This means that their chance of escaping with their lives is nil. Under
no circumstances can it be permitted, therefore, that a dynamite,
sabotage, or terrorist unit simply allows itself to be captured,
expecting to be treated according to rules of the Geneva Convention.
It must under all circumstances be ruthlessly exterminated.
The report on this subject appearing in the Armed Forces
communique will briefly and laconically state that a sabotage, terror,
or destruction unit has been encountered and exterminated to the
last man.
I therefore expect the commanding officers of armies subordinated
to them as well as individual commanders not only to realize the
necessity of taking such measures, but to carry out this order with
all energy. Officers and noncommissioned officers who fail through
some weakness are to be reported without fail, or under
circumstances—when there is danger in delay—to be at once made
strictly accountable. The Homeland as well as the fighting soldier at
the front has the right to expect that behind their back the essentials
of nourishment as well as the supply of war-important weapons and
ammunition remains secure.
These are the reason for the issuance of this decree.
If it should become necessary, for reasons of interrogation, to
initially spare one man or two, then they are to be shot immediately
after interrogation.
(signed) A. Hitler
TRANSLATION OF DOCUMENT
506-PS
Draft

WFSt/Qu (Verw. 1)
Nr 006580/44 g.Kdos

Fuehrer Headquarters, 22 June 1944

TOP SECRET

2 copies—1st copy
Reference: WR 2 f 10.34 (III/10) Nr 158/44 g.Kdos.-119/44 V—of
17 June 1944
Subject: Enemy agents—Fuehrer order 003830/42 g.Kdos/OKW
/WFSt of 18 October 42
To: W R
WFSt agrees with the view taken in the letter of the Judge Advocate
of the Army group with the Supreme Commander South-west of 20
May 44 (Br. B Nr 68/44 g.K.). The Fuehrer order is to be applied
even if the enemy employs only one person for a task. Therefore, it
does not make any difference if several persons or a single person
take part in a commando operation. The reason for the special
treatment of participants in a commando operation is that such
operations do not correspond to the German concept of usage and
customs of (land) warfare.
By direction
initialled: W
3 inclosures [Warlimont]
[Following is an attached handwritten note]

Qu 2 W
All questions connected to the commando order (18 Oct 42) are to
be handled according to a previous directive of Chef Qu at Qu 2 (W)
page 2140, not at administration.
[initial illegible]

TRANSLATION OF DOCUMENT
508-PS
TOP SECRET

WFSt/Op (L)

Fuehrer's Headquarters November 21, 1942


5 copies, 5th copy
Subject: Landing of British Freight Gliders in Norway. [Illegible
signature] 2/40/43
Note
Supplement to situation report OKW/WFSt/Op. 21 Nov. 42.
Air Force 5, G-2 Capt. S. Lilienskjold reports 21 Nov. by telephone to
inquiry:
1. Following supplementary report is made about landing of a British
freight glider at Hegers in the night of November 11:
a. No firing on the part of German defense.
b. The towing plane (Wellington) has crashed after touching the
ground, 7 man crew dead. The attached freight glider also crashed,
of the 17-man crew 14 alive. Indisputably a sabotage force. Fuehrer
order has been carried out.
2. In the same night a second freight glider landed East of
Stavanger. 3 men of the crew were captured by the Norwegian
police on November 21. They state that after it was detached the
freight glider made a crash-landing at the Lyse Fjord in the night of
Nov. 20; it had a crew of 16. Supposedly several dead and wounded.
The landing occurred on the North shore of the Fjord, opposite the
electric plant of Floerly (supplies Stavanger).
The plane has not yet been found. Each and every possible measure
to find it and also to seize the other members of the crew has been
initiated by the service district.
The towing plane has apparently returned to England. The radio
communication was monitored by Air Fleet #5.
[signed] W
Went out Nov. 11, 42
Distribution:
Chief of Operational Staff of the Armed Forces (previous telephone
report).
Asst. Chief (Ktb).
Operations (Army).
Operations (Navy).
Operations (Air Force).

TOP SECRET

F. Amt. Ausl./Abw
Ag Ausl. Nr. 1951/42 gKdos Ausl. Chef
F XVI, E 1/e

Berlin, 4 December, 1942


3 copies, 1st copy

To: WFSt
For: Information
From: Abw III.
Subject: Fuehrer order of 18 Oct. 42, about treatment of enemy
sabotage troops.
Attached copies of two teletype messages of the Norway counter
intelligence are hereby forwarded, referring to the order contained in
the last paragraph of the 2nd teletype order of the Military
commander of Norway.
It is asked that it should be examined how far this order is
compatible with the above discussed Fuehrer order.
By direction
[Illegible signature]
[Warlimont's initials] 8/12

Copy

TOP SECRET

1. Teletype to: O K W/Abw III F


Subject: Commando Raid.
On November 20, 1942, at 5:50 an enemy plane was found 15 km
NE of Egersund. It is a British aircraft (towed glider) made of wood
without engine. Of the 17 member crew 3 are dead, 6 are severely
the others slightly wounded.
All wore English khaki uniforms without sleeve-insignia. Furthermore
following items were found: 8 knapsacks, tents, skiis and radio,
exact number is unknown. The glider carried rifles, light machine
guns, and machine pistols, number unknown. At present the
prisoners are with the battalion in Egersund.
A second plane has crashed 5 km East of Helleland. It had a 6-man
crew and is supposed to have towed the above glider.
The artillery officer of Stavanger is still at the scene of the incident.
Further exact report follows; new annexes attached. The competent
commander's staff (KDS) was immediately notified on the basis of
the Fuehrer order. Foreign agency Norway, Nov. 20, 42, No.
34304/42

TOP SECRET III F

2. Teletype to: OKW/Amt Ausl./Abw III F


Reference: Our No 3/304/42 g.Kdos III F of 20 Nov 42.
Subject: Commando Raid.
Foreign service (AST) reports to above teletype:
Besides the 17 member crew, extensive sabotage material and work
equipment were found. Therefore the sabotage purpose was
absolutely proved. The 280th inf. div. ordered the execution of the
action according to the Fuehrer's order. The execution was carried
out toward the evening of Nov. 20. Some of the prisoners wore blue
ski-suits under their khaki uniforms which had no insignia on the
sleeves. During a short interrogation the survivors have revealed
nothing but their names, ranks, and serial numbers.
The salvage of the sabotage material was performed by the
commander's staff (Kds) of Stavanger. The 2nd aircraft mentioned in
the above report is a two-engine plane and was probably the towing
plane. It will be inspected. In the same night of the 19th to 20th
Nov. a second glider plane was landed at the Lysefjord, 20 km East
of Stavanger, 8 km East of the electric plant of Floerly. Until now 3
men, presumably English, were captured by the Norwegian police.
The police are on the way to conduct a search for the plane.
Supposedly dead and wounded lie around it. According to the
statements of the prisoners, this freight gilder is supposed to have a
16-man crew. It is possible that this freight glider was towed by the
same enemy plane which towed the glider found 15 km North East
of Egersund. The armed forces commander of Norway was notified.
Refer. at III Wi and Ag WNV/Fu, Oslo.
In connection with the shooting of the 17 members of the crew, the
armed forces commander of Norway (WBN) has issued an order to
the district commanders, according to which the interrogations by G-
2 and by BDS are important before the execution of the Fuehrer
order; in case of no. 4 of the Fuehrer order the prisoners are to be
handed out to the BDS.
Foreign agency (Ast) Norway, No. 3/304/42 III F. g.Kdos

TRANSLATION OF DOCUMENT
509-PS
TOP SECRET

Telegraph Office: GWNOL

Date: 7 Nov. 1943

SSD WAQC 0183 7/11 1112 DGZ


To Supreme Command of the Armed Forces/Wehrmacht
Fuehrungsstab/Roem I c GKDOS (TOP SECRET).
Subject: British Commando—Operation in Northwest.
Pescara, 2 Nov. 43.
3 commandos—special treatment—remaining 9 men wounded, in
hospital.
OB SUED F.A. ROEM Ic Nr 7595/43 TOP SECRET

TRANSLATION OF DOCUMENT
512-PS
TOP SECRET

SSD HOSX 4041 13/12 1400—OKW/WFSt


According to the last sentence of the Fuehrer order of 18th October
(CHEFS), individual saboteurs can be spared for the time being in
order to keep them for interrogation. The importance of this
measure was proven in the cases of Glomfjord, Two man torpedo
Drontheim, and glider plane stavanger, where interrogations resulted
in valuable knowledge of enemy intentions. Since in the case of
Egersund the saboteur was liquidated immediately and no clues
were won; therefore, armed forces commander referred to above
mentioned last sentence of the Fuehrer order (liquidation only after
short interrogation).
The Red Cross and the BDS protested after the immediate carrying
out of the Fuehrer order in the case of Egersund and intend for their
part to bring up the whole question as a matter of principle.
WBN ROEM One A number 5409/42 GKDOS

TOP SECRET

14 December 1942
SSD—Telegram
[illegible pencil remarks]
To: Supreme Command Armed Forces Foreign Department.
For information: Commander Armed Forces Norway Supreme
Command Armed Forces Counter Intelligence Service.
Reference: AG Ausl. number 1951/42 Top Secret of 4 December
1942. (Commander Armed Forces Norway I a number 5409/42 Top
Secret of 13 December 1942).
Subject: Commando Operations.
It is reported that the armed forces commander Norway intends to
spare individual saboteurs for the time being in order to have them
interrogated. This intention corresponds to the last paragraph of the
order OKW/WFSt/QU. number 551781/42 top secret CHEFS of 19th
October 1942.
OKW/WFSt/Qu (III)
Number 004872/42 Top Secret
W [Initialled Warlimont]

TRANSLATION OF DOCUMENT
526-PS
WFSt/Qu (III)
Subject: Saboteurs, Toftefjord.

10. 5. 1943

TOP SECRET

Notice
On the 30. 3. 1943 in Toftefjord (70° Lat.) an enemy cutter was
sighted, cutter was blown up by the enemy. Crew: 2 dead men, 10
prisoners.
Cutter was sent from Scalloway (Shetland Is.) by the Norwegian
Navy.
Armament: 2 Colt—MG's, 2 mounted MG's, a small transmitter. In
addition there were supposed to have been 4 MG's, 6 sub-machine
guns and 1,000 kg of explosives on board.
Captain of the Cutter: Norwegian, Lt. Eskeland.
Purpose: Construction of an organization for sabotaging of
strongpoints, battery positions, staff and troop billets and bridges.
Assigner of Mission in London: Norwegian, Maj. Munthe.
Fuehrer order executed by S.D. [Security Service].
Wehrmacht Report of 6.4 announces the following about it:
In Northern Norway an enemy sabotage-unit was engaged and
destroyed on approaching the coast.

TRANSLATION OF DOCUMENT
531-PS
Armed Forces Operational Staff
Qm (Adm. 1)
No. 006688/44 Top Secret

Fuehrer's Hq, 23 June 1944

TOP SECRET

3 copies—1st copy
Reference: Fuehrer Order No. 003832/42/OKW/WFSt of 18 Oct 42.
Subject: Treatment of Commando Men.
Conference memorandum
Supreme Command West reports by teletype message No 1750/44
Top Secret of 23 June 44:
The treatment of enemy commando groups has so far been carried
out according to the order referred to. With the large-scale landing
achieved, a new situation has arisen. The order referred to directs in
number 5 that enemy soldiers who are taken prisoner in open
combat or surrender within the limits of normal combat operations
(large-scale landing operations and undertakings) are not to be
treated according to numbers 3 and 4. It must be established in a
form easily understood by the troops how far the concept "within the
limits of normal combat operations, etc." is to be extended. The view
of the Supreme Command West is as follows:
A. The commitment of air-borne troops and commandos effected in
Normandy falls clearly under number 5.
B. It is likewise not to be contested that paratroop units or groups
set down further to the rear are connected with the large-scale
landing operation effected, if they have the mission of breaking
supply lines or carrying out deceptive maneuvers etc. The German
combat soldier will not always be able, during battle, to decide
whether it is a question of sabotage groups parachuted down or
larger air-borne operations in closer or more distant connection with
a landing from the sea already carried out or still being carried out.
C. As a result of the large turn-over of troops in the area of the
Supreme Command West, especially recently, it is possible that a
considerable number of soldiers are ignorant of the order referred
to, which dates from more than 1-1/2 years ago. For Germans from
foreign countries (Volksdeutsche) and foreign nationalities the
differentiation in the treatment of prisoners will hardly be able to be
made clear due to language difficulties. A further reproduction of the
order in the present situation, where cases of losses must be
considered, is held by Supreme Command West to be a false course
of action. Considerable reprisals against our own prisoners must be
expected if its contents become known.
D. The application of number 5 for all enemy soldiers in uniform
penetrating from the outside into the occupied western areas is held
by Supreme Command West to be the most correct and clearest
solution. On the other hand an order of the chief office for Reich
security to the commander of the SIPO (Security Police) and the SD
(Security Service) in Paris has decided that numbers 3 and 4 of the
order referred to are to be applied in the future the same as before
in the case of uniformed parachutists committed in groups. A
conversation with representatives of the higher SS and police
fuehrers in France and of the commander of the SIPO and SD in
Paris gave the result that according to the opinion of all concerned
the difficulty lies in the determination of the "limits of normal combat
operations". As a solution it was agreed to set a line (e.g. Seine from
the mouth to Rouen-Argentan-Avranches) North of which number 5,
inland of which numbers 3 and 4 apply. This solution also must be
called incomplete, since the combat situation can at any time bring
the necessity of extending this line to other coastal areas as well. In
case of a large-scale aerial landing in the interior such boundaries
cannot be drawn anymore at all. Supreme Command West requests,
therefore, that, in agreement with the Reichsfuehrer SS, the decision
be made, that, in view of the new situation, number 5 is to be
applied in the whole occupied Western area.
Position taken by Armed Forces Operational Staff:
1. The Commando order remains basically in effect even after the
enemy landing in the west.
2. Number 5 of the order is to be clarified to the effect, that the
order is not valid for those enemy soldiers in uniform, who are
captured in open combat in the immediate combat area of the
beachhead by our troops committed there, or who surrender. Our
troops committed in the immediate combat area means the divisions
fighting on the front line as well as reserves up to and including
corps headquarters.
3. Furthermore, in doubtful cases enemy personnel who have fallen
into our hands alive are to be turned over to the SD, upon whom it
is encumbent to determine whether the commando order is to be
applied or not.
4. Supreme Command West is to see to it that all units committed in
its zone are orally acquainted in a suitable manner with the order
concerning the treatment of members of commando undertakings of
18 Oct 42 along with the above explanation.
Proposal:
Attached teletype message.
signed: WARLIMONT

Distribution:
Chief of the Supreme Command of the Armed Forces—1 copy
through Deputy Commander of the Armed Forces Operational Staff.
Ktb, 2 copies.
Qu—Draft, 3 copies.

TRANSLATION OF DOCUMENT
532-PS
WFSt/Qu (Verw. 1)

24 June 1944

TOP SECRET

5 copies, 1st copy


SSD—Telegram.
To 1. Supreme Command West.
By mail to 2. Chief of General Staff, Army.
By mail to 3. Supreme Command of the Air Force/Air Force Staff
Headquarters.
By mail to 4. Supreme Command Navy/1 Skl.
By mail to 5. Reichsfuehrer SS Command Staff.
By mail to 6. Military Commander, France.
By mail to 7. Supreme Command of Armed Forces/WR.
Authority: 1. Order of the Fuehrer no. 003830/42 Top Secret of 18
Oct 42/OKW/WFSt.
2. Telegram Supreme Command West no. 1750/44 Top Secret of 23
June 44.
Subject: Treatment of Commandos.
1. Standard operating procedure to (1) will be fully maintained.
2. Numeral (5) refers to enemy soldiers in uniform who are captured
in open combat by own troops stationed in the immediate combat
zone of the beachhead or who surrender. "Own troops stationed in
the immediate combat zone" applies in this sense to those of combat
divisions on line as well as reserves up to and including general
staffs.
3. In cases of doubt enemy personnel falling into our hands alive will
be turned over to the SD, which will be responsible for the
examination as to whether the order concerning commandos is
applicable or not.
4. Accordingly, the paratroop saboteurs dropped by the enemy over
Britanny will be treated as commando personnel, since this area is
not at present an immediate combat zone. It is immaterial in this
case whether the paratroopers dropped wear uniform or civilian
clothes. The number of paratroopers captured in Britanny will be
included in the daily report currently. In this respect an annex to the
armed forces report of 7 October 1942 has already been published
to the effect that such criminal elements should be massacred in
combat.
(Remark: Enclosures of the order of the Fuehrer of 18 October 1942
as well as the further order regarding the treatment of Commando
personnel of 25 June 1944 are attached. The latter mentions also
paratroopers under number (2).)
Distribution: [signature illegible]
Chief of the Supreme Command of the Armed Forces through Chief
of the WFSt Qu (Entw.).

TRANSLATION OF DOCUMENT
537-PS
Draft

The Fuehrer's Headquarters, 30 July 1944

The High Command of the Wehrmacht


009074/44 g.k./WFSt/Qu.(Verw.1)

TOP SECRET
re: Treatment of members of foreign "Military Missions", captured
together with partisans.
In the areas of the High Command Southeast and Southwest
members of foreign so-called "Military Missions" (anglo-American as
well as Soviet-Russian) captured in the course of the struggle
against partisans shall not receive the treatment as stipulated in the
special orders regarding the treatment of captured partisans.
Therefore they are not to be treated as PWs but in conformity with
the Fuehrer's order the elimination of terror and sabotage troops of
18 October 1942 (OKW/WFSt. 003830/42 g.Kdos).
This order shall not be transmitted to other units of the armed forces
via the High Commands and equivalent staffs and is to be destroyed
after being read.
The Chief of the High Command of the Wehrmacht
KEITEL
Distribution:

High Comd S/E—1st copy.


High Comd S/W—2nd copy.
General Staff of the Army—3rd copy.
OKM/SKl.—4th copy.
OKL/Lw.Fu.Stb.—5th copy.
Reichsfuehrer—and Chief of the German Police—Staff RF—Attention
Major General and Major General of the Waffen SS Rhode, also for
RSH—6th copy.
OKW/AWA—7th copy.
/Chief PWs—8th copy.
WR—9th copy.
WFSt/W.Pr.—10th copy.
Op. (H-L-M)—11th copy.
Org.—12th copy.
Ktb.—13th copy.
Qu. (Draft)—14th copy.
Reserve—15-25 copies.

PARTIAL TRANSLATION OF
DOCUMENT 551-PS
WFSt/Qu! (Verw. 1)

Chef OKW—[in pencil]

of
[initial] J

26 June 1944

TOP SECRET [Rubber Stamp]

5 copies—1st copy
Checked before Release }
Chef WFSt } [in pencil]
Remark 1 }
OB. WFSt } [in pencil]

KR—Teletype
To 1. Supreme Commander West.
2. Chief of Army General Staff.
3. OKL/Lw Fu Stab.
4. OKM/1.Skl.
5. Reichsfuehrer SS—Command Staff.
6. Military Commander, France.
7. Military Commander, Belgium/Northern France.
8. Armed forces Commander, Netherlands.
9. OKW/WR.
10. Supreme Commander Southwest [in pencil].
Reference: 1. Fuehrer Order No. 003830/42 Top Secret of 18 Oct
1942 OKW/WFSt.
2. Teletype Supreme Commander West No. 1750/44 Top Secret of 23
June 1944 (only to OKW/WFSt).
Subject: Treatment of Kommando Participants.
1. Even after the landing of Anglo-Americans in France, the order of
the Fuehrer on the destruction of terror and sabotage units of 18
Oct 1942 remains fully in force.
Enemy soldiers in uniform in the immediate combat area of the
bridgehead, that is, in the area of the divisions fighting in the most
forward lines as well as of the reserves up to the corps commands,
according to #5 of the basic order of 18 Oct 1942, remain
exempted.
2. All members of terror and sabotage units, found outside the
immediate combat area, who include fundamentally all parachutists,
are to be killed in combat. In special cases, they are to be turned
over to the SD.
3. All troops committed outside the combat area of Normandy are to
be informed about the duty to destroy enemy terror and sabotage
units briefly and succinctly according to the directives issued for it.
4. Supreme Commander West will report immediately daily how
many saboteurs have been liquidated in this manner. This applies
especially also to undertakings by the military commanders. The
number is to be published daily in the armed forces communique to
exercise a frightening effect, as has already been done toward
previous Kommando undertakings in the same manner.
[Initial] W [Warlimont]
[signature] Keitel
OKW/WFSt/Qu. (Verw. 1)
Nr. 006688/44 Top Secret

Addition for Supreme Commander Southwest — [Written by


hand]
Similar action is to be taken in the Italian theater of war.

[initial] J [Jodl]

After forwarding:
Qu (Verw. 1) Simultaneously teletype—1st copy.
Op (H)—2nd copy.
Op (M)/(L)/Ktb.—3rd copy.
VO Foreign—4th copy.
VO W Pr—5th copy.
Copy was sent on 18 Aug to the Chief of the Security Police and the
SD.

TRANSLATION OF DOCUMENT
553-PS
Memo secret 7/4
(Annex 2 to H.Dr.g.l
Page 7 current 1910.4)
High Command of the armed forces
WFSt. (Org.1) amt. AUSL.ABW/ABT ABW.III
Nr. 8725/7. 42 g. (IIIb 2) Berlin, 4 August 1942

SECRET

Combatting of single parachutists, 4 Aug. 1942.


Unaltered reprint 1943
Reference: OKW/WFSt/ABt.L (II) Nr. 1858 geh.v. 10.8.40
I. In case of enemy landings by air, a difference has to be made
between:
A. Parachute troops and airborne landing troops committed to
fighting activities.
B. Single parachutists and small groups of parachutists who are
dropped in order to execute missions of sabotage, espionage, terror
or disruption.
to a The combatting of enemy airborne forces is the exclusive
mission of the armed forces according to the reference orders.
to b For combatting single parachutists. In alteration of fig. 7 v.a. the
following is decreed:
1. In territories (Reich territories and occupied territories) the
combatting of single parachutists is the mission of those agencies of
the Chief of the Security Police and Security Service [SD] designated
as executive; in this matter it is immaterial whether the parachutists
are in uniform or civilian clothes.
2. To what extent armed forces and agencies of the armed forces
should be committed for these missions is to be decided directly by
the district commanders [Wehrkreisbefehslhaber] or by territorial
commanders [territorialen Befehlshaber] endowed with the powers
of district commander with the competent agencies of security police
and SD.
3. So far as single parachutists are captured by members of the
armed forces, they are to be delivered to the nearest agency of the
Chief of the Security Police and SD, without delay; simultaneously
reports must be made to the competent intelligence agency. The
same procedure is also valid for combat action directed against
parachute troops or airborne-landing troops, in case the troops
realize that they have to do with saboteurs or spies. If it should be
discovered that the parachutists brought to security police by armed
forces, or captured directly by members of the police are soldiers,
the SS Reich leader and Chief of the German Police will take care
that they will be transferred to the competent air forces agencies
after the completion of the necessary inquiry.
4. Reports concerning confirmed single parachutists are to be
submitted without delay to the nearest agency of the Chief of
Security Police and of the SD, simultaneously informing the counter
intelligence agency in charge which immediately has to forward the
report to district command headquarters commander as well as the
airforces command. Moreover, in principle fig. 4 of the reference
order is applicable.
5. In territories not mentioned in fig. 1, present regulations remain
valid (transfer to secret field police).
II. With regard to the use of objects captured or discarded, in the
case of parachutists, as far as these items are sabotage materials, or
radio equipment, a supplementary order to fig. 9 v. a. is decreed:
1. Captured sabotage material to be delivered to the nearest security
police agency and SD.
The army will dispose of sabotage material captured by troops in the
Eastern theater. With regard to further utilization of sabotage
material delivered or reverting to the Security Police, agreements
made between the Chief of Security Police and SD and foreign
section of counter intelligence remain valid.
2. Captured radio equipment, including the directions for operations,
code-material, voice material (Sprach-Material) in plain and in code
text, are to be delivered immediately via local counter intelligence
agencies to OKW (Ag WNV Fu III) for use. The agencies concerned
will be informed of results. After a completion of investigations the
captured radio equipment will again be at disposal, if needed. If
further use of captured radio equipment is considered by either
counter intelligence or Security Police, then the delivery of the
equipment might be omitted, upon agreement each time with Ag.
WNV/Fu III, however, in this case photostatic copies of the directions
for use, the code keys, etc., as well as technical descriptions of the
equipment are to be forwarded quickly to Ag-WNV/Fu III.
The Chief of High Command of the Armed Forces
KEITEL

TRANSLATION OF DOCUMENT
556-2-PS
The Fuehrer and Supreme Commander of the Wehrmacht
Fuehrer Hq September 8, 1942
The extensive coastal fortifications which I have ordered to be
erected in the area of Army Group West make it necessary that in
the occupied territory all available workers should be committed and
should give the fullest extent of their productive capacities. The
previous allotment of domestic workers is insufficient. In order to
increase it, I order the introduction of compulsory labor and the
prohibition of changing the place of employment without permission
of the authorities in the occupied territories. Furthermore the
distribution of food and clothing ration cards to those subject to
labor draft should in the future depend on the possession of a
certificate of employment. Refusal to accept an assigned job, as well
as abandoning the place of work without the consent of the
authorities in charge, will result in the withdrawal of the food and
clothing ration cards. The GBA [Deputy General for Arbeitseinsatz] in
agreement with the military commander as well as the Reich
Commissar, will issue the corresponding decrees for execution.
A Hitler
[initialled] K [Keitel]

TRANSLATION OF DOCUMENT
556-13-PS
Note for the files
1. On 4 January 1943 at 8 P.M. Minister Speer telephones from the
Fuehrer Headquarters and communicates that on the basis of the
Fuehrer's decision, it is no longer necessary to give special
consideration to Frenchmen in the further recruiting of specialists
and helpers in France. The recruiting can proceed with emphasis and
sharpened measures.
2. Commissar-General Schmidt with the Reich Commissar in Holland
just telephones on 5 January 1943 at 5:20 P.M. and explains that on
the basis of Armament Action 1943 he must achieve more recruiting
in Holland.
3. He has been criticized by the armament Commissions regarding
the endangering of German contracts in Holland proper due to labor
shortage.
I told him that no attention would be paid these criticisms.
He has already taken the same attitude and in the future will take
the appropriate action.
For Information
(signed) SAUCKEL

TRANSLATION OF DOCUMENT
579-PS
Weimar, 5 January 1943
The District Commissar in Riga—Employment Office
Section [Fachgebiet] 2 (Commitment of work)
Riga, 6 July 1942

File note
Subject: Commitment of Jews.
here: cooperation with the administration offices of the armed
forces.
For the last 10 days Jews have been picked up almost daily for
commitment in the peat industry by units of the armed forces. While
doing so, very considerable difficulties arose because the members
of the armed forces who get the Jews from the ghetto daily do not
want to comply with the regulations which are issued by the man
responsible for work commitment.
Welcome to Our Bookstore - The Ultimate Destination for Book Lovers
Are you passionate about books and eager to explore new worlds of
knowledge? At our website, we offer a vast collection of books that
cater to every interest and age group. From classic literature to
specialized publications, self-help books, and children’s stories, we
have it all! Each book is a gateway to new adventures, helping you
expand your knowledge and nourish your soul
Experience Convenient and Enjoyable Book Shopping Our website is more
than just an online bookstore—it’s a bridge connecting readers to the
timeless values of culture and wisdom. With a sleek and user-friendly
interface and a smart search system, you can find your favorite books
quickly and easily. Enjoy special promotions, fast home delivery, and
a seamless shopping experience that saves you time and enhances your
love for reading.
Let us accompany you on the journey of exploring knowledge and
personal growth!

ebookgate.com

You might also like