summaryrefslogtreecommitdiff
path: root/src/signalProcessing/levin/testFloatLevin.c
diff options
context:
space:
mode:
authortorset2009-02-11 11:10:51 +0000
committertorset2009-02-11 11:10:51 +0000
commitbb1a8ae28e166d28b3bcfde59bd11a0bf71df26c (patch)
treee4ff3d0d8c20b901b051e11595926cc93a06b216 /src/signalProcessing/levin/testFloatLevin.c
parent8c23bcfa3632f1140d32fa86d9a950ffe8f9faeb (diff)
downloadscilab2c-bb1a8ae28e166d28b3bcfde59bd11a0bf71df26c.tar.gz
scilab2c-bb1a8ae28e166d28b3bcfde59bd11a0bf71df26c.tar.bz2
scilab2c-bb1a8ae28e166d28b3bcfde59bd11a0bf71df26c.zip
separate levinUtils from levin.h and modify functions(which wheren't good)
Diffstat (limited to 'src/signalProcessing/levin/testFloatLevin.c')
-rw-r--r--src/signalProcessing/levin/testFloatLevin.c152
1 files changed, 69 insertions, 83 deletions
diff --git a/src/signalProcessing/levin/testFloatLevin.c b/src/signalProcessing/levin/testFloatLevin.c
index 82c874fa..a7924cec 100644
--- a/src/signalProcessing/levin/testFloatLevin.c
+++ b/src/signalProcessing/levin/testFloatLevin.c
@@ -10,104 +10,90 @@
*
*/
-
+#include <math.h>
#include <stdio.h>
#include <assert.h>
#include "levin.h"
-static void slevinaTest(void) {
- int n=15;
-
-/* int i=0;
-*/
- float cov[128]={2.1632471f,0.6253206f,-0.2212568f,-0.6154865f,-0.2646837f,0.0144518f,-0.2511410f,-0.5401314f, \
--0.3017069f,0.6439519f,1.0938702f,0.5916342f,-0.2832519f,-0.5799388f,-0.2711958f,0.0740953f,\
--0.2646536f,-0.6427527f,-0.2888743f,0.5798061f,1.0301717f,0.5939465f,-0.1991420f,-0.6068337f,\
--0.2532973f,-0.0156329f,-0.2872505f,-0.5836588f,-0.2913317f,0.5783603f,1.0635956f,0.5822280f,\
--0.2711408f,-0.6209564f,-0.2485693f,-0.0334097f,-0.2733096f,-0.5363602f,-0.2689253f,0.5987651f,\
-1.0441869f,0.5835384f,-0.2934934f,-0.5838854f,-0.2848314f,-0.0111112f,-0.2838466f,-0.5757844f, \
--0.2925714f,0.5468999f,1.0859833f,0.6045700f,-0.2491218f,-0.6152090f,-0.2322848f,-0.0206893f, \
--0.3015463f,-0.5653637f,-0.2812883f,0.5947973f,1.0040374f,0.5830293f,-0.2684794f,-0.5986135f, \
--0.2673449f,-0.0504689f,-0.2989750f,-0.5510215f,-0.2771791f,0.5943756f,0.9436008f,0.5795994f, \
--0.2586094f,-0.5544826f,-0.2474743f,0.0262180f,-0.2474046f,-0.5373957f,-0.2932611f,0.5803651f,\
-0.9859401f,0.5729370f,-0.2169815f,-0.5399512f,-0.2332551f,-0.0151484f,-0.274592f,-0.5905861f, \
--0.2844705f,0.5987613f,0.9710525f,0.5330744f,-0.2443102f,-0.5858032f,-0.2166843f,-0.0028519f, \
--0.2613759f,-0.5451755f,-0.2489879f,0.4847080f,0.9502086f,0.5870537f,-0.2648506f,-0.5585377f, \
--0.2867994f,0.0067153f,-0.2101314f,-0.5189354f,-0.2473348f,0.5727840f,0.9393745f,0.5947526f, \
--0.2382349f,-0.5675628f,-0.2202667f,-0.0863862f,-0.2534431f,-0.5561705f,-0.2503315f,0.5649435f, \
-0.9288405f,0.5373113f,-0.2468931f,-0.5345938f,-0.2767231f,-0.0397433f,-0.2345866f,-0.4977333f};
-
-/* float cov2[256]={1.8542341f,0.2302480f,0.5424259f,0.2396233f,-0.2802882f,-0.1343754f,-0.4585444f,-0.0852306f,\
- -0.3683334f,0.0258069f,-0.0655487f,0.1546545f,-0.3655665f,-0.0310238f,-0.4565569f,0.0441730f,\
- -0.1386023f,-0.0434076f,0.5189599f,0.0357233f,1.0210283f,0.1781705f,0.5183526f,0.0801215f,\
- -0.1862581f,-0.1739927f,-0.4755297f,-0.1160617f,-0.2512805f,0.1471775f,-0.0995046f,0.1707012f,\
- -0.3269761f,-0.0112160f,-0.4411032f,-0.0872514f,-0.1757269f,-0.1472844f,0.5471859f,-0.0644483f,\
- 0.8977092f,0.2136813f,0.3942809f,-0.0382849f,-0.1260751f,-0.0965459f,-0.5126250f,-0.1452914f,\
- -0.3046589f,-0.0022501f,0.0350519f,0.2645226f,-0.2509645f,-0.0365893f,-0.5183898f,-0.0318046f,\
- -0.1743803f,-0.0873962f,0.5372009f,-0.1704277f,0.7164172f,0.1710189f,0.4685590f,-0.0759859f,\
- -0.1911539f,-0.0679539f,-0.4706253f,-0.0519689f,-0.2791620f,-0.0583353f,-0.0267250f,0.1014851f,\
- -0.1576785f,-0.1655821f,-0.3847449f,-0.0386553f,-0.1297910f,0.0083667f,0.4836641f,-0.0939749f,\
- 0.7437560f,0.2901242f,0.3853338f,0.0798201f,-0.1689064f,-0.1747635f,-0.5110532f,-0.1476417f,\
- -0.1808702f,0.0963522f,0.0174652f,0.2306552f,-0.2592396f,-0.1491170f,-0.3227275f,0.0629281f,\
- -0.1185767f,-0.0827683f,0.4598633f,0.0349602f,0.6505747f,0.3114497f,0.2631378f,-0.0103355f,\
- -0.3194549f,-0.2351815f,-0.4274886f,-0.1750659f,-0.0813017f,0.1245920f,-0.0664094f,0.1473835f,\
- -0.2078978f,-0.1688748f,-0.3425365f,0.1354790f,-0.1685176f,-0.1444135f,0.3966746f,-0.177444f,\
- 0.5809542f,0.2654948f,0.3486682f,0.0369250f,-0.1920808f,-0.1351589f,-0.4381282f,-0.1431602f,\
-0.2302480f,2.020749f,-0.1453147f,-0.4816412f,-0.1059289f,-0.3953205f,0.0167060f,0.5071499f,\
- -0.0438978f,-0.2461159f,0.1641866f,-0.0420505f,-0.0166320f,-0.1641097f,-0.2515164f,0.5068871f,\
- -0.2113012f,-0.3582454f,0.1358039f,-0.5180938f,0.3298329f,1.0316539f,-0.1190920f,-0.4336184f,\
- -0.0743425f,-0.1711531f,0.0595813f,0.5856594f,0.0258974f,-0.2492872f,0.1667785f,-0.1520977f,\
- -0.0087917f,-0.1656533f,0.0463118f,0.4459719f,-0.1475134f,-0.2804235f,-0.2214265f,-0.3674264f,\
- 0.2137918f,0.7380489f,0.0643087f,-0.4993311f,0.0903295f,-0.2392031f,-0.0495192f,0.4715900f,\
- 0.0560724f,-0.0850974f,0.1811686f,0.0572052f,-0.0733149f,-0.3059423f,-0.1168040f,0.4098819f,\
- -0.1070201f,-0.4125769f,-0.0502986f,-0.4541070f,0.1923829f,0.9167427f,-0.0450642f,-0.3861262f,\
- -0.0551742f,-0.2979827f,-0.0868854f,0.4011319f,0.1660530f,-0.1986059f,0.2734969f,-0.0263159f,\
- 0.0112668f,-0.0763537f,-0.1452256f,0.5250867f,-0.1852298f,-0.3335027f,-0.1114010f,-0.4129438f,\
- 0.1639697f,0.7177437f,-0.1688863f,-0.4391817f,-0.0468476f,-0.2069082f,-0.0635808f,0.4981539f,\
- -0.0965365f,-0.2057104f,0.2059908f,-0.2499686f,-0.0270036f,-0.0794378f,-0.0264147f,0.3461999f,\
- -0.0746288f,-0.3044705f,-0.1251745f,-0.2032644f,0.0744516f,0.7004425f,-0.1367678f,-0.5699592f,\
- -0.0909027f,-0.3123118f,0.0731459f,0.3900814f,-0.0056685f,-0.0145168f,0.1415849f,-0.0899785f,\
- -0.0770252f,-0.1568634f,0.0146449f,0.2642178f,-0.0843896f,-0.2369412f,0.0091955f,-0.2899846f,\
- 0.0811130f,0.6213581f,-0.2800630f,-0.3767941f,-0.0630885f,-0.155981f,0.0395355f,0.3978243f};*/
-
- float la[15*16*1*1],lb[15*16*1*1],sig[15*1*1];
-
- slevina(n,cov,128,1,la,sig,lb);
-
-
-/* for (i=0;i<15*16*2*2;i++){
- printf("indice : %d valeur : %f - ",i,la[i]);
- printf("\n");
- if((i+1)%64==0)printf("------------------------------------\n");
- if((i+1)%16==0)printf("###############\n");
+static void dlevinaTest(void) {
+
+ int i=0;
+
+ float in[20]={0.9932627780362963676453f,0.8074779896996915340424f,0.8554796632379293441773f,
+ 0.5031460602767765522003f,0.0963323051109910011292f,0.7058098311536014080048f,0.8630577065050601959229f,
+ 0.0076185003854334354401f,0.8048951094970107078552f,0.5963762304745614528656f,0.1176836211234331130981f,
+ 0.8010095250792801380158f,0.5132340090349316596985f,0.2010910022072494029999f,0.7860820889472961425781f,
+ 0.7865035482682287693024f,0.6951530007645487785339f,0.4248132123611867427826f,0.3446625452488660812378f,
+ 0.6497785751707851886749f};
+
+ float result_la[48]={1.0f,-0.3865652298877474413175f,0.0f,0.0f,
+ 0.0f,- 0.3434956227371184778185f,0.0f,0.0f,
+ 0.0f,- 0.5839401384584462784133f,0.0f,0.0f,
+ 1.0f, - 0.2005808775714553182645f,0.0f,0.0f,
+ 1.0f, - 0.9800896173744618744550f, 1.690821697485581420750f,0.0f,
+ 0.0f,- 0.0829753946826485844213f, 0.1706850739778944525682f,0.0f,
+ 0.0f,- 1.5024216979529190219012f, - 0.2246231721723708774086f,0.0f,
+ 1.0f, - 0.1137930279260921523354f, - 0.9252347371003220022345f,0.0f,
+ 1.0f, 0.9890664402902992202726f, 0.5787159455904740124055f,1.2930051366411721147642f,
+ 0.0f,- 0.8505434486601569643582f,0.6053315910573954239382f, - 0.5028225952598519565839f,
+ 0.0f,2.1236994816779066752588f, - 2.0487578989503822946006f, - 3.9701563399198689374714f,
+ 1.0f, - 1.4716550983021570164766f, - 0.2144135496153387610008f, 1.4891952441184541644503f};
+
+ float result_sig[12]={0.9932627780362963676453f, 0.8074779896996915340424f,0.3628661470549920387008f,0.4106795421050958294629f,
+ - 0.6299693698364057237171f,- 0.0327761932052800242232f,0.1176836211234331130981f,0.8010095250792801380158f,
+ - 0.1942402590062223821654f, 0.5878460460823274891240f, 0.3391635613203383137204f,0.1291488276492920306282f};
+
+ float result_lb[48]={- 0.3981923483861428136876f,1.0f,0.0f,0.0f,
+ - 0.3550295998674473652024f,0.0f,0.0f,0.0f,
+ - 0.5696378489005990974903f,0.0f,0.0f,0.0f,
+ - 0.1988863157065166586968f,1.0f,0.0f,0.0f,
+ 1.62419596196504145702f, - 0.9819754657045941526050f,1.0f,0.0f,
+ 0.0329804805798983302623f, - 0.0396945499933941681192f,0.0f,0.0f,
+ - 0.1283118770193089619447f, - 1.492334154918740996010f,0.0f,0.0f,
+ - 0.9551334433810730883963f, - 0.0265634378315470209841f,1.0f,0.0f,
+ 1.1913835764722526810999f,0.0301096362936850159286f, 1.909619275538441574014f,1.0f,
+ 0.4767865147665533709365f ,- 0.2016469880890300325760f,0.2878592385656049135179f,0.0f,
+ 5.1391578635011887499218f, - 2.5030727471739586675881f, - 6.5148738878935787965929f,0.0f,
+ - 2.8040366068494293472213f ,- 1.3523880325486907771904f, 2.4607313355305917568217f,1.0f};
+
+ float la[48],lb[48],sig[12];
+
+ slevina(3,in,10,2,la,sig,lb);
+
+ /* FIXME : assert à 10^-5 */
+ /* FIXME : sig est rangé différemment qu'à l'habitude */
+
+ for (i=0;i<48;i++){
+ if (la[i]!=0)
+ assert( (fabs(la[i]-result_la[i]) / fabs(la[i]) ) <1e-5);
+ else
+ assert( fabs(la[i]-result_la[i]) == 0);
}
- printf("\n");
- printf("\n");
- printf("\n");
- for (i=0;i<15;i++){
- printf("i : %d - lb = ",i);
- for (j=0;j<15;j++) printf(" %f - ",lb[15*i+j]);
- printf("\n");
+
+ for (i=0;i<12;i++){
+ if (sig[i]!=0)
+ assert( (fabs(sig[i]-result_sig[i]) / fabs(sig[i]) ) <1e-5);
+ else
+ assert( fabs(sig[i]-result_sig[i]) == 0);
}
- printf("\n");
- printf("\n");
- printf("\n");
-
-
- for (i=0;i<15*1;i++){
- printf("indice : %d %f\n",i,sig[i]);
+
+
+ for (i=0;i<48;i++){
+ if (lb[i]!=0)
+ assert( (fabs(lb[i]-result_lb[i]) / fabs(lb[i]) ) <1e-5);
+ else
+ assert( fabs(lb[i]-result_lb[i]) == 0);
}
-*/
-
+
}
static int levinTest(void) {
printf("\n>>>> Levin Tests\n");
- slevinaTest();
+ dlevinaTest();
return 0;
}