mirror of
https://github.com/carp-lang/Carp.git
synced 2024-10-26 13:51:50 +03:00
49 lines
1.6 KiB
C
49 lines
1.6 KiB
C
#include <math.h>
|
|
#include "carp_stdbool.h"
|
|
|
|
long Long__PLUS_(long x, long y) { return x + y; }
|
|
long Long__MINUS_(long x, long y) { return x - y; }
|
|
long Long__MUL_(long x, long y) { return x * y; }
|
|
long Long__DIV_(long x, long y) { return x / y; }
|
|
#ifndef _WIN32
|
|
bool Long_safe_MINUS_add(long x, long y, long* res) { return __builtin_saddl_overflow(x, y, res); }
|
|
bool Long_safe_MINUS_sub(long x, long y, long* res) { return __builtin_ssubl_overflow(x, y, res); }
|
|
bool Long_safe_MINUS_mul(long x, long y, long* res) { return __builtin_smull_overflow(x, y, res); }
|
|
#endif
|
|
bool Long__EQ_(long x, long y) { return x == y; }
|
|
bool Long__LT_(long x, long y) { return x < y; }
|
|
bool Long__GT_(long x, long y) { return x > y; }
|
|
long Long_neg(long x) { return -x; }
|
|
|
|
long Long_inc(long x) { return x + 1; }
|
|
long Long_dec(long x) { return x - 1; }
|
|
long Long_abs(long x) { return x > 0 ? x : -x; }
|
|
long Long_bit_MINUS_shift_MINUS_left(long x, long y) { return x << y; }
|
|
long Long_bit_MINUS_shift_MINUS_right(long x, long y) { return x >> y; }
|
|
long Long_bit_MINUS_and(long x, long y) { return x & y; }
|
|
long Long_bit_MINUS_or(long x, long y) { return x | y; }
|
|
long Long_bit_MINUS_xor(long x, long y) { return x ^ y; }
|
|
long Long_bit_MINUS_not(long x) { return ~x; }
|
|
|
|
long Long_copy(const long *x) { return *x; }
|
|
|
|
long Long_mod(long x, long divider) {
|
|
return x % divider;
|
|
}
|
|
|
|
void Long_seed(long seed) {
|
|
srand(seed);
|
|
}
|
|
|
|
bool Long_mask(long a, long b) {
|
|
return a & b;
|
|
}
|
|
|
|
int Long_to_MINUS_int(long a) {
|
|
return (int) a;
|
|
}
|
|
|
|
long Long_from_MINUS_int(int a) {
|
|
return (long) a;
|
|
}
|