diff options
Diffstat (limited to 'libf2c/libF77/qbitbits.c')
-rw-r--r-- | libf2c/libF77/qbitbits.c | 86 |
1 files changed, 45 insertions, 41 deletions
diff --git a/libf2c/libF77/qbitbits.c b/libf2c/libF77/qbitbits.c index ef87858..c2a87c2 100644 --- a/libf2c/libF77/qbitbits.c +++ b/libf2c/libF77/qbitbits.c @@ -8,51 +8,55 @@ #define LONG8BITS (2*LONGBITS) #endif - integer -qbit_bits(longint a, integer b, integer len) +integer +qbit_bits (longint a, integer b, integer len) { - /* Assume 2's complement arithmetic */ + /* Assume 2's complement arithmetic */ - ulongint x, y; + ulongint x, y; - x = (ulongint) a; - y = (ulongint)-1L; - x >>= b; - y <<= len; - return (longint)(x & y); - } + x = (ulongint) a; + y = (ulongint) - 1L; + x >>= b; + y <<= len; + return (longint) (x & y); +} - longint -qbit_cshift(longint a, integer b, integer len) +longint +qbit_cshift (longint a, integer b, integer len) { - ulongint x, y, z; + ulongint x, y, z; - x = (ulongint)a; - if (len <= 0) { - if (len == 0) - return 0; - goto full_len; - } - if (len >= LONG8BITS) { - full_len: - if (b >= 0) { - b %= LONG8BITS; - return (longint)(x << b | x >> LONG8BITS - b ); - } - b = -b; - b %= LONG8BITS; - return (longint)(x << LONG8BITS - b | x >> b); - } - y = z = (unsigned long)-1; - y <<= len; - z &= ~y; - y &= x; - x &= z; - if (b >= 0) { - b %= len; - return (longint)(y | z & (x << b | x >> len - b)); - } - b = -b; - b %= len; - return (longint)(y | z & (x >> b | x << len - b)); + x = (ulongint) a; + if (len <= 0) + { + if (len == 0) + return 0; + goto full_len; + } + if (len >= LONG8BITS) + { + full_len: + if (b >= 0) + { + b %= LONG8BITS; + return (longint) (x << b | x >> LONG8BITS - b); } + b = -b; + b %= LONG8BITS; + return (longint) (x << LONG8BITS - b | x >> b); + } + y = z = (unsigned long) -1; + y <<= len; + z &= ~y; + y &= x; + x &= z; + if (b >= 0) + { + b %= len; + return (longint) (y | z & (x << b | x >> len - b)); + } + b = -b; + b %= len; + return (longint) (y | z & (x >> b | x << len - b)); +} |