# This file tests Algae's leastsq function.
printf ("Starting the leastsq test...\n");
assert = function (t)
{
if (!test (t))
{
printf ("...failed.\a\n");
exception ();
}
};
A = label ([1,1;2,1;3,1]; ; "a","b");
b = 2,2.3,2;
x = leastsq (A; b);
assert (abs(x["a"]) < 1e-8);
assert (abs(x["b"]-2.1) < 1e-8);
A = [0,0,1; 1,0,1; 0,1,1; 1,1,1; 0,0,1; 1,0,1; 0,1,1; 1,1,1];
b = 0, 1, 1, 2, 1, 2, 2, 3;
x = leastsq (A; b);
assert (norm (x-(1,1,.5)) < 1e-8);
A = fill (5,5; 1:25);
b = fill (5; 1);
x = leastsq (A; b);
assert (norm (A*x-b) < 1e-8);
A = fill (5,5; (1:25)^4);
b = fill (5;1);
x = leastsq (A; b);
assert (norm (A*x-b) < 1e-8);
assert (norm (x-solve(A;b)) < 1e-8);
A = [0,0,1; 1,1,1];
b = 0, 1;
x = leastsq (A; b);
assert (norm (A*x-b) < 1e-8);
assert (abs (norm (x) - 1/sqrt(2)) < 1e-8);
b = rand (100);
assert (abs (leastsq (fill (100,1; 1); b) - sum (b) / b.ne) < 1e-8);
printf ("...passed.\n");
syntax highlighted by Code2HTML, v. 0.9.1