Annotation of OpenXM_contrib/PHC/Ada/Continuation/vlprs_algorithm.ads, Revision 1.1.1.1
1.1 maekawa 1: with text_io; use text_io;
2: with Standard_Floating_Numbers; use Standard_Floating_Numbers;
3: with Standard_Floating_Vectors; use Standard_Floating_Vectors;
4: with Standard_Floating_Matrices; use Standard_Floating_Matrices;
5:
6: package vLpRs_Algorithm is
7:
8: -- DESCRIPTION :
9: -- This package provides several routines for an extrapolation method on
10: -- the power series x(s) = a s^w ( 1 + O(s) ).
11: -- Because the aim is to estimate the leading power w, the algorithm
12: -- takes the logs as input. So it considers the sequence
13: -- log(|x(s_k)|) = log(|a|) + w log(s_k) + log(1 + O(s_k)),
14: -- for a sequence s_0 > s_1 > .. > s_m > 0, with m >= the order r.
15:
16: -- USAGE :
17: -- The first two routines are interesting to fill up the pipe, until
18: -- sufficient data points are available to match the order.
19: -- From then on, the fully incremental version can be used.
20:
21: -- START UP FROM SCRATCH :
22:
23: procedure vLpRs_full
24: ( r : in natural; s,logs,logx : in Vector;
25: srp,dsp,p,l,v : in out Vector; rt1,rt2 : in out Matrix );
26:
27: -- DESCRIPTION :
28: -- Calls the full version of the vLpRs-Algorithm.
29:
30: -- REQUIRED :
31: -- s'range = logs'range = logx'range, s'last >= r,
32: -- srp'range = dsp'range = 1..r-1 = rt1'range(*) = rt2'range(*),
33: -- p'range = 0..r-1, l'range = v'range = 0..r.
34:
35: -- ON ENTRY :
36: -- r order of the extrapolation method;
37: -- s strictly decreasing sequence of positive numbers;
38: -- logs logarithms of the s-values;
39: -- logx logarithms of |x(s_k)|.
40:
41: -- ON RETURN :
42: -- srp last row of powers of consecutive s-values;
43: -- dsp last row of differences of consecutive s-powers;
44: -- p last row of p-factors;
45: -- l last row in the L-table, with error O(s^r).
46: -- v last row in the v-table, with error O(s^r).
47: -- rt1,rt2 last consecutive R-tables.
48:
49: procedure vLpRs_pipe
50: ( file : in file_type;
51: r : in natural; s,logs,logx : in Vector;
52: srp,dsp,p,l,v : in out Vector; rt1,rt2 : in out Matrix );
53:
54: -- DESCRIPTION :
55: -- Constructs the extrapolation table in an incremental way.
56:
57: -- REQUIRED :
58: -- s'range = logs'range = logx'range, s'last >= r,
59: -- srp'range = dsp'range = 1..r-1 = rt1'range(*) = rt2'range(*),
60: -- p'range = 0..r-1, l'range = v'range = 0..r.
61:
62: -- ON ENTRY :
63: -- file to write error table on;
64: -- r order of the extrapolation method;
65: -- s strictly decreasing sequence of positive numbers;
66: -- logs logarithms of the s-values;
67: -- logx logarithms of |x(s_k)|.
68:
69: -- ON RETURN :
70: -- srp last row of powers of consecutive s-values;
71: -- dsp last row of differences of consecutive s-powers;
72: -- p last row of p-factors;
73: -- l last row in the L-table, with error O(s^r).
74: -- v last row in the v-table, with error O(s^r).
75: -- rt1,rt2 last consecutive R-tables.
76:
77: -- INCREMENTAL UPDATE :
78:
79: procedure vLpRs_pipe
80: ( s,logs,logx : in double_float;
81: srp,dsp,p,l,v : in out Vector; rt1,rt2 : in out Matrix );
82:
83: procedure vLpRs_pipe
84: ( file : in file_type; s,logs,logx : in double_float;
85: srp,dsp,p,l,v : in out Vector; rt1,rt2 : in out Matrix );
86:
87: -- DESCRIPTION :
88: -- One additional row of every table is computed.
89:
90: -- REQUIRED :
91: -- srp'range = dsp'range = 1..r-1 = rt1'range(*) = rt2'range(*),
92: -- p'range = 0..r-1, l'range = v'range = 0..r.
93:
94: -- ON ENTRY :
95: -- file to write table with errors on;
96: -- s new s-value, must be smaller than latest one and nonzero;
97: -- logs logarithm of s;
98: -- logx logarithm of the absolute value of |x(s)|;
99: -- srp last row of powers of consecutive s-values;
100: -- dsp last row of differences of consecutive s-powers;
101: -- p last row of p-factors;
102: -- l last row of extrapolated logarithms of s-values;
103: -- v last row of extrapolated logarithms of data points;
104: -- rt1,rt2 last consecutive R-tables.
105:
106: -- ON RETURN :
107: -- srp updated row of powers of consecutive s-values;
108: -- dsp updated row of differences of consecutive s-powers;
109: -- p updated row of p-factors;
110: -- l updated row of extrapolated logarithms of s-values;
111: -- v updated row of extrapolated logarithms of data points;
112: -- rt1,rt2 updated consecutive R-tables.
113:
114: end vLpRs_Algorithm;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>