0
|
1 |
#======================================================================
|
|
2 |
# . / S V B K S B . P L
|
|
3 |
# doc: Sat Jul 31 22:47:03 1999
|
|
4 |
# dlm: Sat Jul 31 23:06:40 1999
|
|
5 |
# (c) 1999 A.M. Thurnherr
|
|
6 |
# uE-Info: 30 32 NIL 0 0 72 2 2 4 ofnI
|
|
7 |
#======================================================================
|
|
8 |
|
|
9 |
# SVBKSB routine from Numerical Recipes adapted to ANTS
|
|
10 |
|
|
11 |
# HISTORY:
|
|
12 |
# Jul 31, 1999: - manually converted from c-source
|
|
13 |
|
|
14 |
# Notes:
|
|
15 |
# - everything passed as refs
|
|
16 |
|
|
17 |
require "$ANTS/nrutil.pl";
|
|
18 |
|
|
19 |
sub svbksb($$$$$)
|
|
20 |
{
|
|
21 |
my($uR,$wR,$vR,$bR,$xR) = @_;
|
|
22 |
my($jj,$j,$i); # int
|
|
23 |
my($s); # float
|
|
24 |
my(@tmp); # float[]
|
|
25 |
|
|
26 |
&vector(\@tmp,1,$#{$wR});
|
|
27 |
for ($j=1; $j<=$#{$wR}; $j++) {
|
|
28 |
$s = 0;
|
|
29 |
if ($wR->[$j]) {
|
|
30 |
for ($i=1; $i<=$#{$uR}; $i++) {
|
|
31 |
$s += $uR->[$i][$j] * $bR->[$i];
|
|
32 |
}
|
|
33 |
$s /= $wR->[$j];
|
|
34 |
}
|
|
35 |
$tmp[$j]=$s;
|
|
36 |
}
|
|
37 |
for ($j=1; $j<=$#{$wR}; $j++) {
|
|
38 |
$s = 0;
|
|
39 |
for ($jj=1; $jj<=$#{$wR}; $jj++) {
|
|
40 |
$s += $vR->[$j][$jj] * tmp[$jj];
|
|
41 |
}
|
|
42 |
$x->[$j] = $s;
|
|
43 |
}
|
|
44 |
}
|
|
45 |
|
|
46 |
|