#include "feldspar.h" int mod_fun_signed_int( int a, int b ) { if ((a > 0 && b > 0) || (a < 0 && b < 0)) return a % b; return (a % b) * (-1); } int mod_fun_unsigned_int( unsigned int a, unsigned int b ) { return a % b; } long mod_fun_signed_long( long a, long b ) { if ((a > 0 && b > 0) || (a < 0 && b < 0)) return a % b; return (a % b) * (-1); } long mod_fun_unsigned_long( unsigned long a, unsigned long b ) { return a % b; } int pow_fun_signed_int( int a, int b) { int out = 1; int i; for(i=0; i> -i; if (i > 0) return x << i; return x; } int bit_rotate_fun_signed_int( int x, int i ) { if (i < 0 && x < 0) { int left = i + sizeof(x) * 8; return ((x >> -i) & ~bit_shift_fun_signed_int(-1, left)) ^ bit_shift_fun_signed_int(x, left); } if (i < 0) return x >> -i ^ bit_shift_fun_signed_int(x, i + sizeof(x) * 8); else if (i == 0) return x; else return x << i ^ bit_shift_fun_signed_int(x, i - sizeof(x) * 8); } int rotateL_fun_signed_int( int x, int i ) { return bit_rotate_fun_signed_int(x, i); } int rotateR_fun_signed_int( int x, int i ) { return bit_rotate_fun_signed_int(x, -i); } int bitSize_fun_signed_int( int x ) { return sizeof x * 8; } int isSigned_fun_signed_int( int x ) { (void) x; return 1; } int abs_fun_signed_int( int a ) { if (a < 0) return a*(-1); return a; } int abs_fun_unsigned_int( unsigned int a ) { return a; } long abs_fun_signed_long( long a ) { if (a < 0) return a*(-1); return a; } long abs_fun_unsigned_long( unsigned long a ) { return a; } double abs_fun_float( float a ) { if (a < 0) return a*(-1); return a; } double abs_fun_double( double a ) { if (a < 0) return a*(-1); return a; } int signum_fun_signed_int( int a ) { if (a < 0) return -1; if (a > 0) return 1; return 0; } int signum_fun_unsigned_int( unsigned int a ) { if (a > 0) return 1; return 0; } long signum_fun_signed_long( long a ) { if (a < 0) return -1; if (a > 0) return 1; return 0; } long signum_fun_unsigned_long( unsigned long a ) { if (a > 0) return 1; return 0; } double signum_fun_float( float a ) { if (a < 0) return -1; if (a > 0) return 1; return 0; } double signum_fun_double( double a ) { if (a < 0) return -1; if (a > 0) return 1; return 0; } void copy_arrayOf_signed_int( int* a, int a1, int* b) { int i; for( i=0; i