Lines Matching refs:bx

588 static floatX floatXAdd( floatX ax, floatX bx )
594 if ( bx.isNaN ) return bx;
595 if ( ax.isInf && bx.isInf ) {
596 if ( ax.sign == bx.sign ) return ax;
600 if ( bx.isInf ) return bx;
601 if ( ax.isZero && bx.isZero ) {
602 if ( ax.sign == bx.sign ) return ax;
605 if ( ( ax.sign != bx.sign )
606 && ( ax.exp == bx.exp )
607 && eq64( ax.sig, bx.sig )
615 if ( ax.isZero ) return bx;
616 if ( bx.isZero ) return ax;
617 expDiff = ax.exp - bx.exp;
620 zx.exp = bx.exp;
631 if ( ax.sign != bx.sign ) zx.sig = neg64( zx.sig );
632 zx.sign = bx.sign;
633 zx.sig = add64( zx.sig, bx.sig );
636 zx = bx;
648 if ( ax.sign != bx.sign ) zx.sig = neg64( zx.sig );
660 static floatX floatXMul( floatX ax, floatX bx )
666 if ( bx.isNaN ) return bx;
668 if ( bx.isZero ) return floatXInvalid();
669 if ( bx.sign ) ax.sign = ! ax.sign;
672 if ( bx.isInf ) {
674 if ( ax.sign ) bx.sign = ! bx.sign;
675 return bx;
678 zx.sign ^= bx.sign;
679 if ( ax.isZero || bx.isZero ) {
682 zx.exp += bx.exp + 1;
686 if ( bx.sig.a1 & 2 ) zx.sig = add64( zx.sig, ax.sig );
687 bx.sig = shortShift64RightJamming( bx.sig, 1 );
694 static floatX floatXDiv( floatX ax, floatX bx )
701 if ( bx.isNaN ) return bx;
703 if ( bx.isInf ) return floatXInvalid();
704 if ( bx.sign ) ax.sign = ! ax.sign;
707 if ( bx.isZero ) {
710 if ( ax.sign ) bx.sign = ! bx.sign;
711 bx.isZero = FALSE;
712 bx.isInf = TRUE;
713 return bx;
716 zx.sign ^= bx.sign;
717 if ( ax.isZero || bx.isInf ) {
720 zx.exp -= bx.exp + 1;
723 negBSig = neg64( bx.sig );
725 if ( le64( bx.sig, ax.sig ) ) {
737 static floatX floatXRem( floatX ax, floatX bx )
744 if ( bx.isNaN ) return bx;
745 if ( ax.isInf || bx.isZero ) return floatXInvalid();
746 if ( ax.isZero || bx.isInf ) return ax;
747 --bx.exp;
748 if ( ax.exp < bx.exp ) return ax;
749 bx.sig = shortShift64Left( bx.sig, 1 );
750 negBSig = neg64( bx.sig );
751 while ( bx.exp < ax.exp ) {
752 if ( le64( bx.sig, ax.sig ) ) ax.sig = add64( ax.sig, negBSig );
756 lastQuotientBit = le64( bx.sig, ax.sig );
814 static flag floatXEq( floatX ax, floatX bx )
817 if ( ax.isNaN || bx.isNaN ) return FALSE;
818 if ( ax.isZero && bx.isZero ) return TRUE;
819 if ( ax.sign != bx.sign ) return FALSE;
820 if ( ax.isInf || bx.isInf ) return ax.isInf && bx.isInf;
821 return ( ax.exp == bx.exp ) && eq64( ax.sig, bx.sig );
825 static flag floatXLe( floatX ax, floatX bx )
828 if ( ax.isNaN || bx.isNaN ) return FALSE;
829 if ( ax.isZero && bx.isZero ) return TRUE;
830 if ( ax.sign != bx.sign ) return ax.sign;
832 if ( ax.isInf || bx.isZero ) return TRUE;
833 if ( bx.isInf || ax.isZero ) return FALSE;
834 if ( bx.exp < ax.exp ) return TRUE;
835 if ( ax.exp < bx.exp ) return FALSE;
836 return le64( bx.sig, ax.sig );
839 if ( bx.isInf || ax.isZero ) return TRUE;
840 if ( ax.isInf || bx.isZero ) return FALSE;
841 if ( ax.exp < bx.exp ) return TRUE;
842 if ( bx.exp < ax.exp ) return FALSE;
843 return le64( ax.sig, bx.sig );
848 static flag floatXLt( floatX ax, floatX bx )
851 if ( ax.isNaN || bx.isNaN ) return FALSE;
852 if ( ax.isZero && bx.isZero ) return FALSE;
853 if ( ax.sign != bx.sign ) return ax.sign;
854 if ( ax.isInf && bx.isInf ) return FALSE;
856 if ( ax.isInf || bx.isZero ) return TRUE;
857 if ( bx.isInf || ax.isZero ) return FALSE;
858 if ( bx.exp < ax.exp ) return TRUE;
859 if ( ax.exp < bx.exp ) return FALSE;
860 return lt64( bx.sig, ax.sig );
863 if ( bx.isInf || ax.isZero ) return TRUE;
864 if ( ax.isInf || bx.isZero ) return FALSE;
865 if ( ax.exp < bx.exp ) return TRUE;
866 if ( bx.exp < ax.exp ) return FALSE;
867 return lt64( ax.sig, bx.sig );
982 floatX ax, bx;
985 bx = float32ToFloatX( b );
986 if ( ax.isNaN || bx.isNaN ) {
989 return floatXLe( ax, bx );
995 floatX ax, bx;
998 bx = float32ToFloatX( b );
999 if ( ax.isNaN || bx.isNaN ) {
1002 return floatXLt( ax, bx );
1008 floatX ax, bx;
1011 bx = float32ToFloatX( b );
1012 if ( ax.isNaN || bx.isNaN ) {
1015 return floatXEq( ax, bx );
1133 floatX ax, bx;
1136 bx = float64ToFloatX( b );
1137 if ( ax.isNaN || bx.isNaN ) {
1140 return floatXLe( ax, bx );
1146 floatX ax, bx;
1149 bx = float64ToFloatX( b );
1150 if ( ax.isNaN || bx.isNaN ) {
1153 return floatXLt( ax, bx );
1159 floatX ax, bx;
1162 bx = float64ToFloatX( b );
1163 if ( ax.isNaN || bx.isNaN ) {
1166 return floatXEq( ax, bx );