|
|
1.1 ! root 1: /* floating point utility operations for software-float */ ! 2: ! 3: extern float _fsign; /* 0100000L for norgen, 020000000000L for unix */ ! 4: extern long _fsign2; /* same constant, different type */ ! 5: extern float _one; /* the constant 1.0 */ ! 6: long _funmin(f) ! 7: long f; ! 8: { ! 9: if(f)return(f^_fsign2); else return(0L); ! 10: } ! 11: ! 12: float _funplus(f) ! 13: float f; ! 14: { ! 15: return(f); ! 16: } ! 17: ! 18: float _finc1(pf) ! 19: float *pf; ! 20: { ! 21: return(*pf= *pf+_one); ! 22: } ! 23: ! 24: float _fdec1(pf) ! 25: float *pf; ! 26: { ! 27: return(*pf= *pf-_one); ! 28: } ! 29: ! 30: float _finc2(pf) ! 31: float *pf; ! 32: { ! 33: float temp; ! 34: temp= *pf; ! 35: *pf= *pf+_one; ! 36: return(temp); ! 37: } ! 38: ! 39: float _fdec2(pf) ! 40: float *pf; ! 41: { ! 42: float temp; ! 43: temp= *pf; ! 44: *pf = *pf-_one; ! 45: return(temp); ! 46: } ! 47: ! 48: float _fmod(b,a) ! 49: float b,a; ! 50: { ! 51: return(a-((long)(a/b))*b); ! 52: } ! 53: ! 54: float _feqpl(b,pa) ! 55: float b,*pa; ! 56: { ! 57: return(*pa= *pa+b); ! 58: } ! 59: ! 60: float _feqmi(b,pa) ! 61: float b,*pa; ! 62: { ! 63: return(*pa= *pa-b); ! 64: } ! 65: ! 66: float _feqmu(b,pa) ! 67: float b,*pa; ! 68: { ! 69: return(*pa= *pa*b); ! 70: } ! 71: ! 72: float _feqdv(b,pa) ! 73: float b,*pa; ! 74: { ! 75: return(*pa= *pa/b); ! 76: } ! 77: ! 78: float _feqan(b,pa) ! 79: float b,*pa; ! 80: { ! 81: return(*pa= *pa&b); ! 82: } ! 83: ! 84: float _feqer(b,pa) ! 85: float b,*pa; ! 86: { ! 87: return(*pa= *pa^b); ! 88: } ! 89: ! 90: float _feqmo(b,pa) ! 91: float b,*pa; ! 92: { ! 93: return(*pa= *pa%b); ! 94: } ! 95: ! 96: float _feqor(b,pa) ! 97: float b,*pa; ! 98: { ! 99: return(*pa= *pa|b); ! 100: } ! 101: ! 102: float _feqsr(b,pa) ! 103: float b,*pa; ! 104: { ! 105: return(*pa= *pa>>b); ! 106: } ! 107: ! 108: float _feqsl(b,pa) ! 109: float b,*pa; ! 110: { ! 111: return(*pa= *pa<<b); ! 112: } ! 113: ! 114: int _fgt(b,a) ! 115: float b,a; ! 116: { ! 117: float temp; ! 118: if(temp=a-b)return((temp&_fsign)==0.0); ! 119: return(0); ! 120: } ! 121: ! 122: int _fge(b,a) ! 123: float b,a; ! 124: { ! 125: return(((a-b)&_fsign)==0.0); ! 126: } ! 127: ! 128: int _fle(b,a) ! 129: float b,a; ! 130: { ! 131: float temp; ! 132: if(temp=a-b)return((temp&_fsign)==_fsign); ! 133: return(1); ! 134: } ! 135: int _flt(b,a) ! 136: float b,a; ! 137: { ! 138: return(((a-b)&_fsign)==_fsign); ! 139: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.