-
Notifications
You must be signed in to change notification settings - Fork 1
/
ILSA.c,v
58 lines (46 loc) · 960 Bytes
/
ILSA.c,v
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
head 1.1;
access;
symbols;
locks
saclib:1.1; strict;
comment @ * @;
1.1
date 2000.01.02.16.27.34; author George; state init;
branches;
next ;
desc
@Integer left shift in array.
@
1.1
log
@Initial revision
@
text
@/*======================================================================
ILSA(A,n,k)
Integer left shift in array.
Inputs
A : an array of size n containing a non-negative integer a that is
less than BETA^n / 2^k.
n : a positive BETA-digit.
k : a positive BETA-digit less than ZETA.
Effect
The integer a * 2^k replaces a in A.
======================================================================*/
#include "floats.h"
void ILSA(A,n,k)
BDigit *A,n,k;
{
BDigit d,h,i;
Step1: /* Shift. */
h = ZETA - k;
A[n - 1] = A[n - 1] << k;
for (i = n - 2; i >= 0; i--) {
d = A[i] >> h;
A[i + 1] = A[i + 1] | d;
d = A[i] << k;
A[i] = d & BETA1; }
Return: /* Return. */
return;
}
@