-
Notifications
You must be signed in to change notification settings - Fork 0
/
Values.pas
108 lines (83 loc) · 2.6 KB
/
Values.pas
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
Unit Values;
interface
type
RealValue = record
value,error:real;
end;
IntegerValue = record
value,error:integer;
end;
LongIntValue = record
value,error:longint;
end;
function RelativeError(value:RealValue):Real;
function RelativeError(value:integerValue):Real;
function RelativeError(value:LongintValue):Real;
function Sum(value1,value2:RealValue):RealValue;
function Sum(value1,value2:integerValue):integerValue;
function Sum(value1,value2:LongintValue):LongintValue;
function Dif(value1,value2:RealValue):RealValue;
function Dif(value1,value2:integerValue):integerValue;
function Dif(value1,value2:LongintValue):longintValue;
function product(value1,value2:realvalue):realvalue;
function product(value1,value2:integervalue):integervalue;
function product(value1,value2:Longintvalue):Longintvalue;
implementation
function RelativeError(value:RealValue):Real;
begin
RelativeError:=value.error/value.value;
end;
function RelativeError(value:integerValue):Real;
begin
RelativeError:=value.error/value.value;
end;
function RelativeError(value:LongintValue):Real;
begin
RelativeError:=value.error/value.value;
end;
function Sum(value1,value2:RealValue):RealValue;
begin
Sum.value:=(value1.value+value2.value);
Sum.error:=(value1.error+value2.error);
end;
function Sum(value1,value2:integerValue):integerValue;
begin
Sum.value:=(value1.value+value2.value);
Sum.error:=(value1.error+value2.error);
end;
function Sum(value1,value2:LongintValue):LongintValue;
begin
Sum.value:=(value1.value+value2.value);
Sum.error:=(value1.error+value2.error);
end;
function Dif(value1,value2:RealValue):RealValue;
begin
dif.value:=(value1.value-value2.value);
Dif.error:=(value1.error+value2.error);
end;
function Dif(value1,value2:integerValue):integerValue;
begin
dif.value:=(value1.value-value2.value);
Dif.error:=(value1.error+value2.error);
end;
function Dif(value1,value2:LongintValue):LongintValue;
begin
dif.value:=(value1.value-value2.value);
Dif.error:=(value1.error+value2.error);
end;
function product(value1,value2:realValue):realValue;
begin
product.value:=(value1.value*value2.value);
product.error:=(RelativeError(value1)+RelativeError(value2))*product.value;
end;
function product(value1,value2:LongintValue):LongintValue;
begin
product.value:=(value1.value*value2.value);
product.error:=round(RelativeError(value1)+RelativeError(value2))*product.value;
end;
function product(value1,value2:integerValue):integerValue;
begin
product.value:=(value1.value*value2.value);
product.error:=round(RelativeError(value1)+RelativeError(value2))*product.value;
end;
end.