Annotation of OpenXM_contrib/PHC/Ada/Continuation/vlprs_tables.ads, Revision 1.1
1.1 ! maekawa 1: with Standard_Floating_Numbers; use Standard_Floating_Numbers;
! 2: with Standard_Floating_Vectors; use Standard_Floating_Vectors;
! 3: with Standard_Floating_Matrices; use Standard_Floating_Matrices;
! 4:
! 5: package vLpRs_Tables is
! 6:
! 7: -- DESCRIPTION :
! 8: -- This package implements the tables for an r-order extrapolation method.
! 9: -- For all tables, there is a full and a pipe-lining version.
! 10: -- For efficiency reasons the full v- and L-table are combined.
! 11:
! 12: -- I. The v-table : extrapolated values of log(|x_i(s_k)|).
! 13:
! 14: procedure v_pipe ( v : in out Vector; p : in Vector; vr : in double_float );
! 15: procedure v_pipe ( v,p : in Vector; vr : in double_float;
! 16: vrp : in out Vector );
! 17:
! 18: -- DESCRIPTION : computes one additional row of the v-table.
! 19:
! 20: -- REQUIRED : v'range = vrp'range = 0..r, p'range = 0..r-1.
! 21:
! 22: -- ON ENTRY :
! 23: -- v previous row of the v-table;
! 24: -- p current vector of p-factors;
! 25: -- vr equals log(|x_i(s_r)|).
! 26:
! 27: -- ON RETURN :
! 28: -- v or vrp last row in the v-table: vrp(r) should have error O(s^r).
! 29:
! 30: -- II. The L-table : linear combinations of the logarithms log(s_k).
! 31:
! 32: procedure L_pipe ( l : in out Vector; p : in Vector; lr : in double_float );
! 33: procedure L_pipe ( l,p : in Vector; lr : in double_float;
! 34: lrp : in out Vector );
! 35:
! 36: -- DESCRIPTION : computes one additional row of the L-table.
! 37:
! 38: -- REQUIRED : l'range = lrp'range = 0..r, p'range = 0..r-1.
! 39:
! 40: -- ON ENTRY :
! 41: -- l previous row of the v-table;
! 42: -- p current vector of p'factors;
! 43: -- lr equals log(s_r).
! 44:
! 45: -- ON RETURN :
! 46: -- l or lrp last row in the L-table, vrp(r)/lpr(r) = w_i + O(s^r).
! 47:
! 48: -- The full computation of both v- and L-table :
! 49:
! 50: procedure vL_full ( s,l,v : in Vector; srp,dsp,p,lrp,vrp : out Vector;
! 51: rt1,rt2 : in out Matrix );
! 52:
! 53: -- DESCRIPTION : computes the last row of v- and L-table from s-values.
! 54:
! 55: -- REQUIRED :
! 56: -- s'range = l'range = v'range = 0..r = lrp'range = vrp'range,
! 57: -- srp'range = dsp'range = 1..r-1, p'range = 0..r-1,
! 58: -- rt1'range(*) = 1..r-1 = rt2'range(*).
! 59:
! 60: -- ON ENTRY :
! 61: -- s consecutive s-values: s(0) > s(1) > .. > s(r) > 0;
! 62: -- l logs of the s-values: l(k) = log(s(k));
! 63: -- v points at the s-values: v(k) = log(|x_i(s(k))|).
! 64:
! 65: -- ON RETURN :
! 66: -- srp consecutive powers of s(r): srp(l) = s(r)**l;
! 67: -- dsp differences of powers: dsp(l) = srp(l) - s(r-1)**l.
! 68: -- p last row used in the p-table;
! 69: -- vrp last row in the v-table;
! 70: -- lrp last row in the L-table, vrp(r)/lpr(r) = w_i + O(s^r);
! 71: -- rt1 previous instance of the r-table;
! 72: -- rt2 last instance of the r-table.
! 73:
! 74: -- III. The p-table : extrapolation factors needed for v-table and L-table.
! 75:
! 76: procedure p_full ( s : in Vector; srp,dsp,p : out Vector;
! 77: rt1,rt2 : in out Matrix );
! 78:
! 79: -- DESCRIPTION : computes the last row of p-table from s-values.
! 80:
! 81: -- REQUIRED :
! 82: -- s'range = 0..r, srp'range = dsp'range = 1..r-1, p'range = 0..r-1,
! 83: -- rt1'range(*) = 1..r-1 = rt2'range(*).
! 84:
! 85: -- NOTE : p_full = R_full followed by p_pipe.
! 86:
! 87: procedure p_pipe ( rt1,rt2 : in Matrix; p : out Vector );
! 88:
! 89: -- DESCRIPTION : update of one row of the p-table.
! 90:
! 91: -- REQUIRED : rt1'range(*) = rt2'range(*) = 1..r-1, p'range = 0..r-1.
! 92:
! 93: -- ON ENTRY :
! 94: -- rt1 previous instance of the R-table;
! 95: -- rt2 last instance of the R-table.
! 96:
! 97: -- ON RETURN :
! 98: -- p p-factors, with p(0) = 1, p(i) = rt1(i,i)/rt2(i,i).
! 99:
! 100: -- IV. The R-table : propagated error factors.
! 101:
! 102: procedure R_full ( s : in Vector; srp,dsp,p : out Vector;
! 103: rt1,rt2 : in out Matrix );
! 104:
! 105: procedure RR_full ( s : in Vector; srp,dsp,p : out Vector;
! 106: rt1,rt2 : in out Matrix );
! 107:
! 108: -- DESCRIPTION : computation of the r-table from a sequence of s-values.
! 109: -- The RR_full computes the subdiagonal as well.
! 110:
! 111: -- REQUIRED :
! 112: -- s'range = 0..r, srp'range = dsp'range = 1..r-1, p'range = 0..r-1,
! 113: -- rt1'range(*) = 1..r-1 = rt2'range(*).
! 114:
! 115: -- ON ENTRY :
! 116: -- s sequence of consecutive s-values.
! 117:
! 118: -- ON RETURN :
! 119: -- srp,dsp see the output of s_full;
! 120: -- p last row used in the p-table;
! 121: -- rt1 previous instance of the r-table;
! 122: -- rt2 last instance of the r-table.
! 123:
! 124: procedure R_pipe ( rt1 : in Matrix; s,p : in Vector; rt2 : in out Matrix );
! 125: procedure RR_pipe ( rt1 : in Matrix; s,p : in Vector; rt2 : in out Matrix );
! 126:
! 127: -- DESCRIPTION : update of the r-table. RR_pipe updates also subdiagonal.
! 128:
! 129: -- REQUIRED :
! 130: -- rt1'range(*) = rt2'range(*) = s'range = 1..r-1, p'range = 0..r-1.
! 131:
! 132: -- ON ENTRY :
! 133: -- rt1 last instance of the R-table;
! 134: -- s current row of differences of powers of s-values;
! 135: -- p last row of the current p-table.
! 136:
! 137: -- ON RETURN :
! 138: -- rt2 new instance of the R-table.
! 139:
! 140: -- V. The s-table : consecutive s-values with differences of their powers.
! 141:
! 142: procedure s_full ( s : in Vector; srp,dsp : out Vector );
! 143:
! 144: -- DESCRIPTION : computes the s-table in full.
! 145:
! 146: -- REQUIRED : s'range = 0..r, srp'range = dsp'range = 1..r-1.
! 147:
! 148: -- ON ENTRY :
! 149: -- s the s-values, with s(0) > s(1) > .. > s(r) > 0.
! 150:
! 151: -- ON RETURN :
! 152: -- srp consecutive powers of s(r): srp(l) = s(r)**l;
! 153: -- dsp differences of powers: dsp(l) = srp(l) - s(r-1)**l.
! 154:
! 155: procedure s_pipe ( srp : in out Vector; sr : in double_float;
! 156: dsp : out Vector );
! 157: procedure s_pipe ( sr1 : in Vector; sr : in double_float;
! 158: srp,dsp : out Vector );
! 159:
! 160: -- DESCRIPTION : computes an additional row of the s-table.
! 161:
! 162: -- REQUIRED : sr1'range = srp'range = dsp'range = 1..r-1.
! 163:
! 164: -- ON ENTRY :
! 165: -- sr1 or srp consecutive powers of s(r-1): srp(l) = s(r-1)**l.
! 166: -- sr new last value for s(r).
! 167:
! 168: -- ON RETURN : same as s_full.
! 169:
! 170: end vLpRs_Tables;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>