Subversion Repositories planix.SVN

Rev

Rev 22 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 22 Rev 26
Line 21... Line 21...
21
		return;
21
		return;
22
	}
22
	}
23
 
23
 
24
	if(res != b)
24
	if(res != b)
25
		mpbits(res, b->top*Dbits - shift);
25
		mpbits(res, b->top*Dbits - shift);
-
 
26
	else if(shift == 0)
-
 
27
		return;
-
 
28
 
26
	d = shift/Dbits;
29
	d = shift/Dbits;
27
	r = shift - d*Dbits;
30
	r = shift - d*Dbits;
28
	l = Dbits - r;
31
	l = Dbits - r;
29
 
32
 
30
	//  shift all the bits out == zero
33
	//  shift all the bits out == zero
31
	if(d>=b->top){
34
	if(d>=b->top){
-
 
35
		res->sign = 1;
32
		res->top = 0;
36
		res->top = 0;
33
		return;
37
		return;
34
	}
38
	}
35
 
39
 
36
	// special case digit shifts
40
	// special case digit shifts
37
	if(r == 0){
41
	if(r == 0){
38
		for(i = 0; i < b->top-d; i++)
42
		for(i = 0; i < b->top-d; i++)
39
			res->p[i] = b->p[i+d];
43
			res->p[i] = b->p[i+d];
40
	} else {
44
	} else {
Line 44... Line 48...
44
			res->p[i] = (this<<l) | (last>>r);
48
			res->p[i] = (this<<l) | (last>>r);
45
			last = this;
49
			last = this;
46
		}
50
		}
47
		res->p[i++] = last>>r;
51
		res->p[i++] = last>>r;
48
	}
52
	}
49
	while(i > 0 && res->p[i-1] == 0)
-
 
50
		i--;
53
 
51
	res->top = i;
54
	res->top = i;
52
	if(i==0)
55
	res->flags |= b->flags & MPtimesafe;
53
		res->sign = 1;
56
	mpnorm(res);
54
}
57
}