qbitbits.c File Reference

#include "f2c.h"

Include dependency graph for qbitbits.c:

Go to the source code of this file.

Defines

#define LONGBITS   32
#define LONG8BITS   (2*LONGBITS)

Functions

longint qbit_bits (longint a, integer b, integer len)
longint qbit_cshift (longint a, integer b, integer len)


Define Documentation

#define LONG8BITS   (2*LONGBITS)

Definition at line 11 of file qbitbits.c.

Referenced by qbit_cshift().

#define LONGBITS   32

Definition at line 7 of file qbitbits.c.


Function Documentation

longint qbit_bits ( longint  a,
integer  b,
integer  len 
)

Definition at line 18 of file qbitbits.c.

References L, longint, ulongint, x, and y.

00020 {
00021         /* Assume 2's complement arithmetic */
00022 
00023         ulongint x, y;
00024 
00025         x = (ulongint) a;
00026         y = (ulongint)-1L;
00027         x >>= b;
00028         y <<= len;
00029         return (longint)(x & ~y);
00030         }

longint qbit_cshift ( longint  a,
integer  b,
integer  len 
)

Definition at line 36 of file qbitbits.c.

References long, LONG8BITS, longint, ulongint, x, y, and z.

00038 {
00039         ulongint x, y, z;
00040 
00041         x = (ulongint)a;
00042         if (len <= 0) {
00043                 if (len == 0)
00044                         return 0;
00045                 goto full_len;
00046                 }
00047         if (len >= LONG8BITS) {
00048  full_len:
00049                 if (b >= 0) {
00050                         b %= LONG8BITS;
00051                         return (longint)(x << b | x >> LONG8BITS - b );
00052                         }
00053                 b = -b;
00054                 b %= LONG8BITS;
00055                 return (longint)(x << LONG8BITS - b | x >> b);
00056                 }
00057         y = z = (unsigned long)-1;
00058         y <<= len;
00059         z &= ~y;
00060         y &= x;
00061         x &= z;
00062         if (b >= 0) {
00063                 b %= len;
00064                 return (longint)(y | z & (x << b | x >> len - b));
00065                 }
00066         b = -b;
00067         b %= len;
00068         return (longint)(y | z & (x >> b | x << len - b));
00069         }


Generated on Sun Mar 4 15:05:19 2007 for Scilab [trunk] by  doxygen 1.5.1