Changes in uspace/lib/softfloat/sub.c [c0c38c7c:2416085] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/softfloat/sub.c
rc0c38c7c r2416085 34 34 */ 35 35 36 #include "sftypes.h" 36 37 #include "sub.h" 37 38 #include "comparison.h" 38 39 #include "common.h" 39 #include "add.h"40 40 41 41 /** Subtract two single-precision floats with the same sign. … … 438 438 } 439 439 440 #ifdef float32_t441 442 float32_t __subsf3(float32_t a, float32_t b)443 {444 float32_u ua;445 ua.val = a;446 447 float32_u ub;448 ub.val = b;449 450 float32_u res;451 452 if (ua.data.parts.sign != ub.data.parts.sign) {453 ub.data.parts.sign = !ub.data.parts.sign;454 res.data = add_float32(ua.data, ub.data);455 } else456 res.data = sub_float32(ua.data, ub.data);457 458 return res.val;459 }460 461 float32_t __aeabi_fsub(float32_t a, float32_t b)462 {463 float32_u ua;464 ua.val = a;465 466 float32_u ub;467 ub.val = b;468 469 float32_u res;470 471 if (ua.data.parts.sign != ub.data.parts.sign) {472 ub.data.parts.sign = !ub.data.parts.sign;473 res.data = add_float32(ua.data, ub.data);474 } else475 res.data = sub_float32(ua.data, ub.data);476 477 return res.val;478 }479 480 #endif481 482 #ifdef float64_t483 484 float64_t __subdf3(float64_t a, float64_t b)485 {486 float64_u ua;487 ua.val = a;488 489 float64_u ub;490 ub.val = b;491 492 float64_u res;493 494 if (ua.data.parts.sign != ub.data.parts.sign) {495 ub.data.parts.sign = !ub.data.parts.sign;496 res.data = add_float64(ua.data, ub.data);497 } else498 res.data = sub_float64(ua.data, ub.data);499 500 return res.val;501 }502 503 float64_t __aeabi_dsub(float64_t a, float64_t b)504 {505 float64_u ua;506 ua.val = a;507 508 float64_u ub;509 ub.val = b;510 511 float64_u res;512 513 if (ua.data.parts.sign != ub.data.parts.sign) {514 ub.data.parts.sign = !ub.data.parts.sign;515 res.data = add_float64(ua.data, ub.data);516 } else517 res.data = sub_float64(ua.data, ub.data);518 519 return res.val;520 }521 522 #endif523 524 #ifdef float128_t525 526 float128_t __subtf3(float128_t a, float128_t b)527 {528 float128_u ua;529 ua.val = a;530 531 float128_u ub;532 ub.val = b;533 534 float128_u res;535 536 if (ua.data.parts.sign != ub.data.parts.sign) {537 ub.data.parts.sign = !ub.data.parts.sign;538 res.data = add_float128(ua.data, ub.data);539 } else540 res.data = sub_float128(ua.data, ub.data);541 542 return res.val;543 }544 545 void _Qp_sub(float128_t *c, float128_t *a, float128_t *b)546 {547 *c = __subtf3(*a, *b);548 }549 550 #endif551 552 440 /** @} 553 441 */
Note:
See TracChangeset
for help on using the changeset viewer.