# 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");