/* * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab * Copyright (C) 2006-2008 - INRIA - Bruno JOFRET * * This file must be used under the terms of the CeCILL. * This source file is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt * */ #include "variance.h" #include "assert.h" static int test(void){ double matrice[20]={1,5,9,4,8,2,6,1,5,9,3,7,2,6,1,4,8,3,7,2}; double out, *outColumns, *outRows; double out2, *outColumns2, *outRows2; double result= 7.5026315789473692063893; double resultColumns[5]= {1.6666666666666667406815 ,1.6666666666666667406815 ,12.916666666666666074548 ,1.6666666666666667406815 ,16.666666666666667850905}; double resultRows[4]={10.300000000000000710543 , 10.300000000000000710543 , 6.7000000000000001776357 , 6.7000000000000001776357}; int i; double mtovar[70]={0.2113248654641211032867,0.7560438541695475578308,0.0002211346291005611420, 0.3303270917385816574097,0.6653811042197048664093,0.6283917883411049842835, 0.8497452358715236186981, 0.6857310198247432708740,0.8782164813019335269928,0.0683740368112921714783, 0.5608486062847077846527,0.6623569373041391372681,0.7263506767340004444122, 0.1985143842175602912903, 0.5442573162727057933807,0.2320747897028923034668,0.2312237196601927280426, 0.2164632631465792655945,0.8833887814544141292572,0.6525134947150945663452, 0.3076090742833912372589, 0.9329616213217377662659,0.2146007861010730266571,0.3126419968903064727783, 0.3616361008025705814362,0.2922266637906432151794,0.5664248815737664699554, 0.4826471973210573196411, 0.3321718913502991199493,0.5935094701126217842102,0.5015341597609221935272, 0.4368587583303451538086,0.2693124809302389621735,0.6325744865462183952332, 0.4051954015158116817474, 0.9184707831591367721558,0.0437334333546459674835,0.4818508932366967201233, 0.2639556000940501689911,0.4148103706538677215576,0.2806498021818697452545, 0.1280058464035391807556, 0.7783128595910966396332,0.2119030449539422988892,0.1121354666538536548615, 0.6856895955279469490051,0.1531216683797538280487,0.6970850601792335510254, 0.8415518426336348056793, 0.4062024755403399467468,0.4094825475476682186127,0.8784125801175832748413, 0.1138359685428440570831,0.1998337740078568458557,0.5618660743348300457001, 0.5896177329123020172119, 0.6853979662992060184479,0.8906224733218550682068,0.5042212805710732936859, 0.3493615407496690750122,0.3873778772540390491486,0.9222898678854107856751, 0.9488184261135756969452, 0.3435337245464324951172,0.3760118731297552585602,0.7340940563008189201355, 0.2615761472843587398529,0.4993493836373090744019,0.2638578419573605060577, 0.5253563085570931434631}; double result2= 0.0651863337585355667736 ; double resultColumns2[7]= {0.0650391675869589902526 , 0.0913789208052724344356 , 0.0837863718398224738282 , 0.0281545517812518443501 , 0.0549594706400152802073 , 0.0389978730537587012228 , 0.0796657637071630925218 , }; double resultRows2[10]={0.0988544518240001696130 , 0.0874673050908554156058 , 0.0678199050579095519264, 0.0591380787668954188696 , 0.0175386373980947855855 ,0.0831815708684833926556 , 0.1035239817400336881370 , 0.0657802543744439444096 , 0.0667446022405332184402 , 0.0287884625084994134891}; outColumns= malloc((uint)5*sizeof(double)); outRows= malloc((uint)4*sizeof(double)); outColumns2= malloc((uint)7*sizeof(double)); outRows2= malloc((uint)10*sizeof(double)); out = dvariancea(matrice,20); drowvariancea(matrice,5,4,outRows); dcolumnvariancea(matrice,5,4,outColumns); printf("Variance \n"); printf("%f\n",out); printf("Row Variance \n"); for (i=0;i<4;i++) printf("%f\n",outRows[i]); printf("Column Variance \n"); for (i=0;i<5;i++) printf("%f\n",outColumns[i]); assert(fabs(out-result)/fabs(out) <1e-16); for (i=0;i<4;i++)assert(fabs(outRows[i]-resultRows[i])/fabs(outRows[i]) <1e-16); for (i=0;i<5;i++)assert(fabs(outColumns[i]-resultColumns[i])/fabs(outColumns[i]) <1e-16); out2 = dvariancea(mtovar,70); drowvariancea(mtovar,7,10,outRows2); dcolumnvariancea(mtovar,7,10,outColumns2); printf("Variance 2 \n"); printf("%f\n",out2); printf("Row Variance 2 \n"); for (i=0;i<10;i++) printf("%f\n",outRows2[i]); printf("Column Variance 2 \n"); for (i=0;i<7;i++) printf("%f\n",outColumns2[i]); assert(fabs(out2-result2)/fabs(out2) <1e-16); for (i=0;i<10;i++)assert(fabs(outRows2[i]-resultRows2[i])/fabs(outRows2[i]) <1e-16); for (i=0;i<7;i++)assert(fabs(outColumns2[i]-resultColumns2[i])/fabs(outColumns2[i]) <1e-16); return 0; } static int testDoubleVariance (void) { printf("\n\n\n\n*********************\n"); printf("***** Double Tests Nono****\n"); printf("*********************\n"); assert(test()==0); return 0; } int main(void) { assert(testDoubleVariance () == 0); return 0; }