Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

Doxygen Source Code Documentation


Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search  

lbitbits.c

Go to the documentation of this file.
00001 #include "f2c.h"
00002 
00003 #ifndef LONGBITS
00004 #define LONGBITS 32
00005 #endif
00006 
00007  integer
00008 #ifdef KR_headers
00009 lbit_bits(a, b, len) integer a, b, len;
00010 #else
00011 lbit_bits(integer a, integer b, integer len)
00012 #endif
00013 {
00014         /* Assume 2's complement arithmetic */
00015 
00016         unsigned long x, y;
00017 
00018         x = (unsigned long) a;
00019         y = (unsigned long)-1L;
00020         x >>= b;
00021         y <<= len;
00022         return (integer)(x & ~y);
00023         }
00024 
00025  integer
00026 #ifdef KR_headers
00027 lbit_cshift(a, b, len) integer a, b, len;
00028 #else
00029 lbit_cshift(integer a, integer b, integer len)
00030 #endif
00031 {
00032         unsigned long x, y, z;
00033 
00034         x = (unsigned long)a;
00035         if (len <= 0) {
00036                 if (len == 0)
00037                         return 0;
00038                 goto full_len;
00039                 }
00040         if (len >= LONGBITS) {
00041  full_len:
00042                 if (b >= 0) {
00043                         b %= LONGBITS;
00044                         return (integer)(x << b | x >> LONGBITS -b );
00045                         }
00046                 b = -b;
00047                 b %= LONGBITS;
00048                 return (integer)(x << LONGBITS - b | x >> b);
00049                 }
00050         y = z = (unsigned long)-1;
00051         y <<= len;
00052         z &= ~y;
00053         y &= x;
00054         x &= z;
00055         if (b >= 0) {
00056                 b %= len;
00057                 return (integer)(y | z & (x << b | x >> len - b));
00058                 }
00059         b = -b;
00060         b %= len;
00061         return (integer)(y | z & (x >> b | x << len - b));
00062         }
 

Powered by Plone

This site conforms to the following standards: