├── codes └── autoplait │ ├── _out │ ├── dat_org │ │ ├── dat2 │ │ │ ├── input │ │ │ ├── segment.0 │ │ │ ├── segment.1 │ │ │ └── segment.labels │ │ ├── dat3 │ │ │ ├── input │ │ │ ├── segment.0 │ │ │ ├── segment.1 │ │ │ ├── segment.2 │ │ │ └── segment.labels │ │ └── dat1 │ │ │ ├── input │ │ │ ├── segment.3 │ │ │ ├── segment.0 │ │ │ ├── segment.1 │ │ │ ├── segment.2 │ │ │ └── segment.labels │ ├── dat_tmp │ │ ├── dat2 │ │ │ ├── input │ │ │ ├── segment.0 │ │ │ ├── segment.1 │ │ │ ├── segment.labels │ │ │ ├── model.0 │ │ │ └── model.1 │ │ ├── dat3 │ │ │ ├── input │ │ │ ├── segment.0 │ │ │ ├── segment.1 │ │ │ ├── segment.2 │ │ │ ├── segment.labels │ │ │ ├── model.0 │ │ │ ├── model.1 │ │ │ └── model.2 │ │ └── dat1 │ │ │ ├── input │ │ │ ├── segment.1 │ │ │ ├── segment.0 │ │ │ ├── segment.2 │ │ │ ├── segment.3 │ │ │ ├── segment.labels │ │ │ ├── model.0 │ │ │ ├── model.1 │ │ │ ├── model.2 │ │ │ └── model.3 │ └── output_example.txt │ ├── _dat │ ├── list │ ├── flus │ ├── games │ └── sweets │ ├── autoplait │ ├── _fig │ ├── google_game.png │ ├── gooogle_flu.png │ ├── mocap_14_14.png │ ├── mocap_86_01.png │ ├── mocap_86_02.png │ ├── mocap_86_03.png │ ├── mocap_86_07.png │ ├── mocap_86_11.png │ ├── google_sweets.png │ ├── mocap_chicken_dance_19_15.png │ └── mocap_chicken_dance_21_01.png │ ├── plots_all.m │ ├── demo.sh │ ├── tool.h │ ├── makefile │ ├── README.md │ ├── nrutil.h │ ├── autoplait.c │ ├── forbackward.c │ ├── autoplait.h │ ├── plots_results.m │ ├── hmm.h │ ├── nrutil.c │ ├── kmeans.c │ ├── segbox.c │ ├── viterbi.c │ ├── tool.c │ ├── cps.c │ ├── baum.c │ ├── hmmutils.c │ └── plait.c ├── translation ├── l.png ├── p.png ├── p1.png ├── r.png └── zh_cn.md ├── paper └── 14-sigmod-autoplait.pdf └── README.md /codes/autoplait/_out/dat_org/dat2/input: -------------------------------------------------------------------------------- 1 | ./_dat/flus 2 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_org/dat2/segment.0: -------------------------------------------------------------------------------- 1 | 276 309 2 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_org/dat3/input: -------------------------------------------------------------------------------- 1 | ./_dat/games 2 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_org/dat3/segment.0: -------------------------------------------------------------------------------- 1 | 313 471 2 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_org/dat3/segment.1: -------------------------------------------------------------------------------- 1 | 139 312 2 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_org/dat3/segment.2: -------------------------------------------------------------------------------- 1 | 0 138 2 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat2/input: -------------------------------------------------------------------------------- 1 | ./_dat/flus 2 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat2/segment.0: -------------------------------------------------------------------------------- 1 | 278 312 2 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat3/input: -------------------------------------------------------------------------------- 1 | ./_dat/games 2 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat3/segment.0: -------------------------------------------------------------------------------- 1 | 329 471 2 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat3/segment.1: -------------------------------------------------------------------------------- 1 | 140 328 2 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat3/segment.2: -------------------------------------------------------------------------------- 1 | 0 139 2 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_org/dat1/input: -------------------------------------------------------------------------------- 1 | ./_dat/21_01.amc.4d 2 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat1/input: -------------------------------------------------------------------------------- 1 | ./_dat/21_01.amc.4d 2 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_org/dat1/segment.3: -------------------------------------------------------------------------------- 1 | 0 189 2 | 708 836 3 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_org/dat2/segment.1: -------------------------------------------------------------------------------- 1 | 0 275 2 | 310 471 3 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat1/segment.1: -------------------------------------------------------------------------------- 1 | 0 190 2 | 702 831 3 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat2/segment.1: -------------------------------------------------------------------------------- 1 | 0 277 2 | 313 471 3 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_org/dat1/segment.0: -------------------------------------------------------------------------------- 1 | 333 492 2 | 976 1133 3 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_org/dat1/segment.1: -------------------------------------------------------------------------------- 1 | 493 707 2 | 1134 1284 3 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_org/dat1/segment.2: -------------------------------------------------------------------------------- 1 | 190 332 2 | 837 975 3 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat1/segment.0: -------------------------------------------------------------------------------- 1 | 333 492 2 | 977 1135 3 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat1/segment.2: -------------------------------------------------------------------------------- 1 | 493 701 2 | 1136 1284 3 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat1/segment.3: -------------------------------------------------------------------------------- 1 | 191 332 2 | 832 976 3 | -------------------------------------------------------------------------------- /codes/autoplait/_dat/list: -------------------------------------------------------------------------------- 1 | ./_dat/21_01.amc.4d 2 | ./_dat/flus 3 | ./_dat/games 4 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_org/dat2/segment.labels: -------------------------------------------------------------------------------- 1 | 0 1 713 1 2 | 1 0 2478 1 3 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat2/segment.labels: -------------------------------------------------------------------------------- 1 | 0 1 680 1 2 | 1 0 2561 1 3 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_org/dat3/segment.labels: -------------------------------------------------------------------------------- 1 | 0 1 1370 1 2 | 1 01 1415 1 3 | 2 00 926 1 4 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat3/segment.labels: -------------------------------------------------------------------------------- 1 | 0 1 1186 1 2 | 1 01 1428 1 3 | 2 00 923 1 4 | -------------------------------------------------------------------------------- /translation/l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbshr/implement-of-AutoPlait-algorithm/HEAD/translation/l.png -------------------------------------------------------------------------------- /translation/p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbshr/implement-of-AutoPlait-algorithm/HEAD/translation/p.png -------------------------------------------------------------------------------- /translation/p1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbshr/implement-of-AutoPlait-algorithm/HEAD/translation/p1.png -------------------------------------------------------------------------------- /translation/r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbshr/implement-of-AutoPlait-algorithm/HEAD/translation/r.png -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_org/dat1/segment.labels: -------------------------------------------------------------------------------- 1 | 0 1 2976 2 2 | 1 01 1099 1 3 | 2 001 946 1 4 | 3 000 1097 1 5 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat1/segment.labels: -------------------------------------------------------------------------------- 1 | 0 1 3044 1 2 | 1 011 1052 1 3 | 2 010 1044 1 4 | 3 00 972 1 5 | -------------------------------------------------------------------------------- /codes/autoplait/autoplait: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbshr/implement-of-AutoPlait-algorithm/HEAD/codes/autoplait/autoplait -------------------------------------------------------------------------------- /paper/14-sigmod-autoplait.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbshr/implement-of-AutoPlait-algorithm/HEAD/paper/14-sigmod-autoplait.pdf -------------------------------------------------------------------------------- /codes/autoplait/_fig/google_game.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbshr/implement-of-AutoPlait-algorithm/HEAD/codes/autoplait/_fig/google_game.png -------------------------------------------------------------------------------- /codes/autoplait/_fig/gooogle_flu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbshr/implement-of-AutoPlait-algorithm/HEAD/codes/autoplait/_fig/gooogle_flu.png -------------------------------------------------------------------------------- /codes/autoplait/_fig/mocap_14_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbshr/implement-of-AutoPlait-algorithm/HEAD/codes/autoplait/_fig/mocap_14_14.png -------------------------------------------------------------------------------- /codes/autoplait/_fig/mocap_86_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbshr/implement-of-AutoPlait-algorithm/HEAD/codes/autoplait/_fig/mocap_86_01.png -------------------------------------------------------------------------------- /codes/autoplait/_fig/mocap_86_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbshr/implement-of-AutoPlait-algorithm/HEAD/codes/autoplait/_fig/mocap_86_02.png -------------------------------------------------------------------------------- /codes/autoplait/_fig/mocap_86_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbshr/implement-of-AutoPlait-algorithm/HEAD/codes/autoplait/_fig/mocap_86_03.png -------------------------------------------------------------------------------- /codes/autoplait/_fig/mocap_86_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbshr/implement-of-AutoPlait-algorithm/HEAD/codes/autoplait/_fig/mocap_86_07.png -------------------------------------------------------------------------------- /codes/autoplait/_fig/mocap_86_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbshr/implement-of-AutoPlait-algorithm/HEAD/codes/autoplait/_fig/mocap_86_11.png -------------------------------------------------------------------------------- /codes/autoplait/_fig/google_sweets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbshr/implement-of-AutoPlait-algorithm/HEAD/codes/autoplait/_fig/google_sweets.png -------------------------------------------------------------------------------- /codes/autoplait/_fig/mocap_chicken_dance_19_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbshr/implement-of-AutoPlait-algorithm/HEAD/codes/autoplait/_fig/mocap_chicken_dance_19_15.png -------------------------------------------------------------------------------- /codes/autoplait/_fig/mocap_chicken_dance_21_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abbshr/implement-of-AutoPlait-algorithm/HEAD/codes/autoplait/_fig/mocap_chicken_dance_21_01.png -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat1/model.0: -------------------------------------------------------------------------------- 1 | k= 1 2 | d= 4 3 | pi: 4 | 1.000000 5 | A: 6 | 1.000000 7 | mean: 8 | 0.551502 0.676975 -1.539647 -1.547451 9 | var: 10 | 1.821627 1.336297 0.780678 0.741016 11 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat1/model.1: -------------------------------------------------------------------------------- 1 | k= 1 2 | d= 4 3 | pi: 4 | 1.000000 5 | A: 6 | 1.000000 7 | mean: 8 | 0.531214 0.700318 0.543358 0.530641 9 | var: 10 | 0.236929 0.236405 0.004059 0.009550 11 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat1/model.2: -------------------------------------------------------------------------------- 1 | k= 1 2 | d= 4 3 | pi: 4 | 1.000000 5 | A: 6 | 1.000000 7 | mean: 8 | -0.143675 -0.376260 0.614495 0.665140 9 | var: 10 | 0.111408 0.155688 0.029955 0.009104 11 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat1/model.3: -------------------------------------------------------------------------------- 1 | k= 1 2 | d= 4 3 | pi: 4 | 1.000000 5 | A: 6 | 1.000000 7 | mean: 8 | -1.027923 -1.066394 0.337072 0.296800 9 | var: 10 | 0.312585 0.161713 0.018052 0.015190 11 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat2/model.0: -------------------------------------------------------------------------------- 1 | k= 1 2 | d= 4 3 | pi: 4 | 1.000000 5 | A: 6 | 1.000000 7 | mean: 8 | 2.238042 2.543479 1.991770 1.461763 9 | var: 10 | 2.587028 1.291345 1.715372 2.329284 11 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat2/model.1: -------------------------------------------------------------------------------- 1 | k= 1 2 | d= 4 3 | pi: 4 | 1.000000 5 | A: 6 | 1.000000 7 | mean: 8 | -0.179249 -0.203712 -0.159523 -0.117076 9 | var: 10 | 0.439598 0.417030 0.599521 0.708693 11 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat3/model.0: -------------------------------------------------------------------------------- 1 | k= 1 2 | d= 4 3 | pi: 4 | 1.000000 5 | A: 6 | 1.000000 7 | mean: 8 | 0.005258 0.093210 0.025192 1.374223 9 | var: 10 | 0.711618 0.742559 0.237702 0.566063 11 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat3/model.1: -------------------------------------------------------------------------------- 1 | k= 1 2 | d= 4 3 | pi: 4 | 1.000000 5 | A: 6 | 1.000000 7 | mean: 8 | -0.085556 0.396097 0.801200 -0.555583 9 | var: 10 | 0.834183 1.071480 0.754365 0.015061 11 | -------------------------------------------------------------------------------- /codes/autoplait/_out/dat_tmp/dat3/model.2: -------------------------------------------------------------------------------- 1 | k= 1 2 | d= 4 3 | pi: 4 | 1.000000 5 | A: 6 | 1.000000 7 | mean: 8 | 0.110131 -0.629940 -1.107351 -0.653634 9 | var: 10 | 1.496374 0.548954 0.016770 0.000001 11 | -------------------------------------------------------------------------------- /codes/autoplait/plots_all.m: -------------------------------------------------------------------------------- 1 | % mocap (chicken dance) 2 | %plots_results('./_out/dat_org/dat1/'); 3 | plots_results('./_out/dat_tmp/dat1/'); 4 | % googleTrend (flu) 5 | %plots_results('./_out/dat_org/dat2/'); 6 | plots_results('./_out/dat_tmp/dat2/'); 7 | % googleTrend (game console) 8 | %plots_results('./_out/dat_org/dat3/'); 9 | plots_results('./_out/dat_tmp/dat3/'); 10 | -------------------------------------------------------------------------------- /codes/autoplait/demo.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | make cleanall 3 | make 4 | INPUTDIR="./_dat/" 5 | OUTDIR="./_out/" 6 | 7 | #----------------------# 8 | echo "----------------------" 9 | echo "mocap and googleTrend" 10 | echo "----------------------" 11 | outdir=$OUTDIR"dat_tmp" 12 | dblist=$INPUTDIR"list" 13 | n=3 # data size 14 | d=4 # dimension 15 | #----------------------# 16 | 17 | mkdir $outdir 18 | for (( i=1; i<=$n; i++ )) 19 | do 20 | output=$outdir"/dat"$i"/" 21 | mkdir $output 22 | input=$output"input" 23 | awk '{if(NR=='$i') print $0}' $dblist > $input 24 | ./autoplait $d $input $output 25 | done 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /codes/autoplait/tool.h: -------------------------------------------------------------------------------- 1 | #define YES 1 2 | #define NO 0 3 | 4 | #define FB 4*8 // float: 4*8; 5 | 6 | 7 | double log_2(int x); 8 | double log_s(int x); 9 | double costHMM(int k, int d); 10 | 11 | /// tool.c 12 | void setseed(void); 13 | double getrand(void); 14 | 15 | 16 | 17 | int dFindMin(int *idx, double *value, int len); 18 | int dFindMax(int *idx, double *value, int len); 19 | 20 | int count_lines(); 21 | double getrusage_sec(); 22 | void notfin(); 23 | void error(); 24 | void SaveModel(); 25 | 26 | void LoadDB(); 27 | void NormSequence(); 28 | void ZnormSequence(); 29 | 30 | void PrintInput(); 31 | void PrintIdx(); 32 | void PrintSequence(); 33 | -------------------------------------------------------------------------------- /codes/autoplait/makefile: -------------------------------------------------------------------------------- 1 | CFLAGS= -g 2 | INCS= 3 | CC=gcc 4 | CODES = autoplait 5 | all : $(CODES) 6 | #------------------------------------------------------# 7 | autoplait: autoplait.o plait.o cps.o tool.o nrutil.o hmm.h autoplait.h \ 8 | viterbi.o hmmutils.o \ 9 | baum.o forbackward.o kmeans.o segbox.o 10 | $(CC) -o autoplait \ 11 | autoplait.o plait.o cps.o tool.o nrutil.o \ 12 | viterbi.o hmmutils.o \ 13 | baum.o forbackward.o kmeans.o segbox.o \ 14 | -lm 15 | #------------------------------------------------------# 16 | 17 | #make plot: plots_all.m 18 | # matlab -r 'plots_all' 19 | #make demo: demo.sh 20 | # sh demo.sh 21 | 22 | cleanall: 23 | rm -rf core *.o *~ $(CODES) ./_out/dat_tmp/ 24 | clean : 25 | rm -f core *.o *~ 26 | 27 | -------------------------------------------------------------------------------- /codes/autoplait/README.md: -------------------------------------------------------------------------------- 1 | Version: June 18, 2014 2 | Author: Yasuko Matsubara (yasuko@cs.kumamoto-u.ac.jp) 3 | 4 | 5 | 1. Introduction 6 | 7 | This is a c-code of AutoPlait. 8 | 9 | 10 | 2. Quick demo (also please see "./_fig/") 11 | 12 | 13 | (a) autoplait using mocap & googleTrend data 14 | ```sh 15 | $ sh demo.sh 16 | ``` 17 | (b) visualization (matlab code) 18 | ```matlab 19 | $ matlab -r 'plots_all' 20 | ``` 21 | 22 | 3. Clean up all files 23 | ```sh 24 | $ make cleanall 25 | ``` 26 | 27 | 28 | References 29 | ----------- 30 | Yasuko Matsubara, Yasushi Sakurai, Christos Faloutsos, 31 | "AutoPlait: Automatic Mining of Co-evolving Time Sequences", 32 | ACM SIGMOD Conference, Snowbird, Utah, June 2014. 33 | 34 | 35 | Updates 36 | ------------ 37 | Version: June 18, 2014, 38 | - released 39 | 40 | -------------------------------------------------------------------------------- /codes/autoplait/nrutil.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** File: nrutil.h 3 | ** Purpose: Memory allocation routines borrowed from the 4 | ** book "Numerical Recipes" by Press, Flannery, Teukolsky, 5 | ** and Vetterling. 6 | ** state sequence and probablity of observing a sequence 7 | ** given the model. 8 | ** Organization: University of Maryland 9 | ** 10 | ** $Id: nrutil.h,v 1.2 1998/02/19 16:32:42 kanungo Exp kanungo $ 11 | */ 12 | 13 | float *vector(); 14 | float **matrix(); 15 | float **convert_matrix(); 16 | double *dvector(); 17 | double **dmatrix(); 18 | int *ivector(); 19 | int **imatrix(); 20 | float **submatrix(); 21 | void free_vector(); 22 | void free_dvector(); 23 | void free_ivector(); 24 | void free_matrix(); 25 | void free_dmatrix(); 26 | void free_imatrix(); 27 | void free_submatrix(); 28 | void free_convert_matrix(); 29 | void nrerror(); 30 | -------------------------------------------------------------------------------- /codes/autoplait/_out/output_example.txt: -------------------------------------------------------------------------------- 1 | ---------------------- 2 | mocap and googleTrend 3 | ---------------------- 4 | loading... 5 | load dataset... 6 | file: ./_dat/21_01.amc.4d (len=1285) 7 | duration: 1285 8 | dimension: 4 9 | Z-normalization... 10 | memory allocation... 11 | start autoplait... 12 | --------- 13 | r|m|Cost 14 | --------- 15 | 1 1 8458 16 | 2 5 6864 17 | 2 5 6864 18 | 3 6 6448 19 | 3 6 6448 20 | 4 8 6144 21 | 4 8 6144 22 | 4 8 6144 23 | ================================== 24 | duration: 1285 25 | search time: 3.26348800 sec. 26 | total patterns: 4 27 | total segments: 8 28 | total cost: 6144 29 | ================================== 30 | loading... 31 | load dataset... 32 | file: ./_dat/flus (len=472) 33 | duration: 472 34 | dimension: 4 35 | Z-normalization... 36 | memory allocation... 37 | start autoplait... 38 | --------- 39 | r|m|Cost 40 | --------- 41 | 1 1 3344 42 | 2 3 3202 43 | 2 3 3202 44 | 2 3 3202 45 | ================================== 46 | duration: 472 47 | search time: 0.66977300 sec. 48 | total patterns: 2 49 | total segments: 3 50 | total cost: 3202 51 | ================================== 52 | loading... 53 | load dataset... 54 | file: ./_dat/games (len=472) 55 | duration: 472 56 | dimension: 4 57 | Z-normalization... 58 | memory allocation... 59 | start autoplait... 60 | --------- 61 | r|m|Cost 62 | --------- 63 | 1 1 4177 64 | 2 2 3847 65 | 2 2 3847 66 | 3 3 3724 67 | 3 3 3724 68 | 3 3 3724 69 | ================================== 70 | duration: 472 71 | search time: 0.71347100 sec. 72 | total patterns: 3 73 | total segments: 3 74 | total cost: 3724 75 | ================================== 76 | 77 | -------------------------------------------------------------------------------- /codes/autoplait/autoplait.c: -------------------------------------------------------------------------------- 1 | /* 2 | * autoplait.c --- written by Yasuko Matsubara 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include "nrutil.h" 11 | #include "hmm.h" 12 | #include "tool.h" 13 | #include "autoplait.h" 14 | #define DBG 1 15 | #define LMAX 10000000 16 | 17 | int main(int argc,char *argv[]){ 18 | double start,end,totaltime; 19 | if(argc != 4 + LSET) 20 | error("usage: cmd d fin, fout", argv[0]); 21 | setseed(); 22 | PlaitWS ws; 23 | ws.lmax = LMAX; 24 | 25 | //----get the "filename, dim, bin ..."----// 26 | ws.d = atoi(argv[1]); 27 | char* fin = argv[2]; 28 | char* fout = argv[3]; 29 | if(LSET) ws.lmax = atoi(argv[4]); 30 | //------------------------------------// 31 | 32 | fprintf(stderr, "loading...\n"); 33 | LoadDB(fin, 1, ws.lmax, ws.d, &ws.x); 34 | ws.lmax = ws.x->m; 35 | fprintf(stderr, "duration: %d\n", ws.lmax); 36 | fprintf(stderr, "dimension: %d\n", ws.d); 37 | ZnormSequence(ws.x, 1, ws.d); 38 | AllocPlait(&ws); 39 | 40 | //---time check---// 41 | start = getrusage_sec(); 42 | //---time check---// 43 | fprintf(stderr, "start autoplait...\n"); 44 | Plait(&ws); 45 | //------------------// 46 | end = getrusage_sec(); 47 | totaltime = end-start; 48 | //------------------// 49 | 50 | SavePlait(&ws, fout); 51 | printf("==================================\n"); 52 | printf("duration: %d\n", ws.lmax); 53 | printf("search time: %.8f sec.\n",totaltime); 54 | printf("total patterns: %d \n", ws.Opt.idx); 55 | printf("total segments: %d \n", mSegment(&ws.Opt)); 56 | printf("total cost: %.0f \n", ws.costT); 57 | printf("==================================\n"); 58 | 59 | 60 | } 61 | 62 | 63 | -------------------------------------------------------------------------------- /codes/autoplait/forbackward.c: -------------------------------------------------------------------------------- 1 | /* 2 | * forbackward.c --- written by Yasuko Matsubara 2012.2.29 3 | */ 4 | #include 5 | #include 6 | #include 7 | #include "hmm.h" 8 | 9 | 10 | 11 | double Forward(HMM *phmm, float **O, int m, double **alpha, double *scale){ 12 | int i,j,t; 13 | double sum; 14 | double L; 15 | for (t = 0; t < m; t++) 16 | scale[t] = 0.0; 17 | /// init 18 | scale[0] = 0.0; 19 | for (i = 0; i < phmm->k; i++) { 20 | alpha[0][i] = phmm->pi[i]* pdf(phmm, i, O[0]); //(phmm->B[i][O[0]]); 21 | scale[0] += alpha[0][i]; 22 | }//i 23 | for (i = 0; i < phmm->k; i++) 24 | alpha[0][i] /= scale[0]; 25 | /// induction 26 | for (t = 0; t < m - 1; t++) { 27 | scale[t+1] = 0.0; 28 | for (j = 0; j < phmm->k; j++) { 29 | sum = 0.0; 30 | for (i = 0; i < phmm->k; i++) 31 | sum += alpha[t][i]* (phmm->A[i][j]); 32 | 33 | alpha[t+1][j] = sum*(pdf(phmm, j, O[t+1])); //phmm->B[j][O[t+1]]); 34 | scale[t+1] += alpha[t+1][j]; 35 | }//j 36 | for (j = 0; j < phmm->k; j++) 37 | alpha[t+1][j] /= scale[t+1]; 38 | }//t 39 | /// termination 40 | L = 0.0; 41 | for (t = 0; t < m; t++) 42 | L += log(scale[t]); 43 | 44 | return L; 45 | } 46 | 47 | double Backward(HMM *phmm, float **O, int m, double **beta, double *scale){ 48 | int i, j, t; 49 | double sum; 50 | /// init 51 | for (i = 0; i < phmm->k; i++) 52 | beta[m-1][i] = 1.0/scale[m-1]; 53 | ///indution 54 | for (t = m - 2; t >= 0; t--) { 55 | for (i = 0; i < phmm->k; i++) { 56 | sum = 0.0; 57 | for (j = 0; j < phmm->k; j++) 58 | sum += phmm->A[i][j] * 59 | pdf(phmm, j, O[t+1])*beta[t+1][j]; 60 | //(phmm->B[j][O[t+1]])*beta[t+1][j]; 61 | beta[t][i] = sum/scale[t]; 62 | }//i 63 | }//t 64 | double L = 0.0; 65 | for (t = 0; t < m; t++) 66 | L += log(scale[t]); 67 | return L; 68 | } 69 | -------------------------------------------------------------------------------- /codes/autoplait/autoplait.h: -------------------------------------------------------------------------------- 1 | /* 2 | * autoplait.h --- written by Yasuko Matsubara 3 | */ 4 | 5 | #define DEFAULT 1 6 | #if(DEFAULT) 7 | #define MAXK 16 8 | #define LSET NO 9 | #define MAXBAUMN 3 10 | #define NSAMPLE 10 // #of sampling 11 | #else 12 | #define MAXK 4 13 | #define LSET NO //YES 14 | #define MAXBAUMN 1 15 | #define NSAMPLE 5 16 | #endif 17 | 18 | typedef struct { 19 | int st; 20 | int len; 21 | }SubS; //SubSequence 22 | 23 | typedef struct { 24 | SubS *Sb; 25 | int nSb; 26 | int len; 27 | double costT; // total cost 28 | double costC; // coding cost 29 | int optimal; 30 | char label[BUFSIZE]; 31 | HMM model; 32 | double delta; 33 | }SegBox; //Segment 34 | 35 | typedef struct { 36 | SegBox **s; 37 | int idx; 38 | }Stack; //SegBox List 39 | 40 | typedef struct { 41 | double *Pu, *Pv, *Pi, *Pj; 42 | int **Su, **Sv, **Si, **Sj; 43 | int *nSu, *nSv, *nSi, *nSj; 44 | }CPS; //CutPointSearch 45 | 46 | typedef struct { 47 | Input *x; 48 | int maxc; 49 | int maxseg; 50 | int d; 51 | int lmax; 52 | // cut point search 53 | CPS cps; 54 | // baum & viterbi 55 | BAUM baum; 56 | int *q; //q[m] ... Viterbi path 57 | VITERBI vit; 58 | VITERBI vit2; 59 | Input *x_tmp; 60 | SegBox *s; 61 | // candidate stack 62 | Stack C; 63 | Stack Opt; 64 | Stack S; 65 | double costT; 66 | SegBox U; // uniform sampling 67 | }PlaitWS; // autoplait workspace 68 | 69 | /// plait.c 70 | void PrintParams(); 71 | void AllocPlait(); 72 | void Plait(); 73 | void SavePlait(); 74 | 75 | /// segbox.c 76 | void PrintStEd(FILE *fp, SegBox *s); 77 | void CopyStEd(SegBox *from, SegBox *to); 78 | void ResetStEd(SegBox *s); 79 | void AddStEd(SegBox *s, int st, int len); 80 | void AddStEd_ex(SegBox *s, int st, int len); 81 | void RemoveStEd(SegBox *s, int id); 82 | int Push(SegBox *s, Stack *C); 83 | SegBox *Pop(Stack *C); 84 | int mSegment(Stack *C); 85 | double MDLSegment(Stack *C); 86 | int IsSameStEd(SegBox *a, SegBox *b); 87 | int FindMaxStEd(); 88 | int FindMinStEd(); 89 | void FixedSampling(); 90 | void RandomSampling(); 91 | void UniformSet(); 92 | void UniformSampling(); 93 | 94 | /// cps.c 95 | double CPSearch(); 96 | void AllocCPS(); 97 | void FreeCPS(); 98 | 99 | -------------------------------------------------------------------------------- /codes/autoplait/plots_results.m: -------------------------------------------------------------------------------- 1 | function [ ] = plots_results( dir ) 2 | %PLOTS_RESULTS.M 3 | % 4 | % written by Yasuko Matsubara 5 | % 6 | 7 | 8 | %% load original data and segment information 9 | fid = fopen([dir, 'input']); 10 | fn = textscan(fid, '%s'); 11 | fclose(fid); 12 | orgfn=fn{1}{1} 13 | datfn=[dir, 'segment.']; 14 | 15 | %% load org data 16 | org=load(orgfn); 17 | org=normalize(org)*10; 18 | st=1; 19 | ed=length(org)-1; 20 | miny=min(min(org)); 21 | maxy=max(max(org)); 22 | 23 | %% load label list 24 | fid = fopen([datfn, 'labels']); 25 | labels = textscan(fid, '%s %s %s %s %s'); 26 | G=size(labels{1},1); 27 | fclose(fid); 28 | 29 | %% plot segments 30 | figure; 31 | subplot(2,1,1); 32 | %largefont; 33 | plot(org); 34 | 35 | plot_segments(datfn, G, st, ed, miny, maxy); 36 | 37 | end 38 | 39 | function plot_segments(datfn, G, st, ed, miny, maxy) 40 | w=0; 41 | %% for each segment set 's' 42 | for i=0: G-1 43 | 44 | cols=get(0,'DefaultAxesColorOrder'); 45 | col=cols(mod(i,size(cols,1))+1,:); 46 | 47 | %% plot original data 48 | X=load([datfn, num2str(i)]); 49 | subplot(2,1,1) 50 | plot_lines(X(:,1)); 51 | xlim([st,ed]) 52 | ylim([miny, maxy*1.2]) 53 | 54 | %% plot colorful segments 55 | subplot(G*2,1,G+i+1) 56 | plot_box(X, col, 1) 57 | xlim([st,ed]) 58 | ylim([0 1]) 59 | box on 60 | ylabel(num2str(i+1)); 61 | set(gca,'XTickLabel',{''}) 62 | set(gca,'YTickLabel',{''}) 63 | w=w+size(X,1); 64 | end 65 | 66 | disp(['w=', num2str(w)]) 67 | 68 | end 69 | 70 | 71 | function [ ] = plot_box( X, color, alpha ) 72 | n=size(X,1); 73 | for i=1:n 74 | hold on; 75 | plot_box_aux(X(i,1), X(i,2), color, alpha); 76 | hold off; 77 | end 78 | end 79 | 80 | function [ ] = plot_box_aux( st, ed, color, alpha ) 81 | btm=-100000; 82 | top=100000; 83 | p=patch([st,ed, ed, st],[btm,btm, top, top], color); 84 | set(p,'EdgeColor','none') 85 | set(p,'FaceAlpha',alpha); 86 | ylim([btm, top]) 87 | end 88 | 89 | 90 | function [ ] = plot_lines( X ) 91 | btm=-1000; 92 | top=1000; 93 | hold on; 94 | for i=1: length(X) 95 | plot([X(i), X(i)], [btm, top], 'black-') 96 | end 97 | ylim([btm, top]) 98 | end 99 | 100 | function [ Xfull ] = normalize( X ) 101 | Xfull=X; 102 | for i=1: size(Xfull,2) 103 | X=Xfull(:,i); 104 | Xn=(X-min(X))/(max(X)-min(X)); 105 | Xfull(:,i) = Xn; 106 | end 107 | end 108 | 109 | 110 | -------------------------------------------------------------------------------- /codes/autoplait/hmm.h: -------------------------------------------------------------------------------- 1 | /* 2 | * hmm.h --- written by Yasuko Matsubara 2012.2.29 3 | */ 4 | #include 5 | #include 6 | #include 7 | 8 | #define ZERO 0.000001 //0.00000001 9 | #define ONE 0.999999 //0.99999999 10 | #define INF 1000000000 11 | #define MAXITER 10 //20 12 | #define BUFSIZE 254 13 | 14 | #define VARMAX INF 15 | #define VARMIN ZERO 16 | 17 | #define MAXVAL 1.0 18 | 19 | 20 | #define PI M_PI //3.141592653589 21 | #define E M_E //2.71828 22 | 23 | 24 | typedef struct { 25 | int n; // # of sequences 26 | int k; // # of states 27 | double *pi; // initial vector pi[k] 28 | double **A; // transition matrix: A[k][k] 29 | double pi_denom; // pi_denom 30 | double *A_denom; // A_denom[k] ... for incremental estimation 31 | 32 | // numerical 33 | int d; // # dimension 34 | double **mean; // GMM mean: mean[k][d] 35 | double **var; // GMM variance: var[k][d] 36 | double **sum_w; // total weighted count count[k][d] 37 | double **M2; // M2 for increlemtal var computation : M2[k][d] 38 | } HMM; 39 | 40 | 41 | typedef struct { 42 | // label 43 | int id; 44 | char tag[BUFSIZE]; 45 | int parent; 46 | int st; 47 | // data 48 | float **O; //O[m][d] 49 | int m; 50 | // pattern 51 | int pid; 52 | }Input; 53 | 54 | 55 | typedef struct { 56 | double **alpha; //[mx][k] 57 | double **beta; //[mx][k] 58 | double ***gamma; //[n][mx][k] 59 | double **gamma_space; //[n*mx][k] 60 | double ****xi; //[n][mx][k][k] 61 | double *scale; //[mx] 62 | int **idx; //[n][mx]; //for k-means clustering 63 | HMM chmm; 64 | } BAUM; 65 | 66 | typedef struct { 67 | double **delta; //[m][k] 68 | int **psi; //[m][k] 69 | int *q; //[m] 70 | double *piL; //[k] 71 | double **AL; //[k][k] 72 | double **biot; //[k][m] 73 | } VITERBI; 74 | 75 | 76 | 77 | /// hmmutils.c 78 | void LoadHMM(char *fn, HMM *phmm); 79 | void ReadHMM(FILE *fp, HMM *phmm); 80 | void PrintHMM(FILE *fp, HMM *phmm); 81 | void InitHMM(HMM *phmm, int K, int D); 82 | void ResetHMM(HMM *phmm, int K, int D); 83 | void FreeHMM(HMM *phmm); 84 | void SubstHMM(HMM *phmm1, HMM *phmm2); 85 | // 86 | void GenSequenceArray(HMM *phmm, int m, float **O, int *q); 87 | int GenInitalState(HMM *phmm); 88 | int GenNextState(HMM *phmm, int q_t); 89 | int GenSymbol(HMM *phmm, int q_t); 90 | void GenGaussian(HMM *phmm, int q_t, float *O); 91 | // 92 | double pdfL(HMM *phmm, int kid, float *O); 93 | double pdf(HMM *phmm, int kid, float *O); 94 | double GaussianPDF(double mean, double var, double x); 95 | 96 | 97 | /// forbackward.c 98 | double Forward(HMM *phmm, float **O, int m, double **alpha, double *scale); 99 | double Backward(HMM *phmm, float **O, int m, double **beta, double *scale); 100 | 101 | /// baum.c 102 | double BaumWelch(HMM *phmm, int n, Input *xlst, BAUM *baum, int wantKMEANS); 103 | void AllocBaum(BAUM *baum, int n, int m, int k, int d); 104 | void FreeBaum(BAUM *baum, int n, int m, int k); 105 | 106 | /// viterbi.c 107 | void AllocViterbi(VITERBI *viter, int n, int m, int k); 108 | double Viterbi(HMM *phmm, int m, float **O, VITERBI *vit); 109 | double ViterbiL(HMM *phmm, int m, float **O, VITERBI *vit); 110 | void FreeViterbi(VITERBI *vit, int n, int m, int k); 111 | 112 | /// kmeans.c 113 | void Kmeans(); 114 | 115 | 116 | #define MAX(x,y) ((x) > (y) ? (x) : (y)) 117 | #define MIN(x,y) ((x) < (y) ? (x) : (y)) 118 | 119 | 120 | /// dynamic.c 121 | void Split(Input *X, int st, int len, Input *x); 122 | 123 | 124 | -------------------------------------------------------------------------------- /codes/autoplait/nrutil.c: -------------------------------------------------------------------------------- 1 | /* 2 | * nrutil.c --- from "Numerical Recipes" 3 | */ 4 | 5 | //#include 6 | #if !defined(__APPLE__) 7 | #include 8 | #endif 9 | 10 | #include 11 | #include 12 | 13 | 14 | void nrerror(error_text) 15 | char error_text[]; 16 | { 17 | void exit(); 18 | 19 | fprintf(stderr,"Numerical Recipes run-time error...\n"); 20 | fprintf(stderr,"%s\n",error_text); 21 | fprintf(stderr,"...now exiting to system...\n"); 22 | exit(1); 23 | } 24 | 25 | 26 | 27 | float *vector(nl,nh) 28 | int nl,nh; 29 | { 30 | float *v; 31 | 32 | v=(float *)calloc((unsigned) (nh-nl+1),sizeof(float)); 33 | if (!v) nrerror("allocation failure in vector()"); 34 | return v-nl; 35 | } 36 | 37 | int *ivector(nl,nh) 38 | int nl,nh; 39 | { 40 | int *v; 41 | 42 | v=(int *)calloc((unsigned) (nh-nl+1),sizeof(int)); 43 | if (!v) nrerror("allocation failure in ivector()"); 44 | return v-nl; 45 | } 46 | 47 | double *dvector(nl,nh) 48 | int nl,nh; 49 | { 50 | double *v; 51 | 52 | v=(double *)calloc((unsigned) (nh-nl+1),sizeof(double)); 53 | if (!v) nrerror("allocation failure in dvector()"); 54 | return v-nl; 55 | } 56 | 57 | 58 | 59 | float **matrix(nrl,nrh,ncl,nch) 60 | int nrl,nrh,ncl,nch; 61 | { 62 | int i; 63 | float **m; 64 | 65 | m=(float **) calloc((unsigned) (nrh-nrl+1),sizeof(float*)); 66 | if (!m) nrerror("allocation failure 1 in matrix()"); 67 | m -= nrl; 68 | 69 | for(i=nrl;i<=nrh;i++) { 70 | m[i]=(float *) calloc((unsigned) (nch-ncl+1),sizeof(float)); 71 | if (!m[i]) nrerror("allocation failure 2 in matrix()"); 72 | m[i] -= ncl; 73 | } 74 | return m; 75 | } 76 | 77 | double **dmatrix(nrl,nrh,ncl,nch) 78 | int nrl,nrh,ncl,nch; 79 | { 80 | int i; 81 | double **m; 82 | 83 | m=(double **) calloc((unsigned) (nrh-nrl+1),sizeof(double*)); 84 | if (!m) nrerror("allocation failure 1 in dmatrix()"); 85 | m -= nrl; 86 | 87 | for(i=nrl;i<=nrh;i++) { 88 | m[i]=(double *) calloc((unsigned) (nch-ncl+1),sizeof(double)); 89 | if (!m[i]) nrerror("allocation failure 2 in dmatrix()"); 90 | m[i] -= ncl; 91 | } 92 | return m; 93 | } 94 | 95 | int **imatrix(nrl,nrh,ncl,nch) 96 | int nrl,nrh,ncl,nch; 97 | { 98 | int i,**m; 99 | 100 | m=(int **)calloc((unsigned) (nrh-nrl+1),sizeof(int*)); 101 | if (!m) nrerror("allocation failure 1 in imatrix()"); 102 | m -= nrl; 103 | 104 | for(i=nrl;i<=nrh;i++) { 105 | m[i]=(int *)calloc((unsigned) (nch-ncl+1),sizeof(int)); 106 | if (!m[i]) nrerror("allocation failure 2 in imatrix()"); 107 | m[i] -= ncl; 108 | } 109 | return m; 110 | } 111 | 112 | 113 | 114 | float **submatrix(a,oldrl,oldrh,oldcl,oldch,newrl,newcl) 115 | float **a; 116 | int oldrl,oldrh,oldcl,oldch,newrl,newcl; 117 | { 118 | int i,j; 119 | float **m; 120 | 121 | m=(float **) calloc((unsigned) (oldrh-oldrl+1),sizeof(float*)); 122 | if (!m) nrerror("allocation failure in submatrix()"); 123 | m -= newrl; 124 | 125 | for(i=oldrl,j=newrl;i<=oldrh;i++,j++) m[j]=a[i]+oldcl-newcl; 126 | 127 | return m; 128 | } 129 | 130 | 131 | 132 | void free_vector(v,nl,nh) 133 | float *v; 134 | int nl,nh; 135 | { 136 | free((char*) (v+nl)); 137 | } 138 | 139 | void free_ivector(v,nl,nh) 140 | int *v,nl,nh; 141 | { 142 | free((char*) (v+nl)); 143 | } 144 | 145 | void free_dvector(v,nl,nh) 146 | double *v; 147 | int nl,nh; 148 | { 149 | free((char*) (v+nl)); 150 | } 151 | 152 | 153 | 154 | void free_matrix(m,nrl,nrh,ncl,nch) 155 | float **m; 156 | int nrl,nrh,ncl,nch; 157 | { 158 | int i; 159 | 160 | for(i=nrh;i>=nrl;i--) free((char*) (m[i]+ncl)); 161 | free((char*) (m+nrl)); 162 | } 163 | 164 | void free_dmatrix(m,nrl,nrh,ncl,nch) 165 | double **m; 166 | int nrl,nrh,ncl,nch; 167 | { 168 | int i; 169 | 170 | for(i=nrh;i>=nrl;i--) free((char*) (m[i]+ncl)); 171 | free((char*) (m+nrl)); 172 | } 173 | 174 | void free_imatrix(m,nrl,nrh,ncl,nch) 175 | int **m; 176 | int nrl,nrh,ncl,nch; 177 | { 178 | int i; 179 | 180 | for(i=nrh;i>=nrl;i--) free((char*) (m[i]+ncl)); 181 | free((char*) (m+nrl)); 182 | } 183 | 184 | 185 | 186 | void free_submatrix(b,nrl,nrh,ncl,nch) 187 | float **b; 188 | int nrl,nrh,ncl,nch; 189 | { 190 | free((char*) (b+nrl)); 191 | } 192 | 193 | 194 | 195 | float **convert_matrix(a,nrl,nrh,ncl,nch) 196 | float *a; 197 | int nrl,nrh,ncl,nch; 198 | { 199 | int i,j,nrow,ncol; 200 | float **m; 201 | 202 | nrow=nrh-nrl+1; 203 | ncol=nch-ncl+1; 204 | m = (float **) calloc((unsigned) (nrow),sizeof(float*)); 205 | if (!m) nrerror("allocation failure in convert_matrix()"); 206 | m -= nrl; 207 | for(i=0,j=nrl;i<=nrow-1;i++,j++) m[j]=a+ncol*i-ncl; 208 | return m; 209 | } 210 | 211 | 212 | 213 | void free_convert_matrix(b,nrl,nrh,ncl,nch) 214 | float **b; 215 | int nrl,nrh,ncl,nch; 216 | { 217 | free((char*) (b+nrl)); 218 | } 219 | -------------------------------------------------------------------------------- /codes/autoplait/kmeans.c: -------------------------------------------------------------------------------- 1 | /* 2 | * kmeans.c --- written by Yasuko Matsubara 2012.4.30 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include "nrutil.h" 10 | #include 11 | #include 12 | 13 | #define MAIN 0 14 | #define DBG 0 15 | 16 | #include "hmm.h" 17 | #include "tool.h" 18 | #define KMAXITER 100 19 | #define MINVAR VARMIN 20 | #define RANDOM 0 21 | void Kmeans(); 22 | 23 | 24 | #if MAIN 25 | int main (int argc, char **argv){ 26 | HMM hmm; // model 27 | float ***O; //O[n][m][d] 28 | double **mean; // GMM mean: mean[k][d] 29 | double **var; // GMM variance: var[k][d] 30 | 31 | if(argc != 6) 32 | error("usage: cmd seqfn, n(#seqs), m(len), k(#state) d(#dimension)", argv[0]); 33 | setseed(); 34 | 35 | char *fn = argv[1]; 36 | int n = atoi(argv[2]); // # of seqs 37 | int mx = atoi(argv[3]); // seq length 38 | int k = atoi(argv[4]); // # of states 39 | int d = atoi(argv[5]); // # of dimensions 40 | 41 | int *mlst = ivector(0, n); 42 | O = (float***)malloc(sizeof(float**)*n); 43 | LoadDB(fn, n, mx, d, O, mlst); 44 | 45 | //PrintSequence(stderr, m, d, O[0]); 46 | InitHMM(&hmm, k, d); 47 | int **idx; //idx[n][m]; 48 | idx = imatrix(0, n, 0, m); 49 | Kmeans(&hmm, n, mlst, d, O, k, idx); 50 | 51 | #if DBG 52 | PrintHMM(stderr, &hmm); 53 | #endif 54 | 55 | } 56 | #endif 57 | double distance(float *a, double *b, int d){ 58 | double dist = 0; 59 | int i; 60 | for(i=0;imean; 119 | double **var = phmm->var; 120 | 121 | // if k==1, nothing to do 122 | if(k==1){ 123 | calcMean(mean[0], n, xlst, d, idx, -1); 124 | calcVar( var[0], n, xlst, d, idx, -1); 125 | return; 126 | }// 127 | 128 | #if(RANDOM) 129 | // random assign 130 | for(r=0;r dist){ 159 | idx[r][i] = j; 160 | min = dist; 161 | }//if 162 | }//j 163 | total += min; 164 | }//i 165 | 166 | ///* 167 | /// --- avoid single core --- /// 168 | for(j=0;j 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include "nrutil.h" 13 | #include "hmm.h" 14 | #include "tool.h" 15 | #include "autoplait.h" 16 | 17 | void PrintStEd(FILE *fp, SegBox *s){ 18 | int i; 19 | for(i=0;inSb;i++) 20 | fprintf(fp, "%d %d \n", 21 | s->Sb[i].st, 22 | s->Sb[i].st+s->Sb[i].len-1); 23 | } 24 | void ResetStEd(SegBox *s){ 25 | s->nSb = 0; 26 | s->len = 0; 27 | s->costC = INF; 28 | s->costT = INF; 29 | } 30 | void RemoveStEd(SegBox *s, int id){ 31 | if(id >= s->nSb) { fprintf(stderr, "%d: ", id); error("too large id","RemoveStEd"); } 32 | int i; 33 | int len = s->Sb[id].len; 34 | for(i=id;inSb-1;i++){ 35 | s->Sb[i].st=s->Sb[i+1].st; 36 | s->Sb[i].len=s->Sb[i+1].len; 37 | }//i 38 | s->len-=len; 39 | s->nSb--; 40 | } 41 | 42 | void _rm_overlap(SegBox *s){ 43 | int i; 44 | int curr=INF; 45 | // check overlapped segments 46 | while(curr > s->nSb){ 47 | curr = s->nSb; 48 | for(i=0;inSb-1;i++){ 49 | int st0 = s->Sb[i].st; 50 | int ed0 = st0 + s->Sb[i].len; 51 | int st1 = s->Sb[i+1].st; 52 | int ed1 = st1 + s->Sb[i+1].len; 53 | int ed; 54 | if(ed0 > ed1) ed = ed0; else ed = ed1; 55 | // if overlapped 56 | if(ed0+1 >= st1){ 57 | RemoveStEd(s, i+1); 58 | s->Sb[i].len = ed-st0; 59 | }//if 60 | }//i 61 | }//while 62 | } 63 | 64 | void AddStEd(SegBox *s, int st, int len){ 65 | if(len<=0) return; //error("len<=0", "addStEd"); //return; 66 | if(st<0) st=0; //error("st < 0", "addStEd"); //st=0; 67 | // find loc 68 | int i; int loc = -1; 69 | for(i=0;inSb;i++){ 70 | if(s->Sb[i].st > st) 71 | break; 72 | }//i 73 | loc = i; 74 | // add new segment 75 | for(i=s->nSb-1;i>=loc;i--){ 76 | s->Sb[i+1].st = s->Sb[i].st; 77 | s->Sb[i+1].len = s->Sb[i].len; 78 | }//i 79 | s->Sb[loc].st = st; 80 | s->Sb[loc].len = len; 81 | s->nSb++; 82 | // remove overlap 83 | _rm_overlap(s); 84 | // length sum 85 | s->len = 0; 86 | for(i=0;inSb;i++) 87 | s->len += s->Sb[i].len; 88 | } 89 | 90 | /// allow overlapped segments 91 | void AddStEd_ex(SegBox *s, int st, int len){ 92 | s->len += len; 93 | int next = s->nSb; 94 | s->Sb[next].st = st; 95 | s->Sb[next].len = len; 96 | s->nSb++; 97 | } 98 | 99 | int Push(SegBox *s, Stack *C){ 100 | C->s[C->idx] = s; 101 | C->idx++; 102 | return C->idx; 103 | } 104 | SegBox *Pop(Stack *C){ 105 | if(C->idx==0) 106 | return NULL; 107 | C->idx--; 108 | return C->s[C->idx]; 109 | } 110 | double MDLSegment(Stack *C){ 111 | int i; 112 | double c = 0; 113 | for(i=0;iidx;i++) 114 | c += C->s[i]->costT; 115 | return c; 116 | } 117 | int mSegment(Stack *C){ 118 | int i; 119 | int m = 0; 120 | for(i=0;iidx;i++) 121 | m += C->s[i]->nSb; 122 | return m; 123 | } 124 | void CopyStEd(SegBox *from, SegBox *to){ 125 | int i; 126 | for(i=0;inSb;i++){ 127 | to->Sb[i].st = from->Sb[i].st; 128 | to->Sb[i].len = from->Sb[i].len; 129 | } 130 | to->nSb = from->nSb; 131 | to->len = from->len; 132 | to->costT = from->costT; 133 | to->costC = from->costC; 134 | to->delta = from->delta; 135 | strcpy(to->label, from->label); 136 | } 137 | 138 | int IsSameStEd(SegBox *a, SegBox *b){ 139 | int i; 140 | if(a->nSb != b->nSb) 141 | return -1; 142 | for(i=0;inSb;i++){ 143 | if(a->Sb[i].st !=b->Sb[i].st) 144 | return -1; 145 | if(a->Sb[i].len !=b->Sb[i].len) 146 | return -1; 147 | }//i 148 | return 1; 149 | } 150 | 151 | int FindMinStEd(SegBox *s){ 152 | int i,j; 153 | int id=-1; int min=INF; 154 | for(i=0;inSb;i++) 155 | if(s->Sb[i].len < min){ 156 | id=i; min=s->Sb[i].len; 157 | } 158 | return id; 159 | } 160 | int FindMaxStEd(SegBox *s){ 161 | int i,j; 162 | int id=-1; int max=-INF; 163 | for(i=0;inSb;i++) 164 | if(s->Sb[i].len > max){ 165 | id=i; max=s->Sb[i].len; 166 | } 167 | return id; 168 | } 169 | 170 | void FixedSampling(SegBox *Sx, SegBox *s0, SegBox *s1, int len){ 171 | int loc, r; 172 | // init segments 173 | ResetStEd(s0); 174 | ResetStEd(s1); 175 | // segment s0 176 | loc = 0%Sx->nSb; 177 | r = Sx->Sb[loc].st; 178 | AddStEd(s0, r, len); 179 | // segment s1 180 | loc = 1%Sx->nSb; 181 | r = Sx->Sb[loc].st+(int)(Sx->Sb[loc].len/2); 182 | AddStEd(s1, r, len); 183 | } 184 | void RandomSampling(SegBox *Sx, SegBox *s0, SegBox *s1, int len){ 185 | int loc, r; 186 | // init segments 187 | ResetStEd(s0); 188 | ResetStEd(s1); 189 | // segment s0 190 | loc = (int) floor(getrand()*Sx->nSb); 191 | r = (int) floor(Sx->Sb[loc].st + getrand()*(Sx->Sb[loc].len-len)); 192 | AddStEd(s0, r, len); 193 | // segment s1 194 | loc = (int) floor(getrand()*Sx->nSb); 195 | r = (int) floor(Sx->Sb[loc].st + getrand()*(Sx->Sb[loc].len-len)); 196 | AddStEd(s1, r, len); 197 | } 198 | void UniformSet(SegBox *Sx, int len, int trial, SegBox *U){ 199 | int i,j; 200 | int slideW = (int)ceil((Sx->len-len)/trial); 201 | // create uniform blocks 202 | ResetStEd(U); 203 | for(i=0;inSb;i++){ 204 | if(U->nSb >= trial) return; 205 | int st=Sx->Sb[i].st; 206 | int ed=st+Sx->Sb[i].len; 207 | for(j=0;jed){ 210 | int st=ed-len; if(st<0)st=0; 211 | AddStEd_ex(U, st, len); 212 | break; 213 | } 214 | AddStEd_ex(U, next, len); 215 | }//j 216 | }//i 217 | } 218 | void UniformSampling(SegBox *Sx, SegBox *s0, SegBox *s1, int len, int n1, int n2, SegBox *U){ 219 | int i,j; 220 | // init segments 221 | ResetStEd(s0); 222 | ResetStEd(s1); 223 | i = (int) (n1 % U->nSb); 224 | j = (int) (n2 % U->nSb); 225 | int st0 = U->Sb[i].st; 226 | int st1 = U->Sb[j].st; 227 | /// if overlapped, then, ignore 228 | if(abs(st0-st1) 6 | #include "hmm.h" 7 | #include "tool.h" 8 | #include "nrutil.h" 9 | 10 | #define VITHUGE 100000000000.0 11 | #define DBG 0 //1 12 | 13 | void AllocViterbi(VITERBI *vit, int n, int m, int k){ 14 | vit->delta = dmatrix(0, m, 0, k); 15 | vit->psi = imatrix(0, m, 0, k); 16 | vit->q = ivector(0, m); 17 | vit->piL = dvector(0, k); 18 | vit->AL = dmatrix(0, k, 0, k); 19 | vit->biot = dmatrix(0, k, 0, m); 20 | } 21 | void FreeViterbi(VITERBI *vit, int n, int m, int k){ 22 | free_dmatrix(vit->delta, 0, m, 0, k); 23 | free_imatrix(vit->psi, 0, m, 0, k); 24 | free_ivector(vit->q, 0, m); 25 | free_dvector(vit->piL, 0, k); 26 | free_dmatrix(vit->AL, 0, k, 0, k); 27 | free_dmatrix(vit->biot, 0, k, 0, m); 28 | } 29 | 30 | double Viterbi(HMM *phmm, int m, float **O, VITERBI *vit){ 31 | int i, j, t; 32 | int maxvalind; 33 | double maxval, val; 34 | double **delta = vit->delta; 35 | int **psi = vit->psi; 36 | int *q = vit->q; 37 | 38 | // compute delta (t=0) 39 | for(i=0;ik;i++){ 40 | delta[0][i] = phmm->pi[i] * pdf(phmm, i, O[0]); 41 | psi[0][i] = 0; 42 | }//i 43 | // compute delta (t>0) 44 | for(t=1;tk;j++){ 46 | maxval = 0.0; 47 | maxvalind = 0; 48 | for(i=0;ik;i++){ 49 | val = delta[t-1][i]*(phmm->A[i][j]); 50 | if(val>maxval){ 51 | maxval = val; 52 | maxvalind = i; 53 | } 54 | }//i 55 | delta[t][j] = maxval*pdf(phmm, i, O[t]); 56 | psi[t][j] = maxvalind; 57 | }//j 58 | }//t 59 | // final likelihood 60 | double Lh = 0.0; 61 | q[m-1] = -1; 62 | for(i=0;ik;i++) 63 | if(delta[m-1][i]> Lh) { 64 | Lh = delta[m-1][i]; 65 | q[m-1] = i; 66 | } 67 | // avoid error 68 | if(q[m-1]==-1) 69 | error("error", "cannot compute viterbi path"); 70 | //check path 71 | for(t=m-2;t>=0;t--) 72 | q[t] = psi[t+1][q[t+1]]; 73 | 74 | return Lh; 75 | } 76 | 77 | // take logarithm 78 | void TakelogHMM(HMM *phmm, VITERBI *vit, int m, float **O){ 79 | int i,j,t; 80 | for(i=0;ik;i++) 81 | vit->piL[i] = log(phmm->pi[i]+ZERO); 82 | for(i=0;ik;i++) 83 | for(j=0;jk;j++) 84 | vit->AL[i][j] = log(phmm->A[i][j]+ZERO); 85 | for(i=0;ik;i++) 86 | for(t=0;tbiot[i][t] = pdfL(phmm, i, O[t]); 88 | 89 | } 90 | double ViterbiLList(HMM *phmm, int m, float **O, VITERBI *vit, double *delta){ 91 | int i, j, t; 92 | double maxval, val; 93 | 94 | TakelogHMM(phmm, vit, m, O); 95 | 96 | double deltax = -VITHUGE; 97 | 98 | // compute delta (t==0) 99 | deltax = -VITHUGE; 100 | for(i=0;ik;i++){ 101 | vit->delta[0][i] = vit->piL[i] + vit->biot[i][0]; 102 | if(deltax < vit->delta[0][i]) 103 | deltax = vit->delta[0][i]; 104 | }//i 105 | #if(DBG) 106 | fprintf(stdout, "%f \n", deltax); 107 | #endif 108 | delta[0] = deltax; 109 | 110 | // compute delta (t>0) 111 | for(t=1;tk;j++){ 114 | maxval = -VITHUGE; 115 | for(i=0;ik;i++){ 116 | val = vit->delta[t-1][i] + vit->AL[i][j]; 117 | if (val > maxval) 118 | maxval = val; 119 | }//i 120 | vit->delta[t][j] = maxval + vit->biot[j][t]; 121 | if(deltax < vit->delta[t][j]) 122 | deltax = vit->delta[t][j]; 123 | }//j 124 | #if(DBG) 125 | fprintf(stdout, "%f \n", deltax); 126 | #endif 127 | delta[t] = deltax; 128 | }//t 129 | 130 | for(t=m-1;t>=1;t--) 131 | delta[t]-=delta[t-1]; 132 | #if(DBG) 133 | for(t=0;tdelta; 149 | int **psi = vit->psi; 150 | int *q = vit->q; 151 | double *piL = vit->piL; 152 | double **AL = vit->AL; 153 | double **biot = vit->biot; 154 | 155 | double deltax = -VITHUGE; 156 | 157 | // compute delta (t==0) 158 | deltax = -VITHUGE; 159 | for(i=0;ik;i++){ 160 | delta[0][i] = piL[i] + biot[i][0]; 161 | psi[0][i] = 0; 162 | if(deltax < delta[0][i]) 163 | deltax = delta[0][i]; 164 | }//i 165 | #if(DBG) 166 | fprintf(stdout, "%f \n", deltax); 167 | #endif 168 | // compute delta (t>0) 169 | for(t=1;tk;j++){ 172 | maxval = -VITHUGE; 173 | maxvalind=0; 174 | for(i=0;ik;i++){ 175 | val = delta[t-1][i] + (AL[i][j]); 176 | if (val > maxval) { 177 | maxval = val; 178 | maxvalind = i; 179 | } 180 | }//i 181 | delta[t][j] = maxval + biot[j][t]; 182 | psi[t][j] = maxvalind; 183 | if(deltax < delta[t][j]) 184 | deltax = delta[t][j]; 185 | }//j 186 | #if(DBG) 187 | fprintf(stdout, "%f \n", deltax); 188 | #endif 189 | }//t 190 | 191 | // final likelihood 192 | double Lh = -VITHUGE; 193 | q[m-1] = -1; 194 | for(i=0;ik;i++){ 195 | if (delta[m-1][i] > Lh) { 196 | Lh = delta[m-1][i]; 197 | q[m-1] = i; 198 | } 199 | }//i 200 | // avoid error 201 | if(q[m-1]==-1){ 202 | fprintf(stderr, "Lh=%f\n", Lh); 203 | PrintHMM(stderr, phmm); 204 | error("error", "cannot compute viterbi path (LOG)"); 205 | } 206 | // check viterbi path 207 | for(t=m-2;t>=0;t--) 208 | q[t] = psi[t+1][q[t+1]]; 209 | return Lh; 210 | } 211 | 212 | 213 | 214 | 215 | 216 | -------------------------------------------------------------------------------- /codes/autoplait/tool.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include "nrutil.h" 9 | #include "hmm.h" 10 | #include "tool.h" 11 | 12 | void notfin(); 13 | void error(); 14 | 15 | //----------------------------------------// 16 | // random 17 | //---------------------------------------// 18 | void setseed(void) { 19 | int seed = 1; 20 | //int seed = (int) getpid(); 21 | srand((unsigned int)seed); 22 | } 23 | double getrand(void){ 24 | return (double) rand()/RAND_MAX; 25 | } 26 | 27 | //----------------------------------------// 28 | // MDL 29 | //---------------------------------------// 30 | double log_2(int x){ 31 | return log((double)x)/log(2.0); 32 | } 33 | double log_s(int x){ 34 | return 2.0*log_2(x)+1.0; 35 | } 36 | double costHMM(int k, int d){ 37 | double fB = (double) FB; 38 | double cost = (double) fB * (k + k*k + 2*k*d) + log_s(k); 39 | return cost; 40 | } 41 | void Split(Input *X, int st, int len, Input *x){ 42 | if(st < 0) st = 0; 43 | if(X->m < st + len) 44 | len = X->m - st; 45 | // pointer shift 46 | x->O = X->O + st; 47 | x->m = len; 48 | x->parent = X->id; 49 | x->st = st; 50 | sprintf(x->tag, "[%d] %s [%d-%d](%d)", x->id, X->tag, st, st+len, len); 51 | 52 | } 53 | //----------------------------------------// 54 | // Input Output 55 | //---------------------------------------// 56 | void PrintIdx(FILE *fp, int *idx, int n){ 57 | int i; 58 | for(i=0;iid, x->pid); 63 | //fprintf(fp, "(k=%d) \t " , x->model.k); 64 | fprintf(fp, "[%s] (%d)\n", x->tag, x->m); 65 | } 66 | void ReadSequence(FILE *fp, int m, int d, float **O){ 67 | int i,j; 68 | for (i=0; i < m; i++) 69 | for (j=0; j < d; j++) 70 | fscanf(fp,"%f", &O[i][j]); 71 | } 72 | int LoadSequence(char *fn, int mx, int d, float ***pO){ 73 | int len = count_lines(fn); 74 | fprintf(stderr, "file: %s (len=%d)\n", fn, len); 75 | int m; 76 | if(len < mx) m = len; 77 | else m = mx; 78 | *pO = (float**)matrix(0, mx, 0, d); 79 | FILE *fp = fopen(fn, "r"); 80 | if (fp == NULL) 81 | error("cannot open", fn); 82 | ReadSequence(fp, m, d, *pO); 83 | fclose(fp); 84 | return m; 85 | } 86 | void PrintSequence(FILE *fp, int m, int d, float **O){ 87 | int i,j; 88 | for(i=0;im;j++) 103 | if(x->O[j][d] > max) 104 | max = x->O[j][d]; 105 | else if(x->O[j][d] < min) 106 | min = x->O[j][d]; 107 | }//i 108 | for(i=0;i [0:MAXVAL] 111 | for(j=0;jm;j++) 112 | x->O[j][d] = MAXVAL*(x->O[j][d]-min) / (max-min); 113 | }//i 114 | }//d 115 | //PrintSequence(stdout, x->m, dim, x->O); 116 | } 117 | void ZnormSequence(Input *xlst, int n, int dim){ 118 | int i,j,d; 119 | fprintf(stderr, "Z-normalization... \n"); 120 | for(d=0;dm; 128 | for(j=0;jm;j++) 129 | mean += x->O[j][d]; 130 | }//i 131 | mean /= cnt; 132 | /// compute std 133 | for(i=0;im;j++) 136 | std += pow(x->O[j][d]-mean,2.0); 137 | }//i 138 | std = sqrt(std/cnt); 139 | for(i=0;im;j++) 143 | x->O[j][d] = MAXVAL*(x->O[j][d]-mean) / std; 144 | }//i 145 | 146 | }//d 147 | //PrintSequence(stdout, xlst[0].m, dim, xlst[0].O); 148 | } 149 | 150 | 151 | void LoadDB(char *fn, int n, int mx, int d, Input **pxlst){ 152 | 153 | int i; 154 | FILE *fp = fopen(fn, "r"); 155 | char buf[BUFSIZE]; 156 | if (fp == NULL) 157 | error("cannot open list", fn); 158 | fprintf(stderr, "load dataset... \n"); 159 | //fprintf(stderr, "fB=%d... \n", FB); 160 | Input *xlst = (Input*)malloc(sizeof(Input)*n); 161 | 162 | for(i=0;i 完成任务: 自动化无需用户干涉, 切点定位准确, 能区分不同模式. 260 | 261 | 前面研究的是对于m, r=2的情况,找到段和切点. 那么如何确定段数为m以及regime的数值r? 262 | 263 | 第三个算法是一个基于栈的算法, 思想是使用贪心算法, 将一个X分成段, 并引入新的regimes(只要编码开销一直↓) 264 | 265 | + 输入: X 266 | + 输出: 对Bundle X的一个描述C 267 | 268 | ``` 269 | Q = ∅ // { m, S, θ }的栈 270 | S = ∅, m = 0, r = 0, S0 = { 1, n }, m0 = 1 271 | θ0 = BaumWelch(X[S0]) // 估算S0的模型θ0 272 | 将{ m0, S0, θ0 }压入Q 273 | 274 | while 栈Q != ∅ do 275 | 将{ m0, S0, θ0 }弹出Q 276 | // 尝试提取regime 277 | { m1, m2, S1, S2, θ1, θ2, ∆ } = RegimeSplit(X[S0]) 278 | // 比较单一的regime θ0和regime 序对θ1, θ2 279 | if CostT(X; S0, θ0) > CostT(X; S1, S2, θ1, θ2) then 280 | // 分割regime 281 | 把两个entry {m1, S1, θ1}和{m2, S2, θ2}压入Q 282 | else 283 | // 无需分割regime 284 | S = S ∪ S0 285 | Θ = Θ ∪ θ0 286 | r++ 287 | 更新∆r×r 288 | fi = r 289 | m = m + m0 290 | end 291 | end 292 | 293 | return C = { m, r, S, Θ, F } 294 | ``` 295 | 296 | > 时间复杂度为O(n)线性增长 297 | 298 | > CutPointSearch和RegimeSplit需要O(ndk^2)时间来计算编码开销和估计模型参数. 因此复杂度为O(#iterate * ndk^2), 因为#iterate, d, k很小, 因此可以忽略不计, 复杂度为O(n). 299 | 300 | -------------------------------------------------------------------------------- /codes/autoplait/cps.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cps.c --- written by Yasuko Matsubara 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include "nrutil.h" 11 | #include "hmm.h" 12 | #include "tool.h" 13 | #include "autoplait.h" 14 | 15 | #define DBG 1 16 | #define S0 1 17 | #define S1 -1 18 | 19 | 20 | PlaitWS *ws; 21 | double CPSearch(); 22 | double _search_aux(); 23 | void AllocCPS(); 24 | void FreeCPS(); 25 | void _printP(double *P, int k){ 26 | int i; 27 | for(i=0;iPu = dvector(0, maxk); 34 | cps->Pv = dvector(0, maxk); 35 | cps->Pi = dvector(0, maxk); 36 | cps->Pj = dvector(0, maxk); 37 | cps->Su = imatrix(0, maxk, 0, maxlen); 38 | cps->Sv = imatrix(0, maxk, 0, maxlen); 39 | cps->Si = imatrix(0, maxk, 0, maxlen); 40 | cps->Sj = imatrix(0, maxk, 0, maxlen); 41 | cps->nSu = ivector(0, maxk); 42 | cps->nSv = ivector(0, maxk); 43 | cps->nSi = ivector(0, maxk); 44 | cps->nSj = ivector(0, maxk); 45 | } 46 | void FreeCPS(CPS *cps, int maxk, int maxlen){ 47 | free_dvector(cps->Pu, 0, maxk); 48 | free_dvector(cps->Pv, 0, maxk); 49 | free_dvector(cps->Pi, 0, maxk); 50 | free_dvector(cps->Pj, 0, maxk); 51 | free_imatrix(cps->Su, 0, maxk, 0, maxlen); 52 | free_imatrix(cps->Sv, 0, maxk, 0, maxlen); 53 | free_imatrix(cps->Si, 0, maxk, 0, maxlen); 54 | free_imatrix(cps->Sj, 0, maxk, 0, maxlen); 55 | free_ivector(cps->nSu, 0, maxk); 56 | free_ivector(cps->nSv, 0, maxk); 57 | free_ivector(cps->nSi, 0, maxk); 58 | free_ivector(cps->nSj, 0, maxk); 59 | } 60 | 61 | double CPSearch(SegBox *Sx, SegBox *s0, SegBox *s1, PlaitWS *wsd){ 62 | int i; 63 | ws = wsd; 64 | ResetStEd(s0); 65 | ResetStEd(s1); 66 | double lh = 0; 67 | for(i=0;inSb;i++) 68 | lh += _search_aux(Sx->Sb[i].st, Sx->Sb[i].len, s0, s1); 69 | return lh; 70 | } 71 | 72 | int _findMax(double *P, int k){ 73 | int i; 74 | int loc = -1; 75 | double max = -INF; 76 | for(i=0;imodel.k; 102 | int k1 = s1->model.k; 103 | int currentID; 104 | ///--- setting ---/// 105 | float **O = ws->x[0].O; 106 | HMM *m0 = &s0->model; 107 | HMM *m1 = &s1->model; 108 | double d0 = s0->delta; 109 | double d1 = s1->delta; 110 | ///--- setting ---/// 111 | double *Pu = ws->cps.Pu; 112 | double *Pv = ws->cps.Pv; 113 | double *Pi = ws->cps.Pi; 114 | double *Pj = ws->cps.Pj; 115 | int **Su = ws->cps.Su; 116 | int **Sv = ws->cps.Sv; 117 | int **Si = ws->cps.Si; 118 | int **Sj = ws->cps.Sj; 119 | int *nSu = ws->cps.nSu; 120 | int *nSv = ws->cps.nSv; 121 | int *nSi = ws->cps.nSi; 122 | int *nSj = ws->cps.nSj; 123 | _reset_npaths(nSu, k0); 124 | _reset_npaths(nSv, k0); 125 | _reset_npaths(nSi, k1); 126 | _reset_npaths(nSj, k1); 127 | ///--- setting ---/// 128 | // for swap 129 | HMM *hmm; 130 | int **imat; 131 | int *ivec; 132 | double *dvec; 133 | ///--- setting ---/// 134 | if(d0<=0 || d1<=0) 135 | error("delta == 0","cpsearch"); 136 | 137 | // (t == 0); 138 | t=st; 139 | for(v=0;vpi[v]+ZERO) + pdfL(m0, v, O[t]); 141 | for(j=0;jpi[j]+ZERO) + pdfL(m1, j, O[t]); 143 | //fprintf(stderr, "Pv:"); _printP(Pv, k0);fprintf(stderr, "Pj:");_printP(Pj, k1); 144 | 145 | // (t >= 1); 146 | for(t=st+1;tpi[u]+ZERO) + pdfL(m0, u, O[t]); 153 | //fprintf(stderr, "(t:%d) Pj: %f j:%d\n", t, maxPj, maxj); 154 | //fprintf(stderr, "%f +%f +%f +%f \n", Pj[maxj], log(d1), log(m0->pi[u]+ZERO), pdfL(m0, u, O[t])); 155 | // else 156 | double maxPv = -INF; int maxv; 157 | for(v=0;vA[v][u]+ZERO) + pdfL(m0, u, O[t]); 159 | //fprintf(stderr, "(t:%d) Pv: %f v:%d\n", t,val, v); 160 | //fprintf(stderr, "%f +%f +%f %f \n", log(1.0-d0), Pv[v], log(m0->A[v][u]+ZERO), pdfL(m0, u, O[t])); 161 | if(val > maxPv){ maxPv = val; maxv = v; } 162 | }//v 163 | if(maxPj > maxPv){ // if switch 164 | Pu[u] = maxPj; 165 | nSu[u] = _copy_path(Sj[maxj], nSj[maxj], Su[u]); 166 | Su[u][nSu[u]] = t; nSu[u]++; 167 | }else{ // else 168 | Pu[u] = maxPv; 169 | nSu[u] = _copy_path(Sv[maxv], nSv[maxv], Su[u]); 170 | } 171 | //fprintf(stderr, "P(u:%d,t:%d) %f\n", u, t, Pu[u]); 172 | //_print_path(stderr, Su[u], nSu[u]); 173 | }//u 174 | 175 | 176 | ///--- Pi(t) ---/// 177 | // regime-switch 178 | int maxv = _findMax(Pv, k0); 179 | for(i=0;ipi[i]+ZERO) + pdfL(m1, i, O[t]); 182 | //fprintf(stderr, "(t:%d) Pv: %f v:%d\n", t, maxPv, maxv); 183 | //fprintf(stderr, "%f +%f +%f +%f \n", Pv[maxv], + log(d0), + log(m1->pi[i]+ZERO), + pdfL(m1, i, O[t])); 184 | // else 185 | double maxPj = -INF; int maxj; 186 | for(j=0;jA[j][i]+ZERO) + pdfL(m1, i, O[t]); 188 | //fprintf(stderr, "(t:%d) Pj: %f j:%d\n", t,val, j); 189 | //fprintf(stderr, "%f +%f +%f %f \n", log(1.0-d1), Pj[j], + log(m1->A[j][i]+ZERO), + pdfL(m1, i, O[t])); 190 | if(val > maxPj){ maxPj = val; maxj = j; } 191 | }//j 192 | if(maxPv > maxPj){ // if switch 193 | Pi[i] = maxPv; 194 | nSi[i] = _copy_path(Sv[maxv], nSv[maxv], Si[i]); 195 | Si[i][nSi[i]] = t; nSi[i]++; 196 | }else{ // else 197 | Pi[i] = maxPj; 198 | nSi[i] = _copy_path(Sj[maxj], nSj[maxj], Si[i]); 199 | } 200 | //fprintf(stderr, "P(i:%d,t:%d) %f\n", i, t, Pi[i]); 201 | //_print_path(stderr, Si[i], nSi[i]); 202 | }//i 203 | 204 | // swap Pu Pv; Pi Pj; 205 | dvec = Pu; Pu = Pv; Pv = dvec; 206 | dvec = Pi; Pi = Pj; Pj = dvec; 207 | // swap Su Sv; Si Sj; 208 | imat = Su; Su = Sv; Sv = imat; 209 | imat = Si; Si = Sj; Sj = imat; 210 | // swap nSu nSv; nSi nSj; 211 | ivec = nSu; nSu = nSv; nSv = ivec; 212 | ivec = nSi; nSi = nSj; nSj = ivec; 213 | //fprintf(stderr, "Pv:"); _printP(Pv, k0);fprintf(stderr, "Pj:");_printP(Pj, k1); 214 | 215 | }//t 216 | 217 | //fprintf(stderr, "Pv:"); _printP(Pv, k0);fprintf(stderr, "Pj:");_printP(Pj, k1); 218 | // check the paths 219 | int maxv = _findMax(Pv, k0); 220 | int maxj = _findMax(Pj, k1); 221 | //fprintf(stderr, "maxv:%d, maxj:%d\n", maxv, maxj); 222 | int *path; int npath; int firstID; 223 | double lh = 0; 224 | if(Pv[maxv] > Pj[maxj]){ 225 | path = Sv[maxv]; npath = nSv[maxv]; firstID=pow(-1,npath)*S0; lh = Pv[maxv]; 226 | }else{ 227 | path = Sj[maxj]; npath = nSj[maxj]; firstID=pow(-1,npath)*S1; lh = Pj[maxj]; 228 | } 229 | //_print_path(stderr, path, npath); fprintf(stderr, "ID:%d\n"); 230 | 231 | // add paths 232 | int curSt=st; int nxtSt; 233 | for(i=0;i 6 | #include 7 | #include "nrutil.h" 8 | #include "hmm.h" 9 | #include "tool.h" 10 | 11 | 12 | #define DELTA 1 13 | #define DBG 0 14 | 15 | /// constant pi values (uniform distrib.) 16 | #define PIC 0 // default: 0 (NO) 17 | void _computeParams(); 18 | void _computeGamma(); 19 | void _computeXi(); 20 | 21 | /// both for batch & incremental estimation 22 | double BaumWelch(HMM *phmm, int n, Input *xlst, BAUM *baum, int wantKMEANS){ 23 | int i, j, k, t, l, r; 24 | 25 | l = 0; 26 | double **alpha = baum->alpha; 27 | double **beta = baum->beta; 28 | double ***gamma = baum->gamma; 29 | double ****xi = baum->xi; 30 | double *scale = baum->scale; 31 | double delta; 32 | double Lpreb, Lsum, Lf, Lb; 33 | // for kmeans 34 | int **idx = baum->idx; 35 | 36 | if(n==0) 37 | error("estimation error! n==0", "BaumWelch"); 38 | // if k==1, nothing to do 39 | if(k==1){ 40 | Kmeans(phmm, n, xlst, phmm->d, phmm->k, idx); 41 | return -1; 42 | } 43 | if(wantKMEANS){ 44 | // if initial stage and want k-means 45 | if(phmm->n==0){ 46 | #if(DBG) 47 | fprintf(stderr,"running k-means...\n"); 48 | #endif 49 | ResetHMM(phmm, phmm->k, phmm->d); 50 | Kmeans(phmm, n, xlst, phmm->d, phmm->k, idx); 51 | }//if 52 | }//wantKMEANS 53 | 54 | #if(DBG) 55 | fprintf(stderr,"running baumwelch...\n"); 56 | if(phmm->n > 0) 57 | fprintf(stderr, "BaumWelch: ++incremental inference\n"); 58 | if(phmm->n > 0 && n < 0) 59 | fprintf(stderr, "BaumWelch: --decremental inference\n"); 60 | #endif 61 | n = (int)fabs((float)n); 62 | 63 | int prev_n = phmm->n; 64 | phmm->n = n; 65 | SubstHMM(phmm, &baum->chmm); 66 | 67 | // for each sequence 68 | Lsum = 0.0; 69 | for(r=0;rn;r++){ 70 | float **O = xlst[r].O; 71 | int m = xlst[r].m; 72 | Lf = Forward( phmm, O, m, alpha, scale); 73 | Lb = Backward(phmm, O, m, beta, scale); 74 | _computeGamma(phmm, alpha, beta, gamma[r], m); 75 | _computeXi(phmm, O, alpha, beta, xi[r], m); 76 | Lsum += Lf; 77 | }//endfor 78 | // log log P(O |model) 79 | Lpreb = Lsum; 80 | 81 | do { 82 | #if(DBG) 83 | fprintf(stderr, "%d ", l); 84 | #endif 85 | /// 86 | /// M-STEP 87 | /// 88 | 89 | /// compute denoms & numerators 90 | SubstHMM(&baum->chmm, phmm); 91 | _computeParams(phmm, gamma, xi, xlst); 92 | 93 | /// 94 | /// E-STEP 95 | /// 96 | Lsum = 0.0; 97 | for(r=0;rn;r++){ 98 | float **O = xlst[r].O; 99 | int m = xlst[r].m; 100 | Lf = Forward( phmm, O, m, alpha, scale); 101 | Lb = Backward(phmm, O, m, beta, scale); 102 | _computeGamma(phmm, alpha, beta, gamma[r], m); 103 | _computeXi(phmm, O, alpha, beta, xi[r], m); 104 | Lsum += Lf; 105 | }//r 106 | delta = Lpreb - Lsum; 107 | Lpreb = Lsum; 108 | l++; 109 | } 110 | //while (l < MAXITER); 111 | while (fabs(delta) > DELTA && l < MAXITER); 112 | 113 | // for incremental fitting 114 | _computeParams(phmm, gamma, xi, xlst); 115 | 116 | /// avoid error 117 | if(isnan(Lsum)){ 118 | fprintf(stderr, "baumWelch: isnan, resetHMM...\n"); 119 | ResetHMM(phmm, phmm->k, phmm->d); 120 | } 121 | 122 | phmm->n = phmm->n + prev_n; 123 | #if(DBG) 124 | fprintf(stderr,"baumwelch: Lh=%e\n", Lsum); 125 | #endif 126 | return Lsum; 127 | 128 | } 129 | 130 | void _computeParams(HMM *phmm, double ***gamma, double ****xi, Input *xlst){ 131 | int r, i, j, k, t; 132 | /// initial prob vector pi 133 | // (a) recover previous pi*N 134 | for(i=0;ik;i++) 135 | phmm->pi[i] *= phmm->pi_denom; 136 | // (b) add new gamma (f=1: increment, f=-1: decrement) 137 | for(i=0;ik;i++) 138 | for(r=0;rn;r++) 139 | phmm->pi[i] += (ZERO+gamma[r][0][i]); 140 | for(i=0;ik;i++) 141 | if(phmm->pi[i] < 0) 142 | phmm->pi[i] = 0.0; 143 | // (c) normalize 144 | phmm->pi_denom = 0.0; 145 | for(i=0;ik;i++) 146 | phmm->pi_denom += phmm->pi[i]; 147 | #if(PIC) 148 | for(i=0;ik;i++) 149 | phmm->pi[i] = 1.0/(double)phmm->k; 150 | #else 151 | for(i=0;ik;i++) 152 | phmm->pi[i] = phmm->pi[i]/phmm->pi_denom; 153 | #endif 154 | 155 | /// transition matrix A 156 | // (a) recover previous A*N 157 | for(i=0;ik;i++) 158 | for(j=0;jk;j++) 159 | phmm->A[i][j] *= phmm->A_denom[i]; 160 | // (b) add new xi 161 | for(i=0;ik;i++) 162 | for(j=0;jk;j++) 163 | for(r=0;rn;r++) 164 | for(t=0;tA[i][j] += ZERO+xi[r][t][i][j]; 166 | for(i=0;ik;i++) 167 | for(j=0;jk;j++) 168 | if(phmm->A[i][j]<0) 169 | phmm->A[i][j]=0.0; 170 | // (c) normalize 171 | for(i=0;ik;i++){ 172 | phmm->A_denom[i] = 0.0; 173 | for(j=0;jk;j++) 174 | phmm->A_denom[i]+=phmm->A[i][j]; 175 | }//i 176 | for(i=0;ik;i++) 177 | for(j=0;jk;j++) 178 | phmm->A[i][j] = phmm->A[i][j]/phmm->A_denom[i]; 179 | 180 | /// weighted incremental computation 181 | for(i=0;ik;i++){ 182 | for(k=0;kd;k++){ 183 | // if initial stage 184 | if(phmm->sum_w[i][k] == 0){ 185 | phmm->mean[i][k] = 0.0; 186 | phmm->M2[i][k] = 0.0; 187 | }//else incremental computation 188 | 189 | for(r=0;rn;r++){ 190 | for(t=0;tsum_w[i][k] + ZERO; 194 | double delta = x - phmm->mean[i][k]; 195 | double R = (delta * w) / tmp; 196 | phmm->mean[i][k] += R; 197 | phmm->M2[i][k] += phmm->sum_w[i][k]*delta*R; 198 | phmm->sum_w[i][k] = tmp; 199 | }//t 200 | }//r 201 | phmm->var[i][k] = phmm->M2[i][k]/phmm->sum_w[i][k]; 202 | //int N = phmm->m * phmm->n; 203 | //phmm->var[i][k] *= N/(N-1); 204 | //double varmn = VARMIN/(double)(phmm->k); 205 | double varmn = VARMIN; 206 | // variance setting 207 | if(phmm->var[i][k] > VARMAX) 208 | phmm->var[i][k] = VARMAX; 209 | if(phmm->var[i][k] < varmn) 210 | phmm->var[i][k] = varmn; 211 | 212 | 213 | }//k 214 | }//i 215 | 216 | 217 | } 218 | void _computeGamma(HMM *phmm, double **alpha, double **beta, double **gamma, int m){ 219 | int i, j, t; 220 | for(t=0;tk;j++){ 223 | gamma[t][j] = alpha[t][j]*beta[t][j]; 224 | sum += gamma[t][j]; 225 | }//j 226 | for(i=0;ik;i++) 227 | gamma[t][i] = gamma[t][i]/sum; 228 | }//t 229 | } 230 | void _computeXi(HMM *phmm, float **O, double **alpha, double **beta, double ***xi, int m){ 231 | int i, j, t; 232 | for(t=0;tk;i++) 235 | for(j=0;jk;j++){ 236 | xi[t][i][j] = (alpha[t][i]*beta[t+1][j]) 237 | *(phmm->A[i][j] * pdf(phmm, j, O[t+1])); 238 | sum += xi[t][i][j]; 239 | }//j 240 | for(i=0;ik;i++) 241 | for(j=0;jk;j++) 242 | xi[t][i][j] /= sum; 243 | }//t 244 | } 245 | 246 | 247 | void AllocBaum(BAUM *baum, int n, int m, int k, int d){ 248 | int t,r; 249 | #if(DBG) 250 | fprintf(stderr, "[AllocBaum] constant pi PIC = %d\n", PIC); 251 | #endif 252 | baum->alpha = dmatrix(0, m, 0, k); 253 | baum->beta = dmatrix(0, m, 0, k); 254 | baum->scale = dvector(0, m); 255 | baum->idx = imatrix(0, n, 0, m); 256 | //gamma 257 | baum->gamma = (double ***) malloc(n*sizeof(double **)); 258 | for(r=0;rgamma[r] = dmatrix(0, m, 0, k); 260 | 261 | //xi 262 | baum->xi = (double ****) malloc(sizeof(double ***)*n); 263 | for(r=0;rxi[r] = (double ***) malloc(sizeof(double **)*m); 265 | for(t=0;txi[r][t] = dmatrix(0, k, 0, k); 267 | }//r 268 | //for incremental EM 269 | InitHMM(&baum->chmm, k, d); 270 | 271 | } 272 | void FreeXi(double *** xi, int m, int k){ 273 | int t; 274 | for (t = 0; t < m; t++) 275 | free_dmatrix(xi[t], 0, k, 0, k); 276 | free(xi); 277 | } 278 | void FreeGamma(double ** gamma, int m, int k){ 279 | free_dmatrix(gamma, 0, m, 0, k); 280 | } 281 | void FreeBaum(BAUM *baum, int n, int m, int k){ 282 | int r; 283 | for(r=0;rxi[r], m, k); 285 | FreeGamma(baum->gamma[r], m, k); 286 | }//r 287 | free_dmatrix(baum->alpha, 0, m, 0, k); 288 | free_dmatrix(baum->beta, 0, m, 0, k); 289 | free_dvector(baum->scale, 0, m); 290 | } 291 | 292 | -------------------------------------------------------------------------------- /codes/autoplait/hmmutils.c: -------------------------------------------------------------------------------- 1 | /* 2 | * hmmutils.c --- written by Yasuko Matsubara 2012.2.29 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | #include "nrutil.h" 9 | #include "hmm.h" 10 | #include "tool.h" 11 | #define Nsample 10 12 | #define VARINI 10 //0000 13 | 14 | //------------------// 15 | // HMM (read, free, init, copy, subst) 16 | //------------------// 17 | void LoadHMM(char *fn, HMM *phmm){ 18 | FILE *fp = fopen(fn,"r"); 19 | if (fp == NULL) 20 | error("cannot open file", fn); 21 | ReadHMM(fp, phmm); 22 | fclose(fp); 23 | } 24 | void ReadHMM(FILE *fp, HMM *phmm){ 25 | int i, j, k; 26 | 27 | // read params 28 | if(fscanf(fp, "k= %d\n", &(phmm->k))==EOF) 29 | error("error","cannot read HMM"); 30 | if(fscanf(fp, "d= %d\n", &(phmm->d))==EOF) 31 | error("error","cannot read HMM"); 32 | 33 | // alloc etc. 34 | InitHMM(phmm, phmm->k, phmm->d); 35 | // read pi, A, mean, var 36 | fscanf(fp, "pi:\n"); 37 | for (i = 0; i < phmm->k; i++) 38 | fscanf(fp, "%lf", &(phmm->pi[i])); 39 | fscanf(fp,"\n"); 40 | fscanf(fp, "A:\n"); 41 | for(i=0;ik;i++){ 42 | for(j=0;jk;j++) 43 | fscanf(fp, "%lf", &(phmm->A[i][j])); 44 | fscanf(fp,"\n"); 45 | }//i 46 | fscanf(fp, "mean:\n"); 47 | for(j=0;jk;j++){ 48 | for(k=0;kd;k++) 49 | fscanf(fp, "%lf", &(phmm->mean[j][k])); 50 | fscanf(fp,"\n"); 51 | }//j 52 | fscanf(fp,"\n"); 53 | fscanf(fp, "var:\n"); 54 | for(j=0;jk;j++){ 55 | for(k=0;kd;k++) 56 | fscanf(fp, "%lf", &(phmm->var[j][k])); 57 | fscanf(fp,"\n"); 58 | }//j 59 | 60 | } 61 | void FreeHMM(HMM *phmm){ 62 | free_dvector(phmm->pi, 0, phmm->k); 63 | free_dmatrix(phmm->A, 0, phmm->k, 0, phmm->k); 64 | free_dvector(phmm->A_denom, 0, phmm->k); 65 | free_dmatrix(phmm->mean, 0, phmm->k, 0, phmm->d); 66 | free_dmatrix(phmm->var, 0, phmm->k, 0, phmm->d); 67 | free_dmatrix(phmm->sum_w,0, phmm->k, 0, phmm->d); 68 | free_dmatrix(phmm->M2, 0, phmm->k, 0, phmm->d); 69 | } 70 | void ResetHMM(HMM *phmm, int K, int D){ 71 | int i, j, k; 72 | double sum; 73 | phmm->n = 0; 74 | phmm->d = D; 75 | phmm->k = K; 76 | 77 | // A matrix 78 | for(i=0;ik;i++){ 79 | sum = 0.0; 80 | for(j=0;jk;j++){ 81 | phmm->A[i][j] = getrand(); 82 | sum += phmm->A[i][j]; 83 | }//j 84 | for(j=0;jk;j++) 85 | phmm->A[i][j] /= sum; 86 | }//i 87 | 88 | // initial pi 89 | sum = 0.0; 90 | for(i=0;ik;i++){ 91 | phmm->pi[i] = getrand(); 92 | sum += phmm->pi[i]; 93 | }//i 94 | for(i=0;ik;i++) 95 | phmm->pi[i] /= sum; 96 | 97 | // gaussian params - mean & variance 98 | for(j=0;jk;j++) { 99 | sum = 0.0; 100 | for(k=0;kd;k++){ 101 | phmm->mean[j][k] = getrand()*MAXVAL; 102 | phmm->var[j][k] = VARINI; 103 | }//k 104 | }//j 105 | 106 | //for incremental maintenance 107 | phmm->pi_denom = 0; 108 | for(i=0;ik; i++){ 109 | phmm->A_denom[i] = 0; 110 | for(k=0;kd;k++){ 111 | phmm->sum_w[i][k] = 0.0; 112 | phmm->M2[i][k] = 0.0; 113 | }//k 114 | }//i 115 | 116 | } 117 | void InitHMM(HMM *phmm, int K, int D){ 118 | int i, j, k; 119 | double sum; 120 | phmm->n = 0; 121 | phmm->d = D; 122 | phmm->k = K; 123 | 124 | // A matrix 125 | phmm->A = (double **) dmatrix(0, phmm->k, 0, phmm->k); 126 | for(i=0;ik;i++){ 127 | sum = 0.0; 128 | for(j=0;jk;j++){ 129 | phmm->A[i][j] = getrand()+ZERO; 130 | sum += phmm->A[i][j]; 131 | }//j 132 | for(j=0;jk;j++) 133 | phmm->A[i][j] /= sum; 134 | }//i 135 | 136 | // initial pi 137 | phmm->pi = (double *) dvector(0, phmm->k); 138 | sum = 0.0; 139 | for(i=0;ik;i++){ 140 | phmm->pi[i] = getrand()+ZERO; 141 | sum += phmm->pi[i]; 142 | }//i 143 | for(i=0;ik;i++) 144 | phmm->pi[i] /= sum; 145 | 146 | // gaussian params - mean & variance 147 | phmm->mean = (double **) dmatrix(0, phmm->k, 0, phmm->d); 148 | phmm->var = (double **) dmatrix(0, phmm->k, 0, phmm->d); 149 | for(j=0;jk;j++) { 150 | sum = 0.0; 151 | for(k=0;kd;k++){ 152 | phmm->mean[j][k] = getrand()*MAXVAL; 153 | phmm->var[j][k] = VARINI; 154 | }//k 155 | }//j 156 | 157 | //for incremental maintenance 158 | phmm->pi_denom = 0; 159 | phmm->A_denom = (double *) dvector(0, phmm->k); 160 | phmm->sum_w = (double **) dmatrix(0, phmm->k, 0, phmm->d); 161 | phmm->M2 = (double **) dmatrix(0, phmm->k, 0, phmm->d); 162 | for(i=0;ik; i++){ 163 | phmm->A_denom[i] = 0; 164 | for(k=0;kd;k++){ 165 | phmm->sum_w[i][k] = 0.0; 166 | phmm->M2[i][k] = 0.0; 167 | }//k 168 | }//i 169 | 170 | } 171 | // phmm1:from, phmm2:to 172 | void SubstHMM(HMM *phmm1, HMM *phmm2){ 173 | int i, j, k; 174 | phmm2->d = phmm1->d; 175 | phmm2->k = phmm1->k; 176 | phmm2->n = phmm1->n; 177 | for(i=0;ik;i++) 178 | for(j=0;jk;j++) 179 | phmm2->A[i][j] = phmm1->A[i][j]; 180 | for(j=0;jk;j++) 181 | for(k=0;kd;k++){ 182 | phmm2->mean[j][k] = phmm1->mean[j][k]; 183 | phmm2->var[j][k] = phmm1->var[j][k]; 184 | phmm2->sum_w[j][k]= phmm1->sum_w[j][k]; 185 | phmm2->M2[j][k] = phmm1->M2[j][k]; 186 | }//k 187 | for(i=0;ik;i++) 188 | phmm2->pi[i] = phmm1->pi[i]; 189 | //for incremental maintenance 190 | phmm2->pi_denom = phmm1->pi_denom; 191 | for (i = 0; i < phmm2->k; i++){ 192 | phmm2->A_denom[i] = phmm1->A_denom[i]; 193 | }//i 194 | } 195 | 196 | 197 | void PrintHMM(FILE *fp, HMM *phmm){ 198 | int i, j, k; 199 | fprintf(fp, "k= %d\n", phmm->k); 200 | fprintf(fp, "d= %d\n", phmm->d); 201 | fprintf(fp, "pi:\n"); 202 | for (i = 0; i < phmm->k; i++) 203 | fprintf(fp, "%f ", phmm->pi[i]); 204 | fprintf(fp, "\n"); 205 | fprintf(fp, "A:\n"); 206 | for (i = 0; i < phmm->k; i++) { 207 | for (j = 0; j < phmm->k; j++) 208 | fprintf(fp, "%f ", phmm->A[i][j] ); 209 | fprintf(fp, "\n"); 210 | }//i 211 | fprintf(fp, "mean:\n"); 212 | for (j = 0; j < phmm->k; j++) { 213 | for (k = 0; k < phmm->d; k++) 214 | fprintf(fp, "%f ", phmm->mean[j][k]); 215 | fprintf(fp, "\n"); 216 | }//j 217 | fprintf(fp, "var:\n"); 218 | for (j = 0; j < phmm->k; j++) { 219 | for (k = 0; k < phmm->d; k++) 220 | fprintf(fp, "%f ", phmm->var[j][k]); 221 | fprintf(fp, "\n"); 222 | }//j 223 | 224 | } 225 | 226 | //------------------// 227 | // HMM generator 228 | //------------------// 229 | void GenSequenceArray(HMM *phmm, int m, float **O, int *q){ 230 | int t; 231 | int q_t, o_t; 232 | q[0] = GenInitalState(phmm); 233 | GenGaussian(phmm, q[0], O[0]); 234 | for (t = 1; t < m; t++) { 235 | q[t] = GenNextState(phmm, q[t-1]); 236 | GenGaussian(phmm, q[t], O[t]); 237 | }//t 238 | //PrintSequence(stderr, m, phmm->d, O); 239 | } 240 | int GenInitalState(HMM *phmm){ 241 | int i; 242 | double cum = 0.0; 243 | double rand = getrand(); 244 | for(i=0;ik;i++){ 245 | cum += phmm->pi[i]; 246 | if(rand < cum + ZERO) 247 | return i; 248 | }//i 249 | PrintHMM(stderr, phmm); 250 | fprintf(stderr, "rand=%f, cum=%f\n", rand, cum); 251 | error("error","cannot assign (pi)"); 252 | return -1; 253 | } 254 | int GenNextState(HMM *phmm, int q_prev){ 255 | int j; 256 | double cum = 0.0; 257 | double rand = getrand(); 258 | for(j=0;jk;j++){ 259 | cum += phmm->A[q_prev][j]; 260 | if(rand < cum + ZERO) 261 | return j; 262 | }//j 263 | error("error","cannot assign (A)"); 264 | return -1; 265 | } 266 | 267 | double Gaussian(double mean, double var){ 268 | double rand; 269 | double X = 0.0; 270 | int i; 271 | /// Central Limit Thorem Method 272 | for (i=0;i=1.0) p=ONE; 287 | if(p<=0.0) p=ZERO; 288 | return p; 289 | } 290 | double pdfL(HMM *phmm, int kid, float *O){ 291 | int i; 292 | double p=0.0; 293 | for(i=0;id;i++) 294 | p += log(ZERO+GaussianPDF(phmm->mean[kid][i], phmm->var[kid][i], (double)O[i])); 295 | if(pd;i++) 308 | O[i] = (float) Gaussian(phmm->mean[q_t][i],phmm->var[q_t][i]); 309 | } 310 | 311 | -------------------------------------------------------------------------------- /codes/autoplait/plait.c: -------------------------------------------------------------------------------- 1 | /* 2 | * plait.c --- written by Yasuko Matsubara 3 | */ 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include "nrutil.h" 10 | #include "hmm.h" 11 | #include "tool.h" 12 | #include "autoplait.h" 13 | #define DBG 0 //1 14 | #define INFER_ITER_MIN 3 // #of min iter 15 | #define INFER_ITER_MAX 10 // #of max iter 16 | // minimum/maximum value for optimization 17 | #define MINK 1 // minimum number of K 18 | #define LM 0.1 // for sampling 19 | #define REGIME_R 0.03 20 | #define SEGMENT_R 0.03 21 | //output option 22 | #define PRINTHMM 1 23 | #define VITPATH 0 24 | 25 | PlaitWS *ws; 26 | /// main function /// 27 | void _plait(); 28 | void _regimeSplit(); 29 | void _cps(); 30 | 31 | /// find regimes & model estimation /// 32 | void _regimeEst_aux(); 33 | void _estimateHMM_k(); 34 | void _estimateHMM(); 35 | double _findCentroid(); 36 | int _findOptSeedLen(); 37 | void _removeNoise(); 38 | void _selectLargest(); 39 | 40 | /// compute Vit & MDL /// 41 | double _viterbi(); 42 | double _MDLtotal(); 43 | void _computeViterbiPath(Stack *s); //optional 44 | void _computeLhMDL(); 45 | double _MDL(); 46 | /// output /// 47 | void ReportPlait(); 48 | void _printSplit(); 49 | /// segment set --- get & release /// 50 | SegBox *_getS(); 51 | void _releaseS(); 52 | /// memory allocation /// 53 | void AllocPlait(); 54 | 55 | 56 | 57 | /// main function /// 58 | void Plait(PlaitWS *pws){ 59 | ws = pws; 60 | fprintf(stdout, "---------\n"); 61 | fprintf(stdout, "r|m|Cost \n"); 62 | fprintf(stdout, "---------\n"); 63 | _plait(); 64 | } 65 | /// main function /// 66 | 67 | void _plait(){ 68 | int k; 69 | double costT_s01; 70 | /// initialize Sx (X[0:m]) 71 | SegBox *Sx = _getS("", ""); 72 | Sx->costT= INF; 73 | AddStEd(Sx, 0, ws->x->m); 74 | _estimateHMM(Sx); 75 | Push(Sx,&ws->C); 76 | while(1){ 77 | ws->costT = _MDLtotal(&ws->Opt, &ws->C); 78 | Sx = Pop(&ws->C); 79 | if(Sx == NULL) break; 80 | /// s0 s1, create new segsets 81 | SegBox *s0 = _getS(Sx->label, "0"); 82 | SegBox *s1 = _getS(Sx->label, "1"); 83 | /// try to split regime: Sx->(s0,s1) 84 | _regimeSplit(Sx, s0, s1); 85 | double costT_s01=s0->costT+s1->costT; 86 | /// split or not 87 | if(costT_s01 + Sx->costT*REGIME_R < Sx->costT){ 88 | Push(s0, &ws->C); 89 | Push(s1, &ws->C); 90 | _releaseS(Sx); 91 | }else{ 92 | Push(Sx, &ws->Opt); 93 | _releaseS(s0); _releaseS(s1); 94 | }//if 95 | }//while 96 | } 97 | void _regimeSplit(SegBox *Sx, SegBox *s0, SegBox *s1){ 98 | int seedlen= (int)ceil(ws->lmax*LM); 99 | //int seedlen = _findOptSeedLen(Sx); 100 | // initialize HMM params 101 | _findCentroid(Sx, s0, s1, NSAMPLE, seedlen); 102 | _regimeEst_aux(Sx, s0, s1); 103 | if(s0->nSb==0 || s1->nSb==0) 104 | return; 105 | /// final model estimation 106 | _estimateHMM(s0); _estimateHMM(s1); 107 | #if(DBG) 108 | _printSplit(stderr, Sx, s0, s1); 109 | #endif 110 | } 111 | void _regimeEst_aux(SegBox *Sx, SegBox *s0, SegBox *s1){ 112 | int i; 113 | SegBox *opt0 = _getS("",""), *opt1 = _getS("",""); 114 | for(i=0;inSb==0 || s1->nSb==0) break; // avoid null inference 121 | /// if improving, update the opt seg-set 122 | double diff = (opt0->costT+opt1->costT) - (s0->costT+s1->costT); 123 | if(diff >0){ CopyStEd(s0, opt0); CopyStEd(s1, opt1); } 124 | // if not improving, then break iteration (efficient convergent) 125 | else if(i>=INFER_ITER_MIN) break; 126 | }//iter 127 | CopyStEd(opt0, s0); CopyStEd(opt1, s1); 128 | _releaseS(opt0); _releaseS(opt1); 129 | #if(DBG) 130 | fprintf(stderr, "=============== #iter:%d\n", i); 131 | #endif 132 | 133 | } 134 | 135 | 136 | 137 | void _selectLargest(SegBox *s){ 138 | int id = FindMaxStEd(s); 139 | int st = s->Sb[id].st; 140 | int len = s->Sb[id].len; 141 | ResetStEd(s); 142 | AddStEd(s, st, len); 143 | } 144 | 145 | int _findMinDiff(SegBox *s0, SegBox *s1, double *diffp){ 146 | double min = INF; 147 | int loc = -1; 148 | int i; 149 | for(i=0;inSb;i++){ 150 | int st = s0->Sb[i].st; 151 | int len = s0->Sb[i].len; 152 | double costC0 = _viterbi(&s0->model, s0->delta, st, len, &ws->vit); 153 | double costC1 = _viterbi(&s1->model, s1->delta, st, len, &ws->vit); 154 | double diff = costC1-costC0; 155 | if(min > diff) {loc = i; min = diff;} 156 | }//i 157 | *diffp = min; 158 | return loc; 159 | } 160 | double _scanMinDiff(SegBox *Sx, SegBox *s0, SegBox *s1){ 161 | double diff; 162 | int loc0 = _findMinDiff(s0, s1, &diff); 163 | int loc1 = _findMinDiff(s1, s0, &diff); 164 | if(loc0==-1 || loc1==-1) {return INF;} 165 | SegBox *tmp0 = _getS("",""); 166 | SegBox *tmp1 = _getS("",""); 167 | AddStEd(tmp0, s0->Sb[loc0].st, s0->Sb[loc0].len); 168 | AddStEd(tmp1, s1->Sb[loc1].st, s1->Sb[loc1].len); 169 | _estimateHMM_k(tmp0, MINK); 170 | _estimateHMM_k(tmp1, MINK); 171 | double costC = CPSearch(Sx, tmp0, tmp1, ws); 172 | _releaseS(tmp0); _releaseS(tmp1); 173 | //fprintf(stderr, "%d:%d, %d:%d, %.0f\n", s0->Sb[loc0].st, s0->Sb[loc0].len, s1->Sb[loc1].st, s1->Sb[loc1].len, costC); 174 | return costC; 175 | } 176 | 177 | // remove too noisy small segments 178 | void _removeNoise_aux(SegBox *Sx, SegBox *s0, SegBox *s1, double per){ 179 | if(per==0) return; 180 | int i; 181 | int mprev=INF; 182 | double th = ws->costT*per; 183 | while(mprev > s0->nSb+s1->nSb){ 184 | mprev = s0->nSb+s1->nSb; 185 | ///--- find minimum segment ---/// 186 | double diff0, diff1; 187 | int loc0 = _findMinDiff(s0, s1, &diff0); 188 | int loc1 = _findMinDiff(s1, s0, &diff1); 189 | double min; int id; 190 | if(diff0 < diff1){ min = diff0; id = 0; } else{ min = diff1; id = 1;} 191 | // check remove or not 192 | if(minSb[loc0].st, s0->Sb[loc0].len); RemoveStEd(s0,loc0); } 194 | else { AddStEd(s0, s1->Sb[loc1].st, s1->Sb[loc1].len); RemoveStEd(s1,loc1); } 195 | }//if 196 | }//while 197 | } 198 | 199 | void _removeNoise(SegBox *Sx, SegBox *s0, SegBox *s1){ 200 | if(s0->nSb<=1 && s1->nSb<=1) return; 201 | /// default pruning 202 | double per = SEGMENT_R; 203 | _removeNoise_aux(Sx, s0, s1, per); 204 | double costC=_scanMinDiff(Sx, s0, s1); 205 | /// opt: optimal segset 206 | SegBox *opt0= _getS("",""); SegBox *opt1 = _getS("",""); 207 | CopyStEd(s0, opt0); CopyStEd(s1, opt1); 208 | double prev=INF; 209 | /// find optimal pruning point 210 | while(per<=SEGMENT_R*10){ 211 | if(costC>=INF) break; 212 | per*=2; 213 | _removeNoise_aux(Sx, s0, s1, per); 214 | if(s0->nSb<=1 || s1->nSb<=1) break; 215 | costC=_scanMinDiff(Sx, s0, s1); 216 | if(prev > costC){ 217 | CopyStEd(s0, opt0); CopyStEd(s1, opt1); 218 | }else break; 219 | prev = costC; 220 | }//while 221 | //fprintf(stderr, "per:%f, cost: %.0f\n", per, costC); 222 | CopyStEd(opt0, s0); CopyStEd(opt1,s1); 223 | _releaseS(opt0); _releaseS(opt1); 224 | } 225 | 226 | void _cps(SegBox *Sx, SegBox *s0, SegBox *s1, int RM){ 227 | CPSearch(Sx, s0, s1, ws); 228 | if(RM) _removeNoise(Sx, s0, s1); 229 | _computeLhMDL(s0); _computeLhMDL(s1); 230 | } 231 | double _viterbi(HMM *phmm, double delta, int st, int len, VITERBI *vit){ 232 | double Lh = ViterbiL(phmm, len, ws->x->O+st, vit); 233 | if(delta<=0 || delta >= 1) error("not appropriate delta", "_computeLhMDL"); 234 | Lh += log(delta); // switch 235 | Lh += (len-1)*log(1.0-delta); // else (stay) 236 | double costC = -Lh/log(2.0); 237 | return costC; 238 | } 239 | 240 | 241 | void _estimateHMM_k(SegBox *s, int k){ 242 | if(kMAXK) k=MAXK; 243 | int wantKMEANS=1; 244 | int i,j; 245 | int n = s->nSb; 246 | /// if nSb is too big, use small size 247 | if(n > MAXBAUMN) 248 | n=MAXBAUMN; 249 | for(i=0;ix, s->Sb[i].st, s->Sb[i].len, &ws->x_tmp[i]); 251 | s->model.k = k; 252 | s->model.n = 0; 253 | ResetHMM(&s->model, k, ws->d); 254 | BaumWelch(&s->model, n, ws->x_tmp, &ws->baum, wantKMEANS); 255 | s->delta = (double)s->nSb/(double)s->len; //ws->lmax; 256 | } 257 | 258 | void _estimateHMM(SegBox *s){ 259 | s->costT = INF; 260 | int k, optk; 261 | for(k=MINK; k<=MAXK; k++){ 262 | double prev = s->costT; 263 | _estimateHMM_k(s, k); 264 | _computeLhMDL(s); 265 | if(s->costT > prev){ optk=k-1; break; } 266 | }//k 267 | if(optkMAXK) optk=MAXK; 269 | _estimateHMM_k(s, optk); 270 | _computeLhMDL(s); 271 | } 272 | 273 | int _findOptSeedLen(SegBox *Sx){ 274 | SegBox *s0= _getS("",""); 275 | SegBox *s1= _getS("",""); 276 | int iter1, iter2; 277 | double min=INF, prev=INF, pprev=INF; 278 | int len = FB; 279 | int minlen = Sx->Sb[FindMinStEd(Sx)].len; 280 | int maxlen = (int)ceil(ws->lmax*LM); 281 | int optlen= minlen; 282 | while((double)len <= maxlen && len <= minlen){ 283 | int lm = Sx->len; 284 | double cost = _findCentroid(Sx, s0, s1, NSAMPLE, len); 285 | cost += len*log_s(MINK); 286 | #if(DBG) 287 | fprintf(stderr, "%d %f\n", len, cost); 288 | #endif 289 | //if(cost> prev) break; prev = cost; optlen = len; 290 | if(pprev < prev && pprev < cost) {optlen=len/(2*2); break;} 291 | pprev=prev; prev = cost; 292 | if(cost< min){min = cost; optlen = len;}//if 293 | /// next length: current*2, i.e., 2^x; 294 | len*=2; 295 | }//while 296 | #if(DBG) 297 | fprintf(stderr, "optimal minimum length: %d\n", optlen); 298 | #endif 299 | _releaseS(s0); 300 | _releaseS(s1); 301 | return optlen; 302 | } 303 | double _findCentroid(SegBox *Sx, SegBox *s0, SegBox *s1, int nsamples, int seedlen){ 304 | int iter1, iter2; 305 | double costMin = INF; 306 | /// keep best seeds 307 | int s0stB, s1stB, s0lenB, s1lenB; //best 308 | int s0stC, s1stC, s0lenC, s1lenC; //current 309 | /// make sample set 310 | UniformSet(Sx, seedlen, nsamples, &ws->U); 311 | /// start uniform sampling 312 | for(iter1=0;iter1U.nSb;iter1++) 313 | for(iter2=iter1+1;iter2U.nSb;iter2++){ 314 | UniformSampling(Sx, s0, s1, seedlen, iter1, iter2, &ws->U); 315 | if(s0->nSb==0 || s1->nSb==0) continue; // not sufficient 316 | // copy positions 317 | s0stC=s0->Sb[0].st; s0lenC=s0->Sb[0].len; 318 | s1stC=s1->Sb[0].st; s1lenC=s1->Sb[0].len; 319 | // estimate HMM 320 | _estimateHMM_k(s0, MINK); 321 | _estimateHMM_k(s1, MINK); 322 | // cut point search 323 | _cps(Sx, s0, s1, YES); 324 | if(s0->nSb==0 || s1->nSb==0) continue; 325 | if(costMin > s0->costT + s1->costT){ 326 | // update best seeds 327 | costMin = s0->costT+s1->costT; 328 | s0stB=s0stC; s0lenB=s0lenC; 329 | s1stB=s1stC; s1lenB=s1lenC; 330 | }//if 331 | }//iter1,2 332 | if(costMin==INF){ 333 | //fprintf(stderr, "couldn't find good seeds...\n"); 334 | FixedSampling(Sx, s0, s1, seedlen); 335 | return INF; 336 | } 337 | ResetStEd(s0); ResetStEd(s1); 338 | AddStEd(s0, s0stB, s0lenB); 339 | AddStEd(s1, s1stB, s1lenB); 340 | return costMin; 341 | } 342 | 343 | 344 | /// compute Viterbi 345 | void _copyVitPath(int *q, int st, int len, VITERBI *vit){ 346 | int i; 347 | for(i=0;iq[i]; 349 | } 350 | void _computeViterbiPath(Stack *C){ 351 | int i,j; 352 | for(j=0;jidx;j++){ 353 | SegBox *s = C->s[j]; 354 | for(i=0;i < s->nSb; i++){ 355 | int st = s->Sb[i].st; 356 | int len = s->Sb[i].len; 357 | s->costC += _viterbi(&s->model, s->delta, st, len, &ws->vit); 358 | _copyVitPath(ws->q, st, len, &ws->vit); 359 | }//i 360 | }//j 361 | for(i=0;ilmax;i++) 362 | fprintf(stdout, "%d ", ws->q[i]); 363 | fprintf(stdout, "\n"); 364 | } 365 | 366 | /// compute MDL 367 | void _computeLhMDL(SegBox *s){ 368 | int i; 369 | if(s->nSb==0){ 370 | s->costC = INF; 371 | s->costT = INF; 372 | return; 373 | }//if 374 | s->costC = 0; 375 | for(i=0;i < s->nSb; i++){ 376 | int st = s->Sb[i].st; 377 | int len = s->Sb[i].len; 378 | s->costC += _viterbi(&s->model, s->delta, st, len, &ws->vit); 379 | }//i 380 | s->costT= _MDL(s); 381 | } 382 | double _MDL(SegBox *s){ 383 | double costT = 0.0; 384 | int k = s->model.k; 385 | int d = s->model.d; 386 | int m = s->len; 387 | int i; 388 | double costC = s->costC; 389 | double costM = costHMM(k, d); 390 | double costLen = 0.0; 391 | for(i=0;inSb;i++) 392 | costLen += log_2(s->Sb[i].len); 393 | costLen += m * log_2(k); 394 | costT = costC + costLen + costM; 395 | return costT; 396 | } 397 | double _MDLtotal(Stack *Opt, Stack *C){ 398 | int r = Opt->idx + C->idx; 399 | int m = mSegment(Opt) + mSegment(C); 400 | double cost = MDLSegment(Opt) + MDLSegment(C); 401 | double costT = cost + log_s(r) + log_s(m) + m*log_2(r) + FB*r*r; 402 | fprintf(stdout, "%d %d %.0f \n", r, m, costT); 403 | return costT; 404 | } 405 | 406 | /// output /// 407 | void _printSplit(FILE *fp, SegBox *Sx, SegBox *s0, SegBox *s1){ 408 | fprintf(fp, "[%s] %.0f(k:%d): {[%s] %.0f [%s] %.0f = %.0f(k:%d,%d)}\n", 409 | Sx->label, Sx->costT, Sx->model.k, 410 | s0->label, s0->costT, 411 | s1->label, s1->costT, 412 | s0->costT+s1->costT, s0->model.k, s1->model.k); 413 | /// segment 414 | fprintf(fp, "====\n"); 415 | PrintStEd(fp, s0); 416 | fprintf(fp, "-------------\n"); 417 | PrintStEd(fp, s1); 418 | fprintf(fp, "====\n"); 419 | } 420 | void SavePlait(PlaitWS *pws, char *fdir){ 421 | FILE *fp; 422 | int i; 423 | char filename[BUFSIZE]; 424 | ws = pws; 425 | /// print segment positions 426 | for(i=0;iOpt.idx;i++){ 427 | sprintf(filename, "%ssegment.%d",fdir, i); 428 | if(( fp = fopen (filename, "w") ) == NULL ) 429 | error("can not open:",filename); 430 | PrintStEd(fp, ws->Opt.s[i]); 431 | fclose(fp); 432 | }//i 433 | /// print regime labels 434 | sprintf(filename, "%ssegment.labels",fdir); 435 | if(( fp = fopen (filename, "w") ) == NULL ) 436 | error("can not open:",filename); 437 | for(i=0;iOpt.idx;i++) 438 | fprintf(fp, "%d\t\t%s\t\t%.0f\t\t%d \n", i, ws->Opt.s[i]->label, ws->Opt.s[i]->costT, ws->Opt.s[i]->model.k); 439 | fclose(fp); 440 | #if(PRINTHMM) 441 | /// print HMM params 442 | for(i=0;iOpt.idx;i++){ 443 | sprintf(filename, "%smodel.%d",fdir, i); 444 | if(( fp = fopen (filename, "w") ) == NULL ) 445 | error("can not open:",filename); 446 | PrintHMM(fp, &ws->Opt.s[i]->model); 447 | fclose(fp); 448 | }//i 449 | #endif 450 | #if(VITPATH) 451 | /// print vit path 452 | _computeViterbiPath(&ws->Opt); 453 | #endif 454 | } 455 | 456 | /// segment set --- get & release /// 457 | SegBox *_getS(char *parent, char *label){ 458 | SegBox *s = Pop(&ws->S); 459 | if(s==NULL) 460 | error("too small maxc", "_getS()"); 461 | ResetStEd(s); 462 | ResetHMM(&s->model, MAXK, ws->d); 463 | sprintf(s->label, "%s%s", parent, label); 464 | s->delta = 1.0/(double)ws->lmax; 465 | return s; 466 | } 467 | void _releaseS(SegBox *s){ 468 | Push(s, &ws->S); 469 | } 470 | 471 | /// memory alloc /// 472 | void _allocSegBox(SegBox *s, int n){ 473 | s->Sb = (SubS*)malloc(sizeof(SubS)*n); 474 | s->nSb = 0; 475 | s->optimal = 0; 476 | InitHMM(&s->model, MAXK, ws->d); 477 | } 478 | void AllocPlait(PlaitWS *pws){ 479 | fprintf(stderr, "memory allocation...\n"); 480 | ws = pws; 481 | ws->maxc = (int) (log(ws->lmax) + 20); 482 | ws->maxseg = (int) ws->lmax*0.1; 483 | // alloc Viterbi 484 | AllocViterbi(&ws->vit, ws->maxseg, ws->lmax, MAXK); 485 | AllocViterbi(&ws->vit2, ws->maxseg, ws->lmax, MAXK); 486 | ws->q = (int*) ivector(0, ws->lmax); 487 | AllocCPS(&ws->cps, MAXK, ws->lmax); 488 | // alloc Baum 489 | int n = ws->maxseg; 490 | if(n > MAXBAUMN) n = MAXBAUMN; 491 | ws->x_tmp = (Input*)malloc(sizeof(Input)*n); 492 | AllocBaum(&ws->baum, n, ws->lmax, MAXK, ws->d); 493 | int i; 494 | // alloc segbox 495 | ws->s = (SegBox*)malloc(sizeof(SegBox)*ws->maxc); 496 | for(i=0;imaxc;i++) 497 | _allocSegBox(&ws->s[i], ws->maxseg); 498 | /// candidate stack C 499 | ws->C.s =(SegBox**)malloc(sizeof(SegBox*)*ws->maxc); 500 | ws->C.idx = 0; 501 | ws->Opt.s =(SegBox**)malloc(sizeof(SegBox*)*ws->maxc); 502 | ws->Opt.idx = 0; 503 | /// segment set storage 504 | ws->S.s =(SegBox**)malloc(sizeof(SegBox*)*ws->maxc); 505 | ws->S.idx = 0; 506 | for(i=0;imaxc;i++) 507 | Push(&ws->s[i], &ws->S); 508 | /// for uniform sampling 509 | _allocSegBox(&ws->U, NSAMPLE); 510 | } 511 | 512 | 513 | 514 | -------------------------------------------------------------------------------- /codes/autoplait/_dat/flus: -------------------------------------------------------------------------------- 1 | 1.8000000e-01 0.0000000e+00 0.0000000e+00 2.0000000e-01 2 | 1.4000000e-01 0.0000000e+00 0.0000000e+00 2.1000000e-01 3 | 1.1000000e-01 0.0000000e+00 0.0000000e+00 1.5000000e-01 4 | 1.6000000e-01 0.0000000e+00 0.0000000e+00 1.5000000e-01 5 | 8.0000000e-02 0.0000000e+00 0.0000000e+00 1.5000000e-01 6 | 7.0000000e-02 1.1000000e-01 0.0000000e+00 1.2000000e-01 7 | 1.0000000e-01 0.0000000e+00 0.0000000e+00 1.2000000e-01 8 | 7.0000000e-02 0.0000000e+00 0.0000000e+00 1.2000000e-01 9 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 10 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 11 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 12 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 13 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 14 | 7.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 15 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 16 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 17 | 9.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 18 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 19 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 20 | 8.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 21 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 22 | 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 23 | 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 24 | 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 25 | 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 26 | 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 27 | 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 28 | 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 29 | 7.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 30 | 5.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 31 | 5.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 32 | 5.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 33 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 34 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 35 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 36 | 7.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 37 | 8.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 38 | 9.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 39 | 7.0000000e-02 0.0000000e+00 0.0000000e+00 1.0000000e-01 40 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 1.5000000e-01 41 | 8.0000000e-02 0.0000000e+00 0.0000000e+00 1.9000000e-01 42 | 7.0000000e-02 0.0000000e+00 0.0000000e+00 2.7000000e-01 43 | 9.0000000e-02 0.0000000e+00 0.0000000e+00 2.1000000e-01 44 | 8.0000000e-02 0.0000000e+00 0.0000000e+00 1.3000000e-01 45 | 9.0000000e-02 0.0000000e+00 0.0000000e+00 1.0000000e-01 46 | 8.0000000e-02 0.0000000e+00 0.0000000e+00 1.0000000e-01 47 | 8.0000000e-02 0.0000000e+00 0.0000000e+00 1.0000000e-01 48 | 9.0000000e-02 0.0000000e+00 2.4000000e-01 8.0000000e-02 49 | 7.0000000e-02 0.0000000e+00 0.0000000e+00 1.1000000e-01 50 | 9.0000000e-02 0.0000000e+00 0.0000000e+00 1.1000000e-01 51 | 1.2000000e-01 0.0000000e+00 0.0000000e+00 1.5000000e-01 52 | 2.2000000e-01 0.0000000e+00 0.0000000e+00 1.9000000e-01 53 | 1.4000000e-01 8.0000000e-02 0.0000000e+00 1.1000000e-01 54 | 1.6000000e-01 7.0000000e-02 0.0000000e+00 1.4000000e-01 55 | 1.2000000e-01 7.0000000e-02 0.0000000e+00 1.5000000e-01 56 | 1.5000000e-01 7.0000000e-02 2.2000000e-01 1.0000000e-01 57 | 2.0000000e-01 8.0000000e-02 2.3000000e-01 2.0000000e-01 58 | 1.7000000e-01 8.0000000e-02 2.5000000e-01 2.2000000e-01 59 | 2.0000000e-01 8.0000000e-02 2.6000000e-01 1.8000000e-01 60 | 2.1000000e-01 9.0000000e-02 2.8000000e-01 1.8000000e-01 61 | 1.7000000e-01 7.0000000e-02 2.3000000e-01 1.7000000e-01 62 | 1.5000000e-01 0.0000000e+00 2.3000000e-01 1.4000000e-01 63 | 9.0000000e-02 0.0000000e+00 0.0000000e+00 1.4000000e-01 64 | 1.5000000e-01 0.0000000e+00 0.0000000e+00 9.0000000e-02 65 | 1.2000000e-01 0.0000000e+00 0.0000000e+00 1.2000000e-01 66 | 9.0000000e-02 0.0000000e+00 0.0000000e+00 1.1000000e-01 67 | 1.1000000e-01 0.0000000e+00 0.0000000e+00 8.0000000e-02 68 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 6.0000000e-02 69 | 7.0000000e-02 0.0000000e+00 0.0000000e+00 6.0000000e-02 70 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 6.0000000e-02 71 | 7.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 72 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 73 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 74 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 75 | 4.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 76 | 4.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 77 | 4.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 78 | 5.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 79 | 4.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 80 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 81 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 82 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 83 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 84 | 8.0000000e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 85 | 7.0000000e-02 0.0000000e+00 0.0000000e+00 7.0000000e-02 86 | 5.0000000e-02 0.0000000e+00 0.0000000e+00 7.0000000e-02 87 | 5.0000000e-02 0.0000000e+00 0.0000000e+00 7.0000000e-02 88 | 3.0000000e-02 0.0000000e+00 0.0000000e+00 7.0000000e-02 89 | 4.0000000e-02 0.0000000e+00 0.0000000e+00 8.0000000e-02 90 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 1.0000000e-01 91 | 7.0000000e-02 6.0000000e-02 0.0000000e+00 1.2000000e-01 92 | 7.0000000e-02 6.0000000e-02 1.7000000e-01 2.3000000e-01 93 | 1.5000000e-01 6.0000000e-02 1.6000000e-01 3.1000000e-01 94 | 9.0000000e-02 8.0000000e-02 1.6000000e-01 2.0000000e-01 95 | 1.0000000e-01 1.1000000e-01 1.8000000e-01 1.9000000e-01 96 | 1.4000000e-01 9.0000000e-02 2.0000000e-01 2.1000000e-01 97 | 1.3000000e-01 6.0000000e-02 2.1000000e-01 2.4000000e-01 98 | 1.3000000e-01 8.0000000e-02 2.2000000e-01 1.9000000e-01 99 | 9.0000000e-02 6.0000000e-02 2.0000000e-01 1.2000000e-01 100 | 1.0000000e-01 6.0000000e-02 2.7000000e-01 1.2000000e-01 101 | 1.0000000e-01 6.0000000e-02 1.7000000e-01 1.5000000e-01 102 | 1.1000000e-01 6.0000000e-02 1.9000000e-01 1.2000000e-01 103 | 1.2000000e-01 7.0000000e-02 2.1000000e-01 1.3000000e-01 104 | 1.8000000e-01 8.0000000e-02 2.3000000e-01 1.3000000e-01 105 | 1.4000000e-01 8.0000000e-02 2.0000000e-01 1.4000000e-01 106 | 1.0000000e-01 7.0000000e-02 2.0000000e-01 6.0000000e-02 107 | 1.0000000e-01 4.0000000e-02 2.0000000e-01 1.4000000e-01 108 | 1.3000000e-01 6.0000000e-02 1.9000000e-01 1.6000000e-01 109 | 1.1000000e-01 5.0000000e-02 1.9000000e-01 1.3000000e-01 110 | 1.2000000e-01 5.0000000e-02 1.9000000e-01 1.4000000e-01 111 | 1.4000000e-01 5.0000000e-02 1.9000000e-01 1.2000000e-01 112 | 1.5000000e-01 9.0000000e-02 1.9000000e-01 1.7000000e-01 113 | 1.3000000e-01 5.0000000e-02 1.8000000e-01 1.1000000e-01 114 | 1.5000000e-01 6.0000000e-02 1.8000000e-01 1.5000000e-01 115 | 1.2000000e-01 5.0000000e-02 1.6000000e-01 1.4000000e-01 116 | 1.2000000e-01 5.0000000e-02 1.6000000e-01 9.0000000e-02 117 | 1.1000000e-01 5.0000000e-02 1.6000000e-01 1.0000000e-01 118 | 1.2000000e-01 5.0000000e-02 2.0000000e-01 7.0000000e-02 119 | 1.0000000e-01 4.0000000e-02 0.0000000e+00 5.0000000e-02 120 | 7.0000000e-02 4.0000000e-02 0.0000000e+00 8.0000000e-02 121 | 7.0000000e-02 4.0000000e-02 0.0000000e+00 6.0000000e-02 122 | 9.0000000e-02 5.0000000e-02 0.0000000e+00 1.0000000e-01 123 | 6.0000000e-02 5.0000000e-02 0.0000000e+00 7.0000000e-02 124 | 7.0000000e-02 4.0000000e-02 0.0000000e+00 5.0000000e-02 125 | 8.0000000e-02 0.0000000e+00 1.4000000e-01 7.0000000e-02 126 | 5.0000000e-02 0.0000000e+00 0.0000000e+00 9.0000000e-02 127 | 5.0000000e-02 0.0000000e+00 0.0000000e+00 7.0000000e-02 128 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 5.0000000e-02 129 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 5.0000000e-02 130 | 4.0000000e-02 0.0000000e+00 0.0000000e+00 7.0000000e-02 131 | 5.0000000e-02 0.0000000e+00 0.0000000e+00 4.0000000e-02 132 | 4.0000000e-02 0.0000000e+00 0.0000000e+00 4.0000000e-02 133 | 4.0000000e-02 0.0000000e+00 0.0000000e+00 4.0000000e-02 134 | 5.0000000e-02 0.0000000e+00 0.0000000e+00 4.0000000e-02 135 | 5.0000000e-02 0.0000000e+00 0.0000000e+00 4.0000000e-02 136 | 6.0000000e-02 0.0000000e+00 0.0000000e+00 5.0000000e-02 137 | 5.0000000e-02 0.0000000e+00 0.0000000e+00 5.0000000e-02 138 | 5.0000000e-02 4.0000000e-02 0.0000000e+00 5.0000000e-02 139 | 4.0000000e-02 0.0000000e+00 0.0000000e+00 5.0000000e-02 140 | 4.0000000e-02 0.0000000e+00 0.0000000e+00 5.0000000e-02 141 | 5.0000000e-02 0.0000000e+00 1.4000000e-01 5.0000000e-02 142 | 7.0000000e-02 0.0000000e+00 1.5000000e-01 7.0000000e-02 143 | 5.0000000e-02 0.0000000e+00 1.6000000e-01 7.0000000e-02 144 | 6.0000000e-02 0.0000000e+00 1.2000000e-01 1.0000000e-01 145 | 7.0000000e-02 0.0000000e+00 1.2000000e-01 8.0000000e-02 146 | 9.0000000e-02 3.0000000e-02 1.2000000e-01 9.0000000e-02 147 | 9.0000000e-02 4.0000000e-02 1.4000000e-01 1.3000000e-01 148 | 9.0000000e-02 5.0000000e-02 1.3000000e-01 1.2000000e-01 149 | 9.0000000e-02 5.0000000e-02 1.6000000e-01 6.0000000e-02 150 | 9.0000000e-02 5.0000000e-02 2.0000000e-01 1.3000000e-01 151 | 7.0000000e-02 5.0000000e-02 2.0000000e-01 7.0000000e-02 152 | 8.0000000e-02 4.0000000e-02 2.2000000e-01 1.0000000e-01 153 | 9.0000000e-02 4.0000000e-02 2.3000000e-01 7.0000000e-02 154 | 1.2000000e-01 4.0000000e-02 2.3000000e-01 1.1000000e-01 155 | 9.0000000e-02 4.0000000e-02 2.1000000e-01 1.1000000e-01 156 | 1.2000000e-01 6.0000000e-02 1.5000000e-01 9.0000000e-02 157 | 1.3000000e-01 5.0000000e-02 1.7000000e-01 1.0000000e-01 158 | 1.3000000e-01 4.0000000e-02 1.8000000e-01 1.2000000e-01 159 | 1.0000000e-01 4.0000000e-02 1.0000000e-01 9.0000000e-02 160 | 9.0000000e-02 4.0000000e-02 1.1000000e-01 8.0000000e-02 161 | 1.2000000e-01 4.0000000e-02 1.9000000e-01 1.2000000e-01 162 | 1.6000000e-01 7.0000000e-02 2.5000000e-01 1.1000000e-01 163 | 1.3000000e-01 8.0000000e-02 1.8000000e-01 1.2000000e-01 164 | 1.4000000e-01 5.0000000e-02 2.0000000e-01 1.4000000e-01 165 | 1.3000000e-01 5.0000000e-02 1.8000000e-01 7.0000000e-02 166 | 1.3000000e-01 5.0000000e-02 1.2000000e-01 1.1000000e-01 167 | 1.1000000e-01 3.0000000e-02 1.6000000e-01 7.0000000e-02 168 | 1.0000000e-01 3.0000000e-02 1.1000000e-01 9.0000000e-02 169 | 9.0000000e-02 3.0000000e-02 1.2000000e-01 5.0000000e-02 170 | 8.0000000e-02 3.0000000e-02 1.2000000e-01 5.0000000e-02 171 | 8.0000000e-02 3.0000000e-02 1.2000000e-01 6.0000000e-02 172 | 5.0000000e-02 3.0000000e-02 1.2000000e-01 5.0000000e-02 173 | 6.0000000e-02 3.0000000e-02 9.0000000e-02 3.0000000e-02 174 | 7.0000000e-02 4.0000000e-02 9.0000000e-02 4.0000000e-02 175 | 6.0000000e-02 3.0000000e-02 9.0000000e-02 3.0000000e-02 176 | 6.0000000e-02 3.0000000e-02 1.1000000e-01 3.0000000e-02 177 | 5.0000000e-02 3.0000000e-02 0.0000000e+00 3.0000000e-02 178 | 5.0000000e-02 3.0000000e-02 0.0000000e+00 4.0000000e-02 179 | 5.0000000e-02 3.0000000e-02 0.0000000e+00 5.0000000e-02 180 | 3.0000000e-02 0.0000000e+00 0.0000000e+00 3.0000000e-02 181 | 5.0000000e-02 0.0000000e+00 0.0000000e+00 2.0000000e-02 182 | 5.0000000e-02 0.0000000e+00 0.0000000e+00 2.0000000e-02 183 | 2.0000000e-02 0.0000000e+00 0.0000000e+00 3.0000000e-02 184 | 5.0000000e-02 0.0000000e+00 0.0000000e+00 3.0000000e-02 185 | 5.0000000e-02 0.0000000e+00 8.0000000e-02 2.0000000e-02 186 | 6.0000000e-02 0.0000000e+00 8.0000000e-02 2.0000000e-02 187 | 6.0000000e-02 0.0000000e+00 1.0000000e-01 4.0000000e-02 188 | 5.0000000e-02 0.0000000e+00 1.2000000e-01 3.0000000e-02 189 | 6.0000000e-02 2.0000000e-02 1.3000000e-01 5.0000000e-02 190 | 7.0000000e-02 3.0000000e-02 1.3000000e-01 3.0000000e-02 191 | 5.0000000e-02 2.0000000e-02 1.4000000e-01 4.0000000e-02 192 | 5.0000000e-02 2.0000000e-02 1.5000000e-01 5.0000000e-02 193 | 5.0000000e-02 2.0000000e-02 8.0000000e-02 4.0000000e-02 194 | 7.0000000e-02 2.0000000e-02 8.0000000e-02 7.0000000e-02 195 | 7.0000000e-02 3.0000000e-02 1.0000000e-01 9.0000000e-02 196 | 7.0000000e-02 3.0000000e-02 1.2000000e-01 7.0000000e-02 197 | 7.0000000e-02 4.0000000e-02 1.5000000e-01 7.0000000e-02 198 | 9.0000000e-02 3.0000000e-02 1.6000000e-01 8.0000000e-02 199 | 8.0000000e-02 3.0000000e-02 1.6000000e-01 9.0000000e-02 200 | 1.0000000e-01 3.0000000e-02 1.0000000e-01 1.1000000e-01 201 | 1.0000000e-01 3.0000000e-02 1.7000000e-01 7.0000000e-02 202 | 9.0000000e-02 4.0000000e-02 1.5000000e-01 1.2000000e-01 203 | 8.0000000e-02 3.0000000e-02 1.3000000e-01 7.0000000e-02 204 | 9.0000000e-02 4.0000000e-02 1.0000000e-01 1.1000000e-01 205 | 9.0000000e-02 3.0000000e-02 1.9000000e-01 1.0000000e-01 206 | 1.0000000e-01 5.0000000e-02 1.3000000e-01 8.0000000e-02 207 | 1.0000000e-01 8.0000000e-02 1.8000000e-01 6.0000000e-02 208 | 1.0000000e-01 6.0000000e-02 2.0000000e-01 8.0000000e-02 209 | 1.1000000e-01 7.0000000e-02 1.7000000e-01 1.2000000e-01 210 | 1.3000000e-01 7.0000000e-02 1.9000000e-01 9.0000000e-02 211 | 1.0000000e-01 8.0000000e-02 1.7000000e-01 1.0000000e-01 212 | 1.4000000e-01 5.0000000e-02 2.0000000e-01 1.2000000e-01 213 | 1.9000000e-01 8.0000000e-02 1.6000000e-01 1.3000000e-01 214 | 2.2000000e-01 8.0000000e-02 2.1000000e-01 2.1000000e-01 215 | 2.1000000e-01 7.0000000e-02 2.7000000e-01 2.0000000e-01 216 | 2.3000000e-01 8.0000000e-02 3.2000000e-01 2.2000000e-01 217 | 2.3000000e-01 7.0000000e-02 2.8000000e-01 1.8000000e-01 218 | 1.9000000e-01 6.0000000e-02 2.2000000e-01 1.0000000e-01 219 | 1.4000000e-01 5.0000000e-02 2.4000000e-01 1.0000000e-01 220 | 1.4000000e-01 4.0000000e-02 1.3000000e-01 9.0000000e-02 221 | 1.1000000e-01 4.0000000e-02 1.6000000e-01 9.0000000e-02 222 | 1.0000000e-01 3.0000000e-02 1.1000000e-01 7.0000000e-02 223 | 1.0000000e-01 2.0000000e-02 7.0000000e-02 7.0000000e-02 224 | 7.0000000e-02 3.0000000e-02 1.1000000e-01 5.0000000e-02 225 | 6.0000000e-02 3.0000000e-02 1.5000000e-01 7.0000000e-02 226 | 7.0000000e-02 3.0000000e-02 1.2000000e-01 4.0000000e-02 227 | 7.0000000e-02 2.0000000e-02 1.1000000e-01 4.0000000e-02 228 | 7.0000000e-02 2.0000000e-02 1.0000000e-01 5.0000000e-02 229 | 4.0000000e-02 2.0000000e-02 1.3000000e-01 6.0000000e-02 230 | 6.0000000e-02 2.0000000e-02 9.0000000e-02 3.0000000e-02 231 | 5.0000000e-02 2.0000000e-02 6.0000000e-02 4.0000000e-02 232 | 4.0000000e-02 3.0000000e-02 8.0000000e-02 4.0000000e-02 233 | 5.0000000e-02 2.0000000e-02 9.0000000e-02 3.0000000e-02 234 | 5.0000000e-02 3.0000000e-02 6.0000000e-02 2.0000000e-02 235 | 5.0000000e-02 2.0000000e-02 7.0000000e-02 3.0000000e-02 236 | 4.0000000e-02 2.0000000e-02 9.0000000e-02 4.0000000e-02 237 | 6.0000000e-02 2.0000000e-02 6.0000000e-02 3.0000000e-02 238 | 4.0000000e-02 2.0000000e-02 6.0000000e-02 4.0000000e-02 239 | 6.0000000e-02 2.0000000e-02 6.0000000e-02 4.0000000e-02 240 | 5.0000000e-02 2.0000000e-02 9.0000000e-02 3.0000000e-02 241 | 5.0000000e-02 2.0000000e-02 1.0000000e-01 4.0000000e-02 242 | 5.0000000e-02 2.0000000e-02 7.0000000e-02 3.0000000e-02 243 | 5.0000000e-02 2.0000000e-02 1.0000000e-01 6.0000000e-02 244 | 5.0000000e-02 3.0000000e-02 8.0000000e-02 6.0000000e-02 245 | 5.0000000e-02 3.0000000e-02 8.0000000e-02 4.0000000e-02 246 | 6.0000000e-02 3.0000000e-02 8.0000000e-02 5.0000000e-02 247 | 8.0000000e-02 2.0000000e-02 1.4000000e-01 6.0000000e-02 248 | 7.0000000e-02 4.0000000e-02 1.1000000e-01 6.0000000e-02 249 | 7.0000000e-02 3.0000000e-02 1.0000000e-01 6.0000000e-02 250 | 8.0000000e-02 3.0000000e-02 1.6000000e-01 7.0000000e-02 251 | 7.0000000e-02 6.0000000e-02 1.5000000e-01 1.0000000e-01 252 | 9.0000000e-02 8.0000000e-02 1.3000000e-01 9.0000000e-02 253 | 1.1000000e-01 8.0000000e-02 2.1000000e-01 8.0000000e-02 254 | 1.0000000e-01 1.3000000e-01 1.7000000e-01 8.0000000e-02 255 | 1.0000000e-01 1.2000000e-01 1.4000000e-01 1.0000000e-01 256 | 8.0000000e-02 1.0000000e-01 1.6000000e-01 9.0000000e-02 257 | 1.2000000e-01 1.2000000e-01 1.3000000e-01 9.0000000e-02 258 | 9.0000000e-02 1.2000000e-01 1.7000000e-01 9.0000000e-02 259 | 1.1000000e-01 1.8000000e-01 2.0000000e-01 1.2000000e-01 260 | 1.0000000e-01 1.8000000e-01 1.3000000e-01 1.2000000e-01 261 | 1.2000000e-01 1.7000000e-01 1.9000000e-01 8.0000000e-02 262 | 1.0000000e-01 1.3000000e-01 1.4000000e-01 8.0000000e-02 263 | 1.1000000e-01 1.1000000e-01 1.1000000e-01 1.0000000e-01 264 | 1.1000000e-01 7.0000000e-02 1.5000000e-01 1.0000000e-01 265 | 1.3000000e-01 5.0000000e-02 1.3000000e-01 7.0000000e-02 266 | 1.4000000e-01 6.0000000e-02 1.8000000e-01 1.3000000e-01 267 | 1.4000000e-01 5.0000000e-02 1.9000000e-01 1.4000000e-01 268 | 1.5000000e-01 5.0000000e-02 2.0000000e-01 1.2000000e-01 269 | 1.6000000e-01 8.0000000e-02 2.5000000e-01 1.4000000e-01 270 | 1.5000000e-01 6.0000000e-02 2.0000000e-01 1.4000000e-01 271 | 1.4000000e-01 6.0000000e-02 1.9000000e-01 1.0000000e-01 272 | 1.2000000e-01 7.0000000e-02 1.6000000e-01 8.0000000e-02 273 | 1.0000000e-01 5.0000000e-02 1.4000000e-01 7.0000000e-02 274 | 9.0000000e-02 7.0000000e-02 1.1000000e-01 6.0000000e-02 275 | 8.0000000e-02 5.0000000e-02 1.1000000e-01 6.0000000e-02 276 | 6.0000000e-02 8.0000000e-02 1.0000000e-01 6.0000000e-02 277 | 9.0000000e-02 1.0000000e-01 1.2000000e-01 5.0000000e-02 278 | 1.0000000e+00 1.0000000e+00 7.7000000e-01 1.0000000e+00 279 | 4.5000000e-01 5.1000000e-01 5.2000000e-01 3.0000000e-01 280 | 2.6000000e-01 2.6000000e-01 3.6000000e-01 1.7000000e-01 281 | 2.6000000e-01 2.7000000e-01 3.7000000e-01 1.4000000e-01 282 | 2.0000000e-01 2.3000000e-01 3.0000000e-01 1.2000000e-01 283 | 2.2000000e-01 2.1000000e-01 2.4000000e-01 1.0000000e-01 284 | 2.6000000e-01 2.3000000e-01 2.5000000e-01 1.3000000e-01 285 | 2.6000000e-01 2.5000000e-01 2.7000000e-01 1.4000000e-01 286 | 2.3000000e-01 2.0000000e-01 3.1000000e-01 1.3000000e-01 287 | 2.3000000e-01 2.3000000e-01 2.2000000e-01 1.0000000e-01 288 | 2.3000000e-01 4.7000000e-01 3.9000000e-01 9.0000000e-02 289 | 3.4000000e-01 5.1000000e-01 4.6000000e-01 1.3000000e-01 290 | 3.1000000e-01 4.6000000e-01 4.4000000e-01 1.4000000e-01 291 | 3.1000000e-01 2.8000000e-01 4.2000000e-01 1.5000000e-01 292 | 2.9000000e-01 3.2000000e-01 3.5000000e-01 1.8000000e-01 293 | 4.6000000e-01 3.6000000e-01 3.8000000e-01 7.7000000e-01 294 | 3.0000000e-01 2.4000000e-01 3.4000000e-01 3.2000000e-01 295 | 3.0000000e-01 2.1000000e-01 3.1000000e-01 2.3000000e-01 296 | 2.7000000e-01 2.2000000e-01 3.0000000e-01 2.3000000e-01 297 | 3.5000000e-01 2.2000000e-01 4.7000000e-01 2.5000000e-01 298 | 4.1000000e-01 2.9000000e-01 4.6000000e-01 2.8000000e-01 299 | 4.3000000e-01 3.5000000e-01 5.1000000e-01 2.7000000e-01 300 | 4.6000000e-01 3.3000000e-01 5.6000000e-01 2.8000000e-01 301 | 5.4000000e-01 3.6000000e-01 6.8000000e-01 3.2000000e-01 302 | 5.9000000e-01 3.8000000e-01 6.7000000e-01 3.9000000e-01 303 | 7.8000000e-01 4.7000000e-01 9.0000000e-01 4.6000000e-01 304 | 8.7000000e-01 4.6000000e-01 1.0000000e+00 5.3000000e-01 305 | 7.8000000e-01 3.8000000e-01 8.1000000e-01 4.3000000e-01 306 | 5.7000000e-01 3.0000000e-01 7.1000000e-01 3.3000000e-01 307 | 4.1000000e-01 2.9000000e-01 5.3000000e-01 2.6000000e-01 308 | 3.0000000e-01 2.5000000e-01 3.8000000e-01 1.7000000e-01 309 | 2.6000000e-01 2.0000000e-01 3.7000000e-01 2.1000000e-01 310 | 2.3000000e-01 1.9000000e-01 3.4000000e-01 1.8000000e-01 311 | 2.0000000e-01 1.4000000e-01 2.6000000e-01 1.4000000e-01 312 | 2.0000000e-01 1.2000000e-01 2.9000000e-01 1.4000000e-01 313 | 1.7000000e-01 1.6000000e-01 2.7000000e-01 1.4000000e-01 314 | 1.6000000e-01 1.3000000e-01 2.1000000e-01 1.1000000e-01 315 | 1.3000000e-01 7.0000000e-02 2.5000000e-01 1.0000000e-01 316 | 1.4000000e-01 9.0000000e-02 1.6000000e-01 8.0000000e-02 317 | 1.2000000e-01 6.0000000e-02 1.6000000e-01 1.1000000e-01 318 | 1.0000000e-01 7.0000000e-02 1.9000000e-01 1.0000000e-01 319 | 1.2000000e-01 6.0000000e-02 1.9000000e-01 8.0000000e-02 320 | 1.3000000e-01 6.0000000e-02 1.7000000e-01 1.0000000e-01 321 | 1.0000000e-01 6.0000000e-02 1.9000000e-01 1.0000000e-01 322 | 1.0000000e-01 5.0000000e-02 1.5000000e-01 8.0000000e-02 323 | 1.0000000e-01 5.0000000e-02 1.4000000e-01 7.0000000e-02 324 | 1.0000000e-01 4.0000000e-02 1.2000000e-01 7.0000000e-02 325 | 9.0000000e-02 3.0000000e-02 1.4000000e-01 6.0000000e-02 326 | 8.0000000e-02 5.0000000e-02 1.6000000e-01 6.0000000e-02 327 | 9.0000000e-02 4.0000000e-02 1.5000000e-01 6.0000000e-02 328 | 6.0000000e-02 3.0000000e-02 1.1000000e-01 6.0000000e-02 329 | 8.0000000e-02 4.0000000e-02 1.2000000e-01 5.0000000e-02 330 | 9.0000000e-02 3.0000000e-02 1.2000000e-01 4.0000000e-02 331 | 7.0000000e-02 3.0000000e-02 9.0000000e-02 5.0000000e-02 332 | 7.0000000e-02 3.0000000e-02 1.1000000e-01 5.0000000e-02 333 | 7.0000000e-02 2.0000000e-02 1.2000000e-01 5.0000000e-02 334 | 6.0000000e-02 2.0000000e-02 9.0000000e-02 5.0000000e-02 335 | 6.0000000e-02 3.0000000e-02 6.0000000e-02 5.0000000e-02 336 | 6.0000000e-02 2.0000000e-02 9.0000000e-02 5.0000000e-02 337 | 6.0000000e-02 1.0000000e-02 7.0000000e-02 5.0000000e-02 338 | 6.0000000e-02 2.0000000e-02 8.0000000e-02 4.0000000e-02 339 | 7.0000000e-02 2.0000000e-02 9.0000000e-02 6.0000000e-02 340 | 7.0000000e-02 2.0000000e-02 1.1000000e-01 4.0000000e-02 341 | 7.0000000e-02 4.0000000e-02 9.0000000e-02 5.0000000e-02 342 | 7.0000000e-02 2.0000000e-02 1.2000000e-01 6.0000000e-02 343 | 8.0000000e-02 3.0000000e-02 1.3000000e-01 6.0000000e-02 344 | 8.0000000e-02 2.0000000e-02 1.1000000e-01 6.0000000e-02 345 | 8.0000000e-02 4.0000000e-02 1.3000000e-01 1.1000000e-01 346 | 8.0000000e-02 3.0000000e-02 1.3000000e-01 8.0000000e-02 347 | 8.0000000e-02 3.0000000e-02 1.3000000e-01 6.0000000e-02 348 | 9.0000000e-02 3.0000000e-02 1.1000000e-01 9.0000000e-02 349 | 9.0000000e-02 3.0000000e-02 1.6000000e-01 1.0000000e-01 350 | 1.1000000e-01 4.0000000e-02 1.2000000e-01 1.1000000e-01 351 | 1.3000000e-01 5.0000000e-02 1.7000000e-01 1.1000000e-01 352 | 1.4000000e-01 4.0000000e-02 2.0000000e-01 1.0000000e-01 353 | 1.2000000e-01 4.0000000e-02 1.8000000e-01 1.3000000e-01 354 | 1.2000000e-01 5.0000000e-02 2.1000000e-01 1.1000000e-01 355 | 1.3000000e-01 5.0000000e-02 1.9000000e-01 1.1000000e-01 356 | 1.1000000e-01 4.0000000e-02 1.6000000e-01 1.2000000e-01 357 | 1.4000000e-01 5.0000000e-02 2.1000000e-01 1.0000000e-01 358 | 1.3000000e-01 6.0000000e-02 1.6000000e-01 1.1000000e-01 359 | 1.3000000e-01 6.0000000e-02 2.1000000e-01 1.2000000e-01 360 | 1.2000000e-01 5.0000000e-02 1.5000000e-01 1.0000000e-01 361 | 1.4000000e-01 7.0000000e-02 2.1000000e-01 1.3000000e-01 362 | 1.5000000e-01 7.0000000e-02 2.2000000e-01 1.4000000e-01 363 | 1.8000000e-01 1.0000000e-01 3.0000000e-01 1.5000000e-01 364 | 2.1000000e-01 1.9000000e-01 3.0000000e-01 1.5000000e-01 365 | 2.4000000e-01 2.2000000e-01 4.6000000e-01 2.1000000e-01 366 | 2.4000000e-01 1.9000000e-01 4.0000000e-01 2.0000000e-01 367 | 2.0000000e-01 1.6000000e-01 3.4000000e-01 1.7000000e-01 368 | 2.1000000e-01 1.4000000e-01 3.2000000e-01 1.8000000e-01 369 | 2.2000000e-01 1.3000000e-01 2.9000000e-01 1.7000000e-01 370 | 2.3000000e-01 1.3000000e-01 3.2000000e-01 1.9000000e-01 371 | 2.3000000e-01 1.1000000e-01 3.4000000e-01 1.9000000e-01 372 | 2.7000000e-01 8.0000000e-02 3.2000000e-01 2.0000000e-01 373 | 2.2000000e-01 8.0000000e-02 2.8000000e-01 1.4000000e-01 374 | 1.9000000e-01 6.0000000e-02 2.6000000e-01 1.5000000e-01 375 | 1.6000000e-01 6.0000000e-02 1.9000000e-01 1.2000000e-01 376 | 1.3000000e-01 5.0000000e-02 1.9000000e-01 9.0000000e-02 377 | 1.4000000e-01 5.0000000e-02 1.9000000e-01 1.0000000e-01 378 | 1.1000000e-01 5.0000000e-02 1.8000000e-01 9.0000000e-02 379 | 1.0000000e-01 4.0000000e-02 1.7000000e-01 7.0000000e-02 380 | 9.0000000e-02 4.0000000e-02 1.4000000e-01 6.0000000e-02 381 | 9.0000000e-02 3.0000000e-02 1.2000000e-01 6.0000000e-02 382 | 8.0000000e-02 3.0000000e-02 1.6000000e-01 6.0000000e-02 383 | 8.0000000e-02 4.0000000e-02 1.0000000e-01 7.0000000e-02 384 | 7.0000000e-02 3.0000000e-02 1.2000000e-01 5.0000000e-02 385 | 6.0000000e-02 3.0000000e-02 1.1000000e-01 5.0000000e-02 386 | 7.0000000e-02 3.0000000e-02 1.1000000e-01 6.0000000e-02 387 | 7.0000000e-02 2.0000000e-02 1.2000000e-01 6.0000000e-02 388 | 7.0000000e-02 2.0000000e-02 9.0000000e-02 6.0000000e-02 389 | 7.0000000e-02 2.0000000e-02 1.4000000e-01 6.0000000e-02 390 | 7.0000000e-02 3.0000000e-02 1.0000000e-01 7.0000000e-02 391 | 7.0000000e-02 2.0000000e-02 1.1000000e-01 5.0000000e-02 392 | 7.0000000e-02 2.0000000e-02 1.0000000e-01 5.0000000e-02 393 | 6.0000000e-02 3.0000000e-02 9.0000000e-02 6.0000000e-02 394 | 7.0000000e-02 3.0000000e-02 1.1000000e-01 7.0000000e-02 395 | 7.0000000e-02 2.0000000e-02 1.3000000e-01 5.0000000e-02 396 | 6.0000000e-02 2.0000000e-02 1.4000000e-01 5.0000000e-02 397 | 6.0000000e-02 3.0000000e-02 1.4000000e-01 5.0000000e-02 398 | 7.0000000e-02 2.0000000e-02 1.1000000e-01 6.0000000e-02 399 | 7.0000000e-02 2.0000000e-02 1.1000000e-01 6.0000000e-02 400 | 7.0000000e-02 3.0000000e-02 1.2000000e-01 6.0000000e-02 401 | 8.0000000e-02 3.0000000e-02 1.1000000e-01 7.0000000e-02 402 | 9.0000000e-02 4.0000000e-02 1.5000000e-01 9.0000000e-02 403 | 1.1000000e-01 5.0000000e-02 1.9000000e-01 1.1000000e-01 404 | 1.1000000e-01 4.0000000e-02 1.8000000e-01 1.3000000e-01 405 | 1.2000000e-01 4.0000000e-02 2.0000000e-01 1.1000000e-01 406 | 1.3000000e-01 5.0000000e-02 2.5000000e-01 1.2000000e-01 407 | 1.3000000e-01 6.0000000e-02 2.2000000e-01 1.2000000e-01 408 | 1.3000000e-01 6.0000000e-02 2.3000000e-01 1.3000000e-01 409 | 1.4000000e-01 5.0000000e-02 2.3000000e-01 1.3000000e-01 410 | 1.2000000e-01 5.0000000e-02 1.9000000e-01 1.2000000e-01 411 | 1.2000000e-01 6.0000000e-02 2.1000000e-01 1.2000000e-01 412 | 1.1000000e-01 5.0000000e-02 2.0000000e-01 1.0000000e-01 413 | 1.3000000e-01 6.0000000e-02 2.8000000e-01 1.2000000e-01 414 | 1.2000000e-01 5.0000000e-02 2.1000000e-01 1.3000000e-01 415 | 1.3000000e-01 4.0000000e-02 2.1000000e-01 1.4000000e-01 416 | 1.4000000e-01 6.0000000e-02 1.8000000e-01 1.3000000e-01 417 | 1.4000000e-01 6.0000000e-02 2.6000000e-01 1.6000000e-01 418 | 1.3000000e-01 6.0000000e-02 2.6000000e-01 1.6000000e-01 419 | 1.4000000e-01 5.0000000e-02 2.2000000e-01 1.3000000e-01 420 | 1.0000000e-01 5.0000000e-02 1.9000000e-01 1.2000000e-01 421 | 1.3000000e-01 5.0000000e-02 1.9000000e-01 1.1000000e-01 422 | 1.2000000e-01 5.0000000e-02 2.3000000e-01 1.3000000e-01 423 | 1.2000000e-01 6.0000000e-02 2.0000000e-01 1.4000000e-01 424 | 1.5000000e-01 7.0000000e-02 2.8000000e-01 1.5000000e-01 425 | 1.6000000e-01 7.0000000e-02 2.6000000e-01 1.4000000e-01 426 | 1.4000000e-01 7.0000000e-02 2.5000000e-01 1.4000000e-01 427 | 1.5000000e-01 5.0000000e-02 2.3000000e-01 1.3000000e-01 428 | 1.5000000e-01 5.0000000e-02 2.2000000e-01 1.2000000e-01 429 | 1.4000000e-01 5.0000000e-02 2.1000000e-01 1.0000000e-01 430 | 1.1000000e-01 5.0000000e-02 1.6000000e-01 1.1000000e-01 431 | 1.1000000e-01 4.0000000e-02 1.9000000e-01 9.0000000e-02 432 | 1.0000000e-01 5.0000000e-02 1.6000000e-01 1.1000000e-01 433 | 1.0000000e-01 5.0000000e-02 1.6000000e-01 9.0000000e-02 434 | 9.0000000e-02 4.0000000e-02 1.2000000e-01 8.0000000e-02 435 | 9.0000000e-02 3.0000000e-02 1.7000000e-01 8.0000000e-02 436 | 9.0000000e-02 3.0000000e-02 1.2000000e-01 7.0000000e-02 437 | 8.0000000e-02 3.0000000e-02 1.5000000e-01 9.0000000e-02 438 | 9.0000000e-02 2.0000000e-02 1.7000000e-01 7.0000000e-02 439 | 8.0000000e-02 3.0000000e-02 1.3000000e-01 6.0000000e-02 440 | 8.0000000e-02 3.0000000e-02 1.5000000e-01 7.0000000e-02 441 | 9.0000000e-02 3.0000000e-02 1.2000000e-01 7.0000000e-02 442 | 8.0000000e-02 2.0000000e-02 1.3000000e-01 6.0000000e-02 443 | 8.0000000e-02 2.0000000e-02 1.4000000e-01 6.0000000e-02 444 | 7.0000000e-02 3.0000000e-02 1.3000000e-01 6.0000000e-02 445 | 7.0000000e-02 3.0000000e-02 1.2000000e-01 7.0000000e-02 446 | 9.0000000e-02 2.0000000e-02 1.5000000e-01 7.0000000e-02 447 | 9.0000000e-02 2.0000000e-02 1.2000000e-01 7.0000000e-02 448 | 8.0000000e-02 2.0000000e-02 1.6000000e-01 7.0000000e-02 449 | 9.0000000e-02 3.0000000e-02 1.7000000e-01 8.0000000e-02 450 | 9.0000000e-02 2.0000000e-02 1.7000000e-01 9.0000000e-02 451 | 8.0000000e-02 3.0000000e-02 1.4000000e-01 9.0000000e-02 452 | 1.0000000e-01 3.0000000e-02 1.7000000e-01 9.0000000e-02 453 | 8.0000000e-02 3.0000000e-02 1.7000000e-01 9.0000000e-02 454 | 1.1000000e-01 4.0000000e-02 2.0000000e-01 1.1000000e-01 455 | 1.3000000e-01 4.0000000e-02 1.8000000e-01 1.2000000e-01 456 | 1.2000000e-01 4.0000000e-02 2.3000000e-01 1.2000000e-01 457 | 1.3000000e-01 5.0000000e-02 2.4000000e-01 1.4000000e-01 458 | 1.4000000e-01 5.0000000e-02 2.4000000e-01 1.4000000e-01 459 | 1.4000000e-01 5.0000000e-02 2.5000000e-01 1.4000000e-01 460 | 1.4000000e-01 5.0000000e-02 2.6000000e-01 1.3000000e-01 461 | 1.4000000e-01 5.0000000e-02 2.3000000e-01 1.3000000e-01 462 | 1.3000000e-01 5.0000000e-02 2.4000000e-01 1.4000000e-01 463 | 1.5000000e-01 5.0000000e-02 2.6000000e-01 1.4000000e-01 464 | 1.5000000e-01 5.0000000e-02 2.3000000e-01 1.6000000e-01 465 | 1.7000000e-01 5.0000000e-02 3.1000000e-01 1.8000000e-01 466 | 2.1000000e-01 8.0000000e-02 3.2000000e-01 2.2000000e-01 467 | 2.4000000e-01 8.0000000e-02 4.2000000e-01 2.4000000e-01 468 | 3.0000000e-01 1.0000000e-01 4.5000000e-01 2.6000000e-01 469 | 3.8000000e-01 1.3000000e-01 4.9000000e-01 3.5000000e-01 470 | 3.7000000e-01 1.4000000e-01 5.6000000e-01 4.0000000e-01 471 | 4.7000000e-01 2.2000000e-01 7.9000000e-01 5.4000000e-01 472 | 5.8000000e-01 2.6000000e-01 8.6000000e-01 5.1000000e-01 473 | -------------------------------------------------------------------------------- /codes/autoplait/_dat/games: -------------------------------------------------------------------------------- 1 | 3.1944444e-01 4.3283582e-01 0.0000000e+00 0.0000000e+00 2 | 2.2222222e-01 3.1343284e-01 0.0000000e+00 0.0000000e+00 3 | 1.9444444e-01 2.5373134e-01 0.0000000e+00 0.0000000e+00 4 | 1.6666667e-01 2.2388060e-01 0.0000000e+00 0.0000000e+00 5 | 9.7222222e-02 1.3432836e-01 0.0000000e+00 0.0000000e+00 6 | 6.9444444e-02 1.1940299e-01 0.0000000e+00 0.0000000e+00 7 | 9.7222222e-02 1.3432836e-01 0.0000000e+00 0.0000000e+00 8 | 8.3333333e-02 1.1940299e-01 0.0000000e+00 0.0000000e+00 9 | 6.9444444e-02 1.0447761e-01 0.0000000e+00 0.0000000e+00 10 | 9.7222222e-02 1.4925373e-01 0.0000000e+00 0.0000000e+00 11 | 5.5555556e-02 7.4626866e-02 0.0000000e+00 0.0000000e+00 12 | 8.3333333e-02 1.6417910e-01 0.0000000e+00 0.0000000e+00 13 | 5.5555556e-02 7.4626866e-02 0.0000000e+00 0.0000000e+00 14 | 1.1111111e-01 1.4925373e-01 0.0000000e+00 0.0000000e+00 15 | 4.1666667e-02 7.4626866e-02 0.0000000e+00 0.0000000e+00 16 | 4.1666667e-02 2.9850746e-02 0.0000000e+00 0.0000000e+00 17 | 4.1666667e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 18 | 2.7777778e-02 2.9850746e-02 0.0000000e+00 0.0000000e+00 19 | 4.1666667e-02 1.4925373e-02 0.0000000e+00 0.0000000e+00 20 | 4.1666667e-02 0.0000000e+00 0.0000000e+00 0.0000000e+00 21 | 4.1666667e-02 1.4925373e-02 0.0000000e+00 0.0000000e+00 22 | 6.9444444e-02 5.9701493e-02 0.0000000e+00 0.0000000e+00 23 | 5.5555556e-02 2.9850746e-02 0.0000000e+00 0.0000000e+00 24 | 6.9444444e-02 2.9850746e-02 0.0000000e+00 0.0000000e+00 25 | 9.7222222e-02 8.9552239e-02 0.0000000e+00 0.0000000e+00 26 | 9.7222222e-02 1.0447761e-01 0.0000000e+00 0.0000000e+00 27 | 1.1111111e-01 1.3432836e-01 0.0000000e+00 0.0000000e+00 28 | 1.2500000e-01 1.4925373e-01 0.0000000e+00 0.0000000e+00 29 | 1.1111111e-01 1.3432836e-01 0.0000000e+00 0.0000000e+00 30 | 9.7222222e-02 1.3432836e-01 0.0000000e+00 0.0000000e+00 31 | 9.7222222e-02 1.1940299e-01 0.0000000e+00 0.0000000e+00 32 | 1.1111111e-01 1.0447761e-01 0.0000000e+00 0.0000000e+00 33 | 9.7222222e-02 8.9552239e-02 0.0000000e+00 0.0000000e+00 34 | 9.7222222e-02 8.9552239e-02 0.0000000e+00 0.0000000e+00 35 | 9.7222222e-02 5.9701493e-02 0.0000000e+00 0.0000000e+00 36 | 9.7222222e-02 7.4626866e-02 0.0000000e+00 0.0000000e+00 37 | 1.3888889e-01 5.9701493e-02 0.0000000e+00 0.0000000e+00 38 | 1.6666667e-01 1.1940299e-01 0.0000000e+00 0.0000000e+00 39 | 1.5277778e-01 1.1940299e-01 0.0000000e+00 0.0000000e+00 40 | 1.5277778e-01 1.1940299e-01 0.0000000e+00 0.0000000e+00 41 | 2.0833333e-01 1.7910448e-01 0.0000000e+00 0.0000000e+00 42 | 1.9444444e-01 1.6417910e-01 0.0000000e+00 0.0000000e+00 43 | 2.0833333e-01 2.3880597e-01 0.0000000e+00 0.0000000e+00 44 | 2.2222222e-01 2.9850746e-01 0.0000000e+00 0.0000000e+00 45 | 3.8888889e-01 3.1343284e-01 0.0000000e+00 0.0000000e+00 46 | 3.0555556e-01 2.3880597e-01 0.0000000e+00 0.0000000e+00 47 | 3.0555556e-01 3.4328358e-01 0.0000000e+00 0.0000000e+00 48 | 2.6388889e-01 2.5373134e-01 0.0000000e+00 0.0000000e+00 49 | 2.6388889e-01 2.9850746e-01 0.0000000e+00 0.0000000e+00 50 | 2.7777778e-01 3.1343284e-01 0.0000000e+00 0.0000000e+00 51 | 4.0277778e-01 4.9253731e-01 0.0000000e+00 0.0000000e+00 52 | 5.6944444e-01 7.1641791e-01 0.0000000e+00 0.0000000e+00 53 | 3.1944444e-01 3.7313433e-01 0.0000000e+00 0.0000000e+00 54 | 1.9444444e-01 2.3880597e-01 0.0000000e+00 0.0000000e+00 55 | 1.6666667e-01 1.9402985e-01 0.0000000e+00 0.0000000e+00 56 | 1.2500000e-01 1.4925373e-01 0.0000000e+00 0.0000000e+00 57 | 1.1111111e-01 1.3432836e-01 0.0000000e+00 0.0000000e+00 58 | 9.7222222e-02 1.1940299e-01 0.0000000e+00 0.0000000e+00 59 | 1.3888889e-01 1.0447761e-01 0.0000000e+00 0.0000000e+00 60 | 1.1111111e-01 1.0447761e-01 0.0000000e+00 0.0000000e+00 61 | 8.3333333e-02 8.9552239e-02 0.0000000e+00 0.0000000e+00 62 | 8.3333333e-02 1.1940299e-01 0.0000000e+00 0.0000000e+00 63 | 6.9444444e-02 8.9552239e-02 0.0000000e+00 0.0000000e+00 64 | 1.1111111e-01 1.7910448e-01 0.0000000e+00 0.0000000e+00 65 | 1.1111111e-01 1.7910448e-01 0.0000000e+00 0.0000000e+00 66 | 8.3333333e-02 1.1940299e-01 0.0000000e+00 0.0000000e+00 67 | 9.7222222e-02 4.4776119e-02 0.0000000e+00 0.0000000e+00 68 | 6.9444444e-02 4.4776119e-02 0.0000000e+00 0.0000000e+00 69 | 9.7222222e-02 4.4776119e-02 0.0000000e+00 0.0000000e+00 70 | 1.3888889e-01 8.9552239e-02 0.0000000e+00 0.0000000e+00 71 | 4.5833333e-01 1.0447761e-01 0.0000000e+00 0.0000000e+00 72 | 4.8611111e-01 4.9253731e-01 0.0000000e+00 0.0000000e+00 73 | 2.2222222e-01 2.3880597e-01 0.0000000e+00 0.0000000e+00 74 | 1.5277778e-01 1.7910448e-01 0.0000000e+00 0.0000000e+00 75 | 1.5277778e-01 1.0447761e-01 0.0000000e+00 0.0000000e+00 76 | 1.3888889e-01 1.3432836e-01 0.0000000e+00 0.0000000e+00 77 | 1.2500000e-01 1.3432836e-01 0.0000000e+00 0.0000000e+00 78 | 1.1111111e-01 1.4925373e-01 0.0000000e+00 0.0000000e+00 79 | 9.7222222e-02 1.4925373e-01 0.0000000e+00 0.0000000e+00 80 | 1.1111111e-01 1.1940299e-01 0.0000000e+00 0.0000000e+00 81 | 1.1111111e-01 1.4925373e-01 0.0000000e+00 0.0000000e+00 82 | 1.1111111e-01 1.4925373e-01 0.0000000e+00 0.0000000e+00 83 | 8.3333333e-02 1.3432836e-01 0.0000000e+00 0.0000000e+00 84 | 9.7222222e-02 1.1940299e-01 0.0000000e+00 0.0000000e+00 85 | 1.2500000e-01 1.1940299e-01 0.0000000e+00 0.0000000e+00 86 | 9.7222222e-02 1.0447761e-01 0.0000000e+00 0.0000000e+00 87 | 8.3333333e-02 7.4626866e-02 0.0000000e+00 0.0000000e+00 88 | 5.5555556e-02 4.4776119e-02 0.0000000e+00 0.0000000e+00 89 | 8.3333333e-02 5.9701493e-02 0.0000000e+00 0.0000000e+00 90 | 9.7222222e-02 7.4626866e-02 0.0000000e+00 0.0000000e+00 91 | 9.7222222e-02 7.4626866e-02 0.0000000e+00 0.0000000e+00 92 | 1.3888889e-01 8.9552239e-02 0.0000000e+00 0.0000000e+00 93 | 1.3888889e-01 1.1940299e-01 0.0000000e+00 0.0000000e+00 94 | 1.2500000e-01 1.0447761e-01 0.0000000e+00 0.0000000e+00 95 | 1.8055556e-01 1.3432836e-01 0.0000000e+00 0.0000000e+00 96 | 1.9444444e-01 1.7910448e-01 0.0000000e+00 0.0000000e+00 97 | 2.6388889e-01 1.7910448e-01 0.0000000e+00 0.0000000e+00 98 | 3.7500000e-01 1.9402985e-01 0.0000000e+00 0.0000000e+00 99 | 1.0000000e+00 3.4328358e-01 0.0000000e+00 0.0000000e+00 100 | 6.9444444e-01 2.8358209e-01 0.0000000e+00 0.0000000e+00 101 | 5.5555556e-01 2.6865672e-01 0.0000000e+00 0.0000000e+00 102 | 4.5833333e-01 2.3880597e-01 0.0000000e+00 0.0000000e+00 103 | 5.0000000e-01 3.4328358e-01 0.0000000e+00 0.0000000e+00 104 | 6.3888889e-01 6.2686567e-01 0.0000000e+00 0.0000000e+00 105 | 3.8888889e-01 3.4328358e-01 0.0000000e+00 0.0000000e+00 106 | 2.2222222e-01 1.9402985e-01 0.0000000e+00 0.0000000e+00 107 | 1.6666667e-01 1.1940299e-01 0.0000000e+00 0.0000000e+00 108 | 1.3888889e-01 1.1940299e-01 0.0000000e+00 0.0000000e+00 109 | 1.3888889e-01 1.0447761e-01 0.0000000e+00 0.0000000e+00 110 | 8.3333333e-02 2.9850746e-02 0.0000000e+00 0.0000000e+00 111 | 8.3333333e-02 5.9701493e-02 0.0000000e+00 0.0000000e+00 112 | 9.7222222e-02 8.9552239e-02 0.0000000e+00 0.0000000e+00 113 | 8.3333333e-02 5.9701493e-02 0.0000000e+00 0.0000000e+00 114 | 6.9444444e-02 2.9850746e-02 0.0000000e+00 0.0000000e+00 115 | 8.3333333e-02 8.9552239e-02 0.0000000e+00 0.0000000e+00 116 | 1.1111111e-01 7.4626866e-02 0.0000000e+00 0.0000000e+00 117 | 9.7222222e-02 5.9701493e-02 0.0000000e+00 0.0000000e+00 118 | 8.3333333e-02 4.4776119e-02 0.0000000e+00 0.0000000e+00 119 | 1.1111111e-01 1.1940299e-01 0.0000000e+00 0.0000000e+00 120 | 8.3333333e-02 7.4626866e-02 0.0000000e+00 0.0000000e+00 121 | 2.7777778e-02 1.4925373e-02 5.0000000e-02 0.0000000e+00 122 | 4.1666667e-02 2.9850746e-02 5.0000000e-02 0.0000000e+00 123 | 4.1666667e-02 1.6417910e-01 1.5000000e-01 0.0000000e+00 124 | 4.1666667e-02 5.9701493e-02 1.1000000e-01 0.0000000e+00 125 | 4.1666667e-02 4.4776119e-02 7.0000000e-02 0.0000000e+00 126 | 5.5555556e-02 4.4776119e-02 7.0000000e-02 0.0000000e+00 127 | 4.1666667e-02 2.9850746e-02 6.0000000e-02 0.0000000e+00 128 | 2.7777778e-02 1.4925373e-02 5.0000000e-02 0.0000000e+00 129 | 2.7777778e-02 2.9850746e-02 4.0000000e-02 0.0000000e+00 130 | 4.1666667e-02 5.9701493e-02 4.0000000e-02 0.0000000e+00 131 | 5.5555556e-02 7.4626866e-02 5.0000000e-02 0.0000000e+00 132 | 5.5555556e-02 4.4776119e-02 5.0000000e-02 0.0000000e+00 133 | 5.5555556e-02 7.4626866e-02 5.0000000e-02 0.0000000e+00 134 | 5.5555556e-02 7.4626866e-02 5.0000000e-02 0.0000000e+00 135 | 6.9444444e-02 7.4626866e-02 6.0000000e-02 0.0000000e+00 136 | 5.5555556e-02 8.9552239e-02 6.0000000e-02 0.0000000e+00 137 | 5.5555556e-02 1.0447761e-01 7.0000000e-02 0.0000000e+00 138 | 5.5555556e-02 8.9552239e-02 7.0000000e-02 0.0000000e+00 139 | 5.5555556e-02 1.0447761e-01 7.0000000e-02 0.0000000e+00 140 | 4.1666667e-02 8.9552239e-02 8.0000000e-02 0.0000000e+00 141 | 2.7777778e-02 2.9850746e-02 1.5000000e-01 0.0000000e+00 142 | 4.1666667e-02 5.9701493e-02 1.3000000e-01 0.0000000e+00 143 | 5.5555556e-02 7.4626866e-02 1.0000000e-01 0.0000000e+00 144 | 6.9444444e-02 1.1940299e-01 1.0000000e-01 0.0000000e+00 145 | 6.9444444e-02 1.3432836e-01 1.3000000e-01 0.0000000e+00 146 | 1.1111111e-01 1.4925373e-01 1.3000000e-01 0.0000000e+00 147 | 1.1111111e-01 1.9402985e-01 1.2000000e-01 0.0000000e+00 148 | 1.3888889e-01 2.3880597e-01 1.8000000e-01 0.0000000e+00 149 | 1.5277778e-01 3.7313433e-01 2.4000000e-01 0.0000000e+00 150 | 2.3611111e-01 7.7611940e-01 4.5000000e-01 0.0000000e+00 151 | 3.7500000e-01 5.9701493e-01 7.9000000e-01 0.0000000e+00 152 | 2.9166667e-01 3.5820896e-01 6.2000000e-01 0.0000000e+00 153 | 2.7777778e-01 3.5820896e-01 8.1000000e-01 0.0000000e+00 154 | 2.6388889e-01 3.2835821e-01 7.9000000e-01 0.0000000e+00 155 | 3.1944444e-01 3.8805970e-01 7.0000000e-01 0.0000000e+00 156 | 6.1111111e-01 6.8656716e-01 7.1000000e-01 0.0000000e+00 157 | 3.6111111e-01 4.7761194e-01 5.0000000e-01 0.0000000e+00 158 | 2.0833333e-01 2.2388060e-01 3.7000000e-01 0.0000000e+00 159 | 1.5277778e-01 1.9402985e-01 3.5000000e-01 0.0000000e+00 160 | 1.1111111e-01 1.6417910e-01 3.4000000e-01 0.0000000e+00 161 | 8.3333333e-02 1.1940299e-01 3.1000000e-01 0.0000000e+00 162 | 6.9444444e-02 8.9552239e-02 2.8000000e-01 0.0000000e+00 163 | 6.9444444e-02 1.1940299e-01 2.9000000e-01 0.0000000e+00 164 | 8.3333333e-02 1.3432836e-01 2.8000000e-01 0.0000000e+00 165 | 4.1666667e-02 1.0447761e-01 2.6000000e-01 0.0000000e+00 166 | 4.1666667e-02 1.0447761e-01 2.6000000e-01 0.0000000e+00 167 | 2.7777778e-02 1.0447761e-01 2.5000000e-01 0.0000000e+00 168 | 5.5555556e-02 3.7313433e-01 2.7000000e-01 0.0000000e+00 169 | 1.6666667e-01 3.5820896e-01 2.6000000e-01 0.0000000e+00 170 | 1.3888889e-01 2.9850746e-01 2.7000000e-01 0.0000000e+00 171 | 1.1111111e-01 2.0895522e-01 2.8000000e-01 0.0000000e+00 172 | 4.1666667e-02 1.0447761e-01 2.4000000e-01 0.0000000e+00 173 | 2.7777778e-02 7.4626866e-02 2.3000000e-01 0.0000000e+00 174 | 5.5555556e-02 1.1940299e-01 2.5000000e-01 0.0000000e+00 175 | 5.5555556e-02 8.9552239e-02 2.3000000e-01 0.0000000e+00 176 | 5.5555556e-02 1.0447761e-01 2.2000000e-01 0.0000000e+00 177 | 2.7777778e-02 1.0447761e-01 2.3000000e-01 0.0000000e+00 178 | 4.1666667e-02 1.1940299e-01 2.7000000e-01 0.0000000e+00 179 | 2.7777778e-02 1.1940299e-01 2.6000000e-01 0.0000000e+00 180 | 2.7777778e-02 1.0447761e-01 2.5000000e-01 0.0000000e+00 181 | 4.1666667e-02 1.1940299e-01 2.6000000e-01 0.0000000e+00 182 | 5.5555556e-02 1.6417910e-01 2.9000000e-01 0.0000000e+00 183 | 8.3333333e-02 1.7910448e-01 2.9000000e-01 0.0000000e+00 184 | 9.7222222e-02 2.5373134e-01 3.2000000e-01 0.0000000e+00 185 | 8.3333333e-02 2.2388060e-01 3.1000000e-01 0.0000000e+00 186 | 6.9444444e-02 2.2388060e-01 3.0000000e-01 0.0000000e+00 187 | 5.5555556e-02 1.7910448e-01 2.9000000e-01 0.0000000e+00 188 | 8.3333333e-02 1.4925373e-01 2.9000000e-01 0.0000000e+00 189 | 8.3333333e-02 1.6417910e-01 2.9000000e-01 0.0000000e+00 190 | 9.7222222e-02 1.4925373e-01 2.7000000e-01 0.0000000e+00 191 | 6.9444444e-02 1.3432836e-01 2.6000000e-01 0.0000000e+00 192 | 5.5555556e-02 1.1940299e-01 2.5000000e-01 0.0000000e+00 193 | 5.5555556e-02 8.9552239e-02 2.3000000e-01 0.0000000e+00 194 | 6.9444444e-02 8.9552239e-02 2.4000000e-01 0.0000000e+00 195 | 1.8055556e-01 1.3432836e-01 2.5000000e-01 0.0000000e+00 196 | 1.5277778e-01 1.3432836e-01 2.7000000e-01 0.0000000e+00 197 | 1.1111111e-01 1.9402985e-01 3.0000000e-01 0.0000000e+00 198 | 9.7222222e-02 1.7910448e-01 2.9000000e-01 0.0000000e+00 199 | 9.7222222e-02 2.3880597e-01 3.0000000e-01 0.0000000e+00 200 | 1.1111111e-01 2.8358209e-01 3.6000000e-01 0.0000000e+00 201 | 1.2500000e-01 2.9850746e-01 4.0000000e-01 2.0000000e-02 202 | 1.6666667e-01 3.1343284e-01 4.8000000e-01 3.0000000e-02 203 | 2.3611111e-01 4.6268657e-01 6.4000000e-01 1.0000000e-02 204 | 2.0833333e-01 4.0298507e-01 6.5000000e-01 1.0000000e-02 205 | 2.3611111e-01 4.3283582e-01 6.8000000e-01 1.0000000e-02 206 | 2.2222222e-01 4.7761194e-01 6.5000000e-01 1.0000000e-02 207 | 2.5000000e-01 5.5223881e-01 6.6000000e-01 1.0000000e-02 208 | 5.2777778e-01 1.0000000e+00 9.0000000e-01 1.0000000e-02 209 | 4.0277778e-01 7.4626866e-01 7.1000000e-01 1.0000000e-02 210 | 1.6666667e-01 4.4776119e-01 4.8000000e-01 1.0000000e-02 211 | 9.7222222e-02 3.7313433e-01 4.0000000e-01 1.0000000e-02 212 | 8.3333333e-02 3.1343284e-01 3.7000000e-01 1.0000000e-02 213 | 5.5555556e-02 3.1343284e-01 3.5000000e-01 1.0000000e-02 214 | 5.5555556e-02 2.8358209e-01 3.3000000e-01 1.0000000e-02 215 | 4.1666667e-02 2.6865672e-01 3.2000000e-01 1.0000000e-02 216 | 5.5555556e-02 2.9850746e-01 3.1000000e-01 1.0000000e-02 217 | 2.7777778e-02 2.3880597e-01 3.0000000e-01 1.0000000e-02 218 | 2.7777778e-02 2.2388060e-01 2.9000000e-01 1.0000000e-02 219 | 2.7777778e-02 2.5373134e-01 3.3000000e-01 1.0000000e-02 220 | 5.5555556e-02 3.1343284e-01 3.4000000e-01 1.0000000e-02 221 | 6.9444444e-02 3.5820896e-01 3.5000000e-01 1.0000000e-02 222 | 4.1666667e-02 2.5373134e-01 3.2000000e-01 1.0000000e-02 223 | 0.0000000e+00 2.3880597e-01 3.6000000e-01 1.0000000e-02 224 | 0.0000000e+00 2.5373134e-01 3.9000000e-01 1.0000000e-02 225 | 2.7777778e-02 2.2388060e-01 4.1000000e-01 1.0000000e-02 226 | 1.3888889e-01 3.8805970e-01 4.7000000e-01 1.0000000e-02 227 | 6.9444444e-02 2.8358209e-01 4.0000000e-01 1.0000000e-02 228 | 4.1666667e-02 2.3880597e-01 3.8000000e-01 1.0000000e-02 229 | 1.3888889e-02 2.2388060e-01 4.4000000e-01 1.0000000e-02 230 | 2.7777778e-02 2.3880597e-01 4.2000000e-01 1.0000000e-02 231 | 1.3888889e-02 1.9402985e-01 3.8000000e-01 1.0000000e-02 232 | 1.3888889e-02 2.5373134e-01 3.6000000e-01 1.0000000e-02 233 | 2.7777778e-02 2.9850746e-01 3.8000000e-01 1.0000000e-02 234 | 4.1666667e-02 3.1343284e-01 3.9000000e-01 1.0000000e-02 235 | 5.5555556e-02 3.7313433e-01 3.9000000e-01 1.0000000e-02 236 | 5.5555556e-02 3.5820896e-01 3.8000000e-01 1.0000000e-02 237 | 9.7222222e-02 3.5820896e-01 3.9000000e-01 1.0000000e-02 238 | 6.9444444e-02 3.1343284e-01 3.6000000e-01 1.0000000e-02 239 | 5.5555556e-02 3.1343284e-01 3.5000000e-01 1.0000000e-02 240 | 6.9444444e-02 3.2835821e-01 3.5000000e-01 1.0000000e-02 241 | 6.9444444e-02 2.6865672e-01 3.5000000e-01 1.0000000e-02 242 | 4.1666667e-02 2.8358209e-01 3.3000000e-01 1.0000000e-02 243 | 2.7777778e-02 2.6865672e-01 3.1000000e-01 1.0000000e-02 244 | 4.1666667e-02 2.5373134e-01 3.1000000e-01 1.0000000e-02 245 | 2.7777778e-02 2.0895522e-01 2.9000000e-01 1.0000000e-02 246 | 4.1666667e-02 2.2388060e-01 2.9000000e-01 2.0000000e-02 247 | 4.1666667e-02 2.0895522e-01 2.9000000e-01 5.0000000e-02 248 | 1.6666667e-01 2.5373134e-01 3.1000000e-01 2.0000000e-02 249 | 6.9444444e-02 2.6865672e-01 3.0000000e-01 2.0000000e-02 250 | 8.3333333e-02 3.2835821e-01 3.0000000e-01 2.0000000e-02 251 | 9.7222222e-02 3.1343284e-01 3.2000000e-01 3.0000000e-02 252 | 1.2500000e-01 3.2835821e-01 3.5000000e-01 2.0000000e-02 253 | 1.3888889e-01 3.2835821e-01 3.9000000e-01 2.0000000e-02 254 | 1.9444444e-01 3.5820896e-01 4.6000000e-01 2.0000000e-02 255 | 3.1944444e-01 3.7313433e-01 5.1000000e-01 2.0000000e-02 256 | 3.1944444e-01 4.4776119e-01 6.3000000e-01 2.0000000e-02 257 | 2.9166667e-01 4.6268657e-01 6.5000000e-01 2.0000000e-02 258 | 2.9166667e-01 4.7761194e-01 6.8000000e-01 2.0000000e-02 259 | 3.0555556e-01 5.0746269e-01 6.9000000e-01 2.0000000e-02 260 | 5.6944444e-01 8.8059701e-01 9.8000000e-01 2.0000000e-02 261 | 5.4166667e-01 8.5074627e-01 1.0000000e+00 2.0000000e-02 262 | 2.6388889e-01 4.9253731e-01 6.2000000e-01 2.0000000e-02 263 | 1.9444444e-01 3.7313433e-01 4.9000000e-01 2.0000000e-02 264 | 1.6666667e-01 3.4328358e-01 4.5000000e-01 2.0000000e-02 265 | 1.5277778e-01 3.2835821e-01 4.1000000e-01 2.0000000e-02 266 | 1.2500000e-01 2.8358209e-01 3.6000000e-01 2.0000000e-02 267 | 9.7222222e-02 2.6865672e-01 3.4000000e-01 2.0000000e-02 268 | 1.2500000e-01 2.5373134e-01 3.5000000e-01 3.0000000e-02 269 | 1.1111111e-01 2.6865672e-01 3.3000000e-01 2.0000000e-02 270 | 1.1111111e-01 2.0895522e-01 3.1000000e-01 2.0000000e-02 271 | 8.3333333e-02 1.9402985e-01 3.1000000e-01 2.0000000e-02 272 | 8.3333333e-02 2.2388060e-01 2.9000000e-01 2.0000000e-02 273 | 8.3333333e-02 1.7910448e-01 3.0000000e-01 2.0000000e-02 274 | 6.9444444e-02 1.9402985e-01 3.1000000e-01 2.0000000e-02 275 | 1.1111111e-01 2.6865672e-01 3.2000000e-01 2.0000000e-02 276 | 8.3333333e-02 2.2388060e-01 3.1000000e-01 2.0000000e-02 277 | 4.1666667e-02 1.6417910e-01 2.6000000e-01 2.0000000e-02 278 | 5.5555556e-02 2.0895522e-01 2.7000000e-01 3.0000000e-02 279 | 4.1666667e-02 1.6417910e-01 2.6000000e-01 3.0000000e-02 280 | 2.7777778e-02 1.6417910e-01 2.5000000e-01 3.0000000e-02 281 | 5.5555556e-02 1.9402985e-01 2.8000000e-01 3.0000000e-02 282 | 6.9444444e-02 1.9402985e-01 2.8000000e-01 3.0000000e-02 283 | 1.5277778e-01 2.5373134e-01 3.1000000e-01 4.0000000e-02 284 | 1.2500000e-01 2.5373134e-01 3.1000000e-01 4.0000000e-02 285 | 1.8055556e-01 2.2388060e-01 3.0000000e-01 3.0000000e-02 286 | 9.7222222e-02 2.5373134e-01 3.0000000e-01 4.0000000e-02 287 | 9.7222222e-02 2.8358209e-01 3.0000000e-01 4.0000000e-02 288 | 1.1111111e-01 2.6865672e-01 3.1000000e-01 4.0000000e-02 289 | 1.1111111e-01 2.6865672e-01 3.0000000e-01 4.0000000e-02 290 | 1.2500000e-01 3.1343284e-01 3.3000000e-01 4.0000000e-02 291 | 1.2500000e-01 2.8358209e-01 3.6000000e-01 4.0000000e-02 292 | 1.3888889e-01 3.1343284e-01 3.4000000e-01 4.0000000e-02 293 | 1.6666667e-01 2.9850746e-01 3.3000000e-01 4.0000000e-02 294 | 1.3888889e-01 4.7761194e-01 3.1000000e-01 4.0000000e-02 295 | 1.2500000e-01 4.0298507e-01 2.9000000e-01 4.0000000e-02 296 | 1.1111111e-01 4.7761194e-01 2.8000000e-01 4.0000000e-02 297 | 9.7222222e-02 4.0298507e-01 2.8000000e-01 5.0000000e-02 298 | 9.7222222e-02 3.5820896e-01 2.5000000e-01 5.0000000e-02 299 | 1.2500000e-01 3.2835821e-01 2.7000000e-01 5.0000000e-02 300 | 1.1111111e-01 3.1343284e-01 2.8000000e-01 5.0000000e-02 301 | 1.1111111e-01 3.2835821e-01 2.8000000e-01 6.0000000e-02 302 | 1.1111111e-01 2.9850746e-01 2.9000000e-01 6.0000000e-02 303 | 1.2500000e-01 2.9850746e-01 2.9000000e-01 7.0000000e-02 304 | 1.6666667e-01 3.2835821e-01 3.1000000e-01 8.0000000e-02 305 | 2.0833333e-01 3.5820896e-01 3.4000000e-01 9.0000000e-02 306 | 2.9166667e-01 4.0298507e-01 3.9000000e-01 9.0000000e-02 307 | 2.5000000e-01 3.8805970e-01 4.6000000e-01 8.0000000e-02 308 | 2.7777778e-01 4.7761194e-01 5.7000000e-01 8.0000000e-02 309 | 2.3611111e-01 4.0298507e-01 6.0000000e-01 8.0000000e-02 310 | 2.2222222e-01 4.7761194e-01 6.3000000e-01 8.0000000e-02 311 | 2.5000000e-01 5.2238806e-01 6.4000000e-01 8.0000000e-02 312 | 4.4444444e-01 8.3582090e-01 8.4000000e-01 8.0000000e-02 313 | 4.8611111e-01 9.2537313e-01 1.0000000e+00 8.0000000e-02 314 | 2.5000000e-01 5.6716418e-01 6.4000000e-01 1.0000000e-01 315 | 1.8055556e-01 4.1791045e-01 4.9000000e-01 9.0000000e-02 316 | 1.5277778e-01 4.0298507e-01 4.4000000e-01 8.0000000e-02 317 | 1.3888889e-01 3.7313433e-01 4.0000000e-01 8.0000000e-02 318 | 1.2500000e-01 3.7313433e-01 3.7000000e-01 8.0000000e-02 319 | 1.2500000e-01 3.4328358e-01 3.6000000e-01 8.0000000e-02 320 | 1.5277778e-01 3.8805970e-01 3.7000000e-01 9.0000000e-02 321 | 9.7222222e-02 2.9850746e-01 3.3000000e-01 9.0000000e-02 322 | 8.3333333e-02 4.9253731e-01 3.1000000e-01 9.0000000e-02 323 | 8.3333333e-02 2.9850746e-01 2.9000000e-01 9.0000000e-02 324 | 8.3333333e-02 2.6865672e-01 2.7000000e-01 1.0000000e-01 325 | 6.9444444e-02 2.5373134e-01 2.7000000e-01 1.0000000e-01 326 | 1.3888889e-01 3.7313433e-01 3.0000000e-01 1.1000000e-01 327 | 1.1111111e-01 3.1343284e-01 2.8000000e-01 1.2000000e-01 328 | 4.1666667e-02 2.2388060e-01 2.5000000e-01 1.2000000e-01 329 | 2.7777778e-02 2.2388060e-01 2.4000000e-01 1.3000000e-01 330 | 4.1666667e-02 2.0895522e-01 2.4000000e-01 1.4000000e-01 331 | 4.1666667e-02 2.5373134e-01 2.4000000e-01 1.3000000e-01 332 | 4.1666667e-02 1.7910448e-01 2.4000000e-01 1.5000000e-01 333 | 5.5555556e-02 2.0895522e-01 2.3000000e-01 1.7000000e-01 334 | 5.5555556e-02 2.0895522e-01 2.4000000e-01 1.7000000e-01 335 | 8.3333333e-02 2.3880597e-01 2.5000000e-01 1.7000000e-01 336 | 5.5555556e-02 1.9402985e-01 2.4000000e-01 1.9000000e-01 337 | 3.3333333e-01 2.5373134e-01 2.6000000e-01 1.7000000e-01 338 | 1.9444444e-01 2.3880597e-01 2.5000000e-01 1.8000000e-01 339 | 1.5277778e-01 2.6865672e-01 2.5000000e-01 1.9000000e-01 340 | 1.5277778e-01 2.9850746e-01 2.5000000e-01 2.1000000e-01 341 | 1.6666667e-01 2.8358209e-01 2.5000000e-01 2.3000000e-01 342 | 1.6666667e-01 3.1343284e-01 2.6000000e-01 2.4000000e-01 343 | 1.5277778e-01 2.9850746e-01 2.6000000e-01 2.4000000e-01 344 | 1.3888889e-01 3.1343284e-01 2.5000000e-01 2.8000000e-01 345 | 1.3888889e-01 2.6865672e-01 2.5000000e-01 2.7000000e-01 346 | 1.2500000e-01 3.2835821e-01 2.4000000e-01 2.8000000e-01 347 | 1.1111111e-01 2.9850746e-01 2.4000000e-01 2.6000000e-01 348 | 1.1111111e-01 2.6865672e-01 2.3000000e-01 2.7000000e-01 349 | 1.1111111e-01 3.5820896e-01 2.3000000e-01 2.7000000e-01 350 | 1.3888889e-01 3.2835821e-01 2.1000000e-01 2.7000000e-01 351 | 1.2500000e-01 3.5820896e-01 2.1000000e-01 2.6000000e-01 352 | 1.3888889e-01 3.1343284e-01 2.1000000e-01 2.6000000e-01 353 | 1.1111111e-01 3.2835821e-01 2.2000000e-01 2.7000000e-01 354 | 1.1111111e-01 3.5820896e-01 2.4000000e-01 2.8000000e-01 355 | 1.1111111e-01 2.8358209e-01 2.4000000e-01 2.8000000e-01 356 | 1.3888889e-01 3.1343284e-01 2.6000000e-01 2.8000000e-01 357 | 2.6388889e-01 3.5820896e-01 3.1000000e-01 2.9000000e-01 358 | 3.0555556e-01 3.8805970e-01 3.4000000e-01 3.1000000e-01 359 | 2.9166667e-01 4.3283582e-01 3.6000000e-01 3.1000000e-01 360 | 3.4722222e-01 4.7761194e-01 4.6000000e-01 3.2000000e-01 361 | 3.0555556e-01 4.0298507e-01 4.6000000e-01 3.2000000e-01 362 | 2.9166667e-01 4.9253731e-01 4.8000000e-01 3.6000000e-01 363 | 3.0555556e-01 5.2238806e-01 4.8000000e-01 3.6000000e-01 364 | 4.5833333e-01 7.0149254e-01 5.7000000e-01 4.0000000e-01 365 | 5.9722222e-01 8.8059701e-01 7.0000000e-01 4.2000000e-01 366 | 3.3333333e-01 6.2686567e-01 4.7000000e-01 4.0000000e-01 367 | 2.2222222e-01 4.9253731e-01 3.6000000e-01 3.7000000e-01 368 | 2.0833333e-01 4.9253731e-01 3.1000000e-01 3.6000000e-01 369 | 1.6666667e-01 4.9253731e-01 2.8000000e-01 3.5000000e-01 370 | 1.6666667e-01 4.3283582e-01 2.7000000e-01 3.7000000e-01 371 | 1.1111111e-01 3.4328358e-01 2.4000000e-01 3.7000000e-01 372 | 8.3333333e-02 3.1343284e-01 2.3000000e-01 3.8000000e-01 373 | 1.1111111e-01 3.2835821e-01 2.4000000e-01 3.8000000e-01 374 | 8.3333333e-02 3.1343284e-01 2.2000000e-01 3.8000000e-01 375 | 8.3333333e-02 2.6865672e-01 2.1000000e-01 3.8000000e-01 376 | 5.5555556e-02 2.2388060e-01 1.9000000e-01 3.6000000e-01 377 | 6.9444444e-02 2.2388060e-01 1.9000000e-01 4.0000000e-01 378 | 6.9444444e-02 1.9402985e-01 1.9000000e-01 4.0000000e-01 379 | 4.1666667e-02 2.0895522e-01 1.8000000e-01 3.9000000e-01 380 | 5.5555556e-02 1.6417910e-01 1.8000000e-01 3.9000000e-01 381 | 1.1111111e-01 4.0298507e-01 2.0000000e-01 4.1000000e-01 382 | 1.2500000e-01 3.8805970e-01 2.0000000e-01 4.1000000e-01 383 | 8.3333333e-02 2.5373134e-01 1.8000000e-01 4.0000000e-01 384 | 6.9444444e-02 2.3880597e-01 1.6000000e-01 4.3000000e-01 385 | 8.3333333e-02 3.1343284e-01 1.7000000e-01 4.4000000e-01 386 | 9.7222222e-02 1.9402985e-01 1.7000000e-01 4.4000000e-01 387 | 9.7222222e-02 3.2835821e-01 1.8000000e-01 4.5000000e-01 388 | 1.2500000e-01 3.1343284e-01 3.1000000e-01 4.5000000e-01 389 | 1.1111111e-01 2.6865672e-01 2.2000000e-01 4.7000000e-01 390 | 1.2500000e-01 2.8358209e-01 2.1000000e-01 4.8000000e-01 391 | 1.1111111e-01 2.5373134e-01 2.0000000e-01 4.8000000e-01 392 | 1.1111111e-01 2.6865672e-01 2.0000000e-01 4.9000000e-01 393 | 9.7222222e-02 2.5373134e-01 1.9000000e-01 5.0000000e-01 394 | 1.3888889e-01 2.8358209e-01 2.0000000e-01 5.1000000e-01 395 | 1.2500000e-01 2.5373134e-01 2.0000000e-01 5.1000000e-01 396 | 1.1111111e-01 2.2388060e-01 2.0000000e-01 5.2000000e-01 397 | 1.1111111e-01 2.6865672e-01 1.9000000e-01 5.2000000e-01 398 | 1.1111111e-01 2.6865672e-01 2.0000000e-01 5.3000000e-01 399 | 9.7222222e-02 2.3880597e-01 1.8000000e-01 5.3000000e-01 400 | 9.7222222e-02 2.3880597e-01 1.8000000e-01 5.3000000e-01 401 | 9.7222222e-02 2.3880597e-01 1.7000000e-01 5.3000000e-01 402 | 9.7222222e-02 2.2388060e-01 1.6000000e-01 5.2000000e-01 403 | 1.1111111e-01 2.0895522e-01 1.6000000e-01 5.2000000e-01 404 | 1.3888889e-01 2.5373134e-01 1.5000000e-01 5.3000000e-01 405 | 1.5277778e-01 2.2388060e-01 1.5000000e-01 5.5000000e-01 406 | 1.6666667e-01 2.2388060e-01 1.7000000e-01 5.7000000e-01 407 | 1.2500000e-01 2.0895522e-01 1.7000000e-01 6.0000000e-01 408 | 1.5277778e-01 2.3880597e-01 1.8000000e-01 5.7000000e-01 409 | 1.6666667e-01 2.8358209e-01 2.0000000e-01 5.7000000e-01 410 | 2.3611111e-01 3.1343284e-01 2.2000000e-01 5.6000000e-01 411 | 2.3611111e-01 2.9850746e-01 2.4000000e-01 5.7000000e-01 412 | 3.0555556e-01 3.4328358e-01 3.1000000e-01 5.9000000e-01 413 | 2.5000000e-01 3.2835821e-01 3.0000000e-01 6.0000000e-01 414 | 3.6111111e-01 3.1343284e-01 3.1000000e-01 6.2000000e-01 415 | 2.7777778e-01 3.4328358e-01 3.2000000e-01 6.4000000e-01 416 | 3.3333333e-01 4.3283582e-01 3.6000000e-01 6.9000000e-01 417 | 5.2777778e-01 6.2686567e-01 4.6000000e-01 8.3000000e-01 418 | 2.7777778e-01 3.8805970e-01 3.2000000e-01 7.0000000e-01 419 | 1.6666667e-01 2.6865672e-01 2.4000000e-01 6.6000000e-01 420 | 1.2500000e-01 2.0895522e-01 2.1000000e-01 6.4000000e-01 421 | 1.1111111e-01 1.9402985e-01 2.0000000e-01 6.3000000e-01 422 | 8.3333333e-02 1.7910448e-01 1.8000000e-01 6.3000000e-01 423 | 6.9444444e-02 1.6417910e-01 1.7000000e-01 6.3000000e-01 424 | 8.3333333e-02 1.6417910e-01 1.6000000e-01 6.2000000e-01 425 | 9.7222222e-02 1.6417910e-01 1.7000000e-01 6.4000000e-01 426 | 5.5555556e-02 1.1940299e-01 1.6000000e-01 6.1000000e-01 427 | 5.5555556e-02 1.3432836e-01 1.5000000e-01 6.6000000e-01 428 | 4.1666667e-02 1.0447761e-01 1.4000000e-01 6.9000000e-01 429 | 2.7777778e-02 7.4626866e-02 1.4000000e-01 6.6000000e-01 430 | 1.3888889e-02 7.4626866e-02 1.3000000e-01 6.7000000e-01 431 | 6.9444444e-02 1.4925373e-01 1.5000000e-01 6.9000000e-01 432 | 4.1666667e-02 1.0447761e-01 1.5000000e-01 6.6000000e-01 433 | 1.3888889e-02 5.9701493e-02 1.3000000e-01 6.3000000e-01 434 | 0.0000000e+00 4.4776119e-02 1.3000000e-01 6.3000000e-01 435 | 2.7777778e-02 8.9552239e-02 1.4000000e-01 6.3000000e-01 436 | 5.5555556e-02 4.4776119e-02 1.2000000e-01 6.3000000e-01 437 | 4.1666667e-02 4.4776119e-02 1.2000000e-01 6.3000000e-01 438 | 1.3888889e-02 2.9850746e-02 1.2000000e-01 6.2000000e-01 439 | 2.7777778e-02 5.9701493e-02 1.2000000e-01 6.3000000e-01 440 | 8.3333333e-02 8.9552239e-02 1.8000000e-01 6.5000000e-01 441 | 6.9444444e-02 8.9552239e-02 1.4000000e-01 6.5000000e-01 442 | 8.3333333e-02 8.9552239e-02 1.4000000e-01 6.6000000e-01 443 | 8.3333333e-02 1.3432836e-01 1.4000000e-01 6.9000000e-01 444 | 1.1111111e-01 1.4925373e-01 1.5000000e-01 7.0000000e-01 445 | 1.1111111e-01 1.6417910e-01 1.5000000e-01 7.1000000e-01 446 | 1.2500000e-01 1.7910448e-01 1.5000000e-01 7.2000000e-01 447 | 9.7222222e-02 1.4925373e-01 1.5000000e-01 7.1000000e-01 448 | 9.7222222e-02 1.3432836e-01 1.5000000e-01 7.0000000e-01 449 | 9.7222222e-02 1.4925373e-01 1.5000000e-01 7.1000000e-01 450 | 9.7222222e-02 1.6417910e-01 1.5000000e-01 7.2000000e-01 451 | 8.3333333e-02 1.4925373e-01 1.5000000e-01 7.2000000e-01 452 | 6.9444444e-02 1.3432836e-01 1.4000000e-01 7.1000000e-01 453 | 6.9444444e-02 1.1940299e-01 1.4000000e-01 7.0000000e-01 454 | 4.1666667e-02 1.1940299e-01 1.7000000e-01 7.0000000e-01 455 | 4.1666667e-02 1.0447761e-01 1.6000000e-01 7.1000000e-01 456 | 6.9444444e-02 1.3432836e-01 1.4000000e-01 7.2000000e-01 457 | 8.3333333e-02 1.1940299e-01 1.4000000e-01 7.1000000e-01 458 | 8.3333333e-02 1.0447761e-01 1.4000000e-01 6.9000000e-01 459 | 9.7222222e-02 7.4626866e-02 1.4000000e-01 6.9000000e-01 460 | 9.7222222e-02 1.1940299e-01 1.5000000e-01 7.0000000e-01 461 | 1.1111111e-01 1.4925373e-01 1.6000000e-01 7.1000000e-01 462 | 1.2500000e-01 1.1940299e-01 1.8000000e-01 6.9000000e-01 463 | 1.6666667e-01 1.7910448e-01 2.2000000e-01 7.1000000e-01 464 | 2.5000000e-01 2.0895522e-01 3.5000000e-01 7.3000000e-01 465 | 1.9444444e-01 1.9402985e-01 3.1000000e-01 7.2000000e-01 466 | 1.6666667e-01 1.6417910e-01 2.9000000e-01 7.2000000e-01 467 | 1.6666667e-01 1.7910448e-01 2.7000000e-01 7.2000000e-01 468 | 2.0833333e-01 2.6865672e-01 2.7000000e-01 7.6000000e-01 469 | 4.4444444e-01 4.7761194e-01 3.7000000e-01 1.0000000e+00 470 | 2.9166667e-01 3.2835821e-01 2.9000000e-01 8.6000000e-01 471 | 1.3888889e-01 1.7910448e-01 1.9000000e-01 7.8000000e-01 472 | 1.1111111e-01 1.4925373e-01 1.8000000e-01 7.5000000e-01 473 | -------------------------------------------------------------------------------- /codes/autoplait/_dat/sweets: -------------------------------------------------------------------------------- 1 | 4.8192771e-02 8.7671233e-01 3.9000000e-01 5.1546392e-02 2 | 3.6144578e-02 7.3972603e-01 3.1000000e-01 4.1237113e-02 3 | 4.8192771e-02 1.0000000e+00 2.4000000e-01 3.0927835e-02 4 | 4.8192771e-02 1.0000000e+00 2.4000000e-01 2.0618557e-02 5 | 4.8192771e-02 8.3561644e-01 1.6000000e-01 2.0618557e-02 6 | 6.0240964e-02 9.4520548e-01 2.0000000e-01 2.0618557e-02 7 | 4.8192771e-02 8.4931507e-01 1.3000000e-01 2.0618557e-02 8 | 6.0240964e-02 4.1095890e-01 0.0000000e+00 2.0618557e-02 9 | 4.8192771e-02 6.9863014e-01 0.0000000e+00 2.0618557e-02 10 | 8.4337349e-02 5.8904110e-01 0.0000000e+00 3.0927835e-02 11 | 7.2289157e-02 6.1643836e-01 0.0000000e+00 1.0309278e-02 12 | 8.4337349e-02 5.6164384e-01 0.0000000e+00 2.0618557e-02 13 | 8.4337349e-02 3.8356164e-01 1.4000000e-01 1.0309278e-02 14 | 1.0843373e-01 5.0684932e-01 1.4000000e-01 1.0309278e-02 15 | 1.0843373e-01 3.5616438e-01 0.0000000e+00 0.0000000e+00 16 | 1.3253012e-01 3.5616438e-01 0.0000000e+00 2.0618557e-02 17 | 1.5662651e-01 5.2054795e-01 0.0000000e+00 2.0618557e-02 18 | 1.4457831e-01 5.2054795e-01 0.0000000e+00 1.0309278e-02 19 | 1.5662651e-01 4.7945205e-01 0.0000000e+00 1.0309278e-02 20 | 1.6867470e-01 3.6986301e-01 1.3000000e-01 1.0309278e-02 21 | 1.4457831e-01 3.6986301e-01 1.3000000e-01 2.0618557e-02 22 | 1.9277108e-01 5.0684932e-01 1.3000000e-01 1.0309278e-02 23 | 1.6867470e-01 5.6164384e-01 1.3000000e-01 2.0618557e-02 24 | 1.6867470e-01 3.5616438e-01 1.3000000e-01 2.0618557e-02 25 | 1.6867470e-01 4.6575342e-01 0.0000000e+00 2.0618557e-02 26 | 2.2891566e-01 1.3698630e-01 0.0000000e+00 2.0618557e-02 27 | 2.4096386e-01 3.8356164e-01 0.0000000e+00 2.0618557e-02 28 | 1.9277108e-01 2.0547945e-01 0.0000000e+00 3.0927835e-02 29 | 2.1686747e-01 3.9726027e-01 0.0000000e+00 2.0618557e-02 30 | 2.5301205e-01 4.3835616e-01 0.0000000e+00 1.0309278e-02 31 | 1.8072289e-01 3.4246575e-01 0.0000000e+00 2.0618557e-02 32 | 1.4457831e-01 2.0547945e-01 1.1000000e-01 2.0618557e-02 33 | 1.2048193e-01 3.2876712e-01 1.1000000e-01 2.0618557e-02 34 | 1.3253012e-01 2.0547945e-01 1.2000000e-01 3.0927835e-02 35 | 8.4337349e-02 2.1917808e-01 1.1000000e-01 2.0618557e-02 36 | 8.4337349e-02 3.1506849e-01 1.1000000e-01 2.0618557e-02 37 | 8.4337349e-02 1.7808219e-01 1.1000000e-01 2.0618557e-02 38 | 7.2289157e-02 1.3698630e-01 1.1000000e-01 4.1237113e-02 39 | 6.0240964e-02 1.3698630e-01 1.2000000e-01 4.1237113e-02 40 | 4.8192771e-02 5.4794521e-02 1.2000000e-01 4.1237113e-02 41 | 3.6144578e-02 5.4794521e-02 2.1000000e-01 5.1546392e-02 42 | 3.6144578e-02 0.0000000e+00 2.9000000e-01 7.2164948e-02 43 | 6.0240964e-02 1.2328767e-01 2.7000000e-01 8.2474227e-02 44 | 3.6144578e-02 9.5890411e-02 2.7000000e-01 9.2783505e-02 45 | 4.8192771e-02 1.6438356e-01 3.0000000e-01 1.6494845e-01 46 | 4.8192771e-02 1.3698630e-02 2.7000000e-01 2.0618557e-01 47 | 2.4096386e-02 2.6027397e-01 3.2000000e-01 3.0927835e-01 48 | 4.8192771e-02 1.7808219e-01 4.8000000e-01 5.4639175e-01 49 | 3.6144578e-02 3.2876712e-01 7.1000000e-01 6.4948454e-01 50 | 4.8192771e-02 1.7808219e-01 7.7000000e-01 6.7010309e-01 51 | 6.0240964e-02 3.1506849e-01 7.5000000e-01 6.1855670e-01 52 | 1.2048193e-02 1.9178082e-01 3.8000000e-01 9.2783505e-02 53 | 2.4096386e-02 1.9178082e-01 3.0000000e-01 6.1855670e-02 54 | 2.4096386e-02 1.9178082e-01 2.2000000e-01 3.0927835e-02 55 | 3.6144578e-02 1.3698630e-01 2.7000000e-01 3.0927835e-02 56 | 3.6144578e-02 1.3698630e-01 2.8000000e-01 3.0927835e-02 57 | 6.0240964e-02 1.3698630e-01 1.7000000e-01 3.0927835e-02 58 | 6.0240964e-02 1.2328767e-01 1.7000000e-01 3.0927835e-02 59 | 6.0240964e-02 1.5068493e-01 1.7000000e-01 2.0618557e-02 60 | 6.0240964e-02 1.3698630e-01 1.1000000e-01 3.0927835e-02 61 | 6.0240964e-02 1.0958904e-01 1.5000000e-01 2.0618557e-02 62 | 7.2289157e-02 2.1917808e-01 8.0000000e-02 2.0618557e-02 63 | 6.0240964e-02 2.0547945e-01 8.0000000e-02 1.0309278e-02 64 | 7.2289157e-02 3.2876712e-01 8.0000000e-02 2.0618557e-02 65 | 6.0240964e-02 3.0136986e-01 0.0000000e+00 1.0309278e-02 66 | 9.6385542e-02 2.7397260e-02 0.0000000e+00 2.0618557e-02 67 | 8.4337349e-02 1.7808219e-01 0.0000000e+00 2.0618557e-02 68 | 1.3253012e-01 3.2876712e-01 0.0000000e+00 1.0309278e-02 69 | 1.3253012e-01 1.9178082e-01 0.0000000e+00 2.0618557e-02 70 | 1.5662651e-01 2.8767123e-01 0.0000000e+00 1.0309278e-02 71 | 1.2048193e-01 2.3287671e-01 0.0000000e+00 2.0618557e-02 72 | 1.4457831e-01 2.8767123e-01 8.0000000e-02 2.0618557e-02 73 | 1.6867470e-01 2.1917808e-01 8.0000000e-02 1.0309278e-02 74 | 1.6867470e-01 4.3835616e-01 8.0000000e-02 1.0309278e-02 75 | 1.8072289e-01 3.0136986e-01 0.0000000e+00 1.0309278e-02 76 | 1.9277108e-01 2.7397260e-01 0.0000000e+00 2.0618557e-02 77 | 2.4096386e-01 6.7123288e-01 0.0000000e+00 1.0309278e-02 78 | 2.6506024e-01 4.1095890e-01 0.0000000e+00 1.0309278e-02 79 | 2.2891566e-01 3.4246575e-01 0.0000000e+00 1.0309278e-02 80 | 2.4096386e-01 4.7945205e-01 7.0000000e-02 1.0309278e-02 81 | 2.2891566e-01 3.5616438e-01 8.0000000e-02 1.0309278e-02 82 | 1.9277108e-01 3.2876712e-01 9.0000000e-02 1.0309278e-02 83 | 1.9277108e-01 3.9726027e-01 9.0000000e-02 1.0309278e-02 84 | 1.5662651e-01 3.6986301e-01 9.0000000e-02 2.0618557e-02 85 | 1.5662651e-01 2.4657534e-01 9.0000000e-02 2.0618557e-02 86 | 1.0843373e-01 2.0547945e-01 1.0000000e-01 2.0618557e-02 87 | 7.2289157e-02 2.1917808e-01 7.0000000e-02 2.0618557e-02 88 | 8.4337349e-02 5.6164384e-01 9.0000000e-02 2.0618557e-02 89 | 7.2289157e-02 2.7397260e-01 1.2000000e-01 3.0927835e-02 90 | 6.0240964e-02 1.0958904e-01 9.0000000e-02 3.0927835e-02 91 | 4.8192771e-02 1.0958904e-01 1.4000000e-01 4.1237113e-02 92 | 3.6144578e-02 1.7808219e-01 1.5000000e-01 5.1546392e-02 93 | 3.6144578e-02 6.8493151e-02 1.5000000e-01 5.1546392e-02 94 | 2.4096386e-02 2.0547945e-01 2.2000000e-01 5.1546392e-02 95 | 1.2048193e-02 8.2191781e-02 2.6000000e-01 6.1855670e-02 96 | 2.4096386e-02 4.1095890e-02 2.9000000e-01 9.2783505e-02 97 | 2.4096386e-02 8.2191781e-02 2.5000000e-01 1.4432990e-01 98 | 3.6144578e-02 1.9178082e-01 3.4000000e-01 2.1649485e-01 99 | 1.2048193e-02 1.5068493e-01 4.3000000e-01 2.6804124e-01 100 | 2.4096386e-02 1.3698630e-01 7.5000000e-01 4.8453608e-01 101 | 3.6144578e-02 2.4657534e-01 7.0000000e-01 6.9072165e-01 102 | 2.4096386e-02 1.3698630e-01 9.1000000e-01 6.9072165e-01 103 | 4.8192771e-02 9.5890411e-02 7.3000000e-01 6.7010309e-01 104 | 0.0000000e+00 2.3287671e-01 2.4000000e-01 1.0309278e-01 105 | 2.4096386e-02 1.5068493e-01 2.3000000e-01 6.1855670e-02 106 | 2.4096386e-02 3.2876712e-01 1.6000000e-01 3.0927835e-02 107 | 2.4096386e-02 2.1917808e-01 2.2000000e-01 3.0927835e-02 108 | 3.6144578e-02 3.1506849e-01 2.0000000e-01 2.0618557e-02 109 | 4.8192771e-02 2.7397260e-01 1.2000000e-01 2.0618557e-02 110 | 2.4096386e-02 3.0136986e-01 1.5000000e-01 2.0618557e-02 111 | 3.6144578e-02 1.9178082e-01 1.7000000e-01 2.0618557e-02 112 | 3.6144578e-02 2.0547945e-01 1.1000000e-01 2.0618557e-02 113 | 3.6144578e-02 2.3287671e-01 1.7000000e-01 1.0309278e-02 114 | 3.6144578e-02 1.5068493e-01 1.1000000e-01 2.0618557e-02 115 | 4.8192771e-02 3.4246575e-01 1.2000000e-01 2.0618557e-02 116 | 4.8192771e-02 3.5616438e-01 1.2000000e-01 1.0309278e-02 117 | 7.2289157e-02 3.6986301e-01 8.0000000e-02 1.0309278e-02 118 | 8.4337349e-02 2.7397260e-01 7.0000000e-02 2.0618557e-02 119 | 9.6385542e-02 3.1506849e-01 8.0000000e-02 1.0309278e-02 120 | 1.0843373e-01 3.0136986e-01 6.0000000e-02 1.0309278e-02 121 | 1.0843373e-01 2.8767123e-01 6.0000000e-02 1.0309278e-02 122 | 1.3253012e-01 3.5616438e-01 7.0000000e-02 1.0309278e-02 123 | 1.3253012e-01 2.1917808e-01 7.0000000e-02 1.0309278e-02 124 | 1.3253012e-01 3.4246575e-01 5.0000000e-02 1.0309278e-02 125 | 1.4457831e-01 3.5616438e-01 7.0000000e-02 1.0309278e-02 126 | 1.8072289e-01 4.3835616e-01 9.0000000e-02 1.0309278e-02 127 | 1.8072289e-01 3.2876712e-01 1.0000000e-01 0.0000000e+00 128 | 1.9277108e-01 4.6575342e-01 9.0000000e-02 1.0309278e-02 129 | 1.8072289e-01 3.2876712e-01 9.0000000e-02 0.0000000e+00 130 | 2.1686747e-01 4.1095890e-01 5.0000000e-02 0.0000000e+00 131 | 2.8915663e-01 3.9726027e-01 5.0000000e-02 0.0000000e+00 132 | 2.2891566e-01 5.3424658e-01 5.0000000e-02 1.0309278e-02 133 | 2.7710843e-01 5.4794521e-01 6.0000000e-02 1.0309278e-02 134 | 2.4096386e-01 4.6575342e-01 5.0000000e-02 1.0309278e-02 135 | 2.2891566e-01 4.5205479e-01 5.0000000e-02 2.0618557e-02 136 | 1.9277108e-01 4.1095890e-01 7.0000000e-02 1.0309278e-02 137 | 1.5662651e-01 3.5616438e-01 5.0000000e-02 1.0309278e-02 138 | 1.4457831e-01 3.6986301e-01 7.0000000e-02 1.0309278e-02 139 | 9.6385542e-02 3.8356164e-01 9.0000000e-02 2.0618557e-02 140 | 1.0843373e-01 1.3698630e-01 1.0000000e-01 2.0618557e-02 141 | 7.2289157e-02 2.4657534e-01 1.3000000e-01 2.0618557e-02 142 | 7.2289157e-02 1.7808219e-01 1.0000000e-01 3.0927835e-02 143 | 6.0240964e-02 1.2328767e-01 1.3000000e-01 4.1237113e-02 144 | 6.0240964e-02 2.4657534e-01 1.2000000e-01 4.1237113e-02 145 | 4.8192771e-02 1.9178082e-01 1.6000000e-01 5.1546392e-02 146 | 4.8192771e-02 9.5890411e-02 2.5000000e-01 5.1546392e-02 147 | 4.8192771e-02 1.5068493e-01 2.1000000e-01 7.2164948e-02 148 | 4.8192771e-02 1.5068493e-01 2.5000000e-01 9.2783505e-02 149 | 4.8192771e-02 1.0958904e-01 2.9000000e-01 1.3402062e-01 150 | 3.6144578e-02 8.2191781e-02 3.3000000e-01 1.8556701e-01 151 | 4.8192771e-02 1.0958904e-01 2.8000000e-01 2.5773196e-01 152 | 6.0240964e-02 8.2191781e-02 5.6000000e-01 4.5360825e-01 153 | 6.0240964e-02 1.7808219e-01 7.0000000e-01 6.0824742e-01 154 | 6.0240964e-02 1.2328767e-01 7.3000000e-01 6.5979381e-01 155 | 6.0240964e-02 1.2328767e-01 7.3000000e-01 6.5979381e-01 156 | 2.4096386e-02 2.0547945e-01 3.2000000e-01 1.5463918e-01 157 | 2.4096386e-02 2.1917808e-01 1.9000000e-01 5.1546392e-02 158 | 4.8192771e-02 1.0958904e-01 2.6000000e-01 3.0927835e-02 159 | 4.8192771e-02 1.9178082e-01 3.0000000e-01 3.0927835e-02 160 | 3.6144578e-02 2.0547945e-01 2.7000000e-01 2.0618557e-02 161 | 3.6144578e-02 1.7808219e-01 2.6000000e-01 2.0618557e-02 162 | 4.8192771e-02 2.4657534e-01 2.2000000e-01 2.0618557e-02 163 | 4.8192771e-02 1.7808219e-01 2.1000000e-01 2.0618557e-02 164 | 4.8192771e-02 1.5068493e-01 1.5000000e-01 1.0309278e-02 165 | 4.8192771e-02 3.0136986e-01 1.5000000e-01 1.0309278e-02 166 | 7.2289157e-02 2.6027397e-01 9.0000000e-02 1.0309278e-02 167 | 8.4337349e-02 2.3287671e-01 1.0000000e-01 1.0309278e-02 168 | 7.2289157e-02 1.7808219e-01 9.0000000e-02 1.0309278e-02 169 | 8.4337349e-02 1.7808219e-01 7.0000000e-02 1.0309278e-02 170 | 9.6385542e-02 1.9178082e-01 6.0000000e-02 0.0000000e+00 171 | 9.6385542e-02 1.3698630e-01 8.0000000e-02 0.0000000e+00 172 | 1.2048193e-01 3.6986301e-01 7.0000000e-02 1.0309278e-02 173 | 1.2048193e-01 2.1917808e-01 7.0000000e-02 1.0309278e-02 174 | 1.6867470e-01 3.0136986e-01 7.0000000e-02 1.0309278e-02 175 | 1.4457831e-01 3.1506849e-01 6.0000000e-02 1.0309278e-02 176 | 1.5662651e-01 2.3287671e-01 8.0000000e-02 1.0309278e-02 177 | 1.5662651e-01 3.2876712e-01 6.0000000e-02 1.0309278e-02 178 | 1.6867470e-01 2.4657534e-01 7.0000000e-02 1.0309278e-02 179 | 1.8072289e-01 2.7397260e-01 5.0000000e-02 1.0309278e-02 180 | 1.8072289e-01 3.0136986e-01 5.0000000e-02 2.0618557e-02 181 | 1.6867470e-01 3.0136986e-01 4.0000000e-02 1.0309278e-02 182 | 1.8072289e-01 3.4246575e-01 4.0000000e-02 1.0309278e-02 183 | 2.2891566e-01 1.9178082e-01 3.0000000e-02 1.0309278e-02 184 | 2.2891566e-01 2.6027397e-01 6.0000000e-02 1.0309278e-02 185 | 2.0481928e-01 3.1506849e-01 7.0000000e-02 2.0618557e-02 186 | 1.8072289e-01 2.4657534e-01 5.0000000e-02 2.0618557e-02 187 | 1.5662651e-01 2.6027397e-01 6.0000000e-02 1.0309278e-02 188 | 1.5662651e-01 3.1506849e-01 5.0000000e-02 1.0309278e-02 189 | 1.5662651e-01 3.5616438e-01 7.0000000e-02 2.0618557e-02 190 | 1.0843373e-01 2.6027397e-01 1.0000000e-01 2.0618557e-02 191 | 9.6385542e-02 8.4931507e-01 8.0000000e-02 2.0618557e-02 192 | 7.2289157e-02 6.0273973e-01 7.0000000e-02 2.0618557e-02 193 | 7.2289157e-02 5.3424658e-01 9.0000000e-02 2.0618557e-02 194 | 6.0240964e-02 4.5205479e-01 1.4000000e-01 3.0927835e-02 195 | 4.8192771e-02 3.1506849e-01 9.0000000e-02 3.0927835e-02 196 | 4.8192771e-02 2.8767123e-01 1.3000000e-01 4.1237113e-02 197 | 3.6144578e-02 2.3287671e-01 1.3000000e-01 4.1237113e-02 198 | 3.6144578e-02 1.9178082e-01 1.7000000e-01 5.1546392e-02 199 | 2.4096386e-02 1.3698630e-01 2.1000000e-01 6.1855670e-02 200 | 1.2048193e-02 2.3287671e-01 1.9000000e-01 8.2474227e-02 201 | 1.2048193e-02 1.7808219e-01 2.8000000e-01 1.2371134e-01 202 | 2.4096386e-02 1.3698630e-01 3.4000000e-01 1.7525773e-01 203 | 2.4096386e-02 1.9178082e-01 3.4000000e-01 2.2680412e-01 204 | 2.4096386e-02 1.3698630e-01 6.0000000e-01 4.0206186e-01 205 | 3.6144578e-02 1.5068493e-01 6.5000000e-01 5.5670103e-01 206 | 3.6144578e-02 1.0958904e-01 7.2000000e-01 5.9793814e-01 207 | 4.8192771e-02 1.9178082e-01 8.9000000e-01 6.5979381e-01 208 | 2.4096386e-02 1.6438356e-01 4.8000000e-01 2.6804124e-01 209 | 3.6144578e-02 3.1506849e-01 3.0000000e-01 6.1855670e-02 210 | 3.6144578e-02 2.8767123e-01 2.1000000e-01 3.0927835e-02 211 | 3.6144578e-02 2.6027397e-01 2.7000000e-01 3.0927835e-02 212 | 3.6144578e-02 3.5616438e-01 2.3000000e-01 3.0927835e-02 213 | 3.6144578e-02 2.3287671e-01 1.9000000e-01 2.0618557e-02 214 | 4.8192771e-02 3.1506849e-01 1.7000000e-01 1.0309278e-02 215 | 4.8192771e-02 4.2465753e-01 1.9000000e-01 1.0309278e-02 216 | 4.8192771e-02 3.1506849e-01 1.8000000e-01 1.0309278e-02 217 | 6.0240964e-02 4.2465753e-01 1.2000000e-01 1.0309278e-02 218 | 4.8192771e-02 2.7397260e-01 1.2000000e-01 1.0309278e-02 219 | 6.0240964e-02 2.3287671e-01 7.0000000e-02 1.0309278e-02 220 | 6.0240964e-02 3.1506849e-01 1.1000000e-01 1.0309278e-02 221 | 6.0240964e-02 2.7397260e-01 1.0000000e-01 1.0309278e-02 222 | 8.4337349e-02 3.4246575e-01 1.0000000e-01 0.0000000e+00 223 | 8.4337349e-02 3.1506849e-01 1.0000000e-01 1.0309278e-02 224 | 8.4337349e-02 3.6986301e-01 6.0000000e-02 1.0309278e-02 225 | 1.2048193e-01 3.1506849e-01 7.0000000e-02 1.0309278e-02 226 | 1.5662651e-01 3.9726027e-01 8.0000000e-02 1.0309278e-02 227 | 1.4457831e-01 4.2465753e-01 8.0000000e-02 1.0309278e-02 228 | 1.4457831e-01 3.5616438e-01 7.0000000e-02 1.0309278e-02 229 | 1.4457831e-01 3.6986301e-01 8.0000000e-02 0.0000000e+00 230 | 1.5662651e-01 3.9726027e-01 6.0000000e-02 0.0000000e+00 231 | 1.5662651e-01 3.2876712e-01 8.0000000e-02 0.0000000e+00 232 | 1.8072289e-01 3.6986301e-01 5.0000000e-02 0.0000000e+00 233 | 1.6867470e-01 2.8767123e-01 6.0000000e-02 0.0000000e+00 234 | 1.9277108e-01 4.1095890e-01 6.0000000e-02 0.0000000e+00 235 | 2.0481928e-01 5.3424658e-01 5.0000000e-02 1.0309278e-02 236 | 1.8072289e-01 5.0684932e-01 6.0000000e-02 1.0309278e-02 237 | 1.9277108e-01 5.3424658e-01 4.0000000e-02 1.0309278e-02 238 | 1.8072289e-01 5.3424658e-01 5.0000000e-02 0.0000000e+00 239 | 1.6867470e-01 5.0684932e-01 6.0000000e-02 0.0000000e+00 240 | 1.4457831e-01 4.3835616e-01 8.0000000e-02 1.0309278e-02 241 | 1.4457831e-01 3.6986301e-01 7.0000000e-02 1.0309278e-02 242 | 1.3253012e-01 4.1095890e-01 7.0000000e-02 1.0309278e-02 243 | 9.6385542e-02 3.8356164e-01 9.0000000e-02 1.0309278e-02 244 | 8.4337349e-02 3.9726027e-01 7.0000000e-02 2.0618557e-02 245 | 6.0240964e-02 3.1506849e-01 1.2000000e-01 2.0618557e-02 246 | 6.0240964e-02 3.1506849e-01 1.2000000e-01 2.0618557e-02 247 | 7.2289157e-02 2.4657534e-01 1.4000000e-01 2.0618557e-02 248 | 4.8192771e-02 3.1506849e-01 1.5000000e-01 3.0927835e-02 249 | 3.6144578e-02 3.2876712e-01 1.8000000e-01 4.1237113e-02 250 | 3.6144578e-02 3.0136986e-01 1.7000000e-01 5.1546392e-02 251 | 2.4096386e-02 2.0547945e-01 2.4000000e-01 5.1546392e-02 252 | 1.2048193e-02 2.1917808e-01 3.0000000e-01 7.2164948e-02 253 | 2.4096386e-02 2.0547945e-01 2.7000000e-01 9.2783505e-02 254 | 2.4096386e-02 1.5068493e-01 3.8000000e-01 1.4432990e-01 255 | 3.6144578e-02 2.3287671e-01 3.7000000e-01 2.0618557e-01 256 | 2.4096386e-02 1.7808219e-01 3.9000000e-01 2.7835052e-01 257 | 2.4096386e-02 1.6438356e-01 6.4000000e-01 4.9484536e-01 258 | 2.4096386e-02 2.8767123e-01 8.1000000e-01 6.3917526e-01 259 | 3.6144578e-02 2.0547945e-01 8.7000000e-01 7.0103093e-01 260 | 2.4096386e-02 3.4246575e-01 7.4000000e-01 5.2577320e-01 261 | 2.4096386e-02 3.5616438e-01 3.3000000e-01 8.2474227e-02 262 | 1.2048193e-02 3.5616438e-01 2.3000000e-01 5.1546392e-02 263 | 2.4096386e-02 3.1506849e-01 3.1000000e-01 3.0927835e-02 264 | 3.6144578e-02 3.4246575e-01 2.6000000e-01 2.0618557e-02 265 | 3.6144578e-02 3.5616438e-01 2.2000000e-01 2.0618557e-02 266 | 4.8192771e-02 3.4246575e-01 1.9000000e-01 1.0309278e-02 267 | 6.0240964e-02 3.2876712e-01 1.4000000e-01 2.0618557e-02 268 | 4.8192771e-02 3.8356164e-01 1.4000000e-01 1.0309278e-02 269 | 6.0240964e-02 4.1095890e-01 1.5000000e-01 2.0618557e-02 270 | 6.0240964e-02 4.1095890e-01 1.6000000e-01 1.0309278e-02 271 | 7.2289157e-02 3.9726027e-01 1.0000000e-01 1.0309278e-02 272 | 8.4337349e-02 3.9726027e-01 9.0000000e-02 1.0309278e-02 273 | 8.4337349e-02 4.5205479e-01 1.0000000e-01 1.0309278e-02 274 | 9.6385542e-02 3.4246575e-01 7.0000000e-02 1.0309278e-02 275 | 1.2048193e-01 3.2876712e-01 1.0000000e-01 1.0309278e-02 276 | 1.0843373e-01 3.4246575e-01 8.0000000e-02 0.0000000e+00 277 | 1.4457831e-01 4.2465753e-01 7.0000000e-02 1.0309278e-02 278 | 1.6867470e-01 4.2465753e-01 8.0000000e-02 1.0309278e-02 279 | 1.5662651e-01 3.4246575e-01 7.0000000e-02 1.0309278e-02 280 | 1.6867470e-01 4.9315068e-01 6.0000000e-02 1.0309278e-02 281 | 1.9277108e-01 5.0684932e-01 7.0000000e-02 0.0000000e+00 282 | 2.0481928e-01 5.6164384e-01 5.0000000e-02 0.0000000e+00 283 | 2.2891566e-01 5.7534247e-01 7.0000000e-02 0.0000000e+00 284 | 2.2891566e-01 4.6575342e-01 6.0000000e-02 0.0000000e+00 285 | 2.2891566e-01 4.5205479e-01 1.0000000e-01 0.0000000e+00 286 | 2.5301205e-01 3.5616438e-01 6.0000000e-02 0.0000000e+00 287 | 3.0120482e-01 5.2054795e-01 6.0000000e-02 1.0309278e-02 288 | 2.6506024e-01 4.2465753e-01 6.0000000e-02 0.0000000e+00 289 | 2.7710843e-01 4.2465753e-01 6.0000000e-02 1.0309278e-02 290 | 2.7710843e-01 4.5205479e-01 8.0000000e-02 0.0000000e+00 291 | 2.5301205e-01 4.7945205e-01 8.0000000e-02 1.0309278e-02 292 | 2.5301205e-01 4.6575342e-01 4.0000000e-02 1.0309278e-02 293 | 2.6506024e-01 4.3835616e-01 8.0000000e-02 1.0309278e-02 294 | 2.2891566e-01 4.3835616e-01 8.0000000e-02 1.0309278e-02 295 | 1.9277108e-01 5.3424658e-01 8.0000000e-02 1.0309278e-02 296 | 1.8072289e-01 4.1095890e-01 7.0000000e-02 1.0309278e-02 297 | 1.5662651e-01 3.4246575e-01 1.0000000e-01 2.0618557e-02 298 | 1.4457831e-01 3.4246575e-01 1.1000000e-01 2.0618557e-02 299 | 1.3253012e-01 3.0136986e-01 1.5000000e-01 2.0618557e-02 300 | 1.0843373e-01 3.1506849e-01 2.0000000e-01 3.0927835e-02 301 | 9.6385542e-02 3.1506849e-01 2.2000000e-01 4.1237113e-02 302 | 8.4337349e-02 3.1506849e-01 3.1000000e-01 5.1546392e-02 303 | 8.4337349e-02 2.7397260e-01 2.4000000e-01 5.1546392e-02 304 | 9.6385542e-02 2.0547945e-01 2.6000000e-01 6.1855670e-02 305 | 8.4337349e-02 3.1506849e-01 2.3000000e-01 8.2474227e-02 306 | 9.6385542e-02 3.1506849e-01 3.0000000e-01 1.2371134e-01 307 | 1.0843373e-01 2.4657534e-01 3.0000000e-01 1.8556701e-01 308 | 8.4337349e-02 2.1917808e-01 2.5000000e-01 2.3711340e-01 309 | 8.4337349e-02 2.3287671e-01 6.1000000e-01 4.6391753e-01 310 | 8.4337349e-02 2.3287671e-01 8.7000000e-01 5.9793814e-01 311 | 8.4337349e-02 2.0547945e-01 8.0000000e-01 6.5979381e-01 312 | 8.4337349e-02 2.4657534e-01 7.5000000e-01 5.9793814e-01 313 | 7.2289157e-02 2.6027397e-01 4.2000000e-01 1.0309278e-01 314 | 4.8192771e-02 2.8767123e-01 4.6000000e-01 5.1546392e-02 315 | 7.2289157e-02 3.1506849e-01 2.8000000e-01 3.0927835e-02 316 | 7.2289157e-02 3.6986301e-01 2.2000000e-01 2.0618557e-02 317 | 8.4337349e-02 2.7397260e-01 2.3000000e-01 2.0618557e-02 318 | 8.4337349e-02 3.2876712e-01 2.2000000e-01 2.0618557e-02 319 | 9.6385542e-02 2.4657534e-01 3.2000000e-01 2.0618557e-02 320 | 7.2289157e-02 3.2876712e-01 1.9000000e-01 2.0618557e-02 321 | 8.4337349e-02 3.8356164e-01 1.9000000e-01 1.0309278e-02 322 | 9.6385542e-02 2.8767123e-01 1.4000000e-01 1.0309278e-02 323 | 9.6385542e-02 3.5616438e-01 1.0000000e-01 1.0309278e-02 324 | 9.6385542e-02 3.5616438e-01 1.0000000e-01 1.0309278e-02 325 | 1.2048193e-01 3.1506849e-01 8.0000000e-02 1.0309278e-02 326 | 1.3253012e-01 3.9726027e-01 8.0000000e-02 1.0309278e-02 327 | 1.3253012e-01 3.4246575e-01 8.0000000e-02 0.0000000e+00 328 | 1.4457831e-01 3.4246575e-01 7.0000000e-02 1.0309278e-02 329 | 1.5662651e-01 4.3835616e-01 8.0000000e-02 1.0309278e-02 330 | 1.6867470e-01 3.4246575e-01 8.0000000e-02 1.0309278e-02 331 | 1.8072289e-01 2.6027397e-01 8.0000000e-02 1.0309278e-02 332 | 1.6867470e-01 2.8767123e-01 8.0000000e-02 1.0309278e-02 333 | 1.9277108e-01 3.2876712e-01 8.0000000e-02 1.0309278e-02 334 | 2.2891566e-01 5.4794521e-01 8.0000000e-02 1.0309278e-02 335 | 2.2891566e-01 4.6575342e-01 7.0000000e-02 1.0309278e-02 336 | 2.0481928e-01 4.3835616e-01 7.0000000e-02 1.0309278e-02 337 | 2.4096386e-01 3.5616438e-01 7.0000000e-02 1.0309278e-02 338 | 2.4096386e-01 4.5205479e-01 5.0000000e-02 1.0309278e-02 339 | 2.7710843e-01 5.3424658e-01 8.0000000e-02 3.0927835e-02 340 | 3.1325301e-01 4.9315068e-01 5.0000000e-02 2.0618557e-02 341 | 3.0120482e-01 4.7945205e-01 7.0000000e-02 2.0618557e-02 342 | 3.0120482e-01 4.5205479e-01 6.0000000e-02 2.0618557e-02 343 | 2.6506024e-01 4.3835616e-01 8.0000000e-02 2.0618557e-02 344 | 2.7710843e-01 3.8356164e-01 9.0000000e-02 2.0618557e-02 345 | 2.6506024e-01 4.2465753e-01 6.0000000e-02 3.0927835e-02 346 | 2.2891566e-01 3.4246575e-01 8.0000000e-02 3.0927835e-02 347 | 1.9277108e-01 3.9726027e-01 8.0000000e-02 3.0927835e-02 348 | 1.6867470e-01 3.5616438e-01 1.2000000e-01 3.0927835e-02 349 | 1.4457831e-01 3.2876712e-01 1.0000000e-01 4.1237113e-02 350 | 1.3253012e-01 2.7397260e-01 1.1000000e-01 4.1237113e-02 351 | 1.3253012e-01 2.6027397e-01 1.2000000e-01 4.1237113e-02 352 | 1.0843373e-01 2.0547945e-01 1.4000000e-01 4.1237113e-02 353 | 9.6385542e-02 2.3287671e-01 2.0000000e-01 5.1546392e-02 354 | 1.0843373e-01 1.9178082e-01 1.7000000e-01 7.2164948e-02 355 | 8.4337349e-02 2.6027397e-01 2.0000000e-01 9.2783505e-02 356 | 6.0240964e-02 2.7397260e-01 2.3000000e-01 1.1340206e-01 357 | 7.2289157e-02 2.4657534e-01 3.2000000e-01 1.3402062e-01 358 | 7.2289157e-02 2.3287671e-01 3.4000000e-01 2.2680412e-01 359 | 8.4337349e-02 3.2876712e-01 3.8000000e-01 2.9896907e-01 360 | 7.2289157e-02 2.0547945e-01 4.5000000e-01 3.1958763e-01 361 | 6.0240964e-02 2.0547945e-01 6.4000000e-01 5.1546392e-01 362 | 6.0240964e-02 2.0547945e-01 7.7000000e-01 8.5567010e-01 363 | 7.2289157e-02 2.0547945e-01 8.8000000e-01 8.4536082e-01 364 | 9.6385542e-02 2.3287671e-01 7.4000000e-01 9.0721649e-01 365 | 8.4337349e-02 3.2876712e-01 4.7000000e-01 3.0927835e-01 366 | 7.2289157e-02 4.1095890e-01 3.2000000e-01 2.2680412e-01 367 | 1.5662651e-01 3.8356164e-01 4.0000000e-01 2.0618557e-01 368 | 1.3253012e-01 3.5616438e-01 3.0000000e-01 1.8556701e-01 369 | 1.0843373e-01 3.9726027e-01 2.8000000e-01 1.6494845e-01 370 | 1.5662651e-01 3.1506849e-01 3.4000000e-01 1.6494845e-01 371 | 1.2048193e-01 3.2876712e-01 1.9000000e-01 1.6494845e-01 372 | 9.6385542e-02 3.2876712e-01 1.3000000e-01 1.7525773e-01 373 | 1.2048193e-01 4.1095890e-01 1.7000000e-01 1.9587629e-01 374 | 1.3253012e-01 3.0136986e-01 1.3000000e-01 2.2680412e-01 375 | 1.4457831e-01 3.5616438e-01 1.2000000e-01 1.8556701e-01 376 | 1.3253012e-01 3.4246575e-01 1.0000000e-01 1.5463918e-01 377 | 1.4457831e-01 3.6986301e-01 1.2000000e-01 1.8556701e-01 378 | 1.8072289e-01 3.6986301e-01 1.1000000e-01 2.3711340e-01 379 | 1.0000000e+00 4.1095890e-01 8.0000000e-02 1.9587629e-01 380 | 1.9277108e-01 4.1095890e-01 9.0000000e-02 2.1649485e-01 381 | 2.1686747e-01 4.5205479e-01 9.0000000e-02 2.5773196e-01 382 | 2.0481928e-01 3.9726027e-01 7.0000000e-02 2.3711340e-01 383 | 2.2891566e-01 4.1095890e-01 9.0000000e-02 2.5773196e-01 384 | 2.6506024e-01 4.3835616e-01 8.0000000e-02 2.8865979e-01 385 | 2.4096386e-01 4.5205479e-01 1.3000000e-01 3.0927835e-01 386 | 2.5301205e-01 4.9315068e-01 8.0000000e-02 2.9896907e-01 387 | 3.1325301e-01 5.0684932e-01 8.0000000e-02 4.1237113e-01 388 | 3.2530120e-01 3.6986301e-01 8.0000000e-02 3.6082474e-01 389 | 3.2530120e-01 4.2465753e-01 8.0000000e-02 3.6082474e-01 390 | 3.3734940e-01 3.5616438e-01 8.0000000e-02 3.2989691e-01 391 | 3.6144578e-01 4.7945205e-01 7.0000000e-02 3.0927835e-01 392 | 4.0963855e-01 5.6164384e-01 6.0000000e-02 3.1958763e-01 393 | 3.7349398e-01 4.9315068e-01 8.0000000e-02 3.0927835e-01 394 | 3.8554217e-01 5.2054795e-01 7.0000000e-02 3.1958763e-01 395 | 3.2530120e-01 5.3424658e-01 9.0000000e-02 3.6082474e-01 396 | 3.1325301e-01 4.9315068e-01 8.0000000e-02 3.7113402e-01 397 | 3.0120482e-01 5.0684932e-01 7.0000000e-02 3.1958763e-01 398 | 3.0120482e-01 6.4383562e-01 9.0000000e-02 3.0927835e-01 399 | 2.4096386e-01 5.7534247e-01 9.0000000e-02 2.7835052e-01 400 | 2.2891566e-01 4.7945205e-01 9.0000000e-02 2.9896907e-01 401 | 2.4096386e-01 4.3835616e-01 1.2000000e-01 2.8865979e-01 402 | 1.9277108e-01 4.3835616e-01 1.3000000e-01 2.7835052e-01 403 | 1.9277108e-01 4.3835616e-01 1.5000000e-01 2.7835052e-01 404 | 2.0481928e-01 4.9315068e-01 1.6000000e-01 2.9896907e-01 405 | 2.0481928e-01 4.3835616e-01 2.1000000e-01 2.7835052e-01 406 | 2.4096386e-01 4.2465753e-01 1.9000000e-01 2.7835052e-01 407 | 4.6987952e-01 3.9726027e-01 2.4000000e-01 3.1958763e-01 408 | 3.0120482e-01 4.9315068e-01 3.2000000e-01 2.9896907e-01 409 | 2.4096386e-01 4.3835616e-01 3.3000000e-01 3.1958763e-01 410 | 2.4096386e-01 3.6986301e-01 4.0000000e-01 3.4020619e-01 411 | 2.8915663e-01 4.3835616e-01 3.5000000e-01 4.2268041e-01 412 | 2.8915663e-01 3.9726027e-01 4.0000000e-01 4.5360825e-01 413 | 2.6506024e-01 3.4246575e-01 6.0000000e-01 6.3917526e-01 414 | 2.5301205e-01 4.1095890e-01 8.0000000e-01 7.7319588e-01 415 | 3.0120482e-01 4.2465753e-01 7.9000000e-01 8.4536082e-01 416 | 3.8554217e-01 4.5205479e-01 8.1000000e-01 1.0000000e+00 417 | 3.3734940e-01 3.9726027e-01 4.1000000e-01 3.5051546e-01 418 | 3.2530120e-01 5.0684932e-01 3.2000000e-01 2.3711340e-01 419 | 3.2530120e-01 4.5205479e-01 3.3000000e-01 1.9587629e-01 420 | 3.0120482e-01 4.7945205e-01 3.7000000e-01 1.8556701e-01 421 | 3.1325301e-01 5.3424658e-01 2.7000000e-01 1.8556701e-01 422 | 3.1325301e-01 5.2054795e-01 2.1000000e-01 1.7525773e-01 423 | 3.2530120e-01 5.4794521e-01 2.0000000e-01 1.7525773e-01 424 | 3.1325301e-01 4.2465753e-01 1.8000000e-01 1.6494845e-01 425 | 3.3734940e-01 4.7945205e-01 1.7000000e-01 1.4432990e-01 426 | 3.4939759e-01 5.4794521e-01 1.6000000e-01 1.4432990e-01 427 | 3.6144578e-01 5.4794521e-01 1.4000000e-01 1.3402062e-01 428 | 4.8192771e-01 5.0684932e-01 1.0000000e-01 1.3402062e-01 429 | 4.6987952e-01 4.6575342e-01 1.0000000e-01 1.2371134e-01 430 | 4.4578313e-01 4.9315068e-01 1.0000000e-01 1.1340206e-01 431 | 4.6987952e-01 4.6575342e-01 1.0000000e-01 1.2371134e-01 432 | 4.3373494e-01 4.2465753e-01 8.0000000e-02 1.1340206e-01 433 | 4.5783133e-01 5.7534247e-01 9.0000000e-02 1.2371134e-01 434 | 4.6987952e-01 5.0684932e-01 9.0000000e-02 1.1340206e-01 435 | 4.9397590e-01 5.7534247e-01 9.0000000e-02 1.1340206e-01 436 | 4.9397590e-01 5.4794521e-01 1.0000000e-01 1.1340206e-01 437 | 4.9397590e-01 5.3424658e-01 8.0000000e-02 1.1340206e-01 438 | 5.1807229e-01 5.4794521e-01 9.0000000e-02 1.0309278e-01 439 | 5.4216867e-01 6.1643836e-01 1.0000000e-01 1.0309278e-01 440 | 5.1807229e-01 5.8904110e-01 9.0000000e-02 1.0309278e-01 441 | 5.7831325e-01 5.0684932e-01 8.0000000e-02 1.0309278e-01 442 | 6.0240964e-01 5.4794521e-01 8.0000000e-02 9.2783505e-02 443 | 6.2650602e-01 5.6164384e-01 8.0000000e-02 1.1340206e-01 444 | 6.7469880e-01 6.8493151e-01 8.0000000e-02 1.1340206e-01 445 | 6.2650602e-01 5.8904110e-01 8.0000000e-02 1.1340206e-01 446 | 6.0240964e-01 5.7534247e-01 1.0000000e-01 1.2371134e-01 447 | 5.5421687e-01 7.1232877e-01 1.1000000e-01 1.0309278e-01 448 | 4.8192771e-01 6.5753425e-01 1.1000000e-01 1.0309278e-01 449 | 4.9397590e-01 6.1643836e-01 1.0000000e-01 1.0309278e-01 450 | 4.4578313e-01 6.9863014e-01 1.1000000e-01 1.0309278e-01 451 | 3.9759036e-01 6.5753425e-01 1.2000000e-01 9.2783505e-02 452 | 3.7349398e-01 5.4794521e-01 1.1000000e-01 1.0309278e-01 453 | 3.4939759e-01 5.4794521e-01 1.3000000e-01 1.0309278e-01 454 | 3.0120482e-01 5.4794521e-01 1.5000000e-01 1.1340206e-01 455 | 2.8915663e-01 5.0684932e-01 1.8000000e-01 1.1340206e-01 456 | 2.6506024e-01 4.1095890e-01 2.0000000e-01 1.2371134e-01 457 | 2.4096386e-01 4.5205479e-01 2.3000000e-01 1.3402062e-01 458 | 2.1686747e-01 5.0684932e-01 3.5000000e-01 1.3402062e-01 459 | 2.1686747e-01 5.0684932e-01 2.8000000e-01 1.3402062e-01 460 | 2.6506024e-01 5.2054795e-01 3.5000000e-01 1.5463918e-01 461 | 2.0481928e-01 5.2054795e-01 3.8000000e-01 1.6494845e-01 462 | 1.9277108e-01 4.2465753e-01 4.0000000e-01 1.8556701e-01 463 | 2.1686747e-01 4.5205479e-01 4.9000000e-01 2.3711340e-01 464 | 2.2891566e-01 4.2465753e-01 4.7000000e-01 2.8865979e-01 465 | 2.0481928e-01 3.6986301e-01 6.6000000e-01 4.4329897e-01 466 | 1.9277108e-01 4.2465753e-01 8.0000000e-01 6.4948454e-01 467 | 1.9277108e-01 3.4246575e-01 9.3000000e-01 7.4226804e-01 468 | 2.0481928e-01 3.6986301e-01 1.0000000e+00 8.6597938e-01 469 | 2.6506024e-01 4.5205479e-01 7.6000000e-01 4.8453608e-01 470 | 2.4096386e-01 4.6575342e-01 5.3000000e-01 1.5463918e-01 471 | 2.1686747e-01 5.4794521e-01 3.5000000e-01 1.0309278e-01 472 | 1.9277108e-01 5.2054795e-01 3.2000000e-01 9.2783505e-02 473 | 2.0481928e-01 5.2054795e-01 3.2000000e-01 9.2783505e-02 474 | 2.0481928e-01 5.6164384e-01 2.8000000e-01 9.2783505e-02 475 | 2.0481928e-01 4.6575342e-01 2.8000000e-01 8.2474227e-02 476 | 2.0481928e-01 5.6164384e-01 2.0000000e-01 8.2474227e-02 477 | 2.2891566e-01 6.0273973e-01 2.2000000e-01 8.2474227e-02 478 | 2.1686747e-01 5.6164384e-01 1.9000000e-01 8.2474227e-02 479 | 2.2891566e-01 6.1643836e-01 1.7000000e-01 8.2474227e-02 480 | 2.2891566e-01 5.0684932e-01 1.3000000e-01 7.2164948e-02 481 | 2.5301205e-01 4.5205479e-01 1.3000000e-01 7.2164948e-02 482 | 2.7710843e-01 4.9315068e-01 1.5000000e-01 7.2164948e-02 483 | 2.5301205e-01 4.3835616e-01 1.1000000e-01 6.1855670e-02 484 | 3.1325301e-01 5.6164384e-01 1.1000000e-01 6.1855670e-02 485 | --------------------------------------------------------------------------------