interval.h
Go to the documentation of this file.
1 #ifndef INTERVALH
2 #define INTERVALH
3 
4 #include "boolean.h"
5 
6 #include <stdio.h>
7 
33 typedef struct
34 {
35  double lower_limit;
36  double upper_limit;
37 } Tinterval;
38 
48 void NewInterval(double lower,double upper,Tinterval *i);
49 
58 void CopyInterval(Tinterval *i_dst,Tinterval *i_org);
59 
70 boolean CmpIntervals(Tinterval *i1,Tinterval *i2);
71 
81 double LowerLimit(Tinterval *i);
82 
92 double UpperLimit(Tinterval *i);
93 
103 double IntervalSize(Tinterval *i);
104 
116 double DistanceToInterval(double p,Tinterval *i);
117 
129 boolean IsInside(double p,double tol,Tinterval *i);
130 
141 double IntervalCenter(Tinterval *i);
142 
160 double PointInInterval(double r,Tinterval *i);
161 
170 void SetLowerLimit(double c,Tinterval *i);
171 
184 void EnlargeInterval(double lo,double uo,Tinterval *i);
185 
194 void ExpandInterval(double v,Tinterval *i);
195 
204 void SetUpperLimit(double c,Tinterval *i);
205 
215 void UpdateLowerLimit(double c,Tinterval *i);
216 
226 void UpdateUpperLimit(double c,Tinterval *i);
227 
238 boolean IntervalInclusion(Tinterval *i1,Tinterval *i2);
239 
250 boolean Intersect(Tinterval *i1,Tinterval *i2);
251 
263 boolean Intersection(Tinterval *i1,Tinterval *i2,Tinterval *i_out);
264 
277 boolean Union(Tinterval *i1,Tinterval *i2,Tinterval *i_out);
278 
288 boolean EmptyInterval(Tinterval *i);
289 
299 void IntervalScale(Tinterval *i1,double e,Tinterval *i_out);
300 
310 void IntervalProduct(Tinterval *i1,Tinterval *i2,Tinterval *i_out);
311 
321 void IntervalAdd(Tinterval *i1,Tinterval *i2,Tinterval *i_out);
322 
332 void IntervalSubstract(Tinterval *i1,Tinterval *i2,Tinterval *i_out);
333 
343 void IntervalInvert(Tinterval *i,Tinterval *i_out);
344 
353 void IntervalExp(Tinterval *i,Tinterval *i_out);
354 
365 void IntervalPow(Tinterval *i,unsigned int p,Tinterval *i_out);
366 
379 boolean IntervalSqrt(Tinterval *i,Tinterval *i_out);
380 
391 void IntervalDivision(Tinterval *num,Tinterval *den,Tinterval *i_out);
392 
402 void IntervalOffset(Tinterval *i,double offset,Tinterval *i_out);
403 
412 void IntervalSine(Tinterval *i,Tinterval *i_out);
413 
422 void IntervalCosine(Tinterval *i,Tinterval *i_out);
423 
432 void IntervalTangent(Tinterval *i,Tinterval *i_out);
433 
444 
453 void IntervalSecant2(Tinterval *i,Tinterval *i_out);
454 
472 void IntervalAtan2(Tinterval *is,Tinterval *ic,Tinterval *i_out);
473 
486 void PrintSymbolInterval(FILE *f,Tinterval *i);
487 
496 void PrintInterval(FILE *f,Tinterval *i);
497 
505 void DeleteInterval(Tinterval *i);
506 
507 #endif
Definition of the boolean type.
void EnlargeInterval(double lo, double uo, Tinterval *i)
Symmetrically increases the size of an interval.
Definition: interval.c:206
boolean Intersection(Tinterval *i1, Tinterval *i2, Tinterval *i_out)
Computes the intersection of two intervals.
Definition: interval.c:285
boolean CmpIntervals(Tinterval *i1, Tinterval *i2)
Compares two intervals.
Definition: interval.c:70
boolean Intersect(Tinterval *i1, Tinterval *i2)
Checks is a two intervals intersect.
Definition: interval.c:272
double DistanceToInterval(double p, Tinterval *i)
Distance to an interval.
Definition: interval.c:112
void IntervalSecant2(Tinterval *i, Tinterval *i_out)
Interval squared secant.
Definition: interval.c:841
void SetUpperLimit(double c, Tinterval *i)
Sets a new upper limit.
Definition: interval.c:201
void IntervalAdd(Tinterval *i1, Tinterval *i2, Tinterval *i_out)
Addition of two intervals.
Definition: interval.c:418
void IntervalInvert(Tinterval *i, Tinterval *i_out)
Change of sign of a given interval.
Definition: interval.c:456
void IntervalExp(Tinterval *i, Tinterval *i_out)
Exponentional of an interval.
Definition: interval.c:470
void CopyInterval(Tinterval *i_dst, Tinterval *i_org)
Copy constructor.
Definition: interval.c:59
void ExpandInterval(double v, Tinterval *i)
Changes the interval limits to include a given point.
Definition: interval.c:236
boolean IntervalSqrt(Tinterval *i, Tinterval *i_out)
Interval square root.
Definition: interval.c:525
void UpdateLowerLimit(double c, Tinterval *i)
Updates the lower limit.
Definition: interval.c:247
double LowerLimit(Tinterval *i)
Gets the lower limit.
Definition: interval.c:79
void IntervalSubstract(Tinterval *i1, Tinterval *i2, Tinterval *i_out)
Substraction of two intervals.
Definition: interval.c:437
void IntervalAtan2(Tinterval *is, Tinterval *ic, Tinterval *i_out)
Interval atan2.
Definition: interval.c:952
void DeleteInterval(Tinterval *i)
Destructor.
Definition: interval.c:1016
double UpperLimit(Tinterval *i)
Gets the uppser limit.
Definition: interval.c:87
void IntervalDivision(Tinterval *num, Tinterval *den, Tinterval *i_out)
Interval division.
Definition: interval.c:551
boolean Union(Tinterval *i1, Tinterval *i2, Tinterval *i_out)
Computes the union of two intervals.
Definition: interval.c:297
void PrintInterval(FILE *f, Tinterval *i)
Prints an interval.
Definition: interval.c:1001
void IntervalSecant2Tangent(Tinterval *i, Tinterval *i_out)
Interval squared secant per tangent.
Definition: interval.c:851
void IntervalScale(Tinterval *i1, double e, Tinterval *i_out)
Scales an interval.
Definition: interval.c:355
double IntervalCenter(Tinterval *i)
Gets the interval center.
Definition: interval.c:129
void PrintSymbolInterval(FILE *f, Tinterval *i)
Prints an angular interval.
Definition: interval.c:986
boolean EmptyInterval(Tinterval *i)
Checks if a given interval is empty.
Definition: interval.c:335
double upper_limit
Definition: interval.h:36
boolean IsInside(double p, double tol, Tinterval *i)
Checks if a value is inside an interval.
Definition: interval.c:343
double lower_limit
Definition: interval.h:35
void IntervalProduct(Tinterval *i1, Tinterval *i2, Tinterval *i_out)
Product of two intervals.
Definition: interval.c:384
void IntervalPow(Tinterval *i, unsigned int p, Tinterval *i_out)
Power of a given interval by a integer power factor.
Definition: interval.c:489
void IntervalSine(Tinterval *i, Tinterval *i_out)
Interval sine.
Definition: interval.c:642
void NewInterval(double lower, double upper, Tinterval *i)
Constructor.
Definition: interval.c:47
void IntervalCosine(Tinterval *i, Tinterval *i_out)
Interval cosine.
Definition: interval.c:697
double PointInInterval(double r, Tinterval *i)
Gets a point inside the interval.
Definition: interval.c:164
Defines a interval.
Definition: interval.h:33
void UpdateUpperLimit(double c, Tinterval *i)
Updates the upper limit.
Definition: interval.c:253
double IntervalSize(Tinterval *i)
Gets the uppser limit.
Definition: interval.c:96
void IntervalTangent(Tinterval *i, Tinterval *i_out)
Interval tangent.
Definition: interval.c:749
boolean IntervalInclusion(Tinterval *i1, Tinterval *i2)
Checks is a given interval is fully included into another interval.
Definition: interval.c:262
void SetLowerLimit(double c, Tinterval *i)
Sets a new lower limit.
Definition: interval.c:196
void IntervalOffset(Tinterval *i, double offset, Tinterval *i_out)
Interval offset.
Definition: interval.c:622