2015年4月22日水曜日

CSSではみ出した部分を「…」にする方法

CSSではみ出した部分を「…」にする方法をメモしておきます.

.hogehoge {
    width: 4em;
    white-space: nowrap; 
    overflow: hidden;
    text-overflow: ellipsis;
}
<div class="hogehoge">どうしてプログラムのサンプルに使うテキストは「ほげほげ」なんだろう?</div>

「text-overflow: ellipsis;」と記せば,「…」にならなかったので,何でだろうとずっと悩んでいたのですが, このプロパティは,先の例のように他の3つのプロパティといっしょに使わないと効果が発揮されないんですね. ようやく謎が解けた.\(^O^)/

2015年4月19日日曜日

ロジスティック回帰をJavaで実装

文献[1]で紹介されているロジスティック回帰をJavaで実装してみました.

ロジスティック回帰は,分類問題に適用できる機械学習手法の1つです(確率化したパーセプトロンという理解でいいのかな). 文献で紹介されているとおりあらかじめ用意したデータを分類する関数を求めてみました. グラフにした結果は次の図のとおりです. 青の点が正解,赤の点が不正解,黄色の直線がそれらを分類するために推定された関数,オレンジが正解になる確率が0の領域で,緑が1の領域です. 直線付近は,正解と不正解の境界になっているので,正解になる確率がどんと落ちてます.

ちなみに,これまでグラフはExcelで描いてきたのですが,今回は難しかったので,d3.jsを使ってみました(かなりゴリ押しですけど). 使ってみて思いましたが,大本の文献で使っているPythonがやっぱり一番簡単そうですね.

[1] 中谷 秀洋: ロジスティック回帰を実装してみよう, 機械学習はじめよう 第20回, http://gihyo.jp/dev/serial/01/machine-learning/0020

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
.axis text {
font: 10px sans-serif;
}
.axis path, .axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
.axis path {
display: none;
}
.isoline {
fill: none;
stroke: #fff;
}
</style>
</head>
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>
var trainingSet = [
[0.802533,-0.901546,1.000000],
[2.080921,0.763771,1.000000],
[0.984575,-1.683412,0.000000],
[-0.027290,0.115246,0.000000],
[-0.390167,-0.643389,0.000000],
[0.052461,0.521342,1.000000],
[-0.823967,0.260718,0.000000],
[-0.452988,1.403147,1.000000],
[0.271131,-0.007054,1.000000],
[0.904959,0.856854,1.000000],
[0.372334,0.397673,1.000000],
[0.062946,0.941460,1.000000],
[0.441104,-0.731880,0.000000],
[-0.011764,-0.157362,0.000000],
[-0.582258,-0.205970,0.000000],
[-0.399901,0.891316,0.000000],
[0.410761,-1.171237,0.000000],
[-0.390508,0.490140,0.000000],
[0.959775,0.752386,1.000000],
[-0.657956,0.645032,0.000000],
[-0.315452,1.054895,1.000000],
[0.595783,1.022551,1.000000],
[-2.356197,-1.525068,0.000000],
[1.180857,0.006141,1.000000],
[-0.136989,-0.422208,0.000000],
[-0.016531,0.477779,1.000000],
[0.009669,-1.691693,0.000000],
[-0.461239,0.841747,0.000000],
[-0.241905,-0.684038,0.000000],
[-1.916600,0.315350,0.000000],
[0.404922,-0.215400,1.000000],
[0.956252,0.280751,1.000000],
[2.213808,-0.048226,1.000000],
[1.091273,3.368920,1.000000],
[-2.253965,-0.377177,0.000000],
[1.184318,-1.029071,1.000000],
[1.448020,0.633192,1.000000],
[-1.373517,-0.575276,0.000000],
[0.624780,-0.321970,1.000000],
[-0.677535,1.787353,1.000000],
[-1.088791,-1.748513,0.000000],
[0.843238,1.180313,1.000000],
[0.913130,0.185105,1.000000],
[0.112857,-1.973006,0.000000],
[0.038523,0.453043,1.000000],
[0.077915,-0.324194,0.000000],
[1.452830,1.001432,1.000000],
[0.757115,0.574364,1.000000],
[1.028849,-1.449043,0.000000],
[0.599489,-0.741797,0.000000],
[-0.657358,0.371411,0.000000],
[0.436447,-0.190376,1.000000],
[0.121379,-1.319396,0.000000],
[-0.713610,0.339954,0.000000],
[-1.732675,1.326290,0.000000],
[0.700625,0.054296,1.000000],
[-1.111706,-0.646747,0.000000],
[-0.892433,0.842623,0.000000],
[-0.417557,-0.240465,0.000000],
[-0.915154,-0.594477,0.000000],
[0.071545,-0.855843,0.000000],
[0.057907,-0.787928,0.000000],
[1.370322,1.882301,1.000000],
[-1.772903,0.103041,0.000000],
[-1.212589,0.906490,0.000000],
[-0.153375,-0.315254,0.000000],
[-0.383783,-0.504629,0.000000],
[0.689291,1.514552,1.000000],
[-1.473476,0.941793,0.000000],
[-0.540060,-0.026335,0.000000],
[-0.522521,0.270191,0.000000],
[-0.264120,1.280724,1.000000],
[0.989167,1.630123,1.000000],
[-0.647126,-2.014505,0.000000],
[-0.862140,0.916506,0.000000],
[-0.383686,-0.457636,0.000000],
[0.524783,0.234312,1.000000],
[-1.322820,0.329820,0.000000],
[0.198013,-0.071648,0.000000],
[1.003440,0.533343,1.000000],
[-2.661752,-0.750620,0.000000],
[1.270895,0.152456,1.000000],
[1.525194,1.759799,1.000000],
[0.992725,1.119699,1.000000],
[-0.772095,0.006026,0.000000],
[0.624311,0.981363,1.000000],
[1.267616,-0.906492,1.000000],
[-0.534770,-0.184754,0.000000],
[0.027507,0.600673,1.000000],
[0.366992,-0.719425,0.000000],
[0.012511,0.937434,1.000000],
[-1.020741,-0.461996,0.000000],
[-1.683339,-0.246059,0.000000],
[-0.370141,-1.243967,0.000000],
[-1.701551,0.624191,0.000000],
[-1.089437,-0.421465,0.000000],
[-1.562529,0.226282,0.000000],
[-1.042958,-1.365641,0.000000],
[0.942847,0.477162,1.000000],
[-1.394755,-1.607465,0.000000]
];
var weightVector =
[
[4.264182798751772,2.991179566394801,-0.7741284019877606]
];
var posibilityDistribution =
[
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.14,0.18,0.24,0.31,0.39,0.47,0.56,0.64,0.71,0.78,0.83,0.87,0.91,0.93,0.95,0.96,0.97,0.98],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.09,0.13,0.17,0.22,0.29,0.36,0.45,0.53,0.61,0.69,0.76,0.82,0.86,0.90,0.93,0.95,0.96,0.97,0.98,0.99],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.09,0.12,0.16,0.21,0.27,0.34,0.42,0.51,0.59,0.67,0.74,0.80,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.06,0.08,0.11,0.14,0.19,0.25,0.32,0.40,0.48,0.56,0.65,0.72,0.78,0.84,0.88,0.91,0.93,0.95,0.97,0.98,0.98,0.99,0.99],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.13,0.17,0.23,0.30,0.37,0.45,0.54,0.62,0.70,0.77,0.82,0.87,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.06,0.09,0.12,0.16,0.21,0.27,0.35,0.43,0.51,0.60,0.68,0.75,0.81,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.20,0.25,0.33,0.40,0.49,0.57,0.65,0.73,0.79,0.84,0.88,0.91,0.94,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.13,0.18,0.24,0.30,0.38,0.46,0.55,0.63,0.71,0.77,0.83,0.87,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.07,0.09,0.12,0.17,0.22,0.28,0.36,0.44,0.52,0.61,0.68,0.75,0.81,0.86,0.90,0.92,0.94,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.20,0.26,0.33,0.41,0.50,0.58,0.66,0.73,0.80,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.08,0.10,0.14,0.19,0.24,0.31,0.39,0.47,0.56,0.64,0.71,0.78,0.83,0.87,0.91,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.09,0.13,0.17,0.22,0.29,0.36,0.45,0.53,0.62,0.69,0.76,0.82,0.86,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.06,0.09,0.12,0.16,0.21,0.27,0.34,0.42,0.51,0.59,0.67,0.74,0.80,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.14,0.19,0.25,0.32,0.40,0.48,0.57,0.65,0.72,0.78,0.84,0.88,0.91,0.93,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.13,0.18,0.23,0.30,0.37,0.46,0.54,0.62,0.70,0.77,0.82,0.87,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.06,0.09,0.12,0.16,0.21,0.28,0.35,0.43,0.52,0.60,0.68,0.75,0.81,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.20,0.26,0.33,0.41,0.49,0.57,0.66,0.73,0.79,0.84,0.88,0.91,0.94,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.14,0.18,0.24,0.30,0.38,0.46,0.55,0.63,0.71,0.77,0.83,0.87,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.07,0.09,0.12,0.17,0.22,0.28,0.36,0.44,0.52,0.61,0.69,0.75,0.81,0.86,0.90,0.92,0.94,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.20,0.26,0.33,0.41,0.50,0.58,0.66,0.74,0.80,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.08,0.10,0.14,0.19,0.24,0.31,0.39,0.47,0.56,0.64,0.71,0.78,0.83,0.87,0.91,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.09,0.13,0.17,0.23,0.29,0.37,0.45,0.53,0.62,0.69,0.76,0.82,0.86,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.06,0.09,0.12,0.16,0.21,0.27,0.34,0.42,0.51,0.59,0.67,0.74,0.80,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.14,0.19,0.25,0.32,0.40,0.48,0.57,0.65,0.72,0.79,0.84,0.88,0.91,0.93,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.13,0.18,0.23,0.30,0.37,0.46,0.54,0.62,0.70,0.77,0.82,0.87,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.06,0.09,0.12,0.16,0.21,0.28,0.35,0.43,0.52,0.60,0.68,0.75,0.81,0.86,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.20,0.26,0.33,0.41,0.49,0.58,0.66,0.73,0.79,0.84,0.88,0.91,0.94,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.14,0.18,0.24,0.31,0.38,0.47,0.55,0.63,0.71,0.77,0.83,0.87,0.91,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.03,0.05,0.07,0.09,0.12,0.17,0.22,0.28,0.36,0.44,0.53,0.61,0.69,0.76,0.81,0.86,0.90,0.92,0.94,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.20,0.26,0.34,0.42,0.50,0.58,0.66,0.74,0.80,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.06,0.08,0.10,0.14,0.19,0.24,0.31,0.39,0.47,0.56,0.64,0.72,0.78,0.83,0.88,0.91,0.93,0.95,0.97,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.09,0.13,0.17,0.23,0.29,0.37,0.45,0.53,0.62,0.69,0.76,0.82,0.86,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.06,0.09,0.12,0.16,0.21,0.27,0.34,0.42,0.51,0.59,0.67,0.74,0.80,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.14,0.19,0.25,0.32,0.40,0.48,0.57,0.65,0.72,0.79,0.84,0.88,0.91,0.94,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.13,0.18,0.23,0.30,0.37,0.46,0.54,0.63,0.70,0.77,0.82,0.87,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.06,0.09,0.12,0.16,0.21,0.28,0.35,0.43,0.52,0.60,0.68,0.75,0.81,0.86,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.20,0.26,0.33,0.41,0.49,0.58,0.66,0.73,0.79,0.84,0.88,0.91,0.94,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.14,0.18,0.24,0.31,0.38,0.47,0.55,0.63,0.71,0.77,0.83,0.87,0.91,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.09,0.12,0.17,0.22,0.28,0.36,0.44,0.53,0.61,0.69,0.76,0.81,0.86,0.90,0.92,0.95,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.20,0.26,0.34,0.42,0.50,0.59,0.67,0.74,0.80,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.06,0.08,0.10,0.14,0.19,0.25,0.31,0.39,0.48,0.56,0.64,0.72,0.78,0.83,0.88,0.91,0.93,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.13,0.17,0.23,0.29,0.37,0.45,0.54,0.62,0.70,0.76,0.82,0.86,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.06,0.09,0.12,0.16,0.21,0.27,0.34,0.42,0.51,0.59,0.67,0.74,0.80,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.19,0.25,0.32,0.40,0.48,0.57,0.65,0.72,0.79,0.84,0.88,0.91,0.94,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.13,0.18,0.23,0.30,0.38,0.46,0.54,0.63,0.70,0.77,0.82,0.87,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.07,0.09,0.12,0.16,0.22,0.28,0.35,0.43,0.52,0.60,0.68,0.75,0.81,0.86,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.20,0.26,0.33,0.41,0.49,0.58,0.66,0.73,0.79,0.84,0.88,0.91,0.94,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.14,0.18,0.24,0.31,0.38,0.47,0.55,0.64,0.71,0.78,0.83,0.87,0.91,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.09,0.13,0.17,0.22,0.29,0.36,0.44,0.53,0.61,0.69,0.76,0.81,0.86,0.90,0.92,0.95,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.20,0.27,0.34,0.42,0.50,0.59,0.67,0.74,0.80,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.06,0.08,0.10,0.14,0.19,0.25,0.31,0.39,0.48,0.56,0.64,0.72,0.78,0.83,0.88,0.91,0.93,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.13,0.17,0.23,0.29,0.37,0.45,0.54,0.62,0.70,0.76,0.82,0.87,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.06,0.09,0.12,0.16,0.21,0.27,0.35,0.43,0.51,0.60,0.67,0.74,0.80,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.19,0.25,0.32,0.40,0.49,0.57,0.65,0.72,0.79,0.84,0.88,0.91,0.94,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.13,0.18,0.23,0.30,0.38,0.46,0.55,0.63,0.70,0.77,0.83,0.87,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.07,0.09,0.12,0.16,0.22,0.28,0.35,0.43,0.52,0.60,0.68,0.75,0.81,0.86,0.89,0.92,0.94,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.20,0.26,0.33,0.41,0.49,0.58,0.66,0.73,0.79,0.84,0.88,0.91,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.14,0.18,0.24,0.31,0.39,0.47,0.55,0.64,0.71,0.78,0.83,0.87,0.91,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.09,0.13,0.17,0.22,0.29,0.36,0.44,0.53,0.61,0.69,0.76,0.82,0.86,0.90,0.92,0.95,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.12,0.15,0.21,0.27,0.34,0.42,0.50,0.59,0.67,0.74,0.80,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.06,0.08,0.11,0.14,0.19,0.25,0.32,0.39,0.48,0.56,0.64,0.72,0.78,0.84,0.88,0.91,0.93,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.13,0.17,0.23,0.29,0.37,0.45,0.54,0.62,0.70,0.76,0.82,0.87,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.06,0.09,0.12,0.16,0.21,0.27,0.35,0.43,0.51,0.60,0.68,0.75,0.81,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.19,0.25,0.32,0.40,0.49,0.57,0.65,0.73,0.79,0.84,0.88,0.91,0.94,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.13,0.18,0.23,0.30,0.38,0.46,0.55,0.63,0.71,0.77,0.83,0.87,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.07,0.09,0.12,0.16,0.22,0.28,0.35,0.44,0.52,0.61,0.68,0.75,0.81,0.86,0.89,0.92,0.94,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.20,0.26,0.33,0.41,0.50,0.58,0.66,0.73,0.79,0.84,0.88,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.14,0.18,0.24,0.31,0.39,0.47,0.56,0.64,0.71,0.78,0.83,0.87,0.91,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.09,0.13,0.17,0.22,0.29,0.36,0.44,0.53,0.61,0.69,0.76,0.82,0.86,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.12,0.16,0.21,0.27,0.34,0.42,0.50,0.59,0.67,0.74,0.80,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.06,0.08,0.11,0.14,0.19,0.25,0.32,0.40,0.48,0.56,0.65,0.72,0.78,0.84,0.88,0.91,0.93,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.13,0.17,0.23,0.30,0.37,0.45,0.54,0.62,0.70,0.77,0.82,0.87,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.06,0.09,0.12,0.16,0.21,0.27,0.35,0.43,0.51,0.60,0.68,0.75,0.81,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.20,0.25,0.32,0.40,0.49,0.57,0.65,0.73,0.79,0.84,0.88,0.91,0.94,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.13,0.18,0.24,0.30,0.38,0.46,0.55,0.63,0.71,0.77,0.83,0.87,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.07,0.09,0.12,0.17,0.22,0.28,0.36,0.44,0.52,0.61,0.68,0.75,0.81,0.86,0.90,0.92,0.94,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.20,0.26,0.33,0.41,0.50,0.58,0.66,0.73,0.80,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.08,0.10,0.14,0.18,0.24,0.31,0.39,0.47,0.56,0.64,0.71,0.78,0.83,0.87,0.91,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.09,0.13,0.17,0.22,0.29,0.36,0.45,0.53,0.61,0.69,0.76,0.82,0.86,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.09,0.12,0.16,0.21,0.27,0.34,0.42,0.51,0.59,0.67,0.74,0.80,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.06,0.08,0.11,0.14,0.19,0.25,0.32,0.40,0.48,0.57,0.65,0.72,0.78,0.84,0.88,0.91,0.93,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.13,0.18,0.23,0.30,0.37,0.45,0.54,0.62,0.70,0.77,0.82,0.87,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.06,0.09,0.12,0.16,0.21,0.28,0.35,0.43,0.51,0.60,0.68,0.75,0.81,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.20,0.26,0.33,0.40,0.49,0.57,0.66,0.73,0.79,0.84,0.88,0.91,0.94,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.14,0.18,0.24,0.30,0.38,0.46,0.55,0.63,0.71,0.77,0.83,0.87,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.07,0.09,0.12,0.17,0.22,0.28,0.36,0.44,0.52,0.61,0.69,0.75,0.81,0.86,0.90,0.92,0.94,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.20,0.26,0.33,0.41,0.50,0.58,0.66,0.73,0.80,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.08,0.10,0.14,0.19,0.24,0.31,0.39,0.47,0.56,0.64,0.71,0.78,0.83,0.87,0.91,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.09,0.13,0.17,0.22,0.29,0.36,0.45,0.53,0.62,0.69,0.76,0.82,0.86,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.06,0.09,0.12,0.16,0.21,0.27,0.34,0.42,0.51,0.59,0.67,0.74,0.80,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.14,0.19,0.25,0.32,0.40,0.48,0.57,0.65,0.72,0.78,0.84,0.88,0.91,0.93,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.13,0.18,0.23,0.30,0.37,0.46,0.54,0.62,0.70,0.77,0.82,0.87,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.06,0.09,0.12,0.16,0.21,0.28,0.35,0.43,0.52,0.60,0.68,0.75,0.81,0.86,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.20,0.26,0.33,0.41,0.49,0.58,0.66,0.73,0.79,0.84,0.88,0.91,0.94,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.10,0.14,0.18,0.24,0.30,0.38,0.46,0.55,0.63,0.71,0.77,0.83,0.87,0.91,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.07,0.09,0.12,0.17,0.22,0.28,0.36,0.44,0.52,0.61,0.69,0.76,0.81,0.86,0.90,0.92,0.94,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.15,0.20,0.26,0.33,0.41,0.50,0.58,0.66,0.74,0.80,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.02,0.03,0.04,0.06,0.08,0.10,0.14,0.19,0.24,0.31,0.39,0.47,0.56,0.64,0.72,0.78,0.83,0.88,0.91,0.93,0.95,0.97,0.97,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.03,0.04,0.05,0.07,0.09,0.13,0.17,0.23,0.29,0.37,0.45,0.53,0.62,0.69,0.76,0.82,0.86,0.90,0.93,0.95,0.96,0.97,0.98,0.99,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.05,0.06,0.09,0.12,0.16,0.21,0.27,0.34,0.42,0.51,0.59,0.67,0.74,0.80,0.85,0.89,0.92,0.94,0.96,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00],
[0.00,0.00,0.00,0.01,0.01,0.01,0.02,0.02,0.03,0.04,0.06,0.08,0.11,0.14,0.19,0.25,0.32,0.40,0.48,0.57,0.65,0.72,0.79,0.84,0.88,0.91,0.94,0.95,0.97,0.98,0.98,0.99,0.99,0.99,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00]
];
var margin = {top: 20, right: 20, bottom: 30, left: 30},
width = 400 - margin.left - margin.right,
height = 400 - margin.top - margin.bottom;
var x = d3.scale.linear()
.range([0, width]);
var y = d3.scale.linear()
.range([height, 0]);
var color = d3.scale.linear()
.domain([0.0, 1.0])
.range(["orange", "green"]);
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom")
var yAxis = d3.svg.axis()
.scale(y)
.orient("left");
var svg = d3.select("body")
.append("svg").attr("width", width + margin.left + margin.right).attr("height", height + margin.top + margin.bottom)
.append("g").attr("transform", "translate(" + margin.left + "," + margin.top + ")");
var exampleColor = d3.scale.linear()
.domain([0.0, 1.0])
.range(["red", "blue"]);
var dx = posibilityDistribution[0].length,
dy = posibilityDistribution.length;
x.domain([-4.0, 4.0]);
y.domain([-4.0, 4.0]);
svg.selectAll("g")
.data(posibilityDistribution)
.enter()
.append("g")
.selectAll("rect")
.data(function (d,i,j) {return d;})
.enter()
.append("rect")
.attr("x", function (d, i, j) {return x(-4.0 + i * 0.08);})
.attr("y", function (d, i, j) {return y(-4.0 + j * 0.08);})
.attr("width", function (d, i, j) {return width / dx;})
.attr("height", function (d, i, j) {return height / dy;})
.attr("fill", function(d, i, j) {return color(d);})
.attr("stroke", function(d, i, j) {return color(d);});
svg.selectAll("circle")
.data(trainingSet)
.enter()
.append("circle")
.attr("cx", function (d) {return x(d[0]);})
.attr("cy", function (d) {return y(d[1]);})
.attr("r", "2")
.attr("fill", function(d, i, j) {return exampleColor(d[2]);})
.attr("stroke", "black");
svg.selectAll("line")
.data(weightVector)
.enter()
.append("line")
.attr("x1", function (d) {return x(-d[1] / d[0] * 4.0 - d[2] / d[0]);})
.attr("y1", function (d) {return y(4.0);})
.attr("x2", function (d) {return x(-d[1] / d[0] * -4.0 - d[2] / d[0]);})
.attr("y2", function (d) {return y(-4.0);})
.attr("stroke", "yellow");
svg.append("g").attr("class", "x axis").attr("transform", "translate(0," + height + ")").call(xAxis);
svg.append("g").attr("class", "y axis").call(yAxis);
</script>
</body>
</html>
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.apache.commons.math3.linear.ArrayRealVector;
import org.apache.commons.math3.linear.RealVector;
import org.apache.commons.math3.random.GaussianRandomGenerator;
import org.apache.commons.math3.random.JDKRandomGenerator;
public class LogisticRegression {
RealVector weightVector = new ArrayRealVector(3);
void learn(List<Example> trainingSet) {
JDKRandomGenerator randomGenerator = new JDKRandomGenerator();
randomGenerator.setSeed(0);
GaussianRandomGenerator normalizedRandomGenerator = new GaussianRandomGenerator(randomGenerator);
for (int i = 0; i < weightVector.getDimension(); i++) {
this.weightVector.setEntry(i, normalizedRandomGenerator.nextNormalizedDouble());
}
double eta = 0.1;
for (int i = 0; i < 50; i++) {
System.out.println("Loop:" + i);
List<Integer> indexes = LogisticRegression.generateShuffledIntegers(0, trainingSet.size() - 1);
for (int index : indexes) {
Example example = trainingSet.get(index);
double predict = this.predict(example.x, example.y);
System.out.printf("x = %f, y= %f, t= %f, p= %f\n", example.x, example.y, example.t, predict);
System.out.print(this.weightVector);
this.weightVector = this.weightVector.add(this.phiVector(example.x, example.y).mapMultiply(-eta * (predict - example.t)));
System.out.println("->" + this.weightVector);
}
eta *= 0.9;
}
}
double predict(double x, double y) {
return LogisticRegression.sigmoid(this.weightVector.dotProduct(this.phiVector(x, y)));
}
RealVector phiVector(double x, double y) {
RealVector vector = new ArrayRealVector(3);
vector.setEntry(0, x);
vector.setEntry(1, y);
vector.setEntry(2, 1.0);
return vector;
}
static double thresholding(double value) {
return value > 0.0 ? 1.0 : 0.0;
}
static double sigmoid(double value) {
return 1.0 / (1.0 + Math.exp(-value));
}
static List<Integer> generateShuffledIntegers(int lower, int upper) {
List<Integer> integers = new ArrayList<Integer>();
for (int i = lower; i <= upper; i++) {
integers.add(i);
}
Collections.shuffle(integers);
return integers;
}
public static class Example {
double x;
double y;
double t;
Example(double x, double y, double t) {
this.x = x;
this.y = y;
this.t = t;
}
}
}
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.math3.random.GaussianRandomGenerator;
import org.apache.commons.math3.random.JDKRandomGenerator;
import org.junit.Test;
public class LogisticRegressionTest {
@Test
public void test() {
List<LogisticRegression.Example> trainingSet = this.generateTrainingSet();
LogisticRegression logisticRegression = new LogisticRegression();
logisticRegression.learn(trainingSet);
System.out.println("[");
if (trainingSet.size() > 0) {
LogisticRegression.Example example = trainingSet.get(0);
System.out.printf("[%f,%f,%f]", example.x, example.y, example.t);
}
for (int i = 1, n = trainingSet.size(); i < n; i++ ) {
LogisticRegression.Example example = trainingSet.get(i);
System.out.printf(",\n[%f,%f,%f]", example.x, example.y, example.t);
}
System.out.println("\n]");
System.out.println("[");
if (logisticRegression.weightVector.getDimension() > 0) {
System.out.print(logisticRegression.weightVector.getEntry(0));
}
for (int i = 1; i < logisticRegression.weightVector.getDimension(); i++) {
System.out.print(",");
System.out.print(logisticRegression.weightVector.getEntry(i));
}
System.out.println("]");
System.out.println("[");
for (int i = 0; i <= 100; i += 1) {
double y = -4.0 + i * 0.08;
double x = -4.0;
double probability = logisticRegression.predict(x, y);
System.out.printf("[%.2f", probability);
for (int j = 1; j <= 100; j++) {
probability = logisticRegression.predict(x, y);
System.out.printf(",%.2f", probability);
x += 0.08;
}
if (i < 100) {
System.out.println("],");
}
else {
System.out.println("]");
}
}
System.out.println("]");
}
double h(double x, double y) {
return 5.0 * x + 3.0 * y - 1.0;
}
List<LogisticRegression.Example> generateTrainingSet() {
final int N = 100;
JDKRandomGenerator randomGenerator = new JDKRandomGenerator();
randomGenerator.setSeed(0);
GaussianRandomGenerator normalizedRandomGenerator = new GaussianRandomGenerator(randomGenerator);
List<LogisticRegression.Example> trainingSet = new ArrayList<LogisticRegression.Example>();
for (int i = 0; i < N; i++) {
double x = normalizedRandomGenerator.nextNormalizedDouble();
double y = normalizedRandomGenerator.nextNormalizedDouble();
double t = LogisticRegression.thresholding(this.h(x, y));
LogisticRegression.Example example = new LogisticRegression.Example(x, y, t);
trainingSet.add(example);
}
return trainingSet;
}
}

2015年4月16日木曜日

パーセプトロンをJavaで実装

文献[1]で紹介されているパーセプトロンをJavaで実装してみました.

パーセプトロンは,分類問題に適用できる機械学習手法の1つです. 文献で紹介されているとおりあらかじめ用意したデータを正解(1)と不正解(-1)に分類する関数を求めてみました. グラフにした結果は次の図のとおりです. そうなるようにデータを作ってあるので,当たり前なのですが, 正解と不正解をうまく仕分ける関数を求めることができました.

[1] 中谷 秀洋: パーセプトロンを実装してみよう, 機械学習はじめよう 第17回, http://gihyo.jp/dev/serial/01/machine-learning/0017

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.apache.commons.math3.linear.ArrayRealVector;
import org.apache.commons.math3.linear.RealVector;
public class Perceptron {
RealVector weightVector = new ArrayRealVector(3);
void learn(List<Example> trainingSet) {
for (int i = 0; i < 1000; i++) {
System.out.println("Loop:" + i);
List<Integer> indexes = Perceptron.generateShuffledIntegers(0, trainingSet.size() - 1);
int numberOfMisses = 0;
for (int index : indexes) {
Example example = trainingSet.get(index);
double predict = this.predict(example.x, example.y);
if (predict != example.t) {
System.out.printf("x = %f, y= %f, t= %f, p= %f\n", example.x, example.y, example.t, predict);
System.out.print(this.weightVector);
this.weightVector = this.weightVector.add(this.phiVector(example.x, example.y).mapMultiply(example.t));
System.out.println("->" + this.weightVector);
numberOfMisses++;
}
}
if (numberOfMisses == 0) {
break;
}
}
}
double predict(double x, double y) {
return Perceptron.sign(this.weightVector.dotProduct(this.phiVector(x, y)));
}
RealVector phiVector(double x, double y) {
RealVector vector = new ArrayRealVector(3);
vector.setEntry(0, x);
vector.setEntry(1, y);
vector.setEntry(2, 1.0);
return vector;
}
static double sign(double value) {
return Math.signum(value) >= 0.0 ? 1.0 : -1.0;
}
static List<Integer> generateShuffledIntegers(int lower, int upper) {
List<Integer> integers = new ArrayList<Integer>();
for (int i = lower; i <= upper; i++) {
integers.add(i);
}
Collections.shuffle(integers);
return integers;
}
public static class Example {
double x;
double y;
double t;
Example(double x, double y, double t) {
this.x = x;
this.y = y;
this.t = t;
}
}
}
view raw Perceptron.java hosted with ❤ by GitHub
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.math3.random.GaussianRandomGenerator;
import org.apache.commons.math3.random.JDKRandomGenerator;
import org.junit.Test;
public class PerceptronTest {
@Test
public void test() {
List<Perceptron.Example> trainingSet = this.generateTrainingSet();
Perceptron perceptron = new Perceptron();
perceptron.learn(trainingSet);
for (Perceptron.Example example : trainingSet) {
System.out.printf("%f\t%f\t%f\n", example.x, example.y, example.t);
}
if (perceptron.weightVector.getDimension() > 0) {
System.out.print(perceptron.weightVector.getEntry(0));
}
for (int i = 1; i < perceptron.weightVector.getDimension(); i++) {
System.out.print("\t");
System.out.print(perceptron.weightVector.getEntry(i));
}
System.out.println();
}
double h(double x, double y) {
return 5.0 * x + 3.0 * y - 1.0;
}
List<Perceptron.Example> generateTrainingSet() {
final int N = 100;
JDKRandomGenerator randomGenerator = new JDKRandomGenerator();
randomGenerator.setSeed(0);
GaussianRandomGenerator normalizedRandomGenerator = new GaussianRandomGenerator(randomGenerator);
List<Perceptron.Example> trainingSet = new ArrayList<Perceptron.Example>();
for (int i = 0; i < N; i++) {
double x = normalizedRandomGenerator.nextNormalizedDouble();
double y = normalizedRandomGenerator.nextNormalizedDouble();
double t = Perceptron.sign(this.h(x, y));
Perceptron.Example example = new Perceptron.Example(x, y, t);
trainingSet.add(example);
}
return trainingSet;
}
}

2015年4月11日土曜日

ベイズ線形回帰をJavaで実装

文献[1]で紹介されているベイズ線形回帰を記事[2]で作成したプログラムを元にしてJavaで実装してみました.

ベイズ線形回帰は,線形回帰を確率化してベイジアンで関数を求める手法です. 文献で紹介されているとおり基底関数をベイズ基底にして関数を求めてみました. 結果は次の図のとおりです. ベイズ線形回帰なので,関数だけでなく,確率密度も求めることができます.

[1] 中谷 秀洋: ベイズ線形回帰を実装してみよう, 機械学習はじめよう 第14回, http://gihyo.jp/dev/serial/01/machine-learning/0014
[2] mizo0409: 線形回帰をJavaで実装, http://mizo0409.blogspot.jp/2014/01/java.html

import java.util.List;
import org.apache.commons.math3.distribution.NormalDistribution;
import org.apache.commons.math3.linear.LUDecomposition;
import org.apache.commons.math3.linear.RealMatrix;
import org.apache.commons.math3.linear.RealVector;
public class BasianLinearRegression extends LinearRegression {
private double alpha = 0.1;
private double beta = 9.0;
private RealVector muVector;
private RealMatrix sigmaMatrix;
public void setAlpha(double alpha) {
this.alpha = alpha;
}
public void setBeta(double beta) {
this.beta = beta;
}
public void learn(List<Example> trainingSet) {
RealMatrix I = this.identityMatrix();
RealMatrix PHI = this.phiMatrix(trainingSet);
RealMatrix PHI_T = PHI.transpose();
RealVector t = this.tVector(trainingSet);
this.sigmaMatrix = new LUDecomposition(I.scalarMultiply(this.alpha).add(PHI_T.multiply(PHI).scalarMultiply(this.beta))).getSolver().getInverse();
this.muVector = this.sigmaMatrix.operate(PHI_T.operate(t)).mapMultiply(this.beta);
}
public double calculate(double x) {
return this.muVector.dotProduct(this.phiVector(x));
}
public double calculateDensity(double x, double y) {
RealVector phi = this.phiVector(x);
double mu = this.muVector.dotProduct(phi);
double sigma = Math.sqrt(1.0 / this.beta + phi.dotProduct(this.sigmaMatrix.operate(phi)));
NormalDistribution n = new NormalDistribution(mu, sigma);
return n.density(y);
}
}
import org.junit.Test;
public class BasianLinearRegressionTest {
@Test
public void test() {
System.out.println("test");
int N = 10;
double s = 0.1;
BasianLinearRegression linearRegression = new BasianLinearRegression();
linearRegression.addBaseFunction(new LinearRegressionTest.PolynominalBasis(0));
for (int i = 0; i <= N; i++) {
linearRegression.addBaseFunction(new LinearRegressionTest.GaussianBasis(i * 1.0 / N, s));
}
linearRegression.learn(LinearRegressionTest.trainingSet);
for (double x = 0.0; x <= 1.0; x += 0.01) {
double y = linearRegression.calculate(x);
System.out.printf("%.2f\t%.2f\n", x, y);
}
for (int i = 0; i <= 50; i += 1) {
double y = -1.5 + i * 0.06;
double x = 0.0;
double density = linearRegression.calculateDensity(x, y);
System.out.printf("%.2f", density);
for (int j = 1; j <= 50; j++) {
density = linearRegression.calculateDensity(x, y);
System.out.printf("\t%.2f", density);
x += 0.02;
}
System.out.println();
}
}
}