home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 3 / goldfish_volume_3.bin / files / dev / e / amigae / src / tools / longreal / longrealtiny.e < prev   
Text File  |  1992-09-02  |  3KB  |  144 lines

  1. -> longreal module!
  2.  
  3. OPT MODULE
  4. OPT EXPORT
  5.  
  6. OBJECT longreal
  7.   PRIVATE a,b
  8. ENDOBJECT
  9.  
  10. MODULE 'mathieeedoubbas', 'mathieeedoubtrans'
  11.  
  12. EXPORT DEF mathieeedoubbascount, mathieeedoubtranscount
  13.  
  14. RAISE "DLIB" IF OpenLibrary()=NIL
  15.  
  16. PROC dInit(trans=TRUE)
  17.   IF mathieeedoubbascount=0
  18.     mathieeedoubbasbase:=OpenLibrary('mathieeedoubbas.library',0)
  19.   ENDIF
  20.   mathieeedoubbascount++
  21.   IF trans
  22.     IF mathieeedoubtranscount=0
  23.       mathieeedoubtransbase:=OpenLibrary('mathieeedoubtrans.library',0)
  24.     ENDIF
  25.     mathieeedoubtranscount++
  26.   ENDIF
  27. ENDPROC
  28.  
  29. PROC dCleanup(trans=TRUE)
  30.   IF mathieeedoubbasbase
  31.     IF mathieeedoubbascount--=0 THEN CloseLibrary(mathieeedoubbasbase)
  32.   ENDIF
  33.   IF trans
  34.     IF mathieeedoubtransbase
  35.       IF mathieeedoubtranscount--=0 THEN CloseLibrary(mathieeedoubtransbase)
  36.     ENDIF  
  37.   ENDIF
  38. ENDPROC
  39.  
  40. PROC dFloat(int,longreal:PTR TO longreal)
  41.   DEF a,b
  42.   a,b:=IeeeDPFlt(int)
  43.   longreal.a:=a
  44.   longreal.b:=b
  45. ENDPROC longreal
  46.  
  47. PROC dFix(longreal:PTR TO longreal) IS IeeeDPFix(longreal.a,longreal.b)
  48.  
  49. PROC dCompare(x:PTR TO longreal,y:PTR TO longreal) IS IeeeDPCmp(x.a,x.b,y.a,y.b)
  50.  
  51. PROC dAdd(x:PTR TO longreal,y:PTR TO longreal,to=NIL:PTR TO longreal)
  52.   DEF a,b
  53.   a,b:=IeeeDPAdd(x.a,x.b,y.a,y.b)
  54.   IF to
  55.     to.a:=a; to.b:=b
  56.     RETURN to
  57.   ELSE
  58.     x.a:=a; x.b:=b
  59.   ENDIF
  60. ENDPROC x
  61.  
  62. PROC dSub(x:PTR TO longreal,y:PTR TO longreal,to=NIL:PTR TO longreal)
  63.   DEF a,b
  64.   a,b:=IeeeDPSub(x.a,x.b,y.a,y.b)
  65.   IF to
  66.     to.a:=a; to.b:=b
  67.     RETURN to
  68.   ELSE
  69.     x.a:=a; x.b:=b
  70.   ENDIF
  71. ENDPROC x
  72.  
  73. PROC dMul(x:PTR TO longreal,y:PTR TO longreal,to=NIL:PTR TO longreal)
  74.   DEF a,b
  75.   a,b:=IeeeDPMul(x.a,x.b,y.a,y.b)
  76.   IF to
  77.     to.a:=a; to.b:=b
  78.     RETURN to
  79.   ELSE
  80.     x.a:=a; x.b:=b
  81.   ENDIF
  82. ENDPROC x
  83.  
  84. PROC dDiv(x:PTR TO longreal,y:PTR TO longreal,to=NIL:PTR TO longreal)
  85.   DEF a,b
  86.   a,b:=IeeeDPDiv(x.a,x.b,y.a,y.b)
  87.   IF to
  88.     to.a:=a; to.b:=b
  89.     RETURN to
  90.   ELSE
  91.     x.a:=a; x.b:=b
  92.   ENDIF
  93. ENDPROC x
  94.  
  95. PROC dRound(x:PTR TO longreal)
  96.   DEF a,b
  97.   a,b:=IeeeDPFloor(x.a,x.b)
  98.   x.a:=a; x.b:=b
  99. ENDPROC x
  100.  
  101. PROC dRoundUp(x:PTR TO longreal)
  102.   DEF a,b
  103.   a,b:=IeeeDPCeil(x.a,x.b)
  104.   x.a:=a; x.b:=b
  105. ENDPROC x
  106.  
  107. PROC dNeg(x:PTR TO longreal)
  108.   DEF a,b
  109.   a,b:=IeeeDPNeg(x.a,x.b)
  110.   x.a:=a; x.b:=b
  111. ENDPROC x
  112.  
  113. PROC dAbs(x:PTR TO longreal)
  114.   DEF a,b
  115.   a,b:=IeeeDPAbs(x.a,x.b)
  116.   x.a:=a; x.b:=b
  117. ENDPROC x
  118.  
  119. PROC dCopy(x:PTR TO longreal,y:PTR TO longreal)
  120.   x.a:=y.a
  121.   x.b:=y.b
  122. ENDPROC x
  123.  
  124. PROC dFormat(s,x,num)
  125.   DEF c:longreal, d:longreal, e, f[1]:ARRAY
  126.   StringF(s,'\d.',dFix(x))
  127.   dCopy(c,x)
  128.   FOR e:=1 TO num
  129.     dCopy(d,c)
  130.     dRound(d)
  131.     dSub(c,d)
  132.     dFloat(10,d)
  133.     dMul(c,d)
  134.     f[]:="0"+dFix(c)
  135.     StrAdd(s,f,1)
  136.   ENDFOR
  137. ENDPROC s
  138.  
  139. PROC dSqrt(x:PTR TO longreal)
  140.   DEF a,b
  141.   a,b:=IeeeDPSqrt(x.a,x.b)
  142.   x.a:=a; x.b:=b
  143. ENDPROC x
  144.