QuadFloat.st
changeset 5021 073ff185359b
parent 5020 9d9c46a3c1b1
child 5022 54763fb429b9
equal deleted inserted replaced
5020:9d9c46a3c1b1 5021:073ff185359b
  2152 f128M_rem( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
  2152 f128M_rem( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
  2153 {
  2153 {
  2154     *zPtr = f128_rem( *aPtr, *bPtr );
  2154     *zPtr = f128_rem( *aPtr, *bPtr );
  2155 }
  2155 }
  2156 
  2156 
       
  2157 static inline float128_t
       
  2158 f128_negate( float128_t a) {
       
  2159     struct uint128 sigA;
       
  2160     uint_fast64_t uiA64, uiA0;
       
  2161     union ui128_f128 uA;
       
  2162 
       
  2163     uA.f = a;
       
  2164     uiA64 = uA.ui.v64;
       
  2165     uiA0  = uA.ui.v0;
       
  2166     if (isNaNF128UI( uiA64, uiA0 )) return a;
       
  2167     uiA64 ^= 0x80000000;
       
  2168     return uA.f;
       
  2169 }
       
  2170 
       
  2171 static inline void
       
  2172 f128M_negate( const float128_t *aPtr, float128_t *zPtr )
       
  2173 {
       
  2174     *zPtr = f128_negate( *aPtr );
       
  2175 }
       
  2176 
  2157 #endif // SUPPORT_QUADFLOAT
  2177 #endif // SUPPORT_QUADFLOAT
  2158 
  2178 
  2159 %}
  2179 %}
  2160 ! !
  2180 ! !
  2161 
  2181 
  2583 	 No, you shalt not divide by zero
  2603 	 No, you shalt not divide by zero
  2584 	"
  2604 	"
  2585 	^ ZeroDivide raiseRequestWith:thisContext.
  2605 	^ ZeroDivide raiseRequestWith:thisContext.
  2586     ].
  2606     ].
  2587     ^ aNumber remainderFromLongFloat:self
  2607     ^ aNumber remainderFromLongFloat:self
       
  2608 !
       
  2609 
       
  2610 negated
       
  2611     "return the receiver negated"
       
  2612 
       
  2613 %{  /* NOCONTEXT */
       
  2614 #ifdef SUPPORT_QUADFLOAT
       
  2615     OBJ newFloat;
       
  2616     float128_t result, myVal;
       
  2617 
       
  2618     myVal = __quadFloatVal(self);
       
  2619     f128M_negate( &myVal, &result );
       
  2620     __qMKQFLOAT(newFloat, result);
       
  2621     RETURN ( newFloat );
       
  2622 #endif
       
  2623 %}.
  2588 ! !
  2624 ! !
  2589 
  2625 
  2590 !QuadFloat methodsFor:'coercing & converting'!
  2626 !QuadFloat methodsFor:'coercing & converting'!
  2591 
  2627 
  2592 generality
  2628 generality