svbksb.pl
author Andreas Thurnherr <ant@ldeo.columbia.edu>
Mon, 13 Apr 2020 11:06:22 -0400
changeset 40 c1803ae2540f
parent 17 4b7486d77b39
permissions -rw-r--r--
.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     1
#======================================================================
17
4b7486d77b39 V6.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
     2
#                    S V B K S B . P L 
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     3
#                    doc: Sat Jul 31 22:47:03 1999
17
4b7486d77b39 V6.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
     4
#                    dlm: Wed Mar 11 19:29:39 2015
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     5
#                    (c) 1999 A.M. Thurnherr
17
4b7486d77b39 V6.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
     6
#                    uE-Info: 20 0 NIL 0 0 72 2 2 4 NIL ofnI
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     7
#======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     8
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     9
# SVBKSB routine from Numerical Recipes adapted to ANTS
17
4b7486d77b39 V6.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    10
#
4b7486d77b39 V6.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    11
#	solves Ax = b for x, given b
4b7486d77b39 V6.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    12
#
4b7486d77b39 V6.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    13
#	Notes:
4b7486d77b39 V6.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    14
#		- A = U W V' as done in [svdcmp.pl]
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    15
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    16
# HISTORY:
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    17
#	Jul 31, 1999: - manually converted from c-source
17
4b7486d77b39 V6.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    18
#	Mar 11, 2015: - fixed syntax errors (code had never been used before)
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    19
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    20
require "$ANTS/nrutil.pl";
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    21
17
4b7486d77b39 V6.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    22
use strict;
4b7486d77b39 V6.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    23
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    24
sub svbksb($$$$$)
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    25
{
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    26
	my($uR,$wR,$vR,$bR,$xR) = @_;
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    27
	my($jj,$j,$i);									# int
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    28
	my($s);										# float
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    29
	my(@tmp);									# float[]
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    30
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    31
	&vector(\@tmp,1,$#{$wR});
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    32
	for ($j=1; $j<=$#{$wR}; $j++) {
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    33
		$s = 0;
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    34
		if ($wR->[$j]) {
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    35
			for ($i=1; $i<=$#{$uR}; $i++) {
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    36
				$s += $uR->[$i][$j] * $bR->[$i];
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    37
			}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    38
			$s /= $wR->[$j];
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    39
		}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    40
		$tmp[$j]=$s;
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    41
	}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    42
	for ($j=1; $j<=$#{$wR}; $j++) {
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    43
		$s = 0;
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    44
		for ($jj=1; $jj<=$#{$wR}; $jj++) {
17
4b7486d77b39 V6.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    45
			$s += $vR->[$j][$jj] * $tmp[$jj];
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    46
		}
17
4b7486d77b39 V6.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    47
		$xR->[$j] = $s;
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    48
	}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    49
}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    50
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    51