-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathary.h
60 lines (44 loc) · 2.19 KB
/
ary.h
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
#ifndef _ARY_H_
#define _ARY_H_
#include "stdbool.h"
/*
wartość przybliżona jest reprezentowana jako suma n/2 rozłącznych przedziałów;
n reprezentuje liczbę "punktów na osi liczbowej", czyli dolnych i górnych krańców przedziałów;
t to tablica przechowująca n uporządkowanych niemalejąco wartości;
parzyste elementy (t[0], t[2], ...) reprezentują początki przedziałów, a nieparzyste (t[1], t[3], ...) - końce przedziałów;
przedział o dolnym krańcu równym górnemu reprezentuje dokładną wartość;
implementacja pozwala na dowolną liczbę rozłącznych przedziałów,
chociaż w warunkach określonych w treści zadania możliwe jest uzyskanie maksymalnie dwóch (czyli n <= 4);
*/
typedef struct wartosc {
int n;
double* t;
} wartosc;
/* Implicite zakładamy, że wszystkie argumenty typu double są liczbami */
/* rzeczywistymi, tzn. są różne od HUGE_VAL, -HUGE_VAL i NAN. */
/* wartosc_dokladnosc(x, p) zwraca wartość reprezentującą */
/* x +/- p% */
/* warunek początkowy: p > 0 */
wartosc wartosc_dokladnosc(double x, double p);
/* wartosc_od_do(x, y) zwraca wartość reprezentującą [x;y] */
/* warunek poczatkowy: x <= y */
wartosc wartosc_od_do(double x, double y);
/* wartosc_dokladna(x) zwraca wartość reprezentującą [x;x] */
wartosc wartosc_dokladna(double x);
/* in_wartosc(w, x) = x \in w */
bool in_wartosc(wartosc w, double x);
/* min_wartosc(w) = najmniejsza możliwa wartość w, */
/* lub -HUGE_VAL jeśli brak dolnego ograniczenia. */
double min_wartosc(wartosc w);
/* max_wartosc(w) = największa możliwa wartość w, */
/* lub HUGE_VAL jeśli brak górnego ograniczenia. */
double max_wartosc(wartosc w);
/* środek przedziału od min_wartosc do max_wartosc, */
/* lub nan jeśli min i max_wartosc nie są określone. */
double sr_wartosc(wartosc w);
/* Operacje arytmetyczne na niedokładnych wartościach. */
wartosc plus(wartosc a, wartosc b);
wartosc minus(wartosc a, wartosc b);
wartosc razy(wartosc a, wartosc b);
wartosc podzielic(wartosc a, wartosc b);
#endif