home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / icon / dos / src / tests / checkfpx.icn < prev    next >
Text File  |  1992-02-09  |  14KB  |  278 lines

  1. procedure main()
  2.    write("This test of floating-point arithmetic is likely to show")
  3.    write("differences from platform to platform because of differences")
  4.    write("in floating-point precision and details of the routines that")
  5.    write("convert floating-point numbers to strings.  If the values")
  6.    write("produced in local tests are approximately the same in magnitude")
  7.    write("as shown in the standard results, there's nothing to worry about.")
  8.    write("In addition, some platforms may show 0.0 as \"-0.0\".  You can")
  9.    write("ignore this if you wish.")
  10.    p1()
  11.    p2()
  12.    p3()
  13.    p4()
  14.    p5()
  15.    p6()
  16. end
  17.  
  18. procedure p1()
  19.    write("every 1 to 10 do write(?0) ----> ",(every 1 to 10 do write(Image(?0))) | "none")
  20.    write("every i := 1 to 50 do write(real(repl(\"0\",i) || \"2.\")) ----> ",Image(every i := 1 to 50 do write(real(repl("0",i) || "2."))) | "none")
  21.    write("every i := 1 to 30 do write(integer(repl(\"0\",i) || \"2\")) ----> ",Image(every i := 1 to 30 do write(integer(repl("0",i) || "2"))) | "none")
  22.    write("2.0 ~=== +2.0 ----> ",Image(2.0 ~=== +2.0) | "none")
  23.    write("abs(3.0) ----> ",Image(abs(3.0)) | "none")
  24.    write("Image(2e13) ----> ",Image(Image(2e13)) | "none")
  25.    write("Image(0.0006) ----> ",Image(Image(0.0006)) | "none")
  26.    write("Image(2.0) ----> ",Image(Image(2.0)) | "none")
  27.    write("integer(2.0) ----> ",Image(integer(2.0)) | "none")
  28.    write("integer(2.7) ----> ",Image(integer(2.7)) | "none")
  29.    write("integer(\".\") ----> ",Image(integer(".")) | "none")
  30.    write("integer(\".3\") ----> ",Image(integer(".3")) | "none")
  31.    write("integer(\"0.3\") ----> ",Image(integer("0.3")) | "none")
  32.    write("integer(\" . 3\") ----> ",Image(integer(" . 3")) | "none")
  33.    write("integer(\"e2\") ----> ",Image(integer("e2")) | "none")
  34.    write("integer(\"3e500\") ----> ",Image(integer("3e500")) | "none")
  35.    write("numeric(2.0) ----> ",Image(numeric(2.0)) | "none")
  36.    write("numeric(2.7) ----> ",Image(numeric(2.7)) | "none")
  37.    write("numeric(\".\") ----> ",Image(numeric(".")) | "none")
  38.    write("numeric(\".3\") ----> ",Image(numeric(".3")) | "none")
  39.    write("numeric(\"0.3\") ----> ",Image(numeric("0.3")) | "none")
  40. end
  41.  
  42. procedure p2()
  43.    write("numeric(\" . 3\") ----> ",Image(numeric(" . 3")) | "none")
  44.    write("numeric(\"e2\") ----> ",Image(numeric("e2")) | "none")
  45.    write("numeric(\"3e500\") ----> ",Image(numeric("3e500")) | "none")
  46.    write("real(2) ----> ",Image(real(2)) | "none")
  47.    write("real(2.0) ----> ",Image(real(2.0)) | "none")
  48.    write("real(2.7) ----> ",Image(real(2.7)) | "none")
  49.    write("real(\"2\") ----> ",Image(real("2")) | "none")
  50.    write("real(\" 2\") ----> ",Image(real(" 2")) | "none")
  51.    write("real(\"2 \") ----> ",Image(real("2 ")) | "none")
  52.    write("real(\"+2\") ----> ",Image(real("+2")) | "none")
  53.    write("real(\"-2\") ----> ",Image(real("-2")) | "none")
  54.    write("real(\"- 2\") ----> ",Image(real("- 2")) | "none")
  55.    write("real(\" -    2 \") ----> ",Image(real(" -    2 ")) | "none")
  56.    write("real(\"\") ----> ",Image(real("")) | "none")
  57.    write("real(\"--2\") ----> ",Image(real("--2")) | "none")
  58.    write("real(\" \") ----> ",Image(real(" ")) | "none")
  59.    write("real(\"-\") ----> ",Image(real("-")) | "none")
  60.    write("real(\"+\") ----> ",Image(real("+")) | "none")
  61.    write("real(\".\") ----> ",Image(real(".")) | "none")
  62.    write("real(\".3\") ----> ",Image(real(".3")) | "none")
  63.    write("real(\"0.3\") ----> ",Image(real("0.3")) | "none")
  64.    write("real(\" . 3\") ----> ",Image(real(" . 3")) | "none")
  65.    write("real(\"e2\") ----> ",Image(real("e2")) | "none")
  66.    write("real(\"3e500\") ----> ",Image(real("3e500")) | "none")
  67.    write("real(\"7r4\") ----> ",Image(real("7r4")) | "none")
  68.    write("real(\"4r7\") ----> ",Image(real("4r7")) | "none")
  69.    write("real(\"4r 7\") ----> ",Image(real("4r 7")) | "none")
  70.    write("real(\"7r 4\") ----> ",Image(real("7r 4")) | "none")
  71.    write("real(\"16rff\") ----> ",Image(real("16rff")) | "none")
  72.    write("real(\"36rcat\") ----> ",Image(real("36rcat")) | "none")
  73.    write("real(\"36Rcat\") ----> ",Image(real("36Rcat")) | "none")
  74.    write("real(\"36rCAT\") ----> ",Image(real("36rCAT")) | "none")
  75.    write("real(\"1r1\") ----> ",Image(real("1r1")) | "none")
  76.    write("real(\"2r0\") ----> ",Image(real("2r0")) | "none")
  77.    write("real(\"22222222222222222222222222222\") ----> ",Image(real("22222222222222222222222222222")) | "none")
  78.    write("numeric(2.0) ----> ",Image(numeric(2.0)) | "none")
  79.    write("numeric(2.7) ----> ",Image(numeric(2.7)) | "none")
  80.    write("numeric(0.3) ----> ",Image(numeric(0.3)) | "none")
  81.    write("numeric(e2) ----> ",Image(numeric(e2)) | "none")
  82.    write("36. ^ 9 ----> ",Image(36. ^ 9) | "none")
  83.    write("36 ^ 9. ----> ",Image(36 ^ 9.) | "none")
  84.    write("36. ^ 9. ----> ",Image(36. ^ 9.) | "none")
  85.    write("-36. ^ 9 ----> ",Image(-36. ^ 9) | "none")
  86.    write("-36. ^ -9 ----> ",Image(-36. ^ -9) | "none")
  87.    write((every i := 1 to 37 do write(Image(real(repl("2",i) || ".")))) | "failed")
  88.    write((every i := 1 to 37 do write(Image(real(repl("2",i) || ".2")))) | "failed")
  89.    write((every i := 1 to 37 do write(Image((repl("2",i) || ".2") + 1))) | "failed")
  90.    write("2.0 === +2.0 ----> ",Image(2.0 === +2.0) | "none")
  91.    write("?30.0 ----> ",Image(?30.0) | "none")
  92. end
  93.  
  94. procedure p3()
  95.    write("copy(1.0) ----> ",Image(copy(1.0)) | "none")
  96.    write("trim(3.14159,58) ----> ",Image(trim(3.14159,58)) | "none")
  97.    write("Image(2e13) ----> ",Image(Image(2e13)) | "none")
  98.    write("Image(0.0006) ----> ",Image(Image(0.0006)) | "none")
  99. end
  100.  
  101. procedure p4()
  102.    write("Image(2.0) ----> ",Image(Image(2.0)) | "none")
  103.    write("string(2.0) ----> ",Image(string(2.0)) | "none")
  104.    write("string(2.7) ----> ",Image(string(2.7)) | "none")
  105.    write("string(\".\") ----> ",Image(string(".")) | "none")
  106.    write("string(\".3\") ----> ",Image(string(".3")) | "none")
  107.    write("string(\"0.3\") ----> ",Image(string("0.3")) | "none")
  108.    write("string(\" . 3\") ----> ",Image(string(" . 3")) | "none")
  109.    write("string(\"e2\") ----> ",Image(string("e2")) | "none")
  110.    write("string(\"3e500\") ----> ",Image(string("3e500")) | "none")
  111.    write("type(1.0) ----> ",Image(type(1.0)) | "none")
  112.    write("cset(2.0) ----> ",Image(cset(2.0)) | "none")
  113.    write("cset(2.7) ----> ",Image(cset(2.7)) | "none")
  114.    write("cset(\".\") ----> ",Image(cset(".")) | "none")
  115.    write("cset(\".3\") ----> ",Image(cset(".3")) | "none")
  116.    write("cset(\"0.3\") ----> ",Image(cset("0.3")) | "none")
  117.    write("cset(\" . 3\") ----> ",Image(cset(" . 3")) | "none")
  118.    write("cset(\"e2\") ----> ",Image(cset("e2")) | "none")
  119.    write("cset(\"3e500\") ----> ",Image(cset("3e500")) | "none")
  120.    write("+1.0 ----> ",Image(+1.0) | "none")
  121.    write("-1.0 ----> ",Image(-1.0) | "none")
  122. end
  123.  
  124. procedure p5()
  125.    write("real(2) ----> ",Image(real(2)) | "none")
  126.    write("real(2.0) ----> ",Image(real(2.0)) | "none")
  127.    write("real(2.7) ----> ",Image(real(2.7)) | "none")
  128.    write("real(\"2\") ----> ",Image(real("2")) | "none")
  129.    write("real(\" 2\") ----> ",Image(real(" 2")) | "none")
  130.    write("real(\"2 \") ----> ",Image(real("2 ")) | "none")
  131.    write("real(\"+2\") ----> ",Image(real("+2")) | "none")
  132.    write("real(\"-2\") ----> ",Image(real("-2")) | "none")
  133.    write("real(\"- 2\") ----> ",Image(real("- 2")) | "none")
  134.    write("real(\" -    2 \") ----> ",Image(real(" -    2 ")) | "none")
  135.    write("real(\"\") ----> ",Image(real("")) | "none")
  136.    write("real(\"--2\") ----> ",Image(real("--2")) | "none")
  137.    write("real(\" \") ----> ",Image(real(" ")) | "none")
  138.    write("real(\"-\") ----> ",Image(real("-")) | "none")
  139.    write("real(\"+\") ----> ",Image(real("+")) | "none")
  140.    write("real(\".\") ----> ",Image(real(".")) | "none")
  141.    write("real(\".3\") ----> ",Image(real(".3")) | "none")
  142.    write("real(\"0.3\") ----> ",Image(real("0.3")) | "none")
  143.    write("real(\" . 3\") ----> ",Image(real(" . 3")) | "none")
  144.    write("real(\"e2\") ----> ",Image(real("e2")) | "none")
  145.    write("real(\"3e500\") ----> ",Image(real("3e500")) | "none")
  146.    write("real(\"7r4\") ----> ",Image(real("7r4")) | "none")
  147.    write("real(\"4r7\") ----> ",Image(real("4r7")) | "none")
  148.    write("real(\"4r 7\") ----> ",Image(real("4r 7")) | "none")
  149.    write("real(\"7r 4\") ----> ",Image(real("7r 4")) | "none")
  150.    write("real(\"16rff\") ----> ",Image(real("16rff")) | "none")
  151.    write("real(\"36rcat\") ----> ",Image(real("36rcat")) | "none")
  152.    write("real(\"36Rcat\") ----> ",Image(real("36Rcat")) | "none")
  153.    write("real(\"36rCAT\") ----> ",Image(real("36rCAT")) | "none")
  154.    write("real(\"1r1\") ----> ",Image(real("1r1")) | "none")
  155.    write("integer(2.0) ----> ",Image(integer(2.0)) | "none")
  156.    write("integer(2.7) ----> ",Image(integer(2.7)) | "none")
  157.    write("integer(\".\") ----> ",Image(integer(".")) | "none")
  158.    write("integer(\".3\") ----> ",Image(integer(".3")) | "none")
  159.    write("integer(\"0.3\") ----> ",Image(integer("0.3")) | "none")
  160.    write("integer(\" . 3\") ----> ",Image(integer(" . 3")) | "none")
  161.    write("numeric(2.0) ----> ",Image(numeric(2.0)) | "none")
  162.    write("numeric(2.7) ----> ",Image(numeric(2.7)) | "none")
  163.    write("numeric(\".\") ----> ",Image(numeric(".")) | "none")
  164.    write("numeric(\".3\") ----> ",Image(numeric(".3")) | "none")
  165.    write("numeric(\"0.3\") ----> ",Image(numeric("0.3")) | "none")
  166.    write("numeric(\" . 3\") ----> ",Image(numeric(" . 3")) | "none")
  167.    write("real(2.0) ----> ",Image(real(2.0)) | "none")
  168.    write("real(2.7) ----> ",Image(real(2.7)) | "none")
  169.    write("real(\".\") ----> ",Image(real(".")) | "none")
  170.    write("real(\".3\") ----> ",Image(real(".3")) | "none")
  171.    write("real(\"0.3\") ----> ",Image(real("0.3")) | "none")
  172.    write("real(\" . 3\") ----> ",Image(real(" . 3")) | "none")
  173.    write("abs(3.0) ----> ",Image(abs(3.0)) | "none")
  174.    write("abs(0.0) ----> ",Image(abs(0.0)) | "none")
  175.    write("abs(-3.0) ----> ",Image(abs(-3.0)) | "none")
  176.    write("36. % 7 ----> ",Image(36. % 7) | "none")
  177.    write("36 % 7. ----> ",Image(36 % 7.) | "none")
  178.    write("36. % 7. ----> ",Image(36. % 7.) | "none")
  179.    write("-36. % 7 ----> ",Image(-36. % 7) | "none")
  180.    write("36 % -7. ----> ",Image(36 % -7.) | "none")
  181.    write("-36. % -7. ----> ",Image(-36. % -7.) | "none")
  182.    write("36. * 9 ----> ",Image(36. * 9) | "none")
  183.    write("36 * 9. ----> ",Image(36 * 9.) | "none")
  184.    write("36. * 9. ----> ",Image(36. * 9.) | "none")
  185.    write("-36. * 9 ----> ",Image(-36. * 9) | "none")
  186. end
  187.  
  188. procedure p6()
  189.    write("36 * -9. ----> ",Image(36 * -9.) | "none")
  190.    write("-36. * -9. ----> ",Image(-36. * -9.) | "none")
  191.    write("36. / 9 ----> ",Image(36. / 9) | "none")
  192.    write("36 / 9. ----> ",Image(36 / 9.) | "none")
  193.    write("36. / 9. ----> ",Image(36. / 9.) | "none")
  194.    write("-36. / 9 ----> ",Image(-36. / 9) | "none")
  195.    write("36 / -9. ----> ",Image(36 / -9.) | "none")
  196.    write("-36. / -9. ----> ",Image(-36. / -9.) | "none")
  197.    write("36. + 9 ----> ",Image(36. + 9) | "none")
  198.    write("36 + 9. ----> ",Image(36 + 9.) | "none")
  199.    write("36. + 9. ----> ",Image(36. + 9.) | "none")
  200.    write("-36. + 9 ----> ",Image(-36. + 9) | "none")
  201.    write("36 + -9. ----> ",Image(36 + -9.) | "none")
  202.    write("-36. + -9. ----> ",Image(-36. + -9.) | "none")
  203.    write("1. < 1 ----> ",Image(1. < 1) | "none")
  204.    write("1 < 2. ----> ",Image(1 < 2.) | "none")
  205.    write("1. < 0. ----> ",Image(1. < 0.) | "none")
  206.    write("-1 < 0. ----> ",Image(-1 < 0.) | "none")
  207.    write("1. < -2 ----> ",Image(1. < -2) | "none")
  208.    write("-1 < -0. ----> ",Image(-1 < -0.) | "none")
  209.    write("1. > 1 ----> ",Image(1. > 1) | "none")
  210.    write("1 > 2. ----> ",Image(1 > 2.) | "none")
  211.    write("1. > 0. ----> ",Image(1. > 0.) | "none")
  212.    write("-1 > 0. ----> ",Image(-1 > 0.) | "none")
  213.    write("1. > -2 ----> ",Image(1. > -2) | "none")
  214.    write("-1 > -0. ----> ",Image(-1 > -0.) | "none")
  215.    write("1. <= 1 ----> ",Image(1. <= 1) | "none")
  216.    write("1 <= 2. ----> ",Image(1 <= 2.) | "none")
  217.    write("1. <= 0. ----> ",Image(1. <= 0.) | "none")
  218.    write("-1 <= 0. ----> ",Image(-1 <= 0.) | "none")
  219.    write("1. <= -2 ----> ",Image(1. <= -2) | "none")
  220.    write("-1 <= -0. ----> ",Image(-1 <= -0.) | "none")
  221.    write("1. >= 1 ----> ",Image(1. >= 1) | "none")
  222.    write("1 >= 2. ----> ",Image(1 >= 2.) | "none")
  223.    write("1. >= 0. ----> ",Image(1. >= 0.) | "none")
  224.    write("-1 >= 0. ----> ",Image(-1 >= 0.) | "none")
  225.    write("1. >= -2 ----> ",Image(1. >= -2) | "none")
  226.    write("-1 >= -0. ----> ",Image(-1 >= -0.) | "none")
  227.    write("1. = 1 ----> ",Image(1. = 1) | "none")
  228.    write("1 = 2. ----> ",Image(1 = 2.) | "none")
  229.    write("1. = 0. ----> ",Image(1. = 0.) | "none")
  230.    write("-1 = 0. ----> ",Image(-1 = 0.) | "none")
  231.    write("1. = -2 ----> ",Image(1. = -2) | "none")
  232.    write("-1 = -0. ----> ",Image(-1 = -0.) | "none")
  233.    write("1. ~= 1 ----> ",Image(1. ~= 1) | "none")
  234.    write("1 ~= 2. ----> ",Image(1 ~= 2.) | "none")
  235.    write("1. ~= 0. ----> ",Image(1. ~= 0.) | "none")
  236.    write("-1 ~= 0. ----> ",Image(-1 ~= 0.) | "none")
  237.    write("1. ~= -2 ----> ",Image(1. ~= -2) | "none")
  238.    write("-1 ~= -0. ----> ",Image(-1 ~= -0.) | "none")
  239.    write("36. ^ 9 ----> ",Image(36. ^ 9) | "none")
  240.    write("36 ^ 9. ----> ",Image(36 ^ 9.) | "none")
  241.    write("36. ^ 9. ----> ",Image(36. ^ 9.) | "none")
  242.    write("-36. ^ 9 ----> ",Image(-36. ^ 9) | "none")
  243.    write("-36. ^ -9 ----> ",Image(-36. ^ -9) | "none")
  244.    write("end of checkfp")
  245. end
  246.  
  247. procedure Image(x)
  248.    local head, tail, exp, span
  249.  
  250.    span := 9
  251.  
  252.    if type(x) ~== "real" then return image(x)
  253.    else {
  254.       x ? {
  255.          if head := tab(upto('e'))
  256.          then {
  257.             tail := tab(0)
  258.             head ? return (tab(span | 0) || tail)
  259.             }
  260.          else {
  261.             head := tab(span - 1 | 0)
  262.             #
  263.             # if head is too small to include the ".", go to floating point
  264.             # format.
  265.             #
  266.             if exp := *tab(upto('.')) then
  267.                head ? return move(1) || "." || move(span - 3) ||
  268.                   "e+" || (span - 3 + exp)
  269.             else {
  270.                if head[-1] == "." then
  271.                   head ||:= (move(1) | "0")
  272.                return head
  273.                }
  274.             }
  275.          }
  276.       }
  277. end
  278.