36 real,
intent(in):: vs(:)
39 real,
intent(in):: xs(:)
42 real,
intent(in):: xt(:)
49 integer is, it, ns, nt
54 ns =
assert_eq(
size(vs),
size(xs) - 1,
"regr11_step_av ns")
57 call assert(xs(1) < xs(2),
"regr11_step_av xs bad order")
58 call assert(xt(1) < xt(2),
"regr11_step_av xt bad order")
60 call assert(xs(1) <= xt(1) .and. xt(nt + 1) <= xs(ns + 1), &
61 "regr11_step_av extrapolation")
70 do while (xs(is + 1) < xt(it + 1))
72 vt(it) = vt(it) + (xs(is + 1) - left_edge) * vs(is)
77 vt(it) = (vt(it) + (xt(it + 1) - left_edge) * vs(is)) &
78 / (xt(it + 1) - xt(it))
79 if (xs(is + 1) == xt(it + 1)) is = is + 1
95 real,
intent(in):: vs(:, :)
98 real,
intent(in):: xs(:)
101 real,
intent(in):: xt(:)
104 real vt(size(xt) - 1, size(vs, 2))
108 integer is, it, ns, nt
113 ns =
assert_eq(
size(vs, 1),
size(xs) - 1,
"regr12_step_av ns")
117 call assert(xs(1) < xs(2),
"regr12_step_av xs bad order")
118 call assert(xt(1) < xt(2),
"regr12_step_av xt bad order")
120 call assert(xs(1) <= xt(1) .and. xt(nt + 1) <= xs(ns + 1), &
121 "regr12_step_av extrapolation")
130 do while (xs(is + 1) < xt(it + 1))
132 vt(it, :) = vt(it, :) + (xs(is + 1) - left_edge) * vs(is, :)
137 vt(it, :) = (vt(it, :) + (xt(it + 1) - left_edge) * vs(is, :)) &
138 / (xt(it + 1) - xt(it))
139 if (xs(is + 1) == xt(it + 1)) is = is + 1
155 real,
intent(in):: vs(:, :, :)
158 real,
intent(in):: xs(:)
161 real,
intent(in):: xt(:)
164 real vt(size(xt) - 1, size(vs, 2), size(vs, 3))
169 integer is, it, ns, nt
174 ns =
assert_eq(
size(vs, 1),
size(xs) - 1,
"regr13_step_av ns")
178 call assert(xs(1) < xs(2),
"regr13_step_av xs bad order")
179 call assert(xt(1) < xt(2),
"regr13_step_av xt bad order")
181 call assert(xs(1) <= xt(1) .and. xt(nt + 1) <= xs(ns + 1), &
182 "regr13_step_av extrapolation")
191 do while (xs(is + 1) < xt(it + 1))
193 vt(it, :, :) = vt(it, :, :) + (xs(is + 1) - left_edge) * vs(is, :, :)
198 vt(it, :, :) = (vt(it, :, :) &
199 + (xt(it + 1) - left_edge) * vs(is, :, :)) / (xt(it + 1) - xt(it))
200 if (xs(is + 1) == xt(it + 1)) is = is + 1
216 real,
intent(in):: vs(:, :, :, :)
219 real,
intent(in):: xs(:)
222 real,
intent(in):: xt(:)
225 real vt(size(xt) - 1, size(vs, 2), size(vs, 3), size(vs, 4))
230 integer is, it, ns, nt
235 ns =
assert_eq(
size(vs, 1),
size(xs) - 1,
"regr14_step_av ns")
239 call assert(xs(1) < xs(2),
"regr14_step_av xs bad order")
240 call assert(xt(1) < xt(2),
"regr14_step_av xt bad order")
242 call assert(xs(1) <= xt(1) .and. xt(nt + 1) <= xs(ns + 1), &
243 "regr14_step_av extrapolation")
252 do while (xs(is + 1) < xt(it + 1))
254 vt(it, :, :, :) = vt(it, :, :, :) + (xs(is + 1) - left_edge) &
260 vt(it, :, :, :) = (vt(it, :, :, :) + (xt(it + 1) - left_edge) &
261 * vs(is, :, :, :)) / (xt(it + 1) - xt(it))
262 if (xs(is + 1) == xt(it + 1)) is = is + 1
pure integer function locate(xx, x)
real function, dimension(size(xt)-1) regr11_step_av(vs, xs, xt)
real function, dimension(size(xt)-1, size(vs, 2), size(vs, 3)) regr13_step_av(vs, xs, xt)
real function, dimension(size(xt)-1, size(vs, 2)) regr12_step_av(vs, xs, xt)
real function, dimension(size(xt)-1, size(vs, 2), size(vs, 3), size(vs, 4)) regr14_step_av(vs, xs, xt)