- // Float + Float
- double * dst = (double *)sval;
- double * src = (double *)(sval + 1);
- *dst += *src;
- }
- else if (attr == FLOAT)
- {
- // Float + Int
- double * dst = (double *)sval;
- uint64_t * src = (uint64_t *)(sval + 1);
- *dst += *src;
- }
- else if (attr == FLOAT >> 1)
- {
- // Int + Float
- uint64_t * dst = (uint64_t *)sval;
- double * src = (double *)(sval + 1);
- *(double *)dst = *src + *dst;
+ PTR p;
+ p.u64 = sval;
+ double fpval1 = (sattr[0] & FLOAT ? *p.dp : (double)*p.i64);
+ p.u64++;
+ double fpval2 = (sattr[1] & FLOAT ? *p.dp : (double)*p.i64);
+ *(double *)sval = fpval1 + fpval2;