/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is mozilla.org code.
 *
 * The Initial Developer of the Original Code is
 * Netscape Communications Corporation.
 * Portions created by the Initial Developer are Copyright (C) 1998
 * the Initial Developer. All Rights Reserved.
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either of the GNU General Public License Version 2 or later (the "GPL"),
 * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 *
 * ***** END LICENSE BLOCK ***** */

package org.mozilla.intl.chardet ;

import java.lang.* ;

public class Big5Statistics extends nsEUCStatistics {

     static float[] mFirstByteFreq ;
     static float   mFirstByteStdDev;
     static float   mFirstByteMean;
     static float   mFirstByteWeight;
     static float[] mSecondByteFreq;
     static float   mSecondByteStdDev;
     static float   mSecondByteMean;
     static float   mSecondByteWeight;

     public float[] mFirstByteFreq() { return mFirstByteFreq; }  
     public float   mFirstByteStdDev()  { return mFirstByteStdDev; }  
     public float   mFirstByteMean()  { return mFirstByteMean; }  
     public float   mFirstByteWeight()  { return mFirstByteWeight; }  
     public float[] mSecondByteFreq()  { return mSecondByteFreq; }  
     public float   mSecondByteStdDev()  { return mSecondByteStdDev; }  
     public float   mSecondByteMean()  { return mSecondByteMean; }  
     public float   mSecondByteWeight()  { return mSecondByteWeight; }  

     public Big5Statistics() {

         mFirstByteFreq = new float[] { 
                    0.000000f, // FreqH[a1]
                    0.000000f, // FreqH[a2]
                    0.000000f, // FreqH[a3]
                    0.114427f, // FreqH[a4]
                    0.061058f, // FreqH[a5]
                    0.075598f, // FreqH[a6]
                    0.048386f, // FreqH[a7]
                    0.063966f, // FreqH[a8]
                    0.027094f, // FreqH[a9]
                    0.095787f, // FreqH[aa]
                    0.029525f, // FreqH[ab]
                    0.031331f, // FreqH[ac]
                    0.036915f, // FreqH[ad]
                    0.021805f, // FreqH[ae]
                    0.019349f, // FreqH[af]
                    0.037496f, // FreqH[b0]
                    0.018068f, // FreqH[b1]
                    0.012760f, // FreqH[b2]
                    0.030053f, // FreqH[b3]
                    0.017339f, // FreqH[b4]
                    0.016731f, // FreqH[b5]
                    0.019501f, // FreqH[b6]
                    0.011240f, // FreqH[b7]
                    0.032973f, // FreqH[b8]
                    0.016658f, // FreqH[b9]
                    0.015872f, // FreqH[ba]
                    0.021458f, // FreqH[bb]
                    0.012378f, // FreqH[bc]
                    0.017003f, // FreqH[bd]
                    0.020802f, // FreqH[be]
                    0.012454f, // FreqH[bf]
                    0.009239f, // FreqH[c0]
                    0.012829f, // FreqH[c1]
                    0.007922f, // FreqH[c2]
                    0.010079f, // FreqH[c3]
                    0.009815f, // FreqH[c4]
                    0.010104f, // FreqH[c5]
                    0.000000f, // FreqH[c6]
                    0.000000f, // FreqH[c7]
                    0.000000f, // FreqH[c8]
                    0.000053f, // FreqH[c9]
                    0.000035f, // FreqH[ca]
                    0.000105f, // FreqH[cb]
                    0.000031f, // FreqH[cc]
                    0.000088f, // FreqH[cd]
                    0.000027f, // FreqH[ce]
                    0.000027f, // FreqH[cf]
                    0.000026f, // FreqH[d0]
                    0.000035f, // FreqH[d1]
                    0.000024f, // FreqH[d2]
                    0.000034f, // FreqH[d3]
                    0.000375f, // FreqH[d4]
                    0.000025f, // FreqH[d5]
                    0.000028f, // FreqH[d6]
                    0.000020f, // FreqH[d7]
                    0.000024f, // FreqH[d8]
                    0.000028f, // FreqH[d9]
                    0.000031f, // FreqH[da]
                    0.000059f, // FreqH[db]
                    0.000040f, // FreqH[dc]
                    0.000030f, // FreqH[dd]
                    0.000079f, // FreqH[de]
                    0.000037f, // FreqH[df]
                    0.000040f, // FreqH[e0]
                    0.000023f, // FreqH[e1]
                    0.000030f, // FreqH[e2]
                    0.000027f, // FreqH[e3]
                    0.000064f, // FreqH[e4]
                    0.000020f, // FreqH[e5]
                    0.000027f, // FreqH[e6]
                    0.000025f, // FreqH[e7]
                    0.000074f, // FreqH[e8]
                    0.000019f, // FreqH[e9]
                    0.000023f, // FreqH[ea]
                    0.000021f, // FreqH[eb]
                    0.000018f, // FreqH[ec]
                    0.000017f, // FreqH[ed]
                    0.000035f, // FreqH[ee]
                    0.000021f, // FreqH[ef]
                    0.000019f, // FreqH[f0]
                    0.000025f, // FreqH[f1]
                    0.000017f, // FreqH[f2]
                    0.000037f, // FreqH[f3]
                    0.000018f, // FreqH[f4]
                    0.000018f, // FreqH[f5]
                    0.000019f, // FreqH[f6]
                    0.000022f, // FreqH[f7]
                    0.000033f, // FreqH[f8]
                    0.000032f, // FreqH[f9]
                    0.000000f, // FreqH[fa]
                    0.000000f, // FreqH[fb]
                    0.000000f, // FreqH[fc]
                    0.000000f, // FreqH[fd]
                    0.000000f  // FreqH[fe]
	};
                 
	mFirstByteStdDev = 0.020606f; // Lead Byte StdDev
	mFirstByteMean = 0.010638f; // Lead Byte Mean
 	mFirstByteWeight = 0.675261f; // Lead Byte Weight

	mSecondByteFreq = new float[] {
                     0.020256f, // FreqL[a1]
                     0.003293f, // FreqL[a2]
                     0.045811f, // FreqL[a3]
                     0.016650f, // FreqL[a4]
                     0.007066f, // FreqL[a5]
                     0.004146f, // FreqL[a6]
                     0.009229f, // FreqL[a7]
                     0.007333f, // FreqL[a8]
                     0.003296f, // FreqL[a9]
                     0.005239f, // FreqL[aa]
                     0.008282f, // FreqL[ab]
                     0.003791f, // FreqL[ac]
                     0.006116f, // FreqL[ad]
                     0.003536f, // FreqL[ae]
                     0.004024f, // FreqL[af]
                     0.016654f, // FreqL[b0]
                     0.009334f, // FreqL[b1]
                     0.005429f, // FreqL[b2]
                     0.033392f, // FreqL[b3]
                     0.006121f, // FreqL[b4]
                     0.008983f, // FreqL[b5]
                     0.002801f, // FreqL[b6]
                     0.004221f, // FreqL[b7]
                     0.010357f, // FreqL[b8]
                     0.014695f, // FreqL[b9]
                     0.077937f, // FreqL[ba]
                     0.006314f, // FreqL[bb]
                     0.004020f, // FreqL[bc]
                     0.007331f, // FreqL[bd]
                     0.007150f, // FreqL[be]
                     0.005341f, // FreqL[bf]
                     0.009195f, // FreqL[c0]
                     0.005350f, // FreqL[c1]
                     0.005698f, // FreqL[c2]
                     0.004472f, // FreqL[c3]
                     0.007242f, // FreqL[c4]
                     0.004039f, // FreqL[c5]
                     0.011154f, // FreqL[c6]
                     0.016184f, // FreqL[c7]
                     0.004741f, // FreqL[c8]
                     0.012814f, // FreqL[c9]
                     0.007679f, // FreqL[ca]
                     0.008045f, // FreqL[cb]
                     0.016631f, // FreqL[cc]
                     0.009451f, // FreqL[cd]
                     0.016487f, // FreqL[ce]
                     0.007287f, // FreqL[cf]
                     0.012688f, // FreqL[d0]
                     0.017421f, // FreqL[d1]
                     0.013205f, // FreqL[d2]
                     0.031480f, // FreqL[d3]
                     0.003404f, // FreqL[d4]
                     0.009149f, // FreqL[d5]
                     0.008921f, // FreqL[d6]
                     0.007514f, // FreqL[d7]
                     0.008683f, // FreqL[d8]
                     0.008203f, // FreqL[d9]
                     0.031403f, // FreqL[da]
                     0.011733f, // FreqL[db]
                     0.015617f, // FreqL[dc]
                     0.015306f, // FreqL[dd]
                     0.004004f, // FreqL[de]
                     0.010899f, // FreqL[df]
                     0.009961f, // FreqL[e0]
                     0.008388f, // FreqL[e1]
                     0.010920f, // FreqL[e2]
                     0.003925f, // FreqL[e3]
                     0.008585f, // FreqL[e4]
                     0.009108f, // FreqL[e5]
                     0.015546f, // FreqL[e6]
                     0.004659f, // FreqL[e7]
                     0.006934f, // FreqL[e8]
                     0.007023f, // FreqL[e9]
                     0.020252f, // FreqL[ea]
                     0.005387f, // FreqL[eb]
                     0.024704f, // FreqL[ec]
                     0.006963f, // FreqL[ed]
                     0.002625f, // FreqL[ee]
                     0.009512f, // FreqL[ef]
                     0.002971f, // FreqL[f0]
                     0.008233f, // FreqL[f1]
                     0.010000f, // FreqL[f2]
                     0.011973f, // FreqL[f3]
                     0.010553f, // FreqL[f4]
                     0.005945f, // FreqL[f5]
                     0.006349f, // FreqL[f6]
                     0.009401f, // FreqL[f7]
                     0.008577f, // FreqL[f8]
                     0.008186f, // FreqL[f9]
                     0.008159f, // FreqL[fa]
                     0.005033f, // FreqL[fb]
                     0.008714f, // FreqL[fc]
                     0.010614f, // FreqL[fd]
                     0.006554f  // FreqL[fe]
	};

	mSecondByteStdDev = 0.009909f; // Trail Byte StdDev
	mSecondByteMean = 0.010638f; // Trail Byte Mean
	mSecondByteWeight = 0.324739f ;  // Trial Byte Weight

	}
}

