summaryrefslogtreecommitdiff
path: root/fpcsrc/packages/numlib/tests/turte.pas
blob: 5a426c96073bec1e0c4447c68be2646d5f519dac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
program TurTe;

uses
  typ;

  function Tweelog(x: real): integer;
  var
    i: integer;
  begin
    i := 0;
    if x > 1 then
      Tweelog := -Tweelog(1 / x)
    else
    begin
      while x < 1 do
      begin
        Dec(i);
        x := 2 * x;
      end;
      if x <> 1 then
        Tweelog := 0
      else
        Tweelog := i;
    end;
  end;

var
  x: real;

begin

  { Test op macheps }
  Writeln('Macheps = 2', Tweelog(macheps));
  Writeln('Hoe wordt er afgerond?');
  x := 1 + macheps;
  Writeln('(1 + macheps     ) - 1 = ', x - 1);
  x := 1 + 0.75 * macheps;
  Writeln('(1 + 0.75*macheps) - 1 = ', x - 1);
  x := 1 + 0.5 * macheps;
  Writeln('(1 + 0.5*macheps ) - 1 = ', x - 1);
  x := 1 + 0.25 * macheps;
  Writeln('(1 + 0.25*macheps) - 1 = ', x - 1);

  {test op giant }
  writeln(' giant = ', giant);
  x := giant / 2;
  writeln(' resultaat van x:= giant / 2 =', x);
  {test op midget}
  writeln(' midget = ', midget);
  x := midget / 2;
  writeln(' resultaat van x:= midget/2 =', x);
  x := midget / 3;
  writeln(' resultaat van x:= midget/3 =', x);
  x := midget * 0.75;
  writeln(' resultaat van x:= midget*0.75 =', x);
end.
program TurTe;

uses
  typ;

  function Tweelog(x: real): integer;
  var
    i: integer;
  begin
    i := 0;
    if x > 1 then
      Tweelog := -Tweelog(1 / x)
    else
    begin
      while x < 1 do
      begin
        Dec(i);
        x := 2 * x;
      end;
      if x <> 1 then
        Tweelog := 0
      else
        Tweelog := i;
    end;
  end;

var
  x: real;

begin

  { Test op macheps }
  Writeln('Macheps = 2', Tweelog(macheps));
  Writeln('Hoe wordt er afgerond?');
  x := 1 + macheps;
  Writeln('(1 + macheps     ) - 1 = ', x - 1);
  x := 1 + 0.75 * macheps;
  Writeln('(1 + 0.75*macheps) - 1 = ', x - 1);
  x := 1 + 0.5 * macheps;
  Writeln('(1 + 0.5*macheps ) - 1 = ', x - 1);
  x := 1 + 0.25 * macheps;
  Writeln('(1 + 0.25*macheps) - 1 = ', x - 1);

  {test op giant }
  writeln(' giant = ', giant);
  x := giant / 2;
  writeln(' resultaat van x:= giant / 2 =', x);
  {test op midget}
  writeln(' midget = ', midget);
  x := midget / 2;
  writeln(' resultaat van x:= midget/2 =', x);
  x := midget / 3;
  writeln(' resultaat van x:= midget/3 =', x);
  x := midget * 0.75;
  writeln(' resultaat van x:= midget*0.75 =', x);
end.