taddreal.pp 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. {****************************************************************}
  2. { CODE GENERATOR TEST PROGRAM }
  3. {****************************************************************}
  4. { NODE TESTED : secondadd() FPU real type code }
  5. {****************************************************************}
  6. { PRE-REQUISITES: secondload() }
  7. { secondassign() }
  8. { secondtypeconv() }
  9. {****************************************************************}
  10. { DEFINES: }
  11. { FPC = Target is FreePascal compiler }
  12. {****************************************************************}
  13. { REMARKS: }
  14. { }
  15. { }
  16. { }
  17. {****************************************************************}
  18. { Result is either LOC_FPU or LOC_REFERENCE }
  19. { LEFT NODE (operand) (left operator) }
  20. { LOC_REFERENCE / LOC_MEM }
  21. { LOC_FPU }
  22. { RIGHT NODE (operand) }
  23. { LOC_FPU }
  24. { LOC_REFERENCE / LOC_MEM }
  25. {$E+}
  26. Procedure RealTestSub;
  27. var
  28. i : Real;
  29. j : Real;
  30. result : boolean;
  31. Begin
  32. Write('Real - Real test...');
  33. result := true;
  34. i:=99.9;
  35. j:=10.0;
  36. i:=i-j;
  37. if trunc(i) <> trunc(89.9) then
  38. result := false;
  39. WriteLn('Result (89.9) :',i);
  40. i:=j-i;
  41. if trunc(i) <> trunc(-79.9) then
  42. result := false;
  43. WriteLn('Result (-79.9) :',i);
  44. j:=j-10.0;
  45. if j <> 0.0 then
  46. result := false;
  47. WriteLn('Result (0.0) :',j);
  48. if not result then
  49. WriteLn('Failure.')
  50. else
  51. WriteLn('Success.');
  52. end;
  53. procedure RealTestAdd;
  54. var
  55. i : real;
  56. j : real;
  57. result : boolean;
  58. Begin
  59. WriteLn('Real + Real test...');
  60. result := true;
  61. i:= 9;
  62. i:=i+1.5;
  63. if trunc(i) <> trunc(10.5) then
  64. result := false;
  65. WriteLn('Result (10.5) :',i);
  66. i := 0.0;
  67. j := 100.0;
  68. i := i + j + j + 12.5;
  69. if trunc(i) <> trunc(212.5) then
  70. result := false;
  71. WriteLn('Result (212.5) :',i);
  72. if not result then
  73. WriteLn('Failure.')
  74. else
  75. WriteLn('Success.');
  76. end;
  77. procedure realtestmul;
  78. var
  79. i : real;
  80. j : real;
  81. result : boolean;
  82. begin
  83. WriteLn('Real * Real test...');
  84. result := true;
  85. i:= 0;
  86. j:= 0;
  87. i := i * j * i;
  88. if trunc(i) <> trunc(0.0) then
  89. result := false;
  90. WriteLn('Result (0.0) :',i);
  91. i := 10.0;
  92. j := -12.0;
  93. i := i * j * 10.0;
  94. if trunc(i) <> trunc(-1200.0) then
  95. result := false;
  96. WriteLn('Result (-1200.0) :',i);
  97. if not result then
  98. WriteLn('Failure.')
  99. else
  100. WriteLn('Success.');
  101. end;
  102. Procedure RealTestDiv;
  103. var
  104. i : Real;
  105. j : Real;
  106. result : boolean;
  107. Begin
  108. result := true;
  109. WriteLn('Real / Real test...');
  110. i:=-99.9;
  111. j:=10.0;
  112. i:=i / j;
  113. if trunc(i) <> trunc(-9.9) then
  114. result := false;
  115. WriteLn('Result (-9.9) :',i);
  116. i:=j / i;
  117. if trunc(i) <> trunc(-1.01) then
  118. result := false;
  119. WriteLN('Result (-1.01) :',i);
  120. j:=i / 10.0;
  121. if trunc(j) <> trunc(-0.1001) then
  122. result := false;
  123. WriteLn('Result (-0.1001) :',j);
  124. if not result then
  125. WriteLn('Failure.')
  126. else
  127. WriteLn('Success.');
  128. end;
  129. { Procedure RealTestComplex;
  130. var
  131. i : real;
  132. Begin
  133. Write('RESULT SHOULD BE 2.09 :');
  134. i := 4.4;
  135. WriteLn(Sqrt(i));
  136. Write('RESULT SHOULD BE PI :');
  137. WriteLn(Pi);
  138. Write('RESULT SHOULD BE 4.0 :');
  139. WriteLn(Round(3.6));
  140. end;}
  141. procedure realtestequal;
  142. var
  143. i : real;
  144. j : real;
  145. result : boolean;
  146. begin
  147. result := true;
  148. Write('Real = Real test...');
  149. i := 1000.0;
  150. j := 1000.0;
  151. if not (trunc(i) = trunc(j)) then
  152. result := false;
  153. if not (trunc(i) = trunc(1000.0)) then
  154. result := false;
  155. if not result then
  156. WriteLn('Failure.')
  157. else
  158. WriteLn('Success.');
  159. end;
  160. procedure realtestnotequal;
  161. var
  162. i : real;
  163. j : real;
  164. result : boolean;
  165. begin
  166. result := true;
  167. Write('Real <> Real test...');
  168. i := 1000.0;
  169. j := 1000.0;
  170. if (trunc(i) <> trunc(j)) then
  171. result := false;
  172. if (trunc(i) <> trunc(1000.0)) then
  173. result := false;
  174. if not result then
  175. WriteLn('Failure.')
  176. else
  177. WriteLn('Success.');
  178. end;
  179. procedure realtestle;
  180. var
  181. i : real;
  182. j : real;
  183. result : boolean;
  184. begin
  185. result := true;
  186. Write('Real <= Real test...');
  187. i := 1000.0;
  188. j := 1000.0;
  189. if not (trunc(i) <= trunc(j)) then
  190. result := false;
  191. if not (trunc(i) <= trunc(1000.0)) then
  192. result := false;
  193. i := 10000.0;
  194. j := 999.0;
  195. if trunc(i) < trunc(j) then
  196. result := false;
  197. if trunc(i) < trunc(999.0) then
  198. result := false;
  199. if not result then
  200. WriteLn('Failure.')
  201. else
  202. WriteLn('Success.');
  203. end;
  204. procedure realtestge;
  205. var
  206. i : real;
  207. j : real;
  208. result : boolean;
  209. begin
  210. result := true;
  211. Write('Real >= Real test...');
  212. i := 1000.0;
  213. j := 1000.0;
  214. if not (trunc(i) >= trunc(j)) then
  215. result := false;
  216. if not (trunc(i) >= trunc(1000.0)) then
  217. result := false;
  218. i := 999.0;
  219. j := 1000.0;
  220. if trunc(i) > trunc(j) then
  221. result := false;
  222. if trunc(i) > trunc(999.0) then
  223. result := false;
  224. if not result then
  225. WriteLn('Failure.')
  226. else
  227. WriteLn('Success.');
  228. end;
  229. Begin
  230. RealTestEqual;
  231. RealTestNotEqual;
  232. RealTestLE;
  233. RealTestGE;
  234. RealTestSub;
  235. RealTestAdd;
  236. RealTestDiv;
  237. RealTestMul;
  238. { RealTestComplex;}
  239. end.
  240. {
  241. $Log$
  242. Revision 1.3 2001-07-31 01:55:23 carl
  243. * corrected comparing value for real
  244. Revision 1.2 2001/06/12 01:12:34 carl
  245. + added header
  246. Revision 1.1 2001/05/19 11:51:50 peter
  247. * renamed to .pp
  248. Revision 1.2 2001/05/16 15:28:40 carl
  249. * corrected problem with log
  250. }