File: shift.c

package info (click to toggle)
iraf 2.18.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 86,000 kB
  • sloc: ansic: 115,890; fortran: 74,576; lisp: 18,888; yacc: 5,642; sh: 961; lex: 596; makefile: 509; asm: 159; csh: 54; xml: 33; sed: 4
file content (49 lines) | stat: -rw-r--r-- 1,262 bytes parent folder | download | duplicates (4)
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
/* Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
 */

#define	import_spp
#define import_knames
#include <iraf.h>

/*
 * SHIFT.C -- Bitwise shift operators.  A positive bitshift shifts to the left,
 * zero-filling at the right, i.e., a left shift by 1 is equivalent to a
 * multiplication by 2 (but does not cause integer overflow).  A negative shift
 * shifts to the right and is equivalent to a division.
 */

/* SHIFTI -- Bitwise boolean SHIFT of two integer variables.
 */
XINT
SHIFTI (
  XINT	*a_a,			/* operand to be shifted	*/
  XINT	*a_bits 		/* number of bits to shift	*/
)
{
	register XINT	a = *a_a, bits = *a_bits;
	return (bits > 0 ? (a << bits) : (a >> -bits));
}

/* SHIFTS -- Bitwise boolean SHIFT of two short-integer variables.
 */
XSHORT
SHIFTS (
  XSHORT *a_a,			/* operand to be shifted	*/
  XSHORT *a_bits 		/* number of bits to shift	*/
)
{
	register XSHORT	a = *a_a, bits = *a_bits;
	return (bits > 0 ? (a << bits) : (a >> -bits));
}

/* SHIFTL -- Bitwise boolean SHIFT of two long-integer variables.
 */
XLONG
SHIFTL (
  XLONG	*a_a,			/* operand to be shifted	*/
  XLONG	*a_bits 		/* number of bits to shift	*/
)
{
	register XLONG	a = *a_a, bits = *a_bits;
	return (bits > 0 ? (a << bits) : (a >> -bits));
}