case PSI_T_UINT64:
res->i64 = v1->i8 + v2->u64;
return PSI_T_INT64;
+ case PSI_T_INT128:
+ res->i128 = v1->i8 + v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i8 + v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->i8 + v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->u64 = v1->u8 + v2->u64;
return PSI_T_UINT64;
+ case PSI_T_INT128:
+ res->i128 = v1->u8 + v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u8 + v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->u8 + v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->i64 = v1->i16 + v2->u64;
return PSI_T_INT64;
+ case PSI_T_INT128:
+ res->i128 = v1->i16 + v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i16 + v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->i16 + v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->u64 = v1->u16 + v2->u64;
return PSI_T_UINT64;
+ case PSI_T_INT128:
+ res->i128 = v1->u16 + v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u16 + v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->u16 + v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->i64 = v1->i32 + v2->u64;
return PSI_T_INT64;
+ case PSI_T_INT128:
+ res->i128 = v1->i32 + v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i32 + v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->i32 + v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->u64 = v1->u32 + v2->u64;
return PSI_T_UINT64;
+ case PSI_T_INT128:
+ res->i128 = v1->u32 + v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u32 + v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->u32 + v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->i64 = v1->i64 + v2->u64;
return PSI_T_INT64;
+ case PSI_T_INT128:
+ res->i128 = v1->i64 + v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i64 + v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->i64 + v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->u64 = v1->u64 + v2->u64;
return PSI_T_UINT64;
+ case PSI_T_INT128:
+ res->i128 = v1->u64 + v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u64 + v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->u64 + v2->fval;
return PSI_T_FLOAT;
return PSI_T_LONG_DOUBLE;
# endif
+ default:
+ assert(0);
+ break;
+ }
+ break;
+ case PSI_T_INT128:
+ switch (t2) {
+ case PSI_T_INT8:
+ res->i128 = v1->i128 + v2->i8;
+ return PSI_T_INT128;
+ case PSI_T_UINT8:
+ res->i128 = v1->i128 + v2->u8;
+ return PSI_T_INT128;
+ case PSI_T_INT16:
+ res->i128 = v1->i128 + v2->i16;
+ return PSI_T_INT128;
+ case PSI_T_UINT16:
+ res->i128 = v1->i128 + v2->u16;
+ return PSI_T_INT128;
+ case PSI_T_INT32:
+ res->i128 = v1->i128 + v2->i32;
+ return PSI_T_INT128;
+ case PSI_T_UINT32:
+ res->i128 = v1->i128 + v2->u32;
+ return PSI_T_INT128;
+ case PSI_T_INT64:
+ res->i128 = v1->i128 + v2->i64;
+ return PSI_T_INT128;
+ case PSI_T_UINT64:
+ res->i128 = v1->i128 + v2->u64;
+ return PSI_T_INT128;
+ case PSI_T_INT128:
+ res->i128 = v1->i128 + v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i128 + v2->u128;
+ return PSI_T_UINT128;
+ case PSI_T_FLOAT:
+ res->fval = v1->i128 + v2->fval;
+ return PSI_T_FLOAT;
+ case PSI_T_DOUBLE:
+ res->dval = v1->i128 + v2->dval;
+ return PSI_T_DOUBLE;
+# if HAVE_LONG_DOUBLE
+ case PSI_T_LONG_DOUBLE:
+ res->ldval = v1->i128 + v2->ldval;
+ return PSI_T_LONG_DOUBLE;
+# endif
+
+ default:
+ assert(0);
+ break;
+ }
+ break;
+ case PSI_T_UINT128:
+ switch (t2) {
+ case PSI_T_INT8:
+ res->u128 = v1->u128 + v2->i8;
+ return PSI_T_UINT128;
+ case PSI_T_UINT8:
+ res->u128 = v1->u128 + v2->u8;
+ return PSI_T_UINT128;
+ case PSI_T_INT16:
+ res->u128 = v1->u128 + v2->i16;
+ return PSI_T_UINT128;
+ case PSI_T_UINT16:
+ res->u128 = v1->u128 + v2->u16;
+ return PSI_T_UINT128;
+ case PSI_T_INT32:
+ res->u128 = v1->u128 + v2->i32;
+ return PSI_T_UINT128;
+ case PSI_T_UINT32:
+ res->u128 = v1->u128 + v2->u32;
+ return PSI_T_UINT128;
+ case PSI_T_INT64:
+ res->u128 = v1->u128 + v2->i64;
+ return PSI_T_UINT128;
+ case PSI_T_UINT64:
+ res->u128 = v1->u128 + v2->u64;
+ return PSI_T_UINT128;
+ case PSI_T_INT128:
+ res->u128 = v1->u128 + v2->i128;
+ return PSI_T_UINT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u128 + v2->u128;
+ return PSI_T_UINT128;
+ case PSI_T_FLOAT:
+ res->fval = v1->u128 + v2->fval;
+ return PSI_T_FLOAT;
+ case PSI_T_DOUBLE:
+ res->dval = v1->u128 + v2->dval;
+ return PSI_T_DOUBLE;
+# if HAVE_LONG_DOUBLE
+ case PSI_T_LONG_DOUBLE:
+ res->ldval = v1->u128 + v2->ldval;
+ return PSI_T_LONG_DOUBLE;
+# endif
+
default:
assert(0);
break;
case PSI_T_UINT64:
res->fval = v1->fval + v2->u64;
return PSI_T_FLOAT;
+ case PSI_T_INT128:
+ res->fval = v1->fval + v2->i128;
+ return PSI_T_FLOAT;
+ case PSI_T_UINT128:
+ res->fval = v1->fval + v2->u128;
+ return PSI_T_FLOAT;
case PSI_T_FLOAT:
res->fval = v1->fval + v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->dval = v1->dval + v2->u64;
return PSI_T_DOUBLE;
+ case PSI_T_INT128:
+ res->dval = v1->dval + v2->i128;
+ return PSI_T_DOUBLE;
+ case PSI_T_UINT128:
+ res->dval = v1->dval + v2->u128;
+ return PSI_T_DOUBLE;
case PSI_T_FLOAT:
res->dval = v1->dval + v2->fval;
return PSI_T_DOUBLE;
case PSI_T_UINT64:
res->ldval = v1->ldval + v2->u64;
return PSI_T_LONG_DOUBLE;
+ case PSI_T_INT128:
+ res->ldval = v1->ldval + v2->i128;
+ return PSI_T_LONG_DOUBLE;
+ case PSI_T_UINT128:
+ res->ldval = v1->ldval + v2->u128;
+ return PSI_T_LONG_DOUBLE;
case PSI_T_FLOAT:
res->ldval = v1->ldval + v2->fval;
return PSI_T_LONG_DOUBLE;
case PSI_T_UINT64:
res->i64 = v1->i8 - v2->u64;
return PSI_T_INT64;
+ case PSI_T_INT128:
+ res->i128 = v1->i8 - v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i8 - v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->i8 - v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->u64 = v1->u8 - v2->u64;
return PSI_T_UINT64;
+ case PSI_T_INT128:
+ res->i128 = v1->u8 - v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u8 - v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->u8 - v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->i64 = v1->i16 - v2->u64;
return PSI_T_INT64;
+ case PSI_T_INT128:
+ res->i128 = v1->i16 - v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i16 - v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->i16 - v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->u64 = v1->u16 - v2->u64;
return PSI_T_UINT64;
+ case PSI_T_INT128:
+ res->i128 = v1->u16 - v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u16 - v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->u16 - v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->i64 = v1->i32 - v2->u64;
return PSI_T_INT64;
+ case PSI_T_INT128:
+ res->i128 = v1->i32 - v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i32 - v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->i32 - v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->u64 = v1->u32 - v2->u64;
return PSI_T_UINT64;
+ case PSI_T_INT128:
+ res->i128 = v1->u32 - v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u32 - v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->u32 - v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->i64 = v1->i64 - v2->u64;
return PSI_T_INT64;
+ case PSI_T_INT128:
+ res->i128 = v1->i64 - v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i64 - v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->i64 - v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->u64 = v1->u64 - v2->u64;
return PSI_T_UINT64;
+ case PSI_T_INT128:
+ res->i128 = v1->u64 - v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u64 - v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->u64 - v2->fval;
return PSI_T_FLOAT;
return PSI_T_LONG_DOUBLE;
# endif
+ default:
+ assert(0);
+ break;
+ }
+ break;
+ case PSI_T_INT128:
+ switch (t2) {
+ case PSI_T_INT8:
+ res->i128 = v1->i128 - v2->i8;
+ return PSI_T_INT128;
+ case PSI_T_UINT8:
+ res->i128 = v1->i128 - v2->u8;
+ return PSI_T_INT128;
+ case PSI_T_INT16:
+ res->i128 = v1->i128 - v2->i16;
+ return PSI_T_INT128;
+ case PSI_T_UINT16:
+ res->i128 = v1->i128 - v2->u16;
+ return PSI_T_INT128;
+ case PSI_T_INT32:
+ res->i128 = v1->i128 - v2->i32;
+ return PSI_T_INT128;
+ case PSI_T_UINT32:
+ res->i128 = v1->i128 - v2->u32;
+ return PSI_T_INT128;
+ case PSI_T_INT64:
+ res->i128 = v1->i128 - v2->i64;
+ return PSI_T_INT128;
+ case PSI_T_UINT64:
+ res->i128 = v1->i128 - v2->u64;
+ return PSI_T_INT128;
+ case PSI_T_INT128:
+ res->i128 = v1->i128 - v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i128 - v2->u128;
+ return PSI_T_UINT128;
+ case PSI_T_FLOAT:
+ res->fval = v1->i128 - v2->fval;
+ return PSI_T_FLOAT;
+ case PSI_T_DOUBLE:
+ res->dval = v1->i128 - v2->dval;
+ return PSI_T_DOUBLE;
+# if HAVE_LONG_DOUBLE
+ case PSI_T_LONG_DOUBLE:
+ res->ldval = v1->i128 - v2->ldval;
+ return PSI_T_LONG_DOUBLE;
+# endif
+
+ default:
+ assert(0);
+ break;
+ }
+ break;
+ case PSI_T_UINT128:
+ switch (t2) {
+ case PSI_T_INT8:
+ res->u128 = v1->u128 - v2->i8;
+ return PSI_T_UINT128;
+ case PSI_T_UINT8:
+ res->u128 = v1->u128 - v2->u8;
+ return PSI_T_UINT128;
+ case PSI_T_INT16:
+ res->u128 = v1->u128 - v2->i16;
+ return PSI_T_UINT128;
+ case PSI_T_UINT16:
+ res->u128 = v1->u128 - v2->u16;
+ return PSI_T_UINT128;
+ case PSI_T_INT32:
+ res->u128 = v1->u128 - v2->i32;
+ return PSI_T_UINT128;
+ case PSI_T_UINT32:
+ res->u128 = v1->u128 - v2->u32;
+ return PSI_T_UINT128;
+ case PSI_T_INT64:
+ res->u128 = v1->u128 - v2->i64;
+ return PSI_T_UINT128;
+ case PSI_T_UINT64:
+ res->u128 = v1->u128 - v2->u64;
+ return PSI_T_UINT128;
+ case PSI_T_INT128:
+ res->u128 = v1->u128 - v2->i128;
+ return PSI_T_UINT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u128 - v2->u128;
+ return PSI_T_UINT128;
+ case PSI_T_FLOAT:
+ res->fval = v1->u128 - v2->fval;
+ return PSI_T_FLOAT;
+ case PSI_T_DOUBLE:
+ res->dval = v1->u128 - v2->dval;
+ return PSI_T_DOUBLE;
+# if HAVE_LONG_DOUBLE
+ case PSI_T_LONG_DOUBLE:
+ res->ldval = v1->u128 - v2->ldval;
+ return PSI_T_LONG_DOUBLE;
+# endif
+
default:
assert(0);
break;
case PSI_T_UINT64:
res->fval = v1->fval - v2->u64;
return PSI_T_FLOAT;
+ case PSI_T_INT128:
+ res->fval = v1->fval - v2->i128;
+ return PSI_T_FLOAT;
+ case PSI_T_UINT128:
+ res->fval = v1->fval - v2->u128;
+ return PSI_T_FLOAT;
case PSI_T_FLOAT:
res->fval = v1->fval - v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->dval = v1->dval - v2->u64;
return PSI_T_DOUBLE;
+ case PSI_T_INT128:
+ res->dval = v1->dval - v2->i128;
+ return PSI_T_DOUBLE;
+ case PSI_T_UINT128:
+ res->dval = v1->dval - v2->u128;
+ return PSI_T_DOUBLE;
case PSI_T_FLOAT:
res->dval = v1->dval - v2->fval;
return PSI_T_DOUBLE;
case PSI_T_UINT64:
res->ldval = v1->ldval - v2->u64;
return PSI_T_LONG_DOUBLE;
+ case PSI_T_INT128:
+ res->ldval = v1->ldval - v2->i128;
+ return PSI_T_LONG_DOUBLE;
+ case PSI_T_UINT128:
+ res->ldval = v1->ldval - v2->u128;
+ return PSI_T_LONG_DOUBLE;
case PSI_T_FLOAT:
res->ldval = v1->ldval - v2->fval;
return PSI_T_LONG_DOUBLE;
case PSI_T_UINT64:
res->i64 = v1->i8 * v2->u64;
return PSI_T_INT64;
+ case PSI_T_INT128:
+ res->i128 = v1->i8 * v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i8 * v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->i8 * v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->u64 = v1->u8 * v2->u64;
return PSI_T_UINT64;
+ case PSI_T_INT128:
+ res->i128 = v1->u8 * v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u8 * v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->u8 * v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->i64 = v1->i16 * v2->u64;
return PSI_T_INT64;
+ case PSI_T_INT128:
+ res->i128 = v1->i16 * v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i16 * v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->i16 * v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->u64 = v1->u16 * v2->u64;
return PSI_T_UINT64;
+ case PSI_T_INT128:
+ res->i128 = v1->u16 * v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u16 * v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->u16 * v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->i64 = v1->i32 * v2->u64;
return PSI_T_INT64;
+ case PSI_T_INT128:
+ res->i128 = v1->i32 * v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i32 * v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->i32 * v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->u64 = v1->u32 * v2->u64;
return PSI_T_UINT64;
+ case PSI_T_INT128:
+ res->i128 = v1->u32 * v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u32 * v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->u32 * v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->i64 = v1->i64 * v2->u64;
return PSI_T_INT64;
+ case PSI_T_INT128:
+ res->i128 = v1->i64 * v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i64 * v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->i64 * v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->u64 = v1->u64 * v2->u64;
return PSI_T_UINT64;
+ case PSI_T_INT128:
+ res->i128 = v1->u64 * v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u64 * v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->u64 * v2->fval;
return PSI_T_FLOAT;
return PSI_T_LONG_DOUBLE;
# endif
+ default:
+ assert(0);
+ break;
+ }
+ break;
+ case PSI_T_INT128:
+ switch (t2) {
+ case PSI_T_INT8:
+ res->i128 = v1->i128 * v2->i8;
+ return PSI_T_INT128;
+ case PSI_T_UINT8:
+ res->i128 = v1->i128 * v2->u8;
+ return PSI_T_INT128;
+ case PSI_T_INT16:
+ res->i128 = v1->i128 * v2->i16;
+ return PSI_T_INT128;
+ case PSI_T_UINT16:
+ res->i128 = v1->i128 * v2->u16;
+ return PSI_T_INT128;
+ case PSI_T_INT32:
+ res->i128 = v1->i128 * v2->i32;
+ return PSI_T_INT128;
+ case PSI_T_UINT32:
+ res->i128 = v1->i128 * v2->u32;
+ return PSI_T_INT128;
+ case PSI_T_INT64:
+ res->i128 = v1->i128 * v2->i64;
+ return PSI_T_INT128;
+ case PSI_T_UINT64:
+ res->i128 = v1->i128 * v2->u64;
+ return PSI_T_INT128;
+ case PSI_T_INT128:
+ res->i128 = v1->i128 * v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i128 * v2->u128;
+ return PSI_T_UINT128;
+ case PSI_T_FLOAT:
+ res->fval = v1->i128 * v2->fval;
+ return PSI_T_FLOAT;
+ case PSI_T_DOUBLE:
+ res->dval = v1->i128 * v2->dval;
+ return PSI_T_DOUBLE;
+# if HAVE_LONG_DOUBLE
+ case PSI_T_LONG_DOUBLE:
+ res->ldval = v1->i128 * v2->ldval;
+ return PSI_T_LONG_DOUBLE;
+# endif
+
+ default:
+ assert(0);
+ break;
+ }
+ break;
+ case PSI_T_UINT128:
+ switch (t2) {
+ case PSI_T_INT8:
+ res->u128 = v1->u128 * v2->i8;
+ return PSI_T_UINT128;
+ case PSI_T_UINT8:
+ res->u128 = v1->u128 * v2->u8;
+ return PSI_T_UINT128;
+ case PSI_T_INT16:
+ res->u128 = v1->u128 * v2->i16;
+ return PSI_T_UINT128;
+ case PSI_T_UINT16:
+ res->u128 = v1->u128 * v2->u16;
+ return PSI_T_UINT128;
+ case PSI_T_INT32:
+ res->u128 = v1->u128 * v2->i32;
+ return PSI_T_UINT128;
+ case PSI_T_UINT32:
+ res->u128 = v1->u128 * v2->u32;
+ return PSI_T_UINT128;
+ case PSI_T_INT64:
+ res->u128 = v1->u128 * v2->i64;
+ return PSI_T_UINT128;
+ case PSI_T_UINT64:
+ res->u128 = v1->u128 * v2->u64;
+ return PSI_T_UINT128;
+ case PSI_T_INT128:
+ res->u128 = v1->u128 * v2->i128;
+ return PSI_T_UINT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u128 * v2->u128;
+ return PSI_T_UINT128;
+ case PSI_T_FLOAT:
+ res->fval = v1->u128 * v2->fval;
+ return PSI_T_FLOAT;
+ case PSI_T_DOUBLE:
+ res->dval = v1->u128 * v2->dval;
+ return PSI_T_DOUBLE;
+# if HAVE_LONG_DOUBLE
+ case PSI_T_LONG_DOUBLE:
+ res->ldval = v1->u128 * v2->ldval;
+ return PSI_T_LONG_DOUBLE;
+# endif
+
default:
assert(0);
break;
case PSI_T_UINT64:
res->fval = v1->fval * v2->u64;
return PSI_T_FLOAT;
+ case PSI_T_INT128:
+ res->fval = v1->fval * v2->i128;
+ return PSI_T_FLOAT;
+ case PSI_T_UINT128:
+ res->fval = v1->fval * v2->u128;
+ return PSI_T_FLOAT;
case PSI_T_FLOAT:
res->fval = v1->fval * v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->dval = v1->dval * v2->u64;
return PSI_T_DOUBLE;
+ case PSI_T_INT128:
+ res->dval = v1->dval * v2->i128;
+ return PSI_T_DOUBLE;
+ case PSI_T_UINT128:
+ res->dval = v1->dval * v2->u128;
+ return PSI_T_DOUBLE;
case PSI_T_FLOAT:
res->dval = v1->dval * v2->fval;
return PSI_T_DOUBLE;
case PSI_T_UINT64:
res->ldval = v1->ldval * v2->u64;
return PSI_T_LONG_DOUBLE;
+ case PSI_T_INT128:
+ res->ldval = v1->ldval * v2->i128;
+ return PSI_T_LONG_DOUBLE;
+ case PSI_T_UINT128:
+ res->ldval = v1->ldval * v2->u128;
+ return PSI_T_LONG_DOUBLE;
case PSI_T_FLOAT:
res->ldval = v1->ldval * v2->fval;
return PSI_T_LONG_DOUBLE;
case PSI_T_UINT64:
res->i64 = v1->i8 / v2->u64;
return PSI_T_INT64;
+ case PSI_T_INT128:
+ res->i128 = v1->i8 / v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i8 / v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->i8 / v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->u64 = v1->u8 / v2->u64;
return PSI_T_UINT64;
+ case PSI_T_INT128:
+ res->i128 = v1->u8 / v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u8 / v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->u8 / v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->i64 = v1->i16 / v2->u64;
return PSI_T_INT64;
+ case PSI_T_INT128:
+ res->i128 = v1->i16 / v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i16 / v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->i16 / v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->u64 = v1->u16 / v2->u64;
return PSI_T_UINT64;
+ case PSI_T_INT128:
+ res->i128 = v1->u16 / v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u16 / v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->u16 / v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->i64 = v1->i32 / v2->u64;
return PSI_T_INT64;
+ case PSI_T_INT128:
+ res->i128 = v1->i32 / v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i32 / v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->i32 / v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->u64 = v1->u32 / v2->u64;
return PSI_T_UINT64;
+ case PSI_T_INT128:
+ res->i128 = v1->u32 / v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u32 / v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->u32 / v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->i64 = v1->i64 / v2->u64;
return PSI_T_INT64;
+ case PSI_T_INT128:
+ res->i128 = v1->i64 / v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i64 / v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->i64 / v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->u64 = v1->u64 / v2->u64;
return PSI_T_UINT64;
+ case PSI_T_INT128:
+ res->i128 = v1->u64 / v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u64 / v2->u128;
+ return PSI_T_UINT128;
case PSI_T_FLOAT:
res->fval = v1->u64 / v2->fval;
return PSI_T_FLOAT;
return PSI_T_LONG_DOUBLE;
# endif
+ default:
+ assert(0);
+ break;
+ }
+ break;
+ case PSI_T_INT128:
+ switch (t2) {
+ case PSI_T_INT8:
+ res->i128 = v1->i128 / v2->i8;
+ return PSI_T_INT128;
+ case PSI_T_UINT8:
+ res->i128 = v1->i128 / v2->u8;
+ return PSI_T_INT128;
+ case PSI_T_INT16:
+ res->i128 = v1->i128 / v2->i16;
+ return PSI_T_INT128;
+ case PSI_T_UINT16:
+ res->i128 = v1->i128 / v2->u16;
+ return PSI_T_INT128;
+ case PSI_T_INT32:
+ res->i128 = v1->i128 / v2->i32;
+ return PSI_T_INT128;
+ case PSI_T_UINT32:
+ res->i128 = v1->i128 / v2->u32;
+ return PSI_T_INT128;
+ case PSI_T_INT64:
+ res->i128 = v1->i128 / v2->i64;
+ return PSI_T_INT128;
+ case PSI_T_UINT64:
+ res->i128 = v1->i128 / v2->u64;
+ return PSI_T_INT128;
+ case PSI_T_INT128:
+ res->i128 = v1->i128 / v2->i128;
+ return PSI_T_INT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->i128 / v2->u128;
+ return PSI_T_UINT128;
+ case PSI_T_FLOAT:
+ res->fval = v1->i128 / v2->fval;
+ return PSI_T_FLOAT;
+ case PSI_T_DOUBLE:
+ res->dval = v1->i128 / v2->dval;
+ return PSI_T_DOUBLE;
+# if HAVE_LONG_DOUBLE
+ case PSI_T_LONG_DOUBLE:
+ res->ldval = v1->i128 / v2->ldval;
+ return PSI_T_LONG_DOUBLE;
+# endif
+
+ default:
+ assert(0);
+ break;
+ }
+ break;
+ case PSI_T_UINT128:
+ switch (t2) {
+ case PSI_T_INT8:
+ res->u128 = v1->u128 / v2->i8;
+ return PSI_T_UINT128;
+ case PSI_T_UINT8:
+ res->u128 = v1->u128 / v2->u8;
+ return PSI_T_UINT128;
+ case PSI_T_INT16:
+ res->u128 = v1->u128 / v2->i16;
+ return PSI_T_UINT128;
+ case PSI_T_UINT16:
+ res->u128 = v1->u128 / v2->u16;
+ return PSI_T_UINT128;
+ case PSI_T_INT32:
+ res->u128 = v1->u128 / v2->i32;
+ return PSI_T_UINT128;
+ case PSI_T_UINT32:
+ res->u128 = v1->u128 / v2->u32;
+ return PSI_T_UINT128;
+ case PSI_T_INT64:
+ res->u128 = v1->u128 / v2->i64;
+ return PSI_T_UINT128;
+ case PSI_T_UINT64:
+ res->u128 = v1->u128 / v2->u64;
+ return PSI_T_UINT128;
+ case PSI_T_INT128:
+ res->u128 = v1->u128 / v2->i128;
+ return PSI_T_UINT128;
+ case PSI_T_UINT128:
+ res->u128 = v1->u128 / v2->u128;
+ return PSI_T_UINT128;
+ case PSI_T_FLOAT:
+ res->fval = v1->u128 / v2->fval;
+ return PSI_T_FLOAT;
+ case PSI_T_DOUBLE:
+ res->dval = v1->u128 / v2->dval;
+ return PSI_T_DOUBLE;
+# if HAVE_LONG_DOUBLE
+ case PSI_T_LONG_DOUBLE:
+ res->ldval = v1->u128 / v2->ldval;
+ return PSI_T_LONG_DOUBLE;
+# endif
+
default:
assert(0);
break;
case PSI_T_UINT64:
res->fval = v1->fval / v2->u64;
return PSI_T_FLOAT;
+ case PSI_T_INT128:
+ res->fval = v1->fval / v2->i128;
+ return PSI_T_FLOAT;
+ case PSI_T_UINT128:
+ res->fval = v1->fval / v2->u128;
+ return PSI_T_FLOAT;
case PSI_T_FLOAT:
res->fval = v1->fval / v2->fval;
return PSI_T_FLOAT;
case PSI_T_UINT64:
res->dval = v1->dval / v2->u64;
return PSI_T_DOUBLE;
+ case PSI_T_INT128:
+ res->dval = v1->dval / v2->i128;
+ return PSI_T_DOUBLE;
+ case PSI_T_UINT128:
+ res->dval = v1->dval / v2->u128;
+ return PSI_T_DOUBLE;
case PSI_T_FLOAT:
res->dval = v1->dval / v2->fval;
return PSI_T_DOUBLE;
case PSI_T_UINT64:
res->ldval = v1->ldval / v2->u64;
return PSI_T_LONG_DOUBLE;
+ case PSI_T_INT128:
+ res->ldval = v1->ldval / v2->i128;
+ return PSI_T_LONG_DOUBLE;
+ case PSI_T_UINT128:
+ res->ldval = v1->ldval / v2->u128;
+ return PSI_T_LONG_DOUBLE;
case PSI_T_FLOAT:
res->ldval = v1->ldval / v2->fval;
return PSI_T_LONG_DOUBLE;
i1.i64 = v1->u64;
break;
+ case PSI_T_INT128:
+ i1.i64 = v1->i128;
+ break;
+
+ case PSI_T_UINT128:
+ i1.i64 = v1->u128;
+ break;
+
case PSI_T_FLOAT:
i1.i64 = v1->fval;
break;
case PSI_T_UINT64:
i2.i64 = v2->u64;
break;
+ case PSI_T_INT128:
+ i2.i64 = v2->i128;
+ break;
+ case PSI_T_UINT128:
+ i2.i64 = v2->u128;
+ break;
case PSI_T_FLOAT:
i2.i64 = v2->fval;
break;