Added some more useful stuff
This commit is contained in:
parent
75ee16b6a0
commit
c607424231
|
@ -31,6 +31,14 @@
|
||||||
* Programm erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>.
|
* Programm erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* General Information:
|
||||||
|
*
|
||||||
|
* - Matrices are represented using line vectors. This is
|
||||||
|
* convenient for accessing elements.
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
@ -262,6 +270,31 @@ int main(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
status = solve_QR(A_2, alpha_2, m, b);
|
status = solve_QR(A_2, alpha_2, m, b);
|
||||||
|
double ** R_2;
|
||||||
|
|
||||||
|
status = unwind_R(A_2, alpha_2, m, n, &R_2);
|
||||||
|
if(status)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "failed to unwind R\n");
|
||||||
|
free(alpha_2);
|
||||||
|
for(i = 0; i < m; i++)
|
||||||
|
{
|
||||||
|
free(A_2[i]);
|
||||||
|
}
|
||||||
|
free(A_2);
|
||||||
|
free(b);
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
printf("R:\n");
|
||||||
|
printm(R_2, m, n);
|
||||||
|
|
||||||
|
for(i = 0; i < m; i++)
|
||||||
|
{
|
||||||
|
free(R_2[i]);
|
||||||
|
}
|
||||||
|
free(R_2);
|
||||||
|
|
||||||
|
|
||||||
printf("Solution for the System:\n");
|
printf("Solution for the System:\n");
|
||||||
printv(b, m);
|
printv(b, m);
|
||||||
|
|
||||||
|
@ -358,6 +391,9 @@ int fprintm(FILE * stream, double ** matrix, int m, int n)
|
||||||
|
|
||||||
for(j = 0; j < n; j++)
|
for(j = 0; j < n; j++)
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf(stderr, "matrix[%d][%d] = %f\n", i, j, matrix[i][j]);
|
||||||
|
#endif
|
||||||
fprintf(stream, "%6.2f ", matrix[i][j]);
|
fprintf(stream, "%6.2f ", matrix[i][j]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -526,6 +562,9 @@ int unwind_R(double ** A, double * alpha, int m, int n, double *** R)
|
||||||
{
|
{
|
||||||
for(j = 0; j < n; j++)
|
for(j = 0; j < n; j++)
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf(stderr, "set result[%d][%d]\n", i, j);
|
||||||
|
#endif
|
||||||
if(i > j)
|
if(i > j)
|
||||||
{
|
{
|
||||||
result[i][j] = 0;
|
result[i][j] = 0;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user