# 2.1.17.6.1 ocmath_ex_svbksb

## Description

Solves linear system using singular value backsubstitution.

## Syntax

int ocmath_ex_svbksb( double ** ppu, double * pw, double ** ppv, int m, int n, double * pb, double * px )

## Parameters

ppu
[input]the pointer to the m by n matrix U in the standard "pointer-to-rows" form,
obtained by singular value decomposition from the LHS of a linear system.
pw
[input]the pointer to the vector W of size n,
obtained by singular value decomposition from the LHS of a linear system.
ppv
[input]the pointer to the n by n matrix V in the standard "pointer-to-rows" form,
obtained by singular value decomposition from the LHS of a linear system.
m
[input]number of rows in the original matrix
n
[input]number of columns in the original matrix.
pb
[input]pointer to a vector of size m holding the RHS of the linear system.
px
[output]pointer to a vector of size n which will on return receive the solution.

## Return

Returns 0 if OK, 1 if any error, for example, the values of the vector W

are so small (by absolute value) that they cannot be divided with.

## Examples

EX1

void ocmath_ex_svbksb_ex1()
{
double dArray1[4]={2,3,5,7};
double dArray2[4]={11,13,17,19};
double dArray3[4]={23,29,31,37};
double *dArrayTest1[3];
int m = 3;
int n = 4;
dArrayTest1[0]= dArray1;
dArrayTest1[1]= dArray2;
dArrayTest1[2]= dArray3;
double dArray4[4]={2,3,5,7};
double dArray5[4]={11,13,17,19};
double dArray6[4]={23,29,31,37};
double dArray7[4]={41,43,47,49};
double *dArrayTest2[4];
dArrayTest2[0]=dArray4;
dArrayTest2[1]=dArray5;
dArrayTest2[2]=dArray6;
dArrayTest2[3]=dArray7;
vector vW={1,2,3,4};
vector vb={1,2,3};
vector vx;
vx.SetSize(n);
int iRet = ocmath_ex_svbksb(dArrayTest1,vW,dArrayTest2,m,n,vb,vx);
}