Merge difficulties

This commit is contained in:
David Harris 2021-06-07 09:50:23 -04:00
commit 95cc70295b
74 changed files with 221290 additions and 124689 deletions

View File

@ -0,0 +1,30 @@
#ifndef __PCNT_DRIVER_H
#define __PCNT_DRIVER_H
long int readPerfCnt(long int cntNum, int clear);
void enablePerfCnt(long int flags);
void disablePerfCnt(long int flags);
#define CYCLE_COUNT (0)
#define INSTR_COUNT (2)
#define LOAD_STAL_COUNT (3)
#define BP_WRONG_DIR_COUNT (4)
#define BR_DIR_COUNT (5)
#define BTB_WRONG_COUNT (6)
#define NON_BR_CFI_COUNT (7)
#define RAS_WRONG_COUNT (8)
#define RETURN_COUNT (9)
#define BTB_CLASS_WRONG_COUNT (10)
#define CYCLE_COUNT_EN (1)
#define INSTR_COUNT_EN (1 << 2)
#define LOAD_STAL_COUNT_EN (1 << 3)
#define BP_WRONG_DIR_COUNT_EN (1 << 4)
#define BR_DIR_COUNT_EN (1 << 5)
#define BTB_WRONG_COUNT_EN (1 << 6)
#define NON_BR_CFI_COUNT_EN (1 << 7)
#define RAS_WRONG_COUNT_EN (1 << 8)
#define RETURN_COUNT_EN (1 << 9)
#define BTB_CLASS_WRONG_COUNT_EN (1 << 10)
#endif

147
testsBP/crt0/pcnt_driver.s Normal file
View File

@ -0,0 +1,147 @@
.section .text
.global enablePerfCnt
.type enablePerfCnt, @function
enablePerfCnt:
# a0 is the mask
csrrc x0, 0x320, a0 # clear bits to disable inhibit register
ret
.section .text
.global disablePerfCnt
.type disablePerfCnt, @function
disablePerfCnt:
# a0 is the mask
csrrs x0, 0x320, a0 # set bits to disable inhibit register
ret
.section .text
.global readPerfCnt
.type readPerfCnt, @function
readPerfCnt:
# a0 is the counter to read
# a1 is the flag to clear the register
# return the value of the counter in a0
li t0, 0xB
# if the counter number is greater than the number
# of counters return a -1
bge a0, t0, readPerfCntError
# pointers are 8 bytes so shift a0 by 8
slli a0, a0, 3
li t1, 1
beq a1, t1, readPerfCntClear
la t0, csrTable
j skip
readPerfCntClear:
la t0, csrTable_clear
skip:
add t0, t0, a0
ld t0, 0(t0)
jr t0
csrCycle:
csrrs a0, 0xB00, x0
ret
csrNull:
li a0, -1
ret
csrInstrCount:
csrrs a0, 0xB02, x0
ret
csrLoadStallCount:
csrrs a0, 0xB03, x0
ret
csrBPWrongCount:
csrrs a0, 0xB04, x0
ret
csrBPCount:
csrrs a0, 0xB05, x0
ret
csrBTBWrongCount:
csrrs a0, 0xB06, x0
ret
csrNonBRCFICount:
csrrs a0, 0xB07, x0
ret
csrRasWrongCount:
csrrs a0, 0xB08, x0
ret
csrReturnCount:
csrrs a0, 0xB09, x0
ret
csrBTBClassWrongCount:
csrrs a0, 0xB0A, x0
ret
csrCycle_clear:
csrrw a0, 0xB00, x0
ret
csrNull_clear:
li a0, -1
ret
csrInstrCount_clear:
csrrw a0, 0xB02, x0
ret
csrLoadStallCount_clear:
csrrw a0, 0xB03, x0
ret
csrBPWrongCount_clear:
csrrw a0, 0xB04, x0
ret
csrBPCount_clear:
csrrw a0, 0xB05, x0
ret
csrBTBWrongCount_clear:
csrrw a0, 0xB06, x0
ret
csrNonBRCFICount_clear:
csrrw a0, 0xB07, x0
ret
csrRasWrongCount_clear:
csrrw a0, 0xB08, x0
ret
csrReturnCount_clear:
csrrw a0, 0xB09, x0
ret
csrBTBClassWrongCount_clear:
csrrw a0, 0xB0A, x0
ret
readPerfCntError:
li a0, -1
ret
.section .data
.align 3
csrTable:
.8byte csrCycle #0
.8byte csrNull #1
.8byte csrInstrCount #2
.8byte csrLoadStallCount #3
.8byte csrBPWrongCount #4
.8byte csrBPCount #5
.8byte csrBTBWrongCount #6
.8byte csrNonBRCFICount #7
.8byte csrRasWrongCount #8
.8byte csrReturnCount #9
.8byte csrBTBClassWrongCount #A
csrTable_clear:
.8byte csrCycle_clear #0
.8byte csrNull_clear #1
.8byte csrInstrCount_clear #2
.8byte csrLoadStallCount_clear #3
.8byte csrBPWrongCount_clear #4
.8byte csrBPCount_clear #5
.8byte csrBTBWrongCount_clear #6
.8byte csrNonBRCFICount_clear #7
.8byte csrRasWrongCount_clear #8
.8byte csrReturnCount_clear #9
.8byte csrBTBClassWrongCount_clear #A

24
testsBP/crt0/pre_main.c Normal file
View File

@ -0,0 +1,24 @@
#include <stdlib.h>
#include "pcnt_driver.h"
int pre_main(int argc, char *argv[]) {
long int bpmp0, brcnt0, bpmp1, brcnt1;
long int bpmp_diff, brcnt_diff;
bpmp0 = readPerfCnt(BP_WRONG_DIR_COUNT, 0);
brcnt0 = readPerfCnt(BR_DIR_COUNT, 0);
// enable counters
enablePerfCnt(BP_WRONG_DIR_COUNT_EN | BR_DIR_COUNT_EN);
int res = main(argc, argv);
disablePerfCnt(BP_WRONG_DIR_COUNT_EN | BR_DIR_COUNT_EN);
bpmp1 = readPerfCnt(BP_WRONG_DIR_COUNT, 0);
brcnt1 = readPerfCnt(BR_DIR_COUNT, 0);
bpmp_diff = bpmp1 - bpmp0;
brcnt_diff = brcnt1 - brcnt0;
return res;
}

18
testsBP/james_mm/Makefile Normal file
View File

@ -0,0 +1,18 @@
TARGETDIR := mmm
TARGET := $(TARGETDIR)/$(TARGETDIR).elf
ROOT := ..
LIBRARY_DIRS := ${ROOT}/crt0
LIBRARY_FILES := crt0
MARCH :=-march=rv64imfdc
MABI :=-mabi=lp64d
LINK_FLAGS :=$(MARCH) $(MABI) -nostartfiles -Wl,-Map=$(TARGET).map
CFLAGS =$(MARCH) $(MABI) -Wa,-alhs -Wa,-L -mcmodel=medany -mstrict-align -O2
CC=riscv64-unknown-elf-gcc
DA=riscv64-unknown-elf-objdump -d
include $(ROOT)/makefile.inc

235
testsBP/james_mm/james_mm.c Normal file
View File

@ -0,0 +1,235 @@
#include <stdio.h>
typedef double Float;
Float C[100][100];
Float A[100][100] = { {1.02774012088775634765625, 1.61730301380157470703125, 1.8952558040618896484375, 1.404462337493896484375, 1.98954677581787109375, 1.167797565460205078125, 1.55445158481597900390625, 1.9668743610382080078125, 1.5313637256622314453125, 1.53427755832672119140625, 1.64590275287628173828125, 1.2509534358978271484375, 1.6938021183013916015625, 1.039519786834716796875, 1.213516712188720703125, 1.86304569244384765625, 1.7330493927001953125, 1.51679909229278564453125, 1.77849543094635009765625, 1.40046405792236328125, 1.83180654048919677734375, 1.95832598209381103515625, 1.42527329921722412109375, 1.4749257564544677734375, 1.56022608280181884765625, 1.9136836528778076171875, 1.637454986572265625, 1.48598992824554443359375, 1.08684885501861572265625, 1.63826620578765869140625, 1.88375222682952880859375, 1.14449465274810791015625, 1.1395418643951416015625, 1.9917156696319580078125, 1.95392167568206787109375, 1.74599516391754150390625, 1.7164361476898193359375, 1.08635962009429931640625, 1.0447027683258056640625, 1.19420087337493896484375, 1.546863555908203125, 1.68564879894256591796875, 1.59575450420379638671875, 1.77441298961639404296875, 1.30229461193084716796875, 1.3525941371917724609375, 1.87559330463409423828125, 1.6769621372222900390625, 1.55727636814117431640625, 1.34820497035980224609375, 1.3175308704376220703125, 1.2706453800201416015625, 1.50036919116973876953125, 1.2799260616302490234375, 1.60561096668243408203125, 1.12616443634033203125, 1.3950846195220947265625, 1.50007522106170654296875, 1.5105473995208740234375, 1.789562702178955078125, 1.7908232212066650390625, 1.2542808055877685546875, 1.47566127777099609375, 1.3056628704071044921875, 1.48381137847900390625, 1.579919338226318359375, 1.95281898975372314453125, 1.49150454998016357421875, 1.22803914546966552734375, 1.95455253124237060546875, 1.488368988037109375, 1.95978128910064697265625, 1.19619810581207275390625, 1.69436550140380859375, 1.559079647064208984375, 1.89227879047393798828125, 1.19061815738677978515625, 1.10260379314422607421875, 1.15807712078094482421875, 1.56331193447113037109375, 1.60420548915863037109375, 1.368010997772216796875, 1.13078212738037109375, 1.61316239833831787109375, 1.1313798427581787109375, 1.2132663726806640625, 1.2608478069305419921875, 1.07151615619659423828125, 1.22901248931884765625, 1.29342186450958251953125, 1.10609757900238037109375, 1.1309010982513427734375, 1.32736301422119140625, 1.34434032440185546875, 1.5844619274139404296875, 1.670124053955078125, 1.79101717472076416015625, 1.08113253116607666015625, 1.3099162578582763671875, 1.52770900726318359375},
{ 1.84659481048583984375, 1.67841875553131103515625, 1.5253341197967529296875, 1.95983636379241943359375, 1.0096466541290283203125, 1.7038471698760986328125, 1.2412693500518798828125, 1.2142412662506103515625, 1.11376774311065673828125, 1.603936672210693359375, 1.53381407260894775390625, 1.104305267333984375, 1.7754361629486083984375, 1.13621771335601806640625, 1.81473410129547119140625, 1.330307483673095703125, 1.33256542682647705078125, 1.683952808380126953125, 1.07269990444183349609375, 1.04247820377349853515625, 1.2429420948028564453125, 1.09207451343536376953125, 1.64672362804412841796875, 1.05193674564361572265625, 1.23266327381134033203125, 1.25312268733978271484375, 1.74959671497344970703125, 1.79162824153900146484375, 1.19457423686981201171875, 1.443182468414306640625, 1.7413275241851806640625, 1.0272614955902099609375, 1.8367054462432861328125, 1.40782105922698974609375, 1.1525783538818359375, 1.3182468414306640625, 1.08071076869964599609375, 1.19802558422088623046875, 1.458103656768798828125, 1.22863292694091796875, 1.2103044986724853515625, 1.7561409473419189453125, 1.6001870632171630859375, 1.2880446910858154296875, 1.76969897747039794921875, 1.25180661678314208984375, 1.2620790004730224609375, 1.70262062549591064453125, 1.21204221248626708984375, 1.16789448261260986328125, 1.891434192657470703125, 1.81595075130462646484375, 1.297854900360107421875, 1.1364467144012451171875, 1.47374927997589111328125, 1.32001340389251708984375, 1.24346864223480224609375, 1.52461254596710205078125, 1.05579984188079833984375, 1.21611309051513671875, 1.6194629669189453125, 1.77058613300323486328125, 1.01907861232757568359375, 1.525818347930908203125, 1.99910295009613037109375, 1.46954441070556640625, 1.10323250293731689453125, 1.7518985271453857421875, 1.35677683353424072265625, 1.20958387851715087890625, 1.17950022220611572265625, 1.08926165103912353515625, 1.216433048248291015625, 1.15765845775604248046875, 1.77414989471435546875, 1.38589227199554443359375, 1.55001842975616455078125, 1.3955173492431640625, 1.34191608428955078125, 1.85378825664520263671875, 1.425915241241455078125, 1.00564181804656982421875, 1.2894380092620849609375, 1.52989864349365234375, 1.40737879276275634765625, 1.907183170318603515625, 1.7486965656280517578125, 1.48706150054931640625, 1.700974941253662109375, 1.4419000148773193359375, 1.100451946258544921875, 1.7949407100677490234375, 1.0550177097320556640625, 1.71009624004364013671875, 1.24768126010894775390625, 1.23096382617950439453125, 1.40800631046295166015625, 1.6565577983856201171875, 1.63901555538177490234375, 1.74125993251800537109375},
{ 1.9064905643463134765625, 1.04217803478240966796875, 1.65159642696380615234375, 1.95637190341949462890625, 1.35145819187164306640625, 1.06742107868194580078125, 1.62831699848175048828125, 1.3156130313873291015625, 1.4853188991546630859375, 1.44096386432647705078125, 1.389278888702392578125, 1.5484035015106201171875, 1.490163326263427734375, 1.02842986583709716796875, 1.1647908687591552734375, 1.52073276042938232421875, 1.07225239276885986328125, 1.608284473419189453125, 1.9085500240325927734375, 1.9294011592864990234375, 1.047954082489013671875, 1.3952720165252685546875, 1.25857961177825927734375, 1.20045697689056396484375, 1.679681301116943359375, 1.3138539791107177734375, 1.24816691875457763671875, 1.1376340389251708984375, 1.76182973384857177734375, 1.021646022796630859375, 1.76680004596710205078125, 1.320789337158203125, 1.456714630126953125, 1.6828556060791015625, 1.77110576629638671875, 1.25434005260467529296875, 1.8805086612701416015625, 1.49171960353851318359375, 1.2457873821258544921875, 1.265701770782470703125, 1.43917977809906005859375, 1.94594132900238037109375, 1.9145615100860595703125, 1.15372550487518310546875, 1.9144279956817626953125, 1.87012875080108642578125, 1.70109593868255615234375, 1.58713531494140625, 1.29962337017059326171875, 1.18923151493072509765625, 1.93994748592376708984375, 1.25296580791473388671875, 1.38574326038360595703125, 1.45197856426239013671875, 1.33749878406524658203125, 1.75499975681304931640625, 1.0973103046417236328125, 1.10431575775146484375, 1.682896137237548828125, 1.2622051239013671875, 1.57832920551300048828125, 1.5128428936004638671875, 1.3089873790740966796875, 1.90717327594757080078125, 1.02822458744049072265625, 1.7382519245147705078125, 1.3032586574554443359375, 1.93455600738525390625, 1.2877788543701171875, 1.058763980865478515625, 1.468772411346435546875, 1.59950315952301025390625, 1.17506897449493408203125, 1.243566989898681640625, 1.03510463237762451171875, 1.81610023975372314453125, 1.57140433788299560546875, 1.5762531757354736328125, 1.11928284168243408203125, 1.5558054447174072265625, 1.257264614105224609375, 1.62825667858123779296875, 1.93672287464141845703125, 1.99588787555694580078125, 1.49823653697967529296875, 1.78229057788848876953125, 1.7621667385101318359375, 1.4178645610809326171875, 1.38095176219940185546875, 1.50578510761260986328125, 1.6406204700469970703125, 1.85593807697296142578125, 1.8990247249603271484375, 1.37432467937469482421875, 1.848290920257568359375, 1.49543416500091552734375, 1.78898942470550537109375, 1.84508550167083740234375, 1.10352361202239990234375, 1.8212387561798095703125},
{ 1.7802731990814208984375, 1.52774059772491455078125, 1.51623618602752685546875, 1.6109549999237060546875, 1.7205598354339599609375, 1.35637724399566650390625, 1.1097462177276611328125, 1.75406134128570556640625, 1.908522129058837890625, 1.3998200893402099609375, 1.37596166133880615234375, 1.6131451129913330078125, 1.0620784759521484375, 1.2543447017669677734375, 1.4823858737945556640625, 1.428402423858642578125, 1.8979265689849853515625, 1.263052463531494140625, 1.88827037811279296875, 1.94857466220855712890625, 1.40498101711273193359375, 1.22680842876434326171875, 1.99305188655853271484375, 1.516885280609130859375, 1.86781036853790283203125, 1.86517918109893798828125, 1.534790515899658203125, 1.90697765350341796875, 1.64007532596588134765625, 1.02736961841583251953125, 1.73860681056976318359375, 1.90885293483734130859375, 1.66796576976776123046875, 1.65316092967987060546875, 1.21511936187744140625, 1.664806842803955078125, 1.76363837718963623046875, 1.4838478565216064453125, 1.608882427215576171875, 1.7553675174713134765625, 1.62865412235260009765625, 1.523176670074462890625, 1.99682295322418212890625, 1.03523337841033935546875, 1.6274158954620361328125, 1.248281955718994140625, 1.036678791046142578125, 1.2192099094390869140625, 1.310605525970458984375, 1.57062447071075439453125, 1.86543571949005126953125, 1.2181475162506103515625, 1.688621997833251953125, 1.54692900180816650390625, 1.747765064239501953125, 1.22487938404083251953125, 1.2550184726715087890625, 1.84012115001678466796875, 1.4744613170623779296875, 1.5501582622528076171875, 1.7599399089813232421875, 1.9302651882171630859375, 1.51087915897369384765625, 1.20859432220458984375, 1.73356068134307861328125, 1.075501918792724609375, 1.8953716754913330078125, 1.25459301471710205078125, 1.75952160358428955078125, 1.0229854583740234375, 1.88772737979888916015625, 1.8682918548583984375, 1.49836814403533935546875, 1.46982109546661376953125, 1.3676078319549560546875, 1.19149839878082275390625, 1.46098744869232177734375, 1.27400314807891845703125, 1.98298513889312744140625, 1.91362750530242919921875, 1.53204596042633056640625, 1.41535174846649169921875, 1.04857957363128662109375, 1.607639312744140625, 1.2434270381927490234375, 1.7064507007598876953125, 1.1942965984344482421875, 1.81597602367401123046875, 1.797667980194091796875, 1.253585338592529296875, 1.76366508007049560546875, 1.88649976253509521484375, 1.8413982391357421875, 1.667679309844970703125, 1.9622743129730224609375, 1.5584304332733154296875, 1.9887764453887939453125, 1.0252325534820556640625, 1.75621163845062255859375, 1.29828250408172607421875},
{ 1.57925856113433837890625, 1.52050006389617919921875, 1.38580286502838134765625, 1.2793827056884765625, 1.22022235393524169921875, 1.43753528594970703125, 1.7499086856842041015625, 1.69951212406158447265625, 1.68697726726531982421875, 1.64552390575408935546875, 1.55462419986724853515625, 1.07396686077117919921875, 1.527702808380126953125, 1.136920452117919921875, 1.53501856327056884765625, 1.95611464977264404296875, 1.8108425140380859375, 1.40686500072479248046875, 1.083143711090087890625, 1.75747740268707275390625, 1.5860407352447509765625, 1.85162079334259033203125, 1.08397114276885986328125, 1.52116882801055908203125, 1.09508049488067626953125, 1.917011260986328125, 1.50132977962493896484375, 1.445332050323486328125, 1.73282134532928466796875, 1.99685823917388916015625, 1.713843822479248046875, 1.156576633453369140625, 1.75813615322113037109375, 1.0814189910888671875, 1.60086953639984130859375, 1.7334167957305908203125, 1.754848957061767578125, 1.15582382678985595703125, 1.3784332275390625, 1.4797084331512451171875, 1.842672824859619140625, 1.34851360321044921875, 1.1851685047149658203125, 1.44808673858642578125, 1.6381466388702392578125, 1.8296773433685302734375, 1.41825425624847412109375, 1.71340382099151611328125, 1.96557295322418212890625, 1.45968925952911376953125, 1.8193514347076416015625, 1.39616572856903076171875, 1.31795585155487060546875, 1.1875469684600830078125, 1.3105409145355224609375, 1.43597066402435302734375, 1.06793773174285888671875, 1.19930851459503173828125, 1.58026134967803955078125, 1.11494600772857666015625, 1.42873728275299072265625, 1.8165299892425537109375, 1.4192459583282470703125, 1.33118593692779541015625, 1.1650867462158203125, 1.1447031497955322265625, 1.80646038055419921875, 1.62218892574310302734375, 1.0541698932647705078125, 1.47169244289398193359375, 1.74504053592681884765625, 1.9382953643798828125, 1.0965588092803955078125, 1.4161732196807861328125, 1.84822940826416015625, 1.1661245822906494140625, 1.47715175151824951171875, 1.82606875896453857421875, 1.67531490325927734375, 1.4020130634307861328125, 1.27611100673675537109375, 1.4269878864288330078125, 1.81756770610809326171875, 1.97545146942138671875, 1.92979967594146728515625, 1.220662593841552734375, 1.734178066253662109375, 1.222522258758544921875, 1.441719532012939453125, 1.63338506221771240234375, 1.3381936550140380859375, 1.00933730602264404296875, 1.3434488773345947265625, 1.4144458770751953125, 1.33245742321014404296875, 1.00547492504119873046875, 1.4055793285369873046875, 1.28457105159759521484375, 1.2955443859100341796875, 1.70741808414459228515625},
{ 1.334359645843505859375, 1.51769959926605224609375, 1.21199142932891845703125, 1.80410373210906982421875, 1.17272126674652099609375, 1.58677542209625244140625, 1.73979890346527099609375, 1.77518713474273681640625, 1.82531368732452392578125, 1.7241694927215576171875, 1.908661365509033203125, 1.8479251861572265625, 1.382979869842529296875, 1.87076151371002197265625, 1.7570536136627197265625, 1.9020407199859619140625, 1.40018618106842041015625, 1.52285110950469970703125, 1.5175426006317138671875, 1.0718948841094970703125, 1.043459415435791015625, 1.318095684051513671875, 1.140224456787109375, 1.70742511749267578125, 1.98982441425323486328125, 1.37144720554351806640625, 1.566162109375, 1.08508241176605224609375, 1.07524168491363525390625, 1.36109006404876708984375, 1.7508227825164794921875, 1.86876928806304931640625, 1.6930444240570068359375, 1.36437892913818359375, 1.43751561641693115234375, 1.32077658176422119140625, 1.94237673282623291015625, 1.44377553462982177734375, 1.68082869052886962890625, 1.2627213001251220703125, 1.5266306400299072265625, 1.98278653621673583984375, 1.12006723880767822265625, 1.7864844799041748046875, 1.40188372135162353515625, 1.7719013690948486328125, 1.00269067287445068359375, 1.71514797210693359375, 1.17533671855926513671875, 1.84452903270721435546875, 1.95775020122528076171875, 1.81393229961395263671875, 1.2537505626678466796875, 1.06293594837188720703125, 1.5193264484405517578125, 1.75113451480865478515625, 1.74188458919525146484375, 1.4541838169097900390625, 1.3999664783477783203125, 1.80906498432159423828125, 1.0909335613250732421875, 1.29606640338897705078125, 1.51412200927734375, 1.3449852466583251953125, 1.49696528911590576171875, 1.9530475139617919921875, 1.751586437225341796875, 1.0020458698272705078125, 1.0493581295013427734375, 1.4621982574462890625, 1.5009324550628662109375, 1.670223236083984375, 1.629238605499267578125, 1.86913502216339111328125, 1.92294967174530029296875, 1.19725739955902099609375, 1.55791842937469482421875, 1.31395626068115234375, 1.97408163547515869140625, 1.84958994388580322265625, 1.9953327178955078125, 1.867180347442626953125, 1.17986404895782470703125, 1.52330076694488525390625, 1.08847701549530029296875, 1.11568343639373779296875, 1.15836179256439208984375, 1.70504605770111083984375, 1.869844913482666015625, 1.4986362457275390625, 1.89360654354095458984375, 1.1829955577850341796875, 1.90586566925048828125, 1.3934419155120849609375, 1.75903427600860595703125, 1.507770538330078125, 1.69534122943878173828125, 1.95167386531829833984375, 1.2909228801727294921875, 1.203380584716796875},
{ 1.6850125789642333984375, 1.71182918548583984375, 1.72816145420074462890625, 1.83235609531402587890625, 1.8011834621429443359375, 1.2040271759033203125, 1.18571293354034423828125, 1.9253025054931640625, 1.28989470005035400390625, 1.9329450130462646484375, 1.78583562374114990234375, 1.3093931674957275390625, 1.7587740421295166015625, 1.8206026554107666015625, 1.0554687976837158203125, 1.37185776233673095703125, 1.019306659698486328125, 1.06904947757720947265625, 1.79962825775146484375, 1.5729243755340576171875, 1.42277300357818603515625, 1.43380129337310791015625, 1.812343120574951171875, 1.09425652027130126953125, 1.946185588836669921875, 1.24727857112884521484375, 1.33759367465972900390625, 1.2373907566070556640625, 1.02822697162628173828125, 1.19224345684051513671875, 1.28024923801422119140625, 1.57217419147491455078125, 1.15518701076507568359375, 1.82523739337921142578125, 1.16700494289398193359375, 1.83520209789276123046875, 1.196900844573974609375, 1.8500187397003173828125, 1.8573195934295654296875, 1.5782549381256103515625, 1.49268567562103271484375, 1.14099979400634765625, 1.00435352325439453125, 1.56673657894134521484375, 1.68727862834930419921875, 1.516685009002685546875, 1.2659053802490234375, 1.9281113147735595703125, 1.3167746067047119140625, 1.2631080150604248046875, 1.2653501033782958984375, 1.05034148693084716796875, 1.14456307888031005859375, 1.4072692394256591796875, 1.30257618427276611328125, 1.23032510280609130859375, 1.24726593494415283203125, 1.740573406219482421875, 1.81492364406585693359375, 1.072332859039306640625, 1.8506753444671630859375, 1.59226715564727783203125, 1.58812081813812255859375, 1.63644635677337646484375, 1.91569054126739501953125, 1.35287606716156005859375, 1.7172222137451171875, 1.33699512481689453125, 1.47425568103790283203125, 1.74764287471771240234375, 1.317546367645263671875, 1.59099423885345458984375, 1.715297698974609375, 1.85996448993682861328125, 1.9856126308441162109375, 1.21658194065093994140625, 1.82066309452056884765625, 1.90482962131500244140625, 1.01007902622222900390625, 1.581456661224365234375, 1.55105578899383544921875, 1.7522563934326171875, 1.33268010616302490234375, 1.50131523609161376953125, 1.58197498321533203125, 1.2007293701171875, 1.25916373729705810546875, 1.888289928436279296875, 1.58965194225311279296875, 1.0006377696990966796875, 1.9202289581298828125, 1.14938604831695556640625, 1.086987972259521484375, 1.6277124881744384765625, 1.482463836669921875, 1.334919452667236328125, 1.0094916820526123046875, 1.806463718414306640625, 1.1092822551727294921875, 1.0369541645050048828125},
{ 1.78361856937408447265625, 1.67186176776885986328125, 1.03773939609527587890625, 1.7506997585296630859375, 1.35155808925628662109375, 1.21008145809173583984375, 1.7081477642059326171875, 1.3268959522247314453125, 1.62175548076629638671875, 1.14345872402191162109375, 1.15611231327056884765625, 1.26511919498443603515625, 1.54821312427520751953125, 1.23208725452423095703125, 1.1250641345977783203125, 1.6529777050018310546875, 1.20090019702911376953125, 1.287574291229248046875, 1.6423699855804443359375, 1.266312122344970703125, 1.78919017314910888671875, 1.6339786052703857421875, 1.41776931285858154296875, 1.40513336658477783203125, 1.435298442840576171875, 1.3187472820281982421875, 1.9918124675750732421875, 1.479559421539306640625, 1.6977193355560302734375, 1.07365357875823974609375, 1.63429772853851318359375, 1.345753192901611328125, 1.8446643352508544921875, 1.02573478221893310546875, 1.9927089214324951171875, 1.39186036586761474609375, 1.877499103546142578125, 1.15822899341583251953125, 1.49065303802490234375, 1.37394618988037109375, 1.30418109893798828125, 1.5215129852294921875, 1.47629725933074951171875, 1.0019333362579345703125, 1.66269719600677490234375, 1.1940400600433349609375, 1.120807170867919921875, 1.27553975582122802734375, 1.79450070858001708984375, 1.9932768344879150390625, 1.06678378582000732421875, 1.5702154636383056640625, 1.86794960498809814453125, 1.93664109706878662109375, 1.82670116424560546875, 1.47308051586151123046875, 1.15174353122711181640625, 1.45243966579437255859375, 1.93134391307830810546875, 1.36886227130889892578125, 1.53836143016815185546875, 1.34080517292022705078125, 1.82824480533599853515625, 1.7758333683013916015625, 1.8174991607666015625, 1.484633922576904296875, 1.53012180328369140625, 1.43174850940704345703125, 1.6995065212249755859375, 1.3105237483978271484375, 1.01331627368927001953125, 1.12978231906890869140625, 1.5888254642486572265625, 1.9997107982635498046875, 1.366230010986328125, 1.30446720123291015625, 1.107427120208740234375, 1.449007511138916015625, 1.68776285648345947265625, 1.36763012409210205078125, 1.368249416351318359375, 1.98173987865447998046875, 1.73575031757354736328125, 1.79433047771453857421875, 1.9986345767974853515625, 1.80868542194366455078125, 1.3254005908966064453125, 1.958797931671142578125, 1.91376674175262451171875, 1.23900997638702392578125, 1.47773277759552001953125, 1.72036921977996826171875, 1.84010899066925048828125, 1.6412055492401123046875, 1.3180139064788818359375, 1.75942599773406982421875, 1.58884155750274658203125, 1.1540281772613525390625, 1.72419655323028564453125, 1.6633327007293701171875},
{ 1.147434711456298828125, 1.72535645961761474609375, 1.76237332820892333984375, 1.11240708827972412109375, 1.43352067470550537109375, 1.6501295566558837890625, 1.71568930149078369140625, 1.8941218852996826171875, 1.22745811939239501953125, 1.02515017986297607421875, 1.8472173213958740234375, 1.3088653087615966796875, 1.85843241214752197265625, 1.2234880924224853515625, 1.23162615299224853515625, 1.942964076995849609375, 1.2305800914764404296875, 1.86308610439300537109375, 1.5302546024322509765625, 1.85808658599853515625, 1.0339267253875732421875, 1.9551975727081298828125, 1.577048778533935546875, 1.1146805286407470703125, 1.705323696136474609375, 1.8028240203857421875, 1.71450006961822509765625, 1.04541051387786865234375, 1.13938605785369873046875, 1.64915215969085693359375, 1.879581928253173828125, 1.27859508991241455078125, 1.14943039417266845703125, 1.075992107391357421875, 1.4396877288818359375, 1.51164495944976806640625, 1.67841160297393798828125, 1.15221440792083740234375, 1.77856862545013427734375, 1.03450000286102294921875, 1.75986087322235107421875, 1.332187652587890625, 1.632270336151123046875, 1.00306689739227294921875, 1.2288229465484619140625, 1.104216098785400390625, 1.1750710010528564453125, 1.46265661716461181640625, 1.182794094085693359375, 1.38897669315338134765625, 1.85541903972625732421875, 1.1214220523834228515625, 1.192658901214599609375, 1.687957286834716796875, 1.9818699359893798828125, 1.873795032501220703125, 1.26362812519073486328125, 1.98189365863800048828125, 1.0590240955352783203125, 1.073924541473388671875, 1.54617655277252197265625, 1.379207134246826171875, 1.87346470355987548828125, 1.5591137409210205078125, 1.79697978496551513671875, 1.5144422054290771484375, 1.3296945095062255859375, 1.4232575893402099609375, 1.5898520946502685546875, 1.69670355319976806640625, 1.0360736846923828125, 1.54028046131134033203125, 1.276684284210205078125, 1.8080942630767822265625, 1.64075767993927001953125, 1.83757317066192626953125, 1.69838047027587890625, 1.95215284824371337890625, 1.91763401031494140625, 1.31943118572235107421875, 1.64579594135284423828125, 1.8522908687591552734375, 1.60226023197174072265625, 1.84049165248870849609375, 1.07067501544952392578125, 1.00023043155670166015625, 1.97780120372772216796875, 1.62917101383209228515625, 1.04658782482147216796875, 1.55444180965423583984375, 1.21096706390380859375, 1.5611026287078857421875, 1.4798681735992431640625, 1.9885804653167724609375, 1.43795001506805419921875, 1.182573795318603515625, 1.570551395416259765625, 1.48992526531219482421875, 1.60036218166351318359375, 1.48396396636962890625},
{ 1.1078155040740966796875, 1.0311734676361083984375, 1.4231817722320556640625, 1.0083973407745361328125, 1.65208852291107177734375, 1.79064834117889404296875, 1.1991026401519775390625, 1.87257349491119384765625, 1.34151732921600341796875, 1.75228369235992431640625, 1.27500629425048828125, 1.60005462169647216796875, 1.20224761962890625, 1.4387466907501220703125, 1.15201437473297119140625, 1.02344405651092529296875, 1.21623599529266357421875, 1.60781157016754150390625, 1.89252746105194091796875, 1.784671306610107421875, 1.219686985015869140625, 1.58829748630523681640625, 1.39366328716278076171875, 1.04592990875244140625, 1.55149066448211669921875, 1.366006374359130859375, 1.41069376468658447265625, 1.9506142139434814453125, 1.45166027545928955078125, 1.41965973377227783203125, 1.33048260211944580078125, 1.83425724506378173828125, 1.20976924896240234375, 1.30683648586273193359375, 1.694922924041748046875, 1.18546855449676513671875, 1.06338942050933837890625, 1.999910831451416015625, 1.474374294281005859375, 1.35687100887298583984375, 1.84652805328369140625, 1.97198903560638427734375, 1.0911009311676025390625, 1.026038646697998046875, 1.38806545734405517578125, 1.03284740447998046875, 1.1927087306976318359375, 1.406434535980224609375, 1.6601924896240234375, 1.9148695468902587890625, 1.1755828857421875, 1.2083475589752197265625, 1.6768481731414794921875, 1.60898435115814208984375, 1.45832550525665283203125, 1.34983026981353759765625, 1.14215672016143798828125, 1.4506027698516845703125, 1.50519263744354248046875, 1.41763675212860107421875, 1.8488657474517822265625, 1.9555556774139404296875, 1.59953248500823974609375, 1.87815940380096435546875, 1.82678329944610595703125, 1.40603172779083251953125, 1.36722242832183837890625, 1.03836691379547119140625, 1.2412154674530029296875, 1.1865141391754150390625, 1.05010664463043212890625, 1.75674152374267578125, 1.0414040088653564453125, 1.8697185516357421875, 1.52943360805511474609375, 1.9042170047760009765625, 1.35896337032318115234375, 1.05253088474273681640625, 1.09929370880126953125, 1.5751154422760009765625, 1.6563189029693603515625, 1.941944122314453125, 1.9900562763214111328125, 1.04808509349822998046875, 1.62514388561248779296875, 1.6909961700439453125, 1.6418077945709228515625, 1.49703824520111083984375, 1.8347971439361572265625, 1.48470771312713623046875, 1.7277889251708984375, 1.45208799839019775390625, 1.130760669708251953125, 1.376019001007080078125, 1.927832126617431640625, 1.010486125946044921875, 1.78307664394378662109375, 1.8717277050018310546875, 1.45179927349090576171875, 1.7975609302520751953125},
{ 1.26842677593231201171875, 1.31301867961883544921875, 1.6776540279388427734375, 1.50036370754241943359375, 1.7384412288665771484375, 1.35172331333160400390625, 1.21505820751190185546875, 1.064159870147705078125, 1.16576611995697021484375, 1.00848782062530517578125, 1.88495528697967529296875, 1.52883374691009521484375, 1.73200380802154541015625, 1.84766614437103271484375, 1.03435289859771728515625, 1.76379311084747314453125, 1.2523019313812255859375, 1.830829143524169921875, 1.59302234649658203125, 1.703630924224853515625, 1.26129019260406494140625, 1.3402016162872314453125, 1.5344364643096923828125, 1.74656355381011962890625, 1.84901821613311767578125, 1.9521005153656005859375, 1.0867063999176025390625, 1.902867794036865234375, 1.246893405914306640625, 1.96037197113037109375, 1.69351959228515625, 1.69331848621368408203125, 1.16361773014068603515625, 1.64982891082763671875, 1.72507703304290771484375, 1.79762613773345947265625, 1.87112557888031005859375, 1.3196885585784912109375, 1.93903124332427978515625, 1.4528739452362060546875, 1.0405216217041015625, 1.05701005458831787109375, 1.69142305850982666015625, 1.60195600986480712890625, 1.32801759243011474609375, 1.26013147830963134765625, 1.8976194858551025390625, 1.7920143604278564453125, 1.71087014675140380859375, 1.91210806369781494140625, 1.7432515621185302734375, 1.82287657260894775390625, 1.5733187198638916015625, 1.60414922237396240234375, 1.1451511383056640625, 1.14549338817596435546875, 1.54252231121063232421875, 1.30905616283416748046875, 1.96228873729705810546875, 1.0103757381439208984375, 1.07449734210968017578125, 1.9046595096588134765625, 1.95671141147613525390625, 1.36603295803070068359375, 1.7900555133819580078125, 1.4472563266754150390625, 1.50447952747344970703125, 1.5074098110198974609375, 1.56074059009552001953125, 1.19504833221435546875, 1.0566046237945556640625, 1.47432410717010498046875, 1.3447663784027099609375, 1.381578922271728515625, 1.3499872684478759765625, 1.1999042034149169921875, 1.77295398712158203125, 1.7391707897186279296875, 1.36835384368896484375, 1.409026622772216796875, 1.48466980457305908203125, 1.77236354351043701171875, 1.05319440364837646484375, 1.26675307750701904296875, 1.2137622833251953125, 1.78135073184967041015625, 1.76470053195953369140625, 1.77676868438720703125, 1.624499797821044921875, 1.63541805744171142578125, 1.49270212650299072265625, 1.92981898784637451171875, 1.89750850200653076171875, 1.29638040065765380859375, 1.81760537624359130859375, 1.602147579193115234375, 1.06570911407470703125, 1.09201943874359130859375, 1.6213300228118896484375, 1.2039337158203125},
{ 1.73952114582061767578125, 1.54824733734130859375, 1.07772934436798095703125, 1.74646890163421630859375, 1.1189134120941162109375, 1.21611690521240234375, 1.64689731597900390625, 1.1097819805145263671875, 1.7965030670166015625, 1.17702448368072509765625, 1.31404840946197509765625, 1.9916694164276123046875, 1.29831409454345703125, 1.62831985950469970703125, 1.10947895050048828125, 1.97558939456939697265625, 1.1335246562957763671875, 1.87355363368988037109375, 1.0896084308624267578125, 1.2629196643829345703125, 1.5679047107696533203125, 1.5334150791168212890625, 1.48541653156280517578125, 1.258895397186279296875, 1.14725363254547119140625, 1.5066699981689453125, 1.6008813381195068359375, 1.90854704380035400390625, 1.97083723545074462890625, 1.681097507476806640625, 1.46141636371612548828125, 1.782637119293212890625, 1.71482598781585693359375, 1.39442789554595947265625, 1.2123081684112548828125, 1.91359817981719970703125, 1.40573203563690185546875, 1.64528048038482666015625, 1.26715385913848876953125, 1.38147008419036865234375, 1.94384682178497314453125, 1.05410039424896240234375, 1.20629870891571044921875, 1.649837970733642578125, 1.3766787052154541015625, 1.5740964412689208984375, 1.4252731800079345703125, 1.65176904201507568359375, 1.922389984130859375, 1.952178955078125, 1.53323113918304443359375, 1.62575042247772216796875, 1.743235111236572265625, 1.93989658355712890625, 1.5013868808746337890625, 1.7016270160675048828125, 1.4689977169036865234375, 1.2543742656707763671875, 1.56145274639129638671875, 1.23653829097747802734375, 1.4704282283782958984375, 1.28925049304962158203125, 1.85407674312591552734375, 1.90085613727569580078125, 1.882681369781494140625, 1.57561528682708740234375, 1.827279567718505859375, 1.5141227245330810546875, 1.37875378131866455078125, 1.99294698238372802734375, 1.38489282131195068359375, 1.63098728656768798828125, 1.69292104244232177734375, 1.73005008697509765625, 1.78499603271484375, 1.87714397907257080078125, 1.89417588710784912109375, 1.995993137359619140625, 1.28835427761077880859375, 1.03526973724365234375, 1.40966522693634033203125, 1.4810454845428466796875, 1.55685579776763916015625, 1.88096106052398681640625, 1.79812777042388916015625, 1.56761515140533447265625, 1.801949024200439453125, 1.76867187023162841796875, 1.27333164215087890625, 1.29118669033050537109375, 1.68308079242706298828125, 1.9676513671875, 1.97751140594482421875, 1.05125796794891357421875, 1.956133365631103515625, 1.74788081645965576171875, 1.0048062801361083984375, 1.07227802276611328125, 1.87186205387115478515625, 1.216011524200439453125},
{ 1.61458492279052734375, 1.324332714080810546875, 1.9013020992279052734375, 1.555444240570068359375, 1.9353425502777099609375, 1.7493593692779541015625, 1.09155642986297607421875, 1.73752462863922119140625, 1.99947845935821533203125, 1.77294123172760009765625, 1.9190604686737060546875, 1.85706937313079833984375, 1.94062173366546630859375, 1.6097009181976318359375, 1.1965200901031494140625, 1.36930167675018310546875, 1.27203977108001708984375, 1.21132147312164306640625, 1.00299894809722900390625, 1.57197391986846923828125, 1.84757626056671142578125, 1.1649839878082275390625, 1.0198552608489990234375, 1.87880527973175048828125, 1.572588443756103515625, 1.3418052196502685546875, 1.616679668426513671875, 1.84291923046112060546875, 1.8648850917816162109375, 1.29527461528778076171875, 1.68723309040069580078125, 1.930281162261962890625, 1.8656632900238037109375, 1.4096925258636474609375, 1.235383510589599609375, 1.0431354045867919921875, 1.40044629573822021484375, 1.79860723018646240234375, 1.711043834686279296875, 1.7934434413909912109375, 1.69002139568328857421875, 1.9532525539398193359375, 1.09610974788665771484375, 1.526320934295654296875, 1.81137669086456298828125, 1.1409854888916015625, 1.7403964996337890625, 1.093475341796875, 1.90863895416259765625, 1.55372321605682373046875, 1.9475767612457275390625, 1.37664353847503662109375, 1.1540114879608154296875, 1.206381320953369140625, 1.31111848354339599609375, 1.56102883815765380859375, 1.4587109088897705078125, 1.58531081676483154296875, 1.8002216815948486328125, 1.15873920917510986328125, 1.93390500545501708984375, 1.0467357635498046875, 1.59575641155242919921875, 1.78222429752349853515625, 1.10165059566497802734375, 1.96519076824188232421875, 1.67620003223419189453125, 1.66771304607391357421875, 1.85583031177520751953125, 1.63195860385894775390625, 1.1535751819610595703125, 1.94865131378173828125, 1.173090457916259765625, 1.903507232666015625, 1.35938656330108642578125, 1.6791388988494873046875, 1.5737788677215576171875, 1.59992802143096923828125, 1.68055880069732666015625, 1.6073677539825439453125, 1.3328816890716552734375, 1.65337276458740234375, 1.145374298095703125, 1.699059009552001953125, 1.440961360931396484375, 1.00649130344390869140625, 1.75941002368927001953125, 1.410900592803955078125, 1.31509387493133544921875, 1.26086914539337158203125, 1.59147536754608154296875, 1.7139847278594970703125, 1.25980675220489501953125, 1.0754644870758056640625, 1.609549999237060546875, 1.86724555492401123046875, 1.67801582813262939453125, 1.31504642963409423828125, 1.26672065258026123046875, 1.94089615345001220703125},
{ 1.9486320018768310546875, 1.83711898326873779296875, 1.08986675739288330078125, 1.5541546344757080078125, 1.69792377948760986328125, 1.5018594264984130859375, 1.57724177837371826171875, 1.708297252655029296875, 1.43574750423431396484375, 1.18497598171234130859375, 1.54769742488861083984375, 1.40023648738861083984375, 1.3344891071319580078125, 1.13936007022857666015625, 1.5509393215179443359375, 1.93889439105987548828125, 1.76453292369842529296875, 1.2826983928680419921875, 1.8151395320892333984375, 1.74720633029937744140625, 1.9426987171173095703125, 1.28340971469879150390625, 1.270374774932861328125, 1.8230588436126708984375, 1.33067929744720458984375, 1.3965828418731689453125, 1.322063446044921875, 1.9502274990081787109375, 1.7834780216217041015625, 1.049913883209228515625, 1.3744032382965087890625, 1.659313678741455078125, 1.44784641265869140625, 1.17964422702789306640625, 1.10380876064300537109375, 1.93868243694305419921875, 1.41072118282318115234375, 1.316497325897216796875, 1.48234856128692626953125, 1.69540035724639892578125, 1.097662448883056640625, 1.42161655426025390625, 1.55118334293365478515625, 1.96617233753204345703125, 1.42129075527191162109375, 1.47250306606292724609375, 1.94400298595428466796875, 1.87827956676483154296875, 1.67972469329833984375, 1.798952579498291015625, 1.16046416759490966796875, 1.3605167865753173828125, 1.205018520355224609375, 1.1689932346343994140625, 1.58962786197662353515625, 1.604130268096923828125, 1.76159918308258056640625, 1.62482345104217529296875, 1.2833969593048095703125, 1.273754596710205078125, 1.694704532623291015625, 1.0687487125396728515625, 1.479953289031982421875, 1.46835052967071533203125, 1.82882034778594970703125, 1.5991194248199462890625, 1.877195835113525390625, 1.43214285373687744140625, 1.116117954254150390625, 1.59626877307891845703125, 1.6561777591705322265625, 1.01555716991424560546875, 1.0348918437957763671875, 1.5584495067596435546875, 1.2545440196990966796875, 1.8861577510833740234375, 1.73799669742584228515625, 1.68777179718017578125, 1.88996899127960205078125, 1.489585399627685546875, 1.9512856006622314453125, 1.22614109516143798828125, 1.83359348773956298828125, 1.760494232177734375, 1.62204706668853759765625, 1.541194915771484375, 1.43346297740936279296875, 1.58348953723907470703125, 1.3174426555633544921875, 1.96224081516265869140625, 1.88796460628509521484375, 1.00406563282012939453125, 1.37294447422027587890625, 1.36619365215301513671875, 1.76926481723785400390625, 1.18954265117645263671875, 1.79077279567718505859375, 1.5135135650634765625, 1.2967469692230224609375, 1.1400043964385986328125},
{ 1.13414275646209716796875, 1.360448360443115234375, 1.149236202239990234375, 1.69665420055389404296875, 1.76344335079193115234375, 1.294498443603515625, 1.015661716461181640625, 1.1088254451751708984375, 1.3281352519989013671875, 1.4005558490753173828125, 1.0032808780670166015625, 1.77843415737152099609375, 1.48223292827606201171875, 1.2212460041046142578125, 1.55260717868804931640625, 1.76800334453582763671875, 1.69298326969146728515625, 1.5635986328125, 1.74160563945770263671875, 1.94742870330810546875, 1.0768034458160400390625, 1.27248537540435791015625, 1.49662959575653076171875, 1.14241683483123779296875, 1.98521769046783447265625, 1.75405681133270263671875, 1.553358554840087890625, 1.032922267913818359375, 1.34079515933990478515625, 1.24918067455291748046875, 1.167736053466796875, 1.80158507823944091796875, 1.723087787628173828125, 1.85687887668609619140625, 1.5769064426422119140625, 1.53216850757598876953125, 1.20456707477569580078125, 1.30776512622833251953125, 1.21015274524688720703125, 1.3579959869384765625, 1.93656194210052490234375, 1.487482547760009765625, 1.64983451366424560546875, 1.36038935184478759765625, 1.485196590423583984375, 1.710140705108642578125, 1.34232461452484130859375, 1.217105865478515625, 1.91732728481292724609375, 1.7417538166046142578125, 1.058947086334228515625, 1.60077583789825439453125, 1.6364803314208984375, 1.5736777782440185546875, 1.106914997100830078125, 1.32734012603759765625, 1.9687893390655517578125, 1.94604778289794921875, 1.2902672290802001953125, 1.2544877529144287109375, 1.49893319606781005859375, 1.62121593952178955078125, 1.62080633640289306640625, 1.93009293079376220703125, 1.1560728549957275390625, 1.40718829631805419921875, 1.77903640270233154296875, 1.9906532764434814453125, 1.0497891902923583984375, 1.93106305599212646484375, 1.32509982585906982421875, 1.30972683429718017578125, 1.05602085590362548828125, 1.16246759891510009765625, 1.65971529483795166015625, 1.8963696956634521484375, 1.1530010700225830078125, 1.68699610233306884765625, 1.73511505126953125, 1.5435736179351806640625, 1.50719547271728515625, 1.72964704036712646484375, 1.5159828662872314453125, 1.22670304775238037109375, 1.30923998355865478515625, 1.92826080322265625, 1.1903908252716064453125, 1.2519333362579345703125, 1.35987758636474609375, 1.8569567203521728515625, 1.13073718547821044921875, 1.15468776226043701171875, 1.40589618682861328125, 1.2995712757110595703125, 1.60468423366546630859375, 1.3480751514434814453125, 1.22606647014617919921875, 1.27309513092041015625, 1.23609507083892822265625, 1.521327495574951171875},
{ 1.801110744476318359375, 1.215971469879150390625, 1.78823697566986083984375, 1.2294805049896240234375, 1.43722999095916748046875, 1.2633917331695556640625, 1.58559417724609375, 1.40361487865447998046875, 1.53853118419647216796875, 1.3364474773406982421875, 1.32162511348724365234375, 1.7555568218231201171875, 1.28899729251861572265625, 1.09318149089813232421875, 1.774428844451904296875, 1.76305139064788818359375, 1.47295296192169189453125, 1.10252559185028076171875, 1.24041497707366943359375, 1.20145094394683837890625, 1.99850213527679443359375, 1.80523741245269775390625, 1.43274128437042236328125, 1.4796531200408935546875, 1.170965671539306640625, 1.2248382568359375, 1.129750728607177734375, 1.72603762149810791015625, 1.7163183689117431640625, 1.4285509586334228515625, 1.57340967655181884765625, 1.62440407276153564453125, 1.5546271800994873046875, 1.7382366657257080078125, 1.617744922637939453125, 1.999909877777099609375, 1.3234882354736328125, 1.69133281707763671875, 1.62728130817413330078125, 1.15500700473785400390625, 1.6514644622802734375, 1.75179040431976318359375, 1.12547934055328369140625, 1.95537984371185302734375, 1.1815230846405029296875, 1.77101194858551025390625, 1.1931722164154052734375, 1.66588306427001953125, 1.34447324275970458984375, 1.19878828525543212890625, 1.61700403690338134765625, 1.53647840023040771484375, 1.88240301609039306640625, 1.0442364215850830078125, 1.7878668308258056640625, 1.13817250728607177734375, 1.12211763858795166015625, 1.5867373943328857421875, 1.34933817386627197265625, 1.4489548206329345703125, 1.99857652187347412109375, 1.83687305450439453125, 1.59611880779266357421875, 1.68973433971405029296875, 1.82833087444305419921875, 1.74736392498016357421875, 1.6224696636199951171875, 1.91027748584747314453125, 1.8329613208770751953125, 1.17400705814361572265625, 1.22065007686614990234375, 1.3251459598541259765625, 1.4125149250030517578125, 1.58661282062530517578125, 1.5293548107147216796875, 1.39963352680206298828125, 1.1689434051513671875, 1.5299427509307861328125, 1.43215167522430419921875, 1.6857039928436279296875, 1.679540157318115234375, 1.8346474170684814453125, 1.7059190273284912109375, 1.407928466796875, 1.0203778743743896484375, 1.5782032012939453125, 1.919283390045166015625, 1.79942333698272705078125, 1.03974616527557373046875, 1.79585015773773193359375, 1.08105647563934326171875, 1.18778705596923828125, 1.38158857822418212890625, 1.94152987003326416015625, 1.03867340087890625, 1.831037998199462890625, 1.25894081592559814453125, 1.09882223606109619140625, 1.62662971019744873046875, 1.50355231761932373046875},
{ 1.94188344478607177734375, 1.564918994903564453125, 1.832000732421875, 1.20840108394622802734375, 1.4463832378387451171875, 1.10747051239013671875, 1.3812863826751708984375, 1.01297676563262939453125, 1.3504428863525390625, 1.44058620929718017578125, 1.49048268795013427734375, 1.6148726940155029296875, 1.3655719757080078125, 1.831378936767578125, 1.8587701320648193359375, 1.92414569854736328125, 1.13760626316070556640625, 1.52620947360992431640625, 1.8813741207122802734375, 1.81056976318359375, 1.95764553546905517578125, 1.3991241455078125, 1.73550283908843994140625, 1.1270730495452880859375, 1.22299039363861083984375, 1.3502924442291259765625, 1.2162840366363525390625, 1.4831755161285400390625, 1.6480801105499267578125, 1.45444405078887939453125, 1.322702884674072265625, 1.76842653751373291015625, 1.22543048858642578125, 1.8593070507049560546875, 1.59353983402252197265625, 1.42584192752838134765625, 1.936570644378662109375, 1.43404495716094970703125, 1.193307399749755859375, 1.47534215450286865234375, 1.21298086643218994140625, 1.1676943302154541015625, 1.74818813800811767578125, 1.28718936443328857421875, 1.14703047275543212890625, 1.31760227680206298828125, 1.93197190761566162109375, 1.10542500019073486328125, 1.45291459560394287109375, 1.30786406993865966796875, 1.801993846893310546875, 1.3213074207305908203125, 1.1775920391082763671875, 1.3777601718902587890625, 1.88507115840911865234375, 1.49674892425537109375, 1.16172313690185546875, 1.98019444942474365234375, 1.01344096660614013671875, 1.137753963470458984375, 1.250606536865234375, 1.9301311969757080078125, 1.9106981754302978515625, 1.2178561687469482421875, 1.2551171779632568359375, 1.30303275585174560546875, 1.52773225307464599609375, 1.4515559673309326171875, 1.66264355182647705078125, 1.08329713344573974609375, 1.12866508960723876953125, 1.317758083343505859375, 1.09802567958831787109375, 1.562695026397705078125, 1.1267888545989990234375, 1.83320915699005126953125, 1.53449189662933349609375, 1.48880803585052490234375, 1.67050278186798095703125, 1.07593476772308349609375, 1.254596710205078125, 1.96346569061279296875, 1.97925102710723876953125, 1.45867764949798583984375, 1.561158657073974609375, 1.09118306636810302734375, 1.4294605255126953125, 1.75233471393585205078125, 1.2381970882415771484375, 1.37759840488433837890625, 1.39047777652740478515625, 1.85939466953277587890625, 1.76187002658843994140625, 1.877910137176513671875, 1.81050670146942138671875, 1.337375640869140625, 1.26141202449798583984375, 1.09531509876251220703125, 1.55254650115966796875, 1.6722621917724609375},
{ 1.629445552825927734375, 1.48032844066619873046875, 1.3019435405731201171875, 1.98604583740234375, 1.57480680942535400390625, 1.294253826141357421875, 1.3896505832672119140625, 1.8834247589111328125, 1.669214725494384765625, 1.1173312664031982421875, 1.347393512725830078125, 1.2731215953826904296875, 1.1922333240509033203125, 1.83111464977264404296875, 1.10939943790435791015625, 1.21381390094757080078125, 1.61361181735992431640625, 1.1616399288177490234375, 1.15554940700531005859375, 1.93288075923919677734375, 1.9917228221893310546875, 1.5153629779815673828125, 1.28481662273406982421875, 1.03733956813812255859375, 1.12199938297271728515625, 1.56509745121002197265625, 1.13870346546173095703125, 1.47478401660919189453125, 1.4353725910186767578125, 1.5859515666961669921875, 1.47467911243438720703125, 1.244321346282958984375, 1.6467092037200927734375, 1.541265964508056640625, 1.18961703777313232421875, 1.8575103282928466796875, 1.15324866771697998046875, 1.91855156421661376953125, 1.093232631683349609375, 1.5492980480194091796875, 1.1830413341522216796875, 1.315426349639892578125, 1.4315202236175537109375, 1.23895776271820068359375, 1.69338548183441162109375, 1.775553226470947265625, 1.1601912975311279296875, 1.24102675914764404296875, 1.0192649364471435546875, 1.87457787990570068359375, 1.968111515045166015625, 1.72624313831329345703125, 1.27178668975830078125, 1.55606555938720703125, 1.05073833465576171875, 1.932483673095703125, 1.48661792278289794921875, 1.7174389362335205078125, 1.63355863094329833984375, 1.1257016658782958984375, 1.522424221038818359375, 1.54591596126556396484375, 1.24552571773529052734375, 1.3108637332916259765625, 1.70930659770965576171875, 1.6044466495513916015625, 1.74249756336212158203125, 1.69288766384124755859375, 1.24723911285400390625, 1.66765105724334716796875, 1.08067381381988525390625, 1.88758027553558349609375, 1.35450637340545654296875, 1.30775654315948486328125, 1.84003341197967529296875, 1.88257420063018798828125, 1.16614115238189697265625, 1.2305357456207275390625, 1.497772216796875, 1.748265743255615234375, 1.38236141204833984375, 1.36124336719512939453125, 1.4517400264739990234375, 1.0987527370452880859375, 1.66700851917266845703125, 1.68055403232574462890625, 1.7938787937164306640625, 1.3027713298797607421875, 1.7959842681884765625, 1.81050014495849609375, 1.833659648895263671875, 1.444633960723876953125, 1.55568850040435791015625, 1.35040867328643798828125, 1.371520519256591796875, 1.03516662120819091796875, 1.39145672321319580078125, 1.96283900737762451171875, 1.7223036289215087890625, 1.47264683246612548828125},
{ 1.209520816802978515625, 1.48869311809539794921875, 1.25374042987823486328125, 1.50782883167266845703125, 1.13729083538055419921875, 1.08465206623077392578125, 1.9344394207000732421875, 1.3097188472747802734375, 1.61403071880340576171875, 1.00886070728302001953125, 1.8409998416900634765625, 1.77711975574493408203125, 1.4146049022674560546875, 1.86815345287322998046875, 1.530878543853759765625, 1.62660729885101318359375, 1.05679738521575927734375, 1.15095651149749755859375, 1.00367105007171630859375, 1.8743174076080322265625, 1.38724958896636962890625, 1.7507255077362060546875, 1.66204941272735595703125, 1.73438441753387451171875, 1.9173982143402099609375, 1.2393825054168701171875, 1.02269899845123291015625, 1.2673780918121337890625, 1.90941202640533447265625, 1.890754222869873046875, 1.1772563457489013671875, 1.77874124050140380859375, 1.2121298313140869140625, 1.45400905609130859375, 1.0032470226287841796875, 1.9672272205352783203125, 1.846997737884521484375, 1.6770946979522705078125, 1.125022411346435546875, 1.823337554931640625, 1.34400713443756103515625, 1.58017575740814208984375, 1.62469756603240966796875, 1.27775895595550537109375, 1.827631473541259765625, 1.47907078266143798828125, 1.50308907032012939453125, 1.599801540374755859375, 1.852764129638671875, 1.75869047641754150390625, 1.89065182209014892578125, 1.54583585262298583984375, 1.99065625667572021484375, 1.39647471904754638671875, 1.00841701030731201171875, 1.2577304840087890625, 1.164853572845458984375, 1.23583018779754638671875, 1.8789293766021728515625, 1.911289691925048828125, 1.7371342182159423828125, 1.00956785678863525390625, 1.787185192108154296875, 1.11469042301177978515625, 1.34344661235809326171875, 1.1133406162261962890625, 1.491569042205810546875, 1.056920528411865234375, 1.4798462390899658203125, 1.129080295562744140625, 1.18479168415069580078125, 1.40621578693389892578125, 1.8384335041046142578125, 1.098435878753662109375, 1.20482790470123291015625, 1.958497524261474609375, 1.39329159259796142578125, 1.5462105274200439453125, 1.49585330486297607421875, 1.0358102321624755859375, 1.2364232540130615234375, 1.2537992000579833984375, 1.8191821575164794921875, 1.63475859165191650390625, 1.16368865966796875, 1.78262627124786376953125, 1.714205265045166015625, 1.3249456882476806640625, 1.01074326038360595703125, 1.74758255481719970703125, 1.20932674407958984375, 1.89741003513336181640625, 1.73897457122802734375, 1.84046351909637451171875, 1.28290188312530517578125, 1.7630631923675537109375, 1.27144014835357666015625, 1.60340631008148193359375, 1.07417500019073486328125, 1.10112726688385009765625},
{ 1.95232737064361572265625, 1.84421622753143310546875, 1.75757253170013427734375, 1.51527881622314453125, 1.4503600597381591796875, 1.6868593692779541015625, 1.8935544490814208984375, 1.90455424785614013671875, 1.331291675567626953125, 1.989639759063720703125, 1.38385188579559326171875, 1.37574326992034912109375, 1.27300167083740234375, 1.644731044769287109375, 1.9653041362762451171875, 1.4493157863616943359375, 1.9208986759185791015625, 1.0098831653594970703125, 1.13524854183197021484375, 1.37303626537322998046875, 1.1613581180572509765625, 1.61935961246490478515625, 1.79995810985565185546875, 1.20790159702301025390625, 1.14515972137451171875, 1.64487540721893310546875, 1.6730785369873046875, 1.6640789508819580078125, 1.06092512607574462890625, 1.10653388500213623046875, 1.42406642436981201171875, 1.68684256076812744140625, 1.65855491161346435546875, 1.833764553070068359375, 1.576626300811767578125, 1.79251158237457275390625, 1.52266681194305419921875, 1.17626094818115234375, 1.15714824199676513671875, 1.154387950897216796875, 1.09603273868560791015625, 1.4649174213409423828125, 1.09314548969268798828125, 1.43869316577911376953125, 1.45301640033721923828125, 1.22276699542999267578125, 1.36169147491455078125, 1.39050614833831787109375, 1.823010921478271484375, 1.12591922283172607421875, 1.88785803318023681640625, 1.169701099395751953125, 1.863875865936279296875, 1.71449697017669677734375, 1.19315242767333984375, 1.43688428401947021484375, 1.6853754520416259765625, 1.853574275970458984375, 1.79395496845245361328125, 1.18933200836181640625, 1.6226155757904052734375, 1.944114208221435546875, 1.349956512451171875, 1.3469278812408447265625, 1.7594814300537109375, 1.8839056491851806640625, 1.5625960826873779296875, 1.08810079097747802734375, 1.20207512378692626953125, 1.77850115299224853515625, 1.82349789142608642578125, 1.9357616901397705078125, 1.10215270519256591796875, 1.40215480327606201171875, 1.6129095554351806640625, 1.5932414531707763671875, 1.43056237697601318359375, 1.40875899791717529296875, 1.64813911914825439453125, 1.53022873401641845703125, 1.50068151950836181640625, 1.29278242588043212890625, 1.7819926738739013671875, 1.3187067508697509765625, 1.24185431003570556640625, 1.10020732879638671875, 1.6512119770050048828125, 1.718891143798828125, 1.22282922267913818359375, 1.8894674777984619140625, 1.07491147518157958984375, 1.51516783237457275390625, 1.42519664764404296875, 1.9423849582672119140625, 1.2030165195465087890625, 1.1020298004150390625, 1.7668259143829345703125, 1.72510802745819091796875, 1.41470038890838623046875, 1.82001495361328125},
{ 1.59904897212982177734375, 1.9668219089508056640625, 1.04164397716522216796875, 1.611370086669921875, 1.28182089328765869140625, 1.392363071441650390625, 1.007357120513916015625, 1.842358112335205078125, 1.058175563812255859375, 1.64886605739593505859375, 1.4114520549774169921875, 1.96562945842742919921875, 1.7409412860870361328125, 1.01687145233154296875, 1.73802173137664794921875, 1.68201243877410888671875, 1.3819596767425537109375, 1.74835526943206787109375, 1.3468911647796630859375, 1.51924002170562744140625, 1.73302352428436279296875, 1.465166568756103515625, 1.30955541133880615234375, 1.60538685321807861328125, 1.45681464672088623046875, 1.30746495723724365234375, 1.99511682987213134765625, 1.19230687618255615234375, 1.08784067630767822265625, 1.83215820789337158203125, 1.4062230587005615234375, 1.929070949554443359375, 1.74337291717529296875, 1.661339282989501953125, 1.26500380039215087890625, 1.8854038715362548828125, 1.5843842029571533203125, 1.88072454929351806640625, 1.84900867938995361328125, 1.3251225948333740234375, 1.0264856815338134765625, 1.188090801239013671875, 1.577145099639892578125, 1.22957324981689453125, 1.7008647918701171875, 1.79171288013458251953125, 1.34561502933502197265625, 1.57106876373291015625, 1.16522252559661865234375, 1.05880129337310791015625, 1.61385285854339599609375, 1.3363263607025146484375, 1.36471140384674072265625, 1.9139392375946044921875, 1.2404632568359375, 1.29990518093109130859375, 1.84287226200103759765625, 1.98752081394195556640625, 1.06915795803070068359375, 1.54764330387115478515625, 1.7025721073150634765625, 1.5141880512237548828125, 1.26469361782073974609375, 1.75009596347808837890625, 1.3169419765472412109375, 1.98126852512359619140625, 1.3988096714019775390625, 1.18597257137298583984375, 1.790313720703125, 1.52721297740936279296875, 1.28616511821746826171875, 1.51557433605194091796875, 1.16915786266326904296875, 1.0900323390960693359375, 1.57027637958526611328125, 1.3042318820953369140625, 1.40302145481109619140625, 1.30573594570159912109375, 1.0594551563262939453125, 1.2957422733306884765625, 1.05546486377716064453125, 1.1567685604095458984375, 1.81274521350860595703125, 1.43580722808837890625, 1.7649996280670166015625, 1.37044799327850341796875, 1.9758603572845458984375, 1.645470142364501953125, 1.4560263156890869140625, 1.5674026012420654296875, 1.36712169647216796875, 1.3445537090301513671875, 1.29977130889892578125, 1.160008907318115234375, 1.81339561939239501953125, 1.72509753704071044921875, 1.42522466182708740234375, 1.00082862377166748046875, 1.23603057861328125, 1.77479517459869384765625},
{ 1.78104686737060546875, 1.486794948577880859375, 1.05043232440948486328125, 1.34166109561920166015625, 1.17890918254852294921875, 1.93381488323211669921875, 1.20132386684417724609375, 1.07788026332855224609375, 1.758159160614013671875, 1.79751110076904296875, 1.24275147914886474609375, 1.6581552028656005859375, 1.6164760589599609375, 1.2365367412567138671875, 1.57940113544464111328125, 1.91435718536376953125, 1.78391182422637939453125, 1.18371522426605224609375, 1.7788007259368896484375, 1.65174579620361328125, 1.37132930755615234375, 1.9319770336151123046875, 1.094757080078125, 1.60990679264068603515625, 1.46883928775787353515625, 1.4702975749969482421875, 1.74079418182373046875, 1.17368996143341064453125, 1.79423809051513671875, 1.56963503360748291015625, 1.9135901927947998046875, 1.83414590358734130859375, 1.0914452075958251953125, 1.6188671588897705078125, 1.5664150714874267578125, 1.3994638919830322265625, 1.27894032001495361328125, 1.210729122161865234375, 1.93256819248199462890625, 1.95590972900390625, 1.3482015132904052734375, 1.47775137424468994140625, 1.79881536960601806640625, 1.578762531280517578125, 1.01214230060577392578125, 1.178196430206298828125, 1.52882707118988037109375, 1.79325258731842041015625, 1.1035492420196533203125, 1.53199684619903564453125, 1.83661544322967529296875, 1.78549921512603759765625, 1.72351944446563720703125, 1.80669248104095458984375, 1.30997192859649658203125, 1.36344754695892333984375, 1.13989818096160888671875, 1.653368473052978515625, 1.6839048862457275390625, 1.6678063869476318359375, 1.4357159137725830078125, 1.19259202480316162109375, 1.8640766143798828125, 1.6329860687255859375, 1.90762650966644287109375, 1.85035026073455810546875, 1.700241565704345703125, 1.19803524017333984375, 1.2143442630767822265625, 1.9439880847930908203125, 1.5096833705902099609375, 1.2675788402557373046875, 1.27508151531219482421875, 1.01814496517181396484375, 1.3506524562835693359375, 1.42275536060333251953125, 1.91798627376556396484375, 1.93069279193878173828125, 1.045803546905517578125, 1.38215482234954833984375, 1.278579235076904296875, 1.6886737346649169921875, 1.95563328266143798828125, 1.21275556087493896484375, 1.94819200038909912109375, 1.03423702716827392578125, 1.50191724300384521484375, 1.29086208343505859375, 1.8724040985107421875, 1.78057682514190673828125, 1.44114816188812255859375, 1.013042926788330078125, 1.99948060512542724609375, 1.89787006378173828125, 1.88797295093536376953125, 1.2570674419403076171875, 1.67880976200103759765625, 1.34921324253082275390625, 1.08863031864166259765625, 1.59284365177154541015625},
{ 1.67656028270721435546875, 1.94438838958740234375, 1.24335610866546630859375, 1.73801815509796142578125, 1.3366603851318359375, 1.28498172760009765625, 1.79560267925262451171875, 1.908226490020751953125, 1.78699481487274169921875, 1.8920495510101318359375, 1.66153240203857421875, 1.25822031497955322265625, 1.321714878082275390625, 1.2725727558135986328125, 1.28898334503173828125, 1.369565486907958984375, 1.6575791835784912109375, 1.182311534881591796875, 1.1226193904876708984375, 1.3655760288238525390625, 1.26989161968231201171875, 1.89924299716949462890625, 1.31486809253692626953125, 1.55975115299224853515625, 1.4784381389617919921875, 1.24699819087982177734375, 1.18685853481292724609375, 1.8542134761810302734375, 1.2834246158599853515625, 1.36830031871795654296875, 1.43935811519622802734375, 1.88814604282379150390625, 1.95141470432281494140625, 1.24840176105499267578125, 1.11371052265167236328125, 1.9362299442291259765625, 1.3512666225433349609375, 1.98852169513702392578125, 1.302772998809814453125, 1.5570819377899169921875, 1.040071010589599609375, 1.82928359508514404296875, 1.6118543148040771484375, 1.99169147014617919921875, 1.09908878803253173828125, 1.924152851104736328125, 1.3696515560150146484375, 1.3118588924407958984375, 1.719687938690185546875, 1.8628737926483154296875, 1.58918797969818115234375, 1.31863248348236083984375, 1.539281368255615234375, 1.9449079036712646484375, 1.67875087261199951171875, 1.1907460689544677734375, 1.72726476192474365234375, 1.202870845794677734375, 1.90282833576202392578125, 1.883056640625, 1.820953369140625, 1.1759700775146484375, 1.59304714202880859375, 1.27498137950897216796875, 1.3115198612213134765625, 1.43344247341156005859375, 1.1091105937957763671875, 1.068935871124267578125, 1.97993218898773193359375, 1.84799134731292724609375, 1.5497353076934814453125, 1.43877112865447998046875, 1.9828903675079345703125, 1.61922466754913330078125, 1.21358907222747802734375, 1.428211212158203125, 1.68876445293426513671875, 1.04709208011627197265625, 1.81022870540618896484375, 1.09929072856903076171875, 1.26353180408477783203125, 1.05532252788543701171875, 1.42103683948516845703125, 1.43079245090484619140625, 1.0067150592803955078125, 1.46486186981201171875, 1.210159778594970703125, 1.9666843414306640625, 1.43731892108917236328125, 1.0173099040985107421875, 1.8854453563690185546875, 1.21455776691436767578125, 1.12976801395416259765625, 1.1483585834503173828125, 1.9093797206878662109375, 1.79406452178955078125, 1.2998447418212890625, 1.511229038238525390625, 1.460025310516357421875, 1.33535444736480712890625},
{ 1.250109195709228515625, 1.14195811748504638671875, 1.12751305103302001953125, 1.90842139720916748046875, 1.0235912799835205078125, 1.44720566272735595703125, 1.5169985294342041015625, 1.758710384368896484375, 1.77810943126678466796875, 1.96618378162384033203125, 1.05607998371124267578125, 1.33207976818084716796875, 1.27137672901153564453125, 1.3486344814300537109375, 1.4012744426727294921875, 1.09016120433807373046875, 1.34582340717315673828125, 1.0145637989044189453125, 1.96178448200225830078125, 1.4015691280364990234375, 1.95203387737274169921875, 1.615178585052490234375, 1.29793584346771240234375, 1.37783753871917724609375, 1.92218434810638427734375, 1.24382436275482177734375, 1.2696144580841064453125, 1.45935785770416259765625, 1.4934804439544677734375, 1.39692318439483642578125, 1.93470466136932373046875, 1.7513167858123779296875, 1.5815942287445068359375, 1.68491041660308837890625, 1.1975262165069580078125, 1.10963308811187744140625, 1.804102420806884765625, 1.2931725978851318359375, 1.20727193355560302734375, 1.9768955707550048828125, 1.2539234161376953125, 1.1929852962493896484375, 1.5064451694488525390625, 1.968300342559814453125, 1.0227549076080322265625, 1.102449893951416015625, 1.92929744720458984375, 1.20758879184722900390625, 1.47451150417327880859375, 1.19743144512176513671875, 1.25026547908782958984375, 1.412984371185302734375, 1.26876175403594970703125, 1.57249653339385986328125, 1.582409381866455078125, 1.73313045501708984375, 1.13416635990142822265625, 1.45185005664825439453125, 1.52584969997406005859375, 1.33302819728851318359375, 1.39191520214080810546875, 1.15027320384979248046875, 1.06620502471923828125, 1.729973316192626953125, 1.22916495800018310546875, 1.7840607166290283203125, 1.223029613494873046875, 1.8794939517974853515625, 1.72247660160064697265625, 1.731958866119384765625, 1.44825041294097900390625, 1.01128852367401123046875, 1.6112530231475830078125, 1.846102237701416015625, 1.774605274200439453125, 1.2151625156402587890625, 1.821176052093505859375, 1.41295158863067626953125, 1.71407997608184814453125, 1.7769663333892822265625, 1.737644672393798828125, 1.86423170566558837890625, 1.906345844268798828125, 1.26453316211700439453125, 1.2292120456695556640625, 1.23786818981170654296875, 1.5171973705291748046875, 1.3636157512664794921875, 1.4210231304168701171875, 1.3889253139495849609375, 1.38698923587799072265625, 1.46382427215576171875, 1.21825230121612548828125, 1.950543880462646484375, 1.9290745258331298828125, 1.99456417560577392578125, 1.57954037189483642578125, 1.0448780059814453125, 1.77824175357818603515625, 1.5109729766845703125},
{ 1.74403297901153564453125, 1.1891524791717529296875, 1.52985823154449462890625, 1.98681676387786865234375, 1.28100311756134033203125, 1.18477880954742431640625, 1.11563479900360107421875, 1.17835867404937744140625, 1.01060855388641357421875, 1.45484101772308349609375, 1.2162628173828125, 1.0219419002532958984375, 1.1204330921173095703125, 1.0042445659637451171875, 1.74918448925018310546875, 1.095103740692138671875, 1.091762065887451171875, 1.55151832103729248046875, 1.43726193904876708984375, 1.4194736480712890625, 1.910519123077392578125, 1.6772515773773193359375, 1.3947150707244873046875, 1.9842102527618408203125, 1.0282042026519775390625, 1.72253167629241943359375, 1.46305835247039794921875, 1.0194389820098876953125, 1.07283079624176025390625, 1.43738162517547607421875, 1.29703867435455322265625, 1.0196895599365234375, 1.30986392498016357421875, 1.37919712066650390625, 1.2005732059478759765625, 1.51733362674713134765625, 1.85315692424774169921875, 1.06118476390838623046875, 1.71268618106842041015625, 1.60602176189422607421875, 1.625889301300048828125, 1.850799083709716796875, 1.94344675540924072265625, 1.21412169933319091796875, 1.0715045928955078125, 1.61818015575408935546875, 1.659906864166259765625, 1.12815535068511962890625, 1.6146471500396728515625, 1.13459122180938720703125, 1.12203800678253173828125, 1.76623642444610595703125, 1.87209999561309814453125, 1.220855712890625, 1.66866910457611083984375, 1.701508045196533203125, 1.61372268199920654296875, 1.64579546451568603515625, 1.053424358367919921875, 1.935579776763916015625, 1.47338807582855224609375, 1.7746677398681640625, 1.53066003322601318359375, 1.9219658374786376953125, 1.409920215606689453125, 1.96760284900665283203125, 1.691402435302734375, 1.3395221233367919921875, 1.918032169342041015625, 1.72804164886474609375, 1.0492851734161376953125, 1.61588382720947265625, 1.9892628192901611328125, 1.6011731624603271484375, 1.37648713588714599609375, 1.20090305805206298828125, 1.82291471958160400390625, 1.82237160205841064453125, 1.7896692752838134765625, 1.59008586406707763671875, 1.28699195384979248046875, 1.7156345844268798828125, 1.5859124660491943359375, 1.09803044795989990234375, 1.12913691997528076171875, 1.84202015399932861328125, 1.82865536212921142578125, 1.38186419010162353515625, 1.93756830692291259765625, 1.8980844020843505859375, 1.6836311817169189453125, 1.71468126773834228515625, 1.8520183563232421875, 1.3643190860748291015625, 1.50480556488037109375, 1.00898015499114990234375, 1.0246708393096923828125, 1.90358865261077880859375, 1.67031443119049072265625, 1.5901012420654296875},
{ 1.5095684528350830078125, 1.16840076446533203125, 1.7196638584136962890625, 1.83119761943817138671875, 1.40518176555633544921875, 1.93335247039794921875, 1.8690044879913330078125, 1.48013246059417724609375, 1.6910374164581298828125, 1.93144023418426513671875, 1.74261379241943359375, 1.58926546573638916015625, 1.743867397308349609375, 1.996854305267333984375, 1.051574230194091796875, 1.537098407745361328125, 1.36496388912200927734375, 1.4176423549652099609375, 1.03699767589569091796875, 1.2302095890045166015625, 1.6786174774169921875, 1.27164733409881591796875, 1.74346244335174560546875, 1.8141906261444091796875, 1.78055417537689208984375, 1.5124442577362060546875, 1.04245150089263916015625, 1.13458430767059326171875, 1.136373043060302734375, 1.80527818202972412109375, 1.40578949451446533203125, 1.94782245159149169921875, 1.72998368740081787109375, 1.11300146579742431640625, 1.42908036708831787109375, 1.88216269016265869140625, 1.96204388141632080078125, 1.0320117473602294921875, 1.105144977569580078125, 1.1486263275146484375, 1.298396587371826171875, 1.87818872928619384765625, 1.8474581241607666015625, 1.0019361972808837890625, 1.66850817203521728515625, 1.52283203601837158203125, 1.2635867595672607421875, 1.9514534473419189453125, 1.613905429840087890625, 1.978599071502685546875, 1.67862701416015625, 1.72211551666259765625, 1.18661320209503173828125, 1.73544180393218994140625, 1.408641815185546875, 1.96537339687347412109375, 1.59759199619293212890625, 1.84654462337493896484375, 1.7840983867645263671875, 1.72012960910797119140625, 1.6151750087738037109375, 1.76426219940185546875, 1.92330586910247802734375, 1.62367498874664306640625, 1.71350634098052978515625, 1.92605626583099365234375, 1.25585234165191650390625, 1.8726265430450439453125, 1.9709780216217041015625, 1.09043347835540771484375, 1.79604303836822509765625, 1.9338653087615966796875, 1.71866762638092041015625, 1.4228832721710205078125, 1.16633737087249755859375, 1.00547313690185546875, 1.93877589702606201171875, 1.33181464672088623046875, 1.37078654766082763671875, 1.22767055034637451171875, 1.4130637645721435546875, 1.05449402332305908203125, 1.3184711933135986328125, 1.64375460147857666015625, 1.62129056453704833984375, 1.9929831027984619140625, 1.0969383716583251953125, 1.91103565692901611328125, 1.3896510601043701171875, 1.80007565021514892578125, 1.995639801025390625, 1.7617752552032470703125, 1.28921306133270263671875, 1.2152354717254638671875, 1.279368877410888671875, 1.2141239643096923828125, 1.7843549251556396484375, 1.6505336761474609375, 1.7116982936859130859375, 1.53305816650390625},
{ 1.52658665180206298828125, 1.82841765880584716796875, 1.94131791591644287109375, 1.02606952190399169921875, 1.35849285125732421875, 1.96097052097320556640625, 1.08034479618072509765625, 1.0038890838623046875, 1.591770648956298828125, 1.00989258289337158203125, 1.22121870517730712890625, 1.58665740489959716796875, 1.18829619884490966796875, 1.96824872493743896484375, 1.22559583187103271484375, 1.181868076324462890625, 1.9622402191162109375, 1.19507062435150146484375, 1.2566459178924560546875, 1.73095035552978515625, 1.6660058498382568359375, 1.43879425525665283203125, 1.239990234375, 1.10770618915557861328125, 1.82616651058197021484375, 1.6106975078582763671875, 1.07463836669921875, 1.2667484283447265625, 1.3294026851654052734375, 1.30833721160888671875, 1.59392607212066650390625, 1.14193785190582275390625, 1.7584397792816162109375, 1.0889873504638671875, 1.27645313739776611328125, 1.2948207855224609375, 1.47798597812652587890625, 1.4930760860443115234375, 1.70702016353607177734375, 1.3130667209625244140625, 1.4706690311431884765625, 1.8176233768463134765625, 1.7875664234161376953125, 1.95890533924102783203125, 1.922974109649658203125, 1.63967859745025634765625, 1.69810771942138671875, 1.0675647258758544921875, 1.56118166446685791015625, 1.08975756168365478515625, 1.607673168182373046875, 1.19570839405059814453125, 1.737304210662841796875, 1.87528073787689208984375, 1.13524305820465087890625, 1.0198729038238525390625, 1.26502430438995361328125, 1.05401027202606201171875, 1.56068670749664306640625, 1.48490536212921142578125, 1.00563180446624755859375, 1.55748760700225830078125, 1.78569924831390380859375, 1.70240104198455810546875, 1.203961849212646484375, 1.4644711017608642578125, 1.0447394847869873046875, 1.5991404056549072265625, 1.57433164119720458984375, 1.02437305450439453125, 1.36596775054931640625, 1.31552731990814208984375, 1.13647830486297607421875, 1.430697917938232421875, 1.7821826934814453125, 1.3540260791778564453125, 1.8014967441558837890625, 1.3444793224334716796875, 1.2917592525482177734375, 1.47759902477264404296875, 1.70777642726898193359375, 1.1677176952362060546875, 1.56958591938018798828125, 1.35814416408538818359375, 1.30693924427032470703125, 1.066817760467529296875, 1.42800271511077880859375, 1.974932193756103515625, 1.1997773647308349609375, 1.74602615833282470703125, 1.02773797512054443359375, 1.76304471492767333984375, 1.72219002246856689453125, 1.97086846828460693359375, 1.8388462066650390625, 1.51181125640869140625, 1.28112137317657470703125, 1.84158742427825927734375, 1.351645946502685546875, 1.01324689388275146484375},
{ 1.81657993793487548828125, 1.5376565456390380859375, 1.46048986911773681640625, 1.75716745853424072265625, 1.48583471775054931640625, 1.06053602695465087890625, 1.596238613128662109375, 1.36683261394500732421875, 1.0943698883056640625, 1.23701894283294677734375, 1.61118996143341064453125, 1.31999301910400390625, 1.815670013427734375, 1.74785315990447998046875, 1.792476177215576171875, 1.66787993907928466796875, 1.7751243114471435546875, 1.0987377166748046875, 1.92210257053375244140625, 1.298394680023193359375, 1.8234636783599853515625, 1.83126068115234375, 1.425384998321533203125, 1.5220458507537841796875, 1.060198307037353515625, 1.4838359355926513671875, 1.2693874835968017578125, 1.40788733959197998046875, 1.10705530643463134765625, 1.30264103412628173828125, 1.61135923862457275390625, 1.8694550991058349609375, 1.13141572475433349609375, 1.70255506038665771484375, 1.1971728801727294921875, 1.5007050037384033203125, 1.61975276470184326171875, 1.47809541225433349609375, 1.50976145267486572265625, 1.16195070743560791015625, 1.90106880664825439453125, 1.76435577869415283203125, 1.6675560474395751953125, 1.3158004283905029296875, 1.42033302783966064453125, 1.747943401336669921875, 1.0729234218597412109375, 1.113094806671142578125, 1.76191890239715576171875, 1.1279170513153076171875, 1.81060302257537841796875, 1.22884476184844970703125, 1.423041820526123046875, 1.3267238140106201171875, 1.7961452007293701171875, 1.448168277740478515625, 1.3371961116790771484375, 1.45113694667816162109375, 1.67434823513031005859375, 1.002228260040283203125, 1.1475932598114013671875, 1.00319373607635498046875, 1.4676959514617919921875, 1.65417039394378662109375, 1.230598926544189453125, 1.34113228321075439453125, 1.97479534149169921875, 1.53505992889404296875, 1.46917057037353515625, 1.8903293609619140625, 1.91881358623504638671875, 1.7298195362091064453125, 1.77629506587982177734375, 1.1042382717132568359375, 1.845916271209716796875, 1.61316716670989990234375, 1.36842572689056396484375, 1.1753256320953369140625, 1.77370440959930419921875, 1.9355528354644775390625, 1.78892052173614501953125, 1.49600923061370849609375, 1.58965206146240234375, 1.65909659862518310546875, 1.68147909641265869140625, 1.86959588527679443359375, 1.19954383373260498046875, 1.54352581501007080078125, 1.31358039379119873046875, 1.47121822834014892578125, 1.42591249942779541015625, 1.4821131229400634765625, 1.8499202728271484375, 1.558772563934326171875, 1.65647602081298828125, 1.58761322498321533203125, 1.3758485317230224609375, 1.9338567256927490234375, 1.24257576465606689453125, 1.02820074558258056640625},
{ 1.1527068614959716796875, 1.647613525390625, 1.61340808868408203125, 1.731767177581787109375, 1.487135410308837890625, 1.34548914432525634765625, 1.13006222248077392578125, 1.046666622161865234375, 1.63546836376190185546875, 1.46903812885284423828125, 1.42822253704071044921875, 1.6178476810455322265625, 1.18348324298858642578125, 1.2084686756134033203125, 1.257118701934814453125, 1.73549449443817138671875, 1.81534588336944580078125, 1.95979988574981689453125, 1.85108745098114013671875, 1.50107014179229736328125, 1.2745482921600341796875, 1.2232987880706787109375, 1.26551043987274169921875, 1.10075485706329345703125, 1.0748465061187744140625, 1.25191795825958251953125, 1.4627521038055419921875, 1.82888305187225341796875, 1.961197376251220703125, 1.44973313808441162109375, 1.14809644222259521484375, 1.86138093471527099609375, 1.12069642543792724609375, 1.5203802585601806640625, 1.35568487644195556640625, 1.7792041301727294921875, 1.14351570606231689453125, 1.36549365520477294921875, 1.7844541072845458984375, 1.8417747020721435546875, 1.73384058475494384765625, 1.7331430912017822265625, 1.88407289981842041015625, 1.010419368743896484375, 1.1708076000213623046875, 1.61627137660980224609375, 1.6908800601959228515625, 1.72180652618408203125, 1.5194423198699951171875, 1.4011318683624267578125, 1.413821697235107421875, 1.4113838672637939453125, 1.591596126556396484375, 1.7657260894775390625, 1.77038919925689697265625, 1.78681600093841552734375, 1.65688407421112060546875, 1.32824075222015380859375, 1.072556018829345703125, 1.85142147541046142578125, 1.90362274646759033203125, 1.045485973358154296875, 1.0627155303955078125, 1.67761099338531494140625, 1.64976704120635986328125, 1.36133229732513427734375, 1.49961888790130615234375, 1.93032443523406982421875, 1.30384814739227294921875, 1.1051483154296875, 1.494311809539794921875, 1.14046847820281982421875, 1.0759108066558837890625, 1.140238285064697265625, 1.5960724353790283203125, 1.72835409641265869140625, 1.438451290130615234375, 1.76227915287017822265625, 1.62834918498992919921875, 1.7771341800689697265625, 1.337354183197021484375, 1.847758769989013671875, 1.2746975421905517578125, 1.556240558624267578125, 1.15283024311065673828125, 1.75241291522979736328125, 1.4147179126739501953125, 1.794822216033935546875, 1.41035425662994384765625, 1.959662914276123046875, 1.20999348163604736328125, 1.7051823139190673828125, 1.24160182476043701171875, 1.4790532588958740234375, 1.9400269985198974609375, 1.7562158107757568359375, 1.5953872203826904296875, 1.99468863010406494140625, 1.5881786346435546875, 1.19684708118438720703125},
{ 1.7636721134185791015625, 1.17760384082794189453125, 1.32946693897247314453125, 1.26714801788330078125, 1.26454222202301025390625, 1.85719013214111328125, 1.53337085247039794921875, 1.96688282489776611328125, 1.5957105159759521484375, 1.73749506473541259765625, 1.03819596767425537109375, 1.62454998493194580078125, 1.62389910221099853515625, 1.47668349742889404296875, 1.44735872745513916015625, 1.68871963024139404296875, 1.88257825374603271484375, 1.61646556854248046875, 1.0114924907684326171875, 1.4407255649566650390625, 1.2204034328460693359375, 1.66803348064422607421875, 1.651884555816650390625, 1.455603122711181640625, 1.19965350627899169921875, 1.94799935817718505859375, 1.73391437530517578125, 1.813025951385498046875, 1.2446677684783935546875, 1.1643331050872802734375, 1.5904905796051025390625, 1.0582439899444580078125, 1.54028356075286865234375, 1.75229918956756591796875, 1.7954885959625244140625, 1.91302073001861572265625, 1.68027389049530029296875, 1.96039450168609619140625, 1.18718814849853515625, 1.73657119274139404296875, 1.065784454345703125, 1.6862862110137939453125, 1.64171087741851806640625, 1.73649871349334716796875, 1.05377185344696044921875, 1.06274855136871337890625, 1.59645736217498779296875, 1.929732799530029296875, 1.855440616607666015625, 1.79360067844390869140625, 1.32354533672332763671875, 1.85346698760986328125, 1.18468081951141357421875, 1.239644527435302734375, 1.95324671268463134765625, 1.0260956287384033203125, 1.65650570392608642578125, 1.25460159778594970703125, 1.24742519855499267578125, 1.15815174579620361328125, 1.93548870086669921875, 1.77105081081390380859375, 1.122973918914794921875, 1.11324489116668701171875, 1.63420164585113525390625, 1.136366367340087890625, 1.925252437591552734375, 1.61899793148040771484375, 1.96165180206298828125, 1.19865453243255615234375, 1.4515249729156494140625, 1.727984905242919921875, 1.12171947956085205078125, 1.14269161224365234375, 1.7243974208831787109375, 1.028668880462646484375, 1.4615955352783203125, 1.0758612155914306640625, 1.515254974365234375, 1.6063387393951416015625, 1.3702189922332763671875, 1.36409223079681396484375, 1.61769974231719970703125, 1.75404703617095947265625, 1.92671406269073486328125, 1.7177956104278564453125, 1.87098777294158935546875, 1.43354785442352294921875, 1.2988283634185791015625, 1.0278022289276123046875, 1.93346726894378662109375, 1.48623359203338623046875, 1.89136993885040283203125, 1.95130074024200439453125, 1.80601561069488525390625, 1.59407293796539306640625, 1.2446448802947998046875, 1.2477743625640869140625, 1.10547697544097900390625, 1.99054813385009765625},
{ 1.8649387359619140625, 1.08809983730316162109375, 1.9215929508209228515625, 1.71273458003997802734375, 1.77467978000640869140625, 1.42297458648681640625, 1.8565294742584228515625, 1.1715891361236572265625, 1.558990478515625, 1.7154705524444580078125, 1.44900596141815185546875, 1.12613189220428466796875, 1.7459087371826171875, 1.7806742191314697265625, 1.24793469905853271484375, 1.5207216739654541015625, 1.89545524120330810546875, 1.6668262481689453125, 1.15842878818511962890625, 1.575840473175048828125, 1.435570240020751953125, 1.428759098052978515625, 1.652740001678466796875, 1.93653047084808349609375, 1.2480514049530029296875, 1.65133464336395263671875, 1.7311966419219970703125, 1.57083225250244140625, 1.00449168682098388671875, 1.72288119792938232421875, 1.6331403255462646484375, 1.41822183132171630859375, 1.2522161006927490234375, 1.85863173007965087890625, 1.29786384105682373046875, 1.788048267364501953125, 1.25021970272064208984375, 1.87416088581085205078125, 1.57554900646209716796875, 1.50797116756439208984375, 1.55510485172271728515625, 1.70882260799407958984375, 1.18820345401763916015625, 1.82239830493927001953125, 1.3570191860198974609375, 1.699187755584716796875, 1.44059848785400390625, 1.040922641754150390625, 1.56559240818023681640625, 1.6024811267852783203125, 1.6812069416046142578125, 1.93676054477691650390625, 1.64587414264678955078125, 1.3700196743011474609375, 1.5131399631500244140625, 1.895188808441162109375, 1.204271793365478515625, 1.67064952850341796875, 1.755084991455078125, 1.81198227405548095703125, 1.32448732852935791015625, 1.16418361663818359375, 1.15224301815032958984375, 1.74185144901275634765625, 1.65345513820648193359375, 1.5248391628265380859375, 1.83726656436920166015625, 1.2968795299530029296875, 1.2372798919677734375, 1.21467530727386474609375, 1.54119646549224853515625, 1.79496061801910400390625, 1.10717332363128662109375, 1.00703012943267822265625, 1.5543997287750244140625, 1.1582367420196533203125, 1.61539208889007568359375, 1.25995886325836181640625, 1.4375073909759521484375, 1.56153547763824462890625, 1.5211756229400634765625, 1.93967092037200927734375, 1.4823513031005859375, 1.83080756664276123046875, 1.82668292522430419921875, 1.39396750926971435546875, 1.92290198802947998046875, 1.5915639400482177734375, 1.36293041706085205078125, 1.8756792545318603515625, 1.89620649814605712890625, 1.16731393337249755859375, 1.1257297992706298828125, 1.8161032199859619140625, 1.15332520008087158203125, 1.2280023097991943359375, 1.36162483692169189453125, 1.84844112396240234375, 1.5202696323394775390625, 1.18844687938690185546875},
{ 1.581236362457275390625, 1.1089403629302978515625, 1.3567759990692138671875, 1.25816440582275390625, 1.1218116283416748046875, 1.27806377410888671875, 1.832866191864013671875, 1.93899643421173095703125, 1.34970653057098388671875, 1.34412992000579833984375, 1.15677917003631591796875, 1.5551738739013671875, 1.94011461734771728515625, 1.04233038425445556640625, 1.70720005035400390625, 1.145965099334716796875, 1.13732159137725830078125, 1.73749506473541259765625, 1.84987437725067138671875, 1.26699626445770263671875, 1.27814233303070068359375, 1.38503015041351318359375, 1.836045742034912109375, 1.32618808746337890625, 1.06535851955413818359375, 1.2418553829193115234375, 1.450893402099609375, 1.6696937084197998046875, 1.59115612506866455078125, 1.32734203338623046875, 1.41196930408477783203125, 1.41783654689788818359375, 1.1105630397796630859375, 1.63424968719482421875, 1.51763629913330078125, 1.0510470867156982421875, 1.5648860931396484375, 1.08966410160064697265625, 1.54550516605377197265625, 1.7458007335662841796875, 1.85514926910400390625, 1.26593506336212158203125, 1.90087223052978515625, 1.46055567264556884765625, 1.8655307292938232421875, 1.84161317348480224609375, 1.0151569843292236328125, 1.7716896533966064453125, 1.2368004322052001953125, 1.8123877048492431640625, 1.49433910846710205078125, 1.459437847137451171875, 1.88975775241851806640625, 1.4520244598388671875, 1.0173966884613037109375, 1.84383070468902587890625, 1.29866850376129150390625, 1.023302555084228515625, 1.98474323749542236328125, 1.870630741119384765625, 1.51470315456390380859375, 1.23895227909088134765625, 1.9166653156280517578125, 1.94727051258087158203125, 1.93937385082244873046875, 1.47259294986724853515625, 1.60176002979278564453125, 1.52878987789154052734375, 1.84797203540802001953125, 1.71966969966888427734375, 1.99537265300750732421875, 1.453773975372314453125, 1.6630060672760009765625, 1.3083913326263427734375, 1.8680336475372314453125, 1.03029000759124755859375, 1.97763824462890625, 1.360668182373046875, 1.20389688014984130859375, 1.87182509899139404296875, 1.329123020172119140625, 1.00304889678955078125, 1.3491766452789306640625, 1.4832241535186767578125, 1.7222440242767333984375, 1.3276584148406982421875, 1.91058528423309326171875, 1.59662663936614990234375, 1.9027516841888427734375, 1.10313522815704345703125, 1.40377080440521240234375, 1.25740444660186767578125, 1.380800724029541015625, 1.23556935787200927734375, 1.651753902435302734375, 1.6600997447967529296875, 1.20438778400421142578125, 1.97943913936614990234375, 1.93336617946624755859375, 1.73436176776885986328125},
{ 1.89854907989501953125, 1.881687164306640625, 1.48088467121124267578125, 1.65999543666839599609375, 1.576967716217041015625, 1.13248193264007568359375, 1.05734539031982421875, 1.53815567493438720703125, 1.0799643993377685546875, 1.72263872623443603515625, 1.61434042453765869140625, 1.05100786685943603515625, 1.16494715213775634765625, 1.238605976104736328125, 1.88132369518280029296875, 1.78732013702392578125, 1.24240052700042724609375, 1.71483051776885986328125, 1.502544403076171875, 1.26432704925537109375, 1.08682239055633544921875, 1.282194614410400390625, 1.12298381328582763671875, 1.9511678218841552734375, 1.29766178131103515625, 1.56645357608795166015625, 1.224293231964111328125, 1.0423233509063720703125, 1.51025676727294921875, 1.836673259735107421875, 1.7107312679290771484375, 1.981053829193115234375, 1.3567712306976318359375, 1.9036676883697509765625, 1.24510180950164794921875, 1.73283636569976806640625, 1.17713272571563720703125, 1.76843607425689697265625, 1.3346908092498779296875, 1.80880200862884521484375, 1.47997033596038818359375, 1.0206010341644287109375, 1.1672041416168212890625, 1.03917396068572998046875, 1.15355145931243896484375, 1.98684561252593994140625, 1.19670546054840087890625, 1.09670460224151611328125, 1.42671978473663330078125, 1.6293509006500244140625, 1.4795529842376708984375, 1.77011311054229736328125, 1.579832553863525390625, 1.1942336559295654296875, 1.760337352752685546875, 1.98752295970916748046875, 1.4056985378265380859375, 1.60998332500457763671875, 1.30781948566436767578125, 1.589899539947509765625, 1.4205148220062255859375, 1.6359002590179443359375, 1.500867366790771484375, 1.8544871807098388671875, 1.82480466365814208984375, 1.76053273677825927734375, 1.164393901824951171875, 1.7682473659515380859375, 1.21435534954071044921875, 1.8501145839691162109375, 1.65529477596282958984375, 1.051295757293701171875, 1.04115498065948486328125, 1.5470027923583984375, 1.6983852386474609375, 1.930339813232421875, 1.82433032989501953125, 1.41811454296112060546875, 1.9723379611968994140625, 1.66211640834808349609375, 1.1110846996307373046875, 1.853365421295166015625, 1.44562089443206787109375, 1.80682885646820068359375, 1.1876347064971923828125, 1.71410644054412841796875, 1.4624340534210205078125, 1.25158512592315673828125, 1.54014813899993896484375, 1.7315616607666015625, 1.57864749431610107421875, 1.98383486270904541015625, 1.06568181514739990234375, 1.65526568889617919921875, 1.14773857593536376953125, 1.61480700969696044921875, 1.03311836719512939453125, 1.15150129795074462890625, 1.6567299365997314453125, 1.65294742584228515625},
{ 1.4517364501953125, 1.81212627887725830078125, 1.5273559093475341796875, 1.2439868450164794921875, 1.75106251239776611328125, 1.37585222721099853515625, 1.3612244129180908203125, 1.0327527523040771484375, 1.35663127899169921875, 1.751190185546875, 1.495274066925048828125, 1.525964260101318359375, 1.58609259128570556640625, 1.31871712207794189453125, 1.761192798614501953125, 1.51569736003875732421875, 1.41603195667266845703125, 1.52224242687225341796875, 1.5050728321075439453125, 1.68147957324981689453125, 1.8804075717926025390625, 1.704745769500732421875, 1.36084830760955810546875, 1.80122673511505126953125, 1.21898853778839111328125, 1.69431388378143310546875, 1.77373230457305908203125, 1.7121808528900146484375, 1.7757918834686279296875, 1.14007842540740966796875, 1.27365505695343017578125, 1.0218479633331298828125, 1.64752018451690673828125, 1.5981538295745849609375, 1.49870097637176513671875, 1.568934917449951171875, 1.08199918270111083984375, 1.36757409572601318359375, 1.96854627132415771484375, 1.63428723812103271484375, 1.6266148090362548828125, 1.07623064517974853515625, 1.6078965663909912109375, 1.90182697772979736328125, 1.02675139904022216796875, 1.0168101787567138671875, 1.0199239253997802734375, 1.16948950290679931640625, 1.8742287158966064453125, 1.23273146152496337890625, 1.509705066680908203125, 1.8101613521575927734375, 1.00573956966400146484375, 1.3540832996368408203125, 1.85765838623046875, 1.9826180934906005859375, 1.6512873172760009765625, 1.183561801910400390625, 1.8429815769195556640625, 1.592461109161376953125, 1.33262348175048828125, 1.03240835666656494140625, 1.51708924770355224609375, 1.00305545330047607421875, 1.51168477535247802734375, 1.806346416473388671875, 1.22704994678497314453125, 1.49646770954132080078125, 1.989031314849853515625, 1.84151935577392578125, 1.38902437686920166015625, 1.48440277576446533203125, 1.05228364467620849609375, 1.49042832851409912109375, 1.01170241832733154296875, 1.46914184093475341796875, 1.37456035614013671875, 1.457869052886962890625, 1.96974074840545654296875, 1.7544796466827392578125, 1.662915706634521484375, 1.8868696689605712890625, 1.02720034122467041015625, 1.906662464141845703125, 1.05677664279937744140625, 1.19462859630584716796875, 1.6109840869903564453125, 1.965324878692626953125, 1.276381015777587890625, 1.6584513187408447265625, 1.334273815155029296875, 1.40442764759063720703125, 1.52121460437774658203125, 1.7516882419586181640625, 1.269968509674072265625, 1.84319555759429931640625, 1.118448734283447265625, 1.22967255115509033203125, 1.9741213321685791015625, 1.50705420970916748046875},
{ 1.9656569957733154296875, 1.2593772411346435546875, 1.4385678768157958984375, 1.45785677433013916015625, 1.53675174713134765625, 1.71841061115264892578125, 1.458377361297607421875, 1.8287384510040283203125, 1.55986225605010986328125, 1.99736225605010986328125, 1.87613677978515625, 1.35631144046783447265625, 1.77762603759765625, 1.81927764415740966796875, 1.95145142078399658203125, 1.9827373027801513671875, 1.89435064792633056640625, 1.75754392147064208984375, 1.10481560230255126953125, 1.41848814487457275390625, 1.16195094585418701171875, 1.75932753086090087890625, 1.87854945659637451171875, 1.04078423976898193359375, 1.7158870697021484375, 1.4190118312835693359375, 1.6477367877960205078125, 1.5420310497283935546875, 1.66110122203826904296875, 1.001634120941162109375, 1.081162929534912109375, 1.32825744152069091796875, 1.90795552730560302734375, 1.2163238525390625, 1.352251529693603515625, 1.6675527095794677734375, 1.7581698894500732421875, 1.7397396564483642578125, 1.1000025272369384765625, 1.58850419521331787109375, 1.24075877666473388671875, 1.4895069599151611328125, 1.13992941379547119140625, 1.52863490581512451171875, 1.19796907901763916015625, 1.647655487060546875, 1.92499721050262451171875, 1.73284053802490234375, 1.1212179660797119140625, 1.43405687808990478515625, 1.75655925273895263671875, 1.40182769298553466796875, 1.73702967166900634765625, 1.62986171245574951171875, 1.745295047760009765625, 1.590550899505615234375, 1.34297335147857666015625, 1.85093772411346435546875, 1.52214813232421875, 1.85665023326873779296875, 1.893600940704345703125, 1.57130682468414306640625, 1.6992628574371337890625, 1.65888893604278564453125, 1.83638393878936767578125, 1.89658272266387939453125, 1.08092224597930908203125, 1.5055904388427734375, 1.69765126705169677734375, 1.087408542633056640625, 1.62448585033416748046875, 1.85307657718658447265625, 1.418527126312255859375, 1.832893848419189453125, 1.15132653713226318359375, 1.7541046142578125, 1.44086778163909912109375, 1.2740528583526611328125, 1.807768344879150390625, 1.25630486011505126953125, 1.5431995391845703125, 1.7772414684295654296875, 1.276024341583251953125, 1.55061817169189453125, 1.4266560077667236328125, 1.45759487152099609375, 1.7351334095001220703125, 1.8697335720062255859375, 1.05091607570648193359375, 1.45246517658233642578125, 1.57189810276031494140625, 1.13652527332305908203125, 1.7201406955718994140625, 1.94485843181610107421875, 1.84182250499725341796875, 1.3624908924102783203125, 1.9189107418060302734375, 1.93687283992767333984375, 1.48004901409149169921875, 1.79618847370147705078125},
{ 1.77313578128814697265625, 1.26229631900787353515625, 1.8216741085052490234375, 1.0111362934112548828125, 1.41424143314361572265625, 1.515796661376953125, 1.6069395542144775390625, 1.79929065704345703125, 1.46018826961517333984375, 1.5802338123321533203125, 1.50234925746917724609375, 1.82826387882232666015625, 1.923816680908203125, 1.0186798572540283203125, 1.1890785694122314453125, 1.27379894256591796875, 1.7542459964752197265625, 1.57853305339813232421875, 1.57755076885223388671875, 1.25768375396728515625, 1.1103127002716064453125, 1.90245568752288818359375, 1.4558746814727783203125, 1.93368899822235107421875, 1.38400745391845703125, 1.98931086063385009765625, 1.888282299041748046875, 1.323504924774169921875, 1.973912715911865234375, 1.405100345611572265625, 1.36356580257415771484375, 1.9026792049407958984375, 1.80864036083221435546875, 1.2439024448394775390625, 1.693515777587890625, 1.93655478954315185546875, 1.62026870250701904296875, 1.8388087749481201171875, 1.66135823726654052734375, 1.5662066936492919921875, 1.96778070926666259765625, 1.22286212444305419921875, 1.420192241668701171875, 1.64437997341156005859375, 1.01050102710723876953125, 1.33999431133270263671875, 1.64142739772796630859375, 1.32142698764801025390625, 1.03153359889984130859375, 1.00596296787261962890625, 1.41322147846221923828125, 1.3812453746795654296875, 1.711199283599853515625, 1.619289398193359375, 1.888917446136474609375, 1.32721483707427978515625, 1.1504728794097900390625, 1.6221964359283447265625, 1.68548166751861572265625, 1.21813499927520751953125, 1.6444213390350341796875, 1.7115452289581298828125, 1.031940937042236328125, 1.254163265228271484375, 1.2056407928466796875, 1.79977321624755859375, 1.66782009601593017578125, 1.11275160312652587890625, 1.8376941680908203125, 1.72583138942718505859375, 1.49157965183258056640625, 1.03458440303802490234375, 1.5585486888885498046875, 1.71612226963043212890625, 1.9590528011322021484375, 1.65951633453369140625, 1.17401349544525146484375, 1.59543669223785400390625, 1.23188364505767822265625, 1.61250913143157958984375, 1.80117666721343994140625, 1.7478916645050048828125, 1.0759642124176025390625, 1.83956944942474365234375, 1.14184343814849853515625, 1.8278682231903076171875, 1.50987207889556884765625, 1.6936867237091064453125, 1.50597321987152099609375, 1.22094821929931640625, 1.20330798625946044921875, 1.77076995372772216796875, 1.58511722087860107421875, 1.25485217571258544921875, 1.6255328655242919921875, 1.49558556079864501953125, 1.9758560657501220703125, 1.16037714481353759765625, 1.94380605220794677734375, 1.4576952457427978515625},
{ 1.78233349323272705078125, 1.6718223094940185546875, 1.49739277362823486328125, 1.9942111968994140625, 1.0404827594757080078125, 1.06814944744110107421875, 1.5416419506072998046875, 1.551072597503662109375, 1.1404755115509033203125, 1.2846658229827880859375, 1.190013885498046875, 1.5748937129974365234375, 1.5347881317138671875, 1.264997959136962890625, 1.05062496662139892578125, 1.28896415233612060546875, 1.63366067409515380859375, 1.39295756816864013671875, 1.82607364654541015625, 1.71222746372222900390625, 1.26603472232818603515625, 1.890979766845703125, 1.149378299713134765625, 1.43271934986114501953125, 1.89049017429351806640625, 1.96856009960174560546875, 1.16991508007049560546875, 1.13100469112396240234375, 1.55618321895599365234375, 1.720692157745361328125, 1.889354705810546875, 1.85361516475677490234375, 1.6137835979461669921875, 1.77630519866943359375, 1.2476003170013427734375, 1.03648674488067626953125, 1.1764125823974609375, 1.69670116901397705078125, 1.95872533321380615234375, 1.2783973217010498046875, 1.3305797576904296875, 1.123992919921875, 1.0969102382659912109375, 1.86440372467041015625, 1.09712088108062744140625, 1.67954123020172119140625, 1.4323804378509521484375, 1.039279937744140625, 1.14213573932647705078125, 1.612392425537109375, 1.51734411716461181640625, 1.0309541225433349609375, 1.23792493343353271484375, 1.1977159976959228515625, 1.5219290256500244140625, 1.8239462375640869140625, 1.4739277362823486328125, 1.88524162769317626953125, 1.820120334625244140625, 1.68280565738677978515625, 1.21765995025634765625, 1.1976974010467529296875, 1.32569849491119384765625, 1.42554819583892822265625, 1.825650691986083984375, 1.37924683094024658203125, 1.578176021575927734375, 1.44709432125091552734375, 1.10438024997711181640625, 1.7939264774322509765625, 1.57873547077178955078125, 1.49270617961883544921875, 1.52121794223785400390625, 1.07408344745635986328125, 1.37616670131683349609375, 1.18142521381378173828125, 1.16535890102386474609375, 1.01881301403045654296875, 1.402804851531982421875, 1.2795097827911376953125, 1.4587619304656982421875, 1.2423956394195556640625, 1.56046712398529052734375, 1.72387218475341796875, 1.61708736419677734375, 1.57273519039154052734375, 1.05639064311981201171875, 1.395516872406005859375, 1.86063385009765625, 1.1997959613800048828125, 1.9891703128814697265625, 1.6429774761199951171875, 1.3752763271331787109375, 1.57404029369354248046875, 1.68469560146331787109375, 1.5557544231414794921875, 1.02340328693389892578125, 1.05486619472503662109375, 1.78208839893341064453125, 1.987752437591552734375},
{ 1.309044361114501953125, 1.0696408748626708984375, 1.33071815967559814453125, 1.06785905361175537109375, 1.45915639400482177734375, 1.07075226306915283203125, 1.03767716884613037109375, 1.469970703125, 1.98203182220458984375, 1.37986671924591064453125, 1.89637219905853271484375, 1.689008235931396484375, 1.35718572139739990234375, 1.7484111785888671875, 1.05270016193389892578125, 1.8839910030364990234375, 1.46525633335113525390625, 1.92073214054107666015625, 1.78414976596832275390625, 1.90607702732086181640625, 1.736442089080810546875, 1.22003352642059326171875, 1.0232391357421875, 1.25950086116790771484375, 1.04893982410430908203125, 1.88431453704833984375, 1.6309528350830078125, 1.81251037120819091796875, 1.377381801605224609375, 1.15230643749237060546875, 1.4201800823211669921875, 1.258304595947265625, 1.19127333164215087890625, 1.099410533905029296875, 1.9291517734527587890625, 1.3259716033935546875, 1.603430271148681640625, 1.2236354351043701171875, 1.944878101348876953125, 1.7414252758026123046875, 1.2684166431427001953125, 1.78153502941131591796875, 1.77658617496490478515625, 1.93834316730499267578125, 1.03098165988922119140625, 1.8741452693939208984375, 1.27915704250335693359375, 1.51910436153411865234375, 1.3244979381561279296875, 1.2829220294952392578125, 1.62656390666961669921875, 1.46572625637054443359375, 1.31939852237701416015625, 1.05567896366119384765625, 1.83530914783477783203125, 1.10080254077911376953125, 1.8216145038604736328125, 1.8425242900848388671875, 1.03786194324493408203125, 1.798440456390380859375, 1.9210126399993896484375, 1.981798648834228515625, 1.50609576702117919921875, 1.4451987743377685546875, 1.38983237743377685546875, 1.33601295948028564453125, 1.424726009368896484375, 1.6510245800018310546875, 1.8311240673065185546875, 1.877785205841064453125, 1.4147469997406005859375, 1.71019113063812255859375, 1.57718598842620849609375, 1.025778293609619140625, 1.8068702220916748046875, 1.31223571300506591796875, 1.3380019664764404296875, 1.73063790798187255859375, 1.664961338043212890625, 1.00289642810821533203125, 1.59967899322509765625, 1.31092929840087890625, 1.55947780609130859375, 1.395050048828125, 1.77288424968719482421875, 1.0390751361846923828125, 1.09090650081634521484375, 1.1296498775482177734375, 1.091283321380615234375, 1.47729337215423583984375, 1.16320073604583740234375, 1.5866625308990478515625, 1.25997722148895263671875, 1.5635340213775634765625, 1.00721848011016845703125, 1.34600579738616943359375, 1.85394001007080078125, 1.44741714000701904296875, 1.95415937900543212890625, 1.39848649501800537109375},
{ 1.07617008686065673828125, 1.95900237560272216796875, 1.10673725605010986328125, 1.60755884647369384765625, 1.5305655002593994140625, 1.873943328857421875, 1.916154384613037109375, 1.35246562957763671875, 1.11085808277130126953125, 1.4718320369720458984375, 1.8158357143402099609375, 1.74001801013946533203125, 1.17272245883941650390625, 1.2196104526519775390625, 1.5495173931121826171875, 1.9211177825927734375, 1.71319103240966796875, 1.801749706268310546875, 1.576511859893798828125, 1.05716478824615478515625, 1.70659077167510986328125, 1.393687725067138671875, 1.78264510631561279296875, 1.96849453449249267578125, 1.19048106670379638671875, 1.6852667331695556640625, 1.94119465351104736328125, 1.5328152179718017578125, 1.101591587066650390625, 1.65417087078094482421875, 1.92382633686065673828125, 1.83364593982696533203125, 1.86175906658172607421875, 1.08936321735382080078125, 1.6615321636199951171875, 1.0587537288665771484375, 1.71386516094207763671875, 1.86452400684356689453125, 1.8555681705474853515625, 1.14859116077423095703125, 1.8077743053436279296875, 1.96148765087127685546875, 1.438391208648681640625, 1.19473397731781005859375, 1.03627049922943115234375, 1.24368035793304443359375, 1.78459680080413818359375, 1.5883181095123291015625, 1.62099516391754150390625, 1.9795577526092529296875, 1.67185699939727783203125, 1.91847789287567138671875, 1.4483850002288818359375, 1.1160418987274169921875, 1.99185717105865478515625, 1.6207830905914306640625, 1.15560877323150634765625, 1.301959514617919921875, 1.2112338542938232421875, 1.37567651271820068359375, 1.9665052890777587890625, 1.66147899627685546875, 1.5825126171112060546875, 1.2569115161895751953125, 1.277520656585693359375, 1.3175480365753173828125, 1.105044841766357421875, 1.6299896240234375, 1.99364626407623291015625, 1.66533124446868896484375, 1.23594558238983154296875, 1.80059754848480224609375, 1.614355564117431640625, 1.39564716815948486328125, 1.35103142261505126953125, 1.413045406341552734375, 1.06954193115234375, 1.26840651035308837890625, 1.95575726032257080078125, 1.59870374202728271484375, 1.30545651912689208984375, 1.63604915142059326171875, 1.64615428447723388671875, 1.8744411468505859375, 1.620645046234130859375, 1.71698176860809326171875, 1.8197672367095947265625, 1.791061878204345703125, 1.7518856525421142578125, 1.61901533603668212890625, 1.136592388153076171875, 1.33174288272857666015625, 1.71012675762176513671875, 1.1128027439117431640625, 1.730014324188232421875, 1.060472011566162109375, 1.3664238452911376953125, 1.155275821685791015625, 1.16774380207061767578125, 1.02048504352569580078125},
{ 1.163083553314208984375, 1.16275560855865478515625, 1.382703304290771484375, 1.32357037067413330078125, 1.0360291004180908203125, 1.03422534465789794921875, 1.8441712856292724609375, 1.4405057430267333984375, 1.9305074214935302734375, 1.9184672832489013671875, 1.77649366855621337890625, 1.309543609619140625, 1.78294289112091064453125, 1.729872226715087890625, 1.1242735385894775390625, 1.14133942127227783203125, 1.58322632312774658203125, 1.87184429168701171875, 1.05354940891265869140625, 1.27228069305419921875, 1.39815318584442138671875, 1.69773876667022705078125, 1.3502328395843505859375, 1.00042498111724853515625, 1.14486062526702880859375, 1.72179996967315673828125, 1.56854593753814697265625, 1.17143714427947998046875, 1.11426508426666259765625, 1.58009803295135498046875, 1.92945897579193115234375, 1.51452732086181640625, 1.2444999217987060546875, 1.7414667606353759765625, 1.9691274166107177734375, 1.72838771343231201171875, 1.144352436065673828125, 1.968441486358642578125, 1.93733012676239013671875, 1.31713044643402099609375, 1.86670207977294921875, 1.528195858001708984375, 1.9459064006805419921875, 1.1762254238128662109375, 1.4319574832916259765625, 1.1534798145294189453125, 1.86719357967376708984375, 1.92843711376190185546875, 1.1014940738677978515625, 1.75355684757232666015625, 1.98246467113494873046875, 1.00976240634918212890625, 1.40109157562255859375, 1.87514197826385498046875, 1.3803653717041015625, 1.5053684711456298828125, 1.89437162876129150390625, 1.91333854198455810546875, 1.10535228252410888671875, 1.73552954196929931640625, 1.70623481273651123046875, 1.072576045989990234375, 1.056129932403564453125, 1.59156477451324462890625, 1.79629886150360107421875, 1.07754802703857421875, 1.63408839702606201171875, 1.621776103973388671875, 1.98233568668365478515625, 1.6341488361358642578125, 1.14174091815948486328125, 1.86738502979278564453125, 1.71370899677276611328125, 1.64041149616241455078125, 1.93116092681884765625, 1.44847047328948974609375, 1.594811916351318359375, 1.14744555950164794921875, 1.30242025852203369140625, 1.899906635284423828125, 1.658504009246826171875, 1.07037389278411865234375, 1.15202617645263671875, 1.25729978084564208984375, 1.3895494937896728515625, 1.649270534515380859375, 1.37135899066925048828125, 1.89292621612548828125, 1.4980542659759521484375, 1.660098552703857421875, 1.99510955810546875, 1.1016695499420166015625, 1.4429035186767578125, 1.3756468296051025390625, 1.0997169017791748046875, 1.43695867061614990234375, 1.70519936084747314453125, 1.27646791934967041015625, 1.45180523395538330078125, 1.7967045307159423828125},
{ 1.51181590557098388671875, 1.9066221714019775390625, 1.2592380046844482421875, 1.10824716091156005859375, 1.11058318614959716796875, 1.55647575855255126953125, 1.66924774646759033203125, 1.28322470188140869140625, 1.94223845005035400390625, 1.6291720867156982421875, 1.9737169742584228515625, 1.64097464084625244140625, 1.42776393890380859375, 1.1364529132843017578125, 1.307861328125, 1.12524545192718505859375, 1.0005934238433837890625, 1.27243268489837646484375, 1.83106672763824462890625, 1.09262752532958984375, 1.3175489902496337890625, 1.5620367527008056640625, 1.3128261566162109375, 1.8359901905059814453125, 1.21977889537811279296875, 1.75943839550018310546875, 1.468677520751953125, 1.8579199314117431640625, 1.44369542598724365234375, 1.4964964389801025390625, 1.04614150524139404296875, 1.89415740966796875, 1.08191168308258056640625, 1.681192874908447265625, 1.660658359527587890625, 1.687035083770751953125, 1.794179439544677734375, 1.64606988430023193359375, 1.3815257549285888671875, 1.50891482830047607421875, 1.7683269977569580078125, 1.04666805267333984375, 1.06783664226531982421875, 1.43562495708465576171875, 1.4311959743499755859375, 1.50996339321136474609375, 1.4544160366058349609375, 1.36989843845367431640625, 1.90957915782928466796875, 1.032804965972900390625, 1.98775899410247802734375, 1.81480991840362548828125, 1.24115836620330810546875, 1.13035237789154052734375, 1.41196787357330322265625, 1.39721333980560302734375, 1.33544123172760009765625, 1.73451340198516845703125, 1.1046903133392333984375, 1.141179561614990234375, 1.68469905853271484375, 1.842381000518798828125, 1.16305601596832275390625, 1.4914333820343017578125, 1.8249046802520751953125, 1.91467154026031494140625, 1.23961460590362548828125, 1.0867917537689208984375, 1.5466692447662353515625, 1.024161815643310546875, 1.128273487091064453125, 1.28360080718994140625, 1.8561801910400390625, 1.75412666797637939453125, 1.10023462772369384765625, 1.42917346954345703125, 1.68613851070404052734375, 1.84677660465240478515625, 1.98993241786956787109375, 1.8852269649505615234375, 1.35669672489166259765625, 1.6016948223114013671875, 1.030971527099609375, 1.80132043361663818359375, 1.78639566898345947265625, 1.02427542209625244140625, 1.44206368923187255859375, 1.63829195499420166015625, 1.4531023502349853515625, 1.7241604328155517578125, 1.76296555995941162109375, 1.44169676303863525390625, 1.1049478054046630859375, 1.56367743015289306640625, 1.9404165744781494140625, 1.86524426937103271484375, 1.221263885498046875, 1.05627715587615966796875, 1.16407573223114013671875, 1.94423568248748779296875},
{ 1.5149705410003662109375, 1.45245945453643798828125, 1.6190016269683837890625, 1.43626654148101806640625, 1.95076692104339599609375, 1.9888794422149658203125, 1.0083391666412353515625, 1.79806053638458251953125, 1.7211110591888427734375, 1.20737946033477783203125, 1.43295001983642578125, 1.3224146366119384765625, 1.92832076549530029296875, 1.6286733150482177734375, 1.188877582550048828125, 1.3087294101715087890625, 1.5680243968963623046875, 1.44608211517333984375, 1.0709445476531982421875, 1.30323123931884765625, 1.427598476409912109375, 1.86147224903106689453125, 1.64619052410125732421875, 1.80991017818450927734375, 1.73460471630096435546875, 1.171192169189453125, 1.27730906009674072265625, 1.75145781040191650390625, 1.55522823333740234375, 1.602010250091552734375, 1.89608585834503173828125, 1.68020403385162353515625, 1.94271457195281982421875, 1.89705264568328857421875, 1.52683579921722412109375, 1.73905503749847412109375, 1.835807323455810546875, 1.65174007415771484375, 1.55984055995941162109375, 1.3724305629730224609375, 1.7071857452392578125, 1.3997256755828857421875, 1.77478611469268798828125, 1.78720188140869140625, 1.96190178394317626953125, 1.44883286952972412109375, 1.1142003536224365234375, 1.16362857818603515625, 1.08581829071044921875, 1.4669921398162841796875, 1.206890106201171875, 1.61629641056060791015625, 1.54404604434967041015625, 1.8181788921356201171875, 1.64137935638427734375, 1.90505516529083251953125, 1.42938137054443359375, 1.64835131168365478515625, 1.9893462657928466796875, 1.89595544338226318359375, 1.8607437610626220703125, 1.7213871479034423828125, 1.5790607929229736328125, 1.7721865177154541015625, 1.13161289691925048828125, 1.005021572113037109375, 1.01882231235504150390625, 1.995014190673828125, 1.6084668636322021484375, 1.00678503513336181640625, 1.47039663791656494140625, 1.014717578887939453125, 1.37921917438507080078125, 1.859940052032470703125, 1.67245423793792724609375, 1.73152697086334228515625, 1.6516563892364501953125, 1.15941917896270751953125, 1.71400725841522216796875, 1.70656168460845947265625, 1.90187561511993408203125, 1.54776227474212646484375, 1.55784714221954345703125, 1.12276685237884521484375, 1.77272212505340576171875, 1.051054477691650390625, 1.3139822483062744140625, 1.4958512783050537109375, 1.7222263813018798828125, 1.16486299037933349609375, 1.2630748748779296875, 1.1352252960205078125, 1.42204225063323974609375, 1.69017493724822998046875, 1.629879474639892578125, 1.35493755340576171875, 1.9058840274810791015625, 1.3193352222442626953125, 1.1066796779632568359375, 1.4346129894256591796875},
{ 1.97198331356048583984375, 1.1267259120941162109375, 1.33039009571075439453125, 1.31143033504486083984375, 1.88099110126495361328125, 1.887672901153564453125, 1.13585889339447021484375, 1.946803569793701171875, 1.4284007549285888671875, 1.12501728534698486328125, 1.29299771785736083984375, 1.34041535854339599609375, 1.73136150836944580078125, 1.63553464412689208984375, 1.55311107635498046875, 1.8128452301025390625, 1.97806751728057861328125, 1.55071771144866943359375, 1.687767505645751953125, 1.68735826015472412109375, 1.51369571685791015625, 1.36021339893341064453125, 1.9497363567352294921875, 1.68834269046783447265625, 1.67634260654449462890625, 1.68526041507720947265625, 1.28392565250396728515625, 1.089746952056884765625, 1.38296210765838623046875, 1.80212688446044921875, 1.28831994533538818359375, 1.61351788043975830078125, 1.4653034210205078125, 1.91554737091064453125, 1.92491710186004638671875, 1.078037738800048828125, 1.75584781169891357421875, 1.1821610927581787109375, 1.98066616058349609375, 1.79656183719635009765625, 1.923746585845947265625, 1.4839489459991455078125, 1.27840518951416015625, 1.725656032562255859375, 1.0607583522796630859375, 1.951671123504638671875, 1.6377980709075927734375, 1.3636343479156494140625, 1.01718699932098388671875, 1.23830473423004150390625, 1.58627235889434814453125, 1.39899599552154541015625, 1.4878184795379638671875, 1.54248082637786865234375, 1.81995713710784912109375, 1.1088635921478271484375, 1.8478586673736572265625, 1.38192260265350341796875, 1.41461980342864990234375, 1.50742018222808837890625, 1.73887121677398681640625, 1.11688244342803955078125, 1.78660404682159423828125, 1.2443468570709228515625, 1.4047143459320068359375, 1.22357952594757080078125, 1.403767108917236328125, 1.2532603740692138671875, 1.777478694915771484375, 1.31763732433319091796875, 1.2464177608489990234375, 1.15015017986297607421875, 1.31342518329620361328125, 1.927521228790283203125, 1.0182530879974365234375, 1.3818166255950927734375, 1.578921794891357421875, 1.0179755687713623046875, 1.10729634761810302734375, 1.12430799007415771484375, 1.586381435394287109375, 1.2634618282318115234375, 1.29683482646942138671875, 1.9313580989837646484375, 1.88019979000091552734375, 1.071595668792724609375, 1.22635662555694580078125, 1.132823944091796875, 1.372692108154296875, 1.3565845489501953125, 1.60248851776123046875, 1.98312270641326904296875, 1.9300310611724853515625, 1.06266534328460693359375, 1.1599338054656982421875, 1.559669971466064453125, 1.70818459987640380859375, 1.43754136562347412109375, 1.3724091053009033203125, 1.41131675243377685546875},
{ 1.05582058429718017578125, 1.91358220577239990234375, 1.956787109375, 1.26540553569793701171875, 1.59245264530181884765625, 1.86800992488861083984375, 1.63311564922332763671875, 1.32882034778594970703125, 1.34616649150848388671875, 1.69207489490509033203125, 1.79408514499664306640625, 1.1036198139190673828125, 1.51290798187255859375, 1.924923419952392578125, 1.3586635589599609375, 1.48380863666534423828125, 1.2092769145965576171875, 1.6494033336639404296875, 1.20944225788116455078125, 1.41881144046783447265625, 1.2459652423858642578125, 1.7030007839202880859375, 1.34107303619384765625, 1.4994106292724609375, 1.651194095611572265625, 1.638778209686279296875, 1.75870573520660400390625, 1.29368317127227783203125, 1.944151401519775390625, 1.43631160259246826171875, 1.12642586231231689453125, 1.43293845653533935546875, 1.1584293842315673828125, 1.96262848377227783203125, 1.1656916141510009765625, 1.447656154632568359375, 1.61546218395233154296875, 1.18314468860626220703125, 1.80377209186553955078125, 1.35342299938201904296875, 1.44796288013458251953125, 1.1226022243499755859375, 1.0721843242645263671875, 1.98687064647674560546875, 1.87336170673370361328125, 1.5760071277618408203125, 1.75513088703155517578125, 1.0916135311126708984375, 1.21724307537078857421875, 1.569566249847412109375, 1.78793752193450927734375, 1.15418565273284912109375, 1.68678319454193115234375, 1.57162511348724365234375, 1.4054901599884033203125, 1.98997843265533447265625, 1.8941876888275146484375, 1.45360577106475830078125, 1.04067313671112060546875, 1.0791785717010498046875, 1.1301286220550537109375, 1.20094358921051025390625, 1.9728062152862548828125, 1.65270483493804931640625, 1.387182712554931640625, 1.3740251064300537109375, 1.72608220577239990234375, 1.5281460285186767578125, 1.1332683563232421875, 1.3191258907318115234375, 1.2180044651031494140625, 1.695698261260986328125, 1.8350832462310791015625, 1.129347324371337890625, 1.65782451629638671875, 1.65410292148590087890625, 1.23154199123382568359375, 1.35555446147918701171875, 1.19497907161712646484375, 1.496583461761474609375, 1.35721313953399658203125, 1.46731388568878173828125, 1.317528247833251953125, 1.74678325653076171875, 1.31575739383697509765625, 1.06383049488067626953125, 1.00059258937835693359375, 1.94470345973968505859375, 1.80336463451385498046875, 1.83488547801971435546875, 1.60479068756103515625, 1.982639789581298828125, 1.38219153881072998046875, 1.2717735767364501953125, 1.524676799774169921875, 1.1911203861236572265625, 1.50379908084869384765625, 1.128241062164306640625, 1.58717787265777587890625, 1.17484366893768310546875},
{ 1.631422519683837890625, 1.200031757354736328125, 1.3986151218414306640625, 1.019246578216552734375, 1.44277870655059814453125, 1.25022423267364501953125, 1.5232851505279541015625, 1.474167346954345703125, 1.36903440952301025390625, 1.752426624298095703125, 1.49168694019317626953125, 1.8909056186676025390625, 1.82311522960662841796875, 1.2474334239959716796875, 1.3645732402801513671875, 1.7696063518524169921875, 1.0350854396820068359375, 1.95059931278228759765625, 1.90655422210693359375, 1.39044392108917236328125, 1.013085842132568359375, 1.6502773761749267578125, 1.92203533649444580078125, 1.08705914020538330078125, 1.2542705535888671875, 1.35625612735748291015625, 1.3411540985107421875, 1.26999747753143310546875, 1.20574486255645751953125, 1.6981971263885498046875, 1.05571806430816650390625, 1.20014607906341552734375, 1.47550308704376220703125, 1.07407248020172119140625, 1.50514209270477294921875, 1.51217138767242431640625, 1.79336535930633544921875, 1.54860246181488037109375, 1.012386322021484375, 1.4879567623138427734375, 1.7219154834747314453125, 1.5016925334930419921875, 1.86989295482635498046875, 1.080039501190185546875, 1.117438793182373046875, 1.02687156200408935546875, 1.17552411556243896484375, 1.6850490570068359375, 1.340858936309814453125, 1.0797288417816162109375, 1.4184997081756591796875, 1.6671440601348876953125, 1.2186758518218994140625, 1.37635171413421630859375, 1.81533420085906982421875, 1.6314499378204345703125, 1.75390303134918212890625, 1.04176318645477294921875, 1.39577448368072509765625, 1.4474964141845703125, 1.58700549602508544921875, 1.00835895538330078125, 1.8387377262115478515625, 1.02265512943267822265625, 1.20683658123016357421875, 1.16434562206268310546875, 1.05824816226959228515625, 1.82557666301727294921875, 1.911575794219970703125, 1.252177715301513671875, 1.53937494754791259765625, 1.15962874889373779296875, 1.5196666717529296875, 1.51699531078338623046875, 1.424170017242431640625, 1.18633329868316650390625, 1.8307535648345947265625, 1.10506165027618408203125, 1.34760487079620361328125, 1.69880402088165283203125, 1.83661949634552001953125, 1.212200164794921875, 1.02350842952728271484375, 1.645184040069580078125, 1.68212401866912841796875, 1.98223268985748291015625, 1.580504894256591796875, 1.402082920074462890625, 1.37613999843597412109375, 1.1554164886474609375, 1.64795053005218505859375, 1.7980148792266845703125, 1.252491474151611328125, 1.46688187122344970703125, 1.19187164306640625, 1.8868358135223388671875, 1.180891513824462890625, 1.79506969451904296875, 1.1009018421173095703125, 1.47118091583251953125},
{ 1.0601689815521240234375, 1.52222001552581787109375, 1.37590229511260986328125, 1.86775648593902587890625, 1.87255394458770751953125, 1.9474871158599853515625, 1.47150599956512451171875, 1.44352805614471435546875, 1.9312222003936767578125, 1.0487840175628662109375, 1.44759023189544677734375, 1.37783610820770263671875, 1.17223179340362548828125, 1.26454937458038330078125, 1.33628237247467041015625, 1.63389933109283447265625, 1.6671388149261474609375, 1.1355164051055908203125, 1.78567659854888916015625, 1.7264499664306640625, 1.2714350223541259765625, 1.39065074920654296875, 1.08327138423919677734375, 1.1826717853546142578125, 1.02298486232757568359375, 1.78308832645416259765625, 1.9294071197509765625, 1.7531368732452392578125, 1.2904636859893798828125, 1.67607212066650390625, 1.9607031345367431640625, 1.37274348735809326171875, 1.67179477214813232421875, 1.37889003753662109375, 1.0234959125518798828125, 1.87165391445159912109375, 1.6425869464874267578125, 1.23281276226043701171875, 1.19727611541748046875, 1.43623125553131103515625, 1.954572200775146484375, 1.447030544281005859375, 1.568126201629638671875, 1.819977283477783203125, 1.78404271602630615234375, 1.6845910549163818359375, 1.75215804576873779296875, 1.3044703006744384765625, 1.6302890777587890625, 1.39833724498748779296875, 1.16894996166229248046875, 1.4103019237518310546875, 1.96403729915618896484375, 1.9168441295623779296875, 1.06498491764068603515625, 1.35801494121551513671875, 1.625886440277099609375, 1.28035676479339599609375, 1.28708755970001220703125, 1.27904117107391357421875, 1.97474610805511474609375, 1.82672750949859619140625, 1.80586183071136474609375, 1.17663824558258056640625, 1.78627407550811767578125, 1.5273540019989013671875, 1.989128589630126953125, 1.6368274688720703125, 1.901313304901123046875, 1.07311594486236572265625, 1.6253626346588134765625, 1.2893316745758056640625, 1.62433016300201416015625, 1.71031296253204345703125, 1.6971309185028076171875, 1.0185120105743408203125, 1.871851444244384765625, 1.826602458953857421875, 1.904529571533203125, 1.92430591583251953125, 1.07090198993682861328125, 1.28693640232086181640625, 1.93862152099609375, 1.03316438198089599609375, 1.80744230747222900390625, 1.51949918270111083984375, 1.5048739910125732421875, 1.75898993015289306640625, 1.2248055934906005859375, 1.35164546966552734375, 1.09659612178802490234375, 1.11407339572906494140625, 1.17213594913482666015625, 1.59583699703216552734375, 1.51837599277496337890625, 1.6700317859649658203125, 1.1028254032135009765625, 1.38558042049407958984375, 1.15951883792877197265625, 1.2687461376190185546875},
{ 1.2613651752471923828125, 1.01748406887054443359375, 1.48329830169677734375, 1.38971507549285888671875, 1.00660026073455810546875, 1.47132289409637451171875, 1.82890880107879638671875, 1.2598769664764404296875, 1.23355209827423095703125, 1.8051159381866455078125, 1.72387468814849853515625, 1.18819653987884521484375, 1.7192823886871337890625, 1.4814102649688720703125, 1.20050632953643798828125, 1.3758685588836669921875, 1.49158489704132080078125, 1.1646575927734375, 1.3660652637481689453125, 1.76896083354949951171875, 1.6649234294891357421875, 1.494651317596435546875, 1.6137020587921142578125, 1.2068517208099365234375, 1.0263690948486328125, 1.6099641323089599609375, 1.583393096923828125, 1.320667743682861328125, 1.37153828144073486328125, 1.42138564586639404296875, 1.87287843227386474609375, 1.18172061443328857421875, 1.59052944183349609375, 1.63535940647125244140625, 1.49859964847564697265625, 1.6999454498291015625, 1.503860950469970703125, 1.52742111682891845703125, 1.10663664340972900390625, 1.77233779430389404296875, 1.44840896129608154296875, 1.46563565731048583984375, 1.93364560604095458984375, 1.181391239166259765625, 1.6133441925048828125, 1.18403470516204833984375, 1.5177962779998779296875, 1.24353504180908203125, 1.1260697841644287109375, 1.80605423450469970703125, 1.159709930419921875, 1.20757114887237548828125, 1.88815915584564208984375, 1.6179721355438232421875, 1.133396148681640625, 1.4031124114990234375, 1.1612927913665771484375, 1.59234523773193359375, 1.64719069004058837890625, 1.13901960849761962890625, 1.9031960964202880859375, 1.6614475250244140625, 1.55469334125518798828125, 1.3518390655517578125, 1.85357725620269775390625, 1.7407071590423583984375, 1.81570470333099365234375, 1.0042402744293212890625, 1.3700640201568603515625, 1.5021440982818603515625, 1.7071640491485595703125, 1.23345291614532470703125, 1.014141559600830078125, 1.89780771732330322265625, 1.78408718109130859375, 1.2497050762176513671875, 1.88709032535552978515625, 1.43321382999420166015625, 1.590503215789794921875, 1.98466026782989501953125, 1.715922832489013671875, 1.19078290462493896484375, 1.12039244174957275390625, 1.4898550510406494140625, 1.68932163715362548828125, 1.60327708721160888671875, 1.02862417697906494140625, 1.08513653278350830078125, 1.04357659816741943359375, 1.97723782062530517578125, 1.59189355373382568359375, 1.25709998607635498046875, 1.398522853851318359375, 1.7664234638214111328125, 1.4196593761444091796875, 1.3075258731842041015625, 1.84347760677337646484375, 1.59524631500244140625, 1.91508197784423828125, 1.75181806087493896484375},
{ 1.032210826873779296875, 1.4859600067138671875, 1.4674408435821533203125, 1.4737188816070556640625, 1.1133506298065185546875, 1.5056684017181396484375, 1.59235656261444091796875, 1.45848977565765380859375, 1.6156661510467529296875, 1.02409565448760986328125, 1.17346322536468505859375, 1.55411255359649658203125, 1.080562114715576171875, 1.22858178615570068359375, 1.565031528472900390625, 1.7363793849945068359375, 1.58728516101837158203125, 1.65485513210296630859375, 1.57714307308197021484375, 1.71618950366973876953125, 1.27636086940765380859375, 1.1479701995849609375, 1.37412738800048828125, 1.27548706531524658203125, 1.62303197383880615234375, 1.573245525360107421875, 1.12299954891204833984375, 1.353199005126953125, 1.46069538593292236328125, 1.2772004604339599609375, 1.39189779758453369140625, 1.88117182254791259765625, 1.75433981418609619140625, 1.29849302768707275390625, 1.298520565032958984375, 1.37010943889617919921875, 1.1239833831787109375, 1.32885777950286865234375, 1.40856468677520751953125, 1.24551105499267578125, 1.11811065673828125, 1.42404258251190185546875, 1.384162425994873046875, 1.93360793590545654296875, 1.2371108531951904296875, 1.4647464752197265625, 1.38231909275054931640625, 1.697301387786865234375, 1.7067148685455322265625, 1.367557525634765625, 1.203350543975830078125, 1.2221000194549560546875, 1.001432895660400390625, 1.0458896160125732421875, 1.1893208026885986328125, 1.95205771923065185546875, 1.11799204349517822265625, 1.12092030048370361328125, 1.87247908115386962890625, 1.1757104396820068359375, 1.59877336025238037109375, 1.38252866268157958984375, 1.3736979961395263671875, 1.8620140552520751953125, 1.30525004863739013671875, 1.00023210048675537109375, 1.55091059207916259765625, 1.24628221988677978515625, 1.94142448902130126953125, 1.48412430286407470703125, 1.8975479602813720703125, 1.1661231517791748046875, 1.32726585865020751953125, 1.395812511444091796875, 1.1909768581390380859375, 1.147377490997314453125, 1.42214763164520263671875, 1.8093554973602294921875, 1.89093673229217529296875, 1.24005615711212158203125, 1.098285198211669921875, 1.5222003459930419921875, 1.2879779338836669921875, 1.604277133941650390625, 1.6641728878021240234375, 1.01612031459808349609375, 1.40189874172210693359375, 1.846203327178955078125, 1.1380221843719482421875, 1.16815268993377685546875, 1.6301829814910888671875, 1.10398042201995849609375, 1.271198749542236328125, 1.71153557300567626953125, 1.14643764495849609375, 1.88367366790771484375, 1.32166004180908203125, 1.4466457366943359375, 1.04882991313934326171875, 1.6452057361602783203125},
{ 1.2019364833831787109375, 1.258525371551513671875, 1.13829457759857177734375, 1.62985074520111083984375, 1.5448744297027587890625, 1.16812503337860107421875, 1.4883902072906494140625, 1.39739143848419189453125, 1.24287736415863037109375, 1.04010295867919921875, 1.03261268138885498046875, 1.89871466159820556640625, 1.47425210475921630859375, 1.15524375438690185546875, 1.90568935871124267578125, 1.77629935741424560546875, 1.78913128376007080078125, 1.71108019351959228515625, 1.3758928775787353515625, 1.5698413848876953125, 1.820411205291748046875, 1.47033023834228515625, 1.93097794055938720703125, 1.7396905422210693359375, 1.7446897029876708984375, 1.15933525562286376953125, 1.11411917209625244140625, 1.4402887821197509765625, 1.4932029247283935546875, 1.616497039794921875, 1.10984897613525390625, 1.043607234954833984375, 1.712763309478759765625, 1.69071543216705322265625, 1.07999432086944580078125, 1.412583827972412109375, 1.47669684886932373046875, 1.88982594013214111328125, 1.24961459636688232421875, 1.9245607852935791015625, 1.74578106403350830078125, 1.7790367603302001953125, 1.742939472198486328125, 1.24472224712371826171875, 1.57918179035186767578125, 1.12936699390411376953125, 1.16930568218231201171875, 1.84953129291534423828125, 1.0953910350799560546875, 1.8160836696624755859375, 1.95909488201141357421875, 1.30016815662384033203125, 1.1831648349761962890625, 1.46713936328887939453125, 1.4496715068817138671875, 1.26596724987030029296875, 1.962460041046142578125, 1.86160981655120849609375, 1.72131955623626708984375, 1.29785478115081787109375, 1.99537217617034912109375, 1.0781309604644775390625, 1.18318045139312744140625, 1.3517863750457763671875, 1.24707329273223876953125, 1.39333713054656982421875, 1.9091908931732177734375, 1.0621840953826904296875, 1.79674875736236572265625, 1.9302980899810791015625, 1.72401964664459228515625, 1.765374660491943359375, 1.2985351085662841796875, 1.05695664882659912109375, 1.0390055179595947265625, 1.27302646636962890625, 1.1924579143524169921875, 1.5345661640167236328125, 1.438094615936279296875, 1.3955872058868408203125, 1.665368556976318359375, 1.4161281585693359375, 1.01377832889556884765625, 1.21572148799896240234375, 1.36188209056854248046875, 1.69482934474945068359375, 1.453030109405517578125, 1.11174786090850830078125, 1.84531509876251220703125, 1.702479839324951171875, 1.8732433319091796875, 1.53107702732086181640625, 1.80862247943878173828125, 1.25795018672943115234375, 1.40816915035247802734375, 1.51364886760711669921875, 1.03533542156219482421875, 1.565608978271484375, 1.543853282928466796875, 1.96537005901336669921875},
{ 1.863760471343994140625, 1.2045738697052001953125, 1.68155157566070556640625, 1.881608486175537109375, 1.82308161258697509765625, 1.58877933025360107421875, 1.1203463077545166015625, 1.669549465179443359375, 1.695060253143310546875, 1.7550251483917236328125, 1.926186084747314453125, 1.22953236103057861328125, 1.21043217182159423828125, 1.9579117298126220703125, 1.203219890594482421875, 1.46203196048736572265625, 1.227618694305419921875, 1.73402225971221923828125, 1.5387508869171142578125, 1.87372386455535888671875, 1.1311643123626708984375, 1.7378594875335693359375, 1.7766740322113037109375, 1.7884223461151123046875, 1.98017370700836181640625, 1.3277835845947265625, 1.54091370105743408203125, 1.308018207550048828125, 1.4067499637603759765625, 1.90195000171661376953125, 1.50886070728302001953125, 1.02341556549072265625, 1.26443159580230712890625, 1.98424625396728515625, 1.43481051921844482421875, 1.47546970844268798828125, 1.0266301631927490234375, 1.06022989749908447265625, 1.92340028285980224609375, 1.36592495441436767578125, 1.93506777286529541015625, 1.16306579113006591796875, 1.95304644107818603515625, 1.51835143566131591796875, 1.89821469783782958984375, 1.20946407318115234375, 1.1493823528289794921875, 1.5890829563140869140625, 1.1397264003753662109375, 1.08561694622039794921875, 1.808695316314697265625, 1.528154850006103515625, 1.59688174724578857421875, 1.48313653469085693359375, 1.67136478424072265625, 1.790240764617919921875, 1.0690200328826904296875, 1.4849927425384521484375, 1.4452993869781494140625, 1.2955906391143798828125, 1.11597859859466552734375, 1.90145003795623779296875, 1.0793745517730712890625, 1.14096796512603759765625, 1.70653045177459716796875, 1.35600531101226806640625, 1.78687000274658203125, 1.06058776378631591796875, 1.6168212890625, 1.1213257312774658203125, 1.81890738010406494140625, 1.63705337047576904296875, 1.57880771160125732421875, 1.70518553256988525390625, 1.98788726329803466796875, 1.262294292449951171875, 1.178694248199462890625, 1.18640387058258056640625, 1.94092738628387451171875, 1.84850406646728515625, 1.50537097454071044921875, 1.300782680511474609375, 1.18329966068267822265625, 1.2890770435333251953125, 1.54885113239288330078125, 1.27704346179962158203125, 1.85186779499053955078125, 1.66954624652862548828125, 1.34870815277099609375, 1.42276513576507568359375, 1.238524913787841796875, 1.22852122783660888671875, 1.89251387119293212890625, 1.460321903228759765625, 1.063630580902099609375, 1.06862485408782958984375, 1.76427555084228515625, 1.61282002925872802734375, 1.4994490146636962890625, 1.617431163787841796875},
{ 1.44003582000732421875, 1.9435861110687255859375, 1.838403224945068359375, 1.9504985809326171875, 1.4243528842926025390625, 1.54242706298828125, 1.1918299198150634765625, 1.7510898113250732421875, 1.30670011043548583984375, 1.46457397937774658203125, 1.34576380252838134765625, 1.39877140522003173828125, 1.1724884510040283203125, 1.92428290843963623046875, 1.63695895671844482421875, 1.4362909793853759765625, 1.2875487804412841796875, 1.95490205287933349609375, 1.28180778026580810546875, 1.64345657825469970703125, 1.68406975269317626953125, 1.93230879306793212890625, 1.33727896213531494140625, 1.9355742931365966796875, 1.4965345859527587890625, 1.84834730625152587890625, 1.41185474395751953125, 1.0118858814239501953125, 1.0476589202880859375, 1.33426606655120849609375, 1.1264688968658447265625, 1.75400578975677490234375, 1.68432867527008056640625, 1.43415546417236328125, 1.3254435062408447265625, 1.3743593692779541015625, 1.363536834716796875, 1.1283848285675048828125, 1.03742682933807373046875, 1.31461989879608154296875, 1.9883213043212890625, 1.6070406436920166015625, 1.18633115291595458984375, 1.8941462039947509765625, 1.49370276927947998046875, 1.2933635711669921875, 1.05226957798004150390625, 1.708420276641845703125, 1.682621479034423828125, 1.617186069488525390625, 1.482493877410888671875, 1.77748429775238037109375, 1.8118751049041748046875, 1.53837001323699951171875, 1.8523323535919189453125, 1.44437885284423828125, 1.92805659770965576171875, 1.82024371623992919921875, 1.7761266231536865234375, 1.02357995510101318359375, 1.9534909725189208984375, 1.05304014682769775390625, 1.56816947460174560546875, 1.199436664581298828125, 1.52217328548431396484375, 1.42733395099639892578125, 1.45364272594451904296875, 1.17460858821868896484375, 1.56570589542388916015625, 1.25747907161712646484375, 1.52955400943756103515625, 1.56850349903106689453125, 1.6492364406585693359375, 1.255046367645263671875, 1.47567462921142578125, 1.065714359283447265625, 1.05739462375640869140625, 1.5522606372833251953125, 1.0154774188995361328125, 1.81445753574371337890625, 1.63023006916046142578125, 1.4754388332366943359375, 1.1270735263824462890625, 1.575009822845458984375, 1.349150180816650390625, 1.06842708587646484375, 1.004150390625, 1.61814606189727783203125, 1.67285692691802978515625, 1.36603832244873046875, 1.76690900325775146484375, 1.37357676029205322265625, 1.62328469753265380859375, 1.4174897670745849609375, 1.92300188541412353515625, 1.8283851146697998046875, 1.6215381622314453125, 1.05984055995941162109375, 1.57846987247467041015625, 1.67546522617340087890625},
{ 1.44142878055572509765625, 1.3986799716949462890625, 1.2119591236114501953125, 1.70741403102874755859375, 1.29530966281890869140625, 1.3192632198333740234375, 1.98769438266754150390625, 1.6565325260162353515625, 1.96269261837005615234375, 1.0070514678955078125, 1.20362174510955810546875, 1.29834353923797607421875, 1.16637885570526123046875, 1.07101523876190185546875, 1.8602521419525146484375, 1.83886349201202392578125, 1.5341989994049072265625, 1.02320158481597900390625, 1.65609490871429443359375, 1.6489040851593017578125, 1.8724501132965087890625, 1.98967087268829345703125, 1.6360948085784912109375, 1.35000908374786376953125, 1.18933391571044921875, 1.1714346408843994140625, 1.59006965160369873046875, 1.6503922939300537109375, 1.468393802642822265625, 1.0553934574127197265625, 1.2011477947235107421875, 1.93087482452392578125, 1.1919524669647216796875, 1.37527370452880859375, 1.944205760955810546875, 1.58082306385040283203125, 1.61454951763153076171875, 1.82256543636322021484375, 1.73430526256561279296875, 1.0840854644775390625, 1.78637850284576416015625, 1.50746023654937744140625, 1.32513141632080078125, 1.854930400848388671875, 1.32672512531280517578125, 1.16978800296783447265625, 1.45742976665496826171875, 1.82398402690887451171875, 1.94740426540374755859375, 1.13995492458343505859375, 1.757443904876708984375, 1.77416706085205078125, 1.72619760036468505859375, 1.0498807430267333984375, 1.38535308837890625, 1.4266326427459716796875, 1.13029110431671142578125, 1.29393672943115234375, 1.43370926380157470703125, 1.27670419216156005859375, 1.7897126674652099609375, 1.23988246917724609375, 1.07587528228759765625, 1.1798121929168701171875, 1.0207691192626953125, 1.18980371952056884765625, 1.46446192264556884765625, 1.6874320507049560546875, 1.09948444366455078125, 1.09105026721954345703125, 1.37976551055908203125, 1.13302195072174072265625, 1.2850368022918701171875, 1.99717271327972412109375, 1.6282055377960205078125, 1.4679596424102783203125, 1.5931961536407470703125, 1.2788603305816650390625, 1.19076168537139892578125, 1.847480297088623046875, 1.31976187229156494140625, 1.5848789215087890625, 1.1214120388031005859375, 1.96661436557769775390625, 1.31399977207183837890625, 1.553007602691650390625, 1.19557011127471923828125, 1.146124362945556640625, 1.00208032131195068359375, 1.27097666263580322265625, 1.3085224628448486328125, 1.16844284534454345703125, 1.16051566600799560546875, 1.48740541934967041015625, 1.62386620044708251953125, 1.86360967159271240234375, 1.43959724903106689453125, 1.57273900508880615234375, 1.47194659709930419921875, 1.445209980010986328125},
{ 1.2301862239837646484375, 1.9982941150665283203125, 1.59631097316741943359375, 1.720386505126953125, 1.95665740966796875, 1.56206262111663818359375, 1.30539977550506591796875, 1.602510929107666015625, 1.25370121002197265625, 1.8844664096832275390625, 1.4523212909698486328125, 1.6629903316497802734375, 1.5884425640106201171875, 1.94721782207489013671875, 1.14421498775482177734375, 1.0225751399993896484375, 1.10451996326446533203125, 1.64096486568450927734375, 1.80145275592803955078125, 1.566420078277587890625, 1.08302342891693115234375, 1.163728237152099609375, 1.9935767650604248046875, 1.71752178668975830078125, 1.15343129634857177734375, 1.16933953762054443359375, 1.02523624897003173828125, 1.96015584468841552734375, 1.25454807281494140625, 1.6658782958984375, 1.27212536334991455078125, 1.11331498622894287109375, 1.345442295074462890625, 1.66410958766937255859375, 1.26692104339599609375, 1.35414612293243408203125, 1.8663833141326904296875, 1.57592165470123291015625, 1.53521978855133056640625, 1.99138796329498291015625, 1.94977915287017822265625, 1.362762928009033203125, 1.18147552013397216796875, 1.98880863189697265625, 1.38111436367034912109375, 1.43408024311065673828125, 1.22493743896484375, 1.23864269256591796875, 1.30988681316375732421875, 1.295755863189697265625, 1.68558681011199951171875, 1.5850293636322021484375, 1.71054553985595703125, 1.94854509830474853515625, 1.420074939727783203125, 1.5974495410919189453125, 1.59342861175537109375, 1.036513805389404296875, 1.7076604366302490234375, 1.094163417816162109375, 1.9656999111175537109375, 1.7454760074615478515625, 1.58614718914031982421875, 1.41564810276031494140625, 1.54228699207305908203125, 1.45143091678619384765625, 1.9378211498260498046875, 1.44803464412689208984375, 1.20681893825531005859375, 1.1190011501312255859375, 1.3253881931304931640625, 1.39654624462127685546875, 1.22256314754486083984375, 1.44986975193023681640625, 1.57791197299957275390625, 1.30893528461456298828125, 1.19336330890655517578125, 1.7812178134918212890625, 1.1267507076263427734375, 1.34892094135284423828125, 1.774576663970947265625, 1.7341620922088623046875, 1.091495037078857421875, 1.81962668895721435546875, 1.1340119838714599609375, 1.61219203472137451171875, 1.11590588092803955078125, 1.937017917633056640625, 1.1628663539886474609375, 1.5496079921722412109375, 1.953851222991943359375, 1.3533389568328857421875, 1.43666303157806396484375, 1.40995824337005615234375, 1.805243968963623046875, 1.4305512905120849609375, 1.92618930339813232421875, 1.4344766139984130859375, 1.40197980403900146484375, 1.263770580291748046875},
{ 1.6405200958251953125, 1.8438739776611328125, 1.45470428466796875, 1.92752170562744140625, 1.97000586986541748046875, 1.1845991611480712890625, 1.63508927822113037109375, 1.2556579113006591796875, 1.187849521636962890625, 1.76762330532073974609375, 1.74012887477874755859375, 1.1040585041046142578125, 1.53040206432342529296875, 1.3121464252471923828125, 1.03193104267120361328125, 1.33389127254486083984375, 1.1038875579833984375, 1.74903857707977294921875, 1.87294542789459228515625, 1.21721303462982177734375, 1.03284060955047607421875, 1.80677711963653564453125, 1.24940097332000732421875, 1.39790642261505126953125, 1.35854399204254150390625, 1.3473846912384033203125, 1.04474353790283203125, 1.602617740631103515625, 1.687465667724609375, 1.45236599445343017578125, 1.0630729198455810546875, 1.1016948223114013671875, 1.58969700336456298828125, 1.25864565372467041015625, 1.8025810718536376953125, 1.9201238155364990234375, 1.74738979339599609375, 1.544506072998046875, 1.978989124298095703125, 1.798467159271240234375, 1.85319387912750244140625, 1.06552422046661376953125, 1.798985004425048828125, 1.90380084514617919921875, 1.25869476795196533203125, 1.64050948619842529296875, 1.9836609363555908203125, 1.29065239429473876953125, 1.3728506565093994140625, 1.987441539764404296875, 1.54195106029510498046875, 1.11193764209747314453125, 1.81043064594268798828125, 1.30940711498260498046875, 1.29406845569610595703125, 1.5798985958099365234375, 1.2904517650604248046875, 1.63053786754608154296875, 1.14494335651397705078125, 1.6770412921905517578125, 1.28461658954620361328125, 1.8819482326507568359375, 1.10766017436981201171875, 1.617072582244873046875, 1.41575086116790771484375, 1.73767220973968505859375, 1.07689511775970458984375, 1.05583798885345458984375, 1.6062405109405517578125, 1.20060122013092041015625, 1.3523538112640380859375, 1.05225956439971923828125, 1.97646987438201904296875, 1.9384219646453857421875, 1.9122083187103271484375, 1.77927267551422119140625, 1.4932587146759033203125, 1.36955320835113525390625, 1.436535358428955078125, 1.9847638607025146484375, 1.36829984188079833984375, 1.4990837574005126953125, 1.080753326416015625, 1.2025086879730224609375, 1.2065966129302978515625, 1.504709720611572265625, 1.9990599155426025390625, 1.713108539581298828125, 1.90490055084228515625, 1.07267248630523681640625, 1.61786973476409912109375, 1.25492846965789794921875, 1.30014836788177490234375, 1.483695507049560546875, 1.65925133228302001953125, 1.48503506183624267578125, 1.567900180816650390625, 1.44892215728759765625, 1.91436541080474853515625, 1.19013321399688720703125},
{ 1.69585359096527099609375, 1.76690185070037841796875, 1.24750411510467529296875, 1.75689601898193359375, 1.304285526275634765625, 1.46651732921600341796875, 1.3359425067901611328125, 1.808312892913818359375, 1.7922461032867431640625, 1.15227282047271728515625, 1.396694660186767578125, 1.03945410251617431640625, 1.95193374156951904296875, 1.6260712146759033203125, 1.844395160675048828125, 1.545557498931884765625, 1.4356539249420166015625, 1.876094341278076171875, 1.52800476551055908203125, 1.90110886096954345703125, 1.0917570590972900390625, 1.350241184234619140625, 1.44174826145172119140625, 1.808279514312744140625, 1.05057632923126220703125, 1.9795649051666259765625, 1.18605124950408935546875, 1.4953639507293701171875, 1.5603644847869873046875, 1.9517104625701904296875, 1.1784780025482177734375, 1.86521685123443603515625, 1.57323169708251953125, 1.23435223102569580078125, 1.614669322967529296875, 1.3936913013458251953125, 1.08108341693878173828125, 1.84863102436065673828125, 1.179279327392578125, 1.77807581424713134765625, 1.201557159423828125, 1.89259231090545654296875, 1.50691330432891845703125, 1.3355319499969482421875, 1.01396048069000244140625, 1.31462323665618896484375, 1.39306557178497314453125, 1.15153181552886962890625, 1.14520823955535888671875, 1.43689024448394775390625, 1.75505626201629638671875, 1.97829568386077880859375, 1.1057605743408203125, 1.2287766933441162109375, 1.3429691791534423828125, 1.8832290172576904296875, 1.37555968761444091796875, 1.330319881439208984375, 1.200589656829833984375, 1.64736068248748779296875, 1.23996770381927490234375, 1.825649261474609375, 1.876341342926025390625, 1.9137799739837646484375, 1.3757045269012451171875, 1.7664234638214111328125, 1.3842241764068603515625, 1.08607423305511474609375, 1.18678462505340576171875, 1.4452679157257080078125, 1.91475164890289306640625, 1.97676646709442138671875, 1.89045488834381103515625, 1.41921234130859375, 1.29588878154754638671875, 1.20575237274169921875, 1.3531324863433837890625, 1.28312838077545166015625, 1.20398890972137451171875, 1.34873855113983154296875, 1.67634165287017822265625, 1.19316661357879638671875, 1.124731540679931640625, 1.835679531097412109375, 1.53265154361724853515625, 1.14019477367401123046875, 1.064060211181640625, 1.59921538829803466796875, 1.251614093780517578125, 1.97323477268218994140625, 1.0091192722320556640625, 1.47310936450958251953125, 1.65570080280303955078125, 1.17290031909942626953125, 1.13919174671173095703125, 1.3406848907470703125, 1.64624059200286865234375, 1.374834537506103515625, 1.78663718700408935546875, 1.03326380252838134765625},
{ 1.643146991729736328125, 1.14782845973968505859375, 1.978603363037109375, 1.15190827846527099609375, 1.4938519001007080078125, 1.744089603424072265625, 1.59933388233184814453125, 1.6374187469482421875, 1.6683051586151123046875, 1.632633686065673828125, 1.46139621734619140625, 1.0720226764678955078125, 1.65664196014404296875, 1.3674995899200439453125, 1.1724793910980224609375, 1.79039895534515380859375, 1.97121441364288330078125, 1.71048986911773681640625, 1.03045761585235595703125, 1.4717085361480712890625, 1.17002856731414794921875, 1.09210860729217529296875, 1.4218285083770751953125, 1.9755322933197021484375, 1.63018262386322021484375, 1.82249820232391357421875, 1.97015011310577392578125, 1.92780888080596923828125, 1.07130396366119384765625, 1.05237734317779541015625, 1.4344785213470458984375, 1.0567715167999267578125, 1.82898676395416259765625, 1.483978271484375, 1.3578054904937744140625, 1.27888584136962890625, 1.87822949886322021484375, 1.8319847583770751953125, 1.46549546718597412109375, 1.53478777408599853515625, 1.60687255859375, 1.0344688892364501953125, 1.8137238025665283203125, 1.37522029876708984375, 1.3390352725982666015625, 1.21382892131805419921875, 1.68791377544403076171875, 1.29697132110595703125, 1.6085541248321533203125, 1.38772714138031005859375, 1.2511742115020751953125, 1.82881152629852294921875, 1.18241977691650390625, 1.93002665042877197265625, 1.942737102508544921875, 1.367431163787841796875, 1.834214687347412109375, 1.781729221343994140625, 1.62639462947845458984375, 1.7633779048919677734375, 1.86755073070526123046875, 1.4119131565093994140625, 1.4889373779296875, 1.65699470043182373046875, 1.38950622081756591796875, 1.5286700725555419921875, 1.68859136104583740234375, 1.5643565654754638671875, 1.33406412601470947265625, 1.54004275798797607421875, 1.753455638885498046875, 1.71320855617523193359375, 1.23554909229278564453125, 1.76496303081512451171875, 1.72993981838226318359375, 1.62890303134918212890625, 1.75206506252288818359375, 1.39418852329254150390625, 1.08120167255401611328125, 1.4703376293182373046875, 1.938932895660400390625, 1.20124053955078125, 1.335584163665771484375, 1.11589205265045166015625, 1.2721273899078369140625, 1.0033419132232666015625, 1.48505365848541259765625, 1.99936592578887939453125, 1.4217154979705810546875, 1.8723537921905517578125, 1.133636951446533203125, 1.695916652679443359375, 1.7752933502197265625, 1.09571361541748046875, 1.39585888385772705078125, 1.25799620151519775390625, 1.7114238739013671875, 1.88737237453460693359375, 1.54517996311187744140625, 1.30128896236419677734375},
{ 1.84873259067535400390625, 1.4124333858489990234375, 1.84064960479736328125, 1.69105374813079833984375, 1.17958509922027587890625, 1.53426325321197509765625, 1.87603986263275146484375, 1.40745031833648681640625, 1.6390469074249267578125, 1.0515615940093994140625, 1.72846639156341552734375, 1.84906923770904541015625, 1.2564990520477294921875, 1.35790598392486572265625, 1.1259186267852783203125, 1.70086991786956787109375, 1.79252338409423828125, 1.49799716472625732421875, 1.03930556774139404296875, 1.02940356731414794921875, 1.94984042644500732421875, 1.3160960674285888671875, 1.26839363574981689453125, 1.8062508106231689453125, 1.33424723148345947265625, 1.35446202754974365234375, 1.7777445316314697265625, 1.1814587116241455078125, 1.16555416584014892578125, 1.5017898082733154296875, 1.78265202045440673828125, 1.5069789886474609375, 1.7385227680206298828125, 1.39164721965789794921875, 1.5850799083709716796875, 1.110105037689208984375, 1.6338036060333251953125, 1.5509126186370849609375, 1.15959930419921875, 1.8169095516204833984375, 1.6788730621337890625, 1.298212528228759765625, 1.48932659626007080078125, 1.22568213939666748046875, 1.65897119045257568359375, 1.39235866069793701171875, 1.65186023712158203125, 1.73036634922027587890625, 1.77803957462310791015625, 1.4307861328125, 1.655218601226806640625, 1.29399788379669189453125, 1.86965811252593994140625, 1.99799048900604248046875, 1.02377784252166748046875, 1.97214162349700927734375, 1.35798299312591552734375, 1.563965320587158203125, 1.13420867919921875, 1.18632924556732177734375, 1.9686839580535888671875, 1.13263988494873046875, 1.3014142513275146484375, 1.74749672412872314453125, 1.1898822784423828125, 1.64031612873077392578125, 1.61446797847747802734375, 1.6294219493865966796875, 1.4830875396728515625, 1.104106903076171875, 1.5225503444671630859375, 1.49216175079345703125, 1.24413549900054931640625, 1.52037298679351806640625, 1.1708867549896240234375, 1.9554901123046875, 1.51412594318389892578125, 1.51316070556640625, 1.48668539524078369140625, 1.6223351955413818359375, 1.44035947322845458984375, 1.7326395511627197265625, 1.0150740146636962890625, 1.8522169589996337890625, 1.4872753620147705078125, 1.00353920459747314453125, 1.505037784576416015625, 1.28468477725982666015625, 1.39738941192626953125, 1.2235877513885498046875, 1.24535715579986572265625, 1.11275446414947509765625, 1.902230739593505859375, 1.01194870471954345703125, 1.150544643402099609375, 1.10634648799896240234375, 1.18327963352203369140625, 1.1076586246490478515625, 1.59678280353546142578125, 1.38572299480438232421875},
{ 1.51806461811065673828125, 1.00786149501800537109375, 1.94492542743682861328125, 1.06530320644378662109375, 1.41726195812225341796875, 1.191115856170654296875, 1.9252121448516845703125, 1.9274318218231201171875, 1.7945311069488525390625, 1.42336308956146240234375, 1.63849544525146484375, 1.25995159149169921875, 1.85277593135833740234375, 1.28684031963348388671875, 1.340779781341552734375, 1.658161163330078125, 1.1569607257843017578125, 1.2551424503326416015625, 1.7555987834930419921875, 1.6829354763031005859375, 1.53254783153533935546875, 1.02915894985198974609375, 1.3474528789520263671875, 1.57166302204132080078125, 1.71393525600433349609375, 1.62301170825958251953125, 1.345246791839599609375, 1.69918382167816162109375, 1.742893695831298828125, 1.1999928951263427734375, 1.51572716236114501953125, 1.78872621059417724609375, 1.11700475215911865234375, 1.65850174427032470703125, 1.68691956996917724609375, 1.872844696044921875, 1.68809795379638671875, 1.96798241138458251953125, 1.02156674861907958984375, 1.004357814788818359375, 1.31068837642669677734375, 1.2548618316650390625, 1.04056560993194580078125, 1.7172849178314208984375, 1.24041426181793212890625, 1.63848650455474853515625, 1.39640486240386962890625, 1.23778402805328369140625, 1.282474040985107421875, 1.81706035137176513671875, 1.396602630615234375, 1.44508969783782958984375, 1.69006454944610595703125, 1.40358257293701171875, 1.2771434783935546875, 1.58244979381561279296875, 1.812818050384521484375, 1.01178443431854248046875, 1.2259166240692138671875, 1.7180633544921875, 1.49523985385894775390625, 1.092067241668701171875, 1.1561529636383056640625, 1.9560184478759765625, 1.225145816802978515625, 1.5174396038055419921875, 1.229862689971923828125, 1.3972289562225341796875, 1.0320999622344970703125, 1.91945540904998779296875, 1.13127291202545166015625, 1.85037243366241455078125, 1.13585150241851806640625, 1.7741506099700927734375, 1.09026467800140380859375, 1.29282796382904052734375, 1.3447730541229248046875, 1.2379810810089111328125, 1.65581119060516357421875, 1.08161294460296630859375, 1.20429766178131103515625, 1.73376047611236572265625, 1.21941483020782470703125, 1.91432106494903564453125, 1.8953564167022705078125, 1.2865970134735107421875, 1.28854477405548095703125, 1.540059566497802734375, 1.8828160762786865234375, 1.609831333160400390625, 1.51007449626922607421875, 1.2203872203826904296875, 1.31391608715057373046875, 1.94097435474395751953125, 1.443719387054443359375, 1.9402511119842529296875, 1.1667068004608154296875, 1.627644062042236328125, 1.0854737758636474609375, 1.36892449855804443359375},
{ 1.463503360748291015625, 1.1410491466522216796875, 1.57094466686248779296875, 1.3442389965057373046875, 1.77419793605804443359375, 1.049311161041259765625, 1.46704971790313720703125, 1.61507129669189453125, 1.25329303741455078125, 1.75571727752685546875, 1.045116424560546875, 1.74665057659149169921875, 1.5482113361358642578125, 1.23575437068939208984375, 1.3210980892181396484375, 1.347642421722412109375, 1.59617078304290771484375, 1.76837575435638427734375, 1.0499613285064697265625, 1.49814784526824951171875, 1.7101213932037353515625, 1.95943939685821533203125, 1.18662393093109130859375, 1.14814090728759765625, 1.41468322277069091796875, 1.51514494419097900390625, 1.09689271450042724609375, 1.26590621471405029296875, 1.03208363056182861328125, 1.76547133922576904296875, 1.51840031147003173828125, 1.73647654056549072265625, 1.0180952548980712890625, 1.93761444091796875, 1.271543025970458984375, 1.01006984710693359375, 1.04797279834747314453125, 1.1794240474700927734375, 1.7204186916351318359375, 1.50052750110626220703125, 1.85239088535308837890625, 1.3328421115875244140625, 1.9837634563446044921875, 1.7337512969970703125, 1.80338191986083984375, 1.457339763641357421875, 1.895889759063720703125, 1.24614107608795166015625, 1.25027287006378173828125, 1.103354930877685546875, 1.71762359142303466796875, 1.23303234577178955078125, 1.60562312602996826171875, 1.3357298374176025390625, 1.59724247455596923828125, 1.9471333026885986328125, 1.181162357330322265625, 1.50714862346649169921875, 1.78141224384307861328125, 1.84696304798126220703125, 1.77372729778289794921875, 1.78157436847686767578125, 1.5761249065399169921875, 1.4952886104583740234375, 1.00119960308074951171875, 1.40768730640411376953125, 1.0576364994049072265625, 1.20756256580352783203125, 1.3884437084197998046875, 1.74232184886932373046875, 1.533403873443603515625, 1.45036065578460693359375, 1.20324361324310302734375, 1.02390420436859130859375, 1.75302255153656005859375, 1.9898188114166259765625, 1.04224073886871337890625, 1.8958899974822998046875, 1.86916458606719970703125, 1.79007136821746826171875, 1.1668717861175537109375, 1.6802012920379638671875, 1.14851534366607666015625, 1.6616880893707275390625, 1.58930552005767822265625, 1.400664806365966796875, 1.4327113628387451171875, 1.66011178493499755859375, 1.9083807468414306640625, 1.55644893646240234375, 1.3492782115936279296875, 1.2340958118438720703125, 1.895543575286865234375, 1.6455013751983642578125, 1.272567272186279296875, 1.124141693115234375, 1.83078539371490478515625, 1.43798673152923583984375, 1.03469359874725341796875, 1.01093614101409912109375},
{ 1.99972355365753173828125, 1.38647377490997314453125, 1.913789272308349609375, 1.473819732666015625, 1.46562254428863525390625, 1.20836269855499267578125, 1.33907163143157958984375, 1.80775678157806396484375, 1.56312358379364013671875, 1.47139155864715576171875, 1.1786518096923828125, 1.263936519622802734375, 1.88563334941864013671875, 1.9481050968170166015625, 1.358334064483642578125, 1.9541370868682861328125, 1.91596281528472900390625, 1.673499584197998046875, 1.23629534244537353515625, 1.26430690288543701171875, 1.7997648715972900390625, 1.155959606170654296875, 1.751523494720458984375, 1.4405014514923095703125, 1.868971347808837890625, 1.33819591999053955078125, 1.32225430011749267578125, 1.9248211383819580078125, 1.915231227874755859375, 1.30818331241607666015625, 1.494409084320068359375, 1.44134914875030517578125, 1.2133476734161376953125, 1.76009738445281982421875, 1.3400323390960693359375, 1.8320882320404052734375, 1.2947156429290771484375, 1.2052524089813232421875, 1.60572874546051025390625, 1.6428985595703125, 1.47075951099395751953125, 1.933039188385009765625, 1.6111013889312744140625, 1.45943558216094970703125, 1.10637009143829345703125, 1.72186183929443359375, 1.89718878269195556640625, 1.99308681488037109375, 1.64334285259246826171875, 1.30007565021514892578125, 1.6249024868011474609375, 1.91690981388092041015625, 1.37381494045257568359375, 1.55692493915557861328125, 1.72346460819244384765625, 1.45156943798065185546875, 1.96370279788970947265625, 1.50347983837127685546875, 1.78884541988372802734375, 1.70127582550048828125, 1.7261397838592529296875, 1.9835741519927978515625, 1.7322003841400146484375, 1.73972117900848388671875, 1.644913196563720703125, 1.134743213653564453125, 1.17830836772918701171875, 1.44601762294769287109375, 1.14790248870849609375, 1.599160671234130859375, 1.6140086650848388671875, 1.0906350612640380859375, 1.6305162906646728515625, 1.4845764636993408203125, 1.28663861751556396484375, 1.67133796215057373046875, 1.7291300296783447265625, 1.07525408267974853515625, 1.85247123241424560546875, 1.99912321567535400390625, 1.34452342987060546875, 1.29290854930877685546875, 1.7751522064208984375, 1.5341579914093017578125, 1.41531813144683837890625, 1.90764319896697998046875, 1.47413814067840576171875, 1.97171652317047119140625, 1.44141471385955810546875, 1.498887538909912109375, 1.223133563995361328125, 1.57811796665191650390625, 1.75743091106414794921875, 1.16633510589599609375, 1.79852855205535888671875, 1.276664257049560546875, 1.55613863468170166015625, 1.9908802509307861328125, 1.87783634662628173828125, 1.48357689380645751953125},
{ 1.24555599689483642578125, 1.18813037872314453125, 1.69393479824066162109375, 1.054112911224365234375, 1.35647189617156982421875, 1.40448248386383056640625, 1.817612171173095703125, 1.140632152557373046875, 1.61375081539154052734375, 1.79839992523193359375, 1.26521527767181396484375, 1.7812235355377197265625, 1.632466793060302734375, 1.63626301288604736328125, 1.78402042388916015625, 1.0609929561614990234375, 1.563582897186279296875, 1.327762603759765625, 1.0439112186431884765625, 1.8138256072998046875, 1.0548880100250244140625, 1.3243377208709716796875, 1.97331655025482177734375, 1.89582359790802001953125, 1.96193468570709228515625, 1.76761257648468017578125, 1.8451473712921142578125, 1.20874297618865966796875, 1.80897700786590576171875, 1.8878347873687744140625, 1.1127345561981201171875, 1.47343194484710693359375, 1.99990737438201904296875, 1.15231239795684814453125, 1.99576675891876220703125, 1.75326788425445556640625, 1.77919447422027587890625, 1.1638514995574951171875, 1.8162271976470947265625, 1.72759497165679931640625, 1.94282054901123046875, 1.3091938495635986328125, 1.084331512451171875, 1.71516168117523193359375, 1.2992193698883056640625, 1.15745389461517333984375, 1.33446562290191650390625, 1.44755840301513671875, 1.8802130222320556640625, 1.6085569858551025390625, 1.7111225128173828125, 1.5926544666290283203125, 1.90194976329803466796875, 1.79167640209197998046875, 1.304840087890625, 1.0280363559722900390625, 1.47584187984466552734375, 1.7136709690093994140625, 1.23813903331756591796875, 1.864444732666015625, 1.06950247287750244140625, 1.657522678375244140625, 1.501459598541259765625, 1.219212055206298828125, 1.717683315277099609375, 1.33077371120452880859375, 1.5390994548797607421875, 1.73970019817352294921875, 1.9832127094268798828125, 1.76396465301513671875, 1.58515155315399169921875, 1.87673747539520263671875, 1.6679322719573974609375, 1.95907151699066162109375, 1.7494409084320068359375, 1.90805685520172119140625, 1.27363479137420654296875, 1.287943363189697265625, 1.85346257686614990234375, 1.71173298358917236328125, 1.21300208568572998046875, 1.64073979854583740234375, 1.01631891727447509765625, 1.28961980342864990234375, 1.77054178714752197265625, 1.32436859607696533203125, 1.9906575679779052734375, 1.040788173675537109375, 1.81352519989013671875, 1.710922718048095703125, 1.24860823154449462890625, 1.7849628925323486328125, 1.2529251575469970703125, 1.63611853122711181640625, 1.81772053241729736328125, 1.5359609127044677734375, 1.2543528079986572265625, 1.547732830047607421875, 1.866901874542236328125, 1.02512836456298828125},
{ 1.40404045581817626953125, 1.04235422611236572265625, 1.97477817535400390625, 1.39455449581146240234375, 1.32225191593170166015625, 1.55351197719573974609375, 1.1216275691986083984375, 1.53618204593658447265625, 1.9769504070281982421875, 1.00897979736328125, 1.99023568630218505859375, 1.91741907596588134765625, 1.74853003025054931640625, 1.00246942043304443359375, 1.41644060611724853515625, 1.3911325931549072265625, 1.6216328144073486328125, 1.44873750209808349609375, 1.82079756259918212890625, 1.0804536342620849609375, 1.83358633518218994140625, 1.6695234775543212890625, 1.23201596736907958984375, 1.83971405029296875, 1.27284133434295654296875, 1.22948634624481201171875, 1.06039702892303466796875, 1.46538436412811279296875, 1.6274087429046630859375, 1.52214252948760986328125, 1.6212713718414306640625, 1.65701162815093994140625, 1.28329789638519287109375, 1.1058037281036376953125, 1.4084360599517822265625, 1.72815620899200439453125, 1.9729535579681396484375, 1.78951370716094970703125, 1.11759281158447265625, 1.0673296451568603515625, 1.17369353771209716796875, 1.4689862728118896484375, 1.419785022735595703125, 1.3489325046539306640625, 1.2561461925506591796875, 1.71254253387451171875, 1.4848353862762451171875, 1.49419116973876953125, 1.382688045501708984375, 1.09704887866973876953125, 1.25478351116180419921875, 1.38209569454193115234375, 1.15588080883026123046875, 1.293853759765625, 1.46732294559478759765625, 1.31033766269683837890625, 1.01690959930419921875, 1.904725551605224609375, 1.42923939228057861328125, 1.20624697208404541015625, 1.39401996135711669921875, 1.04779040813446044921875, 1.53984773159027099609375, 1.58772981166839599609375, 1.600955486297607421875, 1.69346904754638671875, 1.56442964076995849609375, 1.2742059230804443359375, 1.4853954315185546875, 1.7504146099090576171875, 1.65767109394073486328125, 1.84754657745361328125, 1.82739174365997314453125, 1.90145051479339599609375, 1.1370999813079833984375, 1.86301136016845703125, 1.48780727386474609375, 1.1895072460174560546875, 1.00652313232421875, 1.81018602848052978515625, 1.30675280094146728515625, 1.3535602092742919921875, 1.22946453094482421875, 1.82392036914825439453125, 1.75202465057373046875, 1.91456758975982666015625, 1.7526023387908935546875, 1.14526498317718505859375, 1.3175423145294189453125, 1.0114071369171142578125, 1.2792065143585205078125, 1.3324091434478759765625, 1.67178547382354736328125, 1.986814022064208984375, 1.79257643222808837890625, 1.22161865234375, 1.5562322139739990234375, 1.72331869602203369140625, 1.82947790622711181640625, 1.638172626495361328125},
{ 1.729183673858642578125, 1.50358140468597412109375, 1.85730135440826416015625, 1.8872635364532470703125, 1.97434151172637939453125, 1.27889907360076904296875, 1.81512415409088134765625, 1.76773178577423095703125, 1.47633206844329833984375, 1.49322235584259033203125, 1.06958615779876708984375, 1.09304606914520263671875, 1.636240482330322265625, 1.6315596103668212890625, 1.5113961696624755859375, 1.6962368488311767578125, 1.32463395595550537109375, 1.3495731353759765625, 1.8249645233154296875, 1.62395799160003662109375, 1.71749961376190185546875, 1.247017383575439453125, 1.69933986663818359375, 1.2849237918853759765625, 1.8821823596954345703125, 1.3911759853363037109375, 1.7891471385955810546875, 1.34834659099578857421875, 1.11332166194915771484375, 1.5902993679046630859375, 1.42552483081817626953125, 1.39237439632415771484375, 1.01878941059112548828125, 1.417042255401611328125, 1.07706296443939208984375, 1.302527904510498046875, 1.3556277751922607421875, 1.98190128803253173828125, 1.56073987483978271484375, 1.42013871669769287109375, 1.61598598957061767578125, 1.45665204524993896484375, 1.00286006927490234375, 1.4407863616943359375, 1.36305820941925048828125, 1.34778726100921630859375, 1.549992084503173828125, 1.06273591518402099609375, 1.31702136993408203125, 1.51995384693145751953125, 1.8299052715301513671875, 1.38537561893463134765625, 1.19097197055816650390625, 1.96939051151275634765625, 1.16250765323638916015625, 1.057653903961181640625, 1.27686393260955810546875, 1.34736537933349609375, 1.52078378200531005859375, 1.17651760578155517578125, 1.7814464569091796875, 1.23361301422119140625, 1.24173152446746826171875, 1.935348987579345703125, 1.91220080852508544921875, 1.1597726345062255859375, 1.48729991912841796875, 1.02240335941314697265625, 1.713278293609619140625, 1.3828251361846923828125, 1.45532703399658203125, 1.769246578216552734375, 1.6514375209808349609375, 1.408530712127685546875, 1.3404767513275146484375, 1.0491926670074462890625, 1.95198237895965576171875, 1.26486647129058837890625, 1.04517662525177001953125, 1.92574083805084228515625, 1.6846988201141357421875, 1.52546346187591552734375, 1.64055573940277099609375, 1.0510137081146240234375, 1.5997927188873291015625, 1.08304488658905029296875, 1.57738149166107177734375, 1.81419432163238525390625, 1.71382772922515869140625, 1.67286312580108642578125, 1.64699757099151611328125, 1.2399637699127197265625, 1.6456620693206787109375, 1.14613735675811767578125, 1.692261219024658203125, 1.6369388103485107421875, 1.702386379241943359375, 1.49349105358123779296875, 1.0684812068939208984375, 1.99610888957977294921875},
{ 1.618389606475830078125, 1.8543546199798583984375, 1.1392743587493896484375, 1.625655651092529296875, 1.8605773448944091796875, 1.81290471553802490234375, 1.61748349666595458984375, 1.820981502532958984375, 1.2695157527923583984375, 1.10241878032684326171875, 1.3594701290130615234375, 1.22063481807708740234375, 1.627820491790771484375, 1.73738491535186767578125, 1.07009124755859375, 1.11193084716796875, 1.2246990203857421875, 1.79942989349365234375, 1.37876403331756591796875, 1.7360422611236572265625, 1.37938821315765380859375, 1.3982570171356201171875, 1.737904071807861328125, 1.62393701076507568359375, 1.71459138393402099609375, 1.3825829029083251953125, 1.07136237621307373046875, 1.6823151111602783203125, 1.17991650104522705078125, 1.80107533931732177734375, 1.172863006591796875, 1.02954661846160888671875, 1.82531321048736572265625, 1.11329114437103271484375, 1.85444056987762451171875, 1.58160889148712158203125, 1.32451045513153076171875, 1.15061295032501220703125, 1.84487783908843994140625, 1.3880245685577392578125, 1.24845409393310546875, 1.827187061309814453125, 1.4381427764892578125, 1.71779835224151611328125, 1.0887439250946044921875, 1.6008613109588623046875, 1.89182674884796142578125, 1.89535486698150634765625, 1.0310719013214111328125, 1.6841218471527099609375, 1.57558155059814453125, 1.8864765167236328125, 1.478659152984619140625, 1.005031108856201171875, 1.86955702304840087890625, 1.63424026966094970703125, 1.325693607330322265625, 1.91816508769989013671875, 1.81283867359161376953125, 1.14495551586151123046875, 1.9807674884796142578125, 1.66555130481719970703125, 1.5018846988677978515625, 1.324101924896240234375, 1.14031493663787841796875, 1.58760559558868408203125, 1.23896420001983642578125, 1.56226623058319091796875, 1.31204903125762939453125, 1.0840699672698974609375, 1.4305942058563232421875, 1.07108008861541748046875, 1.08840000629425048828125, 1.3249504566192626953125, 1.23597729206085205078125, 1.9691579341888427734375, 1.16995227336883544921875, 1.711453914642333984375, 1.96543920040130615234375, 1.11803376674652099609375, 1.13888204097747802734375, 1.08692586421966552734375, 1.2288658618927001953125, 1.70809900760650634765625, 1.9823949337005615234375, 1.69778835773468017578125, 1.83414161205291748046875, 1.5945403575897216796875, 1.3661630153656005859375, 1.90447676181793212890625, 1.4355862140655517578125, 1.38327658176422119140625, 1.657763004302978515625, 1.6423776149749755859375, 1.93239247798919677734375, 1.2668964862823486328125, 1.7001132965087890625, 1.6327664852142333984375, 1.6170637607574462890625, 1.610596179962158203125},
{ 1.343744754791259765625, 1.07385158538818359375, 1.28811705112457275390625, 1.67607247829437255859375, 1.70117747783660888671875, 1.82719266414642333984375, 1.767682552337646484375, 1.13316452503204345703125, 1.54963123798370361328125, 1.740147113800048828125, 1.94793605804443359375, 1.18484842777252197265625, 1.86331093311309814453125, 1.16283547878265380859375, 1.74387872219085693359375, 1.90231406688690185546875, 1.70699775218963623046875, 1.83087635040283203125, 1.422806262969970703125, 1.22271811962127685546875, 1.9469864368438720703125, 1.513823986053466796875, 1.6902468204498291015625, 1.97262156009674072265625, 1.712023258209228515625, 1.41360533237457275390625, 1.52589881420135498046875, 1.6414272785186767578125, 1.604242801666259765625, 1.312958240509033203125, 1.7695677280426025390625, 1.904817104339599609375, 1.66010582447052001953125, 1.47386848926544189453125, 1.4571039676666259765625, 1.898190021514892578125, 1.06133711338043212890625, 1.286007404327392578125, 1.90634071826934814453125, 1.2400991916656494140625, 1.59586226940155029296875, 1.6651694774627685546875, 1.5530307292938232421875, 1.8056895732879638671875, 1.8687455654144287109375, 1.20170938968658447265625, 1.53678417205810546875, 1.25013554096221923828125, 1.263127803802490234375, 1.0589802265167236328125, 1.03700649738311767578125, 1.28207790851593017578125, 1.6511631011962890625, 1.62177050113677978515625, 1.3588352203369140625, 1.68706214427947998046875, 1.85495674610137939453125, 1.8947417736053466796875, 1.76907789707183837890625, 1.10097539424896240234375, 1.85750305652618408203125, 1.65086615085601806640625, 1.08214938640594482421875, 1.53348410129547119140625, 1.76362216472625732421875, 1.32986390590667724609375, 1.99600982666015625, 1.6414716243743896484375, 1.5108978748321533203125, 1.6866405010223388671875, 1.17810142040252685546875, 1.752475261688232421875, 1.330615520477294921875, 1.18972480297088623046875, 1.10128629207611083984375, 1.6381244659423828125, 1.958698749542236328125, 1.1697061061859130859375, 1.6297843456268310546875, 1.0375778675079345703125, 1.5966475009918212890625, 1.71767175197601318359375, 1.35511004924774169921875, 1.9309608936309814453125, 1.62247526645660400390625, 1.33364474773406982421875, 1.68201029300689697265625, 1.5628032684326171875, 1.05164706707000732421875, 1.32502079010009765625, 1.6644022464752197265625, 1.21547663211822509765625, 1.74801623821258544921875, 1.95500648021697998046875, 1.59131014347076416015625, 1.73263156414031982421875, 1.384762287139892578125, 1.341056346893310546875, 1.32280313968658447265625, 1.79263579845428466796875},
{ 1.10331046581268310546875, 1.375933170318603515625, 1.93201124668121337890625, 1.2343599796295166015625, 1.76303207874298095703125, 1.76067173480987548828125, 1.31887161731719970703125, 1.98863899707794189453125, 1.89104461669921875, 1.56584775447845458984375, 1.276360034942626953125, 1.93802535533905029296875, 1.00616991519927978515625, 1.295085430145263671875, 1.556086063385009765625, 1.46639192104339599609375, 1.2236652374267578125, 1.95274102687835693359375, 1.3615639209747314453125, 1.282562732696533203125, 1.65366089344024658203125, 1.879840850830078125, 1.1216495037078857421875, 1.631250858306884765625, 1.54959774017333984375, 1.3400185108184814453125, 1.01397800445556640625, 1.2539951801300048828125, 1.2066648006439208984375, 1.85545289516448974609375, 1.23840153217315673828125, 1.10009825229644775390625, 1.61023628711700439453125, 1.2928049564361572265625, 1.04042613506317138671875, 1.78756415843963623046875, 1.8343098163604736328125, 1.6991555690765380859375, 1.48465001583099365234375, 1.81403529644012451171875, 1.18994343280792236328125, 1.88794338703155517578125, 1.97820055484771728515625, 1.51773035526275634765625, 1.1236932277679443359375, 1.7749016284942626953125, 1.54417192935943603515625, 1.7883815765380859375, 1.8660509586334228515625, 1.46399593353271484375, 1.84506261348724365234375, 1.5281727313995361328125, 1.82988107204437255859375, 1.08336222171783447265625, 1.9562129974365234375, 1.8626759052276611328125, 1.7588589191436767578125, 1.37124347686767578125, 1.8892424106597900390625, 1.10178935527801513671875, 1.62590777873992919921875, 1.01192760467529296875, 1.8654873371124267578125, 1.45067536830902099609375, 1.2816364765167236328125, 1.72168529033660888671875, 1.33943843841552734375, 1.47069704532623291015625, 1.852777004241943359375, 1.084706783294677734375, 1.772178173065185546875, 1.290356159210205078125, 1.89062154293060302734375, 1.1390397548675537109375, 1.15481841564178466796875, 1.5662310123443603515625, 1.2694606781005859375, 1.71252715587615966796875, 1.28193747997283935546875, 1.1939132213592529296875, 1.83502042293548583984375, 1.5087440013885498046875, 1.77501833438873291015625, 1.76894557476043701171875, 1.802899837493896484375, 1.94293534755706787109375, 1.85588562488555908203125, 1.79775989055633544921875, 1.90700852870941162109375, 1.72795355319976806640625, 1.87014329433441162109375, 1.65861380100250244140625, 1.29800426959991455078125, 1.2101962566375732421875, 1.560612201690673828125, 1.3125286102294921875, 1.191730022430419921875, 1.45554316043853759765625, 1.0907671451568603515625, 1.7642271518707275390625},
{ 1.08529388904571533203125, 1.8181750774383544921875, 1.2730705738067626953125, 1.817297458648681640625, 1.862105846405029296875, 1.81793212890625, 1.31399631500244140625, 1.64269077777862548828125, 1.02593100070953369140625, 1.156101226806640625, 1.28845536708831787109375, 1.70479261875152587890625, 1.37995374202728271484375, 1.9131495952606201171875, 1.98535025119781494140625, 1.5219361782073974609375, 1.12652873992919921875, 1.95738637447357177734375, 1.79197180271148681640625, 1.31826555728912353515625, 1.45311772823333740234375, 1.46839964389801025390625, 1.6549370288848876953125, 1.9221727848052978515625, 1.86822736263275146484375, 1.21049463748931884765625, 1.7911269664764404296875, 1.41473543643951416015625, 1.2873470783233642578125, 1.55613076686859130859375, 1.14862346649169921875, 1.52815425395965576171875, 1.86888587474822998046875, 1.25935924053192138671875, 1.61764705181121826171875, 1.7941901683807373046875, 1.60011017322540283203125, 1.9792606830596923828125, 1.99149477481842041015625, 1.44260251522064208984375, 1.6330816745758056640625, 1.5533821582794189453125, 1.67747700214385986328125, 1.0495860576629638671875, 1.37059414386749267578125, 1.021175384521484375, 1.1578552722930908203125, 1.93620860576629638671875, 1.3021113872528076171875, 1.397433757781982421875, 1.2007801532745361328125, 1.3168485164642333984375, 1.5897045135498046875, 1.1957299709320068359375, 1.82122802734375, 1.197632312774658203125, 1.40398991107940673828125, 1.70185363292694091796875, 1.99193894863128662109375, 1.02487170696258544921875, 1.01006603240966796875, 1.99724829196929931640625, 1.10435450077056884765625, 1.0835018157958984375, 1.603451251983642578125, 1.73244965076446533203125, 1.17955458164215087890625, 1.64551818370819091796875, 1.89602172374725341796875, 1.65052258968353271484375, 1.82919538021087646484375, 1.868414402008056640625, 1.4519481658935546875, 1.86049878597259521484375, 1.9664466381072998046875, 1.44361972808837890625, 1.7736337184906005859375, 1.86081421375274658203125, 1.26692962646484375, 1.99493610858917236328125, 1.13765180110931396484375, 1.3127467632293701171875, 1.3796539306640625, 1.2269763946533203125, 1.1806828975677490234375, 1.56385326385498046875, 1.88795530796051025390625, 1.82360136508941650390625, 1.2354524135589599609375, 1.9214076995849609375, 1.02043354511260986328125, 1.0963573455810546875, 1.41666853427886962890625, 1.6758382320404052734375, 1.11188924312591552734375, 1.3829138278961181640625, 1.4569590091705322265625, 1.8741648197174072265625, 1.8142616748809814453125, 1.19550049304962158203125},
{ 1.84343683719635009765625, 1.05756664276123046875, 1.1193454265594482421875, 1.40049898624420166015625, 1.46417009830474853515625, 1.760833263397216796875, 1.46111214160919189453125, 1.882041454315185546875, 1.19378507137298583984375, 1.29304182529449462890625, 1.6473371982574462890625, 1.30111896991729736328125, 1.84004390239715576171875, 1.68406164646148681640625, 1.37286770343780517578125, 1.26902139186859130859375, 1.08448803424835205078125, 1.58558785915374755859375, 1.49929893016815185546875, 1.780583858489990234375, 1.7558758258819580078125, 1.9820792675018310546875, 1.7034113407135009765625, 1.30012357234954833984375, 1.85361957550048828125, 1.65169620513916015625, 1.87560880184173583984375, 1.59737765789031982421875, 1.321223735809326171875, 1.3772373199462890625, 1.2683556079864501953125, 1.3334410190582275390625, 1.5697219371795654296875, 1.9070775508880615234375, 1.39461410045623779296875, 1.39670312404632568359375, 1.7511146068572998046875, 1.66610538959503173828125, 1.67628228664398193359375, 1.98878586292266845703125, 1.781806468963623046875, 1.21666085720062255859375, 1.842630863189697265625, 1.4604814052581787109375, 1.11604416370391845703125, 1.46947228908538818359375, 1.07874143123626708984375, 1.89768898487091064453125, 1.26935327053070068359375, 1.6445941925048828125, 1.92394351959228515625, 1.45735275745391845703125, 1.09197652339935302734375, 1.982345104217529296875, 1.92025220394134521484375, 1.453399658203125, 1.79231083393096923828125, 1.2042443752288818359375, 1.01080572605133056640625, 1.19267618656158447265625, 1.71034491062164306640625, 1.72395002841949462890625, 1.688302516937255859375, 1.56088626384735107421875, 1.8410968780517578125, 1.60819661617279052734375, 1.89343941211700439453125, 1.35852909088134765625, 1.108051300048828125, 1.28773200511932373046875, 1.663348674774169921875, 1.38683593273162841796875, 1.3865973949432373046875, 1.0182552337646484375, 1.53003561496734619140625, 1.283708095550537109375, 1.2774660587310791015625, 1.0913543701171875, 1.668816089630126953125, 1.1096541881561279296875, 1.630167484283447265625, 1.7954432964324951171875, 1.7967541217803955078125, 1.68372809886932373046875, 1.81642878055572509765625, 1.12669956684112548828125, 1.82109892368316650390625, 1.6694657802581787109375, 1.75363099575042724609375, 1.25000226497650146484375, 1.2377231121063232421875, 1.4108231067657470703125, 1.67824733257293701171875, 1.70986878871917724609375, 1.27955973148345947265625, 1.51811373233795166015625, 1.66928017139434814453125, 1.39139282703399658203125, 1.8150398731231689453125, 1.2039458751678466796875},
{ 1.231181621551513671875, 1.9965302944183349609375, 1.369160175323486328125, 1.76987636089324951171875, 1.6782939434051513671875, 1.65877044200897216796875, 1.43876755237579345703125, 1.461028575897216796875, 1.9051768779754638671875, 1.4673106670379638671875, 1.947885990142822265625, 1.6786496639251708984375, 1.76860368251800537109375, 1.81694924831390380859375, 1.877678394317626953125, 1.8159511089324951171875, 1.52061164379119873046875, 1.4801700115203857421875, 1.74129045009613037109375, 1.999298572540283203125, 1.26943886280059814453125, 1.00557994842529296875, 1.41978740692138671875, 1.86164951324462890625, 1.1904621124267578125, 1.86634624004364013671875, 1.7480919361114501953125, 1.06599080562591552734375, 1.4871346950531005859375, 1.358634471893310546875, 1.85092198848724365234375, 1.57877576351165771484375, 1.1019232273101806640625, 1.25004565715789794921875, 1.2287275791168212890625, 1.69336235523223876953125, 1.17724549770355224609375, 1.17805385589599609375, 1.59362876415252685546875, 1.80345022678375244140625, 1.26640832424163818359375, 1.79844367504119873046875, 1.45535290241241455078125, 1.92651832103729248046875, 1.29454433917999267578125, 1.68374788761138916015625, 1.4571726322174072265625, 1.9772624969482421875, 1.269549846649169921875, 1.97168445587158203125, 1.46184265613555908203125, 1.7910325527191162109375, 1.7430226802825927734375, 1.76359474658966064453125, 1.38753759860992431640625, 1.8972704410552978515625, 1.0211989879608154296875, 1.27288055419921875, 1.79378986358642578125, 1.042947292327880859375, 1.125891208648681640625, 1.72344172000885009765625, 1.21742641925811767578125, 1.466001033782958984375, 1.50542533397674560546875, 1.99811375141143798828125, 1.25850665569305419921875, 1.9187738895416259765625, 1.49557888507843017578125, 1.0371048450469970703125, 1.416260242462158203125, 1.44144999980926513671875, 1.53051769733428955078125, 1.98643410205841064453125, 1.67502391338348388671875, 1.88549244403839111328125, 1.1037337779998779296875, 1.0963685512542724609375, 1.84017932415008544921875, 1.18708145618438720703125, 1.4789831638336181640625, 1.36986076831817626953125, 1.6240909099578857421875, 1.39055144786834716796875, 1.151222705841064453125, 1.96098649501800537109375, 1.48204267024993896484375, 1.42182862758636474609375, 1.05754792690277099609375, 1.3233816623687744140625, 1.19817602634429931640625, 1.6118686199188232421875, 1.53813087940216064453125, 1.10868060588836669921875, 1.2214276790618896484375, 1.9700934886932373046875, 1.04715692996978759765625, 1.8149530887603759765625, 1.75146639347076416015625, 1.207829952239990234375},
{ 1.18514192104339599609375, 1.5746309757232666015625, 1.51174640655517578125, 1.0529735088348388671875, 1.3555004596710205078125, 1.649867534637451171875, 1.0672905445098876953125, 1.926640987396240234375, 1.7540302276611328125, 1.44466745853424072265625, 1.33212697505950927734375, 1.25438010692596435546875, 1.74891793727874755859375, 1.021004199981689453125, 1.05957424640655517578125, 1.97450745105743408203125, 1.046973705291748046875, 1.8712711334228515625, 1.07204306125640869140625, 1.15497791767120361328125, 1.84206807613372802734375, 1.50421941280364990234375, 1.78447329998016357421875, 1.95432269573211669921875, 1.71356964111328125, 1.780894756317138671875, 1.47777163982391357421875, 1.3325865268707275390625, 1.274782657623291015625, 1.0005753040313720703125, 1.32224905490875244140625, 1.512265682220458984375, 1.57138407230377197265625, 1.73670947551727294921875, 1.1510584354400634765625, 1.189244747161865234375, 1.229861736297607421875, 1.4228527545928955078125, 1.983631610870361328125, 1.49373447895050048828125, 1.35595142841339111328125, 1.6886055469512939453125, 1.299117565155029296875, 1.70120966434478759765625, 1.183074474334716796875, 1.44555103778839111328125, 1.0598194599151611328125, 1.69334590435028076171875, 1.4707753658294677734375, 1.7231919765472412109375, 1.4846322536468505859375, 1.1689574718475341796875, 1.65315878391265869140625, 1.2548885345458984375, 1.57248032093048095703125, 1.604935169219970703125, 1.7373278141021728515625, 1.81379616260528564453125, 1.37575447559356689453125, 1.96718311309814453125, 1.95182096958160400390625, 1.29880237579345703125, 1.02375018596649169921875, 1.17155659198760986328125, 1.1450498104095458984375, 1.57046473026275634765625, 1.49610459804534912109375, 1.29479992389678955078125, 1.93373644351959228515625, 1.03694808483123779296875, 1.14623415470123291015625, 1.53548324108123779296875, 1.60135114192962646484375, 1.98996257781982421875, 1.9747722148895263671875, 1.9249403476715087890625, 1.7465493679046630859375, 1.69070041179656982421875, 1.653006076812744140625, 1.788206577301025390625, 1.68160998821258544921875, 1.20577371120452880859375, 1.29631519317626953125, 1.954955577850341796875, 1.5808722972869873046875, 1.9931523799896240234375, 1.9876081943511962890625, 1.7204372882843017578125, 1.37917363643646240234375, 1.23810088634490966796875, 1.0507605075836181640625, 1.55641520023345947265625, 1.42028701305389404296875, 1.93911612033843994140625, 1.07405185699462890625, 1.57210433483123779296875, 1.855358123779296875, 1.7438652515411376953125, 1.68360388278961181640625, 1.72510802745819091796875},
{ 1.53512251377105712890625, 1.06681716442108154296875, 1.782355785369873046875, 1.189447879791259765625, 1.76670706272125244140625, 1.24580943584442138671875, 1.03104114532470703125, 1.51356112957000732421875, 1.549420833587646484375, 1.10085260868072509765625, 1.7395584583282470703125, 1.12869656085968017578125, 1.48698532581329345703125, 1.14381039142608642578125, 1.36844074726104736328125, 1.44942760467529296875, 1.26197946071624755859375, 1.041575908660888671875, 1.53129756450653076171875, 1.83832609653472900390625, 1.971777439117431640625, 1.889508724212646484375, 1.70575177669525146484375, 1.25439929962158203125, 1.21448552608489990234375, 1.2348730564117431640625, 1.694377422332763671875, 1.65152752399444580078125, 1.92488002777099609375, 1.8502748012542724609375, 1.835637569427490234375, 1.1269016265869140625, 1.9603445529937744140625, 1.257099151611328125, 1.9648211002349853515625, 1.8194606304168701171875, 1.43680799007415771484375, 1.99894821643829345703125, 1.12498056888580322265625, 1.55832874774932861328125, 1.8146812915802001953125, 1.66507804393768310546875, 1.02787005901336669921875, 1.2612535953521728515625, 1.7347953319549560546875, 1.66383683681488037109375, 1.26488196849822998046875, 1.08304321765899658203125, 1.60433876514434814453125, 1.74610197544097900390625, 1.26798498630523681640625, 1.3140037059783935546875, 1.9327948093414306640625, 1.27871763706207275390625, 1.02066135406494140625, 1.0283768177032470703125, 1.4178791046142578125, 1.26793229579925537109375, 1.5188448429107666015625, 1.48277699947357177734375, 1.78147757053375244140625, 1.13283634185791015625, 1.9818575382232666015625, 1.2646296024322509765625, 1.35558319091796875, 1.2287991046905517578125, 1.81334769725799560546875, 1.19060790538787841796875, 1.4182338714599609375, 1.1209070682525634765625, 1.31222760677337646484375, 1.9550707340240478515625, 1.27945029735565185546875, 1.6074008941650390625, 1.13361036777496337890625, 1.528500080108642578125, 1.117172718048095703125, 1.493113040924072265625, 1.499747753143310546875, 1.30593812465667724609375, 1.5631988048553466796875, 1.11290538311004638671875, 1.1609680652618408203125, 1.00542545318603515625, 1.03912150859832763671875, 1.60510623455047607421875, 1.1066129207611083984375, 1.31643807888031005859375, 1.8422658443450927734375, 1.93494856357574462890625, 1.02597510814666748046875, 1.298325061798095703125, 1.98162686824798583984375, 1.66800701618194580078125, 1.51923644542694091796875, 1.52874600887298583984375, 1.76380693912506103515625, 1.49363553524017333984375, 1.05840456485748291015625, 1.00210869312286376953125},
{ 1.498404979705810546875, 1.69825077056884765625, 1.778006076812744140625, 1.73669683933258056640625, 1.1895401477813720703125, 1.5372478961944580078125, 1.37965452671051025390625, 1.80208599567413330078125, 1.2683579921722412109375, 1.9285070896148681640625, 1.942330837249755859375, 1.681528568267822265625, 1.15370464324951171875, 1.440715789794921875, 1.11180984973907470703125, 1.20872652530670166015625, 1.25539302825927734375, 1.56907498836517333984375, 1.69280207157135009765625, 1.78061425685882568359375, 1.9976403713226318359375, 1.19623720645904541015625, 1.0473906993865966796875, 1.1932964324951171875, 1.59250581264495849609375, 1.80324327945709228515625, 1.24346983432769775390625, 1.22798478603363037109375, 1.56332743167877197265625, 1.4304602146148681640625, 1.9531815052032470703125, 1.98693597316741943359375, 1.01816046237945556640625, 1.3885190486907958984375, 1.10135328769683837890625, 1.9793894290924072265625, 1.67321431636810302734375, 1.7192516326904296875, 1.26393592357635498046875, 1.95750415325164794921875, 1.62629020214080810546875, 1.40662848949432373046875, 1.8164403438568115234375, 1.50229656696319580078125, 1.8802187442779541015625, 1.33769667148590087890625, 1.83237588405609130859375, 1.3595783710479736328125, 1.6162970066070556640625, 1.01351654529571533203125, 1.7316873073577880859375, 1.52589333057403564453125, 1.21772670745849609375, 1.0100996494293212890625, 1.67919242382049560546875, 1.0844552516937255859375, 1.043051242828369140625, 1.1893465518951416015625, 1.7330195903778076171875, 1.79108524322509765625, 1.9495933055877685546875, 1.65998363494873046875, 1.743045330047607421875, 1.41014969348907470703125, 1.56689250469207763671875, 1.48850095272064208984375, 1.99933135509490966796875, 1.8004970550537109375, 1.32014238834381103515625, 1.16009008884429931640625, 1.63056278228759765625, 1.751395702362060546875, 1.20362865924835205078125, 1.78958094120025634765625, 1.75248515605926513671875, 1.56847178936004638671875, 1.30416619777679443359375, 1.08237969875335693359375, 1.366342067718505859375, 1.40964603424072265625, 1.07453668117523193359375, 1.0454061031341552734375, 1.007312774658203125, 1.3710715770721435546875, 1.35692608356475830078125, 1.44803142547607421875, 1.14294922351837158203125, 1.32307183742523193359375, 1.1563622951507568359375, 1.03301525115966796875, 1.32161426544189453125, 1.4960772991180419921875, 1.1641521453857421875, 1.47744333744049072265625, 1.07091867923736572265625, 1.8165633678436279296875, 1.03131961822509765625, 1.10366547107696533203125, 1.54615879058837890625, 1.99298822879791259765625},
{ 1.34023225307464599609375, 1.9287540912628173828125, 1.3517296314239501953125, 1.6370918750762939453125, 1.9328329563140869140625, 1.57468426227569580078125, 1.423022747039794921875, 1.43726599216461181640625, 1.9052333831787109375, 1.9129273891448974609375, 1.27689802646636962890625, 1.01683104038238525390625, 1.270212650299072265625, 1.09389698505401611328125, 1.609117984771728515625, 1.17695748805999755859375, 1.49050104618072509765625, 1.3878796100616455078125, 1.57711517810821533203125, 1.06915748119354248046875, 1.68971788883209228515625, 1.33347237110137939453125, 1.38592946529388427734375, 1.71872246265411376953125, 1.61330831050872802734375, 1.63602054119110107421875, 1.624145984649658203125, 1.2981607913970947265625, 1.3394811153411865234375, 1.8160545825958251953125, 1.34983193874359130859375, 1.150634765625, 1.740146636962890625, 1.60772836208343505859375, 1.92647445201873779296875, 1.563398838043212890625, 1.69185352325439453125, 1.1072561740875244140625, 1.6089184284210205078125, 1.2912366390228271484375, 1.0367267131805419921875, 1.67135035991668701171875, 1.87930333614349365234375, 1.8298985958099365234375, 1.29340469837188720703125, 1.56565892696380615234375, 1.53300106525421142578125, 1.439539432525634765625, 1.11797749996185302734375, 1.363202571868896484375, 1.5145537853240966796875, 1.91815578937530517578125, 1.51492345333099365234375, 1.09281289577484130859375, 1.50361073017120361328125, 1.12502324581146240234375, 1.79804706573486328125, 1.137569427490234375, 1.25086605548858642578125, 1.25413453578948974609375, 1.301416873931884765625, 1.88323724269866943359375, 1.66399669647216796875, 1.85763657093048095703125, 1.8403022289276123046875, 1.11670458316802978515625, 1.64359915256500244140625, 1.61926805973052978515625, 1.92211115360260009765625, 1.174419879913330078125, 1.66912734508514404296875, 1.87779712677001953125, 1.70732820034027099609375, 1.84082996845245361328125, 1.134830474853515625, 1.90045833587646484375, 1.72045123577117919921875, 1.996817111968994140625, 1.43568980693817138671875, 1.9063909053802490234375, 1.31092929840087890625, 1.01813662052154541015625, 1.803356647491455078125, 1.8400757312774658203125, 1.86410045623779296875, 1.923854351043701171875, 1.8920896053314208984375, 1.894773006439208984375, 1.7621285915374755859375, 1.2747843265533447265625, 1.11469256877899169921875, 1.78595983982086181640625, 1.09494125843048095703125, 1.82192575931549072265625, 1.7284514904022216796875, 1.77476727962493896484375, 1.12116754055023193359375, 1.9049012660980224609375, 1.6710722446441650390625, 1.44141852855682373046875},
{ 1.60039389133453369140625, 1.14661848545074462890625, 1.20866596698760986328125, 1.14750683307647705078125, 1.6205847263336181640625, 1.9614484310150146484375, 1.61522877216339111328125, 1.156820774078369140625, 1.9615905284881591796875, 1.610152721405029296875, 1.33923041820526123046875, 1.0498254299163818359375, 1.30190074443817138671875, 1.11149227619171142578125, 1.971636295318603515625, 1.0927178859710693359375, 1.1508157253265380859375, 1.594335079193115234375, 1.5396907329559326171875, 1.23602139949798583984375, 1.74688374996185302734375, 1.633594036102294921875, 1.7803552150726318359375, 1.82552325725555419921875, 1.7063386440277099609375, 1.33616483211517333984375, 1.163745403289794921875, 1.06321156024932861328125, 1.4215373992919921875, 1.1768627166748046875, 1.666568756103515625, 1.21821308135986328125, 1.20939719676971435546875, 1.5843603610992431640625, 1.29556214809417724609375, 1.5877311229705810546875, 1.209833621978759765625, 1.27712571620941162109375, 1.36092889308929443359375, 1.2079823017120361328125, 1.03419768810272216796875, 1.3493587970733642578125, 1.49977695941925048828125, 1.31513440608978271484375, 1.1637134552001953125, 1.10692965984344482421875, 1.44955599308013916015625, 1.55624425411224365234375, 1.09791553020477294921875, 1.65331566333770751953125, 1.57149493694305419921875, 1.95019447803497314453125, 1.25308668613433837890625, 1.2255394458770751953125, 1.12403964996337890625, 1.598631381988525390625, 1.61069488525390625, 1.28010571002960205078125, 1.2862899303436279296875, 1.1469027996063232421875, 1.11583149433135986328125, 1.32893908023834228515625, 1.9314377307891845703125, 1.9949948787689208984375, 1.82564830780029296875, 1.52532196044921875, 1.150204181671142578125, 1.258470058441162109375, 1.80779516696929931640625, 1.99983131885528564453125, 1.524277210235595703125, 1.47940433025360107421875, 1.78885757923126220703125, 1.94627654552459716796875, 1.1497490406036376953125, 1.08732521533966064453125, 1.5527937412261962890625, 1.457637310028076171875, 1.41055381298065185546875, 1.61014854907989501953125, 1.08937275409698486328125, 1.11200034618377685546875, 1.50190460681915283203125, 1.6351163387298583984375, 1.4926116466522216796875, 1.30849730968475341796875, 1.70373165607452392578125, 1.5197346210479736328125, 1.60921299457550048828125, 1.3532426357269287109375, 1.40411937236785888671875, 1.852710247039794921875, 1.43700253963470458984375, 1.29527032375335693359375, 1.87274396419525146484375, 1.66488873958587646484375, 1.2733662128448486328125, 1.51247179508209228515625, 1.7843110561370849609375, 1.39019215106964111328125},
{ 1.0475337505340576171875, 1.4919927120208740234375, 1.57655584812164306640625, 1.7997887134552001953125, 1.69387495517730712890625, 1.050865650177001953125, 1.3468663692474365234375, 1.41836011409759521484375, 1.8315842151641845703125, 1.9913482666015625, 1.6098992824554443359375, 1.4494059085845947265625, 1.013357639312744140625, 1.8426382541656494140625, 1.021255970001220703125, 1.16467761993408203125, 1.30043661594390869140625, 1.40615022182464599609375, 1.69430148601531982421875, 1.77611196041107177734375, 1.348544597625732421875, 1.77895271778106689453125, 1.66110241413116455078125, 1.834269046783447265625, 1.24382495880126953125, 1.12720644474029541015625, 1.08336365222930908203125, 1.37676942348480224609375, 1.08877885341644287109375, 1.20960128307342529296875, 1.21336638927459716796875, 1.82673168182373046875, 1.338201999664306640625, 1.65079391002655029296875, 1.1049053668975830078125, 1.641210079193115234375, 1.8851225376129150390625, 1.96484529972076416015625, 1.074226856231689453125, 1.70963156223297119140625, 1.89673888683319091796875, 1.3286583423614501953125, 1.910965442657470703125, 1.502233982086181640625, 1.4003565311431884765625, 1.105414867401123046875, 1.83908188343048095703125, 1.96850311756134033203125, 1.6193258762359619140625, 1.118013858795166015625, 1.22780096530914306640625, 1.185610294342041015625, 1.05898010730743408203125, 1.6725084781646728515625, 1.05254828929901123046875, 1.7568500041961669921875, 1.3425719738006591796875, 1.3315436840057373046875, 1.1058881282806396484375, 1.96007692813873291015625, 1.79721164703369140625, 1.43779385089874267578125, 1.958461284637451171875, 1.6461441516876220703125, 1.78980457782745361328125, 1.38739979267120361328125, 1.669921875, 1.88734018802642822265625, 1.81298828125, 1.65340697765350341796875, 1.24987518787384033203125, 1.3758265972137451171875, 1.32107031345367431640625, 1.55920255184173583984375, 1.86881554126739501953125, 1.57207548618316650390625, 1.31596553325653076171875, 1.80195295810699462890625, 1.81906306743621826171875, 1.60330712795257568359375, 1.6831340789794921875, 1.7260415554046630859375, 1.2257015705108642578125, 1.9119269847869873046875, 1.27751815319061279296875, 1.346505641937255859375, 1.507516384124755859375, 1.65396392345428466796875, 1.75947988033294677734375, 1.12247467041015625, 1.587931156158447265625, 1.8475072383880615234375, 1.1807391643524169921875, 1.4806072711944580078125, 1.8559458255767822265625, 1.27114427089691162109375, 1.32031047344207763671875, 1.0885288715362548828125, 1.87707388401031494140625, 1.11239802837371826171875},
{ 1.878269195556640625, 1.85428035259246826171875, 1.36616420745849609375, 1.7725470066070556640625, 1.81969988346099853515625, 1.83891856670379638671875, 1.98314940929412841796875, 1.80315363407135009765625, 1.44397151470184326171875, 1.691668033599853515625, 1.768308162689208984375, 1.90982973575592041015625, 1.11695182323455810546875, 1.7934722900390625, 1.02928054332733154296875, 1.797127246856689453125, 1.06266272068023681640625, 1.5064756870269775390625, 1.97482979297637939453125, 1.66251766681671142578125, 1.13671791553497314453125, 1.38496124744415283203125, 1.8632793426513671875, 1.78232991695404052734375, 1.349760532379150390625, 1.13628852367401123046875, 1.90095102787017822265625, 1.847688198089599609375, 1.140900135040283203125, 1.33183038234710693359375, 1.89060211181640625, 1.05044877529144287109375, 1.4011509418487548828125, 1.867910861968994140625, 1.62986290454864501953125, 1.9191379547119140625, 1.2468688488006591796875, 1.176743030548095703125, 1.05967426300048828125, 1.9048893451690673828125, 1.54318904876708984375, 1.1873657703399658203125, 1.1627252101898193359375, 1.71738183498382568359375, 1.17746365070343017578125, 1.03658163547515869140625, 1.61188995838165283203125, 1.4107763767242431640625, 1.08269870281219482421875, 1.52989470958709716796875, 1.1686661243438720703125, 1.2196538448333740234375, 1.01099240779876708984375, 1.35244739055633544921875, 1.83161175251007080078125, 1.14495289325714111328125, 1.05697214603424072265625, 1.02995836734771728515625, 1.7347829341888427734375, 1.2899067401885986328125, 1.93123209476470947265625, 1.639659881591796875, 1.7961714267730712890625, 1.94598102569580078125, 1.98377072811126708984375, 1.2712357044219970703125, 1.11614167690277099609375, 1.42881166934967041015625, 1.977428436279296875, 1.2377579212188720703125, 1.1258690357208251953125, 1.66414165496826171875, 1.6113245487213134765625, 1.03662478923797607421875, 1.48577678203582763671875, 1.52375888824462890625, 1.7942955493927001953125, 1.06049859523773193359375, 1.7339737415313720703125, 1.91143405437469482421875, 1.66833209991455078125, 1.05824244022369384765625, 1.684691905975341796875, 1.598857402801513671875, 1.382016658782958984375, 1.345858097076416015625, 1.57672345638275146484375, 1.8115766048431396484375, 1.61396110057830810546875, 1.7674238681793212890625, 1.971858978271484375, 1.56493461132049560546875, 1.84624373912811279296875, 1.4060313701629638671875, 1.40332448482513427734375, 1.7500064373016357421875, 1.38784754276275634765625, 1.04472339153289794921875, 1.774219036102294921875, 1.96953713893890380859375},
{ 1.37743175029754638671875, 1.50595223903656005859375, 1.12387907505035400390625, 1.16009652614593505859375, 1.96991407871246337890625, 1.43668186664581298828125, 1.7469298839569091796875, 1.854166507720947265625, 1.970691680908203125, 1.469750881195068359375, 1.09206926822662353515625, 1.0812819004058837890625, 1.5719873905181884765625, 1.97212564945220947265625, 1.96809685230255126953125, 1.8865096569061279296875, 1.2206623554229736328125, 1.922832965850830078125, 1.325170040130615234375, 1.0324459075927734375, 1.57915401458740234375, 1.81139767169952392578125, 1.59074079990386962890625, 1.2726535797119140625, 1.23641335964202880859375, 1.28628027439117431640625, 1.75549352169036865234375, 1.3750998973846435546875, 1.16884291172027587890625, 1.5533139705657958984375, 1.20928287506103515625, 1.89559400081634521484375, 1.95123350620269775390625, 1.52414286136627197265625, 1.32707059383392333984375, 1.70122396945953369140625, 1.7177021503448486328125, 1.7146589756011962890625, 1.80486333370208740234375, 1.24379503726959228515625, 1.8726298809051513671875, 1.89343988895416259765625, 1.7456505298614501953125, 1.58326661586761474609375, 1.55159854888916015625, 1.48018634319305419921875, 1.49534118175506591796875, 1.16118991374969482421875, 1.83232867717742919921875, 1.6941592693328857421875, 1.22870171070098876953125, 1.3241455554962158203125, 1.69561731815338134765625, 1.45261800289154052734375, 1.2852938175201416015625, 1.5971806049346923828125, 1.73627483844757080078125, 1.0192573070526123046875, 1.25541126728057861328125, 1.7072467803955078125, 1.6240627765655517578125, 1.40264499187469482421875, 1.8160178661346435546875, 1.356637477874755859375, 1.3146317005157470703125, 1.5046594142913818359375, 1.316684722900390625, 1.7464253902435302734375, 1.0104579925537109375, 1.018927097320556640625, 1.11552822589874267578125, 1.84990012645721435546875, 1.87178170680999755859375, 1.07925975322723388671875, 1.66514682769775390625, 1.43600523471832275390625, 1.47754442691802978515625, 1.658092498779296875, 1.348558902740478515625, 1.84277641773223876953125, 1.03632605075836181640625, 1.71492087841033935546875, 1.06514060497283935546875, 1.50077855587005615234375, 1.34728276729583740234375, 1.094738483428955078125, 1.566562652587890625, 1.20654332637786865234375, 1.5110843181610107421875, 1.17647457122802734375, 1.5427281856536865234375, 1.14600670337677001953125, 1.3908519744873046875, 1.27143108844757080078125, 1.45771062374114990234375, 1.6679465770721435546875, 1.8230953216552734375, 1.77172088623046875, 1.1356904506683349609375, 1.80741977691650390625},
{ 1.04870474338531494140625, 1.0968930721282958984375, 1.559200286865234375, 1.07361614704132080078125, 1.101428985595703125, 1.64352667331695556640625, 1.9012162685394287109375, 1.83029401302337646484375, 1.9550631046295166015625, 1.6957190036773681640625, 1.5679876804351806640625, 1.6881229877471923828125, 1.80933678150177001953125, 1.377455234527587890625, 1.57406389713287353515625, 1.76461887359619140625, 1.9369781017303466796875, 1.35251581668853759765625, 1.48746073246002197265625, 1.166310787200927734375, 1.33215057849884033203125, 1.910413265228271484375, 1.45309865474700927734375, 1.44967901706695556640625, 1.1088907718658447265625, 1.80233013629913330078125, 1.96623980998992919921875, 1.83209288120269775390625, 1.64954578876495361328125, 1.82705628871917724609375, 1.39592564105987548828125, 1.15274751186370849609375, 1.50321090221405029296875, 1.166926860809326171875, 1.2584145069122314453125, 1.5836017131805419921875, 1.0341665744781494140625, 1.47375905513763427734375, 1.24061870574951171875, 1.09031581878662109375, 1.82031667232513427734375, 1.70478999614715576171875, 1.973542690277099609375, 1.6431884765625, 1.8016254901885986328125, 1.7086145877838134765625, 1.5557200908660888671875, 1.1780946254730224609375, 1.17855536937713623046875, 1.56112229824066162109375, 1.8266513347625732421875, 1.30742275714874267578125, 1.06050431728363037109375, 1.65143501758575439453125, 1.390241146087646484375, 1.78101289272308349609375, 1.864243030548095703125, 1.5178449153900146484375, 1.38823616504669189453125, 1.69709336757659912109375, 1.46235311031341552734375, 1.43375122547149658203125, 1.02366197109222412109375, 1.46321868896484375, 1.08166408538818359375, 1.74359810352325439453125, 1.83426129817962646484375, 1.507207393646240234375, 1.95169103145599365234375, 1.9488124847412109375, 1.71593105792999267578125, 1.7380788326263427734375, 1.70307219028472900390625, 1.54374086856842041015625, 1.69615995883941650390625, 1.75699102878570556640625, 1.516005992889404296875, 1.60158717632293701171875, 1.45746612548828125, 1.81817853450775146484375, 1.01868927478790283203125, 1.11035060882568359375, 1.6108341217041015625, 1.53988921642303466796875, 1.935754299163818359375, 1.05876243114471435546875, 1.7191531658172607421875, 1.365322113037109375, 1.48670637607574462890625, 1.272223949432373046875, 1.0706541538238525390625, 1.7735652923583984375, 1.534361362457275390625, 1.9987437725067138671875, 1.202347278594970703125, 1.2405326366424560546875, 1.4832832813262939453125, 1.24487578868865966796875, 1.17345964908599853515625, 1.94990170001983642578125},
{ 1.8616559505462646484375, 1.58887231349945068359375, 1.25405156612396240234375, 1.0525481700897216796875, 1.3805401325225830078125, 1.37255847454071044921875, 1.88499963283538818359375, 1.77669680118560791015625, 1.59934198856353759765625, 1.29102051258087158203125, 1.91533958911895751953125, 1.6565983295440673828125, 1.9181697368621826171875, 1.22672760486602783203125, 1.469178676605224609375, 1.5321195125579833984375, 1.425364017486572265625, 1.20155322551727294921875, 1.1830756664276123046875, 1.92549979686737060546875, 1.73343575000762939453125, 1.150212764739990234375, 1.4169776439666748046875, 1.1897895336151123046875, 1.565002918243408203125, 1.4437005519866943359375, 1.21515786647796630859375, 1.40728700160980224609375, 1.088728427886962890625, 1.1627280712127685546875, 1.01715362071990966796875, 1.0379760265350341796875, 1.00525796413421630859375, 1.121160984039306640625, 1.11870300769805908203125, 1.31796360015869140625, 1.38315677642822265625, 1.63945674896240234375, 1.88268280029296875, 1.40791690349578857421875, 1.2448475360870361328125, 1.06810224056243896484375, 1.7000463008880615234375, 1.291501522064208984375, 1.90254819393157958984375, 1.06105077266693115234375, 1.7007601261138916015625, 1.42381846904754638671875, 1.0442087650299072265625, 1.59916031360626220703125, 1.21474206447601318359375, 1.12984180450439453125, 1.56944930553436279296875, 1.76363050937652587890625, 1.98279893398284912109375, 1.75285613536834716796875, 1.17549717426300048828125, 1.25944030284881591796875, 1.11756336688995361328125, 1.55289423465728759765625, 1.6931250095367431640625, 1.688785552978515625, 1.814431667327880859375, 1.35517406463623046875, 1.17258751392364501953125, 1.5745160579681396484375, 1.8125016689300537109375, 1.94853699207305908203125, 1.71955931186676025390625, 1.1335737705230712890625, 1.6055095195770263671875, 1.2338848114013671875, 1.08107280731201171875, 1.800429821014404296875, 1.402767658233642578125, 1.12261736392974853515625, 1.98145496845245361328125, 1.500522136688232421875, 1.84010207653045654296875, 1.18507015705108642578125, 1.20826518535614013671875, 1.6736929416656494140625, 1.44079029560089111328125, 1.0489513874053955078125, 1.448233127593994140625, 1.04762637615203857421875, 1.82649815082550048828125, 1.54778015613555908203125, 1.87319552898406982421875, 1.16128551959991455078125, 1.6782176494598388671875, 1.6193234920501708984375, 1.47603404521942138671875, 1.63835060596466064453125, 1.4472048282623291015625, 1.95403397083282470703125, 1.1566131114959716796875, 1.21065604686737060546875, 1.815916538238525390625, 1.39348733425140380859375},
{ 1.49162805080413818359375, 1.90894830226898193359375, 1.0788195133209228515625, 1.65098631381988525390625, 1.4997222423553466796875, 1.25397217273712158203125, 1.34916484355926513671875, 1.0728585720062255859375, 1.9318606853485107421875, 1.49267351627349853515625, 1.3900930881500244140625, 1.21050226688385009765625, 1.186870098114013671875, 1.8416888713836669921875, 1.63204705715179443359375, 1.0377562046051025390625, 1.13891887664794921875, 1.3035438060760498046875, 1.8987801074981689453125, 1.701066493988037109375, 1.6609547138214111328125, 1.627589702606201171875, 1.30579376220703125, 1.85542452335357666015625, 1.89814221858978271484375, 1.02094161510467529296875, 1.90877473354339599609375, 1.750303745269775390625, 1.29129993915557861328125, 1.60941612720489501953125, 1.102033138275146484375, 1.0655975341796875, 1.35033857822418212890625, 1.64846813678741455078125, 1.76693952083587646484375, 1.49755704402923583984375, 1.17769801616668701171875, 1.48412883281707763671875, 1.1703624725341796875, 1.094727993011474609375, 1.74178493022918701171875, 1.2639429569244384765625, 1.613106250762939453125, 1.3438885211944580078125, 1.90041029453277587890625, 1.397906780242919921875, 1.82834780216217041015625, 1.00598704814910888671875, 1.1742269992828369140625, 1.769404888153076171875, 1.130074977874755859375, 1.7020790576934814453125, 1.270166873931884765625, 1.69614803791046142578125, 1.31152355670928955078125, 1.2492649555206298828125, 1.354878902435302734375, 1.64111101627349853515625, 1.293614864349365234375, 1.74662792682647705078125, 1.0781662464141845703125, 1.67346942424774169921875, 1.5233933925628662109375, 1.4111707210540771484375, 1.3464238643646240234375, 1.6795375347137451171875, 1.12246382236480712890625, 1.163753509521484375, 1.84607613086700439453125, 1.323706150054931640625, 1.7854292392730712890625, 1.96503174304962158203125, 1.31701385974884033203125, 1.75937938690185546875, 1.42832815647125244140625, 1.90139293670654296875, 1.57603251934051513671875, 1.08991253376007080078125, 1.5870721340179443359375, 1.02089464664459228515625, 1.29026925563812255859375, 1.57954990863800048828125, 1.56588327884674072265625, 1.91920173168182373046875, 1.50064051151275634765625, 1.61436164379119873046875, 1.33573186397552490234375, 1.07552433013916015625, 1.8952796459197998046875, 1.4131815433502197265625, 1.1827733516693115234375, 1.93855464458465576171875, 1.832973957061767578125, 1.488544940948486328125, 1.10678660869598388671875, 1.76240479946136474609375, 1.11660289764404296875, 1.857625484466552734375, 1.9696109294891357421875, 1.1925446987152099609375},
{ 1.0031731128692626953125, 1.39358365535736083984375, 1.60173881053924560546875, 1.0442659854888916015625, 1.58445131778717041015625, 1.40997779369354248046875, 1.17598402500152587890625, 1.97545528411865234375, 1.89817512035369873046875, 1.8574390411376953125, 1.7504475116729736328125, 1.62376463413238525390625, 1.08944785594940185546875, 1.53042399883270263671875, 1.39540350437164306640625, 1.86409461498260498046875, 1.112699031829833984375, 1.077637195587158203125, 1.75217115879058837890625, 1.40606296062469482421875, 1.44262218475341796875, 1.65046870708465576171875, 1.119052410125732421875, 1.81744158267974853515625, 1.5351116657257080078125, 1.30143177509307861328125, 1.28726875782012939453125, 1.29759418964385986328125, 1.03820049762725830078125, 1.13259983062744140625, 1.12689912319183349609375, 1.200913906097412109375, 1.75299823284149169921875, 1.19404470920562744140625, 1.922817707061767578125, 1.310260295867919921875, 1.34462773799896240234375, 1.13227367401123046875, 1.46063077449798583984375, 1.8603975772857666015625, 1.803163051605224609375, 1.58866703510284423828125, 1.86261463165283203125, 1.3114316463470458984375, 1.654567241668701171875, 1.3479156494140625, 1.1736528873443603515625, 1.8722476959228515625, 1.9216291904449462890625, 1.2364585399627685546875, 1.69717442989349365234375, 1.77394783496856689453125, 1.83490145206451416015625, 1.77091991901397705078125, 1.0810902118682861328125, 1.29328811168670654296875, 1.29363811016082763671875, 1.5565474033355712890625, 1.1537311077117919921875, 1.52611672878265380859375, 1.07673156261444091796875, 1.43564903736114501953125, 1.50978577136993408203125, 1.91081106662750244140625, 1.80365049839019775390625, 1.3860309123992919921875, 1.8462374210357666015625, 1.50171530246734619140625, 1.64537715911865234375, 1.1694347858428955078125, 1.04830169677734375, 1.99257791042327880859375, 1.7853453159332275390625, 1.72997510433197021484375, 1.02536451816558837890625, 1.48998928070068359375, 1.6303770542144775390625, 1.3425772190093994140625, 1.2969188690185546875, 1.0368187427520751953125, 1.77162063121795654296875, 1.51141440868377685546875, 1.328502655029296875, 1.8856527805328369140625, 1.69548833370208740234375, 1.6183454990386962890625, 1.61763656139373779296875, 1.5222320556640625, 1.24459326267242431640625, 1.321352481842041015625, 1.529760837554931640625, 1.438889026641845703125, 1.828687191009521484375, 1.70297753810882568359375, 1.8841731548309326171875, 1.65798556804656982421875, 1.3855984210968017578125, 1.16876125335693359375, 1.28996646404266357421875, 1.00534999370574951171875},
{ 1.09567964076995849609375, 1.2319657802581787109375, 1.13371527194976806640625, 1.82519042491912841796875, 1.230581760406494140625, 1.90666615962982177734375, 1.29615604877471923828125, 1.37234580516815185546875, 1.83862721920013427734375, 1.80816996097564697265625, 1.86952626705169677734375, 1.39314234256744384765625, 1.60172379016876220703125, 1.0641248226165771484375, 1.627896785736083984375, 1.12985134124755859375, 1.266964435577392578125, 1.52166044712066650390625, 1.7659924030303955078125, 1.8684456348419189453125, 1.04506552219390869140625, 1.58332645893096923828125, 1.6726300716400146484375, 1.1495363712310791015625, 1.758803844451904296875, 1.793030261993408203125, 1.45415592193603515625, 1.7293109893798828125, 1.74145424365997314453125, 1.17197382450103759765625, 1.20788288116455078125, 1.29047048091888427734375, 1.48522722721099853515625, 1.30459153652191162109375, 1.0455281734466552734375, 1.90316736698150634765625, 1.0397059917449951171875, 1.174488067626953125, 1.86665093898773193359375, 1.23594248294830322265625, 1.16028463840484619140625, 1.75037515163421630859375, 1.88208925724029541015625, 1.5166628360748291015625, 1.2066051959991455078125, 1.32200944423675537109375, 1.88739836215972900390625, 1.2434594631195068359375, 1.79099524021148681640625, 1.5861303806304931640625, 1.28628766536712646484375, 1.645664215087890625, 1.17690551280975341796875, 1.48239696025848388671875, 1.86405837535858154296875, 1.89474761486053466796875, 1.4273469448089599609375, 1.77932560443878173828125, 1.3110411167144775390625, 1.06525671482086181640625, 1.30332887172698974609375, 1.4102280139923095703125, 1.4960329532623291015625, 1.84575188159942626953125, 1.9122960567474365234375, 1.55914795398712158203125, 1.48973560333251953125, 1.9997446537017822265625, 1.10656630992889404296875, 1.4967992305755615234375, 1.338192462921142578125, 1.5766355991363525390625, 1.6317679882049560546875, 1.16650295257568359375, 1.5862262248992919921875, 1.87265110015869140625, 1.025277614593505859375, 1.52012550830841064453125, 1.55087649822235107421875, 1.14178121089935302734375, 1.26465690135955810546875, 1.604015350341796875, 1.34483683109283447265625, 1.05671751499176025390625, 1.16609096527099609375, 1.394940853118896484375, 1.64989292621612548828125, 1.91978991031646728515625, 1.53282535076141357421875, 1.38602817058563232421875, 1.24035966396331787109375, 1.62390458583831787109375, 1.053603649139404296875, 1.92269802093505859375, 1.25651872158050537109375, 1.3634812831878662109375, 1.9511051177978515625, 1.2886035442352294921875, 1.22805607318878173828125, 1.09539127349853515625},
{ 1.54156816005706787109375, 1.8474996089935302734375, 1.74989414215087890625, 1.57729625701904296875, 1.0995223522186279296875, 1.493656158447265625, 1.19157564640045166015625, 1.75695955753326416015625, 1.0764415264129638671875, 1.50504970550537109375, 1.93028557300567626953125, 1.76216793060302734375, 1.36828386783599853515625, 1.2033584117889404296875, 1.58207452297210693359375, 1.4618408679962158203125, 1.4889271259307861328125, 1.6668522357940673828125, 1.0801317691802978515625, 1.89945805072784423828125, 1.156106472015380859375, 1.25383055210113525390625, 1.635723114013671875, 1.1914975643157958984375, 1.62735235691070556640625, 1.87605917453765869140625, 1.449127674102783203125, 1.17587292194366455078125, 1.785927295684814453125, 1.02220857143402099609375, 1.17057573795318603515625, 1.8103706836700439453125, 1.97676384449005126953125, 1.53129088878631591796875, 1.11118662357330322265625, 1.32108795642852783203125, 1.59240186214447021484375, 1.11609756946563720703125, 1.20390546321868896484375, 1.10087001323699951171875, 1.408926486968994140625, 1.6366369724273681640625, 1.7144410610198974609375, 1.3577473163604736328125, 1.67190492153167724609375, 1.1235713958740234375, 1.7022037506103515625, 1.51337373256683349609375, 1.93232429027557373046875, 1.551655292510986328125, 1.23124217987060546875, 1.3514635562896728515625, 1.6325294971466064453125, 1.3631722927093505859375, 1.3311812877655029296875, 1.91622912883758544921875, 1.44216001033782958984375, 1.7413728237152099609375, 1.70815956592559814453125, 1.16081845760345458984375, 1.34408771991729736328125, 1.633911609649658203125, 1.20576703548431396484375, 1.345752239227294921875, 1.4703547954559326171875, 1.52628529071807861328125, 1.01598203182220458984375, 1.18736207485198974609375, 1.68811047077178955078125, 1.96526944637298583984375, 1.64010906219482421875, 1.7562274932861328125, 1.93554890155792236328125, 1.83235681056976318359375, 1.599716663360595703125, 1.12561357021331787109375, 1.30784702301025390625, 1.36719429492950439453125, 1.8975741863250732421875, 1.76990854740142822265625, 1.89310133457183837890625, 1.94102060794830322265625, 1.22858965396881103515625, 1.713060855865478515625, 1.35826575756072998046875, 1.58010387420654296875, 1.94074761867523193359375, 1.42701733112335205078125, 1.2850894927978515625, 1.23917865753173828125, 1.74604594707489013671875, 1.480160236358642578125, 1.25605380535125732421875, 1.8248841762542724609375, 1.18143367767333984375, 1.93574488162994384765625, 1.690310001373291015625, 1.9692013263702392578125, 1.81974887847900390625, 1.500337123870849609375},
{ 1.552890300750732421875, 1.2306554317474365234375, 1.4222509860992431640625, 1.07427775859832763671875, 1.97892820835113525390625, 1.69158089160919189453125, 1.13998568058013916015625, 1.0690791606903076171875, 1.19594609737396240234375, 1.64865434169769287109375, 1.6806638240814208984375, 1.5392267704010009765625, 1.47166717052459716796875, 1.92764317989349365234375, 1.80846846103668212890625, 1.87628424167633056640625, 1.91634380817413330078125, 1.69489109516143798828125, 1.9230806827545166015625, 1.0741097927093505859375, 1.75619518756866455078125, 1.168255329132080078125, 1.7081172466278076171875, 1.814794063568115234375, 1.35684478282928466796875, 1.0780446529388427734375, 1.52956759929656982421875, 1.30459797382354736328125, 1.996757984161376953125, 1.8779561519622802734375, 1.5842320919036865234375, 1.859889507293701171875, 1.3906791210174560546875, 1.70601308345794677734375, 1.79815900325775146484375, 1.243081569671630859375, 1.9630696773529052734375, 1.09550273418426513671875, 1.4750821590423583984375, 1.74856984615325927734375, 1.871545314788818359375, 1.43591320514678955078125, 1.694858551025390625, 1.038669586181640625, 1.7803134918212890625, 1.18387126922607421875, 1.46190536022186279296875, 1.7295534610748291015625, 1.38361108303070068359375, 1.8240802288055419921875, 1.603638172149658203125, 1.72718942165374755859375, 1.67914140224456787109375, 1.5802567005157470703125, 1.41890799999237060546875, 1.3132774829864501953125, 1.99151241779327392578125, 1.87606847286224365234375, 1.07643890380859375, 1.98118770122528076171875, 1.74567377567291259765625, 1.54607236385345458984375, 1.76326549053192138671875, 1.02189743518829345703125, 1.99035441875457763671875, 1.79665100574493408203125, 1.58317053318023681640625, 1.8599293231964111328125, 1.67150020599365234375, 1.916950702667236328125, 1.2051219940185546875, 1.13928806781768798828125, 1.6557109355926513671875, 1.7398192882537841796875, 1.26171123981475830078125, 1.55939829349517822265625, 1.5036785602569580078125, 1.8527429103851318359375, 1.49759006500244140625, 1.4610424041748046875, 1.993624210357666015625, 1.558784008026123046875, 1.66790831089019775390625, 1.16229736804962158203125, 1.394735813140869140625, 1.58751857280731201171875, 1.18675148487091064453125, 1.04447257518768310546875, 1.4906055927276611328125, 1.55597412586212158203125, 1.5255777835845947265625, 1.388047695159912109375, 1.35266768932342529296875, 1.17956650257110595703125, 1.36165630817413330078125, 1.95860946178436279296875, 1.86363518238067626953125, 1.2330377101898193359375, 1.4765040874481201171875, 1.34278953075408935546875},
{ 1.2613937854766845703125, 1.40432369709014892578125, 1.0342023372650146484375, 1.81016147136688232421875, 1.040841579437255859375, 1.83044087886810302734375, 1.26938188076019287109375, 1.27848088741302490234375, 1.78972661495208740234375, 1.7397415637969970703125, 1.61371958255767822265625, 1.7581021785736083984375, 1.12947094440460205078125, 1.31511008739471435546875, 1.2974021434783935546875, 1.2896974086761474609375, 1.79550993442535400390625, 1.5858662128448486328125, 1.30134832859039306640625, 1.615843296051025390625, 1.0982301235198974609375, 1.82620275020599365234375, 1.1931469440460205078125, 1.9544582366943359375, 1.1339070796966552734375, 1.7036230564117431640625, 1.712994098663330078125, 1.5222399234771728515625, 1.745642185211181640625, 1.17737865447998046875, 1.10963118076324462890625, 1.80810296535491943359375, 1.23430049419403076171875, 1.14690625667572021484375, 1.226281642913818359375, 1.59661591053009033203125, 1.81944859027862548828125, 1.850265979766845703125, 1.33658885955810546875, 1.74143946170806884765625, 1.85029137134552001953125, 1.01257836818695068359375, 1.73055398464202880859375, 1.68876349925994873046875, 1.76661002635955810546875, 1.74446201324462890625, 1.050472736358642578125, 1.75074470043182373046875, 1.8096992969512939453125, 1.190471172332763671875, 1.3768732547760009765625, 1.12894403934478759765625, 1.483305454254150390625, 1.92753279209136962890625, 1.06445395946502685546875, 1.6877644062042236328125, 1.764563083648681640625, 1.113384723663330078125, 1.3280203342437744140625, 1.477887630462646484375, 1.06493294239044189453125, 1.38501274585723876953125, 1.5784227848052978515625, 1.009712696075439453125, 1.94113981723785400390625, 1.507088184356689453125, 1.50849449634552001953125, 1.2767927646636962890625, 1.55610930919647216796875, 1.7704055309295654296875, 1.9289882183074951171875, 1.5292727947235107421875, 1.8899056911468505859375, 1.14031946659088134765625, 1.35451412200927734375, 1.79732716083526611328125, 1.700669765472412109375, 1.1551830768585205078125, 1.33947765827178955078125, 1.16459667682647705078125, 1.2355556488037109375, 1.57478487491607666015625, 1.5640163421630859375, 1.79162681102752685546875, 1.69166862964630126953125, 1.7787864208221435546875, 1.66993772983551025390625, 1.68930470943450927734375, 1.42700302600860595703125, 1.91515982151031494140625, 1.84665668010711669921875, 1.24229681491851806640625, 1.92137897014617919921875, 1.79862534999847412109375, 1.167133331298828125, 1.4824864864349365234375, 1.4873802661895751953125, 1.5590884685516357421875, 1.67380988597869873046875, 1.112411022186279296875},
{ 1.04007804393768310546875, 1.21454846858978271484375, 1.2786998748779296875, 1.764038562774658203125, 1.9471833705902099609375, 1.0285689830780029296875, 1.0955116748809814453125, 1.1621191501617431640625, 1.74649178981781005859375, 1.08238589763641357421875, 1.9179718494415283203125, 1.67854750156402587890625, 1.31302630901336669921875, 1.15574610233306884765625, 1.3656101226806640625, 1.70378863811492919921875, 1.32918262481689453125, 1.6775667667388916015625, 1.09579813480377197265625, 1.47669589519500732421875, 1.43316733837127685546875, 1.31187212467193603515625, 1.32718646526336669921875, 1.045448780059814453125, 1.117434978485107421875, 1.29373133182525634765625, 1.11314284801483154296875, 1.9784908294677734375, 1.37712562084197998046875, 1.515196323394775390625, 1.36518919467926025390625, 1.8254663944244384765625, 1.10850250720977783203125, 1.36123859882354736328125, 1.62643921375274658203125, 1.32815849781036376953125, 1.257389068603515625, 1.29568707942962646484375, 1.595036029815673828125, 1.38142669200897216796875, 1.71760714054107666015625, 1.197165966033935546875, 1.397589206695556640625, 1.74414384365081787109375, 1.9794139862060546875, 1.44503152370452880859375, 1.6126129627227783203125, 1.500133991241455078125, 1.52793991565704345703125, 1.75531005859375, 1.0439631938934326171875, 1.269110202789306640625, 1.99162578582763671875, 1.7666351795196533203125, 1.24427509307861328125, 1.1676113605499267578125, 1.0406606197357177734375, 1.37618577480316162109375, 1.78840076923370361328125, 1.51994001865386962890625, 1.03541862964630126953125, 1.8256227970123291015625, 1.29684627056121826171875, 1.31910026073455810546875, 1.4248974323272705078125, 1.5370271205902099609375, 1.20920979976654052734375, 1.43773448467254638671875, 1.89515507221221923828125, 1.69883739948272705078125, 1.30761873722076416015625, 1.58906137943267822265625, 1.2677476406097412109375, 1.6017868518829345703125, 1.99016726016998291015625, 1.0378131866455078125, 1.1481668949127197265625, 1.72484111785888671875, 1.29435384273529052734375, 1.0611736774444580078125, 1.32427728176116943359375, 1.57113611698150634765625, 1.6705188751220703125, 1.1597149372100830078125, 1.9147541522979736328125, 1.25391483306884765625, 1.5052816867828369140625, 1.01833522319793701171875, 1.26752078533172607421875, 1.83246517181396484375, 1.3949787616729736328125, 1.21719682216644287109375, 1.6081860065460205078125, 1.39805781841278076171875, 1.16910076141357421875, 1.69266283512115478515625, 1.438481807708740234375, 1.909883022308349609375, 1.663730144500732421875, 1.948235034942626953125},
{ 1.7809884548187255859375, 1.24497878551483154296875, 1.0154917240142822265625, 1.5961322784423828125, 1.21421706676483154296875, 1.08242499828338623046875, 1.1650245189666748046875, 1.39350354671478271484375, 1.2881438732147216796875, 1.17255175113677978515625, 1.36737620830535888671875, 1.667413234710693359375, 1.79301393032073974609375, 1.11218369007110595703125, 1.50397861003875732421875, 1.52677094936370849609375, 1.81667959690093994140625, 1.62192475795745849609375, 1.32808935642242431640625, 1.49723446369171142578125, 1.0805385112762451171875, 1.819595813751220703125, 1.1757297515869140625, 1.169646739959716796875, 1.02547037601470947265625, 1.2436716556549072265625, 1.4266226291656494140625, 1.59847414493560791015625, 1.64777481555938720703125, 1.6267192363739013671875, 1.7151291370391845703125, 1.450243473052978515625, 1.085109233856201171875, 1.418834686279296875, 1.89118671417236328125, 1.90197956562042236328125, 1.95242559909820556640625, 1.0610809326171875, 1.73124635219573974609375, 1.28964293003082275390625, 1.42790830135345458984375, 1.0089251995086669921875, 1.39921057224273681640625, 1.5065667629241943359375, 1.08891201019287109375, 1.50567662715911865234375, 1.65737020969390869140625, 1.15189516544342041015625, 1.49789845943450927734375, 1.10592329502105712890625, 1.8273422718048095703125, 1.4290201663970947265625, 1.53837430477142333984375, 1.94897043704986572265625, 1.5010077953338623046875, 1.79401934146881103515625, 1.5008289813995361328125, 1.78227746486663818359375, 1.00144863128662109375, 1.35409343242645263671875, 1.91867148876190185546875, 1.73489558696746826171875, 1.59388530254364013671875, 1.0160033702850341796875, 1.15416824817657470703125, 1.8409054279327392578125, 1.44661486148834228515625, 1.38450849056243896484375, 1.7343809604644775390625, 1.3128540515899658203125, 1.34194767475128173828125, 1.4108035564422607421875, 1.43710339069366455078125, 1.56519317626953125, 1.1371452808380126953125, 1.79095637798309326171875, 1.1267993450164794921875, 1.987716197967529296875, 1.9753582477569580078125, 1.1143453121185302734375, 1.3405399322509765625, 1.4689958095550537109375, 1.246562957763671875, 1.762096881866455078125, 1.62394154071807861328125, 1.66982161998748779296875, 1.29849946498870849609375, 1.55552279949188232421875, 1.61710262298583984375, 1.04663717746734619140625, 1.89760935306549072265625, 1.1545581817626953125, 1.890541553497314453125, 1.62497818470001220703125, 1.43997251987457275390625, 1.20619857311248779296875, 1.53113448619842529296875, 1.52290952205657958984375, 1.91224515438079833984375, 1.242937564849853515625},
{ 1.22446286678314208984375, 1.6025969982147216796875, 1.33120441436767578125, 1.6086976528167724609375, 1.60307419300079345703125, 1.561649322509765625, 1.46980106830596923828125, 1.57464444637298583984375, 1.6950213909149169921875, 1.813411712646484375, 1.7383403778076171875, 1.3875730037689208984375, 1.22286128997802734375, 1.31621992588043212890625, 1.19568312168121337890625, 1.7552087306976318359375, 1.8688678741455078125, 1.67367374897003173828125, 1.5283756256103515625, 1.16725981235504150390625, 1.2984693050384521484375, 1.59557378292083740234375, 1.4490873813629150390625, 1.7313539981842041015625, 1.9336855411529541015625, 1.1088593006134033203125, 1.84504806995391845703125, 1.758976459503173828125, 1.47656595706939697265625, 1.51854610443115234375, 1.6764857769012451171875, 1.10140764713287353515625, 1.18262636661529541015625, 1.118663311004638671875, 1.62506401538848876953125, 1.235660076141357421875, 1.88428723812103271484375, 1.65319120883941650390625, 1.4923193454742431640625, 1.10041630268096923828125, 1.76431071758270263671875, 1.52699911594390869140625, 1.34809887409210205078125, 1.68196618556976318359375, 1.87923824787139892578125, 1.76678216457366943359375, 1.42899787425994873046875, 1.350144863128662109375, 1.4328281879425048828125, 1.7319991588592529296875, 1.7867968082427978515625, 1.94426953792572021484375, 1.79949283599853515625, 1.57581043243408203125, 1.68689954280853271484375, 1.60907733440399169921875, 1.297736644744873046875, 1.4560146331787109375, 1.7567703723907470703125, 1.3806631565093994140625, 1.7135932445526123046875, 1.4959867000579833984375, 1.88437163829803466796875, 1.52241647243499755859375, 1.5740630626678466796875, 1.49561512470245361328125, 1.86660134792327880859375, 1.61095917224884033203125, 1.170550823211669921875, 1.39223992824554443359375, 1.807730197906494140625, 1.3720834255218505859375, 1.33230316638946533203125, 1.47158944606781005859375, 1.26783978939056396484375, 1.26668846607208251953125, 1.94984567165374755859375, 1.3287181854248046875, 1.16125965118408203125, 1.82671844959259033203125, 1.24842107295989990234375, 1.578944683074951171875, 1.40500485897064208984375, 1.741100311279296875, 1.81142628192901611328125, 1.3187882900238037109375, 1.31721365451812744140625, 1.69168055057525634765625, 1.35385000705718994140625, 1.33690702915191650390625, 1.765584468841552734375, 1.93916308879852294921875, 1.2457103729248046875, 1.07503545284271240234375, 1.06581413745880126953125, 1.65904712677001953125, 1.785491943359375, 1.33892142772674560546875, 1.630034923553466796875, 1.02756392955780029296875},
{ 1.7592639923095703125, 1.36525213718414306640625, 1.057614803314208984375, 1.5357172489166259765625, 1.002651214599609375, 1.821781635284423828125, 1.1847083568572998046875, 1.946402072906494140625, 1.7324969768524169921875, 1.0916874408721923828125, 1.60289847850799560546875, 1.20236551761627197265625, 1.31997883319854736328125, 1.45721876621246337890625, 1.3507211208343505859375, 1.59598863124847412109375, 1.30497586727142333984375, 1.7892482280731201171875, 1.1471321582794189453125, 1.73874461650848388671875, 1.60700547695159912109375, 1.69570887088775634765625, 1.97744524478912353515625, 1.08463585376739501953125, 1.48616135120391845703125, 1.4200317859649658203125, 1.4292685985565185546875, 1.20363152027130126953125, 1.254050731658935546875, 1.4895837306976318359375, 1.778442859649658203125, 1.80510509014129638671875, 1.7347323894500732421875, 1.11410415172576904296875, 1.82497894763946533203125, 1.511271953582763671875, 1.4756534099578857421875, 1.3341434001922607421875, 1.478994846343994140625, 1.3806264400482177734375, 1.70858705043792724609375, 1.91949975490570068359375, 1.096653461456298828125, 1.1813800334930419921875, 1.06057059764862060546875, 1.0176570415496826171875, 1.56610047817230224609375, 1.414898395538330078125, 1.01484215259552001953125, 1.55222225189208984375, 1.14340114593505859375, 1.08913898468017578125, 1.1217784881591796875, 1.37136256694793701171875, 1.0384781360626220703125, 1.24208867549896240234375, 1.9598329067230224609375, 1.146243572235107421875, 1.75104939937591552734375, 1.21520078182220458984375, 1.8464720249176025390625, 1.01946628093719482421875, 1.1565649509429931640625, 1.67683327198028564453125, 1.29911363124847412109375, 1.00350475311279296875, 1.34214484691619873046875, 1.39568579196929931640625, 1.24606454372406005859375, 1.12914359569549560546875, 1.19251644611358642578125, 1.76423728466033935546875, 1.98745739459991455078125, 1.34391558170318603515625, 1.7259523868560791015625, 1.0721836090087890625, 1.906188488006591796875, 1.16053867340087890625, 1.18020737171173095703125, 1.5298745632171630859375, 1.9288556575775146484375, 1.05535423755645751953125, 1.84845602512359619140625, 1.0417520999908447265625, 1.7366950511932373046875, 1.616764068603515625, 1.66523075103759765625, 1.729787349700927734375, 1.726519107818603515625, 1.44366800785064697265625, 1.54235851764678955078125, 1.206918239593505859375, 1.72165381908416748046875, 1.79390156269073486328125, 1.45489871501922607421875, 1.6004869937896728515625, 1.43287670612335205078125, 1.9826729297637939453125, 1.277081012725830078125, 1.32567775249481201171875},
{ 1.53100121021270751953125, 1.36824214458465576171875, 1.60895359516143798828125, 1.2995765209197998046875, 1.0641534328460693359375, 1.90876376628875732421875, 1.76149475574493408203125, 1.9623014926910400390625, 1.96008217334747314453125, 1.9860103130340576171875, 1.20263564586639404296875, 1.527485370635986328125, 1.74786317348480224609375, 1.43026578426361083984375, 1.23330247402191162109375, 1.30722367763519287109375, 1.2561323642730712890625, 1.40067160129547119140625, 1.5594508647918701171875, 1.01668846607208251953125, 1.51152408123016357421875, 1.7211644649505615234375, 1.5655028820037841796875, 1.48506510257720947265625, 1.3871080875396728515625, 1.96641314029693603515625, 1.337785243988037109375, 1.1164901256561279296875, 1.00082719326019287109375, 1.2977564334869384765625, 1.43796634674072265625, 1.1009891033172607421875, 1.8639347553253173828125, 1.049140453338623046875, 1.4264938831329345703125, 1.375413417816162109375, 1.7794322967529296875, 1.06305658817291259765625, 1.13603246212005615234375, 1.33437812328338623046875, 1.49050652980804443359375, 1.776478290557861328125, 1.69490063190460205078125, 1.29119980335235595703125, 1.078967571258544921875, 1.0567989349365234375, 1.30050909519195556640625, 1.68883335590362548828125, 1.11368596553802490234375, 1.78776967525482177734375, 1.74279773235321044921875, 1.06080996990203857421875, 1.549030303955078125, 1.205436229705810546875, 1.67767322063446044921875, 1.7421743869781494140625, 1.373304843902587890625, 1.9840767383575439453125, 1.65044653415679931640625, 1.330422878265380859375, 1.00718653202056884765625, 1.07213962078094482421875, 1.8692705631256103515625, 1.896440029144287109375, 1.452163219451904296875, 1.2781803607940673828125, 1.728577136993408203125, 1.94543659687042236328125, 1.18897068500518798828125, 1.6067993640899658203125, 1.082515239715576171875, 1.12788736820220947265625, 1.826030254364013671875, 1.34457981586456298828125, 1.2683880329132080078125, 1.70046794414520263671875, 1.4978864192962646484375, 1.8960244655609130859375, 1.8800904750823974609375, 1.7369925975799560546875, 1.01364386081695556640625, 1.3694934844970703125, 1.29154694080352783203125, 1.089352130889892578125, 1.7554056644439697265625, 1.91314232349395751953125, 1.93014824390411376953125, 1.09845066070556640625, 1.32671034336090087890625, 1.80085849761962890625, 1.30018985271453857421875, 1.05514347553253173828125, 1.9509694576263427734375, 1.26819956302642822265625, 1.75630891323089599609375, 1.41117489337921142578125, 1.61990511417388916015625, 1.09833037853240966796875, 1.02692186832427978515625, 1.74011504650115966796875},
{ 1.95796108245849609375, 1.4876620769500732421875, 1.4482977390289306640625, 1.0408723354339599609375, 1.48328387737274169921875, 1.184816837310791015625, 1.235758304595947265625, 1.45383822917938232421875, 1.11591088771820068359375, 1.60876560211181640625, 1.307170391082763671875, 1.7802245616912841796875, 1.6888120174407958984375, 1.2174170017242431640625, 1.3327839374542236328125, 1.32986867427825927734375, 1.76225173473358154296875, 1.7096464633941650390625, 1.15936243534088134765625, 1.82154357433319091796875, 1.70972692966461181640625, 1.04873371124267578125, 1.27112090587615966796875, 1.78139495849609375, 1.5539047718048095703125, 1.23580038547515869140625, 1.00066268444061279296875, 1.69137942790985107421875, 1.55255949497222900390625, 1.83324706554412841796875, 1.489917278289794921875, 1.887701511383056640625, 1.53451025485992431640625, 1.23819148540496826171875, 1.40107822418212890625, 1.20925128459930419921875, 1.985558986663818359375, 1.70590555667877197265625, 1.3775398731231689453125, 1.39604198932647705078125, 1.88442718982696533203125, 1.12325298786163330078125, 1.25483524799346923828125, 1.23764705657958984375, 1.28869378566741943359375, 1.532126903533935546875, 1.02157390117645263671875, 1.47163832187652587890625, 1.670732975006103515625, 1.402886867523193359375, 1.53037869930267333984375, 1.43202304840087890625, 1.00365102291107177734375, 1.6577970981597900390625, 1.958823680877685546875, 1.44768154621124267578125, 1.59722423553466796875, 1.4444634914398193359375, 1.020371913909912109375, 1.9908046722412109375, 1.6838362216949462890625, 1.659271240234375, 1.9253122806549072265625, 1.5753314495086669921875, 1.75441586971282958984375, 1.22082245349884033203125, 1.09169733524322509765625, 1.40538609027862548828125, 1.6443741321563720703125, 1.09337317943572998046875, 1.60628116130828857421875, 1.7737162113189697265625, 1.3695418834686279296875, 1.06027162075042724609375, 1.43545615673065185546875, 1.21012985706329345703125, 1.71210777759552001953125, 1.24739515781402587890625, 1.38619101047515869140625, 1.3799331188201904296875, 1.5565550327301025390625, 1.39658796787261962890625, 1.81696796417236328125, 1.7323677539825439453125, 1.9755992889404296875, 1.88909852504730224609375, 1.0987207889556884765625, 1.89904820919036865234375, 1.06612646579742431640625, 1.51901721954345703125, 1.8257715702056884765625, 1.8423998355865478515625, 1.535129547119140625, 1.0167133808135986328125, 1.77676856517791748046875, 1.75409591197967529296875, 1.0356464385986328125, 1.3222734928131103515625, 1.62562406063079833984375, 1.7034952640533447265625},
{ 1.6089382171630859375, 1.40245115756988525390625, 1.036079883575439453125, 1.739223957061767578125, 1.056540012359619140625, 1.704501628875732421875, 1.52189195156097412109375, 1.5020225048065185546875, 1.37494075298309326171875, 1.6571037769317626953125, 1.25397205352783203125, 1.33768641948699951171875, 1.07746875286102294921875, 1.6245992183685302734375, 1.29679620265960693359375, 1.9185407161712646484375, 1.50435698032379150390625, 1.67128074169158935546875, 1.084713459014892578125, 1.62858045101165771484375, 1.59618008136749267578125, 1.77233016490936279296875, 1.57038342952728271484375, 1.14940798282623291015625, 1.41729199886322021484375, 1.77475512027740478515625, 1.12321388721466064453125, 1.7961709499359130859375, 1.429263591766357421875, 1.10832691192626953125, 1.177797794342041015625, 1.60349905490875244140625, 1.5143196582794189453125, 1.2465183734893798828125, 1.63235151767730712890625, 1.16144192218780517578125, 1.7487771511077880859375, 1.9174406528472900390625, 1.997151851654052734375, 1.201406955718994140625, 1.92648220062255859375, 1.06478118896484375, 1.29297363758087158203125, 1.93209612369537353515625, 1.83224773406982421875, 1.55874097347259521484375, 1.69952738285064697265625, 1.12544381618499755859375, 1.2652909755706787109375, 1.65697252750396728515625, 1.9538962841033935546875, 1.9525547027587890625, 1.81267106533050537109375, 1.21551668643951416015625, 1.49897444248199462890625, 1.56964051723480224609375, 1.37272608280181884765625, 1.6497404575347900390625, 1.3819038867950439453125, 1.45395791530609130859375, 1.42851126194000244140625, 1.6452748775482177734375, 1.90251219272613525390625, 1.4897463321685791015625, 1.07123601436614990234375, 1.6189517974853515625, 1.01175010204315185546875, 1.80416476726531982421875, 1.77370154857635498046875, 1.92974174022674560546875, 1.4601285457611083984375, 1.35322964191436767578125, 1.9137384891510009765625, 1.83969175815582275390625, 1.69615685939788818359375, 1.2577526569366455078125, 1.0476438999176025390625, 1.22486221790313720703125, 1.5147798061370849609375, 1.88927757740020751953125, 1.93361949920654296875, 1.0362646579742431640625, 1.45581519603729248046875, 1.7060182094573974609375, 1.305208683013916015625, 1.5107996463775634765625, 1.9523913860321044921875, 1.83879566192626953125, 1.3947341442108154296875, 1.13219356536865234375, 1.229384899139404296875, 1.42697632312774658203125, 1.20673549175262451171875, 1.34193646907806396484375, 1.95185744762420654296875, 1.7044086456298828125, 1.54140627384185791015625, 1.00021994113922119140625, 1.62349414825439453125, 1.835361003875732421875},
{ 1.59687387943267822265625, 1.73504054546356201171875, 1.50045955181121826171875, 1.34842813014984130859375, 1.21230447292327880859375, 1.662740230560302734375, 1.23262500762939453125, 1.11037576198577880859375, 1.2284314632415771484375, 1.3167724609375, 1.5030105113983154296875, 1.27106106281280517578125, 1.78962612152099609375, 1.53968918323516845703125, 1.55693948268890380859375, 1.2105119228363037109375, 1.01364803314208984375, 1.25485324859619140625, 1.9998424053192138671875, 1.9950351715087890625, 1.95258295536041259765625, 1.36487543582916259765625, 1.1331946849822998046875, 1.65065479278564453125, 1.30378067493438720703125, 1.40005207061767578125, 1.04045450687408447265625, 1.1865489482879638671875, 1.87079179286956787109375, 1.9168026447296142578125, 1.4229996204376220703125, 1.3684875965118408203125, 1.7743055820465087890625, 1.64610683917999267578125, 1.186065196990966796875, 1.24227011203765869140625, 1.4130878448486328125, 1.3919427394866943359375, 1.77468168735504150390625, 1.40716230869293212890625, 1.174917697906494140625, 1.67972385883331298828125, 1.259611606597900390625, 1.03933465480804443359375, 1.89752542972564697265625, 1.1547367572784423828125, 1.17328751087188720703125, 1.66529929637908935546875, 1.07953035831451416015625, 1.73057854175567626953125, 1.09574925899505615234375, 1.68534767627716064453125, 1.84137761592864990234375, 1.48759448528289794921875, 1.990581989288330078125, 1.6469881534576416015625, 1.6362760066986083984375, 1.3213150501251220703125, 1.29085290431976318359375, 1.268383026123046875, 1.7111358642578125, 1.34089410305023193359375, 1.73504912853240966796875, 1.211786746978759765625, 1.31750583648681640625, 1.0175459384918212890625, 1.9530155658721923828125, 1.6069829463958740234375, 1.6725108623504638671875, 1.08298289775848388671875, 1.80189168453216552734375, 1.3247220516204833984375, 1.66978943347930908203125, 1.17785298824310302734375, 1.45204937458038330078125, 1.000158786773681640625, 1.34043157100677490234375, 1.250176906585693359375, 1.2230308055877685546875, 1.80628979206085205078125, 1.06391561031341552734375, 1.70378625392913818359375, 1.16948521137237548828125, 1.97739064693450927734375, 1.52904605865478515625, 1.29676055908203125, 1.41710674762725830078125, 1.08245408535003662109375, 1.444891452789306640625, 1.78986489772796630859375, 1.24857234954833984375, 1.04862701892852783203125, 1.0017211437225341796875, 1.34498751163482666015625, 1.93947851657867431640625, 1.93464815616607666015625, 1.08194315433502197265625, 1.673576831817626953125, 1.34427917003631591796875, 1.45428562164306640625},
{ 1.93507969379425048828125, 1.2322235107421875, 1.24977397918701171875, 1.31851565837860107421875, 1.385378360748291015625, 1.37329280376434326171875, 1.9152524471282958984375, 1.09881305694580078125, 1.77522814273834228515625, 1.374138355255126953125, 1.7702019214630126953125, 1.32227230072021484375, 1.498694896697998046875, 1.2640187740325927734375, 1.382882595062255859375, 1.7460572719573974609375, 1.4915926456451416015625, 1.83073794841766357421875, 1.84377157688140869140625, 1.83509552478790283203125, 1.87992060184478759765625, 1.7065818309783935546875, 1.78899991512298583984375, 1.22301614284515380859375, 1.3783013820648193359375, 1.2042562961578369140625, 1.17379081249237060546875, 1.92308652400970458984375, 1.43841803073883056640625, 1.90282499790191650390625, 1.79589664936065673828125, 1.28915035724639892578125, 1.1474516391754150390625, 1.9836461544036865234375, 1.56903660297393798828125, 1.726564884185791015625, 1.8765189647674560546875, 1.316310405731201171875, 1.54633414745330810546875, 1.1531388759613037109375, 1.67910945415496826171875, 1.29457867145538330078125, 1.693754673004150390625, 1.2100694179534912109375, 1.4395234584808349609375, 1.422318935394287109375, 1.4135425090789794921875, 1.22287976741790771484375, 1.77130925655364990234375, 1.649444103240966796875, 1.8176591396331787109375, 1.91235721111297607421875, 1.6657006740570068359375, 1.45784986019134521484375, 1.751220226287841796875, 1.85548985004425048828125, 1.8900547027587890625, 1.6973514556884765625, 1.5659332275390625, 1.69640445709228515625, 1.13628852367401123046875, 1.1716215610504150390625, 1.64353501796722412109375, 1.1073043346405029296875, 1.919317722320556640625, 1.97412812709808349609375, 1.66922891139984130859375, 1.4994060993194580078125, 1.22549331188201904296875, 1.5740711688995361328125, 1.65512287616729736328125, 1.48387753963470458984375, 1.9110393524169921875, 1.65232074260711669921875, 1.71366655826568603515625, 1.08277547359466552734375, 1.85049045085906982421875, 1.68735420703887939453125, 1.58108890056610107421875, 1.68998253345489501953125, 1.83512938022613525390625, 1.2911942005157470703125, 1.89083576202392578125, 1.782145023345947265625, 1.221424102783203125, 1.29534542560577392578125, 1.1970069408416748046875, 1.3796107769012451171875, 1.32946598529815673828125, 1.58673250675201416015625, 1.7477943897247314453125, 1.2573659420013427734375, 1.59140682220458984375, 1.693637847900390625, 1.008919239044189453125, 1.905972957611083984375, 1.44989645481109619140625, 1.12163841724395751953125, 1.937069416046142578125, 1.24250781536102294921875},
{ 1.43954360485076904296875, 1.0033371448516845703125, 1.07149803638458251953125, 1.4202368259429931640625, 1.115333080291748046875, 1.96665656566619873046875, 1.29585945606231689453125, 1.05581486225128173828125, 1.10209357738494873046875, 1.39724075794219970703125, 1.8778340816497802734375, 1.3822715282440185546875, 1.17395675182342529296875, 1.95001995563507080078125, 1.5499279499053955078125, 1.62130939960479736328125, 1.0120370388031005859375, 1.38807857036590576171875, 1.275847911834716796875, 1.14575421810150146484375, 1.04036843776702880859375, 1.35609281063079833984375, 1.46143949031829833984375, 1.6279919147491455078125, 1.01184237003326416015625, 1.9037683010101318359375, 1.91562473773956298828125, 1.93840682506561279296875, 1.3441455364227294921875, 1.7592771053314208984375, 1.56133902072906494140625, 1.7938187122344970703125, 1.20569670200347900390625, 1.352695941925048828125, 1.8964688777923583984375, 1.15592038631439208984375, 1.3515846729278564453125, 1.589443206787109375, 1.2047898769378662109375, 1.3797152042388916015625, 1.709505558013916015625, 1.3737165927886962890625, 1.516903400421142578125, 1.11195468902587890625, 1.71570074558258056640625, 1.88193070888519287109375, 1.32117450237274169921875, 1.93957555294036865234375, 1.400893688201904296875, 1.58615410327911376953125, 1.02466976642608642578125, 1.788137912750244140625, 1.22622776031494140625, 1.02754747867584228515625, 1.16409409046173095703125, 1.07026231288909912109375, 1.66920411586761474609375, 1.33980071544647216796875, 1.36672866344451904296875, 1.58406734466552734375, 1.559618473052978515625, 1.52257049083709716796875, 1.0613682270050048828125, 1.161607265472412109375, 1.1654989719390869140625, 1.46491777896881103515625, 1.939259052276611328125, 1.06730902194976806640625, 1.02904403209686279296875, 1.7187454700469970703125, 1.165035724639892578125, 1.146410465240478515625, 1.5525591373443603515625, 1.022235393524169921875, 1.33765900135040283203125, 1.72339737415313720703125, 1.3343946933746337890625, 1.573286533355712890625, 1.20135366916656494140625, 1.250441074371337890625, 1.25488388538360595703125, 1.0529520511627197265625, 1.10654532909393310546875, 1.7058360576629638671875, 1.3122794628143310546875, 1.3988769054412841796875, 1.2207982540130615234375, 1.74243700504302978515625, 1.20869159698486328125, 1.32873547077178955078125, 1.489753246307373046875, 1.5860970020294189453125, 1.68602573871612548828125, 1.61366856098175048828125, 1.348064422607421875, 1.68410456180572509765625, 1.611919403076171875, 1.10172164440155029296875, 1.18033707141876220703125, 1.1036212444305419921875},
{ 1.49128186702728271484375, 1.53206551074981689453125, 1.68011915683746337890625, 1.67422282695770263671875, 1.85451567173004150390625, 1.07056987285614013671875, 1.91581857204437255859375, 1.4480075836181640625, 1.9108064174652099609375, 1.2959339618682861328125, 1.6281249523162841796875, 1.36697661876678466796875, 1.050191402435302734375, 1.001943111419677734375, 1.34806716442108154296875, 1.46649205684661865234375, 1.106800079345703125, 1.487020969390869140625, 1.4687345027923583984375, 1.1732738018035888671875, 1.8822910785675048828125, 1.5151674747467041015625, 1.14371430873870849609375, 1.64133632183074951171875, 1.4192898273468017578125, 1.02689611911773681640625, 1.93552958965301513671875, 1.83792650699615478515625, 1.0248260498046875, 1.60017192363739013671875, 1.21407604217529296875, 1.3794615268707275390625, 1.04377138614654541015625, 1.66134822368621826171875, 1.30506026744842529296875, 1.11746561527252197265625, 1.38227641582489013671875, 1.446104526519775390625, 1.388436794281005859375, 1.47450792789459228515625, 1.78120887279510498046875, 1.710384368896484375, 1.14684569835662841796875, 1.530140399932861328125, 1.83959066867828369140625, 1.1913321018218994140625, 1.16405022144317626953125, 1.85683453083038330078125, 1.78803551197052001953125, 1.81823074817657470703125, 1.0733737945556640625, 1.10591924190521240234375, 1.012186527252197265625, 1.67343986034393310546875, 1.45613825321197509765625, 1.343518733978271484375, 1.326153278350830078125, 1.70333230495452880859375, 1.490100860595703125, 1.13648927211761474609375, 1.9959499835968017578125, 1.179232120513916015625, 1.34789192676544189453125, 1.3883571624755859375, 1.5129325389862060546875, 1.908352375030517578125, 1.34545230865478515625, 1.9252560138702392578125, 1.11723613739013671875, 1.1947319507598876953125, 1.8404710292816162109375, 1.83186471462249755859375, 1.07121288776397705078125, 1.55017340183258056640625, 1.88082230091094970703125, 1.5373442173004150390625, 1.68286883831024169921875, 1.15518081188201904296875, 1.6030037403106689453125, 1.6512753963470458984375, 1.07930219173431396484375, 1.06989657878875732421875, 1.38057339191436767578125, 1.54959690570831298828125, 1.73014032840728759765625, 1.19503939151763916015625, 1.7225873470306396484375, 1.7105419635772705078125, 1.72097742557525634765625, 1.98284149169921875, 1.9220373630523681640625, 1.80057621002197265625, 1.77681195735931396484375, 1.8979866504669189453125, 1.45428788661956787109375, 1.51033556461334228515625, 1.03548431396484375, 1.6285469532012939453125, 1.1255142688751220703125, 1.14056301116943359375},
{ 1.04692065715789794921875, 1.97113978862762451171875, 1.93804645538330078125, 1.6675369739532470703125, 1.92077004909515380859375, 1.9042732715606689453125, 1.18155658245086669921875, 1.84174442291259765625, 1.37395823001861572265625, 1.114146709442138671875, 1.017783641815185546875, 1.617318630218505859375, 1.097486972808837890625, 1.21455228328704833984375, 1.0472753047943115234375, 1.04787147045135498046875, 1.3104345798492431640625, 1.14228057861328125, 1.66037452220916748046875, 1.99048125743865966796875, 1.4708926677703857421875, 1.80555760860443115234375, 1.1231563091278076171875, 1.12913095951080322265625, 1.73690402507781982421875, 1.482482433319091796875, 1.41336572170257568359375, 1.74814522266387939453125, 1.17740046977996826171875, 1.96946465969085693359375, 1.80635511875152587890625, 1.25562798976898193359375, 1.73313963413238525390625, 1.47966206073760986328125, 1.2110221385955810546875, 1.456900119781494140625, 1.927642822265625, 1.291417598724365234375, 1.25574648380279541015625, 1.5779364109039306640625, 1.3281328678131103515625, 1.14669764041900634765625, 1.12432777881622314453125, 1.0388038158416748046875, 1.7564709186553955078125, 1.399528980255126953125, 1.141923427581787109375, 1.9770984649658203125, 1.25009441375732421875, 1.91443645954132080078125, 1.11098539829254150390625, 1.5213832855224609375, 1.77295434474945068359375, 1.71488058567047119140625, 1.39719808101654052734375, 1.8146255016326904296875, 1.67645323276519775390625, 1.3816945552825927734375, 1.76541614532470703125, 1.78763425350189208984375, 1.91038191318511962890625, 1.20152246952056884765625, 1.96560132503509521484375, 1.68249762058258056640625, 1.9838573932647705078125, 1.0652563571929931640625, 1.06876027584075927734375, 1.32602083683013916015625, 1.6762607097625732421875, 1.11647379398345947265625, 1.5528824329376220703125, 1.15316331386566162109375, 1.49817371368408203125, 1.14987552165985107421875, 1.13887679576873779296875, 1.98047626018524169921875, 1.90231692790985107421875, 1.7597224712371826171875, 1.37650978565216064453125, 1.5295403003692626953125, 1.24448740482330322265625, 1.23827397823333740234375, 1.9803431034088134765625, 1.7004024982452392578125, 1.49449551105499267578125, 1.2242248058319091796875, 1.91567051410675048828125, 1.5950145721435546875, 1.6971027851104736328125, 1.10114276409149169921875, 1.2344558238983154296875, 1.290669918060302734375, 1.1829597949981689453125, 1.1459062099456787109375, 1.6612701416015625, 1.3634412288665771484375, 1.5295429229736328125, 1.427141666412353515625, 1.92922985553741455078125, 1.16161811351776123046875},
{ 1.45366084575653076171875, 1.86593341827392578125, 1.82914412021636962890625, 1.36454927921295166015625, 1.57289886474609375, 1.229399204254150390625, 1.07905495166778564453125, 1.39049398899078369140625, 1.11935126781463623046875, 1.29400336742401123046875, 1.71691548824310302734375, 1.52408254146575927734375, 1.313011646270751953125, 1.1864166259765625, 1.91425740718841552734375, 1.2409846782684326171875, 1.90780925750732421875, 1.9715421199798583984375, 1.23201668262481689453125, 1.7793216705322265625, 1.59004604816436767578125, 1.48845326900482177734375, 1.3939712047576904296875, 1.3506031036376953125, 1.126834869384765625, 1.9363305568695068359375, 1.81017780303955078125, 1.10066473484039306640625, 1.26453649997711181640625, 1.2103993892669677734375, 1.85041046142578125, 1.82060635089874267578125, 1.377197265625, 1.98786795139312744140625, 1.8675973415374755859375, 1.40772855281829833984375, 1.8649866580963134765625, 1.5638639926910400390625, 1.9712584018707275390625, 1.0764706134796142578125, 1.30263435840606689453125, 1.437372684478759765625, 1.55094301700592041015625, 1.31934833526611328125, 1.3378684520721435546875, 1.64717447757720947265625, 1.54966700077056884765625, 1.617890834808349609375, 1.33985245227813720703125, 1.857781887054443359375, 1.48735082149505615234375, 1.90357840061187744140625, 1.7976229190826416015625, 1.19537746906280517578125, 1.23425662517547607421875, 1.76878035068511962890625, 1.46852695941925048828125, 1.83375108242034912109375, 1.53442585468292236328125, 1.42769181728363037109375, 1.27665984630584716796875, 1.330237865447998046875, 1.2791168689727783203125, 1.4272716045379638671875, 1.9613020420074462890625, 1.71165502071380615234375, 1.53024196624755859375, 1.10818004608154296875, 1.47535741329193115234375, 1.31023967266082763671875, 1.293805599212646484375, 1.815715789794921875, 1.1337902545928955078125, 1.3495867252349853515625, 1.0433413982391357421875, 1.8607537746429443359375, 1.51206290721893310546875, 1.28058564662933349609375, 1.9933497905731201171875, 1.23068249225616455078125, 1.09457337856292724609375, 1.86735832691192626953125, 1.122735500335693359375, 1.05034196376800537109375, 1.673092365264892578125, 1.0231969356536865234375, 1.94824516773223876953125, 1.79296052455902099609375, 1.49520146846771240234375, 1.39650070667266845703125, 1.04790437221527099609375, 1.241092681884765625, 1.16273021697998046875, 1.70671379566192626953125, 1.33445584774017333984375, 1.197556972503662109375, 1.28019368648529052734375, 1.8302631378173828125, 1.07879650592803955078125, 1.9463727474212646484375},
{ 1.63649523258209228515625, 1.68341505527496337890625, 1.46369802951812744140625, 1.437037944793701171875, 1.57361400127410888671875, 1.205829620361328125, 1.37876737117767333984375, 1.03481400012969970703125, 1.00461864471435546875, 1.6320247650146484375, 1.68482863903045654296875, 1.746190547943115234375, 1.29324042797088623046875, 1.8998897075653076171875, 1.20008087158203125, 1.16567289829254150390625, 1.639880657196044921875, 1.6726553440093994140625, 1.7786121368408203125, 1.531076908111572265625, 1.6675479412078857421875, 1.862331867218017578125, 1.2713363170623779296875, 1.6219666004180908203125, 1.75779616832733154296875, 1.90314638614654541015625, 1.23693096637725830078125, 1.40809118747711181640625, 1.1366612911224365234375, 1.77497994899749755859375, 1.40277516841888427734375, 1.4478232860565185546875, 1.7105991840362548828125, 1.77680575847625732421875, 1.87588632106781005859375, 1.03659594058990478515625, 1.65242350101470947265625, 1.05012619495391845703125, 1.10385811328887939453125, 1.1053402423858642578125, 1.7372424602508544921875, 1.85241043567657470703125, 1.585797786712646484375, 1.8689229488372802734375, 1.428396701812744140625, 1.58053195476531982421875, 1.3332641124725341796875, 1.22458350658416748046875, 1.71339714527130126953125, 1.544206142425537109375, 1.0812041759490966796875, 1.9003722667694091796875, 1.689861774444580078125, 1.4894273281097412109375, 1.24889123439788818359375, 1.35358750820159912109375, 1.901453495025634765625, 1.8719069957733154296875, 1.65086257457733154296875, 1.4192130565643310546875, 1.42381799221038818359375, 1.880510807037353515625, 1.95785629749298095703125, 1.70835590362548828125, 1.70052051544189453125, 1.21069622039794921875, 1.907749176025390625, 1.75668323040008544921875, 1.1289837360382080078125, 1.58795011043548583984375, 1.2664945125579833984375, 1.922860622406005859375, 1.39642560482025146484375, 1.04122579097747802734375, 1.5390589237213134765625, 1.03698909282684326171875, 1.5657961368560791015625, 1.92638123035430908203125, 1.43036019802093505859375, 1.79904270172119140625, 1.91171538829803466796875, 1.69961607456207275390625, 1.05620515346527099609375, 1.92730605602264404296875, 1.50641071796417236328125, 1.44090926647186279296875, 1.90422642230987548828125, 1.05681192874908447265625, 1.5556547641754150390625, 1.1274566650390625, 1.544820308685302734375, 1.38777828216552734375, 1.48470222949981689453125, 1.6571080684661865234375, 1.0920846462249755859375, 1.08404648303985595703125, 1.77422773838043212890625, 1.6218054294586181640625, 1.4147555828094482421875, 1.4215183258056640625},
{ 1.831019878387451171875, 1.097145557403564453125, 1.68659365177154541015625, 1.90013706684112548828125, 1.585189342498779296875, 1.15008056163787841796875, 1.82460796833038330078125, 1.99840724468231201171875, 1.6991560459136962890625, 1.47183811664581298828125, 1.8382694721221923828125, 1.902803897857666015625, 1.27560412883758544921875, 1.05908405780792236328125, 1.93609726428985595703125, 1.16016376018524169921875, 1.22849667072296142578125, 1.9678103923797607421875, 1.4308583736419677734375, 1.13836848735809326171875, 1.55651390552520751953125, 1.0242731571197509765625, 1.38800537586212158203125, 1.1122825145721435546875, 1.36649024486541748046875, 1.285929203033447265625, 1.02411401271820068359375, 1.09968984127044677734375, 1.64685189723968505859375, 1.25237405300140380859375, 1.8553202152252197265625, 1.44723188877105712890625, 1.7910544872283935546875, 1.82627975940704345703125, 1.59575831890106201171875, 1.1663453578948974609375, 1.8710200786590576171875, 1.02433168888092041015625, 1.8059980869293212890625, 1.01919901371002197265625, 1.660575389862060546875, 1.4381663799285888671875, 1.29148232936859130859375, 1.3546316623687744140625, 1.40888881683349609375, 1.4453094005584716796875, 1.2509644031524658203125, 1.694089412689208984375, 1.3639080524444580078125, 1.170112133026123046875, 1.174945831298828125, 1.06756365299224853515625, 1.04579770565032958984375, 1.19468963146209716796875, 1.49411332607269287109375, 1.099527835845947265625, 1.27037632465362548828125, 1.01985847949981689453125, 1.977777004241943359375, 1.844875335693359375, 1.92255461215972900390625, 1.27607357501983642578125, 1.88230741024017333984375, 1.37485730648040771484375, 1.47977244853973388671875, 1.68436610698699951171875, 1.8495731353759765625, 1.113019466400146484375, 1.28543651103973388671875, 1.7672808170318603515625, 1.555378437042236328125, 1.9211399555206298828125, 1.57235777378082275390625, 1.309813976287841796875, 1.10790026187896728515625, 1.93516719341278076171875, 1.2361891269683837890625, 1.570350170135498046875, 1.196126461029052734375, 1.1511566638946533203125, 1.358862400054931640625, 1.24160015583038330078125, 1.98829281330108642578125, 1.7612087726593017578125, 1.482026576995849609375, 1.16153872013092041015625, 1.780320644378662109375, 1.23940670490264892578125, 1.6304848194122314453125, 1.77434146404266357421875, 1.3942544460296630859375, 1.1777532100677490234375, 1.0856320858001708984375, 1.3413226604461669921875, 1.32669889926910400390625, 1.87210845947265625, 1.90889275074005126953125, 1.901873111724853515625, 1.6472570896148681640625, 1.65812790393829345703125}
};
Float B[100][100] = { {1.21515762805938720703125, 1.98439693450927734375, 1.64696753025054931640625, 1.99719905853271484375, 1.19622218608856201171875, 1.06724941730499267578125, 1.2367417812347412109375, 1.31237947940826416015625, 1.89422357082366943359375, 1.78967487812042236328125, 1.09580194950103759765625, 1.57433402538299560546875, 1.72507822513580322265625, 1.91274344921112060546875, 1.57011830806732177734375, 1.63727283477783203125, 1.7519195079803466796875, 1.0302889347076416015625, 1.3208463191986083984375, 1.32488811016082763671875, 1.708534717559814453125, 1.029846668243408203125, 1.72276484966278076171875, 1.26629197597503662109375, 1.77280330657958984375, 1.303590297698974609375, 1.0127131938934326171875, 1.4819543361663818359375, 1.0901339054107666015625, 1.7092697620391845703125, 1.18802869319915771484375, 1.71963965892791748046875, 1.0469019412994384765625, 1.28114855289459228515625, 1.65498435497283935546875, 1.54034483432769775390625, 1.29388713836669921875, 1.69094169139862060546875, 1.6272258758544921875, 1.1542370319366455078125, 1.51971113681793212890625, 1.45875251293182373046875, 1.27420985698699951171875, 1.00659048557281494140625, 1.97427451610565185546875, 1.914010524749755859375, 1.619640827178955078125, 1.11372435092926025390625, 1.74219501018524169921875, 1.90640926361083984375, 1.18990886211395263671875, 1.148940563201904296875, 1.76624453067779541015625, 1.2668430805206298828125, 1.41252720355987548828125, 1.27846062183380126953125, 1.62078678607940673828125, 1.01834499835968017578125, 1.76456928253173828125, 1.74736344814300537109375, 1.035214900970458984375, 1.33702456951141357421875, 1.67110693454742431640625, 1.215523242950439453125, 1.167388439178466796875, 1.26300466060638427734375, 1.15364742279052734375, 1.84354627132415771484375, 1.6270716190338134765625, 1.161359310150146484375, 1.22857105731964111328125, 1.12870883941650390625, 1.2493703365325927734375, 1.933051586151123046875, 1.055568695068359375, 1.4908945560455322265625, 1.6181697845458984375, 1.9758703708648681640625, 1.8360793590545654296875, 1.60853230953216552734375, 1.33957207202911376953125, 1.89536821842193603515625, 1.46172726154327392578125, 1.5045330524444580078125, 1.06533324718475341796875, 1.96579921245574951171875, 1.9127600193023681640625, 1.3822276592254638671875, 1.26630151271820068359375, 1.34105575084686279296875, 1.40648567676544189453125, 1.21130478382110595703125, 1.75585424900054931640625, 1.01560652256011962890625, 1.2957103252410888671875, 1.0637476444244384765625, 1.96333563327789306640625, 1.53543376922607421875, 1.7171757221221923828125, 1.199771881103515625},
{ 1.4589712619781494140625, 1.98999631404876708984375, 1.90376341342926025390625, 1.21992015838623046875, 1.5680410861968994140625, 1.7640974521636962890625, 1.0702152252197265625, 1.1684830188751220703125, 1.82879149913787841796875, 1.91865241527557373046875, 1.53966522216796875, 1.4307692050933837890625, 1.10263478755950927734375, 1.2105200290679931640625, 1.18463408946990966796875, 1.867519378662109375, 1.60718405246734619140625, 1.672682285308837890625, 1.745562076568603515625, 1.346065998077392578125, 1.127191066741943359375, 1.76268136501312255859375, 1.4167468547821044921875, 1.26377093791961669921875, 1.9754841327667236328125, 1.26105785369873046875, 1.18228137493133544921875, 1.82146251201629638671875, 1.7039048671722412109375, 1.91978776454925537109375, 1.9019906520843505859375, 1.04687368869781494140625, 1.56424605846405029296875, 1.860720157623291015625, 1.14736974239349365234375, 1.56807911396026611328125, 1.71918952465057373046875, 1.72401463985443115234375, 1.78752100467681884765625, 1.13693273067474365234375, 1.20324289798736572265625, 1.56657898426055908203125, 1.3250920772552490234375, 1.902505397796630859375, 1.63367748260498046875, 1.510506153106689453125, 1.98221266269683837890625, 1.4345219135284423828125, 1.6714661121368408203125, 1.14151251316070556640625, 1.53643238544464111328125, 1.4967992305755615234375, 1.2322199344635009765625, 1.657374858856201171875, 1.906658649444580078125, 1.57068347930908203125, 1.4471263885498046875, 1.76636803150177001953125, 1.48909342288970947265625, 1.12848758697509765625, 1.37388646602630615234375, 1.33570253849029541015625, 1.24317109584808349609375, 1.6569287776947021484375, 1.45765268802642822265625, 1.7899615764617919921875, 1.527496337890625, 1.43056619167327880859375, 1.74196588993072509765625, 1.25953924655914306640625, 1.68578088283538818359375, 1.03523790836334228515625, 1.8296930789947509765625, 1.4790775775909423828125, 1.38278138637542724609375, 1.64149916172027587890625, 1.5939652919769287109375, 1.43590414524078369140625, 1.6902372837066650390625, 1.02805936336517333984375, 1.6391143798828125, 1.76846969127655029296875, 1.92280757427215576171875, 1.35521972179412841796875, 1.51161086559295654296875, 1.9147851467132568359375, 1.22400867938995361328125, 1.6883108615875244140625, 1.66100180149078369140625, 1.01085984706878662109375, 1.9021522998809814453125, 1.2711298465728759765625, 1.15084755420684814453125, 1.5391385555267333984375, 1.51628220081329345703125, 1.54937839508056640625, 1.1196596622467041015625, 1.72693908214569091796875, 1.7121121883392333984375, 1.944099903106689453125},
{ 1.6948897838592529296875, 1.80796337127685546875, 1.3751170635223388671875, 1.43861103057861328125, 1.355367183685302734375, 1.13070213794708251953125, 1.53446948528289794921875, 1.08896672725677490234375, 1.06093299388885498046875, 1.10167694091796875, 1.90985071659088134765625, 1.99059736728668212890625, 1.00277233123779296875, 1.072656154632568359375, 1.55804646015167236328125, 1.82083284854888916015625, 1.35913074016571044921875, 1.91176593303680419921875, 1.62837159633636474609375, 1.84757936000823974609375, 1.193751811981201171875, 1.33942699432373046875, 1.63610780239105224609375, 1.6402566432952880859375, 1.1043148040771484375, 1.0142924785614013671875, 1.48594105243682861328125, 1.53073596954345703125, 1.62087166309356689453125, 1.36918580532073974609375, 1.2453992366790771484375, 1.82427692413330078125, 1.35428524017333984375, 1.1970374584197998046875, 1.6682891845703125, 1.76046526432037353515625, 1.89466631412506103515625, 1.9868228435516357421875, 1.46813488006591796875, 1.22415077686309814453125, 1.45981121063232421875, 1.00950014591217041015625, 1.3416144847869873046875, 1.20638406276702880859375, 1.2936394214630126953125, 1.1539471149444580078125, 1.7419979572296142578125, 1.0153543949127197265625, 1.81463062763214111328125, 1.512898921966552734375, 1.40258467197418212890625, 1.23732757568359375, 1.5142629146575927734375, 1.71888601779937744140625, 1.61014044284820556640625, 1.447582721710205078125, 1.60544979572296142578125, 1.030170917510986328125, 1.22833573818206787109375, 1.67135012149810791015625, 1.4209778308868408203125, 1.16668617725372314453125, 1.47118270397186279296875, 1.59474909305572509765625, 1.56194412708282470703125, 1.89597165584564208984375, 1.42647278308868408203125, 1.52572476863861083984375, 1.79619395732879638671875, 1.369112491607666015625, 1.3292143344879150390625, 1.1049859523773193359375, 1.7067577838897705078125, 1.20667588710784912109375, 1.5850696563720703125, 1.7669429779052734375, 1.09028947353363037109375, 1.33464896678924560546875, 1.543793201446533203125, 1.95064449310302734375, 1.1055033206939697265625, 1.5703766345977783203125, 1.0226686000823974609375, 1.0607154369354248046875, 1.17161166667938232421875, 1.95849835872650146484375, 1.5799462795257568359375, 1.17829430103302001953125, 1.61676251888275146484375, 1.85688602924346923828125, 1.538280963897705078125, 1.52197110652923583984375, 1.076476573944091796875, 1.7725818157196044921875, 1.75816929340362548828125, 1.65872418880462646484375, 1.64208543300628662109375, 1.94773495197296142578125, 1.16138684749603271484375, 1.46485805511474609375},
{ 1.69553959369659423828125, 1.00442636013031005859375, 1.836941242218017578125, 1.87599122524261474609375, 1.48617267608642578125, 1.90193474292755126953125, 1.1527431011199951171875, 1.84194147586822509765625, 1.78273069858551025390625, 1.60015070438385009765625, 1.48217165470123291015625, 1.055967807769775390625, 1.62716758251190185546875, 1.50034236907958984375, 1.54821145534515380859375, 1.36501705646514892578125, 1.9762325286865234375, 1.93224430084228515625, 1.43786036968231201171875, 1.712471485137939453125, 1.78740680217742919921875, 1.1774957180023193359375, 1.06306743621826171875, 1.53658640384674072265625, 1.854841709136962890625, 1.2430775165557861328125, 1.37167072296142578125, 1.918927669525146484375, 1.3952958583831787109375, 1.384749889373779296875, 1.3083341121673583984375, 1.4828093051910400390625, 1.38407313823699951171875, 1.38048994541168212890625, 1.52548515796661376953125, 1.04173052310943603515625, 1.6409595012664794921875, 1.55392873287200927734375, 1.84425294399261474609375, 1.9978139400482177734375, 1.6661608219146728515625, 1.54778945446014404296875, 1.46540486812591552734375, 1.49024260044097900390625, 1.22624075412750244140625, 1.84732449054718017578125, 1.93028461933135986328125, 1.2936975955963134765625, 1.6900575160980224609375, 1.05375301837921142578125, 1.831749439239501953125, 1.4667956829071044921875, 1.114701747894287109375, 1.90769851207733154296875, 1.2751080989837646484375, 1.75052630901336669921875, 1.08143436908721923828125, 1.062626361846923828125, 1.0890576839447021484375, 1.7166898250579833984375, 1.281623363494873046875, 1.6082808971405029296875, 1.78662145137786865234375, 1.66633450984954833984375, 1.852681636810302734375, 1.3441236019134521484375, 1.27608668804168701171875, 1.2781941890716552734375, 1.46400487422943115234375, 1.802770137786865234375, 1.32194149494171142578125, 1.0071258544921875, 1.1529083251953125, 1.0234279632568359375, 1.75581264495849609375, 1.23254668712615966796875, 1.9105646610260009765625, 1.07533395290374755859375, 1.4374034404754638671875, 1.156872272491455078125, 1.01794183254241943359375, 1.33119142055511474609375, 1.9654304981231689453125, 1.45395362377166748046875, 1.1317398548126220703125, 1.49060833454132080078125, 1.13856160640716552734375, 1.667514801025390625, 1.12032878398895263671875, 1.35353434085845947265625, 1.16635358333587646484375, 1.35959041118621826171875, 1.64968597888946533203125, 1.34369838237762451171875, 1.63018906116485595703125, 1.00896322727203369140625, 1.5193340778350830078125, 1.78204631805419921875, 1.194214344024658203125, 1.6596012115478515625},
{ 1.9101779460906982421875, 1.0662772655487060546875, 1.31909573078155517578125, 1.41094172000885009765625, 1.6637852191925048828125, 1.2088639736175537109375, 1.10709857940673828125, 1.2231082916259765625, 1.196089267730712890625, 1.300036907196044921875, 1.15375959873199462890625, 1.87785446643829345703125, 1.151278018951416015625, 1.44437205791473388671875, 1.24816429615020751953125, 1.13148963451385498046875, 1.6879436969757080078125, 1.63389694690704345703125, 1.2367708683013916015625, 1.639493465423583984375, 1.25252044200897216796875, 1.95902740955352783203125, 1.17184841632843017578125, 1.54245269298553466796875, 1.10272133350372314453125, 1.5695054531097412109375, 1.2099139690399169921875, 1.80199897289276123046875, 1.58097660541534423828125, 1.3853371143341064453125, 1.26017010211944580078125, 1.2867467403411865234375, 1.13787066936492919921875, 1.557729244232177734375, 1.38294255733489990234375, 1.60822999477386474609375, 1.10557973384857177734375, 1.68002736568450927734375, 1.9381172657012939453125, 1.70684015750885009765625, 1.2213094234466552734375, 1.74865353107452392578125, 1.48357856273651123046875, 1.1877639293670654296875, 1.9007318019866943359375, 1.87404310703277587890625, 1.4236462116241455078125, 1.40692007541656494140625, 1.261423587799072265625, 1.7415826320648193359375, 1.40751302242279052734375, 1.3068974018096923828125, 1.8963031768798828125, 1.8225476741790771484375, 1.4776823520660400390625, 1.002892017364501953125, 1.3970682621002197265625, 1.335039615631103515625, 1.96840572357177734375, 1.11864531040191650390625, 1.62763345241546630859375, 1.95492351055145263671875, 1.15411984920501708984375, 1.872380733489990234375, 1.74756729602813720703125, 1.27676594257354736328125, 1.647884845733642578125, 1.91274166107177734375, 1.98553049564361572265625, 1.02477180957794189453125, 1.54982125759124755859375, 1.90472924709320068359375, 1.16271293163299560546875, 1.01372230052947998046875, 1.34554767608642578125, 1.865639209747314453125, 1.96627128124237060546875, 1.8599121570587158203125, 1.554618358612060546875, 1.2509996891021728515625, 1.97276651859283447265625, 1.442087650299072265625, 1.12896025180816650390625, 1.79050910472869873046875, 1.4216015338897705078125, 1.112383365631103515625, 1.601311206817626953125, 1.0739729404449462890625, 1.738458156585693359375, 1.65726006031036376953125, 1.98365700244903564453125, 1.8872416019439697265625, 1.808735370635986328125, 1.00844252109527587890625, 1.415668964385986328125, 1.29814827442169189453125, 1.0009863376617431640625, 1.70385634899139404296875, 1.5631415843963623046875, 1.4924457073211669921875},
{ 1.0985658168792724609375, 1.76642954349517822265625, 1.35974407196044921875, 1.03201878070831298828125, 1.325711727142333984375, 1.9388859272003173828125, 1.82944881916046142578125, 1.73461544513702392578125, 1.0074481964111328125, 1.21529924869537353515625, 1.9566974639892578125, 1.58369147777557373046875, 1.71588051319122314453125, 1.3503310680389404296875, 1.75829756259918212890625, 1.96513402462005615234375, 1.18400299549102783203125, 1.86695349216461181640625, 1.79866397380828857421875, 1.63860952854156494140625, 1.26663577556610107421875, 1.95488679409027099609375, 1.5257568359375, 1.0110013484954833984375, 1.6513626575469970703125, 1.1190364360809326171875, 1.35701835155487060546875, 1.159846782684326171875, 1.319468975067138671875, 1.57793128490447998046875, 1.51531064510345458984375, 1.6067752838134765625, 1.756878376007080078125, 1.4121606349945068359375, 1.6148536205291748046875, 1.8409454822540283203125, 1.9150907993316650390625, 1.46281182765960693359375, 1.99716174602508544921875, 1.5924828052520751953125, 1.92211973667144775390625, 1.97990787029266357421875, 1.81698191165924072265625, 1.8559169769287109375, 1.54343020915985107421875, 1.02084445953369140625, 1.8782312870025634765625, 1.66361963748931884765625, 1.39287555217742919921875, 1.59882819652557373046875, 1.21993410587310791015625, 1.60924136638641357421875, 1.893635272979736328125, 1.581313610076904296875, 1.45215952396392822265625, 1.12114989757537841796875, 1.9891529083251953125, 1.33844077587127685546875, 1.841959476470947265625, 1.48586714267730712890625, 1.6040728092193603515625, 1.14147293567657470703125, 1.14930546283721923828125, 1.62150681018829345703125, 1.85517799854278564453125, 1.3112335205078125, 1.21302640438079833984375, 1.601212024688720703125, 1.01232802867889404296875, 1.11654436588287353515625, 1.286746501922607421875, 1.926592350006103515625, 1.20939576625823974609375, 1.4226627349853515625, 1.12482202053070068359375, 1.5511620044708251953125, 1.905205249786376953125, 1.08971893787384033203125, 1.818279266357421875, 1.6537768840789794921875, 1.094469547271728515625, 1.12115383148193359375, 1.3807518482208251953125, 1.16207218170166015625, 1.2687275409698486328125, 1.5621564388275146484375, 1.08441865444183349609375, 1.02590000629425048828125, 1.12728178501129150390625, 1.14810097217559814453125, 1.5459406375885009765625, 1.24076640605926513671875, 1.03813636302947998046875, 1.7029850482940673828125, 1.5623986721038818359375, 1.62126958370208740234375, 1.24893367290496826171875, 1.28786671161651611328125, 1.69723141193389892578125, 1.32453691959381103515625},
{ 1.0993020534515380859375, 1.6161720752716064453125, 1.12366259098052978515625, 1.4747447967529296875, 1.1177828311920166015625, 1.17318630218505859375, 1.43114507198333740234375, 1.7816746234893798828125, 1.50617349147796630859375, 1.24641001224517822265625, 1.0723247528076171875, 1.6442539691925048828125, 1.7581493854522705078125, 1.32408618927001953125, 1.8088209629058837890625, 1.12238109111785888671875, 1.59663379192352294921875, 1.84050273895263671875, 1.6119701862335205078125, 1.17121827602386474609375, 1.6222355365753173828125, 1.26193034648895263671875, 1.68626308441162109375, 1.10212862491607666015625, 1.711686611175537109375, 1.922559261322021484375, 1.242782115936279296875, 1.793613910675048828125, 1.16627919673919677734375, 1.6104371547698974609375, 1.02263915538787841796875, 1.6522524356842041015625, 1.6103038787841796875, 1.90340697765350341796875, 1.57041251659393310546875, 1.3236358165740966796875, 1.63948667049407958984375, 1.2550437450408935546875, 1.25758516788482666015625, 1.15330684185028076171875, 1.219426631927490234375, 1.83059251308441162109375, 1.05598175525665283203125, 1.39769732952117919921875, 1.83403337001800537109375, 1.09290564060211181640625, 1.06120622158050537109375, 1.18506491184234619140625, 1.38396465778350830078125, 1.1383807659149169921875, 1.766079425811767578125, 1.2264308929443359375, 1.835063457489013671875, 1.78289759159088134765625, 1.0840761661529541015625, 1.2765181064605712890625, 1.61679613590240478515625, 1.39775574207305908203125, 1.1227633953094482421875, 1.3446877002716064453125, 1.770689487457275390625, 1.495612621307373046875, 1.70723724365234375, 1.65587711334228515625, 1.84876835346221923828125, 1.06642019748687744140625, 1.653560638427734375, 1.36153733730316162109375, 1.56199324131011962890625, 1.66336286067962646484375, 1.7922008037567138671875, 1.00057089328765869140625, 1.1786973476409912109375, 1.23879528045654296875, 1.74146687984466552734375, 1.71026861667633056640625, 1.67302477359771728515625, 1.73017919063568115234375, 1.43094694614410400390625, 1.1872475147247314453125, 1.6233675479888916015625, 1.39602124691009521484375, 1.37494623661041259765625, 1.3983886241912841796875, 1.86080324649810791015625, 1.9018108844757080078125, 1.69592416286468505859375, 1.04177379608154296875, 1.86753261089324951171875, 1.15595710277557373046875, 1.89793193340301513671875, 1.75762355327606201171875, 1.9253165721893310546875, 1.89572632312774658203125, 1.3900501728057861328125, 1.08923494815826416015625, 1.01391446590423583984375, 1.0231802463531494140625, 1.7598259449005126953125, 1.19391834735870361328125},
{ 1.69111263751983642578125, 1.796710968017578125, 1.3039352893829345703125, 1.33320415019989013671875, 1.1389873027801513671875, 1.265498638153076171875, 1.9374363422393798828125, 1.5993421077728271484375, 1.2788753509521484375, 1.4297616481781005859375, 1.85939788818359375, 1.014061450958251953125, 1.03139317035675048828125, 1.32528960704803466796875, 1.79255998134613037109375, 1.77367389202117919921875, 1.41163921356201171875, 1.78352606296539306640625, 1.87836420536041259765625, 1.9131145477294921875, 1.365131855010986328125, 1.20500671863555908203125, 1.88789045810699462890625, 1.45437896251678466796875, 1.35374724864959716796875, 1.08279645442962646484375, 1.18279492855072021484375, 1.304960727691650390625, 1.6916561126708984375, 1.27592694759368896484375, 1.4262473583221435546875, 1.90628910064697265625, 1.6312615871429443359375, 1.03283417224884033203125, 1.0438690185546875, 1.63216602802276611328125, 1.19913709163665771484375, 1.7647960186004638671875, 1.43466949462890625, 1.9372043609619140625, 1.7819631099700927734375, 1.56936931610107421875, 1.93198454380035400390625, 1.25526487827301025390625, 1.4624650478363037109375, 1.5038280487060546875, 1.51441395282745361328125, 1.6478939056396484375, 1.10535109043121337890625, 1.6086003780364990234375, 1.26675832271575927734375, 1.2027609348297119140625, 1.1932489871978759765625, 1.6807062625885009765625, 1.5909569263458251953125, 1.18209564685821533203125, 1.412643909454345703125, 1.79719507694244384765625, 1.16702556610107421875, 1.9211261272430419921875, 1.98981630802154541015625, 1.58858263492584228515625, 1.663993358612060546875, 1.47651588916778564453125, 1.776778697967529296875, 1.26228940486907958984375, 1.20084059238433837890625, 1.0248014926910400390625, 1.08721363544464111328125, 1.37607753276824951171875, 1.55743658542633056640625, 1.01083004474639892578125, 1.28241097927093505859375, 1.36148846149444580078125, 1.13547646999359130859375, 1.04619681835174560546875, 1.107205867767333984375, 1.7972805500030517578125, 1.6694190502166748046875, 1.5576822757720947265625, 1.77591550350189208984375, 1.43286609649658203125, 1.68742465972900390625, 1.18569028377532958984375, 1.80827701091766357421875, 1.961749553680419921875, 1.7222919464111328125, 1.9326851367950439453125, 1.6153852939605712890625, 1.5449645519256591796875, 1.2723958492279052734375, 1.06162917613983154296875, 1.83562982082366943359375, 1.0845115184783935546875, 1.51262485980987548828125, 1.74442040920257568359375, 1.42063248157501220703125, 1.246795177459716796875, 1.75531899929046630859375, 1.460329532623291015625},
{ 1.23606216907501220703125, 1.66120660305023193359375, 1.14443814754486083984375, 1.82318794727325439453125, 1.31783807277679443359375, 1.2003421783447265625, 1.08607578277587890625, 1.38358414173126220703125, 1.09236562252044677734375, 1.363044261932373046875, 1.57725751399993896484375, 1.21630096435546875, 1.51804172992706298828125, 1.6208322048187255859375, 1.31112158298492431640625, 1.37818491458892822265625, 1.68485510349273681640625, 1.13736402988433837890625, 1.530366420745849609375, 1.50493991374969482421875, 1.3378238677978515625, 1.72937428951263427734375, 1.92568886280059814453125, 1.14706516265869140625, 1.150432586669921875, 1.57761085033416748046875, 1.284221172332763671875, 1.85579192638397216796875, 1.7480704784393310546875, 1.6877727508544921875, 1.88796865940093994140625, 1.019021511077880859375, 1.4814684391021728515625, 1.10144805908203125, 1.662247180938720703125, 1.4472625255584716796875, 1.950136661529541015625, 1.8570506572723388671875, 1.0741207599639892578125, 1.70956885814666748046875, 1.27580225467681884765625, 1.70075809955596923828125, 1.78083860874176025390625, 1.2194764614105224609375, 1.12584626674652099609375, 1.54744946956634521484375, 1.0282733440399169921875, 1.0709412097930908203125, 1.48674190044403076171875, 1.69164216518402099609375, 1.79935801029205322265625, 1.62427675724029541015625, 1.18749153614044189453125, 1.76842987537384033203125, 1.7125236988067626953125, 1.8420913219451904296875, 1.17306435108184814453125, 1.464419841766357421875, 1.6701371669769287109375, 1.375225543975830078125, 1.52783381938934326171875, 1.9786708354949951171875, 1.25693786144256591796875, 1.39869034290313720703125, 1.249015331268310546875, 1.2336299419403076171875, 1.8884761333465576171875, 1.197603702545166015625, 1.7701032161712646484375, 1.83607041835784912109375, 1.70955026149749755859375, 1.503128528594970703125, 1.2343089580535888671875, 1.78802955150604248046875, 1.2426440715789794921875, 1.57841050624847412109375, 1.517998218536376953125, 1.94774544239044189453125, 1.78636455535888671875, 1.05451488494873046875, 1.00412845611572265625, 1.2405948638916015625, 1.56387889385223388671875, 1.5163643360137939453125, 1.10568654537200927734375, 1.6200311183929443359375, 1.621352672576904296875, 1.83867681026458740234375, 1.53912580013275146484375, 1.7785208225250244140625, 1.47638690471649169921875, 1.2719023227691650390625, 1.34780418872833251953125, 1.60848176479339599609375, 1.51645565032958984375, 1.27816092967987060546875, 1.67542135715484619140625, 1.41322076320648193359375, 1.14734351634979248046875, 1.11717998981475830078125},
{ 1.86787045001983642578125, 1.69158327579498291015625, 1.1822321414947509765625, 1.8546047210693359375, 1.730327129364013671875, 1.03689289093017578125, 1.08607208728790283203125, 1.9562165737152099609375, 1.3021886348724365234375, 1.03461372852325439453125, 1.49687445163726806640625, 1.8737337589263916015625, 1.6396911144256591796875, 1.6481475830078125, 1.72417163848876953125, 1.104127407073974609375, 1.514647006988525390625, 1.85139429569244384765625, 1.05479061603546142578125, 1.635335445404052734375, 1.12538230419158935546875, 1.27718937397003173828125, 1.83879077434539794921875, 1.9697000980377197265625, 1.55767452716827392578125, 1.6157410144805908203125, 1.325401782989501953125, 1.89740550518035888671875, 1.99568951129913330078125, 1.76306831836700439453125, 1.24896037578582763671875, 1.01991474628448486328125, 1.6829192638397216796875, 1.7194383144378662109375, 1.16484820842742919921875, 1.02340805530548095703125, 1.6331198215484619140625, 1.23780357837677001953125, 1.5354297161102294921875, 1.70221984386444091796875, 1.091248035430908203125, 1.22223985195159912109375, 1.56598889827728271484375, 1.73227632045745849609375, 1.74439942836761474609375, 1.8763830661773681640625, 1.79066717624664306640625, 1.1945331096649169921875, 1.68274605274200439453125, 1.60186755657196044921875, 1.4084012508392333984375, 1.8484122753143310546875, 1.11047327518463134765625, 1.6467630863189697265625, 1.36885988712310791015625, 1.155240535736083984375, 1.8067176342010498046875, 1.50401246547698974609375, 1.2083818912506103515625, 1.05168628692626953125, 1.3365046977996826171875, 1.0598690509796142578125, 1.635913372039794921875, 1.4731972217559814453125, 1.011685848236083984375, 1.4923343658447265625, 1.86894571781158447265625, 1.62743794918060302734375, 1.60187613964080810546875, 1.91959512233734130859375, 1.719452381134033203125, 1.01772701740264892578125, 1.79539215564727783203125, 1.798461437225341796875, 1.4298267364501953125, 1.21647512912750244140625, 1.41018879413604736328125, 1.07280385494232177734375, 1.25881993770599365234375, 1.38862216472625732421875, 1.35479724407196044921875, 1.071990966796875, 1.817477703094482421875, 1.56507480144500732421875, 1.3392622470855712890625, 1.159327030181884765625, 1.1550781726837158203125, 1.66614401340484619140625, 1.336080074310302734375, 1.13048899173736572265625, 1.59506976604461669921875, 1.2749826908111572265625, 1.791135311126708984375, 1.361964702606201171875, 1.3210079669952392578125, 1.161022663116455078125, 1.58463871479034423828125, 1.70948994159698486328125, 1.7124931812286376953125, 1.553412914276123046875},
{ 1.156486034393310546875, 1.43110859394073486328125, 1.1644566059112548828125, 1.89508998394012451171875, 1.2124974727630615234375, 1.2563569545745849609375, 1.9630486965179443359375, 1.4925277233123779296875, 1.06162893772125244140625, 1.6715984344482421875, 1.69811356067657470703125, 1.761269092559814453125, 1.4609835147857666015625, 1.19998848438262939453125, 1.17204201221466064453125, 1.41721820831298828125, 1.38909971714019775390625, 1.49041461944580078125, 1.26412951946258544921875, 1.12623035907745361328125, 1.4443891048431396484375, 1.15343439579010009765625, 1.70401322841644287109375, 1.71504986286163330078125, 1.99357378482818603515625, 1.34721267223358154296875, 1.59510958194732666015625, 1.13224685192108154296875, 1.07012403011322021484375, 1.11345958709716796875, 1.6880519390106201171875, 1.1591551303863525390625, 1.0226953029632568359375, 1.46336734294891357421875, 1.404127597808837890625, 1.870810031890869140625, 1.91356647014617919921875, 1.21354806423187255859375, 1.60871601104736328125, 1.846885204315185546875, 1.6670768260955810546875, 1.5719716548919677734375, 1.1347258090972900390625, 1.1326305866241455078125, 1.96806371212005615234375, 1.47390258312225341796875, 1.0560324192047119140625, 1.94980967044830322265625, 1.91030013561248779296875, 1.66783773899078369140625, 1.71091556549072265625, 1.15763747692108154296875, 1.394931793212890625, 1.5514442920684814453125, 1.47549688816070556640625, 1.46371734142303466796875, 1.27891528606414794921875, 1.75749647617340087890625, 1.28717696666717529296875, 1.384978771209716796875, 1.273455142974853515625, 1.48981344699859619140625, 1.91807353496551513671875, 1.95861530303955078125, 1.59244143962860107421875, 1.609197139739990234375, 1.99845850467681884765625, 1.2030212879180908203125, 1.35088741779327392578125, 1.46936905384063720703125, 1.79019558429718017578125, 1.32872974872589111328125, 1.71336650848388671875, 1.50290811061859130859375, 1.710177898406982421875, 1.69935023784637451171875, 1.79245054721832275390625, 1.557188510894775390625, 1.603765010833740234375, 1.54250562191009521484375, 1.29714679718017578125, 1.98031651973724365234375, 1.7682211399078369140625, 1.410769939422607421875, 1.93133556842803955078125, 1.45706844329833984375, 1.7261521816253662109375, 1.392606258392333984375, 1.5422077178955078125, 1.5948278903961181640625, 1.748943328857421875, 1.0733034610748291015625, 1.0187022686004638671875, 1.25952374935150146484375, 1.13019669055938720703125, 1.24591410160064697265625, 1.93994343280792236328125, 1.6615669727325439453125, 1.20916831493377685546875, 1.37219226360321044921875},
{ 1.1917884349822998046875, 1.14420640468597412109375, 1.79353034496307373046875, 1.02471649646759033203125, 1.00737679004669189453125, 1.43618834018707275390625, 1.69189703464508056640625, 1.1333625316619873046875, 1.3678152561187744140625, 1.20195829868316650390625, 1.80077457427978515625, 1.1238586902618408203125, 1.7208194732666015625, 1.19776475429534912109375, 1.8660967350006103515625, 1.00281941890716552734375, 1.53827536106109619140625, 1.59269809722900390625, 1.8571856021881103515625, 1.1076700687408447265625, 1.9021759033203125, 1.4921276569366455078125, 1.92768943309783935546875, 1.00508391857147216796875, 1.8405590057373046875, 1.2111399173736572265625, 1.12652051448822021484375, 1.1394197940826416015625, 1.41344535350799560546875, 1.2979755401611328125, 1.85879194736480712890625, 1.231159687042236328125, 1.548775196075439453125, 1.307466983795166015625, 1.096755504608154296875, 1.42534577846527099609375, 1.6283462047576904296875, 1.32447612285614013671875, 1.3407394886016845703125, 1.19001865386962890625, 1.82375133037567138671875, 1.23733127117156982421875, 1.3300855159759521484375, 1.96465432643890380859375, 1.1823155879974365234375, 1.76126539707183837890625, 1.50408637523651123046875, 1.558601856231689453125, 1.46303403377532958984375, 1.21185314655303955078125, 1.21292388439178466796875, 1.29952085018157958984375, 1.72250902652740478515625, 1.02844846248626708984375, 1.67860567569732666015625, 1.93181908130645751953125, 1.6508882045745849609375, 1.047622203826904296875, 1.70590305328369140625, 1.265089511871337890625, 1.65780127048492431640625, 1.5265991687774658203125, 1.1432888507843017578125, 1.57254850864410400390625, 1.70829784870147705078125, 1.9166963100433349609375, 1.0938742160797119140625, 1.739472866058349609375, 1.908785343170166015625, 1.38675975799560546875, 1.876346588134765625, 1.16163742542266845703125, 1.84296572208404541015625, 1.09660243988037109375, 1.73590695858001708984375, 1.39375269412994384765625, 1.65777337551116943359375, 1.2204415798187255859375, 1.30520784854888916015625, 1.5479018688201904296875, 1.8993129730224609375, 1.72033631801605224609375, 1.81529009342193603515625, 1.44197905063629150390625, 1.09879624843597412109375, 1.86962473392486572265625, 1.0565207004547119140625, 1.4981262683868408203125, 1.10847985744476318359375, 1.52636206150054931640625, 1.0895307064056396484375, 1.39117109775543212890625, 1.1876032352447509765625, 1.15675771236419677734375, 1.7061519622802734375, 1.44706428050994873046875, 1.83832538127899169921875, 1.60861289501190185546875, 1.64035499095916748046875, 1.7913167476654052734375},
{ 1.6347582340240478515625, 1.52918684482574462890625, 1.24743783473968505859375, 1.3434269428253173828125, 1.1664907932281494140625, 1.62370789051055908203125, 1.9853723049163818359375, 1.44016182422637939453125, 1.33701229095458984375, 1.2499296665191650390625, 1.91993796825408935546875, 1.5150811672210693359375, 1.254866123199462890625, 1.0197527408599853515625, 1.8592631816864013671875, 1.07400608062744140625, 1.5273749828338623046875, 1.79190349578857421875, 1.403224468231201171875, 1.63130295276641845703125, 1.53407847881317138671875, 1.38287198543548583984375, 1.59188354015350341796875, 1.7958202362060546875, 1.45017015933990478515625, 1.02784979343414306640625, 1.30392551422119140625, 1.106826305389404296875, 1.01993572711944580078125, 1.59166681766510009765625, 1.40509593486785888671875, 1.61994731426239013671875, 1.08019006252288818359375, 1.52972924709320068359375, 1.646638393402099609375, 1.24310398101806640625, 1.83371484279632568359375, 1.5989568233489990234375, 1.313732147216796875, 1.8224494457244873046875, 1.87269604206085205078125, 1.31872081756591796875, 1.62392914295196533203125, 1.97830712795257568359375, 1.9521615505218505859375, 1.18178081512451171875, 1.87559223175048828125, 1.6911075115203857421875, 1.5134181976318359375, 1.61522257328033447265625, 1.34633219242095947265625, 1.6373260021209716796875, 1.95748996734619140625, 1.69139587879180908203125, 1.94144535064697265625, 1.27542078495025634765625, 1.6685550212860107421875, 1.58885133266448974609375, 1.5923511981964111328125, 1.6817696094512939453125, 1.7873833179473876953125, 1.8032782077789306640625, 1.40502941608428955078125, 1.136607646942138671875, 1.73477423191070556640625, 1.1084423065185546875, 1.5584580898284912109375, 1.45996534824371337890625, 1.48499357700347900390625, 1.267122745513916015625, 1.95305073261260986328125, 1.097605228424072265625, 1.58921182155609130859375, 1.49204981327056884765625, 1.6090939044952392578125, 1.95695984363555908203125, 1.94894111156463623046875, 1.65684282779693603515625, 1.81518471240997314453125, 1.99306905269622802734375, 1.33947288990020751953125, 1.25694692134857177734375, 1.02666842937469482421875, 1.544517993927001953125, 1.6833155155181884765625, 1.1205708980560302734375, 1.5140755176544189453125, 1.41937386989593505859375, 1.07363128662109375, 1.869625091552734375, 1.76155984401702880859375, 1.73112380504608154296875, 1.547674655914306640625, 1.13065814971923828125, 1.6153357028961181640625, 1.4846127033233642578125, 1.6102292537689208984375, 1.4957950115203857421875, 1.18211543560028076171875, 1.91198003292083740234375},
{ 1.23367416858673095703125, 1.47754704952239990234375, 1.55859768390655517578125, 1.248278141021728515625, 1.75038564205169677734375, 1.824651241302490234375, 1.1190078258514404296875, 1.38192379474639892578125, 1.80040776729583740234375, 1.00225961208343505859375, 1.02285969257354736328125, 1.51725804805755615234375, 1.44754505157470703125, 1.143451690673828125, 1.77084743976593017578125, 1.59827363491058349609375, 1.775866031646728515625, 1.38399255275726318359375, 1.02064800262451171875, 1.92711746692657470703125, 1.3506400585174560546875, 1.26077044010162353515625, 1.42285788059234619140625, 1.93752825260162353515625, 1.42927515506744384765625, 1.860233783721923828125, 1.20693099498748779296875, 1.71827411651611328125, 1.92225587368011474609375, 1.71682941913604736328125, 1.517116546630859375, 1.28658962249755859375, 1.10408008098602294921875, 1.461439609527587890625, 1.49839580059051513671875, 1.6116139888763427734375, 1.07419681549072265625, 1.21981966495513916015625, 1.132420063018798828125, 1.3878281116485595703125, 1.96794414520263671875, 1.761035442352294921875, 1.8234479427337646484375, 1.558492183685302734375, 1.9174859523773193359375, 1.3959009647369384765625, 1.73428332805633544921875, 1.58908331394195556640625, 1.76274979114532470703125, 1.62541544437408447265625, 1.8722121715545654296875, 1.49073255062103271484375, 1.51236474514007568359375, 1.5392014980316162109375, 1.9249403476715087890625, 1.59366309642791748046875, 1.55459821224212646484375, 1.96394217014312744140625, 1.84653151035308837890625, 1.07062733173370361328125, 1.61829388141632080078125, 1.3618185520172119140625, 1.1933438777923583984375, 1.21034443378448486328125, 1.483808994293212890625, 1.4789474010467529296875, 1.209968090057373046875, 1.44093787670135498046875, 1.4439523220062255859375, 1.74381816387176513671875, 1.66516506671905517578125, 1.103373050689697265625, 1.5149209499359130859375, 1.4157311916351318359375, 1.437802791595458984375, 1.9748942852020263671875, 1.39723813533782958984375, 1.48323476314544677734375, 1.852794170379638671875, 1.5424630641937255859375, 1.18669116497039794921875, 1.3125627040863037109375, 1.76703488826751708984375, 1.026195049285888671875, 1.83526813983917236328125, 1.0460720062255859375, 1.4053401947021484375, 1.152797698974609375, 1.36209583282470703125, 1.75067985057830810546875, 1.9463827610015869140625, 1.67900788784027099609375, 1.8143775463104248046875, 1.316301822662353515625, 1.85863053798675537109375, 1.66502892971038818359375, 1.9783298969268798828125, 1.10428893566131591796875, 1.9862835407257080078125, 1.49796879291534423828125},
{ 1.3458652496337890625, 1.38521182537078857421875, 1.66527712345123291015625, 1.79680669307708740234375, 1.29056537151336669921875, 1.90889275074005126953125, 1.27818286418914794921875, 1.61727058887481689453125, 1.10467207431793212890625, 1.5443489551544189453125, 1.34513187408447265625, 1.153158664703369140625, 1.5196533203125, 1.49808514118194580078125, 1.7952239513397216796875, 1.7998187541961669921875, 1.23060047626495361328125, 1.03202593326568603515625, 1.2516510486602783203125, 1.7072370052337646484375, 1.04466533660888671875, 1.0494537353515625, 1.555134296417236328125, 1.740975856781005859375, 1.77949774265289306640625, 1.43094551563262939453125, 1.037361621856689453125, 1.19311130046844482421875, 1.91168320178985595703125, 1.12031066417694091796875, 1.5444252490997314453125, 1.24317085742950439453125, 1.9751799106597900390625, 1.960528850555419921875, 1.21025931835174560546875, 1.16907036304473876953125, 1.70975697040557861328125, 1.27968680858612060546875, 1.98007690906524658203125, 1.3080518245697021484375, 1.9594314098358154296875, 1.22691619396209716796875, 1.88380825519561767578125, 1.7676212787628173828125, 1.32090580463409423828125, 1.8583314418792724609375, 1.05953776836395263671875, 1.886485576629638671875, 1.54200589656829833984375, 1.97296655178070068359375, 1.52694165706634521484375, 1.44549024105072021484375, 1.6701176166534423828125, 1.69871294498443603515625, 1.7107255458831787109375, 1.62855732440948486328125, 1.95062530040740966796875, 1.8282573223114013671875, 1.7140614986419677734375, 1.73362219333648681640625, 1.4753487110137939453125, 1.90501844882965087890625, 1.342026233673095703125, 1.6335713863372802734375, 1.58098065853118896484375, 1.0590851306915283203125, 1.87503814697265625, 1.9871804714202880859375, 1.9975244998931884765625, 1.593153476715087890625, 1.5922949314117431640625, 1.200050830841064453125, 1.74673175811767578125, 1.31846487522125244140625, 1.04521119594573974609375, 1.13554751873016357421875, 1.79053914546966552734375, 1.640742778778076171875, 1.08085548877716064453125, 1.57573711872100830078125, 1.429506778717041015625, 1.39613056182861328125, 1.61538851261138916015625, 1.43232452869415283203125, 1.45125520229339599609375, 1.43712937831878662109375, 1.15750014781951904296875, 1.70759093761444091796875, 1.02890300750732421875, 1.968534946441650390625, 1.08184707164764404296875, 1.2053310871124267578125, 1.369504451751708984375, 1.6333754062652587890625, 1.65249025821685791015625, 1.991791248321533203125, 1.11248648166656494140625, 1.34884917736053466796875, 1.7963325977325439453125, 1.606606006622314453125},
{ 1.8922617435455322265625, 1.626555919647216796875, 1.02373611927032470703125, 1.16579163074493408203125, 1.2369635105133056640625, 1.716059207916259765625, 1.36240637302398681640625, 1.002771854400634765625, 1.63828766345977783203125, 1.1208956241607666015625, 1.34804236888885498046875, 1.3423221111297607421875, 1.4694869518280029296875, 1.1537101268768310546875, 1.5232083797454833984375, 1.21229708194732666015625, 1.80767154693603515625, 1.90717709064483642578125, 1.208545207977294921875, 1.2135498523712158203125, 1.76974689960479736328125, 1.52743732929229736328125, 1.21370697021484375, 1.16836893558502197265625, 1.59835052490234375, 1.23753631114959716796875, 1.29829895496368408203125, 1.5189158916473388671875, 1.49778997898101806640625, 1.11086118221282958984375, 1.38281548023223876953125, 1.47566282749176025390625, 1.21998012065887451171875, 1.59457838535308837890625, 1.50957667827606201171875, 1.91583001613616943359375, 1.4003810882568359375, 1.7830712795257568359375, 1.5536663532257080078125, 1.0318229198455810546875, 1.64393508434295654296875, 1.441377162933349609375, 1.683869838714599609375, 1.72967040538787841796875, 1.36100423336029052734375, 1.77862548828125, 1.573610782623291015625, 1.7774617671966552734375, 1.3533084392547607421875, 1.9714748859405517578125, 1.3618891239166259765625, 1.70378434658050537109375, 1.14986217021942138671875, 1.4375507831573486328125, 1.36421835422515869140625, 1.44616115093231201171875, 1.09291231632232666015625, 1.858882904052734375, 1.53356349468231201171875, 1.74948787689208984375, 1.1738760471343994140625, 1.95534288883209228515625, 1.67127788066864013671875, 1.31447112560272216796875, 1.61927759647369384765625, 1.00808131694793701171875, 1.388041019439697265625, 1.696065425872802734375, 1.22668612003326416015625, 1.13296592235565185546875, 1.81479644775390625, 1.95191085338592529296875, 1.450653553009033203125, 1.30401861667633056640625, 1.0636885166168212890625, 1.04077064990997314453125, 1.23865139484405517578125, 1.12685310840606689453125, 1.43900024890899658203125, 1.9709682464599609375, 1.61700856685638427734375, 1.362112522125244140625, 1.39809119701385498046875, 1.69882547855377197265625, 1.026849269866943359375, 1.198906421661376953125, 1.26233422756195068359375, 1.777099609375, 1.41002976894378662109375, 1.2782490253448486328125, 1.678053379058837890625, 1.75342094898223876953125, 1.0450763702392578125, 1.4664962291717529296875, 1.827461719512939453125, 1.31873035430908203125, 1.1331226825714111328125, 1.37878322601318359375, 1.3895981311798095703125, 1.2057168483734130859375},
{ 1.65246212482452392578125, 1.25126516819000244140625, 1.83725464344024658203125, 1.8514120578765869140625, 1.97053897380828857421875, 1.96796691417694091796875, 1.7248413562774658203125, 1.2703969478607177734375, 1.83511197566986083984375, 1.97484576702117919921875, 1.61703503131866455078125, 1.14174091815948486328125, 1.09080851078033447265625, 1.54762041568756103515625, 1.3978917598724365234375, 1.3186771869659423828125, 1.19822275638580322265625, 1.513523101806640625, 1.7354032993316650390625, 1.84267139434814453125, 1.25735318660736083984375, 1.7122375965118408203125, 1.47993409633636474609375, 1.77935945987701416015625, 1.781040191650390625, 1.2068359851837158203125, 1.8126595020294189453125, 1.80448436737060546875, 1.2184031009674072265625, 1.24471652507781982421875, 1.14400279521942138671875, 1.53983402252197265625, 1.2282783985137939453125, 1.96854150295257568359375, 1.7620728015899658203125, 1.63917911052703857421875, 1.70265674591064453125, 1.87717401981353759765625, 1.231101512908935546875, 1.624209880828857421875, 1.540120601654052734375, 1.036615848541259765625, 1.53988111019134521484375, 1.4704740047454833984375, 1.16928184032440185546875, 1.0409452915191650390625, 1.000202178955078125, 1.94331443309783935546875, 1.82221877574920654296875, 1.7232539653778076171875, 1.89529073238372802734375, 1.6838061809539794921875, 1.55791437625885009765625, 1.61658465862274169921875, 1.878245830535888671875, 1.04469430446624755859375, 1.03569328784942626953125, 1.16486918926239013671875, 1.12047708034515380859375, 1.67633116245269775390625, 1.03865945339202880859375, 1.68386518955230712890625, 1.21014225482940673828125, 1.8626143932342529296875, 1.747133731842041015625, 1.072093963623046875, 1.800584316253662109375, 1.60692369937896728515625, 1.7620909214019775390625, 1.2717783451080322265625, 1.00876963138580322265625, 1.46805870532989501953125, 1.8785979747772216796875, 1.4797794818878173828125, 1.563724994659423828125, 1.146176815032958984375, 1.6092510223388671875, 1.10853481292724609375, 1.70497524738311767578125, 1.81872999668121337890625, 1.4576129913330078125, 1.49699532985687255859375, 1.83098089694976806640625, 1.22640264034271240234375, 1.9416511058807373046875, 1.37156355381011962890625, 1.8975751399993896484375, 1.50904941558837890625, 1.36717450618743896484375, 1.05703032016754150390625, 1.56640207767486572265625, 1.79163205623626708984375, 1.35127127170562744140625, 1.4375126361846923828125, 1.1033537387847900390625, 1.52015721797943115234375, 1.09574663639068603515625, 1.6673915386199951171875, 1.02700769901275634765625, 1.5476143360137939453125},
{ 1.63224887847900390625, 1.50706470012664794921875, 1.96991240978240966796875, 1.48726260662078857421875, 1.15980517864227294921875, 1.5127856731414794921875, 1.71181786060333251953125, 1.4224350452423095703125, 1.98085749149322509765625, 1.71142995357513427734375, 1.8628923892974853515625, 1.4911243915557861328125, 1.44021618366241455078125, 1.1166923046112060546875, 1.76342976093292236328125, 1.1702823638916015625, 1.9576427936553955078125, 1.48714053630828857421875, 1.8403937816619873046875, 1.912202358245849609375, 1.2387878894805908203125, 1.4746530055999755859375, 1.193355560302734375, 1.6679570674896240234375, 1.2361278533935546875, 1.522856235504150390625, 1.93043148517608642578125, 1.16083610057830810546875, 1.85990273952484130859375, 1.51556193828582763671875, 1.25422000885009765625, 1.90978300571441650390625, 1.43905413150787353515625, 1.175205230712890625, 1.297739505767822265625, 1.00283348560333251953125, 1.93216192722320556640625, 1.21128165721893310546875, 1.71036612987518310546875, 1.62055242061614990234375, 1.88838231563568115234375, 1.218784809112548828125, 1.993770599365234375, 1.30947148799896240234375, 1.1583850383758544921875, 1.32664394378662109375, 1.5878560543060302734375, 1.00552666187286376953125, 1.3552913665771484375, 1.59616100788116455078125, 1.70669591426849365234375, 1.8074958324432373046875, 1.0656108856201171875, 1.1694488525390625, 1.9244706630706787109375, 1.50043582916259765625, 1.81017935276031494140625, 1.16786825656890869140625, 1.5114057064056396484375, 1.829120635986328125, 1.75509655475616455078125, 1.340465545654296875, 1.51970922946929931640625, 1.5214784145355224609375, 1.17266309261322021484375, 1.4624102115631103515625, 1.6195089817047119140625, 1.0620291233062744140625, 1.6523182392120361328125, 1.48343193531036376953125, 1.684790134429931640625, 1.21532213687896728515625, 1.06157779693603515625, 1.4262588024139404296875, 1.12933313846588134765625, 1.29937326908111572265625, 1.256970882415771484375, 1.03505432605743408203125, 1.992650508880615234375, 1.20910298824310302734375, 1.54497778415679931640625, 1.1738550662994384765625, 1.77592480182647705078125, 1.18977344036102294921875, 1.89296782016754150390625, 1.97500813007354736328125, 1.02794587612152099609375, 1.36042606830596923828125, 1.89013612270355224609375, 1.73760879039764404296875, 1.681048870086669921875, 1.9873192310333251953125, 1.4584414958953857421875, 1.5759375095367431640625, 1.13705098628997802734375, 1.50736522674560546875, 1.31354427337646484375, 1.81789815425872802734375, 1.10318934917449951171875, 1.301568508148193359375},
{ 1.1534550189971923828125, 1.1780588626861572265625, 1.2184627056121826171875, 1.7309129238128662109375, 1.53307044506072998046875, 1.18754899501800537109375, 1.8475482463836669921875, 1.34144222736358642578125, 1.81614243984222412109375, 1.27078163623809814453125, 1.542729854583740234375, 1.50717103481292724609375, 1.169441699981689453125, 1.7160489559173583984375, 1.19575417041778564453125, 1.07632768154144287109375, 1.21554982662200927734375, 1.54675018787384033203125, 1.75964677333831787109375, 1.2064666748046875, 1.93129634857177734375, 1.85732948780059814453125, 1.52215039730072021484375, 1.075406551361083984375, 1.29619634151458740234375, 1.8992137908935546875, 1.12916195392608642578125, 1.3421666622161865234375, 1.69088804721832275390625, 1.91674959659576416015625, 1.35817015171051025390625, 1.35790503025054931640625, 1.045569896697998046875, 1.73314082622528076171875, 1.641693115234375, 1.12685620784759521484375, 1.73843872547149658203125, 1.08638668060302734375, 1.3407154083251953125, 1.01726806163787841796875, 1.244126796722412109375, 1.71521842479705810546875, 1.7681262493133544921875, 1.222339630126953125, 1.53213942050933837890625, 1.195037364959716796875, 1.9621565341949462890625, 1.9711589813232421875, 1.215292453765869140625, 1.5238521099090576171875, 1.209816455841064453125, 1.4896399974822998046875, 1.4481499195098876953125, 1.45821654796600341796875, 1.32033312320709228515625, 1.71146023273468017578125, 1.57546103000640869140625, 1.5991666316986083984375, 1.64858758449554443359375, 1.73899877071380615234375, 1.5305984020233154296875, 1.2281582355499267578125, 1.86855304241180419921875, 1.05427300930023193359375, 1.98399507999420166015625, 1.89300501346588134765625, 1.49673187732696533203125, 1.47987663745880126953125, 1.2415821552276611328125, 1.7438151836395263671875, 1.16559326648712158203125, 1.889916896820068359375, 1.8932263851165771484375, 1.618929386138916015625, 1.64701068401336669921875, 1.6709525585174560546875, 1.21116721630096435546875, 1.88085854053497314453125, 1.625699520111083984375, 1.9329307079315185546875, 1.2984549999237060546875, 1.002220630645751953125, 1.2226541042327880859375, 1.47012460231781005859375, 1.98738801479339599609375, 1.901678562164306640625, 1.2685859203338623046875, 1.47207152843475341796875, 1.4879500865936279296875, 1.02987802028656005859375, 1.327360630035400390625, 1.98450958728790283203125, 1.78624820709228515625, 1.20538425445556640625, 1.46943569183349609375, 1.1203155517578125, 1.79294955730438232421875, 1.2006199359893798828125, 1.79529798030853271484375, 1.0204427242279052734375},
{ 1.07780301570892333984375, 1.70890080928802490234375, 1.5648577213287353515625, 1.33765971660614013671875, 1.2748835086822509765625, 1.94110214710235595703125, 1.83347833156585693359375, 1.15574359893798828125, 1.44148147106170654296875, 1.32310163974761962890625, 1.31711137294769287109375, 1.78925597667694091796875, 1.02482426166534423828125, 1.30987823009490966796875, 1.87838947772979736328125, 1.24822962284088134765625, 1.6056845188140869140625, 1.253627777099609375, 1.462708950042724609375, 1.10788249969482421875, 1.98431694507598876953125, 1.4272000789642333984375, 1.5591676235198974609375, 1.90705597400665283203125, 1.01639616489410400390625, 1.7975370883941650390625, 1.4115016460418701171875, 1.2966518402099609375, 1.19895458221435546875, 1.549109935760498046875, 1.979023456573486328125, 1.93806993961334228515625, 1.00631916522979736328125, 1.357356548309326171875, 1.64755904674530029296875, 1.15164577960968017578125, 1.97604930400848388671875, 1.4121191501617431640625, 1.69038593769073486328125, 1.3150875568389892578125, 1.544874668121337890625, 1.19108188152313232421875, 1.47916996479034423828125, 1.01191437244415283203125, 1.63463199138641357421875, 1.98320782184600830078125, 1.4449031352996826171875, 1.9298932552337646484375, 1.98820292949676513671875, 1.16217720508575439453125, 1.7888414859771728515625, 1.50947678089141845703125, 1.2554519176483154296875, 1.20982444286346435546875, 1.943441867828369140625, 1.34224069118499755859375, 1.82916295528411865234375, 1.48957574367523193359375, 1.78329980373382568359375, 1.3193209171295166015625, 1.43097746372222900390625, 1.7698867321014404296875, 1.58608734607696533203125, 1.52985179424285888671875, 1.4473321437835693359375, 1.4976794719696044921875, 1.74348986148834228515625, 1.9094030857086181640625, 1.01539576053619384765625, 1.821780681610107421875, 1.2221438884735107421875, 1.63841760158538818359375, 1.8590071201324462890625, 1.36635875701904296875, 1.7745749950408935546875, 1.2906486988067626953125, 1.874612331390380859375, 1.7543613910675048828125, 1.900134563446044921875, 1.731597900390625, 1.46720278263092041015625, 1.88095319271087646484375, 1.55593764781951904296875, 1.76695191860198974609375, 1.636251926422119140625, 1.93695271015167236328125, 1.61780083179473876953125, 1.541020870208740234375, 1.81165313720703125, 1.18227064609527587890625, 1.09117901325225830078125, 1.68517529964447021484375, 1.43965756893157958984375, 1.46934688091278076171875, 1.07210338115692138671875, 1.2162837982177734375, 1.318810939788818359375, 1.51658809185028076171875, 1.4581186771392822265625, 1.185150623321533203125},
{ 1.93180525302886962890625, 1.409221172332763671875, 1.07495272159576416015625, 1.05184733867645263671875, 1.9856512546539306640625, 1.558795452117919921875, 1.949677944183349609375, 1.7877342700958251953125, 1.135057926177978515625, 1.97455227375030517578125, 1.35256206989288330078125, 1.4606525897979736328125, 1.296674251556396484375, 1.86946642398834228515625, 1.954526424407958984375, 1.91968548297882080078125, 1.8703033924102783203125, 1.06271350383758544921875, 1.9526154994964599609375, 1.1318356990814208984375, 1.5123403072357177734375, 1.1906077861785888671875, 1.21843397617340087890625, 1.767963409423828125, 1.65920937061309814453125, 1.667540073394775390625, 1.1965849399566650390625, 1.53872406482696533203125, 1.80080139636993408203125, 1.39691448211669921875, 1.55310690402984619140625, 1.28050518035888671875, 1.50391185283660888671875, 1.23208630084991455078125, 1.5739114284515380859375, 1.79136431217193603515625, 1.18567788600921630859375, 1.18729984760284423828125, 1.31322062015533447265625, 1.41696631908416748046875, 1.63701593875885009765625, 1.39862525463104248046875, 1.49200475215911865234375, 1.38652133941650390625, 1.2960593700408935546875, 1.8348963260650634765625, 1.1464192867279052734375, 1.89872157573699951171875, 1.271595478057861328125, 1.758648395538330078125, 1.02624309062957763671875, 1.95767915248870849609375, 1.11650371551513671875, 1.937055110931396484375, 1.7433154582977294921875, 1.9588639736175537109375, 1.3511927127838134765625, 1.6028664112091064453125, 1.66997373104095458984375, 1.02504050731658935546875, 1.7370378971099853515625, 1.16534578800201416015625, 1.58749091625213623046875, 1.09220564365386962890625, 1.29981899261474609375, 1.67120826244354248046875, 1.0845127105712890625, 1.7455265522003173828125, 1.10315763950347900390625, 1.01555716991424560546875, 1.70549571514129638671875, 1.80527746677398681640625, 1.77195441722869873046875, 1.902822017669677734375, 1.849144458770751953125, 1.66277754306793212890625, 1.76582705974578857421875, 1.55769634246826171875, 1.41684901714324951171875, 1.366328716278076171875, 1.40254747867584228515625, 1.1860744953155517578125, 1.21112263202667236328125, 1.45715248584747314453125, 1.63147938251495361328125, 1.18598949909210205078125, 1.08403873443603515625, 1.55532777309417724609375, 1.557015895843505859375, 1.10855090618133544921875, 1.83566915988922119140625, 1.695728778839111328125, 1.712016582489013671875, 1.36888158321380615234375, 1.86252117156982421875, 1.41396176815032958984375, 1.0812456607818603515625, 1.707055568695068359375, 1.55597507953643798828125, 1.58230304718017578125},
{ 1.399035930633544921875, 1.45072174072265625, 1.9956362247467041015625, 1.0515918731689453125, 1.2176115512847900390625, 1.1232001781463623046875, 1.70739018917083740234375, 1.59269630908966064453125, 1.14333498477935791015625, 1.84003460407257080078125, 1.1154758930206298828125, 1.52487838268280029296875, 1.82546031475067138671875, 1.9564726352691650390625, 1.7982242107391357421875, 1.69398629665374755859375, 1.79287993907928466796875, 1.06482231616973876953125, 1.10032379627227783203125, 1.28839743137359619140625, 1.41506254673004150390625, 1.8928897380828857421875, 1.4687578678131103515625, 1.11245596408843994140625, 1.61299037933349609375, 1.9524166584014892578125, 1.5387420654296875, 1.60991036891937255859375, 1.3200972080230712890625, 1.93751752376556396484375, 1.96966230869293212890625, 1.63735103607177734375, 1.6932051181793212890625, 1.8731176853179931640625, 1.0310115814208984375, 1.9876472949981689453125, 1.07346236705780029296875, 1.01339042186737060546875, 1.938327789306640625, 1.6633856296539306640625, 1.69728124141693115234375, 1.4901945590972900390625, 1.93913161754608154296875, 1.90030670166015625, 1.15727484226226806640625, 1.711512088775634765625, 1.148863315582275390625, 1.940742969512939453125, 1.613194942474365234375, 1.50988519191741943359375, 1.1368205547332763671875, 1.55705630779266357421875, 1.7528698444366455078125, 1.04085445404052734375, 1.26209628582000732421875, 1.32507503032684326171875, 1.5031411647796630859375, 1.43139588832855224609375, 1.7595155239105224609375, 1.64753210544586181640625, 1.49080169200897216796875, 1.178358554840087890625, 1.57557332515716552734375, 1.52750217914581298828125, 1.25353324413299560546875, 1.29690206050872802734375, 1.95437204837799072265625, 1.09183919429779052734375, 1.20084345340728759765625, 1.21893417835235595703125, 1.7735593318939208984375, 1.864614009857177734375, 1.32500362396240234375, 1.441547870635986328125, 1.63026487827301025390625, 1.7905514240264892578125, 1.6619865894317626953125, 1.92545950412750244140625, 1.67703831195831298828125, 1.0084683895111083984375, 1.5024034976959228515625, 1.243445873260498046875, 1.207787036895751953125, 1.37471103668212890625, 1.3524417877197265625, 1.47878181934356689453125, 1.99371302127838134765625, 1.73659229278564453125, 1.64480245113372802734375, 1.87367784976959228515625, 1.36925065517425537109375, 1.9558293819427490234375, 1.19963800907135009765625, 1.2277171611785888671875, 1.068004608154296875, 1.68198144435882568359375, 1.43548929691314697265625, 1.04629385471343994140625, 1.80868661403656005859375, 1.87588655948638916015625},
{ 1.4390499591827392578125, 1.63105332851409912109375, 1.08309996128082275390625, 1.1319711208343505859375, 1.76831305027008056640625, 1.9818441867828369140625, 1.45733106136322021484375, 1.820064544677734375, 1.04753386974334716796875, 1.55071818828582763671875, 1.53388106822967529296875, 1.31597411632537841796875, 1.0897233486175537109375, 1.85619175434112548828125, 1.7530806064605712890625, 1.44424688816070556640625, 1.40589082241058349609375, 1.5815765857696533203125, 1.7337267398834228515625, 1.64344322681427001953125, 1.8534810543060302734375, 1.66091644763946533203125, 1.29652118682861328125, 1.4270746707916259765625, 1.03481185436248779296875, 1.1149251461029052734375, 1.237507343292236328125, 1.5945417881011962890625, 1.4455115795135498046875, 1.63692378997802734375, 1.8515079021453857421875, 1.19207096099853515625, 1.372956752777099609375, 1.92877876758575439453125, 1.20556247234344482421875, 1.22365224361419677734375, 1.54470908641815185546875, 1.786838531494140625, 1.16236460208892822265625, 1.11197721958160400390625, 1.52695369720458984375, 1.937871456146240234375, 1.15369999408721923828125, 1.90937578678131103515625, 1.87293612957000732421875, 1.62500369548797607421875, 1.70388352870941162109375, 1.25875413417816162109375, 1.021399974822998046875, 1.94365596771240234375, 1.70319688320159912109375, 1.1045320034027099609375, 1.9450244903564453125, 1.9274814128875732421875, 1.43132603168487548828125, 1.15358066558837890625, 1.54886162281036376953125, 1.38430345058441162109375, 1.3307988643646240234375, 1.08615970611572265625, 1.81877422332763671875, 1.4820525646209716796875, 1.530422210693359375, 1.51685488224029541015625, 1.71987307071685791015625, 1.0847041606903076171875, 1.11872005462646484375, 1.70551598072052001953125, 1.84495449066162109375, 1.83821642398834228515625, 1.1673705577850341796875, 1.01819360256195068359375, 1.8129379749298095703125, 1.0064671039581298828125, 1.5046436786651611328125, 1.1380770206451416015625, 1.41730320453643798828125, 1.057191371917724609375, 1.23883879184722900390625, 1.026432037353515625, 1.5245282649993896484375, 1.99791967868804931640625, 1.03172171115875244140625, 1.633537769317626953125, 1.72252666950225830078125, 1.461914539337158203125, 1.12196290493011474609375, 1.35962450504302978515625, 1.7190849781036376953125, 1.54410851001739501953125, 1.09857451915740966796875, 1.26581156253814697265625, 1.49030029773712158203125, 1.38704144954681396484375, 1.42434799671173095703125, 1.03504407405853271484375, 1.17901790142059326171875, 1.516798496246337890625, 1.7092916965484619140625, 1.6830308437347412109375},
{ 1.92894685268402099609375, 1.7340679168701171875, 1.0191822052001953125, 1.35470521450042724609375, 1.92447364330291748046875, 1.223431110382080078125, 1.85754680633544921875, 1.5470430850982666015625, 1.6957237720489501953125, 1.3696649074554443359375, 1.9777495861053466796875, 1.11449420452117919921875, 1.66233670711517333984375, 1.1060197353363037109375, 1.83592903614044189453125, 1.76020658016204833984375, 1.55718433856964111328125, 1.130150318145751953125, 1.02567517757415771484375, 1.494700908660888671875, 1.2623088359832763671875, 1.67755329608917236328125, 1.48896634578704833984375, 1.78430879116058349609375, 1.39485943317413330078125, 1.04500424861907958984375, 1.47710704803466796875, 1.4496097564697265625, 1.64303028583526611328125, 1.86399590969085693359375, 1.261665821075439453125, 1.31386888027191162109375, 1.85199832916259765625, 1.12417519092559814453125, 1.5954120159149169921875, 1.60147440433502197265625, 1.85986006259918212890625, 1.94678080081939697265625, 1.92325365543365478515625, 1.086374759674072265625, 1.08356940746307373046875, 1.10808086395263671875, 1.34317529201507568359375, 1.99051678180694580078125, 1.8548755645751953125, 1.31280994415283203125, 1.31717479228973388671875, 1.632282733917236328125, 1.50625979900360107421875, 1.2176072597503662109375, 1.13220119476318359375, 1.82492792606353759765625, 1.206873416900634765625, 1.2044537067413330078125, 1.11109256744384765625, 1.025018215179443359375, 1.5484750270843505859375, 1.904109477996826171875, 1.5735127925872802734375, 1.2308676242828369140625, 1.88136851787567138671875, 1.46955168247222900390625, 1.54688942432403564453125, 1.63097536563873291015625, 1.4003398418426513671875, 1.59941136837005615234375, 1.22735154628753662109375, 1.0024640560150146484375, 1.9805948734283447265625, 1.31141173839569091796875, 1.19066655635833740234375, 1.85951673984527587890625, 1.76369726657867431640625, 1.46580517292022705078125, 1.35317814350128173828125, 1.3518145084381103515625, 1.4935052394866943359375, 1.03881084918975830078125, 1.682743549346923828125, 1.9129741191864013671875, 1.602109432220458984375, 1.14605224132537841796875, 1.6596715450286865234375, 1.65898501873016357421875, 1.04577076435089111328125, 1.815994739532470703125, 1.4876592159271240234375, 1.5366475582122802734375, 1.890857219696044921875, 1.5133826732635498046875, 1.05472981929779052734375, 1.22201001644134521484375, 1.649781703948974609375, 1.4126775264739990234375, 1.64417064189910888671875, 1.7688062191009521484375, 1.36693990230560302734375, 1.421494960784912109375, 1.39546978473663330078125, 1.006893157958984375},
{ 1.9540424346923828125, 1.51525402069091796875, 1.69068801403045654296875, 1.2790758609771728515625, 1.45455682277679443359375, 1.2382266521453857421875, 1.397606372833251953125, 1.49619424343109130859375, 1.67074143886566162109375, 1.5381042957305908203125, 1.17649924755096435546875, 1.1377022266387939453125, 1.67720425128936767578125, 1.58855473995208740234375, 1.9460906982421875, 1.44696986675262451171875, 1.64889490604400634765625, 1.97413480281829833984375, 1.64341533184051513671875, 1.46497452259063720703125, 1.38454234600067138671875, 1.65122711658477783203125, 1.12225592136383056640625, 1.3662388324737548828125, 1.58009243011474609375, 1.658977985382080078125, 1.8015804290771484375, 1.54476749897003173828125, 1.8521449565887451171875, 1.5802352428436279296875, 1.06398022174835205078125, 1.44998514652252197265625, 1.5113918781280517578125, 1.7524850368499755859375, 1.40410709381103515625, 1.1726741790771484375, 1.086054325103759765625, 1.228789806365966796875, 1.32711088657379150390625, 1.78091156482696533203125, 1.595320224761962890625, 1.48872554302215576171875, 1.99707710742950439453125, 1.40600669384002685546875, 1.5727818012237548828125, 1.89931976795196533203125, 1.6354639530181884765625, 1.078439235687255859375, 1.83987319469451904296875, 1.92598831653594970703125, 1.66954052448272705078125, 1.31379592418670654296875, 1.02930748462677001953125, 1.0934731960296630859375, 1.6308238506317138671875, 1.44870841503143310546875, 1.85851490497589111328125, 1.6967804431915283203125, 1.80351650714874267578125, 1.7267911434173583984375, 1.15307986736297607421875, 1.262116909027099609375, 1.62294423580169677734375, 1.13457810878753662109375, 1.62017858028411865234375, 1.75782811641693115234375, 1.8239929676055908203125, 1.98746073246002197265625, 1.3720166683197021484375, 1.55533611774444580078125, 1.33954703807830810546875, 1.2656257152557373046875, 1.1992661952972412109375, 1.14007627964019775390625, 1.9489262104034423828125, 1.69999182224273681640625, 1.594503879547119140625, 1.5724351406097412109375, 1.67632329463958740234375, 1.6081478595733642578125, 1.5256481170654296875, 1.6986882686614990234375, 1.9392416477203369140625, 1.480289936065673828125, 1.9593966007232666015625, 1.111937046051025390625, 1.44693279266357421875, 1.31515944004058837890625, 1.13466393947601318359375, 1.86304652690887451171875, 1.84883344173431396484375, 1.705979824066162109375, 1.58601868152618408203125, 1.92158329486846923828125, 1.133003711700439453125, 1.67639446258544921875, 1.91712152957916259765625, 1.38675224781036376953125, 1.77456414699554443359375, 1.26640450954437255859375},
{ 1.44833457469940185546875, 1.63413333892822265625, 1.868305683135986328125, 1.86929786205291748046875, 1.0976250171661376953125, 1.606265544891357421875, 1.3126261234283447265625, 1.50408899784088134765625, 1.588369846343994140625, 1.01788771152496337890625, 1.70406424999237060546875, 1.8429386615753173828125, 1.647703647613525390625, 1.776737689971923828125, 1.0074255466461181640625, 1.686528682708740234375, 1.43708717823028564453125, 1.26980125904083251953125, 1.3835604190826416015625, 1.295258045196533203125, 1.26324522495269775390625, 1.011749744415283203125, 1.27530205249786376953125, 1.4126799106597900390625, 1.03910338878631591796875, 1.0433776378631591796875, 1.2434031963348388671875, 1.0389392375946044921875, 1.4947259426116943359375, 1.08003962039947509765625, 1.55247402191162109375, 1.95421040058135986328125, 1.138253688812255859375, 1.4100887775421142578125, 1.50691998004913330078125, 1.99213421344757080078125, 1.9668407440185546875, 1.54331362247467041015625, 1.5368785858154296875, 1.06325614452362060546875, 1.92759239673614501953125, 1.6093757152557373046875, 1.03415739536285400390625, 1.92846333980560302734375, 1.12850296497344970703125, 1.50624716281890869140625, 1.93817126750946044921875, 1.72242224216461181640625, 1.79939258098602294921875, 1.79864823818206787109375, 1.071880340576171875, 1.2270162105560302734375, 1.0028450489044189453125, 1.3664844036102294921875, 1.22772681713104248046875, 1.894782543182373046875, 1.095145702362060546875, 1.80328452587127685546875, 1.00357282161712646484375, 1.6223506927490234375, 1.937218189239501953125, 1.5646378993988037109375, 1.3886382579803466796875, 1.2738792896270751953125, 1.8555624485015869140625, 1.86663186550140380859375, 1.09943759441375732421875, 1.9544937610626220703125, 1.35319197177886962890625, 1.33428943157196044921875, 1.66571772098541259765625, 1.0337238311767578125, 1.57057178020477294921875, 1.40000629425048828125, 1.2663958072662353515625, 1.91894114017486572265625, 1.49655520915985107421875, 1.45198905467987060546875, 1.31549608707427978515625, 1.57879626750946044921875, 1.929321765899658203125, 1.732692241668701171875, 1.79808771610260009765625, 1.81665694713592529296875, 1.1873149871826171875, 1.98725593090057373046875, 1.356222629547119140625, 1.29404509067535400390625, 1.5701792240142822265625, 1.86194336414337158203125, 1.12487232685089111328125, 1.30407440662384033203125, 1.56969749927520751953125, 1.052577972412109375, 1.31786572933197021484375, 1.294888019561767578125, 1.83072936534881591796875, 1.20298159122467041015625, 1.563827037811279296875, 1.143095493316650390625},
{ 1.5534114837646484375, 1.99211251735687255859375, 1.1772110462188720703125, 1.497776508331298828125, 1.33899796009063720703125, 1.06874847412109375, 1.9510905742645263671875, 1.107328891754150390625, 1.93818187713623046875, 1.1823685169219970703125, 1.76736927032470703125, 1.5573437213897705078125, 1.7711522579193115234375, 1.98015153408050537109375, 1.95089924335479736328125, 1.92212355136871337890625, 1.94828331470489501953125, 1.4537584781646728515625, 1.87218654155731201171875, 1.94467246532440185546875, 1.6685726642608642578125, 1.7752702236175537109375, 1.72082936763763427734375, 1.24763286113739013671875, 1.36807835102081298828125, 1.88312542438507080078125, 1.02895510196685791015625, 1.29422342777252197265625, 1.6183564662933349609375, 1.8180572986602783203125, 1.94465792179107666015625, 1.0991764068603515625, 1.7748987674713134765625, 1.80903148651123046875, 1.25543630123138427734375, 1.6896755695343017578125, 1.37556970119476318359375, 1.10918390750885009765625, 1.1616306304931640625, 1.3162930011749267578125, 1.2890446186065673828125, 1.58175754547119140625, 1.7998602390289306640625, 1.41392695903778076171875, 1.61324679851531982421875, 1.03604030609130859375, 1.5164616107940673828125, 1.31273972988128662109375, 1.3237850666046142578125, 1.31330287456512451171875, 1.89092540740966796875, 1.69909441471099853515625, 1.672391414642333984375, 1.122735500335693359375, 1.509334087371826171875, 1.826492786407470703125, 1.33535802364349365234375, 1.6273858547210693359375, 1.48779952526092529296875, 1.4765131473541259765625, 1.3119754791259765625, 1.78009688854217529296875, 1.74590003490447998046875, 1.6697471141815185546875, 1.57296979427337646484375, 1.4094436168670654296875, 1.03011858463287353515625, 1.12673747539520263671875, 1.458940029144287109375, 1.05567109584808349609375, 1.68727982044219970703125, 1.47891604900360107421875, 1.82879579067230224609375, 1.55663168430328369140625, 1.18798768520355224609375, 1.22954046726226806640625, 1.95819485187530517578125, 1.3837230205535888671875, 1.400063037872314453125, 1.4646320343017578125, 1.187980175018310546875, 1.72782480716705322265625, 1.6119806766510009765625, 1.3139135837554931640625, 1.32261812686920166015625, 1.33523666858673095703125, 1.3063075542449951171875, 1.1617462635040283203125, 1.778635501861572265625, 1.093616008758544921875, 1.683139801025390625, 1.60806751251220703125, 1.48305714130401611328125, 1.36791479587554931640625, 1.93354034423828125, 1.17932832241058349609375, 1.52184355258941650390625, 1.08631742000579833984375, 1.2629764080047607421875, 1.78943121433258056640625},
{ 1.57617855072021484375, 1.66475713253021240234375, 1.95066702365875244140625, 1.88165438175201416015625, 1.14995992183685302734375, 1.44347059726715087890625, 1.7346527576446533203125, 1.5052149295806884765625, 1.44116818904876708984375, 1.48842203617095947265625, 1.4832694530487060546875, 1.61508715152740478515625, 1.4902927875518798828125, 1.29707086086273193359375, 1.26959896087646484375, 1.06847178936004638671875, 1.58074271678924560546875, 1.74846827983856201171875, 1.10886180400848388671875, 1.5221297740936279296875, 1.82478439807891845703125, 1.6266949176788330078125, 1.91935503482818603515625, 1.33082044124603271484375, 1.4994795322418212890625, 1.8942978382110595703125, 1.23338901996612548828125, 1.1957385540008544921875, 1.13262188434600830078125, 1.715728759765625, 1.6582252979278564453125, 1.56295192241668701171875, 1.3386752605438232421875, 1.230781078338623046875, 1.0870144367218017578125, 1.7718389034271240234375, 1.4047107696533203125, 1.0780274868011474609375, 1.659732818603515625, 1.953526020050048828125, 1.62634479999542236328125, 1.66825759410858154296875, 1.47412049770355224609375, 1.67932498455047607421875, 1.39367580413818359375, 1.20791494846343994140625, 1.04661905765533447265625, 1.3591709136962890625, 1.027222156524658203125, 1.47253525257110595703125, 1.52330839633941650390625, 1.39005935192108154296875, 1.36386001110076904296875, 1.33018338680267333984375, 1.64084470272064208984375, 1.054483890533447265625, 1.0927600860595703125, 1.01489102840423583984375, 1.4373977184295654296875, 1.16887378692626953125, 1.8413255214691162109375, 1.15009415149688720703125, 1.713588714599609375, 1.48203098773956298828125, 1.01112973690032958984375, 1.5220706462860107421875, 1.243427276611328125, 1.8235683441162109375, 1.3638532161712646484375, 1.60337734222412109375, 1.73524916172027587890625, 1.00234663486480712890625, 1.3572213649749755859375, 1.8262882232666015625, 1.54265415668487548828125, 1.4549121856689453125, 1.23094236850738525390625, 1.6062314510345458984375, 1.12544286251068115234375, 1.6439344882965087890625, 1.8426439762115478515625, 1.1152269840240478515625, 1.2605545520782470703125, 1.20664322376251220703125, 1.253811359405517578125, 1.80532419681549072265625, 1.00300502777099609375, 1.8532664775848388671875, 1.06572496891021728515625, 1.68203890323638916015625, 1.396823406219482421875, 1.01546776294708251953125, 1.505397319793701171875, 1.32779157161712646484375, 1.93598997592926025390625, 1.2447836399078369140625, 1.26151096820831298828125, 1.67534434795379638671875, 1.77537405490875244140625, 1.36106121540069580078125},
{ 1.53123867511749267578125, 1.69167077541351318359375, 1.35089576244354248046875, 1.051766872406005859375, 1.8492329120635986328125, 1.7943389415740966796875, 1.0160677433013916015625, 1.79506146907806396484375, 1.75373935699462890625, 1.98653888702392578125, 1.37198102474212646484375, 1.19497668743133544921875, 1.313262462615966796875, 1.1760692596435546875, 1.7960999011993408203125, 1.0376074314117431640625, 1.0638358592987060546875, 1.2363049983978271484375, 1.92638671398162841796875, 1.33634316921234130859375, 1.2824599742889404296875, 1.71713459491729736328125, 1.30973947048187255859375, 1.41780579090118408203125, 1.010539531707763671875, 1.30589807033538818359375, 1.800428867340087890625, 1.7577874660491943359375, 1.82732117176055908203125, 1.03832376003265380859375, 1.70853650569915771484375, 1.56718742847442626953125, 1.37333047389984130859375, 1.2594661712646484375, 1.69839191436767578125, 1.12794983386993408203125, 1.62381017208099365234375, 1.334643840789794921875, 1.43701016902923583984375, 1.879001617431640625, 1.91215717792510986328125, 1.1103761196136474609375, 1.99252951145172119140625, 1.25218927860260009765625, 1.70336019992828369140625, 1.12532103061676025390625, 1.982648372650146484375, 1.25821673870086669921875, 1.1174373626708984375, 1.57121312618255615234375, 1.47306358814239501953125, 1.82258319854736328125, 1.20287322998046875, 1.00380027294158935546875, 1.625907421112060546875, 1.87151992321014404296875, 1.9600570201873779296875, 1.8037815093994140625, 1.09818518161773681640625, 1.167928218841552734375, 1.1147196292877197265625, 1.387744903564453125, 1.190212726593017578125, 1.8973166942596435546875, 1.641371250152587890625, 1.1691043376922607421875, 1.7440540790557861328125, 1.00373923778533935546875, 1.03673899173736572265625, 1.26903736591339111328125, 1.79195845127105712890625, 1.2757318019866943359375, 1.34320390224456787109375, 1.97742307186126708984375, 1.9547984600067138671875, 1.1822502613067626953125, 1.92223918437957763671875, 1.96377885341644287109375, 1.59050714969635009765625, 1.45860826969146728515625, 1.97784721851348876953125, 1.23819839954376220703125, 1.6925156116485595703125, 1.4424140453338623046875, 1.82999718189239501953125, 1.862288951873779296875, 1.5381906032562255859375, 1.159508228302001953125, 1.93806254863739013671875, 1.4101092815399169921875, 1.08727157115936279296875, 1.15990173816680908203125, 1.674258708953857421875, 1.1791064739227294921875, 1.1303088665008544921875, 1.103712558746337890625, 1.8470799922943115234375, 1.15105378627777099609375, 1.18710076808929443359375, 1.097103595733642578125},
{ 1.70298850536346435546875, 1.1551311016082763671875, 1.77822053432464599609375, 1.308598041534423828125, 1.06814873218536376953125, 1.70800685882568359375, 1.15312862396240234375, 1.60661792755126953125, 1.5469112396240234375, 1.44389522075653076171875, 1.1817505359649658203125, 1.65678441524505615234375, 1.4677293300628662109375, 1.783961772918701171875, 1.11380422115325927734375, 1.55055081844329833984375, 1.8980696201324462890625, 1.62080752849578857421875, 1.5747396945953369140625, 1.70627510547637939453125, 1.10534989833831787109375, 1.71690654754638671875, 1.40167701244354248046875, 1.64265692234039306640625, 1.76787698268890380859375, 1.85304343700408935546875, 1.22934353351593017578125, 1.50217521190643310546875, 1.93578350543975830078125, 1.72675096988677978515625, 1.8260118961334228515625, 1.3245258331298828125, 1.741965770721435546875, 1.60074710845947265625, 1.17943680286407470703125, 1.0700585842132568359375, 1.8630216121673583984375, 1.70137321949005126953125, 1.33279287815093994140625, 1.3932154178619384765625, 1.7301871776580810546875, 1.367031097412109375, 1.97061252593994140625, 1.165967464447021484375, 1.490274906158447265625, 1.94662058353424072265625, 1.75472271442413330078125, 1.751252651214599609375, 1.71661078929901123046875, 1.44797718524932861328125, 1.41018283367156982421875, 1.0264132022857666015625, 1.86997234821319580078125, 1.9363090991973876953125, 1.561222553253173828125, 1.15663325786590576171875, 1.50952541828155517578125, 1.68263542652130126953125, 1.31717860698699951171875, 1.11837589740753173828125, 1.2537620067596435546875, 1.0622231960296630859375, 1.60843265056610107421875, 1.97282135486602783203125, 1.4914381504058837890625, 1.20302498340606689453125, 1.2723491191864013671875, 1.88930404186248779296875, 1.842510700225830078125, 1.38411653041839599609375, 1.88921201229095458984375, 1.91875016689300537109375, 1.36907517910003662109375, 1.1841337680816650390625, 1.36816275119781494140625, 1.5171153545379638671875, 1.53630363941192626953125, 1.37971103191375732421875, 1.2831380367279052734375, 1.8188216686248779296875, 1.92338144779205322265625, 1.5939180850982666015625, 1.95880663394927978515625, 1.660195827484130859375, 1.6844451427459716796875, 1.69469773769378662109375, 1.3065073490142822265625, 1.35290622711181640625, 1.7595202922821044921875, 1.9433033466339111328125, 1.410186290740966796875, 1.2074005603790283203125, 1.835458278656005859375, 1.8927364349365234375, 1.86233484745025634765625, 1.80634343624114990234375, 1.05687415599822998046875, 1.03618371486663818359375, 1.849926471710205078125, 1.02805340290069580078125},
{ 1.205455303192138671875, 1.9903545379638671875, 1.81994116306304931640625, 1.31904423236846923828125, 1.71942174434661865234375, 1.91737020015716552734375, 1.72194659709930419921875, 1.83628451824188232421875, 1.282451629638671875, 1.617019176483154296875, 1.13997638225555419921875, 1.1238501071929931640625, 1.632849216461181640625, 1.5135796070098876953125, 1.36934149265289306640625, 1.529237270355224609375, 1.94129145145416259765625, 1.30549991130828857421875, 1.3681948184967041015625, 1.873330593109130859375, 1.959266185760498046875, 1.5513355731964111328125, 1.280968189239501953125, 1.41134083271026611328125, 1.91750919818878173828125, 1.0056869983673095703125, 1.711810588836669921875, 1.54374277591705322265625, 1.174441814422607421875, 1.70513737201690673828125, 1.7480251789093017578125, 1.27721202373504638671875, 1.6146085262298583984375, 1.8041894435882568359375, 1.7335069179534912109375, 1.4355628490447998046875, 1.79711401462554931640625, 1.1612033843994140625, 1.79218018054962158203125, 1.620686054229736328125, 1.8540613651275634765625, 1.67433464527130126953125, 1.10143578052520751953125, 1.92348575592041015625, 1.13898909091949462890625, 1.36747074127197265625, 1.91556918621063232421875, 1.38481724262237548828125, 1.6253087520599365234375, 1.22616922855377197265625, 1.33921754360198974609375, 1.20642483234405517578125, 1.05474245548248291015625, 1.78359496593475341796875, 1.85079729557037353515625, 1.71187865734100341796875, 1.83576047420501708984375, 1.45645809173583984375, 1.5759418010711669921875, 1.0575125217437744140625, 1.6920182704925537109375, 1.63095080852508544921875, 1.310938358306884765625, 1.693361759185791015625, 1.06079471111297607421875, 1.49868524074554443359375, 1.29616641998291015625, 1.574100017547607421875, 1.2414290904998779296875, 1.6426312923431396484375, 1.7395346164703369140625, 1.1199772357940673828125, 1.29375874996185302734375, 1.37305343151092529296875, 1.0899183750152587890625, 1.92775690555572509765625, 1.68655669689178466796875, 1.81344854831695556640625, 1.06059741973876953125, 1.23165404796600341796875, 1.6959686279296875, 1.7364838123321533203125, 1.40269339084625244140625, 1.11427199840545654296875, 1.55395114421844482421875, 1.14993345737457275390625, 1.42860686779022216796875, 1.467540264129638671875, 1.346708774566650390625, 1.63261663913726806640625, 1.28545558452606201171875, 1.70365238189697265625, 1.66313159465789794921875, 1.420335292816162109375, 1.97851145267486572265625, 1.2160027027130126953125, 1.99323284626007080078125, 1.24181091785430908203125, 1.14463818073272705078125, 1.59012424945831298828125},
{ 1.90462243556976318359375, 1.575728893280029296875, 1.56462657451629638671875, 1.80076277256011962890625, 1.631144046783447265625, 1.492143154144287109375, 1.74213254451751708984375, 1.84977054595947265625, 1.14448201656341552734375, 1.5661451816558837890625, 1.050216197967529296875, 1.10248959064483642578125, 1.50441265106201171875, 1.6953408718109130859375, 1.952340602874755859375, 1.7811107635498046875, 1.6933195590972900390625, 1.52611541748046875, 1.4087946414947509765625, 1.1495730876922607421875, 1.95213162899017333984375, 1.72707092761993408203125, 1.58763086795806884765625, 1.16200077533721923828125, 1.8662598133087158203125, 1.01246345043182373046875, 1.32560336589813232421875, 1.8611414432525634765625, 1.2015349864959716796875, 1.91564118862152099609375, 1.33910453319549560546875, 1.52680313587188720703125, 1.49014580249786376953125, 1.31248152256011962890625, 1.18510305881500244140625, 1.5742919445037841796875, 1.3665754795074462890625, 1.69482862949371337890625, 1.97208118438720703125, 1.2028496265411376953125, 1.6535396575927734375, 1.19393098354339599609375, 1.8209726810455322265625, 1.79409062862396240234375, 1.19792425632476806640625, 1.35387897491455078125, 1.0760996341705322265625, 1.0604403018951416015625, 1.456722259521484375, 1.6550419330596923828125, 1.26611030101776123046875, 1.94357192516326904296875, 1.8329715728759765625, 1.7875063419342041015625, 1.81491696834564208984375, 1.2628443241119384765625, 1.76169288158416748046875, 1.6745128631591796875, 1.50263273715972900390625, 1.113739490509033203125, 1.545826435089111328125, 1.245893955230712890625, 1.676509380340576171875, 1.01629960536956787109375, 1.9421699047088623046875, 1.96151149272918701171875, 1.2118752002716064453125, 1.81356525421142578125, 1.49731624126434326171875, 1.08469378948211669921875, 1.2230718135833740234375, 1.32001245021820068359375, 1.6335904598236083984375, 1.70567381381988525390625, 1.52439200878143310546875, 1.719990253448486328125, 1.48498761653900146484375, 1.51502621173858642578125, 1.84101760387420654296875, 1.71615827083587646484375, 1.48311007022857666015625, 1.32710492610931396484375, 1.76995623111724853515625, 1.42792427539825439453125, 1.6931054592132568359375, 1.353480815887451171875, 1.49097919464111328125, 1.039881229400634765625, 1.89960348606109619140625, 1.2263786792755126953125, 1.2275593280792236328125, 1.20024549961090087890625, 1.44265377521514892578125, 1.7721154689788818359375, 1.4578077793121337890625, 1.169293880462646484375, 1.803663730621337890625, 1.53453731536865234375, 1.8754119873046875, 1.71780121326446533203125},
{ 1.04845714569091796875, 1.10057294368743896484375, 1.77547800540924072265625, 1.37760293483734130859375, 1.8630921840667724609375, 1.14094316959381103515625, 1.8294074535369873046875, 1.0335712432861328125, 1.31550157070159912109375, 1.60256350040435791015625, 1.07248365879058837890625, 1.81545197963714599609375, 1.05402338504791259765625, 1.6508009433746337890625, 1.3018486499786376953125, 1.95050179958343505859375, 1.31171286106109619140625, 1.7212865352630615234375, 1.56733000278472900390625, 1.0729601383209228515625, 1.92977941036224365234375, 1.9808521270751953125, 1.56987845897674560546875, 1.05998599529266357421875, 1.13102424144744873046875, 1.53846824169158935546875, 1.8100049495697021484375, 1.61759579181671142578125, 1.0432779788970947265625, 1.40618193149566650390625, 1.48621881008148193359375, 1.6166012287139892578125, 1.9728376865386962890625, 1.21005356311798095703125, 1.1434648036956787109375, 1.17854607105255126953125, 1.42790508270263671875, 1.6510946750640869140625, 1.07156074047088623046875, 1.5116441249847412109375, 1.892023563385009765625, 1.7162058353424072265625, 1.4536349773406982421875, 1.49671649932861328125, 1.3475158214569091796875, 1.63911342620849609375, 1.264564037322998046875, 1.02312958240509033203125, 1.54892146587371826171875, 1.61130750179290771484375, 1.91940963268280029296875, 1.0747318267822265625, 1.04643404483795166015625, 1.24297964572906494140625, 1.67185688018798828125, 1.565791606903076171875, 1.95933926105499267578125, 1.77395975589752197265625, 1.76265132427215576171875, 1.92693507671356201171875, 1.49945199489593505859375, 1.03465402126312255859375, 1.318036556243896484375, 1.44108295440673828125, 1.24455392360687255859375, 1.1569821834564208984375, 1.99819183349609375, 1.3293883800506591796875, 1.16183102130889892578125, 1.03531551361083984375, 1.39566910266876220703125, 1.58717477321624755859375, 1.3813111782073974609375, 1.53741359710693359375, 1.18383121490478515625, 1.5698726177215576171875, 1.7193012237548828125, 1.46536219120025634765625, 1.01528894901275634765625, 1.3289573192596435546875, 1.95182514190673828125, 1.26651108264923095703125, 1.17033863067626953125, 1.69788706302642822265625, 1.8380610942840576171875, 1.49441087245941162109375, 1.9553997516632080078125, 1.1280395984649658203125, 1.8937790393829345703125, 1.0197508335113525390625, 1.85145199298858642578125, 1.274650096893310546875, 1.91477835178375244140625, 1.9912967681884765625, 1.4124734401702880859375, 1.33274900913238525390625, 1.25032484531402587890625, 1.546827793121337890625, 1.91387760639190673828125, 1.123098850250244140625},
{ 1.27407419681549072265625, 1.7509510517120361328125, 1.92813217639923095703125, 1.92008292675018310546875, 1.42165529727935791015625, 1.58729088306427001953125, 1.07788884639739990234375, 1.68109810352325439453125, 1.86001622676849365234375, 1.25324237346649169921875, 1.285953998565673828125, 1.4071428775787353515625, 1.7923657894134521484375, 1.3943359851837158203125, 1.73539483547210693359375, 1.566379547119140625, 1.21561431884765625, 1.86972558498382568359375, 1.91469848155975341796875, 1.571062564849853515625, 1.13131046295166015625, 1.9006254673004150390625, 1.2037098407745361328125, 1.3009755611419677734375, 1.5065791606903076171875, 1.96874797344207763671875, 1.20956838130950927734375, 1.3768689632415771484375, 1.98505890369415283203125, 1.46474111080169677734375, 1.85264599323272705078125, 1.183897495269775390625, 1.34783971309661865234375, 1.086625576019287109375, 1.2024848461151123046875, 1.64505779743194580078125, 1.72439992427825927734375, 1.98823297023773193359375, 1.06373417377471923828125, 1.74462544918060302734375, 1.55354404449462890625, 1.677642822265625, 1.31208813190460205078125, 1.80159318447113037109375, 1.294340610504150390625, 1.66562020778656005859375, 1.98022365570068359375, 1.49310791492462158203125, 1.8870589733123779296875, 1.86405336856842041015625, 1.09373724460601806640625, 1.62790834903717041015625, 1.96410715579986572265625, 1.734390735626220703125, 1.25708281993865966796875, 1.66976261138916015625, 1.81096971035003662109375, 1.18607914447784423828125, 1.98950958251953125, 1.01090526580810546875, 1.07714450359344482421875, 1.225000858306884765625, 1.81099879741668701171875, 1.9954755306243896484375, 1.23708057403564453125, 1.35191118717193603515625, 1.078201770782470703125, 1.6929543018341064453125, 1.80111598968505859375, 1.710875988006591796875, 1.5703771114349365234375, 1.421601772308349609375, 1.2764146327972412109375, 1.9877092838287353515625, 1.82532870769500732421875, 1.02189505100250244140625, 1.87790405750274658203125, 1.05841028690338134765625, 1.2253425121307373046875, 1.87996518611907958984375, 1.98921334743499755859375, 1.3876016139984130859375, 1.8331243991851806640625, 1.70103538036346435546875, 1.37360990047454833984375, 1.17696630954742431640625, 1.97773802280426025390625, 1.03285801410675048828125, 1.13493740558624267578125, 1.2636854648590087890625, 1.5905416011810302734375, 1.53915226459503173828125, 1.428553104400634765625, 1.7688758373260498046875, 1.291125774383544921875, 1.02304160594940185546875, 1.9222657680511474609375, 1.49602687358856201171875, 1.22325146198272705078125, 1.200491428375244140625},
{ 1.0794389247894287109375, 1.640786647796630859375, 1.2237460613250732421875, 1.75909650325775146484375, 1.88266026973724365234375, 1.243644237518310546875, 1.9547669887542724609375, 1.64852511882781982421875, 1.6469247341156005859375, 1.26371991634368896484375, 1.988669872283935546875, 1.00254642963409423828125, 1.8895893096923828125, 1.3008289337158203125, 1.42716217041015625, 1.21528720855712890625, 1.05257117748260498046875, 1.9086439609527587890625, 1.40198075771331787109375, 1.7089507579803466796875, 1.400785923004150390625, 1.93063294887542724609375, 1.34832894802093505859375, 1.6447536945343017578125, 1.67058455944061279296875, 1.5859959125518798828125, 1.02831470966339111328125, 1.38386380672454833984375, 1.4681911468505859375, 1.30560290813446044921875, 1.30438768863677978515625, 1.69833791255950927734375, 1.41814029216766357421875, 1.31793129444122314453125, 1.66277682781219482421875, 1.73205864429473876953125, 1.06171476840972900390625, 1.9850037097930908203125, 1.48692798614501953125, 1.711672306060791015625, 1.505382537841796875, 1.88832485675811767578125, 1.0809409618377685546875, 1.4075267314910888671875, 1.81923496723175048828125, 1.66481935977935791015625, 1.4430077075958251953125, 1.3446080684661865234375, 1.18542385101318359375, 1.592769622802734375, 1.788849353790283203125, 1.763478755950927734375, 1.79659903049468994140625, 1.92775261402130126953125, 1.825153827667236328125, 1.33121478557586669921875, 1.50434601306915283203125, 1.98857772350311279296875, 1.7730133533477783203125, 1.60234367847442626953125, 1.2176229953765869140625, 1.993224620819091796875, 1.14136207103729248046875, 1.22978127002716064453125, 1.05119907855987548828125, 1.64478003978729248046875, 1.25041306018829345703125, 1.9257695674896240234375, 1.2240912914276123046875, 1.46737563610076904296875, 1.50509655475616455078125, 1.1728146076202392578125, 1.70800220966339111328125, 1.8921258449554443359375, 1.41849696636199951171875, 1.684623241424560546875, 1.62575757503509521484375, 1.09306466579437255859375, 1.38529050350189208984375, 1.61704099178314208984375, 1.3997433185577392578125, 1.57308351993560791015625, 1.2051827907562255859375, 1.52898991107940673828125, 1.65034377574920654296875, 1.4998691082000732421875, 1.3563458919525146484375, 1.09340536594390869140625, 1.8443787097930908203125, 1.79184019565582275390625, 1.018856525421142578125, 1.5581738948822021484375, 1.69354093074798583984375, 1.9540855884552001953125, 1.848133087158203125, 1.9570710659027099609375, 1.3028337955474853515625, 1.664301395416259765625, 1.4983732700347900390625, 1.070698261260986328125},
{ 1.10872900485992431640625, 1.89599168300628662109375, 1.13742053508758544921875, 1.32900273799896240234375, 1.068091869354248046875, 1.26305687427520751953125, 1.31430447101593017578125, 1.758375644683837890625, 1.75353336334228515625, 1.89072954654693603515625, 1.88805496692657470703125, 1.51974809169769287109375, 1.39255464076995849609375, 1.66269958019256591796875, 1.23595321178436279296875, 1.16123867034912109375, 1.564951419830322265625, 1.32862365245819091796875, 1.5367939472198486328125, 1.264901638031005859375, 1.2887518405914306640625, 1.52756273746490478515625, 1.231823444366455078125, 1.84516394138336181640625, 1.85615432262420654296875, 1.5614197254180908203125, 1.235676288604736328125, 1.497263431549072265625, 1.4194643497467041015625, 1.918376445770263671875, 1.89731323719024658203125, 1.29568588733673095703125, 1.3270323276519775390625, 1.546331882476806640625, 1.71095907688140869140625, 1.442602634429931640625, 1.20919144153594970703125, 1.8763391971588134765625, 1.77703940868377685546875, 1.6663081645965576171875, 1.8141944408416748046875, 1.5960433483123779296875, 1.0131185054779052734375, 1.36965715885162353515625, 1.59415149688720703125, 1.17311871051788330078125, 1.114837169647216796875, 1.5285027027130126953125, 1.04096806049346923828125, 1.12870609760284423828125, 1.266849517822265625, 1.34013330936431884765625, 1.772281646728515625, 1.06085097789764404296875, 1.60376083850860595703125, 1.6217105388641357421875, 1.36739981174468994140625, 1.41794049739837646484375, 1.42106544971466064453125, 1.95870649814605712890625, 1.95323741436004638671875, 1.02214109897613525390625, 1.13608348369598388671875, 1.60334146022796630859375, 1.5402545928955078125, 1.3428361415863037109375, 1.9988987445831298828125, 1.1230208873748779296875, 1.10839354991912841796875, 1.520062923431396484375, 1.553296566009521484375, 1.79877364635467529296875, 1.44301640987396240234375, 1.137950897216796875, 1.847700595855712890625, 1.7736890316009521484375, 1.7208430767059326171875, 1.7481586933135986328125, 1.3961107730865478515625, 1.95135438442230224609375, 1.84588801860809326171875, 1.1433117389678955078125, 1.88904058933258056640625, 1.64429271221160888671875, 1.53539812564849853515625, 1.38043975830078125, 1.65445506572723388671875, 1.97239971160888671875, 1.1557905673980712890625, 1.55441439151763916015625, 1.86870753765106201171875, 1.01138198375701904296875, 1.30858957767486572265625, 1.32138621807098388671875, 1.517477512359619140625, 1.691194057464599609375, 1.16636431217193603515625, 1.17222297191619873046875, 1.106708526611328125, 1.44447600841522216796875},
{ 1.45594656467437744140625, 1.1235449314117431640625, 1.60499107837677001953125, 1.80796825885772705078125, 1.15317070484161376953125, 1.24726974964141845703125, 1.5560626983642578125, 1.31559789180755615234375, 1.399538516998291015625, 1.31024253368377685546875, 1.62901270389556884765625, 1.897679805755615234375, 1.759159564971923828125, 1.00883615016937255859375, 1.751598358154296875, 1.87107026576995849609375, 1.2480480670928955078125, 1.364374637603759765625, 1.84644997119903564453125, 1.8892955780029296875, 1.1075599193572998046875, 1.934071063995361328125, 1.97950839996337890625, 1.5284893512725830078125, 1.32783031463623046875, 1.7719643115997314453125, 1.2584626674652099609375, 1.62333047389984130859375, 1.92121136188507080078125, 1.13985693454742431640625, 1.48118698596954345703125, 1.3529798984527587890625, 1.94570910930633544921875, 1.96825301647186279296875, 1.5341789722442626953125, 1.0770184993743896484375, 1.27842175960540771484375, 1.06729495525360107421875, 1.54099667072296142578125, 1.92138493061065673828125, 1.13897669315338134765625, 1.08770143985748291015625, 1.7606961727142333984375, 1.1143124103546142578125, 1.36296808719635009765625, 1.2317047119140625, 1.2362692356109619140625, 1.07226657867431640625, 1.42539441585540771484375, 1.7139885425567626953125, 1.19308030605316162109375, 1.23588335514068603515625, 1.2140960693359375, 1.9726250171661376953125, 1.1873047351837158203125, 1.65590572357177734375, 1.5531923770904541015625, 1.63001239299774169921875, 1.00436580181121826171875, 1.32912158966064453125, 1.4765198230743408203125, 1.20381295680999755859375, 1.3073723316192626953125, 1.28430163860321044921875, 1.25106906890869140625, 1.56788980960845947265625, 1.035556316375732421875, 1.418136119842529296875, 1.150422573089599609375, 1.163244724273681640625, 1.55270993709564208984375, 1.0811727046966552734375, 1.97819221019744873046875, 1.9589560031890869140625, 1.545623779296875, 1.41375434398651123046875, 1.34145629405975341796875, 1.1631152629852294921875, 1.67252385616302490234375, 1.4319560527801513671875, 1.67419779300689697265625, 1.68376529216766357421875, 1.961509227752685546875, 1.86352288722991943359375, 1.01074135303497314453125, 1.33983790874481201171875, 1.95898950099945068359375, 1.73380720615386962890625, 1.50919091701507568359375, 1.82209074497222900390625, 1.62812244892120361328125, 1.7017066478729248046875, 1.724867343902587890625, 1.40404510498046875, 1.997251033782958984375, 1.14560091495513916015625, 1.6337454319000244140625, 1.4029238224029541015625, 1.55834162235260009765625, 1.99928963184356689453125},
{ 1.3905880451202392578125, 1.415421009063720703125, 1.337930202484130859375, 1.9289035797119140625, 1.15447521209716796875, 1.18301403522491455078125, 1.71397459506988525390625, 1.0813426971435546875, 1.40853631496429443359375, 1.63458120822906494140625, 1.24310719966888427734375, 1.7561767101287841796875, 1.25417387485504150390625, 1.1009557247161865234375, 1.44018268585205078125, 1.63421475887298583984375, 1.39117872714996337890625, 1.61878168582916259765625, 1.80516278743743896484375, 1.70754492282867431640625, 1.0786678791046142578125, 1.8289511203765869140625, 1.15905416011810302734375, 1.55297243595123291015625, 1.8460223674774169921875, 1.62504160404205322265625, 1.7298462390899658203125, 1.35545670986175537109375, 1.95382404327392578125, 1.55175387859344482421875, 1.98844802379608154296875, 1.68154895305633544921875, 1.60479342937469482421875, 1.9533488750457763671875, 1.23462593555450439453125, 1.0028297901153564453125, 1.90472757816314697265625, 1.87208592891693115234375, 1.9329416751861572265625, 1.9693462848663330078125, 1.57343685626983642578125, 1.6966598033905029296875, 1.79868900775909423828125, 1.4330501556396484375, 1.4056828022003173828125, 1.56063830852508544921875, 1.6338317394256591796875, 1.221234798431396484375, 1.4821159839630126953125, 1.4908998012542724609375, 1.91294097900390625, 1.6599729061126708984375, 1.1302127838134765625, 1.306070804595947265625, 1.11913311481475830078125, 1.84755408763885498046875, 1.63521325588226318359375, 1.26496303081512451171875, 1.83000659942626953125, 1.67792189121246337890625, 1.70105898380279541015625, 1.4650115966796875, 1.553579807281494140625, 1.61411201953887939453125, 1.66132986545562744140625, 1.99071204662322998046875, 1.31422889232635498046875, 1.21168935298919677734375, 1.44018208980560302734375, 1.812057971954345703125, 1.98862457275390625, 1.39218556880950927734375, 1.2632853984832763671875, 1.43297863006591796875, 1.3916699886322021484375, 1.46653664112091064453125, 1.1187610626220703125, 1.28977596759796142578125, 1.11243855953216552734375, 1.9085204601287841796875, 1.9681186676025390625, 1.899562835693359375, 1.1001107692718505859375, 1.87819385528564453125, 1.70719397068023681640625, 1.75870001316070556640625, 1.9999120235443115234375, 1.495330810546875, 1.87708675861358642578125, 1.99123382568359375, 1.23905050754547119140625, 1.8628594875335693359375, 1.12509763240814208984375, 1.7473337650299072265625, 1.8626539707183837890625, 1.8402998447418212890625, 1.4156658649444580078125, 1.35172951221466064453125, 1.119707584381103515625, 1.56720125675201416015625},
{ 1.2021491527557373046875, 1.79899179935455322265625, 1.73657953739166259765625, 1.083550930023193359375, 1.41775619983673095703125, 1.315019130706787109375, 1.61835515499114990234375, 1.37387716770172119140625, 1.2375872135162353515625, 1.54397213459014892578125, 1.83279025554656982421875, 1.20465528964996337890625, 1.16898930072784423828125, 1.40964066982269287109375, 1.87392628192901611328125, 1.54008042812347412109375, 1.88605773448944091796875, 1.219359874725341796875, 1.3830215930938720703125, 1.6771113872528076171875, 1.8780729770660400390625, 1.74994695186614990234375, 1.17198848724365234375, 1.70640850067138671875, 1.84793889522552490234375, 1.08363902568817138671875, 1.996831417083740234375, 1.723270416259765625, 1.8606197834014892578125, 1.1940310001373291015625, 1.0810840129852294921875, 1.7885720729827880859375, 1.24157798290252685546875, 1.28201234340667724609375, 1.3892467021942138671875, 1.63970196247100830078125, 1.22521150112152099609375, 1.86170494556427001953125, 1.650224208831787109375, 1.15150010585784912109375, 1.353291034698486328125, 1.5964009761810302734375, 1.13076317310333251953125, 1.54719483852386474609375, 1.62339818477630615234375, 1.88449966907501220703125, 1.15888917446136474609375, 1.359340667724609375, 1.38736248016357421875, 1.19544517993927001953125, 1.39734494686126708984375, 1.140756130218505859375, 1.99969899654388427734375, 1.1556644439697265625, 1.86702740192413330078125, 1.9254605770111083984375, 1.21604597568511962890625, 1.38450396060943603515625, 1.72042524814605712890625, 1.43961203098297119140625, 1.341601848602294921875, 1.08016765117645263671875, 1.765056610107421875, 1.06244504451751708984375, 1.12956345081329345703125, 1.35565471649169921875, 1.7369060516357421875, 1.53720748424530029296875, 1.429563045501708984375, 1.32469642162322998046875, 1.3238627910614013671875, 1.432098388671875, 1.58610594272613525390625, 1.937694072723388671875, 1.9391577243804931640625, 1.3512058258056640625, 1.587007999420166015625, 1.5676562786102294921875, 1.244801044464111328125, 1.8954436779022216796875, 1.9618332386016845703125, 1.34613692760467529296875, 1.42501986026763916015625, 1.37348949909210205078125, 1.43033087253570556640625, 1.2491719722747802734375, 1.20969521999359130859375, 1.26272237300872802734375, 1.3008735179901123046875, 1.9332172870635986328125, 1.64780032634735107421875, 1.42015969753265380859375, 1.61889421939849853515625, 1.32108652591705322265625, 1.63083755970001220703125, 1.04339516162872314453125, 1.0653240680694580078125, 1.9378879070281982421875, 1.16627609729766845703125, 1.381536006927490234375},
{ 1.996962070465087890625, 1.40098941326141357421875, 1.1961410045623779296875, 1.88525092601776123046875, 1.23581993579864501953125, 1.394692897796630859375, 1.9721572399139404296875, 1.3840377330780029296875, 1.502079486846923828125, 1.6433808803558349609375, 1.87885797023773193359375, 1.30868852138519287109375, 1.089403629302978515625, 1.3527648448944091796875, 1.48078048229217529296875, 1.2441871166229248046875, 1.82343804836273193359375, 1.461710453033447265625, 1.19866287708282470703125, 1.55164051055908203125, 1.89774799346923828125, 1.41567516326904296875, 1.520381927490234375, 1.51671588420867919921875, 1.4597561359405517578125, 1.69014585018157958984375, 1.9618909358978271484375, 1.248078823089599609375, 1.94668042659759521484375, 1.06407582759857177734375, 1.7781565189361572265625, 1.32583034038543701171875, 1.1714708805084228515625, 1.64332306385040283203125, 1.42409646511077880859375, 1.19994449615478515625, 1.15874755382537841796875, 1.63408720493316650390625, 1.76551759243011474609375, 1.33870589733123779296875, 1.73073780536651611328125, 1.86634719371795654296875, 1.04005253314971923828125, 1.12714731693267822265625, 1.8432142734527587890625, 1.06729888916015625, 1.568097591400146484375, 1.51548671722412109375, 1.67143166065216064453125, 1.8847920894622802734375, 1.2137506008148193359375, 1.41756546497344970703125, 1.44606459140777587890625, 1.6607687473297119140625, 1.5957477092742919921875, 1.8592853546142578125, 1.03914546966552734375, 1.954699993133544921875, 1.048401355743408203125, 1.87704622745513916015625, 1.30000126361846923828125, 1.817023754119873046875, 1.33253753185272216796875, 1.16618359088897705078125, 1.14119136333465576171875, 1.8125822544097900390625, 1.09643375873565673828125, 1.4794056415557861328125, 1.374445438385009765625, 1.79405963420867919921875, 1.08675587177276611328125, 1.77523148059844970703125, 1.29660022258758544921875, 1.42541897296905517578125, 1.1094958782196044921875, 1.1164281368255615234375, 1.02553737163543701171875, 1.45534050464630126953125, 1.7409098148345947265625, 1.31844818592071533203125, 1.5861213207244873046875, 1.74065864086151123046875, 1.788454532623291015625, 1.34786736965179443359375, 1.74613606929779052734375, 1.01979959011077880859375, 1.50172555446624755859375, 1.4708216190338134765625, 1.60222303867340087890625, 1.4362189769744873046875, 1.53339493274688720703125, 1.15144526958465576171875, 1.9158189296722412109375, 1.8118388652801513671875, 1.65014803409576416015625, 1.7003080844879150390625, 1.19909250736236572265625, 1.670485973358154296875, 1.1936213970184326171875, 1.67285287380218505859375},
{ 1.01132869720458984375, 1.2913405895233154296875, 1.0178329944610595703125, 1.242635250091552734375, 1.8323147296905517578125, 1.817656993865966796875, 1.975749969482421875, 1.05434191226959228515625, 1.40360867977142333984375, 1.10468566417694091796875, 1.72729051113128662109375, 1.360476016998291015625, 1.29102909564971923828125, 1.40324318408966064453125, 1.791764736175537109375, 1.965930938720703125, 1.12948668003082275390625, 1.09378445148468017578125, 1.17554318904876708984375, 1.69195783138275146484375, 1.14642131328582763671875, 1.64734065532684326171875, 1.2704944610595703125, 1.712102413177490234375, 1.43523967266082763671875, 1.3364565372467041015625, 1.502422809600830078125, 1.6381428241729736328125, 1.97875273227691650390625, 1.696128368377685546875, 1.72950518131256103515625, 1.35602748394012451171875, 1.4226133823394775390625, 1.734740734100341796875, 1.390729427337646484375, 1.6118118762969970703125, 1.598753452301025390625, 1.89500439167022705078125, 1.40433132648468017578125, 1.3475964069366455078125, 1.798821926116943359375, 1.76489412784576416015625, 1.816232204437255859375, 1.78746426105499267578125, 1.7976219654083251953125, 1.53858554363250732421875, 1.1984765529632568359375, 1.2734181880950927734375, 1.6265485286712646484375, 1.2273929119110107421875, 1.79766905307769775390625, 1.851318359375, 1.09702599048614501953125, 1.620707035064697265625, 1.4334127902984619140625, 1.60682022571563720703125, 1.07394516468048095703125, 1.99693202972412109375, 1.14674627780914306640625, 1.75131130218505859375, 1.49910151958465576171875, 1.58442318439483642578125, 1.5985810756683349609375, 1.45784914493560791015625, 1.16463220119476318359375, 1.77242481708526611328125, 1.21813929080963134765625, 1.44709861278533935546875, 1.23645365238189697265625, 1.07200706005096435546875, 1.10139119625091552734375, 1.32326984405517578125, 1.5276992321014404296875, 1.8270037174224853515625, 1.6594922542572021484375, 1.66005504131317138671875, 1.522156238555908203125, 1.674950122833251953125, 1.01722133159637451171875, 1.83656632900238037109375, 1.14770412445068359375, 1.758019924163818359375, 1.1614177227020263671875, 1.6232736110687255859375, 1.2997515201568603515625, 1.6839630603790283203125, 1.83941876888275146484375, 1.51794135570526123046875, 1.1146738529205322265625, 1.23704302310943603515625, 1.20749747753143310546875, 1.83156645298004150390625, 1.99325084686279296875, 1.83897483348846435546875, 1.2292995452880859375, 1.5243160724639892578125, 1.37410414218902587890625, 1.75986182689666748046875, 1.82428157329559326171875, 1.79146444797515869140625},
{ 1.079133510589599609375, 1.766148090362548828125, 1.39933073520660400390625, 1.47695910930633544921875, 1.39648342132568359375, 1.33128917217254638671875, 1.771216869354248046875, 1.72635042667388916015625, 1.2928059101104736328125, 1.69721806049346923828125, 1.82334434986114501953125, 1.32967197895050048828125, 1.54113399982452392578125, 1.09100818634033203125, 1.55079209804534912109375, 1.766316890716552734375, 1.06757724285125732421875, 1.68773138523101806640625, 1.363434314727783203125, 1.944144725799560546875, 1.66225850582122802734375, 1.25889492034912109375, 1.17187726497650146484375, 1.2229197025299072265625, 1.440251827239990234375, 1.57087910175323486328125, 1.22339725494384765625, 1.1877477169036865234375, 1.052520275115966796875, 1.533374786376953125, 1.6878778934478759765625, 1.1725139617919921875, 1.6468527317047119140625, 1.0978209972381591796875, 1.99374806880950927734375, 1.53332054615020751953125, 1.57880175113677978515625, 1.90584194660186767578125, 1.9139187335968017578125, 1.67192351818084716796875, 1.87262141704559326171875, 1.6876852512359619140625, 1.4017207622528076171875, 1.80917108058929443359375, 1.43220412731170654296875, 1.41065895557403564453125, 1.17684280872344970703125, 1.50844061374664306640625, 1.00201857089996337890625, 1.1775691509246826171875, 1.0612680912017822265625, 1.94907629489898681640625, 1.87804698944091796875, 1.8751575946807861328125, 1.065212249755859375, 1.94982659816741943359375, 1.3687231540679931640625, 1.57253873348236083984375, 1.22306120395660400390625, 1.74228191375732421875, 1.0058691501617431640625, 1.6696379184722900390625, 1.1793079376220703125, 1.4943115711212158203125, 1.50563323497772216796875, 1.79562842845916748046875, 1.5244903564453125, 1.5835020542144775390625, 1.47942769527435302734375, 1.4573690891265869140625, 1.88112914562225341796875, 1.620594024658203125, 1.89486563205718994140625, 1.437841892242431640625, 1.739664554595947265625, 1.222919940948486328125, 1.286698818206787109375, 1.94458901882171630859375, 1.0443942546844482421875, 1.53784167766571044921875, 1.7177555561065673828125, 1.50815105438232421875, 1.52941119670867919921875, 1.51618754863739013671875, 1.4898774623870849609375, 1.63050401210784912109375, 1.8045403957366943359375, 1.93569052219390869140625, 1.60485732555389404296875, 1.183496952056884765625, 1.19127690792083740234375, 1.17442524433135986328125, 1.97537696361541748046875, 1.55728948116302490234375, 1.30872309207916259765625, 1.73424565792083740234375, 1.38594400882720947265625, 1.55878937244415283203125, 1.4095265865325927734375, 1.514222621917724609375},
{ 1.060089588165283203125, 1.46581709384918212890625, 1.8340809345245361328125, 1.8400070667266845703125, 1.39690649509429931640625, 1.00514423847198486328125, 1.2076375484466552734375, 1.9600870609283447265625, 1.517016887664794921875, 1.696415424346923828125, 1.86623859405517578125, 1.4452571868896484375, 1.87869560718536376953125, 1.68583261966705322265625, 1.03219699859619140625, 1.10321843624114990234375, 1.09915316104888916015625, 1.68283021450042724609375, 1.9422299861907958984375, 1.12912333011627197265625, 1.3529727458953857421875, 1.79601287841796875, 1.62089669704437255859375, 1.31651270389556884765625, 1.52054846286773681640625, 1.11909234523773193359375, 1.40403521060943603515625, 1.0182535648345947265625, 1.0865223407745361328125, 1.06682527065277099609375, 1.21220076084136962890625, 1.8574769496917724609375, 1.78822195529937744140625, 1.4609510898590087890625, 1.57410275936126708984375, 1.18851470947265625, 1.01409804821014404296875, 1.36612880229949951171875, 1.40004241466522216796875, 1.30783736705780029296875, 1.9521615505218505859375, 1.67587482929229736328125, 1.5053503513336181640625, 1.41499197483062744140625, 1.48842179775238037109375, 1.4485008716583251953125, 1.8838236331939697265625, 1.32353889942169189453125, 1.8553235530853271484375, 1.99305069446563720703125, 1.73116397857666015625, 1.9219896793365478515625, 1.03018462657928466796875, 1.7052381038665771484375, 1.218414783477783203125, 1.3847448825836181640625, 1.8836333751678466796875, 1.65338420867919921875, 1.0153987407684326171875, 1.13303089141845703125, 1.078046321868896484375, 1.91435539722442626953125, 1.56415545940399169921875, 1.54583775997161865234375, 1.71598517894744873046875, 1.6595001220703125, 1.10237848758697509765625, 1.42085707187652587890625, 1.73863506317138671875, 1.990586757659912109375, 1.43685352802276611328125, 1.18541872501373291015625, 1.07424151897430419921875, 1.52574145793914794921875, 1.46689546108245849609375, 1.85742890834808349609375, 1.536548137664794921875, 1.73538494110107421875, 1.45778596401214599609375, 1.7563073635101318359375, 1.4732341766357421875, 1.0281703472137451171875, 1.06421101093292236328125, 1.96392536163330078125, 1.16435158252716064453125, 1.58692109584808349609375, 1.1036984920501708984375, 1.53554248809814453125, 1.97076320648193359375, 1.9545676708221435546875, 1.08005523681640625, 1.46074450016021728515625, 1.23257982730865478515625, 1.3700854778289794921875, 1.45680522918701171875, 1.37438118457794189453125, 1.91759777069091796875, 1.85443270206451416015625, 1.6806266307830810546875, 1.01750314235687255859375},
{ 1.0464870929718017578125, 1.9547894001007080078125, 1.4482996463775634765625, 1.70747578144073486328125, 1.788983821868896484375, 1.76259291172027587890625, 1.0030364990234375, 1.2222936153411865234375, 1.46445333957672119140625, 1.14080297946929931640625, 1.006992816925048828125, 1.52710354328155517578125, 1.081158161163330078125, 1.70309007167816162109375, 1.23539888858795166015625, 1.7046921253204345703125, 1.10903084278106689453125, 1.41346633434295654296875, 1.12437403202056884765625, 1.10615646839141845703125, 1.06561124324798583984375, 1.10972321033477783203125, 1.73186337947845458984375, 1.24934184551239013671875, 1.851984500885009765625, 1.7768690586090087890625, 1.4485757350921630859375, 1.4672787189483642578125, 1.83871781826019287109375, 1.5705661773681640625, 1.4589214324951171875, 1.30662095546722412109375, 1.70179831981658935546875, 1.590569019317626953125, 1.95194911956787109375, 1.6760828495025634765625, 1.0085709095001220703125, 1.4041612148284912109375, 1.0822837352752685546875, 1.74487674236297607421875, 1.55367505550384521484375, 1.3195931911468505859375, 1.68106377124786376953125, 1.59115064144134521484375, 1.44498264789581298828125, 1.409519672393798828125, 1.71687924861907958984375, 1.600425243377685546875, 1.9395358562469482421875, 1.28443729877471923828125, 1.50670850276947021484375, 1.61403214931488037109375, 1.02948391437530517578125, 1.61612164974212646484375, 1.67685604095458984375, 1.8275508880615234375, 1.77802097797393798828125, 1.41106545925140380859375, 1.873890399932861328125, 1.43924653530120849609375, 1.40532398223876953125, 1.03391563892364501953125, 1.2255809307098388671875, 1.04850733280181884765625, 1.12448942661285400390625, 1.98091089725494384765625, 1.55183565616607666015625, 1.804281711578369140625, 1.72747123241424560546875, 1.40331935882568359375, 1.32563912868499755859375, 1.30351650714874267578125, 1.9210186004638671875, 1.38087558746337890625, 1.38398921489715576171875, 1.239593982696533203125, 1.41261279582977294921875, 1.9452188014984130859375, 1.38883495330810546875, 1.80076944828033447265625, 1.746405124664306640625, 1.8533298969268798828125, 1.03801441192626953125, 1.818608760833740234375, 1.8891541957855224609375, 1.110969066619873046875, 1.0261914730072021484375, 1.6664259433746337890625, 1.56616389751434326171875, 1.24611341953277587890625, 1.75579369068145751953125, 1.90772020816802978515625, 1.3472201824188232421875, 1.33239400386810302734375, 1.79795014858245849609375, 1.6946141719818115234375, 1.4825289249420166015625, 1.76253402233123779296875, 1.10342824459075927734375, 1.91629087924957275390625},
{ 1.77178585529327392578125, 1.96357166767120361328125, 1.0974314212799072265625, 1.4844529628753662109375, 1.71136868000030517578125, 1.721237659454345703125, 1.0466525554656982421875, 1.277017116546630859375, 1.07190597057342529296875, 1.2317349910736083984375, 1.25494372844696044921875, 1.19760715961456298828125, 1.256863117218017578125, 1.0737607479095458984375, 1.0441052913665771484375, 1.687591075897216796875, 1.1059844493865966796875, 1.51033818721771240234375, 1.46518552303314208984375, 1.634381771087646484375, 1.1687314510345458984375, 1.19975459575653076171875, 1.9469182491302490234375, 1.45737493038177490234375, 1.727719783782958984375, 1.65649807453155517578125, 1.69416046142578125, 1.94388580322265625, 1.5721569061279296875, 1.46219539642333984375, 1.83632934093475341796875, 1.8350870609283447265625, 1.52127969264984130859375, 1.2265498638153076171875, 1.325840473175048828125, 1.16194665431976318359375, 1.69779145717620849609375, 1.2982780933380126953125, 1.58654487133026123046875, 1.3311645984649658203125, 1.55130016803741455078125, 1.22604787349700927734375, 1.912166595458984375, 1.96111094951629638671875, 1.63175547122955322265625, 1.96941602230072021484375, 1.61474025249481201171875, 1.46776306629180908203125, 1.11288630962371826171875, 1.85976517200469970703125, 1.92304861545562744140625, 1.4006435871124267578125, 1.06563854217529296875, 1.311241626739501953125, 1.6310596466064453125, 1.52875721454620361328125, 1.4816119670867919921875, 1.2816932201385498046875, 1.49636471271514892578125, 1.67652857303619384765625, 1.0464985370635986328125, 1.4836061000823974609375, 1.38861560821533203125, 1.3097400665283203125, 1.663519382476806640625, 1.345042705535888671875, 1.18796217441558837890625, 1.87146866321563720703125, 1.726862430572509765625, 1.72057902812957763671875, 1.43348991870880126953125, 1.86802375316619873046875, 1.1451199054718017578125, 1.35224258899688720703125, 1.7216570377349853515625, 1.704885005950927734375, 1.11472594738006591796875, 1.08044922351837158203125, 1.85473263263702392578125, 1.27263915538787841796875, 1.64339363574981689453125, 1.8049409389495849609375, 1.7392337322235107421875, 1.28291785717010498046875, 1.82355320453643798828125, 1.1957237720489501953125, 1.03436291217803955078125, 1.3543355464935302734375, 1.85578906536102294921875, 1.154004573822021484375, 1.55044591426849365234375, 1.84842622280120849609375, 1.82227742671966552734375, 1.02312886714935302734375, 1.3973686695098876953125, 1.45558130741119384765625, 1.2102239131927490234375, 1.54951870441436767578125, 1.88301551342010498046875, 1.5309875011444091796875},
{ 1.59360945224761962890625, 1.1617062091827392578125, 1.18056356906890869140625, 1.615084171295166015625, 1.5907876491546630859375, 1.63263356685638427734375, 1.0968983173370361328125, 1.8424930572509765625, 1.7623288631439208984375, 1.0883009433746337890625, 1.145187854766845703125, 1.2092249393463134765625, 1.076334476470947265625, 1.61295986175537109375, 1.69917356967926025390625, 1.32919442653656005859375, 1.95866954326629638671875, 1.23104703426361083984375, 1.727078914642333984375, 1.11197006702423095703125, 1.75390064716339111328125, 1.305622577667236328125, 1.62754726409912109375, 1.53621256351470947265625, 1.93623268604278564453125, 1.68680703639984130859375, 1.81557977199554443359375, 1.17311179637908935546875, 1.07044684886932373046875, 1.61021900177001953125, 1.058472156524658203125, 1.45982444286346435546875, 1.5228378772735595703125, 1.345412731170654296875, 1.5617525577545166015625, 1.72291147708892822265625, 1.922152042388916015625, 1.59431517124176025390625, 1.80511939525604248046875, 1.9517757892608642578125, 1.370523929595947265625, 1.639664173126220703125, 1.1283781528472900390625, 1.322099208831787109375, 1.40441429615020751953125, 1.24344551563262939453125, 1.0673792362213134765625, 1.469280719757080078125, 1.70554792881011962890625, 1.295330524444580078125, 1.43995583057403564453125, 1.5118734836578369140625, 1.56185042858123779296875, 1.2111136913299560546875, 1.1818606853485107421875, 1.8250224590301513671875, 1.0783860683441162109375, 1.08114969730377197265625, 1.93270397186279296875, 1.56390202045440673828125, 1.138295650482177734375, 1.5687916278839111328125, 1.37189114093780517578125, 1.93715298175811767578125, 1.1137332916259765625, 1.55882799625396728515625, 1.3045597076416015625, 1.23032081127166748046875, 1.32680428028106689453125, 1.5559203624725341796875, 1.49751722812652587890625, 1.57929265499114990234375, 1.26050293445587158203125, 1.83304083347320556640625, 1.26517856121063232421875, 1.49373495578765869140625, 1.51964938640594482421875, 1.32990968227386474609375, 1.80550384521484375, 1.1305310726165771484375, 1.5418274402618408203125, 1.3014323711395263671875, 1.28593528270721435546875, 1.317218303680419921875, 1.058322429656982421875, 1.71613776683807373046875, 1.67933499813079833984375, 1.3254261016845703125, 1.305058002471923828125, 1.4046151638031005859375, 1.3499228954315185546875, 1.3943130970001220703125, 1.9835340976715087890625, 1.95795190334320068359375, 1.38921344280242919921875, 1.0040047168731689453125, 1.97176420688629150390625, 1.37617099285125732421875, 1.70195353031158447265625, 1.8990306854248046875},
{ 1.46666812896728515625, 1.8420603275299072265625, 1.86176264286041259765625, 1.78773486614227294921875, 1.99264991283416748046875, 1.59855806827545166015625, 1.23585116863250732421875, 1.152508258819580078125, 1.571570873260498046875, 1.33151590824127197265625, 1.19966399669647216796875, 1.5729770660400390625, 1.32357108592987060546875, 1.057985782623291015625, 1.78972303867340087890625, 1.7237856388092041015625, 1.26991379261016845703125, 1.28793919086456298828125, 1.67414200305938720703125, 1.47171700000762939453125, 1.48142242431640625, 1.61020505428314208984375, 1.676064014434814453125, 1.83663070201873779296875, 1.97691881656646728515625, 1.028407573699951171875, 1.047098636627197265625, 1.70239961147308349609375, 1.3716602325439453125, 1.04690301418304443359375, 1.4907600879669189453125, 1.277847766876220703125, 1.27577698230743408203125, 1.506717681884765625, 1.9359042644500732421875, 1.307688236236572265625, 1.44270992279052734375, 1.1714851856231689453125, 1.06016635894775390625, 1.0334599018096923828125, 1.6676480770111083984375, 1.06338441371917724609375, 1.56339848041534423828125, 1.90446531772613525390625, 1.43596565723419189453125, 1.5490763187408447265625, 1.19110667705535888671875, 1.03870856761932373046875, 1.3216602802276611328125, 1.1756417751312255859375, 1.50788915157318115234375, 1.43383204936981201171875, 1.13578999042510986328125, 1.25651943683624267578125, 1.42087328433990478515625, 1.92805445194244384765625, 1.8249108791351318359375, 1.2074425220489501953125, 1.45315325260162353515625, 1.9111080169677734375, 1.1195147037506103515625, 1.63237667083740234375, 1.76722753047943115234375, 1.7851765155792236328125, 1.93246591091156005859375, 1.15945780277252197265625, 1.9384365081787109375, 1.1758320331573486328125, 1.5074398517608642578125, 1.02692890167236328125, 1.4783995151519775390625, 1.89297282695770263671875, 1.31735980510711669921875, 1.41907787322998046875, 1.1084530353546142578125, 1.64176118373870849609375, 1.7128345966339111328125, 1.55217540264129638671875, 1.78308773040771484375, 1.48356020450592041015625, 1.320596218109130859375, 1.510411739349365234375, 1.463386058807373046875, 1.046871662139892578125, 1.19193685054779052734375, 1.8318345546722412109375, 1.64045989513397216796875, 1.4882738590240478515625, 1.7011470794677734375, 1.84428679943084716796875, 1.60888755321502685546875, 1.2033584117889404296875, 1.19395291805267333984375, 1.7513434886932373046875, 1.49015200138092041015625, 1.28766810894012451171875, 1.385953426361083984375, 1.46824967861175537109375, 1.00607788562774658203125, 1.74763476848602294921875},
{ 1.20785772800445556640625, 1.00226914882659912109375, 1.46151602268218994140625, 1.21992504596710205078125, 1.8165652751922607421875, 1.721546649932861328125, 1.8903331756591796875, 1.228396892547607421875, 1.86025202274322509765625, 1.8273851871490478515625, 1.5388090610504150390625, 1.71594011783599853515625, 1.46021759510040283203125, 1.1773517131805419921875, 1.1663048267364501953125, 1.474081516265869140625, 1.879119396209716796875, 1.3465423583984375, 1.74775791168212890625, 1.80484592914581298828125, 1.85690939426422119140625, 1.901020050048828125, 1.18461930751800537109375, 1.16919386386871337890625, 1.69677197933197021484375, 1.4212520122528076171875, 1.76579153537750244140625, 1.5854585170745849609375, 1.10106182098388671875, 1.27554738521575927734375, 1.37856543064117431640625, 1.77778398990631103515625, 1.75724065303802490234375, 1.14349424839019775390625, 1.4695580005645751953125, 1.0745623111724853515625, 1.67381513118743896484375, 1.28939783573150634765625, 1.7556502819061279296875, 1.05687105655670166015625, 1.2662746906280517578125, 1.58571755886077880859375, 1.68492412567138671875, 1.95691096782684326171875, 1.19302833080291748046875, 1.28650462627410888671875, 1.64760005474090576171875, 1.8064429759979248046875, 1.94134247303009033203125, 1.5508396625518798828125, 1.93697512149810791015625, 1.33522641658782958984375, 1.1632788181304931640625, 1.7162697315216064453125, 1.46035969257354736328125, 1.6194560527801513671875, 1.76163113117218017578125, 1.322246551513671875, 1.2000153064727783203125, 1.48019969463348388671875, 1.7258632183074951171875, 1.883563518524169921875, 1.4240925312042236328125, 1.6318356990814208984375, 1.7180461883544921875, 1.4137933254241943359375, 1.6475677490234375, 1.580490589141845703125, 1.40879642963409423828125, 1.69872558116912841796875, 1.34318101406097412109375, 1.27247607707977294921875, 1.56321239471435546875, 1.31980383396148681640625, 1.40237390995025634765625, 1.4927272796630859375, 1.876812458038330078125, 1.42756378650665283203125, 1.34622633457183837890625, 1.01323974132537841796875, 1.56147277355194091796875, 1.26507031917572021484375, 1.28639447689056396484375, 1.491507053375244140625, 1.6813640594482421875, 1.44135510921478271484375, 1.6360480785369873046875, 1.11895847320556640625, 1.2388894557952880859375, 1.95485413074493408203125, 1.57080841064453125, 1.01939594745635986328125, 1.01062238216400146484375, 1.9668452739715576171875, 1.23968505859375, 1.3974323272705078125, 1.1332433223724365234375, 1.32488536834716796875, 1.72601377964019775390625, 1.43692839145660400390625},
{ 1.8362483978271484375, 1.75839436054229736328125, 1.9494304656982421875, 1.54403364658355712890625, 1.2913625240325927734375, 1.17162740230560302734375, 1.7726080417633056640625, 1.6795389652252197265625, 1.2372477054595947265625, 1.1176521778106689453125, 1.91869080066680908203125, 1.282478809356689453125, 1.50095331668853759765625, 1.02648448944091796875, 1.4729068279266357421875, 1.32913362979888916015625, 1.46299517154693603515625, 1.317153453826904296875, 1.24191963672637939453125, 1.421515941619873046875, 1.08079373836517333984375, 1.85863935947418212890625, 1.1522657871246337890625, 1.62330830097198486328125, 1.66211116313934326171875, 1.18081152439117431640625, 1.39879238605499267578125, 1.04580056667327880859375, 1.38848888874053955078125, 1.43536508083343505859375, 1.34309470653533935546875, 1.183827877044677734375, 1.5886852741241455078125, 1.1067588329315185546875, 1.1619532108306884765625, 1.00170743465423583984375, 1.76211261749267578125, 1.47315311431884765625, 1.24577176570892333984375, 1.76917636394500732421875, 1.352275371551513671875, 1.8173465728759765625, 1.3470146656036376953125, 1.6473295688629150390625, 1.2702071666717529296875, 1.3877141475677490234375, 1.47864425182342529296875, 1.02455651760101318359375, 1.1679084300994873046875, 1.10914433002471923828125, 1.56255853176116943359375, 1.60247910022735595703125, 1.461783885955810546875, 1.04397714138031005859375, 1.828028202056884765625, 1.2318894863128662109375, 1.10608017444610595703125, 1.60294091701507568359375, 1.96013486385345458984375, 1.49868690967559814453125, 1.11632287502288818359375, 1.5060901641845703125, 1.99820804595947265625, 1.05981552600860595703125, 1.84275472164154052734375, 1.493743419647216796875, 1.98426282405853271484375, 1.7292022705078125, 1.99377262592315673828125, 1.7874200344085693359375, 1.36143743991851806640625, 1.31369364261627197265625, 1.40936529636383056640625, 1.30077803134918212890625, 1.122430324554443359375, 1.19899356365203857421875, 1.5845508575439453125, 1.60055196285247802734375, 1.70793831348419189453125, 1.68560123443603515625, 1.942813873291015625, 1.61748969554901123046875, 1.655093669891357421875, 1.07474792003631591796875, 1.8595435619354248046875, 1.1072902679443359375, 1.99590170383453369140625, 1.504334926605224609375, 1.4354708194732666015625, 1.861541748046875, 1.405678272247314453125, 1.5348708629608154296875, 1.020105838775634765625, 1.6686580181121826171875, 1.1014873981475830078125, 1.48540961742401123046875, 1.48517572879791259765625, 1.02481663227081298828125, 1.49057829380035400390625, 1.5194871425628662109375},
{ 1.59489667415618896484375, 1.5688235759735107421875, 1.4810593128204345703125, 1.04523646831512451171875, 1.42341554164886474609375, 1.06915628910064697265625, 1.48043978214263916015625, 1.45570290088653564453125, 1.89546692371368408203125, 1.3600075244903564453125, 1.2302367687225341796875, 1.17443001270294189453125, 1.447658061981201171875, 1.0937440395355224609375, 1.131290912628173828125, 1.03579127788543701171875, 1.0290477275848388671875, 1.60510528087615966796875, 1.10861313343048095703125, 1.787002086639404296875, 1.3120830059051513671875, 1.0596415996551513671875, 1.197321414947509765625, 1.6115567684173583984375, 1.65353715419769287109375, 1.35215127468109130859375, 1.878578662872314453125, 1.4026668071746826171875, 1.80544745922088623046875, 1.7551181316375732421875, 1.16553056240081787109375, 1.786697864532470703125, 1.37605202198028564453125, 1.31714916229248046875, 1.43924236297607421875, 1.89660739898681640625, 1.0407276153564453125, 1.01141154766082763671875, 1.0346367359161376953125, 1.89538228511810302734375, 1.5029275417327880859375, 1.634070873260498046875, 1.57643163204193115234375, 1.24947583675384521484375, 1.2051184177398681640625, 1.45272815227508544921875, 1.0650770664215087890625, 1.75224602222442626953125, 1.78971803188323974609375, 1.60485744476318359375, 1.71269309520721435546875, 1.29739248752593994140625, 1.31003320217132568359375, 1.24624335765838623046875, 1.52900707721710205078125, 1.40239417552947998046875, 1.19119656085968017578125, 1.44941866397857666015625, 1.6572916507720947265625, 1.4819469451904296875, 1.941104412078857421875, 1.85210132598876953125, 1.46030151844024658203125, 1.8714005947113037109375, 1.6113545894622802734375, 1.05563271045684814453125, 1.35621130466461181640625, 1.6001970767974853515625, 1.0081832408905029296875, 1.77341461181640625, 1.40455341339111328125, 1.915307521820068359375, 1.653402805328369140625, 1.72934687137603759765625, 1.64215481281280517578125, 1.554669857025146484375, 1.49533927440643310546875, 1.30626499652862548828125, 1.16907489299774169921875, 1.7706263065338134765625, 1.36977016925811767578125, 1.9443771839141845703125, 1.984543323516845703125, 1.10336101055145263671875, 1.21086132526397705078125, 1.28970253467559814453125, 1.57289683818817138671875, 1.90433704853057861328125, 1.0121047496795654296875, 1.0925080776214599609375, 1.23951709270477294921875, 1.60973465442657470703125, 1.5372564792633056640625, 1.85574638843536376953125, 1.1967685222625732421875, 1.76388823986053466796875, 1.781273365020751953125, 1.23349320888519287109375, 1.39993512630462646484375, 1.79272401332855224609375},
{ 1.1793844699859619140625, 1.13315832614898681640625, 1.5271975994110107421875, 1.57736122608184814453125, 1.84505450725555419921875, 1.3453748226165771484375, 1.4767310619354248046875, 1.92378962039947509765625, 1.2285730838775634765625, 1.73625338077545166015625, 1.852651119232177734375, 1.7496726512908935546875, 1.57288300991058349609375, 1.5921328067779541015625, 1.34162616729736328125, 1.3700358867645263671875, 1.5142376422882080078125, 1.371959209442138671875, 1.6291038990020751953125, 1.846730709075927734375, 1.9806385040283203125, 1.04322397708892822265625, 1.67274892330169677734375, 1.69937217235565185546875, 1.84027230739593505859375, 1.167900562286376953125, 1.72587978839874267578125, 1.36627686023712158203125, 1.299949169158935546875, 1.7383823394775390625, 1.11090719699859619140625, 1.41539967060089111328125, 1.05353963375091552734375, 1.76342046260833740234375, 1.74277102947235107421875, 1.50527179241180419921875, 1.18041229248046875, 1.604060649871826171875, 1.40237796306610107421875, 1.0959379673004150390625, 1.793871402740478515625, 1.0595810413360595703125, 1.76003897190093994140625, 1.909894466400146484375, 1.43959391117095947265625, 1.20343005657196044921875, 1.1489069461822509765625, 1.143025875091552734375, 1.244067668914794921875, 1.9691631793975830078125, 1.088413715362548828125, 1.42554295063018798828125, 1.81302845478057861328125, 1.4863808155059814453125, 1.557708263397216796875, 1.53292047977447509765625, 1.879897594451904296875, 1.16666615009307861328125, 1.0190937519073486328125, 1.84683406352996826171875, 1.7042195796966552734375, 1.5395219326019287109375, 1.1914651393890380859375, 1.5660979747772216796875, 1.22009909152984619140625, 1.8383083343505859375, 1.57374680042266845703125, 1.667603015899658203125, 1.9346392154693603515625, 1.33618080615997314453125, 1.71832954883575439453125, 1.61725330352783203125, 1.57637846469879150390625, 1.43202686309814453125, 1.25450885295867919921875, 1.83090412616729736328125, 1.4937283992767333984375, 1.48640406131744384765625, 1.66192185878753662109375, 1.88529980182647705078125, 1.80341112613677978515625, 1.40747725963592529296875, 1.79398500919342041015625, 1.47901046276092529296875, 1.28889691829681396484375, 1.98695659637451171875, 1.1513316631317138671875, 1.1433699131011962890625, 1.0488412380218505859375, 1.98603427410125732421875, 1.905249118804931640625, 1.703413486480712890625, 1.89552295207977294921875, 1.97132241725921630859375, 1.67111682891845703125, 1.488814830780029296875, 1.5032813549041748046875, 1.9007909297943115234375, 1.0318434238433837890625, 1.2948238849639892578125},
{ 1.45970427989959716796875, 1.8113043308258056640625, 1.09320414066314697265625, 1.15031325817108154296875, 1.14655935764312744140625, 1.09777927398681640625, 1.49317061901092529296875, 1.684505462646484375, 1.1090233325958251953125, 1.01738989353179931640625, 1.95232665538787841796875, 1.51648700237274169921875, 1.72987043857574462890625, 1.25753676891326904296875, 1.737601757049560546875, 1.107462406158447265625, 1.96291983127593994140625, 1.34033763408660888671875, 1.63618946075439453125, 1.42132174968719482421875, 1.418973445892333984375, 1.64606440067291259765625, 1.4164841175079345703125, 1.32307827472686767578125, 1.20175278186798095703125, 1.18658077716827392578125, 1.03901875019073486328125, 1.72730541229248046875, 1.49383676052093505859375, 1.128779888153076171875, 1.61740291118621826171875, 1.49657499790191650390625, 1.892599582672119140625, 1.068021297454833984375, 1.12925946712493896484375, 1.08989429473876953125, 1.49614751338958740234375, 1.0515692234039306640625, 1.877162456512451171875, 1.96114361286163330078125, 1.73925685882568359375, 1.3520295619964599609375, 1.699574947357177734375, 1.7075138092041015625, 1.9793112277984619140625, 1.990787506103515625, 1.9317858219146728515625, 1.9679439067840576171875, 1.83223950862884521484375, 1.01144516468048095703125, 1.11684763431549072265625, 1.07155811786651611328125, 1.2584526538848876953125, 1.50325858592987060546875, 1.46651446819305419921875, 1.4361040592193603515625, 1.3987815380096435546875, 1.37457597255706787109375, 1.07217872142791748046875, 1.71638977527618408203125, 1.16041481494903564453125, 1.87627470493316650390625, 1.86580908298492431640625, 1.7027213573455810546875, 1.5528357028961181640625, 1.87519896030426025390625, 1.33088779449462890625, 1.9693405628204345703125, 1.7737598419189453125, 1.87759721279144287109375, 1.9633486270904541015625, 1.27286183834075927734375, 1.04507315158843994140625, 1.80255985260009765625, 1.4825136661529541015625, 1.7007105350494384765625, 1.19876861572265625, 1.5054562091827392578125, 1.79203116893768310546875, 1.56955993175506591796875, 1.0128841400146484375, 1.0513727664947509765625, 1.69081342220306396484375, 1.0737688541412353515625, 1.29744040966033935546875, 1.7385501861572265625, 1.33397352695465087890625, 1.683819293975830078125, 1.730377674102783203125, 1.871820926666259765625, 1.443763256072998046875, 1.29475343227386474609375, 1.4434936046600341796875, 1.28604686260223388671875, 1.2705109119415283203125, 1.12461185455322265625, 1.35838115215301513671875, 1.61955630779266357421875, 1.3035581111907958984375, 1.36287057399749755859375},
{ 1.33758223056793212890625, 1.73219764232635498046875, 1.568878650665283203125, 1.69444119930267333984375, 1.50569927692413330078125, 1.65661132335662841796875, 1.82029569149017333984375, 1.43121111392974853515625, 1.31326138973236083984375, 1.04880678653717041015625, 1.61152946949005126953125, 1.9228227138519287109375, 1.346839427947998046875, 1.46355533599853515625, 1.502172946929931640625, 1.32890570163726806640625, 1.6136581897735595703125, 1.4993298053741455078125, 1.51544249057769775390625, 1.36450970172882080078125, 1.3150346279144287109375, 1.0092413425445556640625, 1.286614894866943359375, 1.886042118072509765625, 1.36981487274169921875, 1.061977386474609375, 1.96146500110626220703125, 1.22720491886138916015625, 1.68781185150146484375, 1.65273892879486083984375, 1.84470331668853759765625, 1.28493249416351318359375, 1.1932427883148193359375, 1.16417849063873291015625, 1.7984130382537841796875, 1.3553295135498046875, 1.59816682338714599609375, 1.57733690738677978515625, 1.39048826694488525390625, 1.71960771083831787109375, 1.92592203617095947265625, 1.4325811862945556640625, 1.7930710315704345703125, 1.98002374172210693359375, 1.78456366062164306640625, 1.5405423641204833984375, 1.43098890781402587890625, 1.1458170413970947265625, 1.39030110836029052734375, 1.4430522918701171875, 1.38019263744354248046875, 1.46914660930633544921875, 1.34093558788299560546875, 1.62408149242401123046875, 1.5161931514739990234375, 1.03102886676788330078125, 1.1392977237701416015625, 1.47067701816558837890625, 1.41249978542327880859375, 1.0772755146026611328125, 1.4666845798492431640625, 1.98389923572540283203125, 1.9890573024749755859375, 1.10443031787872314453125, 1.20629787445068359375, 1.2397596836090087890625, 1.91068351268768310546875, 1.6957070827484130859375, 1.216681003570556640625, 1.6001589298248291015625, 1.7355067729949951171875, 1.10692691802978515625, 1.8551566600799560546875, 1.67382335662841796875, 1.813403606414794921875, 1.60245621204376220703125, 1.25126445293426513671875, 1.02724301815032958984375, 1.93443572521209716796875, 1.5411434173583984375, 1.33019793033599853515625, 1.64560949802398681640625, 1.72728824615478515625, 1.212256908416748046875, 1.58624279499053955078125, 1.14375269412994384765625, 1.80770671367645263671875, 1.42142283916473388671875, 1.60621392726898193359375, 1.72707879543304443359375, 1.676934719085693359375, 1.82656192779541015625, 1.34289300441741943359375, 1.9025075435638427734375, 1.370151519775390625, 1.0238273143768310546875, 1.13846600055694580078125, 1.93941020965576171875, 1.85490906238555908203125, 1.38354241847991943359375},
{ 1.08054637908935546875, 1.17957019805908203125, 1.6361377239227294921875, 1.6126842498779296875, 1.50300180912017822265625, 1.37174570560455322265625, 1.2080886363983154296875, 1.63366031646728515625, 1.02912628650665283203125, 1.08673191070556640625, 1.30785334110260009765625, 1.6950671672821044921875, 1.58747041225433349609375, 1.0059483051300048828125, 1.7618095874786376953125, 1.6876747608184814453125, 1.4237234592437744140625, 1.98537456989288330078125, 1.600192546844482421875, 1.78228247165679931640625, 1.0616512298583984375, 1.9539887905120849609375, 1.39303267002105712890625, 1.70315611362457275390625, 1.014032840728759765625, 1.56220448017120361328125, 1.336092472076416015625, 1.75146615505218505859375, 1.24359858036041259765625, 1.5803081989288330078125, 1.08680450916290283203125, 1.57872474193572998046875, 1.37396776676177978515625, 1.04689705371856689453125, 1.35020864009857177734375, 1.71022331714630126953125, 1.65058553218841552734375, 1.16731631755828857421875, 1.214890003204345703125, 1.8184702396392822265625, 1.6516606807708740234375, 1.9620964527130126953125, 1.23891580104827880859375, 1.7466278076171875, 1.749103546142578125, 1.66539132595062255859375, 1.28577315807342529296875, 1.281950473785400390625, 1.31946277618408203125, 1.8734152317047119140625, 1.1103069782257080078125, 1.6792218685150146484375, 1.7048633098602294921875, 1.44288051128387451171875, 1.69465672969818115234375, 1.9341924190521240234375, 1.92394363880157470703125, 1.13943517208099365234375, 1.33419430255889892578125, 1.807016849517822265625, 1.13279378414154052734375, 1.036099910736083984375, 1.4734618663787841796875, 1.59569180011749267578125, 1.83589208126068115234375, 1.66170632839202880859375, 1.29210865497589111328125, 1.65949285030364990234375, 1.84704303741455078125, 1.899333953857421875, 1.04082882404327392578125, 1.69241273403167724609375, 1.000315189361572265625, 1.63474786281585693359375, 1.12729930877685546875, 1.74659836292266845703125, 1.6109778881072998046875, 1.15483629703521728515625, 1.95211660861968994140625, 1.00578844547271728515625, 1.68643915653228759765625, 1.296047687530517578125, 1.49473464488983154296875, 1.30875110626220703125, 1.88718354701995849609375, 1.34282886981964111328125, 1.649402618408203125, 1.42272090911865234375, 1.23770892620086669921875, 1.676062107086181640625, 1.31110179424285888671875, 1.0668370723724365234375, 1.58746433258056640625, 1.17150270938873291015625, 1.211483478546142578125, 1.6855804920196533203125, 1.82178783416748046875, 1.348216533660888671875, 1.5048062801361083984375, 1.972211360931396484375},
{ 1.2670176029205322265625, 1.10387408733367919921875, 1.14220678806304931640625, 1.18055832386016845703125, 1.17890512943267822265625, 1.7659728527069091796875, 1.95669782161712646484375, 1.65356194972991943359375, 1.9235017299652099609375, 1.9288084506988525390625, 1.49590766429901123046875, 1.38012158870697021484375, 1.07749044895172119140625, 1.29644453525543212890625, 1.68258869647979736328125, 1.83908092975616455078125, 1.8530523777008056640625, 1.1752393245697021484375, 1.55546009540557861328125, 1.560797214508056640625, 1.7463042736053466796875, 1.559783458709716796875, 1.29264533519744873046875, 1.5880792140960693359375, 1.93573558330535888671875, 1.96883785724639892578125, 1.985109806060791015625, 1.6871240139007568359375, 1.4306466579437255859375, 1.031270503997802734375, 1.1600978374481201171875, 1.30845487117767333984375, 1.96958577632904052734375, 1.821994304656982421875, 1.0545709133148193359375, 1.29785907268524169921875, 1.6687867641448974609375, 1.94790494441986083984375, 1.638644695281982421875, 1.35732471942901611328125, 1.4206066131591796875, 1.3838176727294921875, 1.389026641845703125, 1.25597858428955078125, 1.04196250438690185546875, 1.0584051609039306640625, 1.81245362758636474609375, 1.7910239696502685546875, 1.172770023345947265625, 1.19013535976409912109375, 1.71912896633148193359375, 1.4986774921417236328125, 1.92438018321990966796875, 1.3732082843780517578125, 1.24616062641143798828125, 1.11510694026947021484375, 1.2780170440673828125, 1.41349399089813232421875, 1.63099825382232666015625, 1.78736913204193115234375, 1.23321521282196044921875, 1.91446983814239501953125, 1.73487079143524169921875, 1.03434669971466064453125, 1.70625746250152587890625, 1.6131584644317626953125, 1.31622409820556640625, 1.457685947418212890625, 1.17861175537109375, 1.46606457233428955078125, 1.0541579723358154296875, 1.2027347087860107421875, 1.09536945819854736328125, 1.48511278629302978515625, 1.3218643665313720703125, 1.1694791316986083984375, 1.01368236541748046875, 1.32358551025390625, 1.710064411163330078125, 1.973481655120849609375, 1.50120031833648681640625, 1.61205971240997314453125, 1.300446033477783203125, 1.65681827068328857421875, 1.78450882434844970703125, 1.04434478282928466796875, 1.6891014575958251953125, 1.14901649951934814453125, 1.1475660800933837890625, 1.213420391082763671875, 1.75996482372283935546875, 1.47799217700958251953125, 1.08014118671417236328125, 1.19737327098846435546875, 1.20824921131134033203125, 1.7309873104095458984375, 1.1762511730194091796875, 1.89533507823944091796875, 1.81388485431671142578125, 1.7655079364776611328125},
{ 1.1134202480316162109375, 1.46495616436004638671875, 1.670260906219482421875, 1.39700925350189208984375, 1.40066277980804443359375, 1.93113934993743896484375, 1.97609174251556396484375, 1.8168690204620361328125, 1.63495409488677978515625, 1.3871400356292724609375, 1.61692249774932861328125, 1.03756225109100341796875, 1.3589808940887451171875, 1.6861302852630615234375, 1.64068853855133056640625, 1.9009087085723876953125, 1.86616194248199462890625, 1.383186817169189453125, 1.6702764034271240234375, 1.49360120296478271484375, 1.0365860462188720703125, 1.50872802734375, 1.1144616603851318359375, 1.2956430912017822265625, 1.922949314117431640625, 1.0919516086578369140625, 1.128845691680908203125, 1.07878589630126953125, 1.08649313449859619140625, 1.43427217006683349609375, 1.32679355144500732421875, 1.55496633052825927734375, 1.682940959930419921875, 1.13275825977325439453125, 1.24037182331085205078125, 1.774744510650634765625, 1.29843616485595703125, 1.85357058048248291015625, 1.53128540515899658203125, 1.27574098110198974609375, 1.53547990322113037109375, 1.85539901256561279296875, 1.95181548595428466796875, 1.98107433319091796875, 1.348867893218994140625, 1.26290023326873779296875, 1.0557568073272705078125, 1.847798824310302734375, 1.1316282749176025390625, 1.09013521671295166015625, 1.659355640411376953125, 1.26534140110015869140625, 1.55095946788787841796875, 1.0140068531036376953125, 1.052246570587158203125, 1.203939914703369140625, 1.1341669559478759765625, 1.897696971893310546875, 1.95839035511016845703125, 1.11308014392852783203125, 1.6046011447906494140625, 1.064104557037353515625, 1.24701178073883056640625, 1.569933414459228515625, 1.96759521961212158203125, 1.3192827701568603515625, 1.39353644847869873046875, 1.6777942180633544921875, 1.3464019298553466796875, 1.7258765697479248046875, 1.6905286312103271484375, 1.21451723575592041015625, 1.56813144683837890625, 1.12656033039093017578125, 1.208629131317138671875, 1.5309555530548095703125, 1.49968922138214111328125, 1.41747486591339111328125, 1.5074920654296875, 1.19939768314361572265625, 1.1337127685546875, 1.57166564464569091796875, 1.09672272205352783203125, 1.4120051860809326171875, 1.42450964450836181640625, 1.41251981258392333984375, 1.64681541919708251953125, 1.12925016880035400390625, 1.87399470806121826171875, 1.13720381259918212890625, 1.95009028911590576171875, 1.97835290431976318359375, 1.8676280975341796875, 1.5901010036468505859375, 1.6316311359405517578125, 1.9017188549041748046875, 1.76035201549530029296875, 1.286248683929443359375, 1.610223293304443359375, 1.55537688732147216796875},
{ 1.18477630615234375, 1.309290409088134765625, 1.4574162960052490234375, 1.2758777141571044921875, 1.2123425006866455078125, 1.6178324222564697265625, 1.88642442226409912109375, 1.72941386699676513671875, 1.5365726947784423828125, 1.60136282444000244140625, 1.52992427349090576171875, 1.16538393497467041015625, 1.589496612548828125, 1.96284663677215576171875, 1.88281154632568359375, 1.3252050876617431640625, 1.84098589420318603515625, 1.25363719463348388671875, 1.39579284191131591796875, 1.18540155887603759765625, 1.32219111919403076171875, 1.834414005279541015625, 1.373822689056396484375, 1.29354250431060791015625, 1.89898002147674560546875, 1.58612060546875, 1.62454116344451904296875, 1.854179859161376953125, 1.29537451267242431640625, 1.3709013462066650390625, 1.85671150684356689453125, 1.56478512287139892578125, 1.86698830127716064453125, 1.24303925037384033203125, 1.8286571502685546875, 1.20168721675872802734375, 1.124464511871337890625, 1.40989387035369873046875, 1.24669992923736572265625, 1.956010341644287109375, 1.006912708282470703125, 1.94283807277679443359375, 1.41359710693359375, 1.51961076259613037109375, 1.9053471088409423828125, 1.238195896148681640625, 1.62697899341583251953125, 1.9210147857666015625, 1.4361236095428466796875, 1.228180408477783203125, 1.32778644561767578125, 1.1113560199737548828125, 1.96437740325927734375, 1.3418304920196533203125, 1.9987084865570068359375, 1.30031335353851318359375, 1.87746059894561767578125, 1.21594870090484619140625, 1.81261932849884033203125, 1.0420477390289306640625, 1.60837924480438232421875, 1.15603911876678466796875, 1.0310165882110595703125, 1.0711400508880615234375, 1.40923154354095458984375, 1.34724414348602294921875, 1.15245831012725830078125, 1.88852894306182861328125, 1.87464487552642822265625, 1.81528246402740478515625, 1.8110005855560302734375, 1.0974476337432861328125, 1.21521341800689697265625, 1.137386322021484375, 1.4246351718902587890625, 1.48936176300048828125, 1.28093564510345458984375, 1.9032394886016845703125, 1.59372651576995849609375, 1.87990725040435791015625, 1.334651947021484375, 1.9259140491485595703125, 1.2494499683380126953125, 1.69482707977294921875, 1.5754816532135009765625, 1.20280826091766357421875, 1.55222880840301513671875, 1.30590915679931640625, 1.4122612476348876953125, 1.62658441066741943359375, 1.5401718616485595703125, 1.11692416667938232421875, 1.48698139190673828125, 1.44610559940338134765625, 1.527511119842529296875, 1.399562358856201171875, 1.448224544525146484375, 1.477373600006103515625, 1.25303876399993896484375, 1.8793714046478271484375},
{ 1.0644667148590087890625, 1.778545379638671875, 1.07169425487518310546875, 1.54819381237030029296875, 1.7904765605926513671875, 1.13725697994232177734375, 1.3676059246063232421875, 1.47798120975494384765625, 1.93844592571258544921875, 1.732272624969482421875, 1.86985146999359130859375, 1.67328941822052001953125, 1.70230662822723388671875, 1.48500192165374755859375, 1.97878324985504150390625, 1.66722238063812255859375, 1.14781630039215087890625, 1.73360264301300048828125, 1.7282989025115966796875, 1.390100955963134765625, 1.923496246337890625, 1.881417751312255859375, 1.87177813053131103515625, 1.1928999423980712890625, 1.7215692996978759765625, 1.79541361331939697265625, 1.71802055835723876953125, 1.6206862926483154296875, 1.4888966083526611328125, 1.954617023468017578125, 1.717183589935302734375, 1.9360561370849609375, 1.38791561126708984375, 1.34855282306671142578125, 1.79671919345855712890625, 1.3925724029541015625, 1.50757730007171630859375, 1.12568151950836181640625, 1.44731175899505615234375, 1.2582023143768310546875, 1.32428419589996337890625, 1.9918363094329833984375, 1.55881595611572265625, 1.58875501155853271484375, 1.91282713413238525390625, 1.35866129398345947265625, 1.00619351863861083984375, 1.75131857395172119140625, 1.9073231220245361328125, 1.2420485019683837890625, 1.98545110225677490234375, 1.69769823551177978515625, 1.2121531963348388671875, 1.91057550907135009765625, 1.0995781421661376953125, 1.98785340785980224609375, 1.46289920806884765625, 1.28394305706024169921875, 1.19448363780975341796875, 1.56333529949188232421875, 1.23728168010711669921875, 1.0814120769500732421875, 1.94493401050567626953125, 1.2707245349884033203125, 1.01609766483306884765625, 1.72024190425872802734375, 1.1904909610748291015625, 1.1350681781768798828125, 1.89415752887725830078125, 1.9641273021697998046875, 1.02144825458526611328125, 1.3833179473876953125, 1.0412228107452392578125, 1.32163608074188232421875, 1.6147696971893310546875, 1.217767238616943359375, 1.9129440784454345703125, 1.1946465969085693359375, 1.820026397705078125, 1.3394887447357177734375, 1.2117977142333984375, 1.776785373687744140625, 1.49533474445343017578125, 1.22177207469940185546875, 1.59802377223968505859375, 1.70186412334442138671875, 1.59329319000244140625, 1.13356077671051025390625, 1.15056383609771728515625, 1.442317962646484375, 1.996920108795166015625, 1.91289055347442626953125, 1.57799780368804931640625, 1.45764243602752685546875, 1.10559165477752685546875, 1.49032628536224365234375, 1.17948186397552490234375, 1.092831134796142578125, 1.170978546142578125, 1.16239964962005615234375},
{ 1.22681331634521484375, 1.3829839229583740234375, 1.61504662036895751953125, 1.0697307586669921875, 1.67089092731475830078125, 1.70568120479583740234375, 1.6970450878143310546875, 1.0581264495849609375, 1.31717681884765625, 1.4632508754730224609375, 1.94345188140869140625, 1.79170858860015869140625, 1.03703176975250244140625, 1.6759183406829833984375, 1.849040985107421875, 1.18657696247100830078125, 1.329502105712890625, 1.14589178562164306640625, 1.8917405605316162109375, 1.26503217220306396484375, 1.7197573184967041015625, 1.2932989597320556640625, 1.3060705661773681640625, 1.3665134906768798828125, 1.90752708911895751953125, 1.742125034332275390625, 1.60658037662506103515625, 1.10853672027587890625, 1.6655395030975341796875, 1.65615046024322509765625, 1.86128580570220947265625, 1.097630977630615234375, 1.48795807361602783203125, 1.824887752532958984375, 1.71510732173919677734375, 1.39027655124664306640625, 1.9888193607330322265625, 1.49951946735382080078125, 1.16330707073211669921875, 1.70384275913238525390625, 1.05047047138214111328125, 1.97883546352386474609375, 1.07492649555206298828125, 1.37752473354339599609375, 1.72200667858123779296875, 1.945170879364013671875, 1.4662239551544189453125, 1.0832812786102294921875, 1.8677084445953369140625, 1.55034291744232177734375, 1.52411174774169921875, 1.28677272796630859375, 1.56547963619232177734375, 1.25158870220184326171875, 1.379594326019287109375, 1.4582977294921875, 1.2552845478057861328125, 1.3975031375885009765625, 1.6312053203582763671875, 1.0337312221527099609375, 1.63758552074432373046875, 1.56397569179534912109375, 1.6184451580047607421875, 1.12546169757843017578125, 1.32178056240081787109375, 1.64012825489044189453125, 1.445218563079833984375, 1.98332917690277099609375, 1.224640369415283203125, 1.6642529964447021484375, 1.75327217578887939453125, 1.20556199550628662109375, 1.71874654293060302734375, 1.40974915027618408203125, 1.24563157558441162109375, 1.69971466064453125, 1.53092861175537109375, 1.72106087207794189453125, 1.96003949642181396484375, 1.393605709075927734375, 1.39070165157318115234375, 1.5996150970458984375, 1.29239284992218017578125, 1.6962544918060302734375, 1.42870390415191650390625, 1.03975832462310791015625, 1.77018034458160400390625, 1.70881903171539306640625, 1.325133800506591796875, 1.61469447612762451171875, 1.57592010498046875, 1.18553388118743896484375, 1.20818817615509033203125, 1.81242275238037109375, 1.8205966949462890625, 1.24464690685272216796875, 1.302499294281005859375, 1.12167441844940185546875, 1.5670993328094482421875, 1.829357147216796875},
{ 1.867850780487060546875, 1.6036589145660400390625, 1.9187526702880859375, 1.646223545074462890625, 1.7989604473114013671875, 1.967285633087158203125, 1.4887473583221435546875, 1.1630165576934814453125, 1.42155730724334716796875, 1.21720659732818603515625, 1.22301876544952392578125, 1.97270071506500244140625, 1.0866773128509521484375, 1.45830285549163818359375, 1.97394597530364990234375, 1.7586486339569091796875, 1.8257763385772705078125, 1.11454761028289794921875, 1.97354638576507568359375, 1.94129335880279541015625, 1.93666803836822509765625, 1.45244324207305908203125, 1.79441368579864501953125, 1.5765659809112548828125, 1.3194606304168701171875, 1.85445892810821533203125, 1.060655117034912109375, 1.0043332576751708984375, 1.562494754791259765625, 1.84246814250946044921875, 1.9088294506072998046875, 1.24683463573455810546875, 1.77828133106231689453125, 1.851186275482177734375, 1.1988837718963623046875, 1.1571204662322998046875, 1.189438343048095703125, 1.7516076564788818359375, 1.47509133815765380859375, 1.31748902797698974609375, 1.464628696441650390625, 1.1244437694549560546875, 1.67698943614959716796875, 1.6879241466522216796875, 1.80449807643890380859375, 1.283560276031494140625, 1.60031616687774658203125, 1.00453281402587890625, 1.77761173248291015625, 1.04941463470458984375, 1.10794830322265625, 1.92798221111297607421875, 1.9063923358917236328125, 1.27249372005462646484375, 1.0908391475677490234375, 1.941937923431396484375, 1.00305783748626708984375, 1.10675084590911865234375, 1.1789553165435791015625, 1.00150096416473388671875, 1.2555582523345947265625, 1.03304398059844970703125, 1.20221459865570068359375, 1.93164539337158203125, 1.06351363658905029296875, 1.63257277011871337890625, 1.40142381191253662109375, 1.57565581798553466796875, 1.62415134906768798828125, 1.11031615734100341796875, 1.38921558856964111328125, 1.69356501102447509765625, 1.2682440280914306640625, 1.568470001220703125, 1.860986232757568359375, 1.61059093475341796875, 1.54604637622833251953125, 1.0298840999603271484375, 1.0558335781097412109375, 1.61557495594024658203125, 1.06323301792144775390625, 1.2115004062652587890625, 1.9674937725067138671875, 1.1094188690185546875, 1.06683635711669921875, 1.047790050506591796875, 1.305279254913330078125, 1.50352251529693603515625, 1.78118336200714111328125, 1.964190959930419921875, 1.20501601696014404296875, 1.86822140216827392578125, 1.49383342266082763671875, 1.9005453586578369140625, 1.68998157978057861328125, 1.3312237262725830078125, 1.391516208648681640625, 1.08453738689422607421875, 1.88184177875518798828125, 1.22604858875274658203125},
{ 1.55513012409210205078125, 1.9615886211395263671875, 1.9904630184173583984375, 1.25037181377410888671875, 1.43600380420684814453125, 1.8804781436920166015625, 1.81491959095001220703125, 1.1042907238006591796875, 1.95899283885955810546875, 1.820967197418212890625, 1.04099404811859130859375, 1.85060918331146240234375, 1.23752343654632568359375, 1.40765130519866943359375, 1.3098223209381103515625, 1.96096861362457275390625, 1.7900512218475341796875, 1.66820251941680908203125, 1.46053874492645263671875, 1.5718057155609130859375, 1.8134982585906982421875, 1.74430620670318603515625, 1.1787130832672119140625, 1.57028925418853759765625, 1.206691265106201171875, 1.3525989055633544921875, 1.39478814601898193359375, 1.4302580356597900390625, 1.34379863739013671875, 1.9956061840057373046875, 1.4325172901153564453125, 1.798158168792724609375, 1.5977680683135986328125, 1.922679424285888671875, 1.90740203857421875, 1.82898104190826416015625, 1.61376416683197021484375, 1.84093368053436279296875, 1.37512910366058349609375, 1.272200107574462890625, 1.33260548114776611328125, 1.37618553638458251953125, 1.730008602142333984375, 1.307708740234375, 1.76420271396636962890625, 1.28388988971710205078125, 1.35341107845306396484375, 1.13175809383392333984375, 1.51099574565887451171875, 1.41007792949676513671875, 1.0122051239013671875, 1.292893886566162109375, 1.04139125347137451171875, 1.4022943973541259765625, 1.507194995880126953125, 1.7778942584991455078125, 1.71320021152496337890625, 1.170535564422607421875, 1.07155764102935791015625, 1.84770762920379638671875, 1.5470755100250244140625, 1.098186016082763671875, 1.519280910491943359375, 1.6233894824981689453125, 1.749948978424072265625, 1.00295650959014892578125, 1.14360058307647705078125, 1.4220402240753173828125, 1.988469600677490234375, 1.84782183170318603515625, 1.365437984466552734375, 1.84274303913116455078125, 1.4124405384063720703125, 1.20195758342742919921875, 1.1318376064300537109375, 1.6025006771087646484375, 1.4282567501068115234375, 1.4516780376434326171875, 1.06440412998199462890625, 1.122173309326171875, 1.22234261035919189453125, 1.761373996734619140625, 1.3577406406402587890625, 1.86241638660430908203125, 1.03458893299102783203125, 1.78444957733154296875, 1.42788565158843994140625, 1.40961742401123046875, 1.18179118633270263671875, 1.12426006793975830078125, 1.3107507228851318359375, 1.31183397769927978515625, 1.83108651638031005859375, 1.54504978656768798828125, 1.81055796146392822265625, 1.66473090648651123046875, 1.52339136600494384765625, 1.93288886547088623046875, 1.39827764034271240234375, 1.44751834869384765625},
{ 1.0066111087799072265625, 1.8600652217864990234375, 1.60888850688934326171875, 1.460216999053955078125, 1.778751850128173828125, 1.69569957256317138671875, 1.90295350551605224609375, 1.86640453338623046875, 1.766484737396240234375, 1.2670199871063232421875, 1.4751832485198974609375, 1.9358103275299072265625, 1.9525597095489501953125, 1.69636380672454833984375, 1.19834220409393310546875, 1.1798098087310791015625, 1.49624025821685791015625, 1.51500403881072998046875, 1.75842726230621337890625, 1.37418270111083984375, 1.19424140453338623046875, 1.0615863800048828125, 1.4906055927276611328125, 1.33255064487457275390625, 1.69166648387908935546875, 1.63056743144989013671875, 1.96515142917633056640625, 1.42981421947479248046875, 1.442945003509521484375, 1.370651721954345703125, 1.32338392734527587890625, 1.87559115886688232421875, 1.42277050018310546875, 1.93322932720184326171875, 1.363605022430419921875, 1.73765337467193603515625, 1.5870373249053955078125, 1.87081348896026611328125, 1.37703621387481689453125, 1.71536457538604736328125, 1.08377850055694580078125, 1.78547763824462890625, 1.73375642299652099609375, 1.663117885589599609375, 1.21410357952117919921875, 1.22729361057281494140625, 1.218639850616455078125, 1.863772869110107421875, 1.14313542842864990234375, 1.34276866912841796875, 1.11729276180267333984375, 1.0520937442779541015625, 1.360948085784912109375, 1.27328312397003173828125, 1.05199146270751953125, 1.1881864070892333984375, 1.893504619598388671875, 1.30352783203125, 1.5676195621490478515625, 1.9809360504150390625, 1.2635939121246337890625, 1.7599418163299560546875, 1.46760594844818115234375, 1.16144478321075439453125, 1.20176851749420166015625, 1.65914928913116455078125, 1.8998615741729736328125, 1.50646865367889404296875, 1.10728251934051513671875, 1.1063978672027587890625, 1.1927173137664794921875, 1.61185586452484130859375, 1.25902831554412841796875, 1.44399559497833251953125, 1.44086182117462158203125, 1.41598379611968994140625, 1.77647459506988525390625, 1.1497485637664794921875, 1.8412783145904541015625, 1.47319662570953369140625, 1.33060359954833984375, 1.4853985309600830078125, 1.77918243408203125, 1.97724282741546630859375, 1.6048491001129150390625, 1.89505994319915771484375, 1.66396009922027587890625, 1.53471279144287109375, 1.5060331821441650390625, 1.1536581516265869140625, 1.5151042938232421875, 1.6884758472442626953125, 1.12530410289764404296875, 1.26536643505096435546875, 1.298152923583984375, 1.1911184787750244140625, 1.44907414913177490234375, 1.1120436191558837890625, 1.01062667369842529296875, 1.02838134765625},
{ 1.851671695709228515625, 1.517965793609619140625, 1.192596912384033203125, 1.147702693939208984375, 1.06679284572601318359375, 1.1394679546356201171875, 1.20612704753875732421875, 1.8701412677764892578125, 1.66294765472412109375, 1.98422610759735107421875, 1.39480006694793701171875, 1.6641137599945068359375, 1.51711213588714599609375, 1.0370652675628662109375, 1.91134893894195556640625, 1.90641295909881591796875, 1.876135349273681640625, 1.99448049068450927734375, 1.50884830951690673828125, 1.88472068309783935546875, 1.50517690181732177734375, 1.85057413578033447265625, 1.06415212154388427734375, 1.75854456424713134765625, 1.58614456653594970703125, 1.2329938411712646484375, 1.851331233978271484375, 1.27015590667724609375, 1.366131305694580078125, 1.48886930942535400390625, 1.5651104450225830078125, 1.2055275440216064453125, 1.55585348606109619140625, 1.52075016498565673828125, 1.0943067073822021484375, 1.6052706241607666015625, 1.478087902069091796875, 1.372543811798095703125, 1.04526615142822265625, 1.7255725860595703125, 1.96610939502716064453125, 1.56545221805572509765625, 1.01530170440673828125, 1.74913442134857177734375, 1.01212847232818603515625, 1.18390977382659912109375, 1.6161305904388427734375, 1.24610865116119384765625, 1.1657283306121826171875, 1.711521148681640625, 1.24731194972991943359375, 1.38503611087799072265625, 1.68230307102203369140625, 1.61699807643890380859375, 1.61968386173248291015625, 1.8937838077545166015625, 1.4214947223663330078125, 1.69009721279144287109375, 1.02880156040191650390625, 1.7704827785491943359375, 1.49563086032867431640625, 1.1275579929351806640625, 1.37837445735931396484375, 1.744464874267578125, 1.66816222667694091796875, 1.36903941631317138671875, 1.95370376110076904296875, 1.48720061779022216796875, 1.5020997524261474609375, 1.68305790424346923828125, 1.9451200962066650390625, 1.57323706150054931640625, 1.25845277309417724609375, 1.5029251575469970703125, 1.7214205265045166015625, 1.19113457202911376953125, 1.5446660518646240234375, 1.51268494129180908203125, 1.85330677032470703125, 1.6044046878814697265625, 1.71305739879608154296875, 1.4830510616302490234375, 1.886822223663330078125, 1.3624479770660400390625, 1.0092551708221435546875, 1.85734462738037109375, 1.8667895793914794921875, 1.26149082183837890625, 1.470635890960693359375, 1.08743202686309814453125, 1.61024844646453857421875, 1.05552327632904052734375, 1.57476127147674560546875, 1.719661712646484375, 1.72989237308502197265625, 1.91723692417144775390625, 1.63781642913818359375, 1.230802059173583984375, 1.40750706195831298828125, 1.64896166324615478515625},
{ 1.61397922039031982421875, 1.91740739345550537109375, 1.64360368251800537109375, 1.739196300506591796875, 1.71461391448974609375, 1.89987504482269287109375, 1.5955827236175537109375, 1.6889438629150390625, 1.3163592815399169921875, 1.38459599018096923828125, 1.96177005767822265625, 1.46734154224395751953125, 1.97703874111175537109375, 1.5640981197357177734375, 1.17242527008056640625, 1.81025218963623046875, 1.6145827770233154296875, 1.317188262939453125, 1.59213411808013916015625, 1.43278658390045166015625, 1.8429667949676513671875, 1.48239040374755859375, 1.23074638843536376953125, 1.67774105072021484375, 1.05814898014068603515625, 1.8813827037811279296875, 1.20431268215179443359375, 1.9140350818634033203125, 1.2740070819854736328125, 1.0924351215362548828125, 1.9460222721099853515625, 1.68514835834503173828125, 1.708276271820068359375, 1.97384703159332275390625, 1.167140960693359375, 1.6075589656829833984375, 1.11848700046539306640625, 1.93738424777984619140625, 1.567947864532470703125, 1.01918041706085205078125, 1.887901782989501953125, 1.97171723842620849609375, 1.29867327213287353515625, 1.3777992725372314453125, 1.86145317554473876953125, 1.41585814952850341796875, 1.17043650150299072265625, 1.40951263904571533203125, 1.93168103694915771484375, 1.48259842395782470703125, 1.61618268489837646484375, 1.00716578960418701171875, 1.374670505523681640625, 1.5319464206695556640625, 1.4016206264495849609375, 1.8787891864776611328125, 1.93598878383636474609375, 1.0945644378662109375, 1.0861606597900390625, 1.94603669643402099609375, 1.66662299633026123046875, 1.645206928253173828125, 1.23385143280029296875, 1.4926226139068603515625, 1.5089180469512939453125, 1.1261575222015380859375, 1.3743178844451904296875, 1.06275928020477294921875, 1.63251340389251708984375, 1.2206666469573974609375, 1.71369850635528564453125, 1.10959470272064208984375, 1.52028095722198486328125, 1.376389026641845703125, 1.59558331966400146484375, 1.393649578094482421875, 1.8042628765106201171875, 1.57882130146026611328125, 1.71195065975189208984375, 1.13125550746917724609375, 1.85160839557647705078125, 1.87473905086517333984375, 1.06410503387451171875, 1.8929920196533203125, 1.10051167011260986328125, 1.64563500881195068359375, 1.673614978790283203125, 1.25212419033050537109375, 1.14614963531494140625, 1.63115608692169189453125, 1.0432498455047607421875, 1.18304026126861572265625, 1.57661879062652587890625, 1.70254099369049072265625, 1.36791765689849853515625, 1.209688663482666015625, 1.55887305736541748046875, 1.38605785369873046875, 1.49560296535491943359375, 1.30401623249053955078125},
{ 1.13644123077392578125, 1.63830363750457763671875, 1.534405231475830078125, 1.50646579265594482421875, 1.3603303432464599609375, 1.83296871185302734375, 1.46411097049713134765625, 1.473436832427978515625, 1.1897060871124267578125, 1.15243625640869140625, 1.299699306488037109375, 1.4173333644866943359375, 1.005328655242919921875, 1.6663701534271240234375, 1.7894842624664306640625, 1.43845927715301513671875, 1.71017515659332275390625, 1.15219795703887939453125, 1.87196505069732666015625, 1.4816005229949951171875, 1.75287663936614990234375, 1.55604875087738037109375, 1.0742642879486083984375, 1.1719629764556884765625, 1.90115630626678466796875, 1.20368993282318115234375, 1.66056501865386962890625, 1.40111029148101806640625, 1.76526653766632080078125, 1.76146519184112548828125, 1.5305483341217041015625, 1.6629006862640380859375, 1.07142651081085205078125, 1.947231769561767578125, 1.8678309917449951171875, 1.139424800872802734375, 1.68525969982147216796875, 1.9912984371185302734375, 1.53840243816375732421875, 1.53694355487823486328125, 1.385231494903564453125, 1.8473622798919677734375, 1.2390630245208740234375, 1.671824932098388671875, 1.3860862255096435546875, 1.15344655513763427734375, 1.39586102962493896484375, 1.806481838226318359375, 1.6122853755950927734375, 1.94283854961395263671875, 1.8125302791595458984375, 1.73530995845794677734375, 1.721444606781005859375, 1.10502636432647705078125, 1.068927764892578125, 1.620624542236328125, 1.8777713775634765625, 1.59663677215576171875, 1.66947066783905029296875, 1.5785982608795166015625, 1.27550256252288818359375, 1.4023730754852294921875, 1.941574573516845703125, 1.01519906520843505859375, 1.41234147548675537109375, 1.2459518909454345703125, 1.68409049510955810546875, 1.7121269702911376953125, 1.11289608478546142578125, 1.05104100704193115234375, 1.56574249267578125, 1.66275203227996826171875, 1.30211603641510009765625, 1.15219724178314208984375, 1.27356517314910888671875, 1.65805160999298095703125, 1.52873027324676513671875, 1.25580322742462158203125, 1.41134130954742431640625, 1.6225483417510986328125, 1.23868465423583984375, 1.151005268096923828125, 1.1480388641357421875, 1.70024693012237548828125, 1.7985789775848388671875, 1.1706511974334716796875, 1.61624920368194580078125, 1.09057199954986572265625, 1.2691051959991455078125, 1.4022271633148193359375, 1.06062412261962890625, 1.6343059539794921875, 1.928484439849853515625, 1.648795604705810546875, 1.73631346225738525390625, 1.14952576160430908203125, 1.545904636383056640625, 1.13993251323699951171875, 1.55740272998809814453125, 1.51754081249237060546875},
{ 1.99266541004180908203125, 1.4953501224517822265625, 1.518830776214599609375, 1.07707870006561279296875, 1.42241013050079345703125, 1.72742474079132080078125, 1.41898238658905029296875, 1.94497978687286376953125, 1.7039086818695068359375, 1.5351436138153076171875, 1.30462729930877685546875, 1.47609150409698486328125, 1.8821671009063720703125, 1.95270931720733642578125, 1.1693799495697021484375, 1.24599826335906982421875, 1.233392238616943359375, 1.16544759273529052734375, 1.74977433681488037109375, 1.71187627315521240234375, 1.47592961788177490234375, 1.6582443714141845703125, 1.11120188236236572265625, 1.7359311580657958984375, 1.73120129108428955078125, 1.11398398876190185546875, 1.9838492870330810546875, 1.8588349819183349609375, 1.23464262485504150390625, 1.0619862079620361328125, 1.84863531589508056640625, 1.323164463043212890625, 1.7966401576995849609375, 1.27644383907318115234375, 1.7731487751007080078125, 1.8468379974365234375, 1.0134694576263427734375, 1.9248602390289306640625, 1.997585773468017578125, 1.1465532779693603515625, 1.228231906890869140625, 1.46648693084716796875, 1.27068769931793212890625, 1.21122491359710693359375, 1.24179255962371826171875, 1.30076062679290771484375, 1.935678005218505859375, 1.32542145252227783203125, 1.77371799945831298828125, 1.165741443634033203125, 1.76620006561279296875, 1.84280359745025634765625, 1.67321312427520751953125, 1.28654992580413818359375, 1.55225503444671630859375, 1.70956122875213623046875, 1.88005912303924560546875, 1.27380466461181640625, 1.436138629913330078125, 1.73785102367401123046875, 1.1355507373809814453125, 1.772059917449951171875, 1.9983789920806884765625, 1.62923395633697509765625, 1.443434238433837890625, 1.85824263095855712890625, 1.09367454051971435546875, 1.7481129169464111328125, 1.280844211578369140625, 1.190090656280517578125, 1.4368307590484619140625, 1.645169734954833984375, 1.55924141407012939453125, 1.90458977222442626953125, 1.9386980533599853515625, 1.330803394317626953125, 1.33535063266754150390625, 1.266411304473876953125, 1.79210960865020751953125, 1.2985670566558837890625, 1.27209746837615966796875, 1.0663497447967529296875, 1.3078181743621826171875, 1.2986056804656982421875, 1.8495461940765380859375, 1.76975977420806884765625, 1.50043392181396484375, 1.86109364032745361328125, 1.325837612152099609375, 1.4149944782257080078125, 1.42436230182647705078125, 1.56967175006866455078125, 1.4481258392333984375, 1.26184237003326416015625, 1.2597408294677734375, 1.08488547801971435546875, 1.91351616382598876953125, 1.1899650096893310546875, 1.14837706089019775390625, 1.91762197017669677734375},
{ 1.84733450412750244140625, 1.77968585491180419921875, 1.95254766941070556640625, 1.42740619182586669921875, 1.54867112636566162109375, 1.726627349853515625, 1.7215459346771240234375, 1.2683098316192626953125, 1.9238803386688232421875, 1.53164374828338623046875, 1.427154064178466796875, 1.208999156951904296875, 1.31649100780487060546875, 1.54259717464447021484375, 1.7160015106201171875, 1.860397815704345703125, 1.9320924282073974609375, 1.4987075328826904296875, 1.2022469043731689453125, 1.2990057468414306640625, 1.73677194118499755859375, 1.86648929119110107421875, 1.7410156726837158203125, 1.77783644199371337890625, 1.10555255413055419921875, 1.92568933963775634765625, 1.4518375396728515625, 1.18735492229461669921875, 1.22082996368408203125, 1.6052248477935791015625, 1.49208414554595947265625, 1.26641452312469482421875, 1.22081077098846435546875, 1.06912004947662353515625, 1.58040606975555419921875, 1.563194751739501953125, 1.097949504852294921875, 1.05244410037994384765625, 1.27017104625701904296875, 1.1461391448974609375, 1.34738624095916748046875, 1.947248935699462890625, 1.97290098667144775390625, 1.0648920536041259765625, 1.36538422107696533203125, 1.63850605487823486328125, 1.73170959949493408203125, 1.56123650074005126953125, 1.597766876220703125, 1.09004437923431396484375, 1.744740009307861328125, 1.03003203868865966796875, 1.43835604190826416015625, 1.680488109588623046875, 1.638601779937744140625, 1.73015153408050537109375, 1.8774089813232421875, 1.28919351100921630859375, 1.4918091297149658203125, 1.245419025421142578125, 1.90005600452423095703125, 1.1321868896484375, 1.6082179546356201171875, 1.695547580718994140625, 1.63473796844482421875, 1.3481018543243408203125, 1.04046344757080078125, 1.6970760822296142578125, 1.2516438961029052734375, 1.33411729335784912109375, 1.86339771747589111328125, 1.07430708408355712890625, 1.61114799976348876953125, 1.8318941593170166015625, 1.19752681255340576171875, 1.32024466991424560546875, 1.6622478961944580078125, 1.7635133266448974609375, 1.98244893550872802734375, 1.80753123760223388671875, 1.59100162982940673828125, 1.81741344928741455078125, 1.50029146671295166015625, 1.74938547611236572265625, 1.7189652919769287109375, 1.7843277454376220703125, 1.64914858341217041015625, 1.9105396270751953125, 1.1516306400299072265625, 1.64322185516357421875, 1.96651875972747802734375, 1.0681774616241455078125, 1.17686212062835693359375, 1.39723169803619384765625, 1.4027423858642578125, 1.2228710651397705078125, 1.4133350849151611328125, 1.65960025787353515625, 1.8444387912750244140625, 1.55951869487762451171875},
{ 1.98961544036865234375, 1.3879444599151611328125, 1.15828263759613037109375, 1.7893841266632080078125, 1.97854793071746826171875, 1.36275005340576171875, 1.45552599430084228515625, 1.656301021575927734375, 1.085587978363037109375, 1.104938030242919921875, 1.454750537872314453125, 1.73601567745208740234375, 1.2237832546234130859375, 1.48062026500701904296875, 1.6875345706939697265625, 1.7778186798095703125, 1.09597671031951904296875, 1.15937507152557373046875, 1.9244697093963623046875, 1.50243604183197021484375, 1.2807433605194091796875, 1.63768541812896728515625, 1.63609874248504638671875, 1.000466823577880859375, 1.06832826137542724609375, 1.01237595081329345703125, 1.20385348796844482421875, 1.88082063198089599609375, 1.04658377170562744140625, 1.50405061244964599609375, 1.88099157810211181640625, 1.16915524005889892578125, 1.4369075298309326171875, 1.730530261993408203125, 1.5035343170166015625, 1.956313610076904296875, 1.18017923831939697265625, 1.7302896976470947265625, 1.9512045383453369140625, 1.79676210880279541015625, 1.77269852161407470703125, 1.7358958721160888671875, 1.3583633899688720703125, 1.857027530670166015625, 1.852122783660888671875, 1.697444915771484375, 1.07494831085205078125, 1.81413471698760986328125, 1.53340399265289306640625, 1.555999755859375, 1.37741029262542724609375, 1.50404417514801025390625, 1.49472653865814208984375, 1.2670276165008544921875, 1.92965185642242431640625, 1.3200891017913818359375, 1.81344509124755859375, 1.57383763790130615234375, 1.99396383762359619140625, 1.36141359806060791015625, 1.55202138423919677734375, 1.53101789951324462890625, 1.3919632434844970703125, 1.3314096927642822265625, 1.09396207332611083984375, 1.77787363529205322265625, 1.2155311107635498046875, 1.18615496158599853515625, 1.2297565937042236328125, 1.56186425685882568359375, 1.28774929046630859375, 1.53285014629364013671875, 1.99281394481658935546875, 1.51204097270965576171875, 1.37383830547332763671875, 1.7782561779022216796875, 1.24540054798126220703125, 1.1624844074249267578125, 1.14209520816802978515625, 1.02713239192962646484375, 1.0145781040191650390625, 1.2257416248321533203125, 1.87483036518096923828125, 1.7306735515594482421875, 1.57814037799835205078125, 1.61626434326171875, 1.9293053150177001953125, 1.08494746685028076171875, 1.3005511760711669921875, 1.223845958709716796875, 1.9486706256866455078125, 1.1793324947357177734375, 1.2188816070556640625, 1.4370591640472412109375, 1.822902679443359375, 1.894955158233642578125, 1.37874805927276611328125, 1.41669356822967529296875, 1.39974153041839599609375, 1.55312716960906982421875},
{ 1.11919271945953369140625, 1.94562876224517822265625, 1.3137836456298828125, 1.913902759552001953125, 1.07009232044219970703125, 1.35664427280426025390625, 1.32392013072967529296875, 1.94658553600311279296875, 1.88745725154876708984375, 1.11944425106048583984375, 1.616030216217041015625, 1.4574680328369140625, 1.55531919002532958984375, 1.0221984386444091796875, 1.75654315948486328125, 1.8239533901214599609375, 1.44711410999298095703125, 1.615528106689453125, 1.24426090717315673828125, 1.19761502742767333984375, 1.0991199016571044921875, 1.423442840576171875, 1.6587963104248046875, 1.0901334285736083984375, 1.73389339447021484375, 1.90427839756011962890625, 1.55901014804840087890625, 1.7092339992523193359375, 1.5337085723876953125, 1.16163456439971923828125, 1.1314487457275390625, 1.04462492465972900390625, 1.6639935970306396484375, 1.40531194210052490234375, 1.5887815952301025390625, 1.7039339542388916015625, 1.0467684268951416015625, 1.1622498035430908203125, 1.31823837757110595703125, 1.498646259307861328125, 1.88408243656158447265625, 1.23746395111083984375, 1.7800471782684326171875, 1.78004229068756103515625, 1.93145143985748291015625, 1.424983501434326171875, 1.15587151050567626953125, 1.525134563446044921875, 1.52129590511322021484375, 1.96878874301910400390625, 1.7472479343414306640625, 1.17260563373565673828125, 1.33637797832489013671875, 1.77374899387359619140625, 1.12402355670928955078125, 1.20874536037445068359375, 1.93323910236358642578125, 1.36655938625335693359375, 1.02279365062713623046875, 1.503388881683349609375, 1.0156376361846923828125, 1.6066787242889404296875, 1.9953386783599853515625, 1.39585340023040771484375, 1.45798587799072265625, 1.14726734161376953125, 1.80706250667572021484375, 1.53087604045867919921875, 1.078788280487060546875, 1.6461238861083984375, 1.5854294300079345703125, 1.4445517063140869140625, 1.1640784740447998046875, 1.7266232967376708984375, 1.71840178966522216796875, 1.90026986598968505859375, 1.7408568859100341796875, 1.68865406513214111328125, 1.50287759304046630859375, 1.97465240955352783203125, 1.600528240203857421875, 1.96955621242523193359375, 1.543127536773681640625, 1.8934915065765380859375, 1.07233917713165283203125, 1.35505807399749755859375, 1.89923322200775146484375, 1.61768639087677001953125, 1.54681527614593505859375, 1.9402141571044921875, 1.98552417755126953125, 1.17918121814727783203125, 1.74919927120208740234375, 1.840342998504638671875, 1.21901547908782958984375, 1.766902923583984375, 1.76288807392120361328125, 1.6519639492034912109375, 1.41784536838531494140625, 1.56269800662994384765625},
{ 1.66373503208160400390625, 1.949712276458740234375, 1.32727038860321044921875, 1.7391643524169921875, 1.81739079952239990234375, 1.63031303882598876953125, 1.73611927032470703125, 1.3702545166015625, 1.41867911815643310546875, 1.371779918670654296875, 1.46547591686248779296875, 1.4465301036834716796875, 1.5982990264892578125, 1.58111822605133056640625, 1.028241634368896484375, 1.4437220096588134765625, 1.522838592529296875, 1.308643817901611328125, 1.3599250316619873046875, 1.086340427398681640625, 1.3557116985321044921875, 1.1464207172393798828125, 1.15457999706268310546875, 1.62111246585845947265625, 1.96809589862823486328125, 1.87669813632965087890625, 1.9507424831390380859375, 1.84041917324066162109375, 1.39987027645111083984375, 1.8703486919403076171875, 1.9673683643341064453125, 1.85573375225067138671875, 1.07055222988128662109375, 1.23530542850494384765625, 1.68977129459381103515625, 1.62105858325958251953125, 1.74023544788360595703125, 1.7149994373321533203125, 1.2055594921112060546875, 1.20636284351348876953125, 1.220527172088623046875, 1.3367974758148193359375, 1.290573596954345703125, 1.82102000713348388671875, 1.8354861736297607421875, 1.81043899059295654296875, 1.24482452869415283203125, 1.587245464324951171875, 1.6325595378875732421875, 1.6764743328094482421875, 1.478430271148681640625, 1.0635335445404052734375, 1.34352052211761474609375, 1.20470178127288818359375, 1.847553730010986328125, 1.5180957317352294921875, 1.09540641307830810546875, 1.0426051616668701171875, 1.74034059047698974609375, 1.952297687530517578125, 1.87145531177520751953125, 1.61379146575927734375, 1.91285610198974609375, 1.87409687042236328125, 1.7220439910888671875, 1.26642787456512451171875, 1.0750229358673095703125, 1.82148015499114990234375, 1.7256257534027099609375, 1.171679973602294921875, 1.22655904293060302734375, 1.63590085506439208984375, 1.6996672153472900390625, 1.97214877605438232421875, 1.7429144382476806640625, 1.48571693897247314453125, 1.66158616542816162109375, 1.18030834197998046875, 1.21120917797088623046875, 1.63962805271148681640625, 1.03968942165374755859375, 1.32694327831268310546875, 1.01617062091827392578125, 1.99011313915252685546875, 1.63410961627960205078125, 1.85958635807037353515625, 1.6760714054107666015625, 1.3268680572509765625, 1.327743053436279296875, 1.79095554351806640625, 1.92866623401641845703125, 1.3602426052093505859375, 1.5471875667572021484375, 1.09739220142364501953125, 1.56712973117828369140625, 1.4946787357330322265625, 1.4736793041229248046875, 1.867298126220703125, 1.02599430084228515625, 1.352147579193115234375},
{ 1.19957315921783447265625, 1.71708691120147705078125, 1.045587062835693359375, 1.46156775951385498046875, 1.85205280780792236328125, 1.11546695232391357421875, 1.2023394107818603515625, 1.05706799030303955078125, 1.6399452686309814453125, 1.595364093780517578125, 1.73758876323699951171875, 1.09969723224639892578125, 1.58426964282989501953125, 1.01611506938934326171875, 1.37779819965362548828125, 1.9579474925994873046875, 1.8102929592132568359375, 1.05810153484344482421875, 1.93414795398712158203125, 1.7705748081207275390625, 1.19596779346466064453125, 1.3086879253387451171875, 1.32597243785858154296875, 1.907536029815673828125, 1.77036988735198974609375, 1.09815824031829833984375, 1.35419785976409912109375, 1.18092668056488037109375, 1.8621351718902587890625, 1.08565390110015869140625, 1.2247798442840576171875, 1.80591881275177001953125, 1.99789798259735107421875, 1.5951116085052490234375, 1.8221404552459716796875, 1.11169779300689697265625, 1.5507280826568603515625, 1.70120012760162353515625, 1.732606410980224609375, 1.0024001598358154296875, 1.13856828212738037109375, 1.0652582645416259765625, 1.01784610748291015625, 1.1680514812469482421875, 1.7726719379425048828125, 1.521232128143310546875, 1.7383072376251220703125, 1.045503139495849609375, 1.7560405731201171875, 1.41161310672760009765625, 1.22665441036224365234375, 1.52937018871307373046875, 1.33186089992523193359375, 1.673374652862548828125, 1.11120617389678955078125, 1.43296921253204345703125, 1.081943035125732421875, 1.6739101409912109375, 1.08937323093414306640625, 1.69925510883331298828125, 1.07515752315521240234375, 1.79697072505950927734375, 1.45109546184539794921875, 1.36175906658172607421875, 1.765872955322265625, 1.778602123260498046875, 1.35227954387664794921875, 1.2555258274078369140625, 1.642393589019775390625, 1.7930824756622314453125, 1.83823645114898681640625, 1.478051662445068359375, 1.62539637088775634765625, 1.28886020183563232421875, 1.6171190738677978515625, 1.600221157073974609375, 1.216369152069091796875, 1.5744907855987548828125, 1.583359241485595703125, 1.62724506855010986328125, 1.39604771137237548828125, 1.1545746326446533203125, 1.091105937957763671875, 1.70959818363189697265625, 1.272853374481201171875, 1.81569492816925048828125, 1.9776623249053955078125, 1.60395610332489013671875, 1.4813306331634521484375, 1.4623544216156005859375, 1.3369233608245849609375, 1.8841331005096435546875, 1.33058416843414306640625, 1.7029132843017578125, 1.04281342029571533203125, 1.902019977569580078125, 1.7027170658111572265625, 1.18552696704864501953125, 1.02272331714630126953125, 1.49852085113525390625},
{ 1.68408298492431640625, 1.28094851970672607421875, 1.46449100971221923828125, 1.0496480464935302734375, 1.93413889408111572265625, 1.67212617397308349609375, 1.75167477130889892578125, 1.23957979679107666015625, 1.21885955333709716796875, 1.42467272281646728515625, 1.43364226818084716796875, 1.42953336238861083984375, 1.70495510101318359375, 1.4142215251922607421875, 1.4167273044586181640625, 1.0931642055511474609375, 1.52861773967742919921875, 1.187059879302978515625, 1.900965213775634765625, 1.41775119304656982421875, 1.63145959377288818359375, 1.73356723785400390625, 1.591029644012451171875, 1.4526336193084716796875, 1.3464505672454833984375, 1.0116522312164306640625, 1.6571705341339111328125, 1.00764882564544677734375, 1.73385512828826904296875, 1.2201902866363525390625, 1.44615137577056884765625, 1.30156981945037841796875, 1.66717016696929931640625, 1.82246112823486328125, 1.94218719005584716796875, 1.36054229736328125, 1.6690628528594970703125, 1.31958639621734619140625, 1.97788131237030029296875, 1.16652286052703857421875, 1.49730741977691650390625, 1.77396667003631591796875, 1.195163249969482421875, 1.555716037750244140625, 1.48072302341461181640625, 1.08271968364715576171875, 1.75622653961181640625, 1.86701190471649169921875, 1.605111598968505859375, 1.00111734867095947265625, 1.8044655323028564453125, 1.34042370319366455078125, 1.34919464588165283203125, 1.91602337360382080078125, 1.67541325092315673828125, 1.26552486419677734375, 1.27055108547210693359375, 1.369330883026123046875, 1.85767924785614013671875, 1.87988722324371337890625, 1.341555118560791015625, 1.331399440765380859375, 1.70388638973236083984375, 1.01751804351806640625, 1.03531301021575927734375, 1.2244932651519775390625, 1.891608715057373046875, 1.50729763507843017578125, 1.16160106658935546875, 1.6962182521820068359375, 1.634309291839599609375, 1.3214168548583984375, 1.4528028964996337890625, 1.1429595947265625, 1.6422770023345947265625, 1.4738147258758544921875, 1.89984738826751708984375, 1.98331940174102783203125, 1.83356440067291259765625, 1.66861546039581298828125, 1.8381454944610595703125, 1.68155372142791748046875, 1.79492557048797607421875, 1.6985666751861572265625, 1.7835280895233154296875, 1.52101075649261474609375, 1.99275290966033935546875, 1.59347641468048095703125, 1.01818382740020751953125, 1.12756788730621337890625, 1.73401510715484619140625, 1.5186507701873779296875, 1.9265959262847900390625, 1.74306929111480712890625, 1.87719440460205078125, 1.4233314990997314453125, 1.0814800262451171875, 1.24876344203948974609375, 1.2932245731353759765625, 1.43913304805755615234375},
{ 1.93874073028564453125, 1.0764276981353759765625, 1.0284807682037353515625, 1.128314971923828125, 1.0433704853057861328125, 1.50545203685760498046875, 1.88304793834686279296875, 1.3802967071533203125, 1.0027391910552978515625, 1.75420987606048583984375, 1.5721933841705322265625, 1.02068793773651123046875, 1.4900875091552734375, 1.35281431674957275390625, 1.941399097442626953125, 1.102428913116455078125, 1.185247898101806640625, 1.398517131805419921875, 1.26070725917816162109375, 1.1323173046112060546875, 1.29808223247528076171875, 1.5166466236114501953125, 1.12315845489501953125, 1.40694606304168701171875, 1.84191882610321044921875, 1.5715444087982177734375, 1.09322869777679443359375, 1.0986402034759521484375, 1.65699064731597900390625, 1.12750327587127685546875, 1.105267047882080078125, 1.09139478206634521484375, 1.18387234210968017578125, 1.65970504283905029296875, 1.61193311214447021484375, 1.56681215763092041015625, 1.98691785335540771484375, 1.51515734195709228515625, 1.48263466358184814453125, 1.3400399684906005859375, 1.027698040008544921875, 1.62363147735595703125, 1.651964664459228515625, 1.94570791721343994140625, 1.6884377002716064453125, 1.9586002826690673828125, 1.51813948154449462890625, 1.47386562824249267578125, 1.5454537868499755859375, 1.7481749057769775390625, 1.091435909271240234375, 1.155920505523681640625, 1.89259243011474609375, 1.43604278564453125, 1.89262878894805908203125, 1.70057451725006103515625, 1.01466655731201171875, 1.39240491390228271484375, 1.60142862796783447265625, 1.37976205348968505859375, 1.2108933925628662109375, 1.37491381168365478515625, 1.4549186229705810546875, 1.8645877838134765625, 1.56833207607269287109375, 1.73961031436920166015625, 1.39599287509918212890625, 1.81126344203948974609375, 1.48532068729400634765625, 1.4018614292144775390625, 1.9717934131622314453125, 1.19704568386077880859375, 1.94491446018218994140625, 1.5472981929779052734375, 1.98214781284332275390625, 1.4061739444732666015625, 1.53832280635833740234375, 1.0927524566650390625, 1.87800681591033935546875, 1.06580722332000732421875, 1.23834693431854248046875, 1.89719474315643310546875, 1.9098813533782958984375, 1.63196194171905517578125, 1.9228174686431884765625, 1.72267210483551025390625, 1.02628076076507568359375, 1.7254498004913330078125, 1.6480314731597900390625, 1.94524490833282470703125, 1.5221498012542724609375, 1.21781456470489501953125, 1.67219066619873046875, 1.0159246921539306640625, 1.43730628490447998046875, 1.0672700405120849609375, 1.228838443756103515625, 1.6716120243072509765625, 1.7048785686492919921875, 1.90463733673095703125},
{ 1.89603328704833984375, 1.049743175506591796875, 1.36928284168243408203125, 1.64110743999481201171875, 1.63067853450775146484375, 1.63696181774139404296875, 1.1950550079345703125, 1.30146181583404541015625, 1.23573935031890869140625, 1.47021961212158203125, 1.046222209930419921875, 1.90064632892608642578125, 1.70104563236236572265625, 1.54026210308074951171875, 1.10341060161590576171875, 1.40047585964202880859375, 1.60700356960296630859375, 1.723332881927490234375, 1.39954090118408203125, 1.12873208522796630859375, 1.8355329036712646484375, 1.4296112060546875, 1.9057662487030029296875, 1.80260097980499267578125, 1.03100490570068359375, 1.00164902210235595703125, 1.36741006374359130859375, 1.3021104335784912109375, 1.81117916107177734375, 1.86280918121337890625, 1.8899028301239013671875, 1.1935672760009765625, 1.72814142704010009765625, 1.41570246219635009765625, 1.2747199535369873046875, 1.00299549102783203125, 1.97924149036407470703125, 1.69062519073486328125, 1.10531961917877197265625, 1.2395732402801513671875, 1.86802995204925537109375, 1.7439968585968017578125, 1.5830795764923095703125, 1.1690704822540283203125, 1.0151960849761962890625, 1.80679714679718017578125, 1.113234996795654296875, 1.33728659152984619140625, 1.3195056915283203125, 1.1830041408538818359375, 1.64081633090972900390625, 1.84348738193511962890625, 1.668737888336181640625, 1.89803135395050048828125, 1.736586093902587890625, 1.36384332180023193359375, 1.40062296390533447265625, 1.0971653461456298828125, 1.43297684192657470703125, 1.92486655712127685546875, 1.51378023624420166015625, 1.19400322437286376953125, 1.81002843379974365234375, 1.42684853076934814453125, 1.62865483760833740234375, 1.76889026165008544921875, 1.331326007843017578125, 1.9172976016998291015625, 1.6984555721282958984375, 1.2173569202423095703125, 1.92993676662445068359375, 1.614376068115234375, 1.4700927734375, 1.14855706691741943359375, 1.84434783458709716796875, 1.680338382720947265625, 1.69511508941650390625, 1.5337049961090087890625, 1.2044041156768798828125, 1.7449681758880615234375, 1.0906474590301513671875, 1.60451304912567138671875, 1.36724507808685302734375, 1.1790158748626708984375, 1.05032837390899658203125, 1.50162923336029052734375, 1.00324261188507080078125, 1.117636203765869140625, 1.10524785518646240234375, 1.673074245452880859375, 1.9319388866424560546875, 1.23382580280303955078125, 1.13488423824310302734375, 1.02267968654632568359375, 1.70798313617706298828125, 1.26186025142669677734375, 1.32804203033447265625, 1.80852508544921875, 1.95706951618194580078125, 1.27073228359222412109375},
{ 1.29137551784515380859375, 1.46187496185302734375, 1.68758881092071533203125, 1.5223968029022216796875, 1.13311922550201416015625, 1.99799597263336181640625, 1.07116854190826416015625, 1.59627115726470947265625, 1.545204639434814453125, 1.91988646984100341796875, 1.63523960113525390625, 1.15089738368988037109375, 1.18707859516143798828125, 1.496795654296875, 1.52203655242919921875, 1.58577334880828857421875, 1.814623355865478515625, 1.99870479106903076171875, 1.8256986141204833984375, 1.12534809112548828125, 1.67859423160552978515625, 1.532265186309814453125, 1.3657066822052001953125, 1.02995967864990234375, 1.673057079315185546875, 1.6267354488372802734375, 1.210320949554443359375, 1.5567719936370849609375, 1.2338259220123291015625, 1.56991946697235107421875, 1.95001852512359619140625, 1.67071259021759033203125, 1.98689997196197509765625, 1.4941031932830810546875, 1.72093045711517333984375, 1.50541055202484130859375, 1.1469018459320068359375, 1.2119925022125244140625, 1.97827994823455810546875, 1.57413327693939208984375, 1.66551458835601806640625, 1.80265104770660400390625, 1.01981937885284423828125, 1.73072445392608642578125, 1.1299192905426025390625, 1.9474370479583740234375, 1.25926792621612548828125, 1.880541324615478515625, 1.4112327098846435546875, 1.015941143035888671875, 1.24974906444549560546875, 1.4413926601409912109375, 1.06294429302215576171875, 1.90192425251007080078125, 1.457228183746337890625, 1.5544755458831787109375, 1.4693543910980224609375, 1.609254360198974609375, 1.7839496135711669921875, 1.04531323909759521484375, 1.74401128292083740234375, 1.587844371795654296875, 1.8418748378753662109375, 1.13469302654266357421875, 1.3781487941741943359375, 1.81958997249603271484375, 1.976119518280029296875, 1.89960300922393798828125, 1.6391239166259765625, 1.6543064117431640625, 1.03839111328125, 1.48416996002197265625, 1.71885383129119873046875, 1.3956663608551025390625, 1.91042649745941162109375, 1.0605971813201904296875, 1.632254123687744140625, 1.63713777065277099609375, 1.77742898464202880859375, 1.5401012897491455078125, 1.86567580699920654296875, 1.3479206562042236328125, 1.15150654315948486328125, 1.03385007381439208984375, 1.7753429412841796875, 1.70888507366180419921875, 1.64510881900787353515625, 1.06390035152435302734375, 1.73579013347625732421875, 1.69850838184356689453125, 1.49446475505828857421875, 1.52413475513458251953125, 1.03830015659332275390625, 1.4288132190704345703125, 1.83302021026611328125, 1.391199588775634765625, 1.539340972900390625, 1.23130428791046142578125, 1.7148749828338623046875, 1.1854426860809326171875},
{ 1.49290621280670166015625, 1.8882210254669189453125, 1.1818501949310302734375, 1.52944087982177734375, 1.241901397705078125, 1.318779468536376953125, 1.370984554290771484375, 1.89330160617828369140625, 1.48386681079864501953125, 1.463238239288330078125, 1.16992175579071044921875, 1.75217163562774658203125, 1.28761184215545654296875, 1.2926895618438720703125, 1.88318932056427001953125, 1.7650091648101806640625, 1.621116161346435546875, 1.06606757640838623046875, 1.91370308399200439453125, 1.79658329486846923828125, 1.93746650218963623046875, 1.85358536243438720703125, 1.7237050533294677734375, 1.8159110546112060546875, 1.51079452037811279296875, 1.81017315387725830078125, 1.5457012653350830078125, 1.54469501972198486328125, 1.5222146511077880859375, 1.19891536235809326171875, 1.843398571014404296875, 1.85576093196868896484375, 1.89576089382171630859375, 1.16448819637298583984375, 1.52264249324798583984375, 1.9214947223663330078125, 1.88432466983795166015625, 1.2565972805023193359375, 1.89235508441925048828125, 1.11228072643280029296875, 1.4055926799774169921875, 1.7034146785736083984375, 1.37547171115875244140625, 1.6449387073516845703125, 1.12798368930816650390625, 1.435017108917236328125, 1.9698789119720458984375, 1.98116147518157958984375, 1.3065865039825439453125, 1.856822967529296875, 1.4593522548675537109375, 1.9759523868560791015625, 1.369097232818603515625, 1.3730299472808837890625, 1.374493122100830078125, 1.77606296539306640625, 1.25175726413726806640625, 1.66005265712738037109375, 1.70366656780242919921875, 1.46842992305755615234375, 1.485290050506591796875, 1.68995964527130126953125, 1.35393917560577392578125, 1.478613376617431640625, 1.03083896636962890625, 1.50391161441802978515625, 1.36201584339141845703125, 1.71923387050628662109375, 1.86590516567230224609375, 1.73559844493865966796875, 1.85517776012420654296875, 1.48840999603271484375, 1.320284366607666015625, 1.88467681407928466796875, 1.7622196674346923828125, 1.118196010589599609375, 1.1620047092437744140625, 1.34020769596099853515625, 1.274387836456298828125, 1.37301886081695556640625, 1.43326461315155029296875, 1.1540939807891845703125, 1.056316852569580078125, 1.598116397857666015625, 1.0363695621490478515625, 1.564517498016357421875, 1.20696747303009033203125, 1.61797440052032470703125, 1.0696699619293212890625, 1.269377231597900390625, 1.97056448459625244140625, 1.384764194488525390625, 1.91349899768829345703125, 1.4497263431549072265625, 1.19753348827362060546875, 1.3767802715301513671875, 1.0661094188690185546875, 1.5432097911834716796875, 1.5554387569427490234375, 1.74687731266021728515625},
{ 1.76750195026397705078125, 1.489921092987060546875, 1.2209084033966064453125, 1.14591038227081298828125, 1.39374363422393798828125, 1.935634613037109375, 1.74616205692291259765625, 1.682643890380859375, 1.76998031139373779296875, 1.77718460559844970703125, 1.8897998332977294921875, 1.66911947727203369140625, 1.09459912776947021484375, 1.06006538867950439453125, 1.98729383945465087890625, 1.98225200176239013671875, 1.93976652622222900390625, 1.95159709453582763671875, 1.04086434841156005859375, 1.3825016021728515625, 1.5248658657073974609375, 1.4518635272979736328125, 1.3679168224334716796875, 1.59981048107147216796875, 1.739934444427490234375, 1.854650020599365234375, 1.99948012828826904296875, 1.16954076290130615234375, 1.919101715087890625, 1.958380222320556640625, 1.8286435604095458984375, 1.0184123516082763671875, 1.3640263080596923828125, 1.0270540714263916015625, 1.50899446010589599609375, 1.80043971538543701171875, 1.6173336505889892578125, 1.50118505954742431640625, 1.10305583477020263671875, 1.98286974430084228515625, 1.486053466796875, 1.45873820781707763671875, 1.48072338104248046875, 1.6821196079254150390625, 1.81505739688873291015625, 1.82606685161590576171875, 1.46770370006561279296875, 1.24971354007720947265625, 1.01049602031707763671875, 1.338850498199462890625, 1.743951320648193359375, 1.60822069644927978515625, 1.31323707103729248046875, 1.253032684326171875, 1.49210631847381591796875, 1.337193012237548828125, 1.82230246067047119140625, 1.8057577610015869140625, 1.79593193531036376953125, 1.50910198688507080078125, 1.26830589771270751953125, 1.42630875110626220703125, 1.7887516021728515625, 1.27527654170989990234375, 1.536890506744384765625, 1.69704520702362060546875, 1.55188715457916259765625, 1.201840877532958984375, 1.942165851593017578125, 1.06433999538421630859375, 1.763095855712890625, 1.35565125942230224609375, 1.2501461505889892578125, 1.299517154693603515625, 1.09500801563262939453125, 1.1402339935302734375, 1.4521872997283935546875, 1.709789752960205078125, 1.36356449127197265625, 1.8817226886749267578125, 1.28842449188232421875, 1.0991966724395751953125, 1.4264543056488037109375, 1.16479623317718505859375, 1.52120983600616455078125, 1.47954046726226806640625, 1.83155167102813720703125, 1.9186155796051025390625, 1.95854938030242919921875, 1.53132522106170654296875, 1.2153542041778564453125, 1.2527616024017333984375, 1.22754132747650146484375, 1.81469333171844482421875, 1.45141994953155517578125, 1.04317295551300048828125, 1.29781305789947509765625, 1.73036348819732666015625, 1.5488049983978271484375, 1.2680828571319580078125},
{ 1.23056793212890625, 1.3005011081695556640625, 1.09395694732666015625, 1.82397687435150146484375, 1.2799904346466064453125, 1.68187272548675537109375, 1.71143114566802978515625, 1.14270782470703125, 1.0667030811309814453125, 1.9990952014923095703125, 1.92124843597412109375, 1.2852709293365478515625, 1.96310412883758544921875, 1.78759181499481201171875, 1.47019672393798828125, 1.0355026721954345703125, 1.23685586452484130859375, 1.4604713916778564453125, 1.13704669475555419921875, 1.41039371490478515625, 1.51182138919830322265625, 1.706965923309326171875, 1.568488597869873046875, 1.433526515960693359375, 1.979002475738525390625, 1.64086759090423583984375, 1.8650701045989990234375, 1.65851294994354248046875, 1.3574774265289306640625, 1.69896697998046875, 1.91713416576385498046875, 1.44243133068084716796875, 1.6053378582000732421875, 1.28949010372161865234375, 1.4907557964324951171875, 1.96926462650299072265625, 1.38062655925750732421875, 1.190536022186279296875, 1.06368005275726318359375, 1.02333748340606689453125, 1.25227534770965576171875, 1.69851434230804443359375, 1.41125929355621337890625, 1.51275384426116943359375, 1.66104185581207275390625, 1.52658283710479736328125, 1.9423911571502685546875, 1.742834568023681640625, 1.6304473876953125, 1.453084468841552734375, 1.78545534610748291015625, 1.4395544528961181640625, 1.2277147769927978515625, 1.71998560428619384765625, 1.62425148487091064453125, 1.5229804515838623046875, 1.7747051715850830078125, 1.181313037872314453125, 1.283936977386474609375, 1.6307086944580078125, 1.80885601043701171875, 1.20159161090850830078125, 1.06696379184722900390625, 1.3913021087646484375, 1.79411828517913818359375, 1.30428183078765869140625, 1.83901631832122802734375, 1.4477279186248779296875, 1.58189451694488525390625, 1.5702168941497802734375, 1.86494922637939453125, 1.23079526424407958984375, 1.62197554111480712890625, 1.78604090213775634765625, 1.39472424983978271484375, 1.48259222507476806640625, 1.9234783649444580078125, 1.3426458835601806640625, 1.99934804439544677734375, 1.52992403507232666015625, 1.7657840251922607421875, 1.88360941410064697265625, 1.6568100452423095703125, 1.30775010585784912109375, 1.15947437286376953125, 1.70363223552703857421875, 1.58801925182342529296875, 1.13262164592742919921875, 1.05726993083953857421875, 1.8969752788543701171875, 1.84274208545684814453125, 1.2261192798614501953125, 1.31496775150299072265625, 1.25589787960052490234375, 1.6355402469635009765625, 1.9882900714874267578125, 1.40237820148468017578125, 1.9190948009490966796875, 1.43170750141143798828125, 1.0210857391357421875},
{ 1.77013385295867919921875, 1.7832076549530029296875, 1.901799678802490234375, 1.5312721729278564453125, 1.5858933925628662109375, 1.91461181640625, 1.7065045833587646484375, 1.4808826446533203125, 1.934999942779541015625, 1.05903637409210205078125, 1.28349006175994873046875, 1.74833428859710693359375, 1.82626521587371826171875, 1.54407978057861328125, 1.27669966220855712890625, 1.78756868839263916015625, 1.10712432861328125, 1.627760410308837890625, 1.89916908740997314453125, 1.68216574192047119140625, 1.61207282543182373046875, 1.08445441722869873046875, 1.45646321773529052734375, 1.10628163814544677734375, 1.061104297637939453125, 1.54083251953125, 1.62011373043060302734375, 1.0355861186981201171875, 1.70814800262451171875, 1.5617978572845458984375, 1.45105659961700439453125, 1.2082004547119140625, 1.73950588703155517578125, 1.48642385005950927734375, 1.1730697154998779296875, 1.3356342315673828125, 1.422290802001953125, 1.0138909816741943359375, 1.69620990753173828125, 1.06372320652008056640625, 1.00286352634429931640625, 1.5394246578216552734375, 1.89025115966796875, 1.68356716632843017578125, 1.3552703857421875, 1.24023306369781494140625, 1.6081216335296630859375, 1.59246671199798583984375, 1.3796808719635009765625, 1.9114439487457275390625, 1.4593412876129150390625, 1.5048611164093017578125, 1.15082466602325439453125, 1.552042484283447265625, 1.33345949649810791015625, 1.41326618194580078125, 1.8164298534393310546875, 1.70080912113189697265625, 1.67349207401275634765625, 1.299211025238037109375, 1.24565994739532470703125, 1.522256374359130859375, 1.49935948848724365234375, 1.59417593479156494140625, 1.4275515079498291015625, 1.64256680011749267578125, 1.18132388591766357421875, 1.39053022861480712890625, 1.61945164203643798828125, 1.73553025722503662109375, 1.96342670917510986328125, 1.40246903896331787109375, 1.24545562267303466796875, 1.858481884002685546875, 1.2369263172149658203125, 1.6769511699676513671875, 1.5448439121246337890625, 1.53823888301849365234375, 1.56373500823974609375, 1.05463695526123046875, 1.97052037715911865234375, 1.60703837871551513671875, 1.449857234954833984375, 1.380825042724609375, 1.3374493122100830078125, 1.7884752750396728515625, 1.8688266277313232421875, 1.4663903713226318359375, 1.72109305858612060546875, 1.03343904018402099609375, 1.5351436138153076171875, 1.79872143268585205078125, 1.10584962368011474609375, 1.60605156421661376953125, 1.927712917327880859375, 1.00265824794769287109375, 1.783489704132080078125, 1.9196050167083740234375, 1.06328117847442626953125, 1.05142915248870849609375},
{ 1.12249863147735595703125, 1.01987397670745849609375, 1.227588653564453125, 1.36199474334716796875, 1.43417656421661376953125, 1.21023404598236083984375, 1.833955287933349609375, 1.46920430660247802734375, 1.2310657501220703125, 1.40525829792022705078125, 1.6545484066009521484375, 1.32886183261871337890625, 1.88251268863677978515625, 1.50743544101715087890625, 1.16552603244781494140625, 1.996165752410888671875, 1.33672130107879638671875, 1.074283599853515625, 1.49612271785736083984375, 1.97431290149688720703125, 1.45669078826904296875, 1.5917873382568359375, 1.13958632946014404296875, 1.862935543060302734375, 1.10615241527557373046875, 1.4978358745574951171875, 1.41411590576171875, 1.75653898715972900390625, 1.985507488250732421875, 1.9556601047515869140625, 1.6737995147705078125, 1.392939090728759765625, 1.2177646160125732421875, 1.377270221710205078125, 1.2695510387420654296875, 1.0516998767852783203125, 1.68447768688201904296875, 1.69689333438873291015625, 1.26004803180694580078125, 1.20257055759429931640625, 1.1116826534271240234375, 1.39441049098968505859375, 1.87266957759857177734375, 1.9039237499237060546875, 1.9058353900909423828125, 1.26879489421844482421875, 1.71443307399749755859375, 1.95119249820709228515625, 1.73974955081939697265625, 1.96154892444610595703125, 1.73293220996856689453125, 1.7753078937530517578125, 1.8885333538055419921875, 1.23014175891876220703125, 1.927274227142333984375, 1.0911366939544677734375, 1.315527439117431640625, 1.97144687175750732421875, 1.8090178966522216796875, 1.29591834545135498046875, 1.50824272632598876953125, 1.995179653167724609375, 1.6131103038787841796875, 1.6177031993865966796875, 1.064297199249267578125, 1.5473344326019287109375, 1.25882470607757568359375, 1.01378953456878662109375, 1.027353763580322265625, 1.5836226940155029296875, 1.06069839000701904296875, 1.8191611766815185546875, 1.97305810451507568359375, 1.792910099029541015625, 1.18946945667266845703125, 1.14492511749267578125, 1.84497547149658203125, 1.37065410614013671875, 1.883014678955078125, 1.02674853801727294921875, 1.5405285358428955078125, 1.54234158992767333984375, 1.4072873592376708984375, 1.323297023773193359375, 1.24693524837493896484375, 1.83692586421966552734375, 1.7672541141510009765625, 1.36467158794403076171875, 1.5271456241607666015625, 1.11026489734649658203125, 1.16783273220062255859375, 1.35084629058837890625, 1.15577971935272216796875, 1.31855833530426025390625, 1.22483003139495849609375, 1.50010573863983154296875, 1.70506489276885986328125, 1.04178512096405029296875, 1.92587864398956298828125, 1.94748270511627197265625},
{ 1.75714111328125, 1.341374874114990234375, 1.39319515228271484375, 1.60816109180450439453125, 1.8624761104583740234375, 1.0854165554046630859375, 1.50108444690704345703125, 1.86790144443511962890625, 1.4497320652008056640625, 1.5267398357391357421875, 1.0470523834228515625, 1.28202724456787109375, 1.828380107879638671875, 1.749657154083251953125, 1.81749880313873291015625, 1.44986546039581298828125, 1.798858165740966796875, 1.26499450206756591796875, 1.25775921344757080078125, 1.03397548198699951171875, 1.6760084629058837890625, 1.47102940082550048828125, 1.8705418109893798828125, 1.596086978912353515625, 1.06251513957977294921875, 1.86442768573760986328125, 1.36436569690704345703125, 1.18303668498992919921875, 1.37234127521514892578125, 1.0011813640594482421875, 1.5519979000091552734375, 1.66270625591278076171875, 1.10416710376739501953125, 1.2075464725494384765625, 1.99889099597930908203125, 1.8099601268768310546875, 1.86482703685760498046875, 1.040979862213134765625, 1.42162072658538818359375, 1.14258229732513427734375, 1.14274728298187255859375, 1.50107705593109130859375, 1.8363230228424072265625, 1.50721418857574462890625, 1.8313834667205810546875, 1.99051010608673095703125, 1.45713222026824951171875, 1.4152925014495849609375, 1.5026576519012451171875, 1.02596437931060791015625, 1.3446180820465087890625, 1.12898600101470947265625, 1.430396556854248046875, 1.6990764141082763671875, 1.80422341823577880859375, 1.4971334934234619140625, 1.36376857757568359375, 1.8873717784881591796875, 1.5347015857696533203125, 1.541181087493896484375, 1.0507214069366455078125, 1.215201854705810546875, 1.526554107666015625, 1.79112017154693603515625, 1.51141965389251708984375, 1.76468169689178466796875, 1.71046769618988037109375, 1.371424198150634765625, 1.06168186664581298828125, 1.53662788867950439453125, 1.355752468109130859375, 1.836986541748046875, 1.08641874790191650390625, 1.66149532794952392578125, 1.21877896785736083984375, 1.75905835628509521484375, 1.56307017803192138671875, 1.36031520366668701171875, 1.4414157867431640625, 1.061185359954833984375, 1.33504283428192138671875, 1.6556322574615478515625, 1.199467182159423828125, 1.1051456928253173828125, 1.13514769077301025390625, 1.832442760467529296875, 1.10111010074615478515625, 1.52688777446746826171875, 1.3590376377105712890625, 1.649131298065185546875, 1.335332393646240234375, 1.8224670886993408203125, 1.588644504547119140625, 1.29840862751007080078125, 1.57036983966827392578125, 1.6839840412139892578125, 1.865617275238037109375, 1.11824953556060791015625, 1.602143764495849609375, 1.08552181720733642578125},
{ 1.05282962322235107421875, 1.7526986598968505859375, 1.1190831661224365234375, 1.9174649715423583984375, 1.8634631633758544921875, 1.01863920688629150390625, 1.58052825927734375, 1.03515923023223876953125, 1.089540958404541015625, 1.9695684909820556640625, 1.30551254749298095703125, 1.68273270130157470703125, 1.75946712493896484375, 1.39652502536773681640625, 1.25542354583740234375, 1.55198085308074951171875, 1.85159695148468017578125, 1.7104203701019287109375, 1.35331881046295166015625, 1.18504083156585693359375, 1.50517475605010986328125, 1.09047663211822509765625, 1.06986320018768310546875, 1.49782907962799072265625, 1.98127067089080810546875, 1.38266408443450927734375, 1.75926685333251953125, 1.0534789562225341796875, 1.3737185001373291015625, 1.7481381893157958984375, 1.74522197246551513671875, 1.085777759552001953125, 1.070053577423095703125, 1.06167781352996826171875, 1.15684068202972412109375, 1.27260494232177734375, 1.962449550628662109375, 1.0601222515106201171875, 1.5145928859710693359375, 1.2593691349029541015625, 1.4086563587188720703125, 1.24080884456634521484375, 1.06624305248260498046875, 1.9324457645416259765625, 1.94293749332427978515625, 1.51001060009002685546875, 1.87278807163238525390625, 1.44261455535888671875, 1.73700797557830810546875, 1.5813732147216796875, 1.6443951129913330078125, 1.97849714756011962890625, 1.81097114086151123046875, 1.12435328960418701171875, 1.32633841037750244140625, 1.28999412059783935546875, 1.994256496429443359375, 1.662655353546142578125, 1.43493711948394775390625, 1.96172320842742919921875, 1.63655757904052734375, 1.22266948223114013671875, 1.143493175506591796875, 1.43645632266998291015625, 1.0687687397003173828125, 1.73190891742706298828125, 1.11822807788848876953125, 1.78855717182159423828125, 1.81392300128936767578125, 1.16744709014892578125, 1.10422074794769287109375, 1.247418880462646484375, 1.54812991619110107421875, 1.45435583591461181640625, 1.261345386505126953125, 1.470901012420654296875, 1.81151235103607177734375, 1.11414241790771484375, 1.25020825862884521484375, 1.5687677860260009765625, 1.469144344329833984375, 1.66318714618682861328125, 1.06808567047119140625, 1.8761250972747802734375, 1.921988964080810546875, 1.761180877685546875, 1.6348612308502197265625, 1.4768581390380859375, 1.0678350925445556640625, 1.1095626354217529296875, 1.12896382808685302734375, 1.47706902027130126953125, 1.01223528385162353515625, 1.09995663166046142578125, 1.0733044147491455078125, 1.02851378917694091796875, 1.52944362163543701171875, 1.2126104831695556640625, 1.1712138652801513671875, 1.10204064846038818359375},
{ 1.16483223438262939453125, 1.89238083362579345703125, 1.01102697849273681640625, 1.73843061923980712890625, 1.8094279766082763671875, 1.8087885379791259765625, 1.68481695652008056640625, 1.97066020965576171875, 1.7831394672393798828125, 1.680652618408203125, 1.69215905666351318359375, 1.0284750461578369140625, 1.90508115291595458984375, 1.29235899448394775390625, 1.01464366912841796875, 1.1936972141265869140625, 1.3251783847808837890625, 1.0384006500244140625, 1.5701401233673095703125, 1.93247497081756591796875, 1.42260444164276123046875, 1.25931549072265625, 1.4862349033355712890625, 1.60622060298919677734375, 1.4542181491851806640625, 1.32762420177459716796875, 1.123668670654296875, 1.93254721164703369140625, 1.953001499176025390625, 1.483767032623291015625, 1.849773883819580078125, 1.196206569671630859375, 1.87649667263031005859375, 1.4220416545867919921875, 1.56191241741180419921875, 1.2100269794464111328125, 1.50524425506591796875, 1.62654101848602294921875, 1.96091258525848388671875, 1.0258500576019287109375, 1.09122025966644287109375, 1.4570901393890380859375, 1.57450735569000244140625, 1.39546859264373779296875, 1.256273746490478515625, 1.98518407344818115234375, 1.53077137470245361328125, 1.98156440258026123046875, 1.14056432247161865234375, 1.57992517948150634765625, 1.08155858516693115234375, 1.31864511966705322265625, 1.30099976062774658203125, 1.2439610958099365234375, 1.875939846038818359375, 1.52398204803466796875, 1.359673023223876953125, 1.69942152500152587890625, 1.9836399555206298828125, 1.7585480213165283203125, 1.40230047702789306640625, 1.22385609149932861328125, 1.6684758663177490234375, 1.4379541873931884765625, 1.126658916473388671875, 1.236172199249267578125, 1.91179370880126953125, 1.1933879852294921875, 1.74102318286895751953125, 1.63257181644439697265625, 1.68590641021728515625, 1.58255040645599365234375, 1.61260378360748291015625, 1.87248933315277099609375, 1.9775311946868896484375, 1.55059397220611572265625, 1.6659839153289794921875, 1.8145294189453125, 1.56122720241546630859375, 1.64105951786041259765625, 1.53155767917633056640625, 1.30240380764007568359375, 1.52283251285552978515625, 1.9568140506744384765625, 1.4439671039581298828125, 1.50086915493011474609375, 1.53290235996246337890625, 1.8709886074066162109375, 1.89053976535797119140625, 1.9816648960113525390625, 1.87014615535736083984375, 1.4879150390625, 1.00972640514373779296875, 1.55945003032684326171875, 1.19486510753631591796875, 1.85406386852264404296875, 1.7395379543304443359375, 1.87774097919464111328125, 1.0723898410797119140625, 1.91898214817047119140625},
{ 1.7448494434356689453125, 1.2465174198150634765625, 1.24623024463653564453125, 1.9215085506439208984375, 1.21981918811798095703125, 1.66294956207275390625, 1.4743196964263916015625, 1.08343017101287841796875, 1.4483640193939208984375, 1.242729663848876953125, 1.5276510715484619140625, 1.8223769664764404296875, 1.24880504608154296875, 1.4056804180145263671875, 1.57745075225830078125, 1.550725460052490234375, 1.44800865650177001953125, 1.34384143352508544921875, 1.75270879268646240234375, 1.12103736400604248046875, 1.96732330322265625, 1.04490625858306884765625, 1.60111677646636962890625, 1.22449779510498046875, 1.658517360687255859375, 1.06566059589385986328125, 1.30000460147857666015625, 1.53935229778289794921875, 1.88971698284149169921875, 1.05541932582855224609375, 1.61727845668792724609375, 1.629344463348388671875, 1.88134288787841796875, 1.02946412563323974609375, 1.6223580837249755859375, 1.5921535491943359375, 1.7920482158660888671875, 1.39248096942901611328125, 1.14711475372314453125, 1.45783150196075439453125, 1.55465638637542724609375, 1.7119977474212646484375, 1.99680805206298828125, 1.33724117279052734375, 1.4620978832244873046875, 1.2418212890625, 1.91102373600006103515625, 1.32049334049224853515625, 1.5033481121063232421875, 1.19547557830810546875, 1.27461159229278564453125, 1.12538433074951171875, 1.44936525821685791015625, 1.7696387767791748046875, 1.57862222194671630859375, 1.4958336353302001953125, 1.6890270709991455078125, 1.9175808429718017578125, 1.6312448978424072265625, 1.35032093524932861328125, 1.815068721771240234375, 1.87260115146636962890625, 1.51874542236328125, 1.6803243160247802734375, 1.96002066135406494140625, 1.42146551609039306640625, 1.316402912139892578125, 1.19875729084014892578125, 1.882145404815673828125, 1.92784440517425537109375, 1.54944765567779541015625, 1.7384064197540283203125, 1.80137550830841064453125, 1.10574996471405029296875, 1.40399897098541259765625, 1.40036880970001220703125, 1.98525083065032958984375, 1.54297363758087158203125, 1.68800199031829833984375, 1.45248973369598388671875, 1.084856510162353515625, 1.9745237827301025390625, 1.5421655178070068359375, 1.9777996540069580078125, 1.22075974941253662109375, 1.3060626983642578125, 1.9008998870849609375, 1.27295243740081787109375, 1.81894767284393310546875, 1.387344837188720703125, 1.70325374603271484375, 1.9966623783111572265625, 1.1967651844024658203125, 1.5356538295745849609375, 1.8538520336151123046875, 1.06814181804656982421875, 1.89885175228118896484375, 1.8092401027679443359375, 1.93383324146270751953125, 1.31553876399993896484375},
{ 1.030758380889892578125, 1.66178739070892333984375, 1.874373912811279296875, 1.8564898967742919921875, 1.56070530414581298828125, 1.10469281673431396484375, 1.33597886562347412109375, 1.86123287677764892578125, 1.82085645198822021484375, 1.63885402679443359375, 1.6459331512451171875, 1.61050236225128173828125, 1.56770455837249755859375, 1.660839557647705078125, 1.75250184535980224609375, 1.07447528839111328125, 1.91589653491973876953125, 1.0484187602996826171875, 1.00507318973541259765625, 1.21624815464019775390625, 1.11167109012603759765625, 1.37149965763092041015625, 1.302595615386962890625, 1.57777488231658935546875, 1.05629634857177734375, 1.85306680202484130859375, 1.99201595783233642578125, 1.6158046722412109375, 1.57950687408447265625, 1.08011806011199951171875, 1.516716480255126953125, 1.78781878948211669921875, 1.4629418849945068359375, 1.46460247039794921875, 1.81495249271392822265625, 1.387968540191650390625, 1.2135822772979736328125, 1.45435810089111328125, 1.468289852142333984375, 1.1330125331878662109375, 1.587188243865966796875, 1.4940488338470458984375, 1.6000425815582275390625, 1.49825465679168701171875, 1.86173689365386962890625, 1.73610222339630126953125, 1.52370989322662353515625, 1.8034808635711669921875, 1.86085927486419677734375, 1.50164735317230224609375, 1.1414144039154052734375, 1.0488970279693603515625, 1.72727859020233154296875, 1.49145162105560302734375, 1.09233915805816650390625, 1.50106680393218994140625, 1.44624722003936767578125, 1.74685871601104736328125, 1.6511652469635009765625, 1.0288484096527099609375, 1.11898434162139892578125, 1.360725879669189453125, 1.3765094280242919921875, 1.189332485198974609375, 1.98611342906951904296875, 1.9383618831634521484375, 1.50936114788055419921875, 1.06377995014190673828125, 1.201099872589111328125, 1.8084638118743896484375, 1.1215207576751708984375, 1.843558788299560546875, 1.3536880016326904296875, 1.98405492305755615234375, 1.01403653621673583984375, 1.166081905364990234375, 1.7433393001556396484375, 1.87342250347137451171875, 1.3656423091888427734375, 1.20074498653411865234375, 1.402669429779052734375, 1.74105465412139892578125, 1.131195068359375, 1.48486328125, 1.8708858489990234375, 1.91857814788818359375, 1.19011199474334716796875, 1.5096094608306884765625, 1.71722543239593505859375, 1.7656962871551513671875, 1.244808673858642578125, 1.05595147609710693359375, 1.81439149379730224609375, 1.3811256885528564453125, 1.46913611888885498046875, 1.2805893421173095703125, 1.36199200153350830078125, 1.06353414058685302734375, 1.906818389892578125, 1.55189311504364013671875},
{ 1.52247846126556396484375, 1.61989009380340576171875, 1.03584015369415283203125, 1.63207423686981201171875, 1.83934128284454345703125, 1.58713400363922119140625, 1.0319530963897705078125, 1.09923076629638671875, 1.178268909454345703125, 1.3525180816650390625, 1.05923664569854736328125, 1.8030459880828857421875, 1.2471091747283935546875, 1.42363369464874267578125, 1.69211542606353759765625, 1.1792118549346923828125, 1.5083482265472412109375, 1.42013263702392578125, 1.1463718414306640625, 1.880949497222900390625, 1.140048503875732421875, 1.97216475009918212890625, 1.61508285999298095703125, 1.052446842193603515625, 1.74678599834442138671875, 1.36881554126739501953125, 1.35455787181854248046875, 1.3522961139678955078125, 1.82058823108673095703125, 1.9565432071685791015625, 1.520276546478271484375, 1.72693145275115966796875, 1.95187103748321533203125, 1.28761684894561767578125, 1.75282561779022216796875, 1.93406593799591064453125, 1.7903764247894287109375, 1.0185534954071044921875, 1.51383674144744873046875, 1.81612980365753173828125, 1.7561104297637939453125, 1.55855572223663330078125, 1.1719243526458740234375, 1.32370746135711669921875, 1.500279903411865234375, 1.46794927120208740234375, 1.83862245082855224609375, 1.28897511959075927734375, 1.11623036861419677734375, 1.6066200733184814453125, 1.95432245731353759765625, 1.9491384029388427734375, 1.10038387775421142578125, 1.03245246410369873046875, 1.6242110729217529296875, 1.2198693752288818359375, 1.06317579746246337890625, 1.6497662067413330078125, 1.70420706272125244140625, 1.718744754791259765625, 1.1899926662445068359375, 1.60775411128997802734375, 1.6368992328643798828125, 1.5386829376220703125, 1.4521100521087646484375, 1.4489195346832275390625, 1.037483692169189453125, 1.7713816165924072265625, 1.567629337310791015625, 1.00751399993896484375, 1.02970182895660400390625, 1.78075540065765380859375, 1.71241557598114013671875, 1.05797421932220458984375, 1.331777095794677734375, 1.22637283802032470703125, 1.98103535175323486328125, 1.713360309600830078125, 1.09235286712646484375, 1.83689463138580322265625, 1.59769356250762939453125, 1.57379281520843505859375, 1.47643029689788818359375, 1.93351066112518310546875, 1.87717139720916748046875, 1.62489032745361328125, 1.001305103302001953125, 1.70337760448455810546875, 1.9357635974884033203125, 1.886207103729248046875, 1.6225054264068603515625, 1.22305643558502197265625, 1.152216434478759765625, 1.80967009067535400390625, 1.56972968578338623046875, 1.2319500446319580078125, 1.378664493560791015625, 1.428017139434814453125, 1.9327833652496337890625, 1.655740261077880859375},
{ 1.25323402881622314453125, 1.9975168704986572265625, 1.879826068878173828125, 1.15265333652496337890625, 1.924992084503173828125, 1.33176338672637939453125, 1.7727606296539306640625, 1.16984450817108154296875, 1.6090857982635498046875, 1.6212756633758544921875, 1.4596889019012451171875, 1.8082063198089599609375, 1.14586985111236572265625, 1.25566387176513671875, 1.84578526020050048828125, 1.700879573822021484375, 1.9486973285675048828125, 1.66433346271514892578125, 1.88969051837921142578125, 1.9700183868408203125, 1.65235674381256103515625, 1.4024219512939453125, 1.62695014476776123046875, 1.68772804737091064453125, 1.5115096569061279296875, 1.98673689365386962890625, 1.94345128536224365234375, 1.08700287342071533203125, 1.54912817478179931640625, 1.48169314861297607421875, 1.09886038303375244140625, 1.52266299724578857421875, 1.45493257045745849609375, 1.8352508544921875, 1.0000607967376708984375, 1.1822922229766845703125, 1.2338283061981201171875, 1.96485221385955810546875, 1.224589824676513671875, 1.547175884246826171875, 1.60434424877166748046875, 1.59335935115814208984375, 1.7940769195556640625, 1.603237628936767578125, 1.1470696926116943359375, 1.8349921703338623046875, 1.6976807117462158203125, 1.8019773960113525390625, 1.20309197902679443359375, 1.53126513957977294921875, 1.1655266284942626953125, 1.77140867710113525390625, 1.52243411540985107421875, 1.33692514896392822265625, 1.6921443939208984375, 1.77699649333953857421875, 1.66249179840087890625, 1.5558893680572509765625, 1.80990564823150634765625, 1.93259418010711669921875, 1.13647162914276123046875, 1.72718203067779541015625, 1.61246097087860107421875, 1.161381244659423828125, 1.311828136444091796875, 1.96087229251861572265625, 1.02817809581756591796875, 1.9068012237548828125, 1.05870139598846435546875, 1.024012088775634765625, 1.84357893466949462890625, 1.5934984683990478515625, 1.14835464954376220703125, 1.17657291889190673828125, 1.47677719593048095703125, 1.83825600147247314453125, 1.401611328125, 1.75738370418548583984375, 1.500916004180908203125, 1.41093337535858154296875, 1.58729326725006103515625, 1.520068645477294921875, 1.917604923248291015625, 1.94540345668792724609375, 1.0706577301025390625, 1.71898400783538818359375, 1.1803581714630126953125, 1.400490283966064453125, 1.21183502674102783203125, 1.945156097412109375, 1.9680316448211669921875, 1.270906925201416015625, 1.51426601409912109375, 1.7122185230255126953125, 1.70826053619384765625, 1.5481922626495361328125, 1.5231397151947021484375, 1.79235017299652099609375, 1.85089695453643798828125, 1.43164885044097900390625},
{ 1.3022119998931884765625, 1.89144694805145263671875, 1.78928077220916748046875, 1.6903355121612548828125, 1.5388848781585693359375, 1.14450871944427490234375, 1.36873042583465576171875, 1.73371326923370361328125, 1.56580746173858642578125, 1.26720964908599853515625, 1.75821650028228759765625, 1.3005197048187255859375, 1.5487129688262939453125, 1.53264391422271728515625, 1.0974712371826171875, 1.8712465763092041015625, 1.84156703948974609375, 1.85330998897552490234375, 1.5386784076690673828125, 1.10875833034515380859375, 1.82250559329986572265625, 1.5545482635498046875, 1.4574100971221923828125, 1.0067303180694580078125, 1.47977161407470703125, 1.8979780673980712890625, 1.41356456279754638671875, 1.78808581829071044921875, 1.74765300750732421875, 1.3549358844757080078125, 1.86230409145355224609375, 1.5534336566925048828125, 1.59242045879364013671875, 1.62991237640380859375, 1.61499178409576416015625, 1.679505825042724609375, 1.848264217376708984375, 1.433990001678466796875, 1.050129413604736328125, 1.96759450435638427734375, 1.8032319545745849609375, 1.00828063488006591796875, 1.0742952823638916015625, 1.5419902801513671875, 1.53516662120819091796875, 1.39736258983612060546875, 1.8330810070037841796875, 1.49841916561126708984375, 1.9976432323455810546875, 1.47271883487701416015625, 1.17202937602996826171875, 1.302480220794677734375, 1.85590684413909912109375, 1.70617401599884033203125, 1.84757220745086669921875, 1.93808305263519287109375, 1.07280981540679931640625, 1.69333207607269287109375, 1.48796713352203369140625, 1.80588543415069580078125, 1.2447497844696044921875, 1.427013874053955078125, 1.3042354583740234375, 1.371730327606201171875, 1.68760645389556884765625, 1.3206942081451416015625, 1.5511000156402587890625, 1.56508409976959228515625, 1.27267944812774658203125, 1.9819400310516357421875, 1.7379219532012939453125, 1.927473545074462890625, 1.012626171112060546875, 1.73584747314453125, 1.58963871002197265625, 1.51092350482940673828125, 1.39739859104156494140625, 1.898479461669921875, 1.75770127773284912109375, 1.52639448642730712890625, 1.48018109798431396484375, 1.8003032207489013671875, 1.28101217746734619140625, 1.7422196865081787109375, 1.71332836151123046875, 1.55962789058685302734375, 1.79686224460601806640625, 1.63254320621490478515625, 1.53430211544036865234375, 1.60604155063629150390625, 1.5018684864044189453125, 1.2757570743560791015625, 1.70160901546478271484375, 1.95384943485260009765625, 1.8629119396209716796875, 1.00293886661529541015625, 1.3807384967803955078125, 1.22551095485687255859375, 1.07807445526123046875, 1.79628932476043701171875},
{ 1.42507731914520263671875, 1.28757655620574951171875, 1.4375693798065185546875, 1.73695862293243408203125, 1.4616291522979736328125, 1.53471529483795166015625, 1.40653836727142333984375, 1.0533773899078369140625, 1.4227135181427001953125, 1.47680103778839111328125, 1.5293910503387451171875, 1.58214962482452392578125, 1.597782135009765625, 1.8460953235626220703125, 1.37719523906707763671875, 1.0627391338348388671875, 1.251628398895263671875, 1.6607487201690673828125, 1.4143292903900146484375, 1.9072170257568359375, 1.1478250026702880859375, 1.18573760986328125, 1.896919727325439453125, 1.53619968891143798828125, 1.82216155529022216796875, 1.64380204677581787109375, 1.52127826213836669921875, 1.46478557586669921875, 1.60608160495758056640625, 1.67638361454010009765625, 1.8223400115966796875, 1.138493061065673828125, 1.40012085437774658203125, 1.55456221103668212890625, 1.32210052013397216796875, 1.51919829845428466796875, 1.19734418392181396484375, 1.13999402523040771484375, 1.428053379058837890625, 1.4210720062255859375, 1.35678327083587646484375, 1.5958487987518310546875, 1.08162784576416015625, 1.5965173244476318359375, 1.62687408924102783203125, 1.847747802734375, 1.15662586688995361328125, 1.57210767269134521484375, 1.9188945293426513671875, 1.79470062255859375, 1.6076602935791015625, 1.2345235347747802734375, 1.83040142059326171875, 1.27004301548004150390625, 1.36859190464019775390625, 1.1664903163909912109375, 1.9186687469482421875, 1.75237476825714111328125, 1.0009670257568359375, 1.73271620273590087890625, 1.7241246700286865234375, 1.82649648189544677734375, 1.0924551486968994140625, 1.9158289432525634765625, 1.5437891483306884765625, 1.3943474292755126953125, 1.40528595447540283203125, 1.902313709259033203125, 1.95471155643463134765625, 1.63594341278076171875, 1.7746875286102294921875, 1.41845095157623291015625, 1.08740770816802978515625, 1.720313549041748046875, 1.75732338428497314453125, 1.816253185272216796875, 1.64929807186126708984375, 1.26643812656402587890625, 1.0297300815582275390625, 1.90940296649932861328125, 1.69814479351043701171875, 1.55418646335601806640625, 1.53675472736358642578125, 1.55919015407562255859375, 1.16548931598663330078125, 1.48525369167327880859375, 1.38999259471893310546875, 1.010449886322021484375, 1.1300899982452392578125, 1.2940986156463623046875, 1.5162241458892822265625, 1.97749936580657958984375, 1.84135913848876953125, 1.00888156890869140625, 1.05585324764251708984375, 1.48007571697235107421875, 1.492801189422607421875, 1.6624011993408203125, 1.5113441944122314453125, 1.4292738437652587890625},
{ 1.2530324459075927734375, 1.64565932750701904296875, 1.96348321437835693359375, 1.0013053417205810546875, 1.45566380023956298828125, 1.13069665431976318359375, 1.53432571887969970703125, 1.426772594451904296875, 1.08263528347015380859375, 1.945726871490478515625, 1.7425935268402099609375, 1.72609817981719970703125, 1.29467523097991943359375, 1.52583158016204833984375, 1.92418587207794189453125, 1.66480767726898193359375, 1.5618381500244140625, 1.66034030914306640625, 1.48604691028594970703125, 1.34314382076263427734375, 1.374442577362060546875, 1.14126813411712646484375, 1.99210357666015625, 1.21950352191925048828125, 1.7040078639984130859375, 1.16175329685211181640625, 1.99920237064361572265625, 1.88387548923492431640625, 1.21419203281402587890625, 1.464494228363037109375, 1.64304721355438232421875, 1.5812778472900390625, 1.22172963619232177734375, 1.24018776416778564453125, 1.97413730621337890625, 1.485195159912109375, 1.40736854076385498046875, 1.775966167449951171875, 1.04370391368865966796875, 1.7210166454315185546875, 1.2768077850341796875, 1.85383474826812744140625, 1.739648342132568359375, 1.1394731998443603515625, 1.37163543701171875, 1.899109363555908203125, 1.3724792003631591796875, 1.840075016021728515625, 1.2302653789520263671875, 1.8788540363311767578125, 1.01125037670135498046875, 1.44454920291900634765625, 1.09887516498565673828125, 1.95031797885894775390625, 1.5694978237152099609375, 1.12027680873870849609375, 1.39234387874603271484375, 1.8593738079071044921875, 1.6411774158477783203125, 1.35373103618621826171875, 1.90518891811370849609375, 1.08895456790924072265625, 1.08660280704498291015625, 1.47391426563262939453125, 1.77250397205352783203125, 1.7574913501739501953125, 1.3683822154998779296875, 1.92579567432403564453125, 1.180896282196044921875, 1.2673509120941162109375, 1.637356281280517578125, 1.29374873638153076171875, 1.8294246196746826171875, 1.70327270030975341796875, 1.56853592395782470703125, 1.074988842010498046875, 1.1405360698699951171875, 1.9808070659637451171875, 1.947039127349853515625, 1.2030103206634521484375, 1.22100389003753662109375, 1.74475228786468505859375, 1.004028797149658203125, 1.3210246562957763671875, 1.57286536693572998046875, 1.0175921916961669921875, 1.50265061855316162109375, 1.805397510528564453125, 1.55435860157012939453125, 1.59793376922607421875, 1.57396984100341796875, 1.53908634185791015625, 1.5908603668212890625, 1.20894420146942138671875, 1.3029091358184814453125, 1.43507802486419677734375, 1.1358239650726318359375, 1.396789073944091796875, 1.06418645381927490234375, 1.70982587337493896484375},
{ 1.17906939983367919921875, 1.6082518100738525390625, 1.90668785572052001953125, 1.72095429897308349609375, 1.44325923919677734375, 1.89722526073455810546875, 1.66936361789703369140625, 1.95684564113616943359375, 1.09514319896697998046875, 1.69083416461944580078125, 1.26533210277557373046875, 1.26452267169952392578125, 1.95725405216217041015625, 1.8823511600494384765625, 1.8592891693115234375, 1.901881694793701171875, 1.41730976104736328125, 1.58453094959259033203125, 1.5365846157073974609375, 1.6705205440521240234375, 1.82665169239044189453125, 1.96554815769195556640625, 1.0766603946685791015625, 1.1266753673553466796875, 1.648681640625, 1.83493518829345703125, 1.476487636566162109375, 1.542158603668212890625, 1.35729944705963134765625, 1.97951900959014892578125, 1.224004268646240234375, 1.61529624462127685546875, 1.08534061908721923828125, 1.24935901165008544921875, 1.3215525150299072265625, 1.93186581134796142578125, 1.0230133533477783203125, 1.393684864044189453125, 1.05931651592254638671875, 1.17603313922882080078125, 1.56633675098419189453125, 1.64683330059051513671875, 1.53875935077667236328125, 1.0912902355194091796875, 1.2155778408050537109375, 1.06418597698211669921875, 1.94606125354766845703125, 1.1913931369781494140625, 1.22368919849395751953125, 1.6081073284149169921875, 1.57555663585662841796875, 1.221298694610595703125, 1.99474656581878662109375, 1.98388135433197021484375, 1.60317170619964599609375, 1.36810243129730224609375, 1.2323858737945556640625, 1.22564947605133056640625, 1.6098620891571044921875, 1.22197639942169189453125, 1.83824145793914794921875, 1.0323483943939208984375, 1.8550498485565185546875, 1.48710596561431884765625, 1.5603830814361572265625, 1.85364687442779541015625, 1.300061702728271484375, 1.4426276683807373046875, 1.39175355434417724609375, 1.7258837223052978515625, 1.38156604766845703125, 1.1535670757293701171875, 1.7186062335968017578125, 1.858005046844482421875, 1.5350105762481689453125, 1.431775569915771484375, 1.2189426422119140625, 1.96750223636627197265625, 1.46805989742279052734375, 1.54686820507049560546875, 1.51094949245452880859375, 1.366348743438720703125, 1.18403255939483642578125, 1.68716156482696533203125, 1.551436901092529296875, 1.7969379425048828125, 1.75533926486968994140625, 1.17061054706573486328125, 1.78427541255950927734375, 1.01802098751068115234375, 1.84691989421844482421875, 1.40574634075164794921875, 1.0388336181640625, 1.140643596649169921875, 1.98968112468719482421875, 1.6026136875152587890625, 1.178415775299072265625, 1.7140839099884033203125, 1.60393393039703369140625, 1.233708858489990234375},
{ 1.56179034709930419921875, 1.7728312015533447265625, 1.244916439056396484375, 1.876170635223388671875, 1.3673183917999267578125, 1.765804767608642578125, 1.01644718647003173828125, 1.66656696796417236328125, 1.0102684497833251953125, 1.312003612518310546875, 1.07377588748931884765625, 1.353309154510498046875, 1.65222370624542236328125, 1.6237308979034423828125, 1.54857814311981201171875, 1.9459416866302490234375, 1.5726869106292724609375, 1.1698815822601318359375, 1.3896682262420654296875, 1.12856924533843994140625, 1.7550182342529296875, 1.19938004016876220703125, 1.323936939239501953125, 1.1582949161529541015625, 1.22237312793731689453125, 1.01461708545684814453125, 1.56728839874267578125, 1.51365721225738525390625, 1.12363910675048828125, 1.99488818645477294921875, 1.28557789325714111328125, 1.2930676937103271484375, 1.56937372684478759765625, 1.36983048915863037109375, 1.80554974079132080078125, 1.36324846744537353515625, 1.21774184703826904296875, 1.74286043643951416015625, 1.57577407360076904296875, 1.25766980648040771484375, 1.61045360565185546875, 1.3646113872528076171875, 1.8775846958160400390625, 1.8249871730804443359375, 1.25870120525360107421875, 1.156370639801025390625, 1.286016941070556640625, 1.62747943401336669921875, 1.47909677028656005859375, 1.48351764678955078125, 1.880744457244873046875, 1.0894858837127685546875, 1.9796102046966552734375, 1.6789610385894775390625, 1.2070171833038330078125, 1.39584386348724365234375, 1.19550597667694091796875, 1.3165762424468994140625, 1.98659861087799072265625, 1.14032638072967529296875, 1.37528097629547119140625, 1.23464298248291015625, 1.57870376110076904296875, 1.724079132080078125, 1.4166023731231689453125, 1.30928289890289306640625, 1.19093596935272216796875, 1.50405871868133544921875, 1.45224440097808837890625, 1.97789657115936279296875, 1.840224742889404296875, 1.691469669342041015625, 1.18602621555328369140625, 1.51260173320770263671875, 1.06376361846923828125, 1.00020205974578857421875, 1.978749752044677734375, 1.04367029666900634765625, 1.3799469470977783203125, 1.04526913166046142578125, 1.68413650989532470703125, 1.33296597003936767578125, 1.49930775165557861328125, 1.49124431610107421875, 1.23476541042327880859375, 1.297381877899169921875, 1.28545558452606201171875, 1.95069944858551025390625, 1.978010654449462890625, 1.282277584075927734375, 1.46601331233978271484375, 1.63264179229736328125, 1.76197850704193115234375, 1.0849173069000244140625, 1.093554973602294921875, 1.74095165729522705078125, 1.77144527435302734375, 1.7279069423675537109375, 1.756543636322021484375, 1.6228199005126953125},
{ 1.982631683349609375, 1.5402681827545166015625, 1.6671855449676513671875, 1.15495526790618896484375, 1.64269363880157470703125, 1.73778116703033447265625, 1.95317280292510986328125, 1.6053383350372314453125, 1.54734885692596435546875, 1.31083667278289794921875, 1.6485292911529541015625, 1.3557746410369873046875, 1.35494554042816162109375, 1.10082709789276123046875, 1.15806305408477783203125, 1.06345283985137939453125, 1.06636106967926025390625, 1.78972113132476806640625, 1.0220801830291748046875, 1.4878561496734619140625, 1.29843962192535400390625, 1.61100101470947265625, 1.5648224353790283203125, 1.5767002105712890625, 1.30742967128753662109375, 1.8106005191802978515625, 1.29290425777435302734375, 1.30187094211578369140625, 1.76242160797119140625, 1.8578417301177978515625, 1.0437510013580322265625, 1.245361328125, 1.2687847614288330078125, 1.40637290477752685546875, 1.88403594493865966796875, 1.9352092742919921875, 1.6416056156158447265625, 1.00510632991790771484375, 1.7581179141998291015625, 1.93143546581268310546875, 1.9291248321533203125, 1.55915510654449462890625, 1.886478900909423828125, 1.661980152130126953125, 1.186174869537353515625, 1.540771007537841796875, 1.91416108608245849609375, 1.0086410045623779296875, 1.99761760234832763671875, 1.9502823352813720703125, 1.80920505523681640625, 1.64301097393035888671875, 1.75178134441375732421875, 1.0270307064056396484375, 1.51108682155609130859375, 1.1124150753021240234375, 1.66389906406402587890625, 1.71030890941619873046875, 1.329155445098876953125, 1.67584836483001708984375, 1.54954540729522705078125, 1.85029876232147216796875, 1.09107053279876708984375, 1.88991320133209228515625, 1.34807431697845458984375, 1.16900789737701416015625, 1.04123985767364501953125, 1.9447572231292724609375, 1.396056652069091796875, 1.97120761871337890625, 1.489256381988525390625, 1.75001013278961181640625, 1.4507172107696533203125, 1.6053707599639892578125, 1.20833647251129150390625, 1.77072155475616455078125, 1.4633729457855224609375, 1.6746084690093994140625, 1.583756923675537109375, 1.613298892974853515625, 1.10286998748779296875, 1.997608184814453125, 1.51129257678985595703125, 1.36144411563873291015625, 1.02902126312255859375, 1.31957089900970458984375, 1.04565393924713134765625, 1.66209161281585693359375, 1.9160439968109130859375, 1.77314913272857666015625, 1.7989242076873779296875, 1.5613460540771484375, 1.22599732875823974609375, 1.08938372135162353515625, 1.08899748325347900390625, 1.09041917324066162109375, 1.73221933841705322265625, 1.5586416721343994140625, 1.8380157947540283203125, 1.60156762599945068359375},
{ 1.7415540218353271484375, 1.22080671787261962890625, 1.8540308475494384765625, 1.37384450435638427734375, 1.9299526214599609375, 1.06332099437713623046875, 1.84996783733367919921875, 1.82325828075408935546875, 1.35780799388885498046875, 1.9910695552825927734375, 1.42039501667022705078125, 1.3938372135162353515625, 1.16216719150543212890625, 1.32756173610687255859375, 1.5611240863800048828125, 1.5168783664703369140625, 1.09409058094024658203125, 1.7427423000335693359375, 1.51869881153106689453125, 1.82558345794677734375, 1.9795897006988525390625, 1.65142905712127685546875, 1.6263329982757568359375, 1.928495883941650390625, 1.9305651187896728515625, 1.3617503643035888671875, 1.88984775543212890625, 1.9329383373260498046875, 1.30574321746826171875, 1.973582744598388671875, 1.32360947132110595703125, 1.71845042705535888671875, 1.42161405086517333984375, 1.02698791027069091796875, 1.0364665985107421875, 1.96022570133209228515625, 1.01336920261383056640625, 1.90065097808837890625, 1.067687511444091796875, 1.90254986286163330078125, 1.44583857059478759765625, 1.96031749248504638671875, 1.97289836406707763671875, 1.88223779201507568359375, 1.67442834377288818359375, 1.457231044769287109375, 1.16001987457275390625, 1.60207116603851318359375, 1.9560582637786865234375, 1.176570892333984375, 1.9752051830291748046875, 1.15423595905303955078125, 1.31009960174560546875, 1.83588898181915283203125, 1.53877770900726318359375, 1.7937600612640380859375, 1.72931194305419921875, 1.23354816436767578125, 1.3311679363250732421875, 1.4619503021240234375, 1.14078104496002197265625, 1.14715921878814697265625, 1.5288512706756591796875, 1.05983066558837890625, 1.11685669422149658203125, 1.98201847076416015625, 1.09028589725494384765625, 1.4715793132781982421875, 1.33608949184417724609375, 1.1695454120635986328125, 1.5918495655059814453125, 1.3379662036895751953125, 1.7941687107086181640625, 1.31571972370147705078125, 1.813777446746826171875, 1.57979071140289306640625, 1.7648601531982421875, 1.0995194911956787109375, 1.07609999179840087890625, 1.67131865024566650390625, 1.510942935943603515625, 1.92135822772979736328125, 1.324579715728759765625, 1.66372048854827880859375, 1.74514734745025634765625, 1.3015224933624267578125, 1.96664917469024658203125, 1.95850837230682373046875, 1.84109270572662353515625, 1.02860939502716064453125, 1.45734822750091552734375, 1.83097374439239501953125, 1.79422414302825927734375, 1.05796420574188232421875, 1.635262012481689453125, 1.7036249637603759765625, 1.9327504634857177734375, 1.1601173877716064453125, 1.80845773220062255859375, 1.16962432861328125},
{ 1.31922280788421630859375, 1.59042251110076904296875, 1.766226291656494140625, 1.25826740264892578125, 1.8814947605133056640625, 1.4860012531280517578125, 1.4982144832611083984375, 1.6639316082000732421875, 1.45364558696746826171875, 1.22733342647552490234375, 1.1113393306732177734375, 1.36421310901641845703125, 1.55132329463958740234375, 1.85979092121124267578125, 1.115755558013916015625, 1.26520192623138427734375, 1.997548580169677734375, 1.5779159069061279296875, 1.55945980548858642578125, 1.62137639522552490234375, 1.07115304470062255859375, 1.31135761737823486328125, 1.55172765254974365234375, 1.99654102325439453125, 1.405216217041015625, 1.06081020832061767578125, 1.53655183315277099609375, 1.974764347076416015625, 1.63550317287445068359375, 1.98395061492919921875, 1.31607925891876220703125, 1.6213157176971435546875, 1.79890215396881103515625, 1.23137533664703369140625, 1.82404863834381103515625, 1.69360315799713134765625, 1.481861591339111328125, 1.53253829479217529296875, 1.64922809600830078125, 1.60211122035980224609375, 1.71882832050323486328125, 1.531688690185546875, 1.30885219573974609375, 1.12133777141571044921875, 1.640684604644775390625, 1.87380778789520263671875, 1.2720601558685302734375, 1.85073184967041015625, 1.87318575382232666015625, 1.040546894073486328125, 1.7333328723907470703125, 1.42563152313232421875, 1.685397624969482421875, 1.9361646175384521484375, 1.135930538177490234375, 1.4782006740570068359375, 1.8881342411041259765625, 1.22346484661102294921875, 1.44533026218414306640625, 1.34836685657501220703125, 1.48239481449127197265625, 1.4097335338592529296875, 1.17266309261322021484375, 1.54475915431976318359375, 1.0578019618988037109375, 1.6826765537261962890625, 1.14815223217010498046875, 1.95564496517181396484375, 1.94103872776031494140625, 1.49635756015777587890625, 1.04455006122589111328125, 1.80986797809600830078125, 1.0942862033843994140625, 1.9071347713470458984375, 1.65057575702667236328125, 1.387785434722900390625, 1.7636611461639404296875, 1.659598827362060546875, 1.89435279369354248046875, 1.4822061061859130859375, 1.87765300273895263671875, 1.02251064777374267578125, 1.616846561431884765625, 1.6093270778656005859375, 1.1955621242523193359375, 1.374738216400146484375, 1.0953013896942138671875, 1.96967160701751708984375, 1.20593678951263427734375, 1.541194438934326171875, 1.3166787624359130859375, 1.15902698040008544921875, 1.7750108242034912109375, 1.87877500057220458984375, 1.001094341278076171875, 1.62938129901885986328125, 1.5451412200927734375, 1.1122951507568359375, 1.375255584716796875, 1.89986133575439453125},
{ 1.9204275608062744140625, 1.69589936733245849609375, 1.5176703929901123046875, 1.779238224029541015625, 1.27164018154144287109375, 1.52322900295257568359375, 1.7690250873565673828125, 1.49447143077850341796875, 1.5101330280303955078125, 1.74435245990753173828125, 1.14009320735931396484375, 1.9601688385009765625, 1.19177615642547607421875, 1.34671938419342041015625, 1.52793157100677490234375, 1.92586505413055419921875, 1.67004692554473876953125, 1.94155871868133544921875, 1.20142281055450439453125, 1.05784285068511962890625, 1.4319679737091064453125, 1.03731632232666015625, 1.512213230133056640625, 1.5875701904296875, 1.18404400348663330078125, 1.0630919933319091796875, 1.3556506633758544921875, 1.71013844013214111328125, 1.68819963932037353515625, 1.1420776844024658203125, 1.3817212581634521484375, 1.73269939422607421875, 1.34771728515625, 1.614994525909423828125, 1.955987453460693359375, 1.97290289402008056640625, 1.54317390918731689453125, 1.313530445098876953125, 1.87052524089813232421875, 1.40733444690704345703125, 1.71837890148162841796875, 1.5837776660919189453125, 1.80486214160919189453125, 1.0699522495269775390625, 1.216311931610107421875, 1.05967032909393310546875, 1.53691399097442626953125, 1.20052540302276611328125, 1.86505973339080810546875, 1.18642151355743408203125, 1.9039227962493896484375, 1.1430709362030029296875, 1.31375396251678466796875, 1.49396145343780517578125, 1.5133945941925048828125, 1.99429142475128173828125, 1.1185090541839599609375, 1.62037456035614013671875, 1.204036235809326171875, 1.00201261043548583984375, 1.57835900783538818359375, 1.08533704280853271484375, 1.25669324398040771484375, 1.7136204242706298828125, 1.32119524478912353515625, 1.8135545253753662109375, 1.35528767108917236328125, 1.87449920177459716796875, 1.6397044658660888671875, 1.4081990718841552734375, 1.29775488376617431640625, 1.0764687061309814453125, 1.57730543613433837890625, 1.174347400665283203125, 1.4569814205169677734375, 1.15622174739837646484375, 1.7640869617462158203125, 1.89241790771484375, 1.9917428493499755859375, 1.3437616825103759765625, 1.002745151519775390625, 1.3416082859039306640625, 1.807640552520751953125, 1.16084003448486328125, 1.60452139377593994140625, 1.57333314418792724609375, 1.26803958415985107421875, 1.06939351558685302734375, 1.475139141082763671875, 1.93466103076934814453125, 1.65500652790069580078125, 1.869982242584228515625, 1.95074176788330078125, 1.84175264835357666015625, 1.38024628162384033203125, 1.85022675991058349609375, 1.38383042812347412109375, 1.30329787731170654296875, 1.94604003429412841796875, 1.68324565887451171875},
{ 1.19395339488983154296875, 1.6561825275421142578125, 1.076093196868896484375, 1.3798811435699462890625, 1.27778017520904541015625, 1.076920032501220703125, 1.16819632053375244140625, 1.50306975841522216796875, 1.9816811084747314453125, 1.247887134552001953125, 1.679792881011962890625, 1.1260721683502197265625, 1.918838024139404296875, 1.64304459095001220703125, 1.81036865711212158203125, 1.7222387790679931640625, 1.162149906158447265625, 1.88161718845367431640625, 1.887094974517822265625, 1.04690277576446533203125, 1.2676699161529541015625, 1.18903052806854248046875, 1.7632663249969482421875, 1.9733169078826904296875, 1.0480430126190185546875, 1.6078488826751708984375, 1.96673738956451416015625, 1.07859134674072265625, 1.09594357013702392578125, 1.958713054656982421875, 1.5983612537384033203125, 1.97963154315948486328125, 1.05751240253448486328125, 1.55127716064453125, 1.98042643070220947265625, 1.41907501220703125, 1.65579497814178466796875, 1.64514648914337158203125, 1.0550944805145263671875, 1.10122931003570556640625, 1.46417844295501708984375, 1.66081535816192626953125, 1.53283751010894775390625, 1.27800929546356201171875, 1.42982923984527587890625, 1.14060389995574951171875, 1.79087579250335693359375, 1.0848751068115234375, 1.1471307277679443359375, 1.4595959186553955078125, 1.5216147899627685546875, 1.62676894664764404296875, 1.881120204925537109375, 1.286576747894287109375, 1.13108336925506591796875, 1.81405293941497802734375, 1.3409271240234375, 1.794970035552978515625, 1.8873708248138427734375, 1.9484469890594482421875, 1.2032101154327392578125, 1.6237757205963134765625, 1.81906449794769287109375, 1.05896556377410888671875, 1.3855946063995361328125, 1.58850729465484619140625, 1.36368739604949951171875, 1.98785555362701416015625, 1.070110321044921875, 1.14212977886199951171875, 1.76613521575927734375, 1.2265341281890869140625, 1.47662889957427978515625, 1.58599650859832763671875, 1.22711455821990966796875, 1.50152552127838134765625, 1.38630092144012451171875, 1.030786991119384765625, 1.801579952239990234375, 1.11039888858795166015625, 1.41499412059783935546875, 1.10744476318359375, 1.04717147350311279296875, 1.007706165313720703125, 1.03673040866851806640625, 1.4281141757965087890625, 1.42265236377716064453125, 1.64091885089874267578125, 1.35712349414825439453125, 1.79707825183868408203125, 1.4363460540771484375, 1.53636586666107177734375, 1.636816501617431640625, 1.17169654369354248046875, 1.54457437992095947265625, 1.635171413421630859375, 1.564918994903564453125, 1.37334191799163818359375, 1.8000946044921875, 1.37919175624847412109375},
{ 1.548338413238525390625, 1.25053703784942626953125, 1.5469532012939453125, 1.1557509899139404296875, 1.378899097442626953125, 1.08684253692626953125, 1.8395893573760986328125, 1.29997158050537109375, 1.0440628528594970703125, 1.5417001247406005859375, 1.21677911281585693359375, 1.85245907306671142578125, 1.93063223361968994140625, 1.53798401355743408203125, 1.9826834201812744140625, 1.99621951580047607421875, 1.09411132335662841796875, 1.0871918201446533203125, 1.6218831539154052734375, 1.73335111141204833984375, 1.46964251995086669921875, 1.43788158893585205078125, 1.38531696796417236328125, 1.40848124027252197265625, 1.83294451236724853515625, 1.9741094112396240234375, 1.6262180805206298828125, 1.98220407962799072265625, 1.511249542236328125, 1.8638670444488525390625, 1.88605213165283203125, 1.05451810359954833984375, 1.8442413806915283203125, 1.45751893520355224609375, 1.73045504093170166015625, 1.638263702392578125, 1.3949921131134033203125, 1.4362404346466064453125, 1.33516979217529296875, 1.6825602054595947265625, 1.91089999675750732421875, 1.71045482158660888671875, 1.82198429107666015625, 1.3462440967559814453125, 1.03462731838226318359375, 1.0682709217071533203125, 1.34466922283172607421875, 1.02130603790283203125, 1.76503717899322509765625, 1.573920726776123046875, 1.924914836883544921875, 1.106328487396240234375, 1.668131351470947265625, 1.71619641780853271484375, 1.0382688045501708984375, 1.52992331981658935546875, 1.8379881381988525390625, 1.306888580322265625, 1.95007407665252685546875, 1.02416884899139404296875, 1.6076991558074951171875, 1.12922322750091552734375, 1.8014056682586669921875, 1.14804804325103759765625, 1.01030719280242919921875, 1.336299419403076171875, 1.44500863552093505859375, 1.06088554859161376953125, 1.98974406719207763671875, 1.59952676296234130859375, 1.03123533725738525390625, 1.04578530788421630859375, 1.36176741123199462890625, 1.00706303119659423828125, 1.3439834117889404296875, 1.783068180084228515625, 1.524898529052734375, 1.712251186370849609375, 1.88663256168365478515625, 1.3737089633941650390625, 1.9213602542877197265625, 1.33205759525299072265625, 1.71798241138458251953125, 1.1127746105194091796875, 1.2480137348175048828125, 1.095509052276611328125, 1.038190364837646484375, 1.0128612518310546875, 1.41729640960693359375, 1.74213039875030517578125, 1.52470839023590087890625, 1.0775318145751953125, 1.26815927028656005859375, 1.17038214206695556640625, 1.41822087764739990234375, 1.3247535228729248046875, 1.02700483798980712890625, 1.8360974788665771484375, 1.35858249664306640625, 1.56033551692962646484375},
{ 1.90092051029205322265625, 1.97075498104095458984375, 1.90136587619781494140625, 1.1271336078643798828125, 1.1307432651519775390625, 1.20074498653411865234375, 1.04964983463287353515625, 1.5069148540496826171875, 1.54414331912994384765625, 1.4015419483184814453125, 1.31514680385589599609375, 1.04354953765869140625, 1.81082141399383544921875, 1.16905486583709716796875, 1.38940799236297607421875, 1.06475818157196044921875, 1.4000384807586669921875, 1.92805016040802001953125, 1.8690140247344970703125, 1.80133783817291259765625, 1.47905385494232177734375, 1.2680895328521728515625, 1.5290119647979736328125, 1.09809887409210205078125, 1.5615622997283935546875, 1.02946674823760986328125, 1.3463535308837890625, 1.8748028278350830078125, 1.90613162517547607421875, 1.1391456127166748046875, 1.273332118988037109375, 1.3371002674102783203125, 1.6646401882171630859375, 1.196697235107421875, 1.7610204219818115234375, 1.9374675750732421875, 1.780714511871337890625, 1.81023800373077392578125, 1.03270804882049560546875, 1.08614480495452880859375, 1.63816630840301513671875, 1.68236637115478515625, 1.10733854770660400390625, 1.61207354068756103515625, 1.459430694580078125, 1.446100711822509765625, 1.57294762134552001953125, 1.97383368015289306640625, 1.45400321483612060546875, 1.25081717967987060546875, 1.11010015010833740234375, 1.22058141231536865234375, 1.716877460479736328125, 1.098186492919921875, 1.76532781124114990234375, 1.7029864788055419921875, 1.87698268890380859375, 1.9281117916107177734375, 1.97456657886505126953125, 1.5341701507568359375, 1.49562084674835205078125, 1.45466649532318115234375, 1.3365943431854248046875, 1.8006420135498046875, 1.21490478515625, 1.7520310878753662109375, 1.13646793365478515625, 1.52323782444000244140625, 1.65619528293609619140625, 1.5904309749603271484375, 1.618961334228515625, 1.36805737018585205078125, 1.068538665771484375, 1.52207434177398681640625, 1.0120027065277099609375, 1.10740125179290771484375, 1.7271044254302978515625, 1.7170889377593994140625, 1.3001120090484619140625, 1.8307087421417236328125, 1.08162224292755126953125, 1.549459934234619140625, 1.74783861637115478515625, 1.90549564361572265625, 1.6548202037811279296875, 1.93296778202056884765625, 1.17319834232330322265625, 1.688291072845458984375, 1.69086182117462158203125, 1.407124996185302734375, 1.97111165523529052734375, 1.98557531833648681640625, 1.5537836551666259765625, 1.97311413288116455078125, 1.88684070110321044921875, 1.26471769809722900390625, 1.87593281269073486328125, 1.67972505092620849609375, 1.53942692279815673828125, 1.61491334438323974609375},
{ 1.959292888641357421875, 1.6951286792755126953125, 1.4581210613250732421875, 1.9094793796539306640625, 1.71363484859466552734375, 1.29085826873779296875, 1.01000118255615234375, 1.06306111812591552734375, 1.14998805522918701171875, 1.207620143890380859375, 1.49085235595703125, 1.1071140766143798828125, 1.3669474124908447265625, 1.7939479351043701171875, 1.0865495204925537109375, 1.49210059642791748046875, 1.69040238857269287109375, 1.1393420696258544921875, 1.65948116779327392578125, 1.57741868495941162109375, 1.75947487354278564453125, 1.097707271575927734375, 1.20948731899261474609375, 1.029839038848876953125, 1.3624570369720458984375, 1.06079018115997314453125, 1.08479630947113037109375, 1.97194325923919677734375, 1.02274811267852783203125, 1.48161637783050537109375, 1.942962646484375, 1.88056087493896484375, 1.33479225635528564453125, 1.14792859554290771484375, 1.461804866790771484375, 1.23520696163177490234375, 1.0500164031982421875, 1.20562374591827392578125, 1.8003423213958740234375, 1.91651976108551025390625, 1.91276705265045166015625, 1.93219053745269775390625, 1.80973303318023681640625, 1.354697704315185546875, 1.24624812602996826171875, 1.2601470947265625, 1.99421155452728271484375, 1.42793762683868408203125, 1.28845882415771484375, 1.0504779815673828125, 1.22202575206756591796875, 1.110871791839599609375, 1.27813041210174560546875, 1.1160724163055419921875, 1.186374664306640625, 1.87300550937652587890625, 1.290664196014404296875, 1.9951612949371337890625, 1.6163463592529296875, 1.827154636383056640625, 1.8240687847137451171875, 1.474754810333251953125, 1.2378547191619873046875, 1.6278831958770751953125, 1.13489806652069091796875, 1.86408007144927978515625, 1.48457729816436767578125, 1.11994040012359619140625, 1.3241879940032958984375, 1.01801812648773193359375, 1.95889317989349365234375, 1.7366988658905029296875, 1.1733944416046142578125, 1.11054217815399169921875, 1.64281976222991943359375, 1.64859163761138916015625, 1.73033106327056884765625, 1.15815460681915283203125, 1.85895073413848876953125, 1.6615498065948486328125, 1.6451060771942138671875, 1.29332458972930908203125, 1.981393337249755859375, 1.8654401302337646484375, 1.256060123443603515625, 1.78792560100555419921875, 1.8967063426971435546875, 1.03250205516815185546875, 1.42570412158966064453125, 1.826673030853271484375, 1.2148368358612060546875, 1.7657859325408935546875, 1.126656055450439453125, 1.0305612087249755859375, 1.23005807399749755859375, 1.39759004116058349609375, 1.777578830718994140625, 1.7303016185760498046875, 1.63190734386444091796875, 1.6378982067108154296875}
};
void main() {
int k;
int i;
int j;
int NCB;
int NRA;
int NCA;
NCA = 100;
NRA = 100;
NCB = 100;
for (k=0; k < NCB; k++)
for (i=0; i < NRA; i++) {
C[i][k] = 0.0;
for (j=0; j < NCA; j++) {
C[i][k] = C[i][k] + A[i][j] * B[j][k];
}
}
}

View File

@ -4,8 +4,8 @@ ROOT := ..
LIBRARY_DIRS := ${ROOT}/crt0 LIBRARY_DIRS := ${ROOT}/crt0
LIBRARY_FILES := crt0 LIBRARY_FILES := crt0
MARCH :=-march=rv64ic MARCH :=-march=rv64imfdc
MABI :=-mabi=lp64 MABI :=-mabi=lp64d
LINK_FLAGS :=$(MARCH) $(MABI) -nostartfiles -Wl,-Map=$(TARGET).map LINK_FLAGS :=$(MARCH) $(MABI) -nostartfiles -Wl,-Map=$(TARGET).map
CFLAGS =$(MARCH) $(MABI) -Wa,-alhs -Wa,-L -mcmodel=medany -mstrict-align -O2 CFLAGS =$(MARCH) $(MABI) -Wa,-alhs -Wa,-L -mcmodel=medany -mstrict-align -O2

View File

@ -0,0 +1,103 @@
.section .text
.globl global_hist_3_space_test
.type global_hist_3_space_test, @function
global_hist_3_space_test:
li t1, 1
li t2, 200
li t3, 0
li t4, 1
loop_3:
# instruction
addi t3, t3, 1
addi t3, t3, 1
addi t3, t3, 1
beqz t4, zero_3 # this branch toggles between taken and not taken.
li t4, 0
j one_3
zero_3:
li t4, 1
add t1, t1, t4
one_3:
addi t3, t3, 1
addi t2, t2, -1
bnez t2, loop_3
ret
.section .text
.globl global_hist_2_space_test
.type global_hist_2_space_test, @function
global_hist_2_space_test:
li t1, 1
li t2, 200
li t3, 0
li t4, 1
loop_2:
# instruction
addi t3, t3, 1
addi t3, t3, 1
beqz t4, zero_2 # this branch toggles between taken and not taken.
li t4, 0
j one_2
zero_2:
li t4, 1
add t1, t1, t4
one_2:
addi t2, t2, -1
bnez t2, loop_2
ret
.section .text
.globl global_hist_1_space_test
.type global_hist_1_space_test, @function
global_hist_1_space_test:
li t1, 1
li t2, 200
li t3, 0
li t4, 1
loop_1:
# instruction
addi t3, t3, 1
beqz t4, zero_1 # this branch toggles between taken and not taken.
li t4, 0
j one_1
zero_1:
li t4, 1
add t1, t1, t4
one_1:
addi t2, t2, -1
bnez t2, loop_1
ret
.section .text
.globl global_hist_0_space_test
.type global_hist_0_space_test, @function
global_hist_0_space_test:
li t1, 1
li t2, 200
li t3, 0
li t4, 1
loop_0:
# instruction
beqz t4, zero_0 # this branch toggles between taken and not taken.
li t4, 0
j one_0
zero_0:
li t4, 1
add t1, t1, t4
one_0:
addi t2, t2, -1
bnez t2, loop_0
ret

View File

@ -38,6 +38,12 @@
`define ZCSR_SUPPORTED 1 `define ZCSR_SUPPORTED 1
`define ZCOUNTERS_SUPPORTED 1 `define ZCOUNTERS_SUPPORTED 1
`define COUNTERS 31 `define COUNTERS 31
<<<<<<< HEAD
=======
// N-mode user-level interrupts are depricated per Andrew Waterman 1/13/21
//`define N_SUPPORTED ((MISA >> 13) % 2 == 1)
`define N_SUPPORTED 0
>>>>>>> 64a687b80fbd04a02ac986dde4802d9324aa6ac1
// Microarchitectural Features // Microarchitectural Features
`define UARCH_PIPELINED 1 `define UARCH_PIPELINED 1
@ -49,6 +55,9 @@
`define MEM_VIRTMEM 0 `define MEM_VIRTMEM 0
`define VECTORED_INTERRUPTS_SUPPORTED 1 // Domenico Ottolia 4/15: Support for vectored interrupts in _tvec csrs. Just implemented in src/privileged/trap.sv around line 75. Pretty sure this should be 1. `define VECTORED_INTERRUPTS_SUPPORTED 1 // Domenico Ottolia 4/15: Support for vectored interrupts in _tvec csrs. Just implemented in src/privileged/trap.sv around line 75. Pretty sure this should be 1.
`define ITLB_ENTRY_BITS 5
`define DTLB_ENTRY_BITS 5
// Address space // Address space
`define RESET_VECTOR 64'h0000000000001000 `define RESET_VECTOR 64'h0000000000001000

View File

@ -38,6 +38,12 @@
`define ZCSR_SUPPORTED 1 `define ZCSR_SUPPORTED 1
`define ZCOUNTERS_SUPPORTED 1 `define ZCOUNTERS_SUPPORTED 1
`define COUNTERS 31 `define COUNTERS 31
<<<<<<< HEAD
=======
// N-mode user-level interrupts are depricated per Andrew Waterman 1/13/21
//`define N_SUPPORTED ((MISA >> 13) % 2 == 1)
`define N_SUPPORTED 0
>>>>>>> 64a687b80fbd04a02ac986dde4802d9324aa6ac1
// Microarchitectural Features // Microarchitectural Features
`define UARCH_PIPELINED 1 `define UARCH_PIPELINED 1
@ -49,6 +55,9 @@
`define MEM_VIRTMEM 0 `define MEM_VIRTMEM 0
`define VECTORED_INTERRUPTS_SUPPORTED 1 // Domenico Ottolia 4/15: Support for vectored interrupts in _tvec csrs. Just implemented in src/privileged/trap.sv around line 75. Pretty sure this should be 1. `define VECTORED_INTERRUPTS_SUPPORTED 1 // Domenico Ottolia 4/15: Support for vectored interrupts in _tvec csrs. Just implemented in src/privileged/trap.sv around line 75. Pretty sure this should be 1.
`define ITLB_ENTRY_BITS 5
`define DTLB_ENTRY_BITS 5
// Address space // Address space
`define RESET_VECTOR 64'h0000000000001000 `define RESET_VECTOR 64'h0000000000001000

View File

@ -34,6 +34,12 @@
`define MISA (32'h00000104 | 1<<5 | 1<<18 | 1 << 20) `define MISA (32'h00000104 | 1<<5 | 1<<18 | 1 << 20)
`define ZCSR_SUPPORTED 1 `define ZCSR_SUPPORTED 1
`define ZCOUNTERS_SUPPORTED 1 `define ZCOUNTERS_SUPPORTED 1
<<<<<<< HEAD
=======
// N-mode user-level interrupts are depricated per Andrew Waterman 1/13/21
//`define N_SUPPORTED ((MISA >> 13) % 2 == 1)
`define N_SUPPORTED 0
>>>>>>> 64a687b80fbd04a02ac986dde4802d9324aa6ac1
// Microarchitectural Features // Microarchitectural Features
`define UARCH_PIPELINED 1 `define UARCH_PIPELINED 1

View File

@ -50,6 +50,10 @@
`define MEM_DTIM 1 `define MEM_DTIM 1
`define MEM_ICACHE 0 `define MEM_ICACHE 0
`define MEM_VIRTMEM 0 `define MEM_VIRTMEM 0
`define VECTORED_INTERRUPTS_SUPPORTED 1
`define ITLB_ENTRY_BITS 5
`define DTLB_ENTRY_BITS 5
// Address space // Address space
`define RESET_VECTOR 64'h00000000000100b0 `define RESET_VECTOR 64'h00000000000100b0

View File

@ -38,6 +38,12 @@
`define ZCSR_SUPPORTED 1 `define ZCSR_SUPPORTED 1
`define COUNTERS 31 `define COUNTERS 31
`define ZCOUNTERS_SUPPORTED 1 `define ZCOUNTERS_SUPPORTED 1
<<<<<<< HEAD
=======
// N-mode user-level interrupts are depricated per Andrew Waterman 1/13/21
//`define N_SUPPORTED ((MISA >> 13) % 2 == 1)
`define N_SUPPORTED 0
>>>>>>> 64a687b80fbd04a02ac986dde4802d9324aa6ac1
// Microarchitectural Features // Microarchitectural Features
`define UARCH_PIPELINED 1 `define UARCH_PIPELINED 1
@ -49,6 +55,9 @@
`define MEM_VIRTMEM 1 `define MEM_VIRTMEM 1
`define VECTORED_INTERRUPTS_SUPPORTED 1 `define VECTORED_INTERRUPTS_SUPPORTED 1
`define ITLB_ENTRY_BITS 5
`define DTLB_ENTRY_BITS 5
// Address space // Address space
`define RESET_VECTOR 64'h0000000080000000 `define RESET_VECTOR 64'h0000000080000000

View File

@ -37,6 +37,12 @@
`define ZCSR_SUPPORTED 1 `define ZCSR_SUPPORTED 1
`define COUNTERS 31 `define COUNTERS 31
`define ZCOUNTERS_SUPPORTED 1 `define ZCOUNTERS_SUPPORTED 1
<<<<<<< HEAD
=======
// N-mode user-level interrupts are depricated per Andrew Waterman 1/13/21
//`define N_SUPPORTED ((MISA >> 13) % 2 == 1)
`define N_SUPPORTED 0
>>>>>>> 64a687b80fbd04a02ac986dde4802d9324aa6ac1
// Microarchitectural Features // Microarchitectural Features
`define UARCH_PIPELINED 1 `define UARCH_PIPELINED 1
@ -48,6 +54,9 @@
`define MEM_VIRTMEM 1 `define MEM_VIRTMEM 1
`define VECTORED_INTERRUPTS_SUPPORTED 1 `define VECTORED_INTERRUPTS_SUPPORTED 1
`define ITLB_ENTRY_BITS 5
`define DTLB_ENTRY_BITS 5
// Address space // Address space
`define RESET_VECTOR 32'h80000000 `define RESET_VECTOR 32'h80000000

View File

@ -39,6 +39,12 @@
`define ZCSR_SUPPORTED 1 `define ZCSR_SUPPORTED 1
`define COUNTERS 31 `define COUNTERS 31
`define ZCOUNTERS_SUPPORTED 1 `define ZCOUNTERS_SUPPORTED 1
<<<<<<< HEAD
=======
// N-mode user-level interrupts are depricated per Andrew Waterman 1/13/21
//`define N_SUPPORTED ((MISA >> 13) % 2 == 1)
`define N_SUPPORTED 0
>>>>>>> 64a687b80fbd04a02ac986dde4802d9324aa6ac1
// Microarchitectural Features // Microarchitectural Features
`define UARCH_PIPELINED 1 `define UARCH_PIPELINED 1
@ -50,6 +56,9 @@
`define MEM_VIRTMEM 1 `define MEM_VIRTMEM 1
`define VECTORED_INTERRUPTS_SUPPORTED 1 `define VECTORED_INTERRUPTS_SUPPORTED 1
`define ITLB_ENTRY_BITS 5
`define DTLB_ENTRY_BITS 5
// Address space // Address space
`define RESET_VECTOR 64'h0000000000000000 `define RESET_VECTOR 64'h0000000000000000

View File

@ -38,6 +38,12 @@
`define ZCSR_SUPPORTED 1 `define ZCSR_SUPPORTED 1
`define COUNTERS 31 `define COUNTERS 31
`define ZCOUNTERS_SUPPORTED 1 `define ZCOUNTERS_SUPPORTED 1
<<<<<<< HEAD
=======
// N-mode user-level interrupts are depricated per Andrew Waterman 1/13/21
//`define N_SUPPORTED ((MISA >> 13) % 2 == 1)
`define N_SUPPORTED 0
>>>>>>> 64a687b80fbd04a02ac986dde4802d9324aa6ac1
// Microarchitectural Features // Microarchitectural Features
`define UARCH_PIPELINED 1 `define UARCH_PIPELINED 1
@ -49,6 +55,9 @@
`define MEM_VIRTMEM 1 `define MEM_VIRTMEM 1
`define VECTORED_INTERRUPTS_SUPPORTED 1 `define VECTORED_INTERRUPTS_SUPPORTED 1
`define ITLB_ENTRY_BITS 5
`define DTLB_ENTRY_BITS 5
// Address space // Address space
`define RESET_VECTOR 64'h0000000080000000 `define RESET_VECTOR 64'h0000000080000000

View File

@ -52,6 +52,9 @@
`define MEM_VIRTMEM 1 `define MEM_VIRTMEM 1
`define VECTORED_INTERRUPTS_SUPPORTED 1 `define VECTORED_INTERRUPTS_SUPPORTED 1
`define ITLB_ENTRY_BITS 5
`define DTLB_ENTRY_BITS 5
// Address space // Address space
`define RESET_VECTOR 64'h0000000080000000 `define RESET_VECTOR 64'h0000000080000000

View File

@ -38,6 +38,12 @@
`define ZCSR_SUPPORTED 1 `define ZCSR_SUPPORTED 1
`define COUNTERS 31 `define COUNTERS 31
`define ZCOUNTERS_SUPPORTED 1 `define ZCOUNTERS_SUPPORTED 1
<<<<<<< HEAD
=======
// N-mode user-level interrupts are depricated per Andrew Waterman 1/13/21
//`define N_SUPPORTED ((MISA >> 13) % 2 == 1)
`define N_SUPPORTED 0
>>>>>>> 64a687b80fbd04a02ac986dde4802d9324aa6ac1
// Microarchitectural Features // Microarchitectural Features
`define UARCH_PIPELINED 1 `define UARCH_PIPELINED 1
@ -47,6 +53,10 @@
`define MEM_DTIM 1 `define MEM_DTIM 1
`define MEM_ICACHE 0 `define MEM_ICACHE 0
`define MEM_VIRTMEM 0 `define MEM_VIRTMEM 0
`define VECTORED_INTERRUPTS_SUPPORTED 1
`define ITLB_ENTRY_BITS 5
`define DTLB_ENTRY_BITS 5
// Address space // Address space
`define RESET_VECTOR 64'h0000000080000000 `define RESET_VECTOR 64'h0000000080000000

View File

@ -28,10 +28,14 @@
// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
/////////////////////////////////////////// ///////////////////////////////////////////
<<<<<<< HEAD
// Privileged modes // Privileged modes
`define M_MODE (2'b11) `define M_MODE (2'b11)
`define S_MODE (2'b01) `define S_MODE (2'b01)
`define U_MODE (2'b00) `define U_MODE (2'b00)
=======
`include "wally-config.vh"
>>>>>>> 64a687b80fbd04a02ac986dde4802d9324aa6ac1
// Virtual Memory Constants // Virtual Memory Constants
`define VPN_SEGMENT_BITS (`XLEN == 32 ? 10 : 9) `define VPN_SEGMENT_BITS (`XLEN == 32 ? 10 : 9)
@ -47,3 +51,10 @@
`define SV32 1 `define SV32 1
`define SV39 8 `define SV39 8
`define SV48 9 `define SV48 9
// constants defining different privilege modes
// defined in Table 1.1 of the privileged spec
`define M_MODE (2'b11)
`define S_MODE (2'b01)
`define U_MODE (2'b00)

View File

@ -7,7 +7,11 @@ verilator=`which verilator`
basepath=$(dirname $0) basepath=$(dirname $0)
for config in rv64ic rv32ic; do for config in rv64ic rv32ic; do
echo "$config linting..." echo "$config linting..."
<<<<<<< HEAD
if !($verilator --lint-only "$@" --top-module wallypipelinedsoc "-I$basepath/config/shared" "-I$basepath/config/$config" $basepath/src/*/*.sv); then if !($verilator --lint-only "$@" --top-module wallypipelinedsoc "-I$basepath/config/shared" "-I$basepath/config/$config" $basepath/src/*/*.sv); then
=======
if !($verilator --lint-only "$@" --top-module wallypipelinedsoc "-I$basepath/config/shared" "-I$basepath/config/$config" $basepath/src/*/*.sv --relative-includes); then
>>>>>>> 64a687b80fbd04a02ac986dde4802d9324aa6ac1
echo "Exiting after $config lint due to errors or warnings" echo "Exiting after $config lint due to errors or warnings"
exit 1 exit 1
fi fi

View File

@ -0,0 +1 @@
vsim -do wally-pipelined-rv64icfd.do

View File

@ -0,0 +1,50 @@
# wally-pipelined.do
#
# Modification by Oklahoma State University & Harvey Mudd College
# Use with Testbench
# James Stine, 2008; David Harris 2021
# Go Cowboys!!!!!!
#
# Takes 1:10 to run RV64IC tests using gui
# Use this wally-pipelined.do file to run this example.
# Either bring up ModelSim and type the following at the "ModelSim>" prompt:
# do wally-pipelined.do
# or, to run from a shell, type the following at the shell prompt:
# vsim -do wally-pipelined.do -c
# (omit the "-c" to see the GUI while running from the shell)
onbreak {resume}
# create library
if [file exists work] {
vdel -all
}
vlib work
# compile source files
# suppress spurious warnngs about
# "Extra checking for conflicts with always_comb done at vopt time"
# because vsim will run vopt
# default to config/rv64ic, but allow this to be overridden at the command line. For example:
# do wally-pipelined.do ../config/rv32ic
switch $argc {
0 {vlog +incdir+../config/rv64icfd +incdir+../config/shared ../testbench/testbench-imperas.sv ../src/*/*.sv -suppress 2583}
1 {vlog +incdir+$1 +incdir+../config/shared ../testbench/testbench-imperas.sv ../testbench/function_radix.sv ../src/*/*.sv -suppress 2583}
}
# start and run simulation
# remove +acc flag for faster sim during regressions if there is no need to access internal signals
vopt +acc work.testbench -o workopt
vsim workopt
view wave
-- display input and output signals as hexidecimal values
do ./wave-dos/default-waves.do
-- Run the Simulation
#run 5000
run -all
#quit
noview ../testbench/testbench-imperas.sv
view wave

View File

@ -7,59 +7,88 @@ add wave -noupdate -expand -group {Execution Stage} /testbench/FunctionName/Func
add wave -noupdate -expand -group {Execution Stage} /testbench/dut/hart/ifu/PCE add wave -noupdate -expand -group {Execution Stage} /testbench/dut/hart/ifu/PCE
add wave -noupdate -expand -group {Execution Stage} /testbench/InstrEName add wave -noupdate -expand -group {Execution Stage} /testbench/InstrEName
add wave -noupdate -expand -group {Execution Stage} /testbench/dut/hart/ifu/InstrE add wave -noupdate -expand -group {Execution Stage} /testbench/dut/hart/ifu/InstrE
add wave -noupdate -group HDU -group traps /testbench/dut/hart/priv/trap/InstrMisalignedFaultM add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/InstrMisalignedFaultM
add wave -noupdate -group HDU -group traps /testbench/dut/hart/priv/trap/InstrAccessFaultM add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/InstrAccessFaultM
add wave -noupdate -group HDU -group traps /testbench/dut/hart/priv/trap/IllegalInstrFaultM add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/IllegalInstrFaultM
add wave -noupdate -group HDU -group traps /testbench/dut/hart/priv/trap/BreakpointFaultM add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/BreakpointFaultM
add wave -noupdate -group HDU -group traps /testbench/dut/hart/priv/trap/LoadMisalignedFaultM add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/LoadMisalignedFaultM
add wave -noupdate -group HDU -group traps /testbench/dut/hart/priv/trap/StoreMisalignedFaultM add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/StoreMisalignedFaultM
add wave -noupdate -group HDU -group traps /testbench/dut/hart/priv/trap/LoadAccessFaultM add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/LoadAccessFaultM
add wave -noupdate -group HDU -group traps /testbench/dut/hart/priv/trap/StoreAccessFaultM add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/StoreAccessFaultM
add wave -noupdate -group HDU -group traps /testbench/dut/hart/priv/trap/EcallFaultM add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/EcallFaultM
add wave -noupdate -group HDU -group traps /testbench/dut/hart/priv/trap/InstrPageFaultM add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/InstrPageFaultM
add wave -noupdate -group HDU -group traps /testbench/dut/hart/priv/trap/LoadPageFaultM add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/LoadPageFaultM
add wave -noupdate -group HDU -group traps /testbench/dut/hart/priv/trap/StorePageFaultM add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/StorePageFaultM
add wave -noupdate -group HDU -group traps /testbench/dut/hart/priv/trap/InterruptM add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap/InterruptM
add wave -noupdate -group HDU -group hazards /testbench/dut/hart/hzu/BPPredWrongE add wave -noupdate -expand -group HDU -group hazards /testbench/dut/hart/hzu/BPPredWrongE
add wave -noupdate -group HDU -group hazards /testbench/dut/hart/hzu/CSRWritePendingDEM add wave -noupdate -expand -group HDU -group hazards /testbench/dut/hart/hzu/CSRWritePendingDEM
add wave -noupdate -group HDU -group hazards /testbench/dut/hart/hzu/RetM add wave -noupdate -expand -group HDU -group hazards /testbench/dut/hart/hzu/RetM
add wave -noupdate -group HDU -group hazards /testbench/dut/hart/hzu/TrapM add wave -noupdate -expand -group HDU -group hazards /testbench/dut/hart/hzu/TrapM
add wave -noupdate -group HDU -group hazards /testbench/dut/hart/hzu/LoadStallD add wave -noupdate -expand -group HDU -group hazards /testbench/dut/hart/hzu/LoadStallD
add wave -noupdate -group HDU -group hazards /testbench/dut/hart/hzu/DataStall add wave -noupdate -expand -group HDU -group hazards /testbench/dut/hart/hzu/ICacheStallF
add wave -noupdate -group HDU -group hazards /testbench/dut/hart/MulDivStallD add wave -noupdate -expand -group HDU -group hazards /testbench/dut/hart/hzu/DataStall
add wave -noupdate -group HDU -expand -group Flush -color Yellow /testbench/dut/hart/hzu/FlushF add wave -noupdate -expand -group HDU -group hazards /testbench/dut/hart/MulDivStallD
add wave -noupdate -group HDU -expand -group Flush -color Yellow /testbench/dut/hart/FlushD add wave -noupdate -expand -group HDU -expand -group Flush -color Yellow /testbench/dut/hart/hzu/FlushF
add wave -noupdate -group HDU -expand -group Flush -color Yellow /testbench/dut/hart/FlushE add wave -noupdate -expand -group HDU -expand -group Flush -color Yellow /testbench/dut/hart/FlushD
add wave -noupdate -group HDU -expand -group Flush -color Yellow /testbench/dut/hart/FlushM add wave -noupdate -expand -group HDU -expand -group Flush -color Yellow /testbench/dut/hart/FlushE
add wave -noupdate -group HDU -expand -group Flush -color Yellow /testbench/dut/hart/FlushW add wave -noupdate -expand -group HDU -expand -group Flush -color Yellow /testbench/dut/hart/FlushM
add wave -noupdate -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallF add wave -noupdate -expand -group HDU -expand -group Flush -color Yellow /testbench/dut/hart/FlushW
add wave -noupdate -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallD add wave -noupdate -expand -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallF
add wave -noupdate -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallE add wave -noupdate -expand -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallD
add wave -noupdate -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallM add wave -noupdate -expand -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallE
add wave -noupdate -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallW add wave -noupdate -expand -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallM
add wave -noupdate -expand -group Bpred -expand -group prediction /testbench/dut/hart/ifu/bpred/bpred/BPPredF add wave -noupdate -expand -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallW
add wave -noupdate -expand -group Bpred -expand -group prediction /testbench/dut/hart/ifu/bpred/bpred/BTBValidF add wave -noupdate -group Bpred -color Orange /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHR
add wave -noupdate -expand -group Bpred -expand -group prediction /testbench/dut/hart/ifu/bpred/bpred/BPInstrClassF add wave -noupdate -group Bpred -expand -group {branch update selection inputs} /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/BPPredF
add wave -noupdate -expand -group Bpred -expand -group prediction /testbench/dut/hart/ifu/bpred/bpred/BTBPredPCF add wave -noupdate -group Bpred -expand -group {branch update selection inputs} {/testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/InstrClassE[0]}
add wave -noupdate -expand -group Bpred -expand -group prediction /testbench/dut/hart/ifu/bpred/bpred/RASPCF add wave -noupdate -group Bpred -expand -group {branch update selection inputs} {/testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/BPInstrClassE[0]}
add wave -noupdate -expand -group Bpred -expand -group update -expand -group dir /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/UpdatePC add wave -noupdate -group Bpred -expand -group {branch update selection inputs} /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/BPPredDirWrongE
add wave -noupdate -expand -group Bpred -expand -group update -expand -group dir /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/UpdateEN add wave -noupdate -group Bpred -expand -group {branch update selection inputs} -divider {class check}
add wave -noupdate -expand -group Bpred -expand -group update -expand -group dir /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/UpdatePrediction add wave -noupdate -group Bpred -expand -group {branch update selection inputs} /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/BPClassRightNonCFI
add wave -noupdate -expand -group Bpred -expand -group update -expand -group BTB /testbench/dut/hart/ifu/bpred/bpred/TargetPredictor/UpdateEN add wave -noupdate -group Bpred -expand -group {branch update selection inputs} /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/BPClassWrongCFI
add wave -noupdate -expand -group Bpred -expand -group update -expand -group BTB /testbench/dut/hart/ifu/bpred/bpred/TargetPredictor/UpdatePC add wave -noupdate -group Bpred -expand -group {branch update selection inputs} /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/BPClassWrongNonCFI
add wave -noupdate -expand -group Bpred -expand -group update -expand -group BTB /testbench/dut/hart/ifu/bpred/bpred/TargetPredictor/UpdateTarget add wave -noupdate -group Bpred -expand -group {branch update selection inputs} /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/BPClassRightBPRight
add wave -noupdate -expand -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/bpred/TargetWrongE add wave -noupdate -group Bpred -expand -group {branch update selection inputs} /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/BPClassRightBPWrong
add wave -noupdate -expand -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/bpred/FallThroughWrongE add wave -noupdate -group Bpred -radix hexadecimal -childformat {{{/testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHRMuxSel[6]} -radix binary} {{/testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHRMuxSel[5]} -radix binary} {{/testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHRMuxSel[4]} -radix binary} {{/testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHRMuxSel[3]} -radix binary} {{/testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHRMuxSel[2]} -radix binary} {{/testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHRMuxSel[1]} -radix binary} {{/testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHRMuxSel[0]} -radix binary}} -subitemconfig {{/testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHRMuxSel[6]} {-height 16 -radix binary} {/testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHRMuxSel[5]} {-height 16 -radix binary} {/testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHRMuxSel[4]} {-height 16 -radix binary} {/testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHRMuxSel[3]} {-height 16 -radix binary} {/testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHRMuxSel[2]} {-height 16 -radix binary} {/testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHRMuxSel[1]} {-height 16 -radix binary} {/testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHRMuxSel[0]} {-height 16 -radix binary}} /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHRMuxSel
add wave -noupdate -expand -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/bpred/PredictionPCWrongE add wave -noupdate -group Bpred /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHRNext
add wave -noupdate -expand -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/bpred/InstrClassE add wave -noupdate -group Bpred /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHRUpdateEN
add wave -noupdate -expand -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/bpred/PredictionInstrClassWrongE add wave -noupdate -group Bpred /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/PHTUpdateAdr
add wave -noupdate -expand -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/bpred/BPPredClassNonCFIWrongE add wave -noupdate -group Bpred /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/PHTUpdateAdr0
add wave -noupdate -expand -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/bpred/BPPredWrongE add wave -noupdate -group Bpred /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/PHTUpdateAdr1
add wave -noupdate -expand -group Bpred /testbench/dut/hart/ifu/bpred/bpred/BPPredWrongE add wave -noupdate -group Bpred /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/PHTUpdateEN
add wave -noupdate -group {instruction pipeline} /testbench/InstrFName add wave -noupdate -group Bpred -expand -group prediction /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHRLookup
add wave -noupdate -group {instruction pipeline} /testbench/dut/hart/ifu/InstrD add wave -noupdate -group Bpred -expand -group prediction /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/PCNextF
add wave -noupdate -group {instruction pipeline} /testbench/dut/hart/ifu/InstrE add wave -noupdate -group Bpred -expand -group prediction /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/PHT/RA1
add wave -noupdate -group {instruction pipeline} /testbench/dut/hart/ifu/InstrM add wave -noupdate -group Bpred -expand -group prediction -radix binary /testbench/dut/hart/ifu/bpred/bpred/BPPredF
add wave -noupdate -group Bpred -expand -group prediction /testbench/dut/hart/ifu/bpred/bpred/BTBValidF
add wave -noupdate -group Bpred -expand -group prediction /testbench/dut/hart/ifu/bpred/bpred/BPInstrClassF
add wave -noupdate -group Bpred -expand -group prediction /testbench/dut/hart/ifu/bpred/bpred/BTBPredPCF
add wave -noupdate -group Bpred -expand -group prediction /testbench/dut/hart/ifu/bpred/bpred/RASPCF
add wave -noupdate -group Bpred -expand -group prediction /testbench/dut/hart/ifu/bpred/bpred/TargetPredictor/LookUpPCIndex
add wave -noupdate -group Bpred -expand -group prediction /testbench/dut/hart/ifu/bpred/bpred/TargetPredictor/TargetPC
add wave -noupdate -group Bpred -expand -group prediction -expand -group ex -radix binary /testbench/dut/hart/ifu/bpred/bpred/BPPredE
add wave -noupdate -group Bpred -expand -group prediction -expand -group ex /testbench/dut/hart/ifu/bpred/bpred/PCSrcE
add wave -noupdate -group Bpred -expand -group prediction -expand -group ex /testbench/dut/hart/ifu/bpred/bpred/BPPredDirWrongE
add wave -noupdate -group Bpred -expand -group update -expand -group BTB /testbench/dut/hart/ifu/bpred/bpred/TargetPredictor/UpdatePCIndex
add wave -noupdate -group Bpred -expand -group update -expand -group BTB /testbench/dut/hart/ifu/bpred/bpred/TargetPredictor/UpdateTarget
add wave -noupdate -group Bpred -expand -group update -expand -group BTB /testbench/dut/hart/ifu/bpred/bpred/TargetPredictor/UpdateEN
add wave -noupdate -group Bpred -expand -group update -expand -group BTB /testbench/dut/hart/ifu/bpred/bpred/TargetPredictor/UpdatePC
add wave -noupdate -group Bpred -expand -group update -expand -group BTB /testbench/dut/hart/ifu/bpred/bpred/TargetPredictor/UpdateTarget
add wave -noupdate -group Bpred -expand -group update -expand -group direction /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/PHTUpdateAdr
add wave -noupdate -group Bpred -expand -group update -expand -group direction /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/PCE
add wave -noupdate -group Bpred -expand -group update -expand -group direction /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/PHT/WA1
add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/bpred/TargetWrongE
add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/bpred/FallThroughWrongE
add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/bpred/PredictionPCWrongE
add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/bpred/InstrClassE
add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/bpred/PredictionInstrClassWrongE
add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/bpred/BPPredClassNonCFIWrongE
add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/bpred/BPPredWrongE
add wave -noupdate -group Bpred /testbench/dut/hart/ifu/bpred/bpred/BPPredWrongE
add wave -noupdate -expand -group {instruction pipeline} /testbench/InstrFName
add wave -noupdate -expand -group {instruction pipeline} /testbench/dut/hart/ifu/InstrD
add wave -noupdate -expand -group {instruction pipeline} /testbench/dut/hart/ifu/InstrE
add wave -noupdate -expand -group {instruction pipeline} /testbench/dut/hart/ifu/InstrM
add wave -noupdate -group {PCNext Generation} /testbench/dut/hart/ifu/PCNextF add wave -noupdate -group {PCNext Generation} /testbench/dut/hart/ifu/PCNextF
add wave -noupdate -group {PCNext Generation} /testbench/dut/hart/ifu/PCF add wave -noupdate -group {PCNext Generation} /testbench/dut/hart/ifu/PCF
add wave -noupdate -group {PCNext Generation} /testbench/dut/hart/ifu/PCPlus2or4F add wave -noupdate -group {PCNext Generation} /testbench/dut/hart/ifu/PCPlus2or4F
@ -88,18 +117,18 @@ add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart
add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/CSRReadValW add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/CSRReadValW
add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/ResultSrcW add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/ResultSrcW
add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/ResultW add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/ResultW
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/a add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/a
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/b add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/b
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/alucontrol add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/alucontrol
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/result add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/result
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/flags add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/flags
add wave -noupdate -expand -group alu -divider internals add wave -noupdate -group alu -divider internals
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/overflow add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/overflow
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/carry add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/carry
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/zero add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/zero
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/neg add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/neg
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/lt add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/lt
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/ltu add wave -noupdate -group alu /testbench/dut/hart/ieu/dp/alu/ltu
add wave -noupdate -group {dcache memory} /testbench/dut/hart/dmem/MemReadM add wave -noupdate -group {dcache memory} /testbench/dut/hart/dmem/MemReadM
add wave -noupdate -group {dcache memory} /testbench/dut/hart/dmem/MemWriteM add wave -noupdate -group {dcache memory} /testbench/dut/hart/dmem/MemWriteM
add wave -noupdate -group {dcache memory} /testbench/dut/hart/dmem/MemAckW add wave -noupdate -group {dcache memory} /testbench/dut/hart/dmem/MemAckW
@ -130,13 +159,12 @@ add wave -noupdate -group {alu execution stage} /testbench/dut/hart/ieu/dp/Write
add wave -noupdate -group {alu execution stage} /testbench/dut/hart/ieu/dp/ALUResultE add wave -noupdate -group {alu execution stage} /testbench/dut/hart/ieu/dp/ALUResultE
add wave -noupdate -group {alu execution stage} /testbench/dut/hart/ieu/dp/SrcAE add wave -noupdate -group {alu execution stage} /testbench/dut/hart/ieu/dp/SrcAE
add wave -noupdate -group {alu execution stage} /testbench/dut/hart/ieu/dp/SrcBE add wave -noupdate -group {alu execution stage} /testbench/dut/hart/ieu/dp/SrcBE
add wave -noupdate /testbench/dut/hart/ieu/dp/ALUResultM add wave -noupdate -group PCS /testbench/dut/hart/ifu/PCNextF
add wave -noupdate -expand -group PCS /testbench/dut/hart/ifu/PCNextF add wave -noupdate -group PCS /testbench/dut/hart/PCF
add wave -noupdate -expand -group PCS /testbench/dut/hart/PCF add wave -noupdate -group PCS /testbench/dut/hart/ifu/PCD
add wave -noupdate -expand -group PCS /testbench/dut/hart/ifu/PCD add wave -noupdate -group PCS /testbench/dut/hart/PCE
add wave -noupdate -expand -group PCS /testbench/dut/hart/PCE add wave -noupdate -group PCS /testbench/dut/hart/PCM
add wave -noupdate -expand -group PCS /testbench/dut/hart/PCM add wave -noupdate -group PCS /testbench/PCW
add wave -noupdate -expand -group PCS /testbench/PCW
add wave -noupdate -group muldiv /testbench/dut/hart/mdu/InstrD add wave -noupdate -group muldiv /testbench/dut/hart/mdu/InstrD
add wave -noupdate -group muldiv /testbench/dut/hart/mdu/SrcAE add wave -noupdate -group muldiv /testbench/dut/hart/mdu/SrcAE
add wave -noupdate -group muldiv /testbench/dut/hart/mdu/SrcBE add wave -noupdate -group muldiv /testbench/dut/hart/mdu/SrcBE
@ -169,13 +197,12 @@ add wave -noupdate -expand -group icache -expand -group {fsm out and control} /t
add wave -noupdate -expand -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/CntReset add wave -noupdate -expand -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/CntReset
add wave -noupdate -expand -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/PreCntEn add wave -noupdate -expand -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/PreCntEn
add wave -noupdate -expand -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/CntEn add wave -noupdate -expand -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/CntEn
add wave -noupdate -expand -group icache -group parameters /testbench/dut/hart/ifu/icache/controller/AHBByteLength add wave -noupdate -expand -group icache -expand -group {icache parameters} -radix unsigned /testbench/dut/hart/ifu/icache/cachemem/NUMLINES
add wave -noupdate -expand -group icache -group parameters /testbench/dut/hart/ifu/icache/controller/AHBOFFETWIDTH add wave -noupdate -expand -group icache -expand -group {icache parameters} -radix unsigned /testbench/dut/hart/ifu/icache/cachemem/BLOCKLEN
add wave -noupdate -expand -group icache -group parameters /testbench/dut/hart/ifu/icache/controller/BlockByteLength add wave -noupdate -expand -group icache -expand -group {icache parameters} -radix unsigned /testbench/dut/hart/ifu/icache/cachemem/BLOCKBYTELEN
add wave -noupdate -expand -group icache -group parameters /testbench/dut/hart/ifu/icache/controller/OFFSETWIDTH add wave -noupdate -expand -group icache -expand -group {icache parameters} -radix unsigned /testbench/dut/hart/ifu/icache/cachemem/OFFSETLEN
add wave -noupdate -expand -group icache -group parameters /testbench/dut/hart/ifu/icache/controller/WORDSPERLINE add wave -noupdate -expand -group icache -expand -group {icache parameters} -radix unsigned /testbench/dut/hart/ifu/icache/cachemem/INDEXLEN
add wave -noupdate -expand -group icache -group parameters /testbench/dut/hart/ifu/icache/controller/LOGWPL add wave -noupdate -expand -group icache -expand -group {icache parameters} -radix unsigned /testbench/dut/hart/ifu/icache/cachemem/TAGLEN
add wave -noupdate -expand -group icache -group parameters /testbench/dut/hart/ifu/icache/controller/LINESIZE
add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/FetchCountFlag add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/FetchCountFlag
add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/FetchCount add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/FetchCount
add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/InstrPAdrF add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/InstrPAdrF
@ -185,8 +212,6 @@ add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/ha
add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/ICacheMemWriteEnable add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/ICacheMemWriteEnable
add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/ICacheMemWriteData add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/ICacheMemWriteData
add wave -noupdate -expand -group icache -expand -group memory -group {tag read} /testbench/dut/hart/ifu/icache/cachemem/DataValidBit add wave -noupdate -expand -group icache -expand -group memory -group {tag read} /testbench/dut/hart/ifu/icache/cachemem/DataValidBit
add wave -noupdate -expand -group icache -expand -group memory -group {tag read} /testbench/dut/hart/ifu/icache/cachemem/DataValid
add wave -noupdate -expand -group icache -expand -group memory -group {tag read} /testbench/dut/hart/ifu/icache/cachemem/DataTag
add wave -noupdate -expand -group icache -expand -group memory -group {tag read} /testbench/dut/hart/ifu/icache/cachemem/cachetags/ReadData add wave -noupdate -expand -group icache -expand -group memory -group {tag read} /testbench/dut/hart/ifu/icache/cachemem/cachetags/ReadData
add wave -noupdate -expand -group icache -expand -group memory -group {tag write} /testbench/dut/hart/ifu/icache/cachemem/WriteEnable add wave -noupdate -expand -group icache -expand -group memory -group {tag write} /testbench/dut/hart/ifu/icache/cachemem/WriteEnable
add wave -noupdate -expand -group icache -expand -group memory -group {tag write} /testbench/dut/hart/ifu/icache/cachemem/WriteLine add wave -noupdate -expand -group icache -expand -group memory -group {tag write} /testbench/dut/hart/ifu/icache/cachemem/WriteLine
@ -214,10 +239,12 @@ add wave -noupdate -group AHB /testbench/dut/hart/ebu/HMASTLOCK
add wave -noupdate -group AHB /testbench/dut/hart/ebu/HADDRD add wave -noupdate -group AHB /testbench/dut/hart/ebu/HADDRD
add wave -noupdate -group AHB /testbench/dut/hart/ebu/HSIZED add wave -noupdate -group AHB /testbench/dut/hart/ebu/HSIZED
add wave -noupdate -group AHB /testbench/dut/hart/ebu/HWRITED add wave -noupdate -group AHB /testbench/dut/hart/ebu/HWRITED
add wave -noupdate /testbench/dut/hart/ifu/icache/PCTagF add wave -noupdate -group csr -color Aquamarine -label {br executed} -radix unsigned {/testbench/dut/hart/priv/csr/genblk1/counters/genblk2/HPMCOUNTER_REGW[5]}
add wave -noupdate -group csr -color Aquamarine -label {br miss predicted} -radix unsigned {/testbench/dut/hart/priv/csr/genblk1/counters/genblk2/HPMCOUNTER_REGW[4]}
add wave -noupdate -group csr -childformat {{{/testbench/dut/hart/priv/csr/genblk1/counters/genblk2/HPMCOUNTER_REGW[5]} -radix unsigned} {{/testbench/dut/hart/priv/csr/genblk1/counters/genblk2/HPMCOUNTER_REGW[4]} -radix unsigned}} -subitemconfig {{/testbench/dut/hart/priv/csr/genblk1/counters/genblk2/HPMCOUNTER_REGW[5]} {-height 16 -radix unsigned} {/testbench/dut/hart/priv/csr/genblk1/counters/genblk2/HPMCOUNTER_REGW[4]} {-height 16 -radix unsigned}} /testbench/dut/hart/priv/csr/genblk1/counters/genblk2/HPMCOUNTER_REGW
TreeUpdate [SetDefaultTree] TreeUpdate [SetDefaultTree]
WaveRestoreCursors {{Cursor 2} {252630976 ns} 1} {{Cursor 4} {72696935 ns} 0} {{Cursor 3} {252631405 ns} 0} WaveRestoreCursors {{Cursor 4} {32648010 ns} 0} {{Cursor 5} {12105831 ns} 0}
quietly wave cursor active 1 quietly wave cursor active 2
configure wave -namecolwidth 250 configure wave -namecolwidth 250
configure wave -valuecolwidth 189 configure wave -valuecolwidth 189
configure wave -justifyvalue left configure wave -justifyvalue left
@ -232,4 +259,4 @@ configure wave -griddelta 40
configure wave -timeline 0 configure wave -timeline 0
configure wave -timelineunits ns configure wave -timelineunits ns
update update
WaveRestoreZoom {252630882 ns} {252631198 ns} WaveRestoreZoom {0 ns} {30754715 ns}

View File

@ -1,10 +1,10 @@
/////////////////////////////////////////// ///////////////////////////////////////////
// icache.sv // icache.sv
// //
// Written: jaallen@g.hmc.edu 2021-03-02 // Written: ross1728@gmail.com June 04, 2021
// Modified: // Modified:
// //
// Purpose: Cache instructions for the ifu so it can access memory less often, saving cycles // Purpose: I Cache controller
// //
// A component of the Wally configurable RISC-V project. // A component of the Wally configurable RISC-V project.
// //
@ -25,62 +25,7 @@
`include "wally-config.vh" `include "wally-config.vh"
module icache( module ICacheCntrl #(parameter BLOCKLEN = 256) (
// Basic pipeline stuff
input logic clk, reset,
input logic StallF, StallD,
input logic FlushD,
input logic [`XLEN-1:0] PCNextF,
input logic [`XLEN-1:0] PCPF,
// Data read in from the ebu unit
input logic [`XLEN-1:0] InstrInF,
input logic InstrAckF,
// Read requested from the ebu unit
output logic [`XLEN-1:0] InstrPAdrF,
output logic InstrReadF,
// High if the instruction currently in the fetch stage is compressed
output logic CompressedF,
// High if the icache is requesting a stall
output logic ICacheStallF,
// The raw (not decompressed) instruction that was requested
// If this instruction is compressed, upper 16 bits may be the next 16 bits or may be zeros
output logic [31:0] InstrRawD
);
// Configuration parameters
// TODO Move these to a config file
localparam integer ICACHELINESIZE = 256;
localparam integer ICACHENUMLINES = 512;
// Input signals to cache memory
logic FlushMem;
logic ICacheMemWriteEnable;
logic [ICACHELINESIZE-1:0] ICacheMemWriteData;
logic EndFetchState;
logic [`XLEN-1:0] PCTagF, PCNextIndexF;
// Output signals from cache memory
logic [31:0] ICacheMemReadData;
logic ICacheMemReadValid;
logic ICacheReadEn;
rodirectmappedmemre #(.LINESIZE(ICACHELINESIZE), .NUMLINES(ICACHENUMLINES), .WORDSIZE(`XLEN))
cachemem(
.*,
// Stall it if the pipeline is stalled, unless we're stalling it and we're ending our stall
.flush(FlushMem),
.WriteEnable(ICacheMemWriteEnable),
.WriteLine(ICacheMemWriteData),
.DataWord(ICacheMemReadData),
.DataValid(ICacheMemReadValid)
);
icachecontroller #(.LINESIZE(ICACHELINESIZE)) controller(.*);
// For now, assume no writes to executable memory
assign FlushMem = 1'b0;
endmodule
module icachecontroller #(parameter LINESIZE = 256) (
// Inputs from pipeline // Inputs from pipeline
input logic clk, reset, input logic clk, reset,
input logic StallF, StallD, input logic StallF, StallD,
@ -100,7 +45,7 @@ module icachecontroller #(parameter LINESIZE = 256) (
output logic ICacheReadEn, output logic ICacheReadEn,
// Load data into the cache // Load data into the cache
output logic ICacheMemWriteEnable, output logic ICacheMemWriteEnable,
output logic [LINESIZE-1:0] ICacheMemWriteData, output logic [BLOCKLEN-1:0] ICacheMemWriteData,
// Outputs to rest of ifu // Outputs to rest of ifu
// High if the instruction in the fetch stage is compressed // High if the instruction in the fetch stage is compressed
@ -169,10 +114,10 @@ module icachecontroller #(parameter LINESIZE = 256) (
localparam AHBOFFETWIDTH = $clog2(AHBByteLength); localparam AHBOFFETWIDTH = $clog2(AHBByteLength);
localparam BlockByteLength = LINESIZE / 8; localparam BlockByteLength = BLOCKLEN / 8;
localparam OFFSETWIDTH = $clog2(BlockByteLength); localparam OFFSETWIDTH = $clog2(BlockByteLength);
localparam WORDSPERLINE = LINESIZE/`XLEN; localparam WORDSPERLINE = BLOCKLEN/`XLEN;
localparam LOGWPL = $clog2(WORDSPERLINE); localparam LOGWPL = $clog2(WORDSPERLINE);
logic [4:0] CurrState, NextState; logic [4:0] CurrState, NextState;
@ -196,16 +141,7 @@ module icachecontroller #(parameter LINESIZE = 256) (
logic [15:0] SpillDataBlock0; logic [15:0] SpillDataBlock0;
logic FlushDLastCyclen;
// Happy path signals
logic [31:0] AlignedInstrRawD;
//logic [31:0] AlignedInstrRawF, AlignedInstrRawD;
//logic FlushDLastCycleN;
//logic PCPMisalignedF;
localparam [31:0] NOP = 32'h13; localparam [31:0] NOP = 32'h13;
//logic [`XLEN-1:0] PCPF;
logic reset_q; logic reset_q;
logic [1:0] PCMux_q; logic [1:0] PCMux_q;
@ -514,13 +450,6 @@ module icachecontroller #(parameter LINESIZE = 256) (
.d(reset), .d(reset),
.q(reset_q)); .q(reset_q));
flopenl #(32) AlignedInstrRawDFlop(clk, reset | reset_q, ~StallD, FinalInstrRawF, NOP, AlignedInstrRawD); flopenl #(32) AlignedInstrRawDFlop(clk, reset | reset_q, ~StallD, FlushD ? NOP : FinalInstrRawF, NOP, InstrRawD);
// cannot have this mux as it creates a combo loop.
// This flop doesn't stall if StallF is high because we should output a nop
// when FlushD happens, even if the pipeline is also stalled.
flopr #(1) flushDLastCycleFlop(clk, reset, ~FlushD & (FlushDLastCyclen | ~StallF), FlushDLastCyclen);
mux2 #(32) InstrRawDMux(AlignedInstrRawD, NOP, ~FlushDLastCyclen, InstrRawD);
//assign InstrRawD = AlignedInstrRawD;
endmodule endmodule

59
wally-pipelined/src/cache/ICacheMem.sv vendored Normal file
View File

@ -0,0 +1,59 @@
`include "wally-config.vh"
module ICacheMem #(parameter NUMLINES=512, parameter BLOCKLEN = 256)
(
// Pipeline stuff
input logic clk,
input logic reset,
// If flush is high, invalidate the entire cache
input logic flush,
input logic [`XLEN-1:0] PCTagF, // physical address
input logic [`XLEN-1:0] PCNextIndexF, // virtual address
input logic WriteEnable,
input logic [BLOCKLEN-1:0] WriteLine,
output logic [BLOCKLEN-1:0] ReadLineF,
output logic HitF
);
// divide the address bus into sections; tag, index, and offset
localparam BLOCKBYTELEN = BLOCKLEN/8;
localparam OFFSETLEN = $clog2(BLOCKBYTELEN);
localparam INDEXLEN = $clog2(NUMLINES);
// *** BUG. `XLEN needs to be replaced with the virtual address width, S32, S39, or S48
localparam TAGLEN = `XLEN - OFFSETLEN - INDEXLEN;
logic [TAGLEN-1:0] LookupTag;
logic [NUMLINES-1:0] ValidOut;
logic DataValidBit;
// Depth is number of bits in one "word" of the memory, width is number of such words
sram1rw #(.DEPTH(BLOCKLEN), .WIDTH(NUMLINES))
cachemem (.*,
.Addr(PCNextIndexF[INDEXLEN+OFFSETLEN-1:OFFSETLEN]),
.ReadData(ReadLineF),
.WriteData(WriteLine)
);
sram1rw #(.DEPTH(TAGLEN), .WIDTH(NUMLINES))
cachetags (.*,
.Addr(PCNextIndexF[INDEXLEN+OFFSETLEN-1:OFFSETLEN]),
.ReadData(LookupTag),
.WriteData(PCTagF[`XLEN-1:INDEXLEN+OFFSETLEN])
);
// Correctly handle the valid bits
always_ff @(posedge clk, posedge reset) begin
if (reset) begin
ValidOut <= {NUMLINES{1'b0}};
end else if (flush) begin
ValidOut <= {NUMLINES{1'b0}};
end else begin
if (WriteEnable) begin
ValidOut[PCNextIndexF[INDEXLEN+OFFSETLEN-1:OFFSETLEN]] <= 1;
end
end
DataValidBit <= ValidOut[PCNextIndexF[INDEXLEN+OFFSETLEN-1:OFFSETLEN]];
end
assign HitF = DataValidBit && (LookupTag == PCTagF[`XLEN-1:INDEXLEN+OFFSETLEN]);
endmodule

110
wally-pipelined/src/cache/icache.sv vendored Normal file
View File

@ -0,0 +1,110 @@
///////////////////////////////////////////
// icache.sv
//
// Written: jaallen@g.hmc.edu 2021-03-02
// Modified:
//
// Purpose: Cache instructions for the ifu so it can access memory less often, saving cycles
//
// A component of the Wally configurable RISC-V project.
//
// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
// is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
///////////////////////////////////////////
`include "wally-config.vh"
module icache
(
// Basic pipeline stuff
input logic clk, reset,
input logic StallF, StallD,
input logic FlushD,
input logic [`XLEN-1:0] PCNextF,
input logic [`XLEN-1:0] PCPF,
// Data read in from the ebu unit
input logic [`XLEN-1:0] InstrInF,
input logic InstrAckF,
// Read requested from the ebu unit
output logic [`XLEN-1:0] InstrPAdrF,
output logic InstrReadF,
// High if the instruction currently in the fetch stage is compressed
output logic CompressedF,
// High if the icache is requesting a stall
output logic ICacheStallF,
// The raw (not decompressed) instruction that was requested
// If this instruction is compressed, upper 16 bits may be the next 16 bits or may be zeros
output logic [31:0] InstrRawD
);
// Configuration parameters
// TODO Move these to a config file
localparam integer BLOCKLEN = 256;
localparam integer NUMLINES = 512;
// Input signals to cache memory
logic FlushMem;
logic ICacheMemWriteEnable;
logic [BLOCKLEN-1:0] ICacheMemWriteData;
logic EndFetchState;
logic [`XLEN-1:0] PCTagF, PCNextIndexF;
// Output signals from cache memory
logic [31:0] ICacheMemReadData;
logic ICacheMemReadValid;
logic ICacheReadEn;
logic [BLOCKLEN-1:0] ReadLineF;
ICacheMem #(.BLOCKLEN(BLOCKLEN), .NUMLINES(NUMLINES))
cachemem(
.*,
// Stall it if the pipeline is stalled, unless we're stalling it and we're ending our stall
.flush(FlushMem),
.WriteEnable(ICacheMemWriteEnable),
.WriteLine(ICacheMemWriteData),
.ReadLineF(ReadLineF),
.HitF(ICacheMemReadValid)
);
always_comb begin
case (PCTagF[4:1])
0: ICacheMemReadData = ReadLineF[31:0];
1: ICacheMemReadData = ReadLineF[47:16];
2: ICacheMemReadData = ReadLineF[63:32];
3: ICacheMemReadData = ReadLineF[79:48];
4: ICacheMemReadData = ReadLineF[95:64];
5: ICacheMemReadData = ReadLineF[111:80];
6: ICacheMemReadData = ReadLineF[127:96];
7: ICacheMemReadData = ReadLineF[143:112];
8: ICacheMemReadData = ReadLineF[159:128];
9: ICacheMemReadData = ReadLineF[175:144];
10: ICacheMemReadData = ReadLineF[191:160];
11: ICacheMemReadData = ReadLineF[207:176];
12: ICacheMemReadData = ReadLineF[223:192];
13: ICacheMemReadData = ReadLineF[239:208];
14: ICacheMemReadData = ReadLineF[255:224];
15: ICacheMemReadData = {16'b0, ReadLineF[255:240]};
endcase
end
ICacheCntrl #(.BLOCKLEN(BLOCKLEN)) controller(.*);
// For now, assume no writes to executable memory
assign FlushMem = 1'b0;
endmodule

View File

@ -53,14 +53,30 @@ module dmem (
output logic DTLBLoadPageFaultM, DTLBStorePageFaultM, output logic DTLBLoadPageFaultM, DTLBStorePageFaultM,
output logic LoadMisalignedFaultM, LoadAccessFaultM, output logic LoadMisalignedFaultM, LoadAccessFaultM,
output logic StoreMisalignedFaultM, StoreAccessFaultM, output logic StoreMisalignedFaultM, StoreAccessFaultM,
// TLB management
// mmu management
input logic [1:0] PrivilegeModeW, input logic [1:0] PrivilegeModeW,
input logic [`XLEN-1:0] PageTableEntryM, input logic [`XLEN-1:0] PageTableEntryM,
input logic [1:0] PageTypeM, input logic [1:0] PageTypeM,
input logic [`XLEN-1:0] SATP_REGW, input logic [`XLEN-1:0] SATP_REGW,
input logic STATUS_MXR, STATUS_SUM, input logic STATUS_MXR, STATUS_SUM,
input logic DTLBWriteM, DTLBFlushM, input logic DTLBWriteM, DTLBFlushM,
output logic DTLBMissM, DTLBHitM output logic DTLBMissM, DTLBHitM,
// PMA/PMP (inside mmu) signals
input logic [31:0] HADDR, // *** replace all of these H inputs with physical adress once pma checkers have been edited to use paddr as well.
input logic [2:0] HSIZE, HBURST,
input logic HWRITE,
input logic AtomicAccessM, WriteAccessM, ReadAccessM, // execute access is hardwired to zero in this mmu because we're only working with data in the M stage.
input logic [63:0] PMPCFG01_REGW, PMPCFG23_REGW, // *** all of these come from the privileged unit, so thwyre gonna have to come over into ifu and dmem
input logic [`XLEN-1:0] PMPADDR_ARRAY_REGW [0:15], // *** this one especially has a large note attached to it in pmpchecker.
output logic PMALoadAccessFaultM, PMAStoreAccessFaultM,
output logic PMPLoadAccessFaultM, PMPStoreAccessFaultM, // *** can these be parameterized? we dont need the m stage ones for the immu and vice versa.
output logic DSquashBusAccessM,
output logic [5:0] DHSELRegionsM
); );
logic SquashSCM; logic SquashSCM;
@ -74,12 +90,18 @@ module dmem (
localparam STATE_FETCH_AMO = 2; localparam STATE_FETCH_AMO = 2;
localparam STATE_STALLED = 3; localparam STATE_STALLED = 3;
tlb #(.ENTRY_BITS(3), .ITLB(0)) dtlb(.TLBAccessType(MemRWM), .VirtualAddress(MemAdrM), logic PMPInstrAccessFaultF, PMAInstrAccessFaultF; // *** these are just so that the mmu has somewhere to put these outputs since they aren't used in dmem
// *** if you're allowed to parameterize outputs/ inputs existence, these are an easy delete.
mmu #(.ENTRY_BITS(`DTLB_ENTRY_BITS), .IMMU(0)) dmmu(.TLBAccessType(MemRWM), .VirtualAddress(MemAdrM),
.PageTableEntryWrite(PageTableEntryM), .PageTypeWrite(PageTypeM), .PageTableEntryWrite(PageTableEntryM), .PageTypeWrite(PageTypeM),
.TLBWrite(DTLBWriteM), .TLBFlush(DTLBFlushM), .TLBWrite(DTLBWriteM), .TLBFlush(DTLBFlushM),
.PhysicalAddress(MemPAdrM), .TLBMiss(DTLBMissM), .PhysicalAddress(MemPAdrM), .TLBMiss(DTLBMissM),
.TLBHit(DTLBHitM), .TLBPageFault(DTLBPageFaultM), .TLBHit(DTLBHitM), .TLBPageFault(DTLBPageFaultM),
.*);
.ExecuteAccessF(1'b0),
.SquashBusAccess(DSquashBusAccessM), .HSELRegions(DHSELRegionsM),
.*); // *** the pma/pmp instruction acess faults don't really matter here. is it possible to parameterize which outputs exist?
// Specify which type of page fault is occurring // Specify which type of page fault is occurring
assign DTLBLoadPageFaultM = DTLBPageFaultM & MemRWM[1]; assign DTLBLoadPageFaultM = DTLBPageFaultM & MemRWM[1];
@ -164,7 +186,5 @@ module dmem (
endcase // case (CurrState) endcase // case (CurrState)
end end
endmodule endmodule

View File

@ -58,7 +58,7 @@ module ahblite (
output logic [`XLEN-1:0] MMUReadPTE, output logic [`XLEN-1:0] MMUReadPTE,
output logic MMUReady, output logic MMUReady,
// Signals from PMA checker // Signals from PMA checker
input logic SquashBusAccess, input logic DSquashBusAccessM, ISquashBusAccessF,
// Signals to PMA checker (metadata of proposed access) // Signals to PMA checker (metadata of proposed access)
output logic AtomicAccessM, ExecuteAccessF, WriteAccessM, ReadAccessM, output logic AtomicAccessM, ExecuteAccessF, WriteAccessM, ReadAccessM,
// Return from bus // Return from bus
@ -147,7 +147,7 @@ module ahblite (
(ProposedNextBusState == MMUTRANSLATE); (ProposedNextBusState == MMUTRANSLATE);
// The PMA and PMP checkers can decide to squash the access // The PMA and PMP checkers can decide to squash the access
assign NextBusState = (SquashBusAccess) ? IDLE : ProposedNextBusState; assign NextBusState = (DSquashBusAccessM || ISquashBusAccessF) ? IDLE : ProposedNextBusState;
// stall signals // stall signals
// Note that we need to extend both stalls when MMUTRANSLATE goes to idle, // Note that we need to extend both stalls when MMUTRANSLATE goes to idle,

View File

@ -1,103 +1,137 @@
//////////////////////////////////////////////////////////////////////////////// module fma1(
// Block Name: fmac.v
// Author: David Harris
// Date: 11/2/1995
//
// Block Description:
// This is the top level block of a floating-point multiply/accumulate
// unit(FMAC). It instantiates the following sub-blocks:
//
// array Booth encoding, partial product generation, product summation
// expgen Exponent summation, compare, and adjust
// align Alignment shifter
// add Carry-save adder for accumulate, carry propagate adder
// lza Leading zero anticipator to control normalization shifter
// normalize Normalization shifter
// round Rounding of result
// exception Handles exceptional cases
// bypass Handles bypass of result to ReadData1E or ReadData3E inputs
// sign One bit sign handling block
// special Catch special cases (inputs = 0 / infinity / etc.)
//
// The FMAC computes FmaResultM=ReadData1E*ReadData2E+ReadData3E, rounded with the mode specified by
// RN, RZ, RM, or RP. The result is optionally bypassed back to
// the ReadData1E or ReadData3E inputs for use on the next cycle. In addition, four signals
// are produced: trap, overflow, underflow, and inexact. Trap indicates
// an infinity, NaN, or denormalized number to be handled in software;
// the other three signals are IEEE flags.
//
/////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////// input logic [63:0] ReadData1E,
module fma1(ReadData1E, ReadData2E, ReadData3E, FrmE, input logic [63:0] ReadData2E,
rE, sE, tE, bsE, killprodE, sumshiftE, sumshiftzeroE, aligncntE, aeE input logic [63:0] ReadData3E,
, xzeroE, yzeroE, zzeroE, xnanE,ynanE, znanE, xdenormE, ydenormE, zdenormE, output logic [105:0] ProdManE,
xinfE, yinfE, zinfE, nanE, prodinfE); output logic [161:0] AlignedAddendE,
///////////////////////////////////////////////////////////////////////////// output logic [12:0] ProdExpE,
output logic AddendStickyE,
output logic KillProdE,
output logic XZeroE, YZeroE, ZZeroE,
output logic XInfE, YInfE, ZInfE,
output logic XNaNE, YNaNE, ZNaNE);
input logic [63:0] ReadData1E; // input 1 logic [51:0] XMan,YMan,ZMan;
input logic [63:0] ReadData2E; // input 2 logic [10:0] XExp,YExp,ZExp;
input logic [63:0] ReadData3E; // input 3 logic XSgn,YSgn,ZSgn;
input logic [2:0] FrmE; // Rounding mode logic [12:0] AlignCnt;
output logic [12:0] aligncntE; // status flags logic [211:0] Shift;
output logic [105:0] rE; // one result of partial product sum logic XDenormE, YDenormE, ZDenormE;
output logic [105:0] sE; // other result of partial products
output logic [163:0] tE; // output logic of alignment shifter
output logic [12:0] aeE; // multiplier expoent
output logic bsE; // sticky bit of addend
output logic killprodE; // ReadData3E >> product
output logic xzeroE;
output logic yzeroE;
output logic zzeroE;
output logic xdenormE;
output logic ydenormE;
output logic zdenormE;
output logic xinfE;
output logic yinfE;
output logic zinfE;
output logic xnanE;
output logic ynanE;
output logic znanE;
output logic nanE;
output logic prodinfE;
output logic [8:0] sumshiftE;
output logic sumshiftzeroE;
// Internal nodes
// output logic [12:0] aligncntE; // shift count for alignment
logic prodof; // ReadData1E*ReadData2E out of range // split inputs into the sign bit, mantissa, and exponent for readability
assign XSgn = ReadData1E[63];
assign YSgn = ReadData2E[63];
assign ZSgn = ReadData3E[63];
assign XExp = ReadData1E[62:52];
assign YExp = ReadData2E[62:52];
assign ZExp = ReadData3E[62:52];
assign XMan = ReadData1E[51:0];
assign YMan = ReadData2E[51:0];
assign ZMan = ReadData3E[51:0];
// determine if an input is a special value
assign XNaNE = &ReadData1E[62:52] && |ReadData1E[51:0];
assign YNaNE = &ReadData2E[62:52] && |ReadData2E[51:0];
assign ZNaNE = &ReadData3E[62:52] && |ReadData3E[51:0];
assign XDenormE = ~(|ReadData1E[62:52]) && |ReadData1E[51:0];
assign YDenormE = ~(|ReadData2E[62:52]) && |ReadData2E[51:0];
assign ZDenormE = ~(|ReadData3E[62:52]) && |ReadData3E[51:0];
assign XInfE = &ReadData1E[62:52] && ~(|ReadData1E[51:0]);
assign YInfE = &ReadData2E[62:52] && ~(|ReadData2E[51:0]);
assign ZInfE = &ReadData3E[62:52] && ~(|ReadData3E[51:0]);
assign XZeroE = ~(|ReadData1E[62:0]);
assign YZeroE = ~(|ReadData2E[62:0]);
assign ZZeroE = ~(|ReadData3E[62:0]);
// Calculate the product's exponent
// - When multipliying two fp numbers, add the exponents
// - Subtract 3ff to remove one of the biases (XExp + YExp has two biases, one from each exponent)
// - Denormal numbers have an an exponent value of 1, however they are
// represented with an exponent of 0. add one if there is a denormal number
assign ProdExpE = (XZeroE|YZeroE) ? 13'b0 :
{2'b0, XExp} + {2'b0, YExp} - 13'h3ff + XDenormE + YDenormE;
// Calculate the product's mantissa
// - Add the assumed one. If the number is denormalized or zero, it does not have an assumed one.
assign ProdManE = {53'b0,~(XDenormE|XZeroE),XMan} * {53'b0,~(YDenormE|YZeroE),YMan};
// determine the shift count for alignment
// - negitive means Z is larger, so shift Z left
// - positive means the product is larger, so shift Z right
// - Denormal numbers have an an exponent value of 1, however they are
// represented with an exponent of 0. add one to the exponent if it is a denormal number
assign AlignCnt = ProdExpE - ZExp - ZDenormE;
// Alignment shifter
// Defualt Addition without shifting
// | 55'b0 | 106'b(product) | 2'b0 |
// |1'b0| addnend |
// the 1'b0 before the added is because the product's mantissa has two bits before the decimal point (xx.xxxxxxxxxx...)
always_comb
begin
// Set default values
AddendStickyE = 0;
KillProdE = 0;
// If the product is too small to effect the sum, kill the product
// | 55'b0 | 106'b(product) | 2'b0 |
// | addnend |
if ($signed(AlignCnt) <= $signed(-56)) begin
KillProdE = 1;
AlignedAddendE = {55'b0, ~(ZZeroE|ZDenormE),ZMan,2'b0};
AddendStickyE = ~(XZeroE|YZeroE);
// If the Addend is shifted left (negitive AlignCnt)
// | 55'b0 | 106'b(product) | 2'b0 |
// | addnend |
end else if($signed(AlignCnt) <= $signed(0)) begin
Shift = {55'b0, ~(ZZeroE|ZDenormE),ZMan, 104'b0} << -AlignCnt;
AlignedAddendE = Shift[211:50];
AddendStickyE = |(Shift[49:0]);
// If the Addend is shifted right (positive AlignCnt)
// | 55'b0 | 106'b(product) | 2'b0 |
// | addnend |
end else if ($signed(AlignCnt)<=$signed(105)) begin
Shift = {55'b0, ~(ZZeroE|ZDenormE),ZMan, 104'b0} >> AlignCnt;
AlignedAddendE = Shift[211:50];
AddendStickyE = |(Shift[49:0]);
// If the addend is too small to effect the addition
// - The addend has to shift two past the end of the addend to be considered too small
// - The 2 extra bits are needed for rounding
// | 55'b0 | 106'b(product) | 2'b0 |
// | addnend |
end else begin
AlignedAddendE = 162'b0;
AddendStickyE = ~ZZeroE;
end
end
// Instantiate fraction datapath
multiply multiply(.xman(ReadData1E[51:0]), .yman(ReadData2E[51:0]), .*);
align align(.zman(ReadData3E[51:0]),.*);
// Instantiate exponent datapath
expgen1 expgen1(.xexp(ReadData1E[62:52]),.yexp(ReadData2E[62:52]),.zexp(ReadData3E[62:52]),.*);
// Instantiate special case detection across datapath & exponent path
special special(.*);
// Instantiate control output logic
flag1 flag1(.*);
endmodule endmodule

View File

@ -1,104 +1,107 @@
//////////////////////////////////////////////////////////////////////////////// module fma2(
// Block Name: fmac.v
// Author: David Harris
// Date: 11/2/1995
//
// Block Description:
// This is the top level block of a floating-point multiply/accumulate
// unit(FMAC). It instantiates the following sub-blocks:
//
// array Booth encoding, partial product generation, product summation
// expgen Mxponent summation, compare, and adjust
// align Alignment shifter
// add Carry-save adder for accumulate, carry propagate adder
// lza Leading zero anticipator to control normalization shifter
// normalize Normalization shifter
// round Rounding of result
// exception Handles exceptional cases
// bypass Handles bypass of result to ReadData1M or ReadData3M input logics
// sign One bit sign handling block
// special Catch special cases (input logics = 0 / infinity / etc.)
//
// The FMAC computes FmaResultM=ReadData1M*ReadData2M+ReadData3M, rounded with the mode specified by
// RN, RZ, RM, or RP. The result is optionally bypassed back to
// the ReadData1M or ReadData3M input logics for use on the next cycle. In addition, four signals
// are produced: trap, overflow, underflow, and inexact. Trap indicates
// an infinity, NaN, or denormalized number to be handled in software;
// the other three signals are IMMM flags.
//
/////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////// input logic [63:0] ReadData1M,
module fma2(ReadData1M, ReadData2M, ReadData3M, FrmM, input logic [63:0] ReadData2M,
FmaResultM, FmaFlagsM, aligncntM, rM, sM, input logic [63:0] ReadData3M,
tM, normcntM, aeM, bsM,killprodM, input logic [2:0] FrmM,
xzeroM, yzeroM,zzeroM,xdenormM,ydenormM, input logic [105:0] ProdManM,
zdenormM,xinfM,yinfM,zinfM,xnanM,ynanM,znanM, input logic [161:0] AlignedAddendM,
nanM,sumshiftM,sumshiftzeroM,prodinfM input logic [12:0] ProdExpM,
input logic AddendStickyM,
); input logic KillProdM,
///////////////////////////////////////////////////////////////////////////// input logic [3:0] FOpCtrlM,
input logic XZeroM, YZeroM, ZZeroM,
input logic [63:0] ReadData1M; // input logic 1 input logic XInfM, YInfM, ZInfM,
input logic [63:0] ReadData2M; // input logic 2 input logic XNaNM, YNaNM, ZNaNM,
input logic [63:0] ReadData3M; // input logic 3 output logic [63:0] FmaResultM,
input logic [2:0] FrmM; // Rounding mode output logic [4:0] FmaFlagsM);
input logic [12:0] aligncntM; // status flags
input logic [105:0] rM; // one result of partial product sum
input logic [105:0] sM; // other result of partial products
input logic [163:0] tM; // output of alignment shifter
input logic [8:0] normcntM; // shift count for normalizer
input logic [12:0] aeM; // multiplier expoent
input logic bsM; // sticky bit of addend
input logic killprodM; // ReadData3M >> product
input logic prodinfM;
input logic xzeroM;
input logic yzeroM;
input logic zzeroM;
input logic xdenormM;
input logic ydenormM;
input logic zdenormM;
input logic xinfM;
input logic yinfM;
input logic zinfM;
input logic xnanM;
input logic ynanM;
input logic znanM;
input logic nanM;
input logic [8:0] sumshiftM;
input logic sumshiftzeroM;
output logic [63:0] FmaResultM; // output FmaResultM=ReadData1M*ReadData2M+ReadData3M
output logic [4:0] FmaFlagsM; // status flags logic [51:0] XMan, YMan, ZMan, WMan;
logic [10:0] XExp, YExp, ZExp, WExp;
logic XSgn, YSgn, ZSgn, WSgn, PSgn;
logic IsSub;
logic [105:0] ProdMan2;
logic [162:0] AlignedAddend2;
logic [161:0] Sum;
logic [162:0] SumTmp;
logic [12:0] SumExp;
logic [12:0] SumExpMinus1;
logic [12:0] SumExpTmp, WExpTmp;
logic [53:0] NormSum;
logic [161:0] NormSumTmp;
logic [8:0] NormCnt;
logic NormSumSticky;
logic SumZero;
logic NegSum;
logic InvZ;
logic ResultDenorm;
logic Sticky;
logic Plus1, Minus1, Plus1Tmp, Minus1Tmp;
logic Invalid,Underflow,Overflow,Inexact;
logic [8:0] DenormShift;
logic ProdInf, ProdOf, ProdUf;
logic [63:0] FmaResultTmp;
logic SubBySmallNum;
// Internal nodes // split inputs into the sign bit, mantissa, and exponent for readability
logic [163:0] sum; // output of carry prop adder assign XSgn = ReadData1M[63];
logic [53:0] v; // normalized sum, R, S bits assign YSgn = ReadData2M[63];
// logic [12:0] aligncnt; // shift count for alignment assign ZSgn = ReadData3M[63];
logic [8:0] normcnt; // shift count for normalizer
logic negsum; // negate sum
logic invz; // invert addend
logic selsum1; // select +1 mode of sum
logic negsum0; // sum +0 < 0
logic negsum1; // sum +1 < 0
logic sumzero; // sum = 0
logic infinity; // generate infinity on overflow
logic sumof; // result out of range
logic zexpsel;
logic denorm0;
logic resultdenorm;
logic inf;
logic specialsel;
logic expplus1;
logic sumuf;
logic psign;
logic sticky;
logic [12:0] de0;
logic isAdd;
assign isAdd = 1; assign XExp = ReadData1M[62:52];
assign YExp = ReadData2M[62:52];
assign ZExp = ReadData3M[62:52];
assign XMan = ReadData1M[51:0];
assign YMan = ReadData2M[51:0];
assign ZMan = ReadData3M[51:0];
// is it an FMSUB or FNMSUB instruction
assign IsSub = FOpCtrlM[0];
// Addition
// Negate Z when doing one of the following opperations:
// -prod + Z
// prod - Z
assign InvZ = IsSub ? ~(ZSgn ^ PSgn) : (ZSgn ^ PSgn);
// Choose an inverted or non-inverted addend - the one is added later
assign AlignedAddend2 = InvZ ? ~{2'b0,AlignedAddendM} : {2'b0,AlignedAddendM};
// Kill the product if the product is too small to effect the addition (determined in fma1.sv)
assign ProdMan2 = KillProdM ? 106'b0 : ProdManM;
// Do the addition
// - add one to negate if the added was inverted
// - the 2 extra bits at the begining and end are needed for rounding
assign SumTmp = AlignedAddend2 + {55'b0, ProdMan2,2'b0} + InvZ;
// Is the sum negitive
assign NegSum = SumTmp[162];
// If the sum is negitive, negate the sum.
assign Sum = NegSum ? -SumTmp[161:0] : SumTmp[161:0];
// Leading one detector
logic [8:0] i;
always_comb begin
i = 0;
while (~Sum[161-i] && $unsigned(i) <= $unsigned(9'd161)) i = i+1; // search for leading one
NormCnt = i+1; // compute shift count
end
@ -110,25 +113,163 @@ module fma2(ReadData1M, ReadData2M, ReadData3M, FrmM,
// Normalization
// Determine if the sum is zero
assign SumZero = ~(|Sum);
// Determine if the result is denormal
assign ResultDenorm = $signed(SumExpTmp)<=0 & ($signed(SumExpTmp+13'd52)>=0);
// Determine the shift needed for denormal results
assign DenormShift = ResultDenorm ? SumExpTmp-1 : 6'b0;
// Normalize the sum
assign NormSumTmp = SumZero ? 162'b0 : Sum << NormCnt+DenormShift;
assign NormSum = NormSumTmp[161:108];
// Calculate the sticky bit
assign NormSumSticky = (|NormSumTmp[107:0]);
assign Sticky = AddendStickyM | NormSumSticky;
// Determine sum's exponent
assign SumExpTmp = KillProdM ? ZExp : ProdExpM + -({5'b0, NormCnt} - 13'd56);
assign SumExp = SumZero ? 12'b0 :
ResultDenorm ? 12'b0 :
SumExpTmp;
// Instantiate fraction datapath
add add(.*);
lza lza(.*);
normalize normalize(.zexp(ReadData3M[62:52]),.*);
round round(.xman(ReadData1M[51:0]), .yman(ReadData2M[51:0]),.zman(ReadData3M[51:0]), .wman(FmaResultM[51:0]),.wsign(FmaResultM[63]),.*);
// Instantiate exponent datapath
expgen2 expgen2(.xexp(ReadData1M[62:52]),.yexp(ReadData2M[62:52]),.zexp(ReadData3M[62:52]),.wexp(FmaResultM[62:52]),.*);
// Instantiate control logic
sign sign(.xsign(ReadData1M[63]),.ysign(ReadData2M[63]),.zsign(ReadData3M[63]),.wsign(FmaResultM[63]),.*);
flag2 flag2(.xsign(ReadData1M[63]),.ysign(ReadData2M[63]),.zsign(ReadData3M[63]),.vbits(v[1:0]),.*);
// Rounding
// round to nearest even
// {NormSum[1], NormSum[0], Sticky}
// 0xx - do nothing
// 100 - tie - Plus1 if NormSum[2] = 1
// - don't add 1 if there was supposed to be a subtraction by a small number that didn't happen
// 101/110/111 - Plus1
// round to zero - do nothing
// - subtract 1 if a small number was supposed to be subtracted from the positive result
// round to -infinity - Plus1 if negitive
// - don't add 1 if there was supposed to be a subtraction by a small number that didn't happen
// - subtract 1 if a small number was supposed to be subtracted from the positive result
// round to infinity - Plus1 if positive
// - don't add 1 if there was supposed to be a subtraction by a small number that didn't happen
// - subtract 1 if a small number was supposed to be subtracted from the negitive result
// round to nearest max magnitude
// {NormSum[1], NormSum[0], Sticky}
// 0xx - do nothing
// 100 - tie - Plus1
// - don't add 1 if there was supposed to be a subtraction by a small number that didn't happen
// 101/110/111 - Plus1
// Deterimine if the result was supposed to be subtrated by a small number
assign SubBySmallNum = AddendStickyM&InvZ&~NormSumSticky;
always_comb begin
// Determine if you add 1
case (FrmM)
3'b000: Plus1Tmp = NormSum[1] & (NormSum[0] | (Sticky&~(~NormSum[0]&SubBySmallNum)) | (~NormSum[0]&~Sticky&NormSum[2]));//round to nearest even
3'b001: Plus1Tmp = 0;//round to zero
3'b010: Plus1Tmp = WSgn & ~(SubBySmallNum);//round down
3'b011: Plus1Tmp = ~WSgn & ~(SubBySmallNum);//round up
3'b100: Plus1Tmp = (NormSum[1] & (NormSum[0] | (Sticky&~(~NormSum[0]&SubBySmallNum)) | (~NormSum[0]&~Sticky)));//round to nearest max magnitude
default: Plus1Tmp = 1'bx;
endcase
// Determine if you subtract 1
case (FrmM)
3'b000: Minus1Tmp = 0;//round to nearest even
3'b001: Minus1Tmp = SubBySmallNum;//round to zero
3'b010: Minus1Tmp = ~WSgn & SubBySmallNum;//round down
3'b011: Minus1Tmp = WSgn & SubBySmallNum;//round up
3'b100: Minus1Tmp = 0;//round to nearest max magnitude
default: Minus1Tmp = 1'bx;
endcase
end
// If an answer is exact don't round
assign Plus1 = Sticky | (|NormSum[1:0]) ? Plus1Tmp : 0;
assign Minus1 = Sticky | (|NormSum[1:0]) ? Minus1Tmp : 0;
// Compute rounded result
assign {WExpTmp, WMan} = {SumExp, NormSum[53:2]} + Plus1 - Minus1;
assign WExp = WExpTmp[10:0];
// Sign calculation
// Calculate the product's sign
assign PSgn = XSgn ^ YSgn;
// Determine the sign if the sum is zero
// if product underflows then use psign
// otherwise
// if cancelation then 0 unless round to -inf
// otherwise psign
assign zerosign = Underflow ? PSgn :
(IsSub ? (PSgn^ZSgn ? PSgn : FrmM == 3'b010) :
(PSgn^ZSgn ? FrmM == 3'b010 : PSgn));
// is the result negitive
// if p - z is the Sum negitive
// if -p + z is the Sum positive
// if -p - z then the Sum is negitive
assign resultsgn = InvZ&ZSgn&NegSum | InvZ&PSgn&~NegSum | (ZSgn&PSgn);
assign WSgn = SumZero ? zerosign : resultsgn;
// Select the result
assign FmaResultTmp = XNaNM ? {XSgn, XExp, 1'b1,XMan[50:0]} :
YNaNM ? {YSgn, YExp, 1'b1,YMan[50:0]} :
ZNaNM ? {ZSgn, ZExp, 1'b1,ZMan[50:0]} :
Invalid ? {WSgn, 11'h7ff, 1'b1, 51'b0} : // has to be before inf
XInfM ? {PSgn, XExp, XMan} :
YInfM ? {PSgn, YExp, YMan} :
ZInfM ? {ZSgn^IsSub, ZExp, ZMan} :
Overflow ? {WSgn, 11'h7ff, 52'b0} :
Underflow ? {WSgn, 63'b0} :
KillProdM ? ReadData3M - (Minus1&AddendStickyM) + (Plus1&AddendStickyM): // has to be after Underflow
{WSgn,WExp,WMan};
// Negate the result if FNMADD or FNSUB instruction
assign FmaResultM[63] = FOpCtrlM[1] ? ~FmaResultTmp[63] : FmaResultTmp[63];
assign FmaResultM[62:0] = FmaResultTmp[62:0];
// Set Invalid flag for following cases:
// 1) Inf - Inf
// 2) 0 * Inf
// 3) any input is a signaling NaN
assign ProdOf = (ProdExpM >= 2047 && ~ProdExpM[12]);
assign ProdInf = ProdOf && ~XNaNM && ~YNaNM;
assign Invalid = (XNaNM&~XMan[51]) | (YNaNM&~YMan[51]) | (ZNaNM&~ZMan[51]) | ((XInfM || YInfM || ProdInf) & ZInfM & (XSgn ^ YSgn ^ ZSgn)) | (XZeroM & YInfM) | (YZeroM & XInfM);
// Set Overflow flag if the number is too big to be represented
assign Overflow = WExpTmp >= 2047 & ~WExpTmp[12];
// Set Underflow flag if the number is too small to be represented and isn't denormalized
assign ProdUf = KillProdM & ZZeroM;
assign Underflow = (WExpTmp[12] & ~ResultDenorm) | ProdUf;
// Set Inexact flag if the result is diffrent from what would be outputed given infinite precision
assign Inexact = Sticky|Overflow|Underflow | (|NormSum[1:0]);
// Combine flags - FMA can't set the Divide by zero flag
assign FmaFlagsM = {Invalid, 1'b0, Overflow, Underflow, Inexact};
endmodule endmodule

View File

@ -1 +1,170 @@
c3f000200003fffe 0000000000000001 001ffffffffffffe 80cffc400007fffd 80cffc400007fffc Wrong FmaResultM= -64 ydenorm 1119653 cce008007fffffff 7fe6e0fac3dc6e26 401ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 28027
c03fffffffffc800 7fdfffffffffe000 37f07ffffffffffc fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 44043
c7f000ffffffffef 7fefffffffffde00 4e1ffffffffffe7f fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 107106
c7f00000dffffffe 7fe0000000000000 8000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 238237
ffdf0000001fffff 7feffffffffffffe 7fe0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 310309
c79ff80003fffffe 7feffc0000003ffe 2bd0020000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 426425
ffeffffeffc00000 3fffffffffffffff 8000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 436435
d16ff800007fffff 7fe0000000000000 c000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 517516
d10ffffffff3fffe 7feffffffffffffe b9d07f0000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 519518
442ff9fffffffffe ffefffffffffffff 3ff0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 553552
c34f24b48d2af3e7 7fef7fe000000000 800ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 577576
7fdfffffff8000ff c3f0100000000002 39300dfffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 593592
ffe00007fffffdfe 4340000000000001 ffd34131592163f6 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 654653
4b98eba3e512fb7b ffe84639040d967a 42c00000010001fe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 683682
ffed83a6b2e656b1 7fe0000000000001 0010000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 796795
7fd5220b51609cf6 c030000000001020 7fdfbfffffffffdf fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 903902
c3d6eb6dede43198 7feffffffffffffe 3a6008000000000f fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1078076
c1f02000001fffff 7fe0000000000001 e8f000000040000f fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1285283
c1cdfffbffffffff 7fe0000000000001 bca0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1355353
43447336acaf7bd8 ffeffffffffffffe 0010000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1391389
4010000000fff7ff ffe0000000000000 7fdfffc000003ffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1528526
ffe0000002000003 47fffc00000007ff 93b0040000002000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1597595
4060000200000400 ffe0000000000000 7fe0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1598596
fe7007fffdffffff 7fdffffffffff03e 001ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1631629
4000000000000000 ffe0000000000001 3fdffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1738736
4000000000000000 ffeffffffffffffe 4263dd4adb450db9 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1740738
40200001ffc00000 ffe0000000000000 3fdfcfffffffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1807805
400ffffffffffffe ffd00013fffffffe 40200000100001ff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1941939
400ffffffffffffe ffe0000000000001 c00fffe003ffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 1947945
7fe00000080000fe bfffffffffffffff 3fd002000000003f fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2006003
4010000000000000 ffe0000000000001 7feffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2018015
4010000000000000 ffeffffffffffffe bf7ffffffff80001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2020017
43ffffd000000000 ffe0000000000000 613ffffffffffe1e fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2087084
c1fb6efe117a3ae3 7fefffffffffffff 43c0000001effffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2123120
ffdfffffc0000000 7fe0000002002000 3fffffffffbfff80 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2147144
401ffffffffffffe ffe0000000000001 7c300040000000ff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2227224
4340000000000000 ffe0000000000001 bfeffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2297294
c0f0000000203fff 7fefffffffffffff c921fffffffffefe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2402399
7fedffffffdfffff c7f0400000000008 401ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2406403
434fffffffffffff ffd0000008fffffe c03fffffffffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2419416
41dfffffffe00003 ffe0000000000001 3ff0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2436433
c1f0000000037fff 7fdffffffff7ffc0 3fdffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2451448
ffebfffffffffbff 4010000000000001 bf20001fffffffe0 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2465462
ffe000020001ffff 7fdfdffff7ffffff 41d000083fffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2471468
434ffffffffffffe ffe0000000000001 bf1fffffc00003ff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2506503
7fe0000000000000 c1c0000001ffffbf 0000000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 2538535
7fe0000000000000 c1d264933e9e988c 3ca0000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2565562
7fe0000000000000 c00fffffffffffff bcaffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2567564
7fe0000000000000 c010000000000001 403400003fffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2569566
7fe0000000000001 c3d0bfffffffffff a9817e19c25e6ffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2590587
7fe0000000000001 c1c01feffffffffe 3fe0000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2592589
7fe0000000000001 f860000ffbfffffe 4000000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2619616
7fe0000000000001 c1e29f751d0db106 41dff88000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2626623
7fe0000000000001 c010000000000001 800ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 2639636
7fe0000000000001 c340000000000000 41e9bfbd1705ab74 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2641638
7fe0000000000001 c1ffffc0007fffff c0e00000003f8000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2644641
7fefffffffffffff c3cfff000003ffff c01fffffefbfffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2653650
c00000ffc0000000 7fefffffffff81ff 00199d0888644678 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2660657
7fefffffffffffff c01fffe00000003e 3cdedfffffffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2671668
7fefffffffffffff c7e00800ffffffff c010000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2682679
7fefffffffffffff c3f50270323fdbca 3fe0000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2691688
7fefffffffffffff c06f000000000006 8010000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2700697
7fefffffffffffff bff0000000000001 001ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2702699
7fefffffffffffff bffffffffffffffe 47edd848c981ea6a fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2704701
7fefffffffffffff d6f0007fbfffffff 380ff8000000001f fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2707704
7fefffffffffffff c167c6ca402625fe ffe0000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2709706
7fefffffffffffff c340000000000000 7feffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2711708
7fefffffffffffff c34fffffffffffff c1a3cdb48240da83 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2713710
7feffffffffffffe c01580f1a3e9c31d 3d258f8ba280bed4 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2725722
7feffffffffffffe ffd800001fffffff bfd0000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2727724
7feffffffffffffe c27a98a4d75fad64 0000000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 2736733
c01ffffffe03ffff 7fd00000000c0000 c00ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2739736
7feffffffffffffe c3f01ffffff00000 4340000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2745742
7feffffffffffffe c0550d69ccececd4 403ffffff83fffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2761758
7feffffffffffffe c00fffffffffffff b81080ffffffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2776773
7feffffffffffffe c0020ec4bd7f8123 403894684b0415af fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2779776
7feffffffffffffe c34ffffffffffffe 401ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2783780
7feffffffffffffe ffe0000000000001 43c0000000000bfe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2785782
7feffffffffffffe c1f000000003ff7f 40017ffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2788785
bf9ffffffd800000 7fefffffffffffff ffefffffffbfffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2960957
e8d01e2c59865900 7fe05fffffffffff c34ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 2964961
ffd917679344f70e 401fffffffffffff c000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3094090
4470000023ffffff ffe0000000000001 b802000001ffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3204200
43627f4abb7a5c8e ffefffffffffffff 0010000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3274270
c1c0000820000000 7feffffffff8001f 402000100000007f fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3332328
c1cd41643238b450 7feffffffffffffe 3f4012189596a55a fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3519515
c80ea7921c438451 7fe008000000007e 424153696dc450d3 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3552548
4f000fffffffffff ffefffffffffffff 4010000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3553549
7fe1868cfb076bc1 c34000000000037f b7effffc003ffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3719715
c3fff9fffffffffe 7fe0000000000000 3d6000008000000e fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3726722
43f007ffbfffffff ffefffffffffffff 43dffffeffffffbf fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3762758
7fdfffdfffffffbe c01fffffffffffff 3fd0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 3895891
ffeefffffffffff7 43e0003ffffeffff b7f000001fdfffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4125120
4800002000000007 ffe0000000000000 3ff0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4319314
43f856a5096bfc0d ffeffffffffffffe 3fd0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4391386
c009c2b9147e606c 7fe0000002007fff bfa004001ffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4440435
4030008000003fff ffe0000000000000 b810eaddea941d3f fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4528523
67affffff8000006 f3016e70e2a6bd2f c1edddf29e459b21 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4548543
ffe07ffbffffffff 5026589203bb88d1 401ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4586581
43dffffc00000003 ffe0000000000000 8000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4598593
ffdfffffff800003 4010000000000001 c290000080000002 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4627622
ffd001fffffffbff 4010000000000001 8000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4697692
bffffffffffffffe 7fefffffffffffff 3d30040000200000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4704699
c000000000000000 7fefffffffffffff bfeffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4774769
c000000000000000 7fe9d625d7f2ee96 380ffeffffffc000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4797792
41efffffbfffdfff ffe0000000000000 bbf0000003f80000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4807802
fcf00000000003e0 7fdfffffffc02000 bfeffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4892887
c00ffffffffffffe 7fe0000000000000 001ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4981976
c00ffffffffffffe 7fefffffffffffff 4020e8f734a930e7 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 4983978
ffeffffc01fffffe 43d0000000000000 3806864c983757ae fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5030024
41b0000000010007 ffe0000000000001 0010000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5157151
c3e413dc0ee29162 7fefffffffffffff 8000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5193187
c01ffffffffffffe 7fe0000000000000 401ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5261255
c01ffffffffffffe 7fefffffffffffff c1c177d35a8a07ad fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5263257
c340000000000000 7feffffffffffffe 3ffffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5333327
c34ff0000003fffe 7fefffffffffffff c0101442690e84e3 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5402396
c340000000000001 7fe41774eee28bfa 37efffff000000ff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5437431
c34fffffffffffff 7fe0000000000000 4010008001fffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5470464
c34ffffffffffffe 7fe0000000000000 bcaffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5540534
c34ffffffffffffe 7feffffffffffffe c7e6b68e99fe64db fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5542536
ffe0000000000000 41effffff7fffffe 2a7000207fffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5590584
ffe0000000000000 40b00000000008ff 4013ac1788ee2681 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5599593
ffe0000000000000 4010000000000000 3fdffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5603597
ffe0000000000000 401fffffffffffff 0012000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5605599
ffe0000000000000 45e00007fff7ffff 9c80852a49e348a6 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5608602
ffe0000000000000 41e6d2bd893fa49f 0000000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 5610604
ffe0000000000000 7feffffffffffffe 800ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 5612606
ffe0000000000000 4804ecddd4dee74f 9700000101fffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5617611
ffe0000000000000 47e0400000000100 4340000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5619613
ffe0000000000000 41d0000000001fff 800007ffffffdfff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 5626620
ffe0000000000001 4c7ffffffff87fff 3fbfdffffffffff7 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5662656
ffe0000000000001 401ffffffffffffe 001ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5675669
ffe0000000000001 4340000000000001 48700003fffefffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5677671
ffe0000000000001 4000f2f5230ef1a6 382efffffeffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5689683
ffe0000000000001 407b2a20706ca02f bcc8eea3de85c218 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5707701
41efdffffffbfffe ffe0000000000001 bca0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5715709
ffe0000000000001 43e000000000ffff 4340000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5718712
ffedffffffff7fff 7f500000001fffff 469cefa7e05db8e7 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5728722
ffefffffffffffff 3fffffffffffffff bcaffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5738732
ffefffffffffffff 4000000000000001 800ffffffdffe000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 5740734
ffefffffffffffff 7fe0000000000000 3fdffffffffffe1f fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5749743
ffd44208deea7d5b 7fdffffcffffffff caf0000000007fff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5764758
ffefffffffffffff 43cffff6ffffffff 47ffba85ed27c05e fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5779773
ffeffffffffffffe 40b0000fffffffc0 bfd0000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5799793
ffeffffffffffffe 43ea49f9e3cf97b4 0000000000000001 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 5808802
ffeffffffffffffe 4000000000000001 800ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z zdenorm ovrflw FmaResultM=-inf 5810804
ffeffffffffffffe 4010000000000000 bc800001ffffffe0 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5812806
ffeffffffffffffe 7fe0000000000000 c34ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5819813
ffeffffffffffffe 7feffffffffffffe c1efff801fffffff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5821815
ffdfffffc0007ffe 4340000000000001 8000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5886880
c4a000001ffeffff 7fe0000000000000 b80fc03ffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5888882
ffdfffff00000040 48f00001bfffffff c00ffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5910904
c37ffffffffffbf0 7fd1800000000000 bfa7e7cad560a3d0 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 5912906
c1700000000007f7 7feffffffffffffe 3f6ff7ffffffefff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6240233
c3fffffffdfe0000 7fe0000000000000 c34fff6000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6447440
400ffffdfffff7fe ffefffffffffffff 41de000000007ffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6483476
4030000000004020 ffe88b9c477c3a97 ffe007ffff000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6575568
7fe00807ffffffff c1e0000000007fe0 bfeffffffffffffe fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6676669
ffdfc00000000800 7fe0000000000000 bcffffffffffefef fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6726719
7feffffeffffbfff c34ffffffffffffe c000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6760753
42bff00000000010 ffefffffffffffff c3003a94038a1ec3 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6762755
c3c00ffffffffeff 7feddda224891f86 43d0aa9335103e61 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6782775
c08ff80000000400 7fe0000000000001 3ff0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6796789
c07fffdfffffffbe 7feffffffffffffe 474ffffffdffff80 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6798791
c01fffffeffff7ff 7fd0080080000000 bff26df7cf61cdd5 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6827820
c7effff000000004 7fe0000008000fff 4770000007ffbfff fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 6863856
7fe85e6f4033d7dd c000000000000000 bfe0000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 7031023
c1f732bc454b0563 7fe0000000000001 8000000000000000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 7076068
ffe000000fffffbe 401ffffffffffffe b80d2116944eef72 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 7141133
ffd0002000001fff 40e00003ffffefff c03fffffffe80000 fff0000000000000 ffefffffffffffff Wrong FmaResultM= z ovrflw FmaResultM=-inf 7242234

Binary file not shown.

View File

@ -26,13 +26,13 @@ void main() {
char ans[81]; char ans[81];
char flags[3]; char flags[3];
int FrmE; int FrmE;
long stop = 1119653; long stop = 5587581;
int debug = 1; int debug = 0;
//my_string = (char *) malloc (nbytes + 1); //my_string = (char *) malloc (nbytes + 1);
//bytes_read = getline (&my_string, &nbytes, stdin); //bytes_read = getline (&my_string, &nbytes, stdin);
for(n=0; n < 305; n++) {//613 for 10000 for(n=0; n < 1000; n++) {//613 for 10000
if(getline(&ln,&nbytes,fp) < 0 || feof(fp)) break; if(getline(&ln,&nbytes,fp) < 0 || feof(fp)) break;
if(k == stop && debug == 1) break; if(k == stop && debug == 1) break;
k++; k++;

File diff suppressed because it is too large Load Diff

View File

@ -11,26 +11,25 @@ module tb;
wire [4:0] FmaFlagsM; wire [4:0] FmaFlagsM;
wire [12:0] aligncntE; // status flags wire [12:0] aligncntE; // status flags
wire [105:0] rE; // one result of partial product sum wire [105:0] ProdManE; // other result of partial products
wire [105:0] sE; // other result of partial products wire [161:0] AlignedAddendE; // wire of alignment shifter
wire [163:0] tE; // wire of alignment shifter
wire [8:0] normcntE; // shift count for normalizer wire [8:0] normcntE; // shift count for normalizer
wire [12:0] aeE; // multiplier expoent wire [12:0] ProdExpE; // multiplier expoent
wire bsE; // sticky bit of addend wire AddendStickyE; // sticky bit of addend
wire killprodE; // ReadData3E >> product wire KillProdE; // ReadData3E >> product
wire prodofE; // ReadData1E*ReadData2E out of range wire prodofE; // ReadData1E*ReadData2E out of range
wire xzeroE; wire XZeroE;
wire yzeroE; wire yzeroE;
wire zzeroE; wire zzeroE;
wire xdenormE; wire XDenormE;
wire ydenormE; wire YDenormE;
wire zdenormE; wire ZDenormE;
wire xinfE; wire XInfE;
wire yinfE; wire YInfE;
wire zinfE; wire ZInfE;
wire xnanE; wire XNaNE;
wire ynanE; wire YNaNE;
wire znanE; wire ZNaNE;
wire nanE; wire nanE;
wire [8:0] sumshiftE; wire [8:0] sumshiftE;
wire sumshiftzeroE; wire sumshiftzeroE;
@ -45,16 +44,16 @@ reg ansnan;
reg [105:0] s; // partial product 2 reg [105:0] s; // partial product 2
reg [51:0] xnorm; reg [51:0] xnorm;
reg [51:0] ynorm; reg [51:0] ynorm;
wire [3:0] FOpCtrlM;
assign FOpCtrlM = 4'b0;
localparam period = 20; localparam period = 20;
fma1 UUT1(.*); fma1 UUT1(.*);
fma2 UUT2(.ReadData1M(ReadData1E), .ReadData2M(ReadData2E), .ReadData3M(ReadData3E), .FrmM(FrmE), fma2 UUT2(.ReadData1M(ReadData1E), .ReadData2M(ReadData2E), .ReadData3M(ReadData3E), .FrmM(FrmE), .ProdManM(ProdManE),
.aligncntM(aligncntE), .rM(rE), .sM(sE), .AlignedAddendM(AlignedAddendE), .ProdExpM(ProdExpE), .AddendStickyM(AddendStickyE),.KillProdM(KillProdE),
.tM(tE), .normcntM(normcntE), .aeM(aeE), .bsM(bsE),.killprodM(killprodE), .XZeroM(XZeroE),.YZeroM(YZeroE),.ZZeroM(ZZeroE),.XInfM(XInfE),.YInfM(YInfE),.ZInfM(ZInfE),.XNaNM(XNaNE),.YNaNM(YNaNE),.ZNaNM(ZNaNE), .*);
.xzeroM(xzeroE), .yzeroM(yzeroE),.zzeroM(zzeroE),.xdenormM(xdenormE),.ydenormM(ydenormE),
.zdenormM(zdenormE),.xinfM(xinfE),.yinfM(yinfE),.zinfM(zinfE),.xnanM(xnanE),.ynanM(ynanE),.znanM(znanE),
.nanM(nanE),.sumshiftM(sumshiftE),.sumshiftzeroM(sumshiftzeroE), .prodinfM(prodinfE), .*);
initial initial

View File

@ -1,65 +0,0 @@
////////////////////////////////////////////////////////////////////////////////
//
// Block Name: add.v
// Author: David Harris
// Date: 11/12/1995
//
// Block Description:
// This block performs the addition of the product and addend. It also
// contains logic necessary to adjust the signs for effective subtracts
// and negative results.
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
module add(rM, sM, tM, sum,
negsum, invz, selsum1, negsum0, negsum1, killprodM);
////////////////////////////////////////////////////////////////////////////////
input logic [105:0] rM; // partial product 1
input logic [105:0] sM; // partial product 2
input logic [163:0] tM; // aligned addend
input logic invz; // invert addend
input logic selsum1; // select +1 mode of compound adder
input logic killprodM; // z >> product
input logic negsum; // Negate sum
output logic [163:0] sum; // sum
output logic negsum0; // sum was negative in +0 mode
output logic negsum1; // sum was negative in +1 mode
// Internal nodes
wire [105:0] r2; // partial product possibly zeroed out
wire [105:0] s2; // partial product possibly zeroed out
wire [164:0] t2; // addend after inversion if necessary
wire [164:0] sum0; // sum of compound adder +0 mode
wire [164:0] sum1; // sum of compound adder +1 mode
wire [163:0] prodshifted; // sum of compound adder +1 mode
wire [164:0] tmp; // sum of compound adder +1 mode
// Invert addend if z'sM sign is diffrent from the product'sM sign
assign t2 = invz ? ~{1'b0,tM} : {1'b0,tM};
// Zero out product if Z >> product or product really should be
assign r2 = killprodM ? 106'b0 : rM;
assign s2 = killprodM ? 106'b0 : sM;
//***replace this with a more structural cpa that synthisises better
// Compound adder
// Consists of 3:2 CSA followed by long compound CPA
//assign prodshifted = killprodM ? 0 : {56'b0, r2+s2, 2'b0};
//assign tmp = ({{57{r2[105]}},r2, 2'b0} + {{57{s2[105]}},s2, 2'b0});
assign sum0 = t2 + 164'b0 + {57'b0, r2+s2, 2'b0};
assign sum1 = t2 + 164'b1 + {57'b0, r2+s2, 2'b0}; // +1 from invert of z above
// Check sign bits in +0/1 modes
assign negsum0 = sum0[164];
assign negsum1 = sum1[164];
// Mux proper result (+Oil mode and inversion) using 4:1 mux
//assign sumzero = |sum;
assign sum = selsum1 ? (negsum ? -sum1[163:0] : sum1[163:0]) : (negsum ? -sum0[163:0] : sum0[163:0]);
endmodule

View File

@ -1,88 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
// Block Name: align.v
// Author: David Harris
// Date: 11/2/1995
//
// Block Description:
// This block implements the alignment shifter. It is responsible for
// adjusting the fraction portion of the addend relative to the fraction
// produced in the multiplier array.
//
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
module align(zman, aligncntE, xzeroE, yzeroE, zzeroE, zdenormE, tE, bsE,
killprodE, sumshiftE, sumshiftzeroE);
/////////////////////////////////////////////////////////////////////////////
input logic [51:0] zman; // Fraction of addend z;
input logic [12:0] aligncntE; // amount to shift
input logic xzeroE; // Input X = 0
input logic yzeroE; // Input Y = 0
input logic zzeroE; // Input Z = 0
input logic zdenormE; // Input Z is denormalized
output logic [163:0] tE; // aligned addend (54 bits left of bpt)
output logic bsE; // sticky bit of addend
output logic killprodE; // Z >> product
output logic [8:0] sumshiftE;
output logic sumshiftzeroE;
// Internal nodes
reg [215:0] shift; // aligned addend from shifter
logic [12:0] tmp;
always_comb
begin
// Default to clearing sticky bits
bsE = 0;
// And to using product as primary operand in adder I exponent gen
killprodE = xzeroE | yzeroE;
// d = aligncntE
// p = 53
//***try reducing this hardware to use one shifter
if ($signed(aligncntE) <= $signed(-(13'd105))) begin //d<=-2p+1
//product ancored case with saturated shift
sumshiftE = 163; // 3p+4
sumshiftzeroE = 0;
shift = {1'b1,zman,163'b0} >> sumshiftE;
tE = zzeroE ? 0 : {shift[215:52]};
bsE = |(shift[51:0]);
end else if($signed(aligncntE) <= $signed(13'd2)) begin // -2p+1<d<=2
// product ancored or cancellation
tmp = 13'd57-aligncntE;
sumshiftE = tmp[8:0]; // p + 2 - d
sumshiftzeroE = 0;
shift = {~zdenormE,zman,163'b0} >> sumshiftE;
tE = zzeroE ? 0 : {shift[215:52]};
bsE = |(shift[51:0]);
end else if ($signed(aligncntE)<=$signed(13'd55)) begin // 2 < d <= p+2
// addend ancored case
// used to be 56 \/ somthing doesn't seem right too many typos
tmp = 13'd57-aligncntE;
sumshiftE = tmp[8:0];
sumshiftzeroE = 0;
shift = {~zdenormE,zman, 163'b0} >> sumshiftE;
tE = zzeroE ? 0 : {shift[215:52]};
bsE = |(shift[51:0]);
end else begin // d >= p+3
// addend anchored case with saturated shift
sumshiftE = 0;
sumshiftzeroE = 1;
shift = {~zdenormE,zman, 163'b0} >> sumshiftE;
tE = zzeroE ? 0 : {shift[215:52]};
bsE = |(shift[51:0]);
killprodE = 1;
end
end
endmodule

View File

@ -1,53 +0,0 @@
module booth(xExt, choose, add1, e, pp);
/////////////////////////////////////////////////////////////////////////////
input logic [53:0] xExt; // multiplicand xExt
input logic [2:0] choose; // bits needed to choose which encoding
output logic [1:0] add1; // do you add 1
output logic e;
output logic [54:0] pp; // the resultant encoding
logic [54:0] temp;
logic [53:0] negx;
//logic temp;
assign negx = ~xExt;
always_comb
case (choose)
3'b000 : pp = 55'b0; // 0
3'b001 : pp = {1'b0, xExt}; // 1
3'b010 : pp = {1'b0, xExt}; // 1
3'b011 : pp = {xExt, 1'b0}; // 2
3'b100 : pp = {negx, 1'b0}; // -2
3'b101 : pp = {1'b1, negx}; // -1
3'b110 : pp = {1'b1, negx}; // -1
3'b111 : pp = '1; // -0
endcase
always_comb
case (choose)
3'b000 : e = 0; // 0
3'b001 : e = 0; // 1
3'b010 : e = 0; // 1
3'b011 : e = 0; // 2
3'b100 : e = 1; // -2
3'b101 : e = 1; // -1
3'b110 : e = 1; // -1
3'b111 : e = 1; // -0
endcase
// assign add1 = (choose[2] == 1'b1) ? ((choose[1:0] == 2'b11) ? 1'b0 : 1'b1) : 1'b0;
// assign add1 = choose[2];
always_comb
case (choose)
3'b000 : add1 = 2'b0; // 0
3'b001 : add1 = 2'b0; // 1
3'b010 : add1 = 2'b0; // 1
3'b011 : add1 = 2'b0; // 2
3'b100 : add1 = 2'b10; // -2
3'b101 : add1 = 2'b1; // -1
3'b110 : add1 = 2'b1; // -1
3'b111 : add1 = 2'b1; // -0
endcase
endmodule

View File

@ -1,93 +0,0 @@
// //***breaks lint with warnings like: %Warning-UNOPTFLAT: Example path: src/fpu/compressors.sv:37: ASSIGNW
// //%Warning-UNOPTFLAT: Example path: src/fpu/compressors.sv:32: wallypipelinedsoc.hart.fpu.fma1.multiply.genblk5[0].add4.cout
// module add3comp2(a, b, c, carry, sum);
// /////////////////////////////////////////////////////////////////////////////
// //look into diffrent implementations of the compressors?
// parameter BITS = 4;
// input logic [BITS-1:0] a;
// input logic [BITS-1:0] b;
// input logic [BITS-1:0] c;
// output logic [BITS-1:0] carry;
// output logic [BITS-1:0] sum;
// genvar i;
// generate
// for(i= 0; i<BITS; i=i+1) begin
// sng3comp2 add0(a[i], b[i], c[i], carry[i], sum[i]);
// end
// endgenerate
// endmodule
// module add4comp2(a, b, c, d, carry, sum);
// /////////////////////////////////////////////////////////////////////////////
// parameter BITS = 4;
// input logic [BITS-1:0] a;
// input logic [BITS-1:0] b;
// input logic [BITS-1:0] c;
// input logic [BITS-1:0] d;
// output logic [BITS:0] carry;
// output logic [BITS-1:0] sum;
// logic [BITS-1:0] cout;
// logic carryTmp;
// genvar i;
// sng4comp2 add0(a[0], b[0], c[0], d[0], 1'b0, cout[0], carry[0], sum[0]);
// generate
// for(i= 1; i<BITS-1; i=i+1) begin
// sng4comp2 add1(a[i], b[i], c[i], d[i], cout[i-1], cout[i], carry[i], sum[i]);
// end
// endgenerate
// sng4comp2 add2(a[BITS-1], b[BITS-1], c[BITS-1], d[BITS-1], cout[BITS-2], cout[BITS-1], carryTmp, sum[BITS-1]);
// assign carry[BITS-1] = carryTmp & cout[BITS-1];
// assign carry[BITS] = carryTmp ^ cout[BITS-1];
// endmodule
// module sng3comp2(a, b, c, carry, sum);
// /////////////////////////////////////////////////////////////////////////////
// //look into diffrent implementations of the compressors?
// input logic a;
// input logic b;
// input logic c;
// output logic carry;
// output logic sum;
// logic axorb;
// assign axorb = a ^ b;
// assign sum = axorb ^ c;
// assign carry = axorb ? c : a;
// endmodule
// module sng4comp2(a, b, c, d, cin, cout, carry, sum);
// /////////////////////////////////////////////////////////////////////////////
// //look into pass gate 4:2 counters?
// input logic a;
// input logic b;
// input logic c;
// input logic d;
// input logic cin;
// output logic cout;
// output logic carry;
// output logic sum;
// logic TmpSum;
// sng3comp2 add1(.carry(cout), .sum(TmpSum),.*);
// sng3comp2 add2(.a(TmpSum), .b(d), .c(cin), .*);
// endmodule

View File

@ -1,90 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
// Block Name: expgen.v
// Author: David Harris
// Date: 11/2/1995
//
// Block Description:
// This block implements the exponent path of the FMAC. It performs the
// following operations:
//
// 1) Compute exponent of multiply.
// 2) Compare multiply and add exponents to generate alignment shift count
// 3) Adjust exponent based on normalization
// 4) Increment exponent based on postrounding renormalization
//
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
module expgen1(xexp, yexp, zexp, xzeroE, yzeroE,
xdenormE, ydenormE, zdenormE,
aligncntE, prodof, aeE);
/////////////////////////////////////////////////////////////////////////////
input logic [62:52] xexp; // Exponent of multiplicand x
input logic [62:52] yexp; // Exponent of multiplicand y
input logic [62:52] zexp; // Exponent of addend z
input logic xdenormE; // Z is denorm
input logic ydenormE; // Z is denorm
input logic zdenormE; // Z is denorm
input logic xzeroE; // Z is denorm
input logic yzeroE; // Z is denorm
output logic [12:0] aligncntE; // shift count for alignment shifter
output logic prodof; // X*Y exponent out of bounds
output logic [12:0] aeE; //exponent of multiply
// Internal nodes
wire [12:0] aligncnt0; // Shift count for alignment
wire [12:0] aligncnt1; // Shift count for alignment
wire [12:0] be; // Exponent of multiply
wire [12:0] de1; // Normalized exponent
wire [12:0] de; // Normalized exponent
wire [10:0] infinityres; // Infinity or max number
wire [10:0] nanres; // Nan propagated or generated
wire [10:0] specialres; // Exceptional case result
// Compute exponent of multiply
// Note that the exponent does not have to be incremented on a postrounding
// normalization of X because the mantissa was already increased. Report
// if exponent is out of bounds
assign aeE = xzeroE|yzeroE ? 0 : {2'b0,xexp} + {2'b0,yexp} - 13'd1023;
assign prodof = (aeE > 2046 && ~aeE[12]);
// Compute alignment shift count
// Adjust for postrounding normalization of Z.
// This should not increas the critical path because the time to
// check if a round overflows is shorter than the actual round and
// is masked by the bypass mux and two 10 bit adder delays.
// assign aligncnt0 = - 1 + ~xdenormE + ~ydenormE - ~zdenormE;
// assign aligncnt1 = - 1 + {12'b0,~xdenormE} + {12'b0,~ydenormE} - {12'b0,~zdenormE};
assign aligncntE = {2'b0,zexp} -aeE - 1 + {12'b0,~xdenormE} + {12'b0,~ydenormE} - {12'b0,~zdenormE};
//assign aligncntE = zexp -aeE - 1 + ~xdenormE + ~ydenormE - ~zdenormE;
//assign aligncntE = zexp - aeE;// KEP use all of aeE
// Select exponent (usually from product except in case of huge addend)
//assign be = zexpsel ? zexp : aeE;
// Adjust exponent based on normalization
// A compound adder takes care of the case of post-rounding normalization
// requiring an extra increment
//assign de0 = sumzero ? 13'b0 : be + normcnt + 2;
// assign de1 = sumzero ? 13'b0 : be + normcnt + 2;
// bypass occurs before rounding or taking early results
//assign wbypass = de0[10:0];
// In a non-critical special mux, we combine the early result from other
// FPU blocks with the results of exceptional conditions. Overflow
// produces either infinity or the largest finite number, depending on the
// rounding mode. NaNs are propagated or generated.
endmodule

View File

@ -1,108 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
// Block Name: expgen.v
// Author: David Harris
// Date: 11/2/1995
//
// Block Description:
// This block implements the exponent path of the FMAC. It performs the
// following operations:
//
// 1) Compute exponent of multiply.
// 2) Compare multiply and add exponents to generate alignment shift count
// 3) Adjust exponent based on normalization
// 4) Increment exponent based on postrounding renormalization
//
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
module expgen2(xexp, yexp, zexp,
sumzero, resultdenorm, infinity,
FmaFlagsM, inf, expplus1,
nanM, de0, xnanM, ynanM, znanM, specialsel,
wexp,
sumof, sumuf);
/////////////////////////////////////////////////////////////////////////////
input logic [62:52] xexp; // Exponent of multiplicand x
input logic [62:52] yexp; // Exponent of multiplicand y
input logic [62:52] zexp; // Exponent of addend z
input logic sumzero; // sum exactly equals zero
input logic resultdenorm; // postnormalize rounded result
input logic infinity; // generate infinity on overflow
input logic [4:0] FmaFlagsM; // Result invalid
input logic inf; // Some input is infinity
input logic nanM; // Some input is NaN
input logic [12:0] de0; // X is NaN NaN
input logic xnanM; // X is NaN
input logic ynanM; // Y is NaN
input logic znanM; // Z is NaN
input logic expplus1;
input logic specialsel; // Select special result
output logic [62:52] wexp; // Exponent of result
output logic sumof; // X*Y+Z exponent out of bounds
output logic sumuf; // X*Y+Z exponent underflows
// Internal nodes
wire [12:0] aligncnt0; // Shift count for alignment
wire [12:0] aligncnt1; // Shift count for alignment
wire [12:0] be; // Exponent of multiply
wire [12:0] de1; // Normalized exponent
wire [12:0] de; // Normalized exponent
wire [10:0] infinityres; // Infinity or max number
wire [10:0] nanres; // Nan propagated or generated
wire [10:0] specialres; // Exceptional case result
// Compute exponent of multiply
// Note that the exponent does not have to be incremented on a postrounding
// normalization of X because the mantissa was already increased. Report
// if exponent is out of bounds
// Select exponent (usually from product except in case of huge addend)
//assign be = zexpsel ? zexp : ae;
// Adjust exponent based on normalization
// A compound adder takes care of the case of post-rounding normalization
// requiring an extra increment
//assign de0 = sumzero ? 13'b0 : be + normcnt + 2;
// assign de1 = sumzero ? 13'b0 : be + normcnt + 2;
// check for exponent out of bounds after add
assign de = resultdenorm | sumzero ? 0 : de0;
assign sumof = ~de[12] && de > 2046;
assign sumuf = de == 0 && ~sumzero && ~resultdenorm;
// bypass occurs before rounding or taking early results
//assign wbypass = de0[10:0];
// In a non-critical special mux, we combine the early result from other
// FPU blocks with the results of exceptional conditions. Overflow
// produces either infinity or the largest finite number, depending on the
// rounding mode. NaNs are propagated or generated.
assign specialres = FmaFlagsM[4] | nanM ? nanres : // invalid
FmaFlagsM[2] ? infinityres : //overflow
inf ? 11'b11111111111 :
FmaFlagsM[1] ? 11'b0 : 11'bx; //underflow
assign infinityres = infinity ? 11'b11111111111 : 11'b11111111110;
// IEEE 754-2008 section 6.2.3 states:
// "If two or more inputs are NaN, then the payload of the resulting NaN should be
// identical to the payload of one of the input NaNs if representable in the destination
// format. This standard does not specify which of the input NaNs will provide the payload."
assign nanres = xnanM ? xexp : (ynanM ? yexp : (znanM? zexp : 11'b11111111111));
// A mux selects the early result from other FPU blocks or the
// normalized FMAC result. Special cases are also detected.
assign wexp = specialsel ? specialres[10:0] : de[10:0] + {10'b0,expplus1};
endmodule

View File

@ -57,12 +57,13 @@ module fctrl (
always_comb begin always_comb begin
//checks all but FMA/store/load //checks all but FMA/store/load
IllegalFPUInstr2D = 0; IllegalFPUInstr2D = 0;
FDivStartD = 1'b0;
if(OpD == 7'b1010011) begin if(OpD == 7'b1010011) begin
casez(Funct7D) casez(Funct7D)
//compare //compare
7'b10100?? : FResultSelD = 3'b001; 7'b10100?? : FResultSelD = 3'b001;
//div/sqrt //div/sqrt
7'b0?011?? : FResultSelD = 3'b000; 7'b0?011?? : begin FResultSelD = 3'b000; FDivStartD = 1'b1; end
//add/sub //add/sub
7'b0000??? : FResultSelD = 3'b100; 7'b0000??? : FResultSelD = 3'b100;
//mult //mult
@ -129,8 +130,6 @@ module fctrl (
//this value is used enough to be shorthand //this value is used enough to be shorthand
//if op is div/sqrt - start div/sqrt
assign FDivStartD = ~|FResultSelD; // is FResultSelD == 000
//operation control for each fp operation //operation control for each fp operation
//has to be expanded over standard to account for //has to be expanded over standard to account for
@ -168,8 +167,8 @@ module fctrl (
//fma/mult //fma/mult
// fmadd = ?000 // fmadd = ?000
// fmsub = ?001 // fmsub = ?001
// fnmadd = ?010 // fnmsub = ?010 -(a*b)+c
// fnmsub = ?011 // fnmadd = ?011 -(a*b)-c
// fmul = ?100 // fmul = ?100
// {?, is mul, is negitive, is sub} // {?, is mul, is negitive, is sub}
3'b010 : begin FOpCtrlD = {1'b0, OpD[4:2]}; FInput2UsedD = 1'b1; FInput3UsedD = ~OpD[4]; end 3'b010 : begin FOpCtrlD = {1'b0, OpD[4:2]}; FInput2UsedD = 1'b1; FInput3UsedD = ~OpD[4]; end

View File

@ -1,34 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
// Block Name: flag.v
// Author: David Harris
// Date: 12/6/1995
//
// Block Description:
// This block generates the flags: invalid, overflow, underflow, inexact.
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
module flag1(xnanE, ynanE, znanE, prodof, prodinfE, nanE);
/////////////////////////////////////////////////////////////////////////////
input logic xnanE; // X is NaN
input logic ynanE; // Y is NaN
input logic znanE; // Z is NaN
input logic prodof; // X*Y overflows exponent
output logic nanE; // Some source is NaN
// Internal nodes
output logic prodinfE; // X*Y larger than max possible
// If any input logic is NaN, propagate the NaN
assign nanE = xnanE || ynanE || znanE;
// Generate infinity checks
assign prodinfE = prodof && ~xnanE && ~ynanE;
endmodule

View File

@ -1,80 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
// Block Name: flag.v
// Author: David Harris
// Date: 12/6/1995
//
// Block Description:
// This block generates the flags: invalid, overflow, underflow, inexact.
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
module flag2(xsign,ysign,zsign, xnanM, ynanM, znanM, xinfM, yinfM, zinfM, sumof, sumuf,
xzeroM, yzeroM, zzeroM, vbits, killprodM,
inf, nanM, FmaFlagsM,sticky,prodinfM);
/////////////////////////////////////////////////////////////////////////////
input logic xnanM; // X is NaN
input logic ynanM; // Y is NaN
input logic znanM; // Z is NaN
input logic xsign; // Sign of z
input logic ysign; // Sign of z
input logic zsign; // Sign of z
input logic sticky; // X is Inf
input logic prodinfM;
input logic xinfM; // X is Inf
input logic yinfM; // Y is Inf
input logic zinfM; // Z is Inf
input logic sumof; // X*Y + z underflows exponent
input logic sumuf; // X*Y + z underflows exponent
input logic xzeroM; // x = 0
input logic yzeroM; // y = 0
input logic zzeroM; // y = 0
input logic killprodM;
input logic [1:0] vbits; // R and S bits of result
output logic inf; // Some source is Inf
input logic nanM; // Some source is NaN
output logic [4:0] FmaFlagsM;
// Internal nodes
logic suminf;
// Same with infinity (inf - inf and O * inf don't propagate inf
// but it's ok becaue illegal op takes higher precidence)
assign inf= xinfM || yinfM || zinfM || suminf;//KEP added suminf
//assign inf= xinfM || yinfM || zinfM;//original
assign suminf = sumof && ~xnanM && ~ynanM && ~znanM;
// Set the overflow flag for the following cases:
// 1) Rounded multiply result would be out of bounds
// 2) Rounded add result would be out of bounds
assign FmaFlagsM[2] = suminf && ~inf;
// Set the underflow flag for the following cases:
// 1) Any input logic is denormalized
// 2) output logic would be denormalized or smaller
assign FmaFlagsM[1] = (sumuf && ~inf && ~prodinfM && ~nanM) || (killprodM & zzeroM & ~(yzeroM | xzeroM));
// Set the inexact flag for the following cases:
// 1) Multiplication inexact
// 2) Addition inexact
// One of these cases occurred if the R or S bit is set
assign FmaFlagsM[0] = (vbits[0] || vbits[1] ||sticky || suminf) && ~(inf || nanM);
// Set invalid flag for following cases:
// 1) Inf - Inf
// 2) 0 * Inf
// 3) output logic = NaN (this is not part of the IEEE spec, only 486 proj)
assign FmaFlagsM[4] = (xinfM || yinfM || prodinfM) && zinfM && (xsign ^ ysign ^ zsign) ||
xzeroM && yinfM || yzeroM && xinfM;// KEP remove case 3) above
assign FmaFlagsM[3] = 0; // divide by zero flag
endmodule

View File

@ -1,103 +1,141 @@
//////////////////////////////////////////////////////////////////////////////// module fma1(
// Block Name: fmac.v
// Author: David Harris
// Date: 11/2/1995
//
// Block Description:
// This is the top level block of a floating-point multiply/accumulate
// unit(FMAC). It instantiates the following sub-blocks:
//
// array Booth encoding, partial product generation, product summation
// expgen Exponent summation, compare, and adjust
// align Alignment shifter
// add Carry-save adder for accumulate, carry propagate adder
// lza Leading zero anticipator to control normalization shifter
// normalize Normalization shifter
// round Rounding of result
// exception Handles exceptional cases
// bypass Handles bypass of result to FInput1E or FInput3E inputs
// sign One bit sign handling block
// special Catch special cases (inputs = 0 / infinity / etc.)
//
// The FMAC computes FmaResultM=FInput1E*FInput2E+FInput3E, rounded with the mode specified by
// RN, RZ, RM, or RP. The result is optionally bypassed back to
// the FInput1E or FInput3E inputs for use on the next cycle. In addition, four signals
// are produced: trap, overflow, underflow, and inexact. Trap indicates
// an infinity, NaN, or denormalized number to be handled in software;
// the other three signals are IEEE flags.
//
/////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////// input logic [63:0] FInput1E,
module fma1(FInput1E, FInput2E, FInput3E, FrmE, input logic [63:0] FInput2E,
rE, sE, tE, bsE, killprodE, sumshiftE, sumshiftzeroE, aligncntE, aeE input logic [63:0] FInput3E,
, xzeroE, yzeroE, zzeroE, xnanE,ynanE, znanE, xdenormE, ydenormE, zdenormE, input logic [3:0] FOpCtrlE,
xinfE, yinfE, zinfE, nanE, prodinfE); output logic [105:0] ProdManE,
///////////////////////////////////////////////////////////////////////////// output logic [161:0] AlignedAddendE,
output logic [12:0] ProdExpE,
output logic AddendStickyE,
output logic KillProdE,
output logic XZeroE, YZeroE, ZZeroE,
output logic XInfE, YInfE, ZInfE,
output logic XNaNE, YNaNE, ZNaNE);
input logic [63:0] FInput1E; // input 1 logic [51:0] XMan,YMan,ZMan;
input logic [63:0] FInput2E; // input 2 logic [10:0] XExp,YExp,ZExp;
input logic [63:0] FInput3E; // input 3 logic XSgn,YSgn,ZSgn;
input logic [2:0] FrmE; // Rounding mode logic [12:0] AlignCnt;
output logic [12:0] aligncntE; // status flags logic [211:0] Shift;
output logic [105:0] rE; // one result of partial product sum logic XDenormE, YDenormE, ZDenormE;
output logic [105:0] sE; // other result of partial products logic [63:0] FInput3E2;
output logic [163:0] tE; // output logic of alignment shifter
output logic [12:0] aeE; // multiplier expoent
output logic bsE; // sticky bit of addend
output logic killprodE; // FInput3E >> product
output logic xzeroE;
output logic yzeroE;
output logic zzeroE;
output logic xdenormE;
output logic ydenormE;
output logic zdenormE;
output logic xinfE;
output logic yinfE;
output logic zinfE;
output logic xnanE;
output logic ynanE;
output logic znanE;
output logic nanE;
output logic prodinfE;
output logic [8:0] sumshiftE;
output logic sumshiftzeroE;
// Internal nodes // Set addend to zero if FMUL instruction
assign FInput3E2 = FOpCtrlE[2] ? 64'b0 : FInput3E;
// output logic [12:0] aligncntE; // shift count for alignment // split inputs into the sign bit, mantissa, and exponent for readability
assign XSgn = FInput1E[63];
assign YSgn = FInput2E[63];
assign ZSgn = FInput3E2[63];
assign XExp = FInput1E[62:52];
assign YExp = FInput2E[62:52];
assign ZExp = FInput3E2[62:52];
assign XMan = FInput1E[51:0];
assign YMan = FInput2E[51:0];
assign ZMan = FInput3E2[51:0];
logic prodof; // FInput1E*FInput2E out of range
// determine if an input is a special value
assign XNaNE = &FInput1E[62:52] && |FInput1E[51:0];
assign YNaNE = &FInput2E[62:52] && |FInput2E[51:0];
assign ZNaNE = &FInput3E2[62:52] && |FInput3E2[51:0];
assign XDenormE = ~(|FInput1E[62:52]) && |FInput1E[51:0];
assign YDenormE = ~(|FInput2E[62:52]) && |FInput2E[51:0];
assign ZDenormE = ~(|FInput3E2[62:52]) && |FInput3E2[51:0];
assign XInfE = &FInput1E[62:52] && ~(|FInput1E[51:0]);
assign YInfE = &FInput2E[62:52] && ~(|FInput2E[51:0]);
assign ZInfE = &FInput3E2[62:52] && ~(|FInput3E2[51:0]);
assign XZeroE = ~(|FInput1E[62:0]);
assign YZeroE = ~(|FInput2E[62:0]);
assign ZZeroE = ~(|FInput3E2[62:0]);
// Calculate the product's exponent
// - When multipliying two fp numbers, add the exponents
// - Subtract 3ff to remove one of the biases (XExp + YExp has two biases, one from each exponent)
// - Denormal numbers have an an exponent value of 1, however they are
// represented with an exponent of 0. add one if there is a denormal number
assign ProdExpE = (XZeroE|YZeroE) ? 13'b0 :
{2'b0, XExp} + {2'b0, YExp} - 13'h3ff + {12'b0, XDenormE} + {12'b0, YDenormE};
// Calculate the product's mantissa
// - Add the assumed one. If the number is denormalized or zero, it does not have an assumed one.
assign ProdManE = {53'b0,~(XDenormE|XZeroE),XMan} * {53'b0,~(YDenormE|YZeroE),YMan};
// determine the shift count for alignment
// - negitive means Z is larger, so shift Z left
// - positive means the product is larger, so shift Z right
// - Denormal numbers have an an exponent value of 1, however they are
// represented with an exponent of 0. add one to the exponent if it is a denormal number
assign AlignCnt = ProdExpE - {2'b0, ZExp} - {12'b0, ZDenormE};
// Alignment shifter
// Defualt Addition without shifting
// | 55'b0 | 106'b(product) | 2'b0 |
// |1'b0| addnend |
// the 1'b0 before the added is because the product's mantissa has two bits before the decimal point (xx.xxxxxxxxxx...)
always_comb
begin
// Set default values
AddendStickyE = 0;
KillProdE = 0;
// If the product is too small to effect the sum, kill the product
// | 55'b0 | 106'b(product) | 2'b0 |
// | addnend |
if ($signed(AlignCnt) <= $signed(-13'd56)) begin
KillProdE = 1;
AlignedAddendE = {107'b0, ~(ZZeroE|ZDenormE),ZMan,2'b0};
AddendStickyE = ~(XZeroE|YZeroE);
// If the Addend is shifted left (negitive AlignCnt)
// | 55'b0 | 106'b(product) | 2'b0 |
// | addnend |
end else if($signed(AlignCnt) <= $signed(13'd0)) begin
Shift = {55'b0, ~(ZZeroE|ZDenormE),ZMan, 104'b0} << -AlignCnt;
AlignedAddendE = Shift[211:50];
AddendStickyE = |(Shift[49:0]);
// If the Addend is shifted right (positive AlignCnt)
// | 55'b0 | 106'b(product) | 2'b0 |
// | addnend |
end else if ($signed(AlignCnt)<=$signed(13'd105)) begin
Shift = {55'b0, ~(ZZeroE|ZDenormE),ZMan, 104'b0} >> AlignCnt;
AlignedAddendE = Shift[211:50];
AddendStickyE = |(Shift[49:0]);
// If the addend is too small to effect the addition
// - The addend has to shift two past the end of the addend to be considered too small
// - The 2 extra bits are needed for rounding
// | 55'b0 | 106'b(product) | 2'b0 |
// | addnend |
end else begin
AlignedAddendE = 162'b0;
AddendStickyE = ~ZZeroE;
end
end
// Instantiate fraction datapath
multiply multiply(.xman(FInput1E[51:0]), .yman(FInput2E[51:0]), .*);
align align(.zman(FInput3E[51:0]),.*);
// Instantiate exponent datapath
expgen1 expgen1(.xexp(FInput1E[62:52]),.yexp(FInput2E[62:52]),.zexp(FInput3E[62:52]),.*);
// Instantiate special case detection across datapath & exponent path
special special(.*);
// Instantiate control output logic
flag1 flag1(.*);
endmodule endmodule

View File

@ -1,107 +1,110 @@
//////////////////////////////////////////////////////////////////////////////// module fma2(
// Block Name: fmac.v
// Author: David Harris
// Date: 11/2/1995
//
// Block Description:
// This is the top level block of a floating-point multiply/accumulate
// unit(FMAC). It instantiates the following sub-blocks:
//
// array Booth encoding, partial product generation, product summation
// expgen Mxponent summation, compare, and adjust
// align Alignment shifter
// add Carry-save adder for accumulate, carry propagate adder
// lza Leading zero anticipator to control normalization shifter
// normalize Normalization shifter
// round Rounding of result
// exception Handles exceptional cases
// bypass Handles bypass of result to FInput1M or FInput3M input logics
// sign One bit sign handling block
// special Catch special cases (input logics = 0 / infinity / etc.)
//
// The FMAC computes FmaResultM=FInput1M*FInput2M+FInput3M, rounded with the mode specified by
// RN, RZ, RM, or RP. The result is optionally bypassed back to
// the FInput1M or FInput3M input logics for use on the next cycle. In addition, four signals
// are produced: trap, overflow, underflow, and inexact. Trap indicates
// an infinity, NaN, or denormalized number to be handled in software;
// the other three signals are IMMM flags.
//
/////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////// input logic [63:0] FInput1M,
module fma2(FInput1M, FInput2M, FInput3M, FrmM, input logic [63:0] FInput2M,
FmaResultM, FmaFlagsM, aligncntM, rM, sM, input logic [63:0] FInput3M,
tM, normcntM, aeM, bsM,killprodM, input logic [2:0] FrmM,
xzeroM, yzeroM,zzeroM,xdenormM,ydenormM, input logic [105:0] ProdManM,
zdenormM,xinfM,yinfM,zinfM,xnanM,ynanM,znanM, input logic [161:0] AlignedAddendM,
nanM,sumshiftM,sumshiftzeroM,prodinfM input logic [12:0] ProdExpM,
input logic AddendStickyM,
); input logic KillProdM,
///////////////////////////////////////////////////////////////////////////// input logic [3:0] FOpCtrlM,
input logic XZeroM, YZeroM, ZZeroM,
input logic [63:0] FInput1M; // input logic 1 input logic XInfM, YInfM, ZInfM,
input logic [63:0] FInput2M; // input logic 2 input logic XNaNM, YNaNM, ZNaNM,
input logic [63:0] FInput3M; // input logic 3 output logic [63:0] FmaResultM,
input logic [2:0] FrmM; // Rounding mode output logic [4:0] FmaFlagsM);
input logic [12:0] aligncntM; // status flags
input logic [105:0] rM; // one result of partial product sum
input logic [105:0] sM; // other result of partial products
input logic [163:0] tM; // output of alignment shifter
input logic [8:0] normcntM; // shift count for normalizer
input logic [12:0] aeM; // multiplier expoent
input logic bsM; // sticky bit of addend
input logic killprodM; // FInput3M >> product
input logic prodinfM;
input logic xzeroM;
input logic yzeroM;
input logic zzeroM;
input logic xdenormM;
input logic ydenormM;
input logic zdenormM;
input logic xinfM;
input logic yinfM;
input logic zinfM;
input logic xnanM;
input logic ynanM;
input logic znanM;
input logic nanM;
input logic [8:0] sumshiftM;
input logic sumshiftzeroM;
output logic [63:0] FmaResultM; // output FmaResultM=FInput1M*FInput2M+FInput3M
output logic [4:0] FmaFlagsM; // status flags logic [51:0] XMan, YMan, ZMan, WMan;
logic [10:0] XExp, YExp, ZExp, WExp;
logic XSgn, YSgn, ZSgn, WSgn, PSgn;
logic [105:0] ProdMan2;
logic [162:0] AlignedAddend2;
logic [161:0] Sum;
logic [162:0] SumTmp;
logic [12:0] SumExp;
logic [12:0] SumExpMinus1;
logic [12:0] SumExpTmp, SumExpTmpMinus1, WExpTmp;
logic [53:0] NormSum;
logic [161:0] NormSumTmp;
logic [8:0] NormCnt;
logic NormSumSticky;
logic SumZero;
logic NegSum;
logic InvZ;
logic ResultDenorm;
logic Sticky;
logic Plus1, Minus1, Plus1Tmp, Minus1Tmp;
logic Invalid,Underflow,Overflow,Inexact;
logic [8:0] DenormShift;
logic ProdInf, ProdOf, ProdUf;
logic [63:0] FmaResultTmp;
logic SubBySmallNum;
logic [63:0] FInput3M2;
logic ZeroSgn, ResultSgn;
// Set addend to zero if FMUL instruction
assign FInput3M2 = FOpCtrlM[2] ? 64'b0 : FInput3M;
// split inputs into the sign bit, mantissa, and exponent for readability
assign XSgn = FInput1M[63];
assign YSgn = FInput2M[63];
assign ZSgn = FInput3M2[63]^FOpCtrlM[0]; //Negate Z if subtraction
assign XExp = FInput1M[62:52];
assign YExp = FInput2M[62:52];
assign ZExp = FInput3M2[62:52];
assign XMan = FInput1M[51:0];
assign YMan = FInput2M[51:0];
assign ZMan = FInput3M2[51:0];
// Internal nodes
logic [163:0] sum; // output of carry prop adder
logic [53:0] v; // normalized sum, R, S bits
// logic [12:0] aligncnt; // shift count for alignment
logic [8:0] normcnt; // shift count for normalizer
logic negsum; // negate sum
logic invz; // invert addend
logic selsum1; // select +1 mode of sum
logic negsum0; // sum +0 < 0
logic negsum1; // sum +1 < 0
logic sumzero; // sum = 0
logic infinity; // generate infinity on overflow
logic sumof; // result out of range
logic zexpsel;
logic denorm0;
logic resultdenorm;
logic inf;
logic specialsel;
logic expplus1;
logic sumuf;
logic psign;
logic sticky;
logic [12:0] de0;
logic isAdd;
logic wsign;
logic [51:0] wman;
logic [10:0] wexp;
assign isAdd = 1; // Calculate the product's sign
// Negate product's sign if FNMADD or FNMSUB
assign PSgn = XSgn ^ YSgn ^ FOpCtrlM[1];
// Addition
// Negate Z when doing one of the following opperations:
// -prod + Z
// prod - Z
assign InvZ = ZSgn ^ PSgn;
// Choose an inverted or non-inverted addend - the one is added later
assign AlignedAddend2 = InvZ ? ~{1'b0,AlignedAddendM} : {1'b0,AlignedAddendM};
// Kill the product if the product is too small to effect the addition (determined in fma1.sv)
assign ProdMan2 = KillProdM ? 106'b0 : ProdManM;
// Do the addition
// - add one to negate if the added was inverted
// - the 2 extra bits at the begining and end are needed for rounding
assign SumTmp = AlignedAddend2 + {55'b0, ProdMan2,2'b0} + {162'b0, InvZ};
// Is the sum negitive
assign NegSum = SumTmp[162];
// If the sum is negitive, negate the sum.
assign Sum = NegSum ? -SumTmp[161:0] : SumTmp[161:0];
// Leading one detector
logic [8:0] i;
always_comb begin
i = 0;
while (~Sum[161-i] && $unsigned(i) <= $unsigned(9'd161)) i = i+1; // search for leading one
NormCnt = i+1; // compute shift count
end
@ -113,27 +116,160 @@ module fma2(FInput1M, FInput2M, FInput3M, FrmM,
// Normalization
// Determine if the sum is zero
assign SumZero = ~(|Sum);
// Determine if the result is denormal
assign ResultDenorm = $signed(SumExpTmp)<=0 & ($signed(SumExpTmp+13'd52)>=0);
// Determine the shift needed for denormal results
assign SumExpTmpMinus1 = SumExpTmp-1;
assign DenormShift = ResultDenorm ? SumExpTmpMinus1[8:0] : 9'b0;
// Normalize the sum
assign NormSumTmp = SumZero ? 162'b0 : Sum << NormCnt+DenormShift;
assign NormSum = NormSumTmp[161:108];
// Calculate the sticky bit
assign NormSumSticky = (|NormSumTmp[107:0]);
assign Sticky = AddendStickyM | NormSumSticky;
// Determine sum's exponent
assign SumExpTmp = KillProdM ? {2'b0, ZExp} : ProdExpM + -({4'b0, NormCnt} - 13'd56);
assign SumExp = SumZero ? 13'b0 :
ResultDenorm ? 13'b0 :
SumExpTmp;
// Instantiate fraction datapath
add add(.*);
lza lza(.*);
normalize normalize(.zexp(FInput3M[62:52]),.*);
round round(.xman(FInput1M[51:0]), .yman(FInput2M[51:0]),.zman(FInput3M[51:0]),.*);
// Instantiate exponent datapath
expgen2 expgen2(.xexp(FInput1M[62:52]),.yexp(FInput2M[62:52]),.zexp(FInput3M[62:52]),.*);
// Instantiate control logic
sign sign(.xsign(FInput1M[63]),.ysign(FInput2M[63]),.zsign(FInput3M[63]),.*);
flag2 flag2(.xsign(FInput1M[63]),.ysign(FInput2M[63]),.zsign(FInput3M[63]),.vbits(v[1:0]),.*);
assign FmaResultM = {wsign,wexp,wman};
// Rounding
// round to nearest even
// {NormSum[1], NormSum[0], Sticky}
// 0xx - do nothing
// 100 - tie - Plus1 if NormSum[2] = 1
// - don't add 1 if there was supposed to be a subtraction by a small number that didn't happen
// 101/110/111 - Plus1
// round to zero - do nothing
// - subtract 1 if a small number was supposed to be subtracted from the positive result
// round to -infinity - Plus1 if negitive
// - don't add 1 if there was supposed to be a subtraction by a small number that didn't happen
// - subtract 1 if a small number was supposed to be subtracted from the positive result
// round to infinity - Plus1 if positive
// - don't add 1 if there was supposed to be a subtraction by a small number that didn't happen
// - subtract 1 if a small number was supposed to be subtracted from the negitive result
// round to nearest max magnitude
// {NormSum[1], NormSum[0], Sticky}
// 0xx - do nothing
// 100 - tie - Plus1
// - don't add 1 if there was supposed to be a subtraction by a small number that didn't happen
// 101/110/111 - Plus1
// Deterimine if the result was supposed to be subtrated by a small number
assign SubBySmallNum = AddendStickyM&InvZ&~NormSumSticky;
always_comb begin
// Determine if you add 1
case (FrmM)
3'b000: Plus1Tmp = NormSum[1] & (NormSum[0] | (Sticky&~(~NormSum[0]&SubBySmallNum)) | (~NormSum[0]&~Sticky&NormSum[2]));//round to nearest even
3'b001: Plus1Tmp = 0;//round to zero
3'b010: Plus1Tmp = WSgn & ~(SubBySmallNum);//round down
3'b011: Plus1Tmp = ~WSgn & ~(SubBySmallNum);//round up
3'b100: Plus1Tmp = (NormSum[1] & (NormSum[0] | (Sticky&~(~NormSum[0]&SubBySmallNum)) | (~NormSum[0]&~Sticky)));//round to nearest max magnitude
default: Plus1Tmp = 1'bx;
endcase
// Determine if you subtract 1
case (FrmM)
3'b000: Minus1Tmp = 0;//round to nearest even
3'b001: Minus1Tmp = SubBySmallNum;//round to zero
3'b010: Minus1Tmp = ~WSgn & SubBySmallNum;//round down
3'b011: Minus1Tmp = WSgn & SubBySmallNum;//round up
3'b100: Minus1Tmp = 0;//round to nearest max magnitude
default: Minus1Tmp = 1'bx;
endcase
end
// If an answer is exact don't round
assign Plus1 = Sticky | (|NormSum[1:0]) ? Plus1Tmp : 1'b0;
assign Minus1 = Sticky | (|NormSum[1:0]) ? Minus1Tmp : 1'b0;
// Compute rounded result
assign {WExpTmp, WMan} = {SumExp, NormSum[53:2]} - {64'b0, Minus1} + {64'b0, Plus1};
assign WExp = WExpTmp[10:0];
// Sign calculation
// Determine the sign if the sum is zero
// if product underflows then use psign
// otherwise
// if cancelation then 0 unless round to -inf
// otherwise psign
assign ZeroSgn = Underflow & ~ResultDenorm ? PSgn :
(PSgn^ZSgn ? FrmM == 3'b010 : PSgn);
// is the result negitive
// if p - z is the Sum negitive
// if -p + z is the Sum positive
// if -p - z then the Sum is negitive
assign ResultSgn = InvZ&(ZSgn)&NegSum | InvZ&PSgn&~NegSum | ((ZSgn)&PSgn);
assign WSgn = SumZero ? ZeroSgn : ResultSgn;
// Select the result
assign FmaResultM = XNaNM ? {XSgn, XExp, 1'b1,XMan[50:0]} :
YNaNM ? {YSgn, YExp, 1'b1,YMan[50:0]} :
ZNaNM ? {ZSgn, ZExp, 1'b1,ZMan[50:0]} :
Invalid ? {WSgn, 11'h7ff, 1'b1, 51'b0} : // has to be before inf
XInfM ? {PSgn, XExp, XMan} :
YInfM ? {PSgn, YExp, YMan} :
ZInfM ? {ZSgn, ZExp, ZMan} :
Overflow ? {WSgn, 11'h7ff, 52'b0} :
Underflow & ~ResultDenorm ? {WSgn, 63'b0} - {63'b0, (Minus1&AddendStickyM)} + {63'b0, (Plus1&AddendStickyM)} :
KillProdM ? {ZSgn, ZExp, ZMan} - {63'b0, (Minus1&AddendStickyM)} + {63'b0, (Plus1&AddendStickyM)}: // has to be after Underflow
{WSgn,WExp,WMan};
// Set Invalid flag for following cases:
// 1) Inf - Inf
// 2) 0 * Inf
// 3) any input is a signaling NaN
assign ProdOf = (ProdExpM >= 2047 && ~ProdExpM[12]);
assign ProdInf = ProdOf && ~XNaNM && ~YNaNM;
assign Invalid = (XNaNM&~XMan[51]) | (YNaNM&~YMan[51]) | (ZNaNM&~ZMan[51]) | ((XInfM || YInfM || ProdInf) & ZInfM & (XSgn ^ YSgn ^ ZSgn)) | (XZeroM & YInfM) | (YZeroM & XInfM);
// Set Overflow flag if the number is too big to be represented
assign Overflow = WExpTmp >= 2047 & ~WExpTmp[12];
// Set Underflow flag if the number is too small to be represented in normal numbers
assign ProdUf = KillProdM & ZZeroM;
assign Underflow = SumExp[12] | ProdUf;
// Set Inexact flag if the result is diffrent from what would be outputed given infinite precision
assign Inexact = Sticky|Overflow| (|NormSum[1:0]);
// Combine flags
// - FMA can't set the Divide by zero flag
// - Don't set the underflow flag if the result is exact
assign FmaFlagsM = {Invalid, 1'b0, Overflow, Underflow & Inexact, Inexact};
endmodule endmodule

View File

@ -23,8 +23,8 @@
// //
// `timescale 1ps/1ps // `timescale 1ps/1ps
module fpdiv (FDivSqrtDoneM, FDivResultM, FDivFlagsM, DivDenormM, FInput1E, FInput2E, FrmE, DivOpType, FmtE, DivOvEn, DivUnEn, module fpdiv (FDivSqrtDoneE, FDivResultE, FDivFlagsE, DivDenormE, FInput1E, FInput2E, FrmE, DivOpType, FmtE, DivOvEn, DivUnEn,
FDivStartE, reset, clk, DivBusyM); FDivStartE, reset, clk, FDivBusyE);
input [63:0] FInput1E; // 1st input operand (A) input [63:0] FInput1E; // 1st input operand (A)
input [63:0] FInput2E; // 2nd input operand (B) input [63:0] FInput2E; // 2nd input operand (B)
@ -38,11 +38,11 @@ module fpdiv (FDivSqrtDoneM, FDivResultM, FDivFlagsM, DivDenormM, FInput1E, FInp
input reset; input reset;
input clk; input clk;
output [63:0] FDivResultM; // Result of operation output [63:0] FDivResultE; // Result of operation
output [4:0] FDivFlagsM; // IEEE exception flags output [4:0] FDivFlagsE; // IEEE exception flags
output DivDenormM; // DivDenormM on input or output output DivDenormE; // DivDenormE on input or output
output FDivSqrtDoneM; output FDivSqrtDoneE;
output DivBusyM; output FDivBusyE;
supply1 vdd; supply1 vdd;
supply0 vss; supply0 vss;
@ -101,7 +101,7 @@ module fpdiv (FDivSqrtDoneM, FDivResultM, FDivFlagsM, DivDenormM, FInput1E, FInp
convert_inputs_div divconv1 (Float1, Float2, FInput1E, FInput2E, DivOpType, FmtE); convert_inputs_div divconv1 (Float1, Float2, FInput1E, FInput2E, DivOpType, FmtE);
// Test for exceptions and return the "Invalid Operation" and // Test for exceptions and return the "Invalid Operation" and
// "Denormalized" Input FDivFlagsM. The "sel_inv" is used in // "Denormalized" Input FDivFlagsE. The "sel_inv" is used in
// the third pipeline stage to select the result. Also, op1_Norm // the third pipeline stage to select the result. Also, op1_Norm
// and op2_Norm are one if FInput1E and FInput2E are not zero or denormalized. // and op2_Norm are one if FInput1E and FInput2E are not zero or denormalized.
// sub is one if the effective operation is subtaction. // sub is one if the effective operation is subtaction.
@ -138,9 +138,9 @@ module fpdiv (FDivSqrtDoneM, FDivResultM, FDivFlagsM, DivDenormM, FInput1E, FInp
load_regr, load_regs, FmtE, DivOpType, exp_odd); load_regr, load_regs, FmtE, DivOpType, exp_odd);
// FSM : control divider // FSM : control divider
fsm control (FDivSqrtDoneM, load_rega, load_regb, load_regc, load_regd, fsm control (FDivSqrtDoneE, load_rega, load_regb, load_regc, load_regd,
load_regr, load_regs, sel_muxa, sel_muxb, sel_muxr, load_regr, load_regs, sel_muxa, sel_muxb, sel_muxr,
clk, reset, FDivStartE, DivOpType, DivBusyM); clk, reset, FDivStartE, DivOpType, FDivBusyE);
// Round the mantissa to a 52-bit value, with the leading one // Round the mantissa to a 52-bit value, with the leading one
// removed. The rounding units also handles special cases and // removed. The rounding units also handles special cases and
@ -152,9 +152,9 @@ module fpdiv (FDivSqrtDoneM, FDivResultM, FDivFlagsM, DivDenormM, FInput1E, FInp
q1, qm1, qp1, q0, qm0, qp0, regr_out); q1, qm1, qp1, q0, qm0, qp0, regr_out);
// Store the final result and the exception flags in registers. // Store the final result and the exception flags in registers.
flopenr #(64) rega (clk, reset, FDivSqrtDoneM, Result, FDivResultM); flopenr #(64) rega (clk, reset, FDivSqrtDoneE, Result, FDivResultE);
flopenr #(1) regb (clk, reset, FDivSqrtDoneM, DenormIO, DivDenormM); flopenr #(1) regb (clk, reset, FDivSqrtDoneE, DenormIO, DivDenormE);
flopenr #(5) regc (clk, reset, FDivSqrtDoneM, FlagsIn, FDivFlagsM); flopenr #(5) regc (clk, reset, FDivSqrtDoneE, FlagsIn, FDivFlagsE);
endmodule // fpadd endmodule // fpadd

View File

@ -42,7 +42,7 @@ module fpu (
output logic FStallD, output logic FStallD,
output logic FWriteIntE, FWriteIntM, FWriteIntW, output logic FWriteIntE, FWriteIntM, FWriteIntW,
output logic [`XLEN-1:0] FWriteDataM, output logic [`XLEN-1:0] FWriteDataM,
output logic FDivSqrtDoneM, output logic FDivBusyE,
output logic IllegalFPUInstrD, output logic IllegalFPUInstrD,
output logic [`XLEN-1:0] FPUResultW); output logic [`XLEN-1:0] FPUResultW);
@ -73,38 +73,21 @@ module fpu (
logic [`XLEN-1:0] FLoadStoreResultM, FLoadStoreResultW; // Result for load, store, and move to int-reg instructions logic [`XLEN-1:0] FLoadStoreResultM, FLoadStoreResultW; // Result for load, store, and move to int-reg instructions
// div/sqrt signals // div/sqrt signals
logic DivDenormM, DivDenormW; logic DivDenormE, DivDenormM, DivDenormW;
logic DivOvEn, DivUnEn; logic DivOvEn, DivUnEn;
logic DivBusyM; logic [63:0] FDivResultE, FDivResultM, FDivResultW;
logic [63:0] FDivResultM, FDivResultW; logic [4:0] FDivFlagsE, FDivFlagsM, FDivFlagsW;
logic [4:0] FDivFlagsM, FDivFlagsW; logic FDivSqrtDoneE, FDivSqrtDoneM;
// FMA signals // FMA signals
logic [12:0] aligncntE, aligncntM; logic [105:0] ProdManE, ProdManM;
logic [105:0] rE, rM; logic [161:0] AlignedAddendE, AlignedAddendM;
logic [105:0] sE, sM; logic [12:0] ProdExpE, ProdExpM;
logic [163:0] tE, tM; logic AddendStickyE, AddendStickyM;
logic [8:0] normcntE, normcntM; logic KillProdE, KillProdM;
logic [12:0] aeE, aeM; logic XZeroE, YZeroE, ZZeroE, XZeroM, YZeroM, ZZeroM;
logic bsE, bsM; logic XInfE, YInfE, ZInfE, XInfM, YInfM, ZInfM;
logic killprodE, killprodM; logic XNaNE, YNaNE, ZNaNE, XNaNM, YNaNM, ZNaNM;
logic prodofE, prodofM;
logic xzeroE, xzeroM;
logic yzeroE, yzeroM;
logic zzeroE, zzeroM;
logic xdenormE, xdenormM;
logic ydenormE, ydenormM;
logic zdenormE, zdenormM;
logic xinfE, xinfM;
logic yinfE, yinfM;
logic zinfE, zinfM;
logic xnanE, xnanM;
logic ynanE, ynanM;
logic znanE, znanM;
logic nanE, nanM;
logic [8:0] sumshiftE, sumshiftM;
logic sumshiftzeroE, sumshiftzeroM;
logic prodinfE, prodinfM;
logic [63:0] FmaResultM, FmaResultW; logic [63:0] FmaResultM, FmaResultW;
logic [4:0] FmaFlagsM, FmaFlagsW; logic [4:0] FmaFlagsM, FmaFlagsW;
@ -241,7 +224,7 @@ module fpu (
.CLK(clk), .CLK(clk),
.ECLK(fpdivClk)); .ECLK(fpdivClk));
fpdiv fpdivsqrt (.DivOpType(FOpCtrlE[0]), .clk(fpdivClk)); fpdiv fpdivsqrt (.DivOpType(FOpCtrlE[0]), .clk(fpdivClk), .*);
// first of two-stage instance of floating-point add/cvt unit // first of two-stage instance of floating-point add/cvt unit
fpuaddcvt1 fpadd1 (.*); fpuaddcvt1 fpadd1 (.*);
@ -265,31 +248,27 @@ module fpu (
//***************** //*****************
// fma E/M pipe registers // fma E/M pipe registers
//***************** //*****************
flopenrc #(13) EMRegFma1(clk, reset, PipeClearEM, PipeEnableEM, aligncntE, aligncntM); flopenrc #(106) EMRegFma3(clk, reset, PipeClearEM, PipeEnableEM, ProdManE, ProdManM);
flopenrc #(106) EMRegFma2(clk, reset, PipeClearEM, PipeEnableEM, rE, rM); flopenrc #(162) EMRegFma4(clk, reset, PipeClearEM, PipeEnableEM, AlignedAddendE, AlignedAddendM);
flopenrc #(106) EMRegFma3(clk, reset, PipeClearEM, PipeEnableEM, sE, sM); flopenrc #(13) EMRegFma6(clk, reset, PipeClearEM, PipeEnableEM, ProdExpE, ProdExpM);
flopenrc #(164) EMRegFma4(clk, reset, PipeClearEM, PipeEnableEM, tE, tM); flopenrc #(1) EMRegFma7(clk, reset, PipeClearEM, PipeEnableEM, AddendStickyE, AddendStickyM);
flopenrc #(9) EMRegFma5(clk, reset, PipeClearEM, PipeEnableEM, normcntE, normcntM); flopenrc #(1) EMRegFma8(clk, reset, PipeClearEM, PipeEnableEM, KillProdE, KillProdM);
flopenrc #(13) EMRegFma6(clk, reset, PipeClearEM, PipeEnableEM, aeE, aeM); flopenrc #(1) EMRegFma10(clk, reset, PipeClearEM, PipeEnableEM, XZeroE, XZeroM);
flopenrc #(1) EMRegFma7(clk, reset, PipeClearEM, PipeEnableEM, bsE, bsM); flopenrc #(1) EMRegFma11(clk, reset, PipeClearEM, PipeEnableEM, YZeroE, YZeroM);
flopenrc #(1) EMRegFma8(clk, reset, PipeClearEM, PipeEnableEM, killprodE, killprodM); flopenrc #(1) EMRegFma12(clk, reset, PipeClearEM, PipeEnableEM, ZZeroE, ZZeroM);
flopenrc #(1) EMRegFma9(clk, reset, PipeClearEM, PipeEnableEM, prodofE, prodofM); flopenrc #(1) EMRegFma16(clk, reset, PipeClearEM, PipeEnableEM, XInfE, XInfM);
flopenrc #(1) EMRegFma10(clk, reset, PipeClearEM, PipeEnableEM, xzeroE, xzeroM); flopenrc #(1) EMRegFma17(clk, reset, PipeClearEM, PipeEnableEM, YInfE, YInfM);
flopenrc #(1) EMRegFma11(clk, reset, PipeClearEM, PipeEnableEM, yzeroE, yzeroM); flopenrc #(1) EMRegFma18(clk, reset, PipeClearEM, PipeEnableEM, ZInfE, ZInfM);
flopenrc #(1) EMRegFma12(clk, reset, PipeClearEM, PipeEnableEM, zzeroE, zzeroM); flopenrc #(1) EMRegFma19(clk, reset, PipeClearEM, PipeEnableEM, XNaNE, XNaNM);
flopenrc #(1) EMRegFma13(clk, reset, PipeClearEM, PipeEnableEM, xdenormE, xdenormM); flopenrc #(1) EMRegFma20(clk, reset, PipeClearEM, PipeEnableEM, YNaNE, YNaNM);
flopenrc #(1) EMRegFma14(clk, reset, PipeClearEM, PipeEnableEM, ydenormE, ydenormM); flopenrc #(1) EMRegFma21(clk, reset, PipeClearEM, PipeEnableEM, ZNaNE, ZNaNM);
flopenrc #(1) EMRegFma15(clk, reset, PipeClearEM, PipeEnableEM, zdenormE, zdenormM);
flopenrc #(1) EMRegFma16(clk, reset, PipeClearEM, PipeEnableEM, xinfE, xinfM); //*****************
flopenrc #(1) EMRegFma17(clk, reset, PipeClearEM, PipeEnableEM, yinfE, yinfM); // fpdiv E/M pipe registers
flopenrc #(1) EMRegFma18(clk, reset, PipeClearEM, PipeEnableEM, zinfE, zinfM); //*****************
flopenrc #(1) EMRegFma19(clk, reset, PipeClearEM, PipeEnableEM, xnanE, xnanM); flopenrc #(64) EMRegDiv1(clk, reset, PipeClearEM, PipeEnableEM, FDivResultE, FDivResultM);
flopenrc #(1) EMRegFma20(clk, reset, PipeClearEM, PipeEnableEM, ynanE, ynanM); flopenrc #(5) EMRegDiv2(clk, reset, PipeClearEM, PipeEnableEM, FDivFlagsE, FDivFlagsM);
flopenrc #(1) EMRegFma21(clk, reset, PipeClearEM, PipeEnableEM, znanE, znanM); flopenrc #(1) EMRegDiv3(clk, reset, PipeClearEM, PipeEnableEM, DivDenormE, DivDenormM);
flopenrc #(1) EMRegFma22(clk, reset, PipeClearEM, PipeEnableEM, nanE, nanM);
flopenrc #(9) EMRegFma23(clk, reset, PipeClearEM, PipeEnableEM, sumshiftE, sumshiftM);
flopenrc #(1) EMRegFma24(clk, reset, PipeClearEM, PipeEnableEM, sumshiftzeroE, sumshiftzeroM);
flopenrc #(1) EMRegFma25(clk, reset, PipeClearEM, PipeEnableEM, prodinfE, prodinfM);
//***************** //*****************
// fpadd E/M pipe registers // fpadd E/M pipe registers

View File

@ -29,7 +29,7 @@ module fpuhazard(
input logic [4:0] Adr1, Adr2, Adr3, input logic [4:0] Adr1, Adr2, Adr3,
input logic FWriteEnE, FWriteEnM, FWriteEnW, input logic FWriteEnE, FWriteEnM, FWriteEnW,
input logic [4:0] RdE, RdM, RdW, input logic [4:0] RdE, RdM, RdW,
input logic DivBusyM, input logic FDivBusyE,
input logic RegWriteD, input logic RegWriteD,
input logic [2:0] FResultSelD, FResultSelE, input logic [2:0] FResultSelD, FResultSelE,
input logic IllegalFPUInstrD, input logic IllegalFPUInstrD,
@ -46,7 +46,7 @@ module fpuhazard(
FForwardInput1D = 2'b00; FForwardInput1D = 2'b00;
FForwardInput2D = 2'b00; FForwardInput2D = 2'b00;
FForwardInput3D = 1'b0; FForwardInput3D = 1'b0;
FStallD = DivBusyM; FStallD = FDivBusyE;
if (~IllegalFPUInstrD) begin if (~IllegalFPUInstrD) begin
// if taking a value from int register // if taking a value from int register
if ((Adr1 == RdE) & (FWriteEnE | ((FResultSelE == 3'b110) & RegWriteD))) if ((Adr1 == RdE) & (FWriteEnE | ((FResultSelE == 3'b110) & RegWriteD)))

View File

@ -48,7 +48,7 @@ module fsm (done, load_rega, load_regb, load_regc,
S25=5'd25, S26=5'd26, S27=5'd27, S25=5'd25, S26=5'd26, S27=5'd27,
S28=5'd28, S29=5'd29, S30=5'd30; S28=5'd28, S29=5'd29, S30=5'd30;
always @(posedge clk) always @(negedge clk)
begin begin
if(reset==1'b1) if(reset==1'b1)
CURRENT_STATE=S0; CURRENT_STATE=S0;
@ -245,7 +245,7 @@ module fsm (done, load_rega, load_regb, load_regc,
S10: // done S10: // done
begin begin
done = 1'b1; done = 1'b1;
divBusy = 1'b1; divBusy = 1'b0;
load_rega = 1'b0; load_rega = 1'b0;
load_regb = 1'b0; load_regb = 1'b0;
load_regc = 1'b0; load_regc = 1'b0;

View File

@ -1,40 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
// Block Name: lop.v
// Author: David Harris
// Date: 11/2/1995
//
// Block Description:
// This block implements a Leading One Predictor used to determine
// the normalization shift count.
///////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
module lza(sum, normcnt, sumzero);
/////////////////////////////////////////////////////////////////////////////
input logic [163:0] sum; // sum
output logic [8:0] normcnt; // normalization shift count
output logic sumzero; // sum = 0
// Internal nodes
reg [8:0] i; // loop index
// A real LOP uses a fast carry chain to find only the first 0.
// It is an example of a parallel prefix algorithm. For the sake
// of simplicity, this model is behavioral instead.
// A real LOP would also operate on the sources of the adder, not
// the result!
always_comb
begin
i = 0;
while (~sum[163-i] && i <= 163) i = i+1; // search for leading one
normcnt = i; // compute shift count
end
// Also check if sum is zero
assign sumzero = ~(|sum);
endmodule

View File

@ -1,138 +0,0 @@
module multiply(xman, yman, xdenormE, ydenormE, xzeroE, yzeroE, rE, sE);
/////////////////////////////////////////////////////////////////////////////
input logic [51:0] xman; // Fraction of multiplicand x
input logic [51:0] yman; // Fraction of multiplicand y
input logic xdenormE; // is x denormalized
input logic ydenormE; // is y denormalized
input logic xzeroE; // Z is denorm
input logic yzeroE; // Z is denorm
output logic [105:0] rE; // partial product 1
output logic [105:0] sE; // partial product 2
wire [54:0] yExt; //y with appended 0 and assumed 1
wire [53:0] xExt; //y with assumed 1
wire [26:0][1:0] add1;
wire [26:0][54:0] pp;
wire [26:0] e;
logic [106:0] tmpsE;
logic [17:0][106:0] lv1add;
logic [11:0][106:0] lv2add;
logic [7:0][106:0] lv3add;
logic [3:0][106:0] lv4add;
logic [21:0][107:0] carryTmp;
wire [26:0][106:0] acc;
// wire [105:0] acc
genvar i;
// assign xExt = {1'b0,~(xdenormE|xzeroE),xman};
// assign yExt = {1'b0,~(ydenormE|yzeroE),yman, 1'b0};
// generate
// for(i=0; i<27; i=i+1) begin
// booth booth(.xExt(xExt), .choose(yExt[(i*2)+2:i*2]), .add1(add1[i]), .e(e[i]), .pp(pp[i]));
// end
// endgenerate
// assign acc[0] = {49'b0,~e[0],e[0],e[0],pp[0]};
// assign acc[1] = {49'b01,~e[1],pp[1],add1[0]};
// assign acc[2] = {47'b01,~e[2],pp[2],add1[1], 2'b0};
// assign acc[3] = {45'b01,~e[3],pp[3],add1[2], 4'b0};
// assign acc[4] = {43'b01,~e[4],pp[4],add1[3], 6'b0};
// assign acc[5] = {41'b01,~e[5],pp[5],add1[4], 8'b0};
// assign acc[6] = {39'b01,~e[6],pp[6],add1[5], 10'b0};
// assign acc[7] = {37'b01,~e[7],pp[7],add1[6], 12'b0};
// assign acc[8] = {35'b01,~e[8],pp[8],add1[7], 14'b0};
// assign acc[9] = {33'b01,~e[9],pp[9],add1[8], 16'b0};
// assign acc[10] = {31'b01,~e[10],pp[10],add1[9], 18'b0};
// assign acc[11] = {29'b01,~e[11],pp[11],add1[10], 20'b0};
// assign acc[12] = {27'b01,~e[12],pp[12],add1[11], 22'b0};
// assign acc[13] = {25'b01,~e[13],pp[13],add1[12], 24'b0};
// assign acc[14] = {23'b01,~e[14],pp[14],add1[13], 26'b0};
// assign acc[15] = {21'b01,~e[15],pp[15],add1[14], 28'b0};
// assign acc[16] = {19'b01,~e[16],pp[16],add1[15], 30'b0};
// assign acc[17] = {17'b01,~e[17],pp[17],add1[16], 32'b0};
// assign acc[18] = {15'b01,~e[18],pp[18],add1[17], 34'b0};
// assign acc[19] = {13'b01,~e[19],pp[19],add1[18], 36'b0};
// assign acc[20] = {11'b01,~e[20],pp[20],add1[19], 38'b0};
// assign acc[21] = {9'b01,~e[21],pp[21],add1[20], 40'b0};
// assign acc[22] = {7'b01,~e[22],pp[22],add1[21], 42'b0};
// assign acc[23] = {5'b01,~e[23],pp[23],add1[22], 44'b0};
// assign acc[24] = {3'b01,~e[24],pp[24],add1[23], 46'b0};
// assign acc[25] = {1'b0, ~e[25],pp[25],add1[24], 48'b0};
// assign acc[26] = {pp[26],add1[25], 50'b0};
//***breaks lint with warnings like: %Warning-UNOPTFLAT: Example path: src/fpu/multiply.sv:86: ASSIGNW
// %Warning-UNOPTFLAT: Example path: src/fpu/multiply.sv:22: wallypipelinedsoc.hart.fpu.fma1.multiply.lv3add
//*** resize adders
// generate
// for(i=0; i<9; i=i+1) begin
// add3comp2 #(.BITS(107)) add1(.a(acc[i*3]), .b(acc[i*3+1]), .c(acc[i*3+2]),
// .carry(carryTmp[i][106:0]), .sum(lv1add[i*2+1]));
// assign lv1add[i*2] = {carryTmp[i][105:0], 1'b0};
// end
// endgenerate
// generate
// for(i=0; i<6; i=i+1) begin
// add3comp2 #(.BITS(107)) add2(.a(lv1add[i*3]), .b(lv1add[i*3+1]), .c(lv1add[i*3+2]),
// .carry(carryTmp[i+9][106:0]), .sum(lv2add[i*2+1]));
// assign lv2add[i*2] = {carryTmp[i+9][105:0], 1'b0};
// end
// endgenerate
// generate
// for(i=0; i<4; i=i+1) begin
// add3comp2 #(.BITS(107)) add3(.a(lv2add[i*3]), .b(lv2add[i*3+1]), .c(lv2add[i*3+2]),
// .carry(carryTmp[i+15][106:0]), .sum(lv3add[i*2+1]));
// assign lv3add[i*2] = {carryTmp[i+15][105:0], 1'b0};
// end
// endgenerate
// generate
// for(i=0; i<2; i=i+1) begin
// add4comp2 #(.BITS(107)) add4(.a(lv3add[i*4]), .b(lv3add[i*4+1]), .c(lv3add[i*4+2]), .d(lv3add[i*4+3]),
// .carry(carryTmp[i+19]), .sum(lv4add[i*2+1]));
// assign lv4add[i*2] = {carryTmp[i+19][105:0], 1'b0};
// end
// endgenerate
// add4comp2 #(.BITS(107)) add5(.a(lv4add[0]), .b(lv4add[1]), .c(lv4add[2]), .d(lv4add[3]) ,
// .carry(carryTmp[21]), .sum(tmpsE));
// assign sE = tmpsE[105:0];
// assign rE = {carryTmp[21][104:0], 1'b0};
// assign rE = 0;
// assign sE = acc[0] +
// acc[1] +
// acc[2] +
// acc[3] +
// acc[4] +
// acc[5] +
// acc[6] +
// acc[7] +
// acc[8] +
// acc[9] +
// acc[10] +
// acc[11] +
// acc[12] +
// acc[13] +
// acc[14] +
// acc[15] +
// acc[16] +
// acc[17] +
// acc[18] +
// acc[19] +
// acc[20] +
// acc[21] +
// acc[22] +
// acc[23] +
// acc[24] +
// acc[25] +
// acc[26];
assign sE = {53'b0,~(xdenormE|xzeroE),xman} * {53'b0,~(ydenormE|yzeroE),yman};
assign rE = 0;
endmodule

View File

@ -1,147 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
// Block Name: normalize.v
// Author: David Harris
// Date: 11/2/1995
//
// Block Description:
// This block performs the normalization shift. It also
// generates the Rands bits for rounding. Finally, it
// handles the special case of a zero sum.
//
// v[53:2] is the fraction component of the prerounded result.
// It can be bypassed back to the X or Z inputs of the FMAC
// for back-to-back operations.
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
module normalize(sum, zexp, normcnt, aeM, aligncntM, sumshiftM, sumshiftzeroM, sumzero,
xzeroM, zzeroM, yzeroM, bsM, xdenormM, ydenormM, zdenormM, sticky, de0, resultdenorm, v);
/////////////////////////////////////////////////////////////////////////////
input logic [163:0] sum; // sum
input logic [62:52] zexp; // sum
input logic [8:0] normcnt; // normalization shift count
input logic [12:0] aeM; // normalization shift count
input logic [12:0] aligncntM; // normalization shift count
input logic [8:0] sumshiftM; // normalization shift count
input logic sumshiftzeroM;
input logic sumzero; // sum is zero
input logic bsM; // sticky bit for addend
input logic xdenormM; // Input Z is denormalized
input logic ydenormM; // Input Z is denormalized
input logic zdenormM; // Input Z is denormalized
input logic xzeroM;
input logic yzeroM;
input logic zzeroM;
output logic sticky; //sticky bit
output logic [12:0] de0;
output logic resultdenorm; // Input Z is denormalized
output logic [53:0] v; // normalized sum, R, S bits
// Internal nodes
logic [163:0] sumshifted; // shifted sum
logic [9:0] sumshifttmp;
logic [163:0] sumshiftedtmp; // shifted sum
logic isShiftLeft1;
logic tmp,tmp1,tmp2,tmp3,tmp4, tmp5;
// When the sum is zero, normalization does not apply and only the
// sticky bit must be computed. Otherwise, the sum is right-shifted
// and the Rand S bits (v[1] and v[O], respectively) are assigned.
// The R bit is also set on denormalized numbers where the exponent
// was computed to be exactly -1023 and the L bit was set. This
// is required for correct rounding up of multiplication results.
// The sticky bit calculation is actually built into the shifter and
// does not require a true subtraction shown in the model.
assign isShiftLeft1 = (aligncntM == 13'b1 ||aligncntM == 13'b0 || $signed(aligncntM) == $signed(-(13'b1)))&& zexp == 11'h2;
// assign tmp = ($signed(aeM-normcnt+2) >= $signed(-1022));
always_comb
begin
// d = aligncntM
// l = normcnt
// p = 53
// ea + eb = aeM
// set d<=2 to d<=0
if ($signed(aligncntM)<=$signed(13'd2)) begin //d<=2
// product anchored or cancellation
if ($signed(aeM-{{4{normcnt[8]}},normcnt}+13'd2) >= $signed(-(13'd1022))) begin //ea+eb-l+2 >= emin
//normal result
de0 = xzeroM|yzeroM ? {2'b0,zexp} : aeM-{{4{normcnt[8]}},normcnt}+{12'b0,xdenormM}+{12'b0,ydenormM}+13'd57;
resultdenorm = |sum & ~|de0 | de0[12];
// if z is zero then there was a 56 bit shift of the product
sumshifted = resultdenorm ? sum << sumshiftM-{8'b0,zzeroM}+{8'b0,isShiftLeft1} : sum << normcnt; // p+2+l
v = sumshifted[162:109];
sticky = (|sumshifted[108:0]) | bsM;
//de0 = aeM-normcnt+2-1023;
end else begin
sumshifted = sum << (13'd1080+aeM);
v = sumshifted[162:109];
sticky = (|sumshifted[108:0]) | bsM;
resultdenorm = 1;
de0 = 0;
end
end else begin // extract normalized bits
sumshifttmp = {1'b0,sumshiftM} - 2;
sumshifted = sumshifttmp[9] ? sum : sum << sumshifttmp;
tmp1 = (sumshifted[163] & ~sumshifttmp[9]);
tmp2 = ((sumshifttmp[9] & sumshiftM[0]) || sumshifted[162]);
tmp3 = (sumshifted[161] || (sumshifttmp[9] & sumshiftM[1]));
tmp4 = sumshifted[160];
tmp5 = sumshifted[159];
// for some reason use exp = zexp + {0,1,2}
// the book says exp = zexp + {-1,0,1}
if(sumshiftzeroM) begin
v = sum[162:109];
sticky = (|sum[108:0]) | bsM;
de0 = {2'b0,zexp};
end else if(sumshifted[163] & ~sumshifttmp[9])begin
v = sumshifted[162:109];
sticky = (|sumshifted[108:0]) | bsM;
de0 = {2'b0,zexp} +13'd2;
end else if ((sumshifttmp[9] & sumshiftM[0]) || sumshifted[162]) begin
v = sumshifted[161:108];
sticky = (|sumshifted[107:0]) | bsM;
de0 = {2'b0,zexp}+13'd1;
end else if (sumshifted[161] || (sumshifttmp[9] & sumshiftM[1])) begin
v = sumshifted[160:107];
sticky = (|sumshifted[106:0]) | bsM;
//de0 = zexp-1;
de0 = {2'b0,zexp}+{12'b0,zdenormM};
end else if(sumshifted[160]& ~zdenormM) begin
de0 = {2'b0,zexp}-13'b1;
v = ~|de0&~sumzero ? sumshifted[160:107] : sumshifted[159:106];
sticky = (|sumshifted[105:0]) | bsM;
//de0 = zexp-1;
end else if(sumshifted[159]& ~zdenormM) begin
//v = sumshifted[158:105];
de0 = {2'b0,zexp}-13'd2;
v = (~|de0 | de0[12])&~sumzero ? sumshifted[161:108] : sumshifted[158:105];
sticky = (|sumshifted[104:0]) | bsM;
//de0 = zexp-1;
end else if(zdenormM) begin
v = sumshifted[160:107];
sticky = (|sumshifted[106:0]) | bsM;
//de0 = zexp-1;
de0 = {{2{zexp[62]}},zexp};
end else begin
de0 = 0;
sumshifted = sum << sumshiftM-1; // p+2+l
v = sumshifted[162:109];
sticky = (|sumshifted[108:0]) | bsM;
end
resultdenorm = (~|de0 | de0[12]);
end
end
// shift sum left by normcnt, filling the right with zeros
//assign sumshifted = sum << normcnt;
endmodule

View File

@ -1,122 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Block Name: round.v
// Author: David Harris
// Date: 11/2/1995
//
// Block Description:
// This block is responsible for rounding the normalized result of // the FMAC. Because prenormalized results may be bypassed back to // the FMAC X and z input logics, rounding does not appear in the critical // path of most floating point code. This is good because rounding // requires an entire 52 bit carry-propagate half-adder delay.
//
// The results from other FPU blocks (e.g. FCVT, FDIV, etc) are also
// muxed in to form the actual result for register file writeback. This
// saves a mux from the writeback path.
//
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
module round(v, sticky, FrmM, wsign,
FmaFlagsM, inf, nanM, xnanM, ynanM, znanM,
xman, yman, zman,
wman, infinity, specialsel,expplus1);
/////////////////////////////////////////////////////////////////////////////
input logic [53:0] v; // normalized sum, R, S bits
input logic sticky; //sticky bit
input logic [2:0] FrmM;
input logic wsign; // Sign of result
input logic [4:0] FmaFlagsM;
input logic inf; // Some input logic is infinity
input logic nanM; // Some input logic is NaN
input logic xnanM; // X is NaN
input logic ynanM; // Y is NaN
input logic znanM; // Z is NaN
input logic [51:0] xman; // input logic X
input logic [51:0] yman; // input logic Y
input logic [51:0] zman; // input logic Z
output logic [51:0] wman; // rounded result of FMAC
output logic infinity; // Generate infinity on overflow
output logic specialsel; // Select special result
output logic expplus1;
// Internal nodes
logic plus1; // Round by adding one
wire [52:0] v1; // Result + 1 (for rounding)
wire [51:0] specialres; // Result of exceptional case
wire [51:0] infinityres; // Infinity or largest real number
wire [51:0] nanres; // Propagated or generated NaN
// Compute if round should occur. This equation is derived from
// the rounding tables.
// round to infinity - plus1 if positive
// round to -infinity - plus1 if negitive
// round to zero - do nothing
// round to nearest even
// {v[1], v[0], sticky}
// 0xx - do nothing
// 100 - tie - plus1 if v[2] = 1
// 101/110/111 - plus1
//***causes lint warning: %Warning-UNOPTFLAT: Example path: src/fpu/round.sv:59: ALWAYS
// %Warning-UNOPTFLAT: Example path: src/fpu/round.sv:42: wallypipelinedsoc.hart.fpu.fma2.round.plus1
always_comb begin
case (FrmM)
3'b000: plus1 = (v[1] & (v[0] | sticky | (~v[0]&~sticky&v[2])));//round to nearest even
3'b001: plus1 = 0;//round to zero
3'b010: plus1 = wsign;//round down
3'b011: plus1 = ~wsign;//round up
3'b100: plus1 = (v[1] & (v[0] | sticky | (~v[0]&~sticky&~wsign)));//round to nearest max magnitude
default: plus1 = 1'bx;
endcase
end
// Compute rounded result
assign v1 = v[53:2] + 1;
// Determine if postnormalization is necessary
// Predicted by all bits =1 before round +1
//assign postnormalize = &(v[53:2]) && plus1;
// Determine special result in event of of selection of a result from
// another FPU functional unit, infinity, NAN, or underflow
// The special result mux is a 4:1 mux that should not appear in the
// critical path of the machine. It is not priority encoded, despite
// the code below suggesting otherwise. Also, several of the identical data
// input logics to the wide muxes can be combined at the expense of more
// complicated non-critical control in the circuit implementation.
assign specialsel = FmaFlagsM[2] || FmaFlagsM[1] || FmaFlagsM[4] || //overflow underflow invalid
nanM || inf;
assign specialres = FmaFlagsM[4] | nanM ? nanres : //invalid
FmaFlagsM[2] ? infinityres : //overflow
inf ? 52'b0 :
FmaFlagsM[1] ? 52'b0 : 52'bx; // underflow
// Overflow is handled differently for different rounding modes
// Round is to either infinity or to maximum finite number
assign infinity = |FrmM;//rn || (rp && ~wsign) || (rm && wsign);//***look into this
assign infinityres = infinity ? 52'b0 : {52{1'b1}};
// Invalid operations produce a quiet NaN. The result should
// propagate an input logic if the input logic is NaN. Since we assume all
// NaN input logics are already quiet, we don't have to force them quiet.
// assign nanres = xnanM ? x: (ynanM ? y : (znanM ? z : {1'b1, 51'b0})); // original
// IEEE 754-2008 section 6.2.3 states:
// "If two or more input logics are NaN, then the payload of the resulting NaN should be
// identical to the payload of one of the input logic NaNs if representable in the destination
// format. This standard does not specify which of the input logic NaNs will provide the payload."
assign nanres = xnanM ? {1'b1, xman[50:0]}: (ynanM ? {1'b1, yman[50:0]} : (znanM ? {1'b1, zman[50:0]} : {1'b1, 51'b0}));// KEP 210112 add the 1 to make NaNs quiet
// Select result with 4:1 mux
// If the sum is zero and we round up, there is a special case in
// which we produce a massive loss of significance and trap to software.
// It is handled in the exception unit.
assign expplus1 = v1[52] & ~specialsel & plus1;
assign wman = specialsel ? specialres : (plus1 ? v1[51:0] : v[53:2]);
endmodule

View File

@ -1,112 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
// Block Name: sign.v
// Author: David Harris
// Date: 12/1/1995
//
// Block Description:
// This block manages the signs of the numbers.
// 1 = negative
//
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
module sign(xsign, ysign, zsign, negsum0, negsum1, bsM, FrmM, FmaFlagsM,
sumzero, zinfM, inf, wsign, invz, negsum, selsum1, isAdd);
////////////////////////////////////////////////////////////////////////////I
input logic xsign; // Sign of X
input logic ysign; // Sign of Y
input logic zsign; // Sign of Z
input logic isAdd;
input logic negsum0; // Sum in +O mode is negative
input logic negsum1; // Sum in +1 mode is negative
input logic bsM; // sticky bit from addend
input logic [2:0] FrmM; // Round toward minus infinity
input logic [4:0] FmaFlagsM; // Round toward minus infinity
input logic sumzero; // Sum = O
input logic zinfM; // Y = Inf
input logic inf; // Some input logic = Inf
output logic wsign; // Sign of W
output logic invz; // Invert addend into adder
output logic negsum; // Negate result of adder
output logic selsum1; // Select +1 mode from compound adder
// Internal nodes
wire zerosign; // sign if result= 0
wire sumneg; // sign if result= 0
wire infsign; // sign if result= Inf
logic tmp;
logic psign;
// Compute sign of product
assign psign = xsign ^ ysign;
// Invert addend if sign of Z is different from sign of product assign invz = zsign ^ psign;
//do you invert z
assign invz = (zsign ^ psign);
assign selsum1 = invz;
//negate sum if its negitive
assign negsum = (selsum1&negsum1) | (~selsum1&negsum0);
// is the sum negitive
// if p - z is the sum negitive
// if -p + z is the sum positive
// if -p - z then the sum is negitive
assign sumneg = invz&zsign&negsum1 | invz&psign&~negsum1 | (zsign&psign);
//always @(invz or negsum0 or negsum1 or bsM or ps)
// begin
// if (~invz) begin // both input logics have same sign
// negsum = 0;
// selsum1 = 0;
// end else if (bsM) begin // sticky bit set on addend
// selsum1 = 0;
// negsum = negsum0;
// end else if (ps) begin // sticky bit set on product
// selsum1 = 1;
// negsum = negsum1;
// end else begin // both sticky bits clear
// //selsum1 = negsum1; // KEP 210113-10:44 Selsum1 was adding 1 to values that were multiplied by 0
// selsum1 = ~negsum1; //original
// negsum = negsum1;
// end
//end
// Compute sign of result
// This involves a special case when the sum is zero:
// x+x retains the same sign as x even when x = +/- 0.
// otherwise, x-x = +O unless in the RM mode when x-x = -0
// There is also a special case for NaNs and invalid results;
// the sign of the NaN produced is forced to be 0.
// Sign calculation is not in the critical path so the cases
// can be tolerated.
// IEEE 754-2008 section 6.3 states
// "When ether an input logic or result is NaN, this standard does not interpret the sign of a NaN."
// also pertaining to negZero it states:
// "When the sum/difference of two operands with opposite signs is exactly zero, the sign of that sum/difference
// shall be +0 in all rounding attributes EXCEPT roundTowardNegative. Under that attribute, the sign of an exact zero
// sum/difference shall be -0. However, x+x = x-(-X) retains the same sign as x even when x is zero."
//assign zerosign = (~invz && killprodM) ? zsign : rm;//***look into
// assign zerosign = (~invz && killprodM) ? zsign : 0;
// zero sign
// if product underflows then use psign
// otherwise
// addition
// if cancelation then 0 unless round to -inf
// otherwise psign
// subtraction
// if cancelation then 0 unless round to -inf
// otherwise psign
assign zerosign = FmaFlagsM[1] ? psign :
(isAdd ? (psign^zsign ? FrmM == 3'b010 : psign) :
(psign^zsign ? psign : FrmM == 3'b010));
assign infsign = zinfM ? zsign : psign; //KEP 210112 keep the correct sign when result is infinity
//assign infsign = xinfM ? (yinfM ? psign : xsign) : yinfM ? ysign : zsign;//original
assign tmp = FmaFlagsM[4] ? 0 : (inf ? infsign :(sumzero ? zerosign : psign ^ negsum));
assign wsign = FmaFlagsM[4] ? 0 : (inf ? infsign :(sumzero ? zerosign : sumneg));
endmodule

View File

@ -1,67 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
// Block Name: special.v
// Author: David Harris
// Date: 12/2/1995
//
// Block Description:
// This block implements special case handling for unusual operands (e.g.
// 0, NaN, denormalize, infinity). The block consists of zero/one detectors.
//
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
module special(FInput1E, FInput2E, FInput3E, xzeroE, yzeroE, zzeroE,
xnanE, ynanE, znanE, xdenormE, ydenormE, zdenormE, xinfE, yinfE, zinfE);
/////////////////////////////////////////////////////////////////////////////
input logic [63:0] FInput1E; // Input FInput1E
input logic [63:0] FInput2E; // Input FInput2E
input logic [63:0] FInput3E; // Input FInput3E
output logic xzeroE; // Input FInput1E = 0
output logic yzeroE; // Input FInput2E = 0
output logic zzeroE; // Input FInput3E = 0
output logic xnanE; // FInput1E is NaN
output logic ynanE; // FInput2E is NaN
output logic znanE; // FInput3E is NaN
output logic xdenormE; // FInput1E is denormalized
output logic ydenormE; // FInput2E is denormalized
output logic zdenormE; // FInput3E is denormalized
output logic xinfE; // FInput1E is infinity
output logic yinfE; // FInput2E is infinity
output logic zinfE; // FInput3E is infinity
// In the actual circuit design, the gates looking at bits
// 51:0 and at bits 62:52 should be shared among the various detectors.
// Check if input is NaN
assign xnanE = &FInput1E[62:52] && |FInput1E[51:0];
assign ynanE = &FInput2E[62:52] && |FInput2E[51:0];
assign znanE = &FInput3E[62:52] && |FInput3E[51:0];
// Check if input is denormalized
assign xdenormE = ~(|FInput1E[62:52]) && |FInput1E[51:0];
assign ydenormE = ~(|FInput2E[62:52]) && |FInput2E[51:0];
assign zdenormE = ~(|FInput3E[62:52]) && |FInput3E[51:0];
// Check if input is infinity
assign xinfE = &FInput1E[62:52] && ~(|FInput1E[51:0]);
assign yinfE = &FInput2E[62:52] && ~(|FInput2E[51:0]);
assign zinfE = &FInput3E[62:52] && ~(|FInput3E[51:0]);
// Check if inputs are all zero
// Also forces denormalized inputs to zero.
// In the circuit implementation, this can be optimized
// to just check if the exponent is zero.
// KATHERINE - commented following (21/01/11)
// assign xzeroE = ~(|FInput1E[62:0]) || xdenormE;
// assign yzeroE = ~(|FInput2E[62:0]) || ydenormE;
// assign zzeroE = ~(|FInput3E[62:0]) || zdenormE;
// KATHERINE - removed denorm to prevent output logicing zero when computing with a denormalized number
assign xzeroE = ~(|FInput1E[62:0]);
assign yzeroE = ~(|FInput2E[62:0]);
assign zzeroE = ~(|FInput3E[62:0]);
endmodule

View File

@ -44,7 +44,7 @@ module lzd2 (P, V, B);
assign V = B[0] | B[1]; assign V = B[0] | B[1];
assign P = B[0] & ~B[1]; assign P = B[0] & ~B[1];
endmodule // lz2 endmodule // lzd2
module lzd_hier #(parameter WIDTH=8) module lzd_hier #(parameter WIDTH=8)
(input logic [WIDTH-1:0] B, (input logic [WIDTH-1:0] B,
@ -78,8 +78,8 @@ module lzd4 (ZP, ZV, B);
output logic [1:0] ZP; output logic [1:0] ZP;
output logic ZV; output logic ZV;
lz2 l1(ZPa, ZVa, B[1:0]); lzd2 l1(ZPa, ZVa, B[1:0]);
lz2 l2(ZPb, ZVb, B[3:2]); lzd2 l2(ZPb, ZVb, B[3:2]);
assign ZP[0:0] = ZVb ? ZPb : ZPa; assign ZP[0:0] = ZVb ? ZPb : ZPa;
assign ZP[1] = ~ZVb; assign ZP[1] = ~ZVb;
@ -99,8 +99,8 @@ module lzd8 (ZP, ZV, B);
output logic [2:0] ZP; output logic [2:0] ZP;
output logic ZV; output logic ZV;
lz4 l1(ZPa, ZVa, B[3:0]); lzd4 l1(ZPa, ZVa, B[3:0]);
lz4 l2(ZPb, ZVb, B[7:4]); lzd4 l2(ZPb, ZVb, B[7:4]);
assign ZP[1:0] = ZVb ? ZPb : ZPa; assign ZP[1:0] = ZVb ? ZPb : ZPa;
assign ZP[2] = ~ZVb; assign ZP[2] = ~ZVb;
@ -120,8 +120,8 @@ module lzd16 (ZP, ZV, B);
output logic [3:0] ZP; output logic [3:0] ZP;
output logic ZV; output logic ZV;
lz8 l1(ZPa, ZVa, B[7:0]); lzd8 l1(ZPa, ZVa, B[7:0]);
lz8 l2(ZPb, ZVb, B[15:8]); lzd8 l2(ZPb, ZVb, B[15:8]);
assign ZP[2:0] = ZVb ? ZPb : ZPa; assign ZP[2:0] = ZVb ? ZPb : ZPa;
assign ZP[3] = ~ZVb; assign ZP[3] = ~ZVb;
@ -141,8 +141,8 @@ module lzd32 (ZP, ZV, B);
output logic [4:0] ZP; output logic [4:0] ZP;
output logic ZV; output logic ZV;
lz16 l1(ZPa, ZVa, B[15:0]); lzd16 l1(ZPa, ZVa, B[15:0]);
lz16 l2(ZPb, ZVb, B[31:16]); lzd16 l2(ZPb, ZVb, B[31:16]);
assign ZP[3:0] = ZVb ? ZPb : ZPa; assign ZP[3:0] = ZVb ? ZPb : ZPa;
assign ZP[4] = ~ZVb; assign ZP[4] = ~ZVb;
@ -162,8 +162,8 @@ module lzd64 (ZP, ZV, B);
output logic [5:0] ZP; output logic [5:0] ZP;
output logic ZV; output logic ZV;
lz32 l1(ZPa, ZVa, B[31:0]); lzd32 l1(ZPa, ZVa, B[31:0]);
lz32 l2(ZPb, ZVb, B[63:32]); lzd32 l2(ZPb, ZVb, B[63:32]);
assign ZP[4:0] = ZVb ? ZPb : ZPa; assign ZP[4:0] = ZVb ? ZPb : ZPa;
assign ZP[5] = ~ZVb; assign ZP[5] = ~ZVb;
@ -183,8 +183,8 @@ module lzd128 (ZP, ZV, B);
output logic [6:0] ZP; output logic [6:0] ZP;
output logic ZV; output logic ZV;
lz64 l1(ZPa, ZVa, B[64:0]); lzd64 l1(ZPa, ZVa, B[64:0]);
lz64 l2(ZPb, ZVb, B[127:63]); lzd64 l2(ZPb, ZVb, B[127:63]);
assign ZP[5:0] = ZVb ? ZPb : ZPa; assign ZP[5:0] = ZVb ? ZPb : ZPa;
assign ZP[6] = ~ZVb; assign ZP[6] = ~ZVb;

View File

@ -33,7 +33,7 @@ module hazard(
input logic LoadStallD, MulDivStallD, CSRRdStallD, input logic LoadStallD, MulDivStallD, CSRRdStallD,
input logic DataStall, ICacheStallF, input logic DataStall, ICacheStallF,
input logic FPUStallD, input logic FPUStallD,
input logic DivBusyE, input logic DivBusyE,FDivBusyE,
// Stall & flush outputs // Stall & flush outputs
output logic StallF, StallD, StallE, StallM, StallW, output logic StallF, StallD, StallE, StallM, StallW,
output logic FlushF, FlushD, FlushE, FlushM, FlushW output logic FlushF, FlushD, FlushE, FlushM, FlushW
@ -57,7 +57,7 @@ module hazard(
assign StallFCause = CSRWritePendingDEM && ~(TrapM || RetM || BPPredWrongE); assign StallFCause = CSRWritePendingDEM && ~(TrapM || RetM || BPPredWrongE);
assign StallDCause = (LoadStallD || MulDivStallD || CSRRdStallD || FPUStallD) && ~(TrapM || RetM || BPPredWrongE); // stall in decode if instruction is a load/mul/csr dependent on previous assign StallDCause = (LoadStallD || MulDivStallD || CSRRdStallD || FPUStallD) && ~(TrapM || RetM || BPPredWrongE); // stall in decode if instruction is a load/mul/csr dependent on previous
assign StallECause = DivBusyE; assign StallECause = DivBusyE | FDivBusyE;
assign StallMCause = 0; assign StallMCause = 0;
assign StallWCause = DataStall || ICacheStallF; assign StallWCause = DataStall || ICacheStallF;

View File

@ -1,104 +0,0 @@
`include "wally-config.vh"
module rodirectmappedmemre #(parameter NUMLINES=512, parameter LINESIZE = 256, parameter WORDSIZE = `XLEN) (
// Pipeline stuff
input logic clk,
input logic reset,
// If flush is high, invalidate the entire cache
input logic flush,
// Select which address to read (broken for efficiency's sake)
input logic [`XLEN-1:0] PCTagF, // physical tag address
input logic [`XLEN-1:0] PCNextIndexF,
// Write new data to the cache
input logic WriteEnable,
input logic [LINESIZE-1:0] WriteLine,
// Output the word, as well as if it is valid
output logic [31:0] DataWord, // *** was WORDSIZE-1
output logic DataValid
);
// Various compile-time constants
localparam integer WORDWIDTH = $clog2(WORDSIZE/8);
localparam integer OFFSETWIDTH = $clog2(LINESIZE/WORDSIZE);
localparam integer SETWIDTH = $clog2(NUMLINES);
localparam integer TAGWIDTH = `XLEN - OFFSETWIDTH - SETWIDTH - WORDWIDTH;
localparam integer OFFSETBEGIN = WORDWIDTH;
localparam integer OFFSETEND = OFFSETBEGIN+OFFSETWIDTH-1;
localparam integer SETBEGIN = OFFSETEND+1;
localparam integer SETEND = SETBEGIN + SETWIDTH - 1;
localparam integer TAGBEGIN = SETEND + 1;
localparam integer TAGEND = TAGBEGIN + TAGWIDTH - 1;
// Machinery to read from and write to the correct addresses in memory
logic [LINESIZE-1:0] ReadLine;
logic [LINESIZE/WORDSIZE-1:0][WORDSIZE-1:0] ReadLineTransformed;
// Machinery to check if a given read is valid and is the desired value
logic [TAGWIDTH-1:0] DataTag;
logic [NUMLINES-1:0] ValidOut;
logic DataValidBit;
// Depth is number of bits in one "word" of the memory, width is number of such words
sram1rw #(.DEPTH(LINESIZE), .WIDTH(NUMLINES)) cachemem (
.*,
.Addr(PCNextIndexF[SETEND:SETBEGIN]),
.ReadData(ReadLine),
.WriteData(WriteLine)
);
sram1rw #(.DEPTH(TAGWIDTH), .WIDTH(NUMLINES)) cachetags (
.*,
.Addr(PCNextIndexF[SETEND:SETBEGIN]),
.ReadData(DataTag),
.WriteData(PCTagF[TAGEND:TAGBEGIN])
);
// Pick the right bits coming out the read line
//assign DataWord = ReadLineTransformed[ReadOffset];
//logic [31:0] tempRD;
always_comb begin
case (PCTagF[4:1])
0: DataWord = ReadLine[31:0];
1: DataWord = ReadLine[47:16];
2: DataWord = ReadLine[63:32];
3: DataWord = ReadLine[79:48];
4: DataWord = ReadLine[95:64];
5: DataWord = ReadLine[111:80];
6: DataWord = ReadLine[127:96];
7: DataWord = ReadLine[143:112];
8: DataWord = ReadLine[159:128];
9: DataWord = ReadLine[175:144];
10: DataWord = ReadLine[191:160];
11: DataWord = ReadLine[207:176];
12: DataWord = ReadLine[223:192];
13: DataWord = ReadLine[239:208];
14: DataWord = ReadLine[255:224];
15: DataWord = {16'b0, ReadLine[255:240]};
endcase
end
genvar i;
generate
for (i=0; i < LINESIZE/WORDSIZE; i++) begin
assign ReadLineTransformed[i] = ReadLine[(i+1)*WORDSIZE-1:i*WORDSIZE];
end
endgenerate
// Correctly handle the valid bits
always_ff @(posedge clk, posedge reset) begin
if (reset) begin
ValidOut <= {NUMLINES{1'b0}};
end else if (flush) begin
ValidOut <= {NUMLINES{1'b0}};
end else begin
if (WriteEnable) begin
ValidOut[PCNextIndexF[SETEND:SETBEGIN]] <= 1;
end
end
DataValidBit <= ValidOut[PCNextIndexF[SETEND:SETBEGIN]];
end
assign DataValid = DataValidBit && (DataTag == PCTagF[TAGEND:TAGBEGIN]);
endmodule

View File

@ -63,14 +63,29 @@ module ifu (
output logic IllegalIEUInstrFaultD, output logic IllegalIEUInstrFaultD,
output logic InstrMisalignedFaultM, output logic InstrMisalignedFaultM,
output logic [`XLEN-1:0] InstrMisalignedAdrM, output logic [`XLEN-1:0] InstrMisalignedAdrM,
// TLB management
// mmu management
input logic [1:0] PrivilegeModeW, input logic [1:0] PrivilegeModeW,
input logic [`XLEN-1:0] PageTableEntryF, input logic [`XLEN-1:0] PageTableEntryF,
input logic [1:0] PageTypeF, input logic [1:0] PageTypeF,
input logic [`XLEN-1:0] SATP_REGW, input logic [`XLEN-1:0] SATP_REGW,
input logic STATUS_MXR, STATUS_SUM, input logic STATUS_MXR, STATUS_SUM,
input logic ITLBWriteF, ITLBFlushF, input logic ITLBWriteF, ITLBFlushF,
output logic ITLBMissF, ITLBHitF output logic ITLBMissF, ITLBHitF,
// pmp/pma (inside mmu) signals. *** temporarily from AHB bus but eventually replace with internal versions pre H
input logic [31:0] HADDR,
input logic [2:0] HSIZE, HBURST,
input logic HWRITE,
input logic ExecuteAccessF, //read, write, and atomic access are all set to zero because this mmu is onlt working with instructinos in the F stage.
input logic [63:0] PMPCFG01_REGW, PMPCFG23_REGW, // *** all of these come from the privileged unit, so thwyre gonna have to come over into ifu and dmem
input logic [`XLEN-1:0] PMPADDR_ARRAY_REGW [0:15], // *** this one especially has a large note attached to it in pmpchecker.
output logic PMPInstrAccessFaultF, PMAInstrAccessFaultF,
output logic ISquashBusAccessF,
output logic [5:0] IHSELRegionsF
); );
logic [`XLEN-1:0] UnalignedPCNextF, PCNextF; logic [`XLEN-1:0] UnalignedPCNextF, PCNextF;
@ -85,14 +100,21 @@ module ifu (
logic BPPredDirWrongE, BTBPredPCWrongE, RASPredPCWrongE, BPPredClassNonCFIWrongE; logic BPPredDirWrongE, BTBPredPCWrongE, RASPredPCWrongE, BPPredClassNonCFIWrongE;
logic PMALoadAccessFaultM, PMAStoreAccessFaultM;
logic PMPLoadAccessFaultM, PMPStoreAccessFaultM; // *** these are just so that the mmu has somewhere to put these outputs, they're unused in this stage
// if you're allowed to parameterize outputs/ inputs existence, these are an easy delete.
tlb #(.ENTRY_BITS(3), .ITLB(1)) itlb(.TLBAccessType(2'b10), .VirtualAddress(PCF), mmu #(.ENTRY_BITS(`ITLB_ENTRY_BITS), .IMMU(1)) itlb(.TLBAccessType(2'b10), .VirtualAddress(PCF),
.PageTableEntryWrite(PageTableEntryF), .PageTypeWrite(PageTypeF), .PageTableEntryWrite(PageTableEntryF), .PageTypeWrite(PageTypeF),
.TLBWrite(ITLBWriteF), .TLBFlush(ITLBFlushF), .TLBWrite(ITLBWriteF), .TLBFlush(ITLBFlushF),
.PhysicalAddress(PCPF), .TLBMiss(ITLBMissF), .PhysicalAddress(PCPF), .TLBMiss(ITLBMissF),
.TLBHit(ITLBHitF), .TLBPageFault(ITLBInstrPageFaultF), .TLBHit(ITLBHitF), .TLBPageFault(ITLBInstrPageFaultF),
.AtomicAccessM(1'b0), .WriteAccessM(1'b0), .ReadAccessM(1'b0), // *** is this the right way force these bits constant? should they be someething else?
.SquashBusAccess(ISquashBusAccessF), .HSELRegions(IHSELRegionsF),
.*); .*);
// branch predictor signals // branch predictor signals
logic SelBPPredF; logic SelBPPredF;
logic [`XLEN-1:0] BPPredPCF, PCCorrectE, PCNext0F, PCNext1F, PCNext2F, PCNext3F; logic [`XLEN-1:0] BPPredPCF, PCCorrectE, PCNext0F, PCNext1F, PCNext2F, PCNext3F;

View File

@ -32,7 +32,7 @@ module cam_line #(parameter KEY_BITS = 20,
parameter HIGH_SEGMENT_BITS = 10) ( parameter HIGH_SEGMENT_BITS = 10) (
input clk, reset, input clk, reset,
// input to scheck which SvMode is running // input to check which SvMode is running
input [`SVMODE_BITS-1:0] SvMode, input [`SVMODE_BITS-1:0] SvMode,
// The requested page number to compare against the key // The requested page number to compare against the key

View File

@ -0,0 +1,98 @@
///////////////////////////////////////////
// mmu.sv
//
// Written: david_harris@hmc.edu and kmacsaigoren@hmc.edu 4 June 2021
// Modified:
//
// Purpose: Memory management unit, including TLB, PMA, PMP
//
// A component of the Wally configurable RISC-V project.
//
// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
// is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
///////////////////////////////////////////
`include "wally-config.vh"
// The TLB will have 2**ENTRY_BITS total entries
module mmu #(parameter ENTRY_BITS = 3,
parameter IMMU = 0) (
input logic clk, reset,
// Current value of satp CSR (from privileged unit)
input logic [`XLEN-1:0] SATP_REGW,
input logic STATUS_MXR, STATUS_SUM,
// Current privilege level of the processeor
input logic [1:0] PrivilegeModeW,
// 00 - TLB is not being accessed
// 1x - TLB is accessed for a read (or an instruction)
// x1 - TLB is accessed for a write
// 11 - TLB is accessed for both read and write
input logic [1:0] TLBAccessType,
// Virtual address input
input logic [`XLEN-1:0] VirtualAddress,
// Controls for writing a new entry to the TLB
input logic [`XLEN-1:0] PageTableEntryWrite,
input logic [1:0] PageTypeWrite,
input logic TLBWrite,
// Invalidate all TLB entries
input logic TLBFlush,
// Physical address outputs
output logic [`XLEN-1:0] PhysicalAddress,
output logic TLBMiss,
output logic TLBHit,
// Faults
output logic TLBPageFault,
// PMA checker signals
input logic [31:0] HADDR,
input logic [2:0] HSIZE, HBURST,
input logic HWRITE,
input logic AtomicAccessM, ExecuteAccessF, WriteAccessM, ReadAccessM,
input logic [63:0] PMPCFG01_REGW, PMPCFG23_REGW, // *** all of these come from the privileged unit, so thwyre gonna have to come over into ifu and dmem
input logic [`XLEN-1:0] PMPADDR_ARRAY_REGW [0:15], // *** this one especially has a large note attached to it in pmpchecker.
output logic SquashBusAccess, // *** send to privileged unit
output logic PMPInstrAccessFaultF, PMPLoadAccessFaultM, PMPStoreAccessFaultM,
output logic PMAInstrAccessFaultF, PMALoadAccessFaultM, PMAStoreAccessFaultM,
output logic [5:0] HSELRegions
);
logic PMPSquashBusAccess, PMASquashBusAccess;
logic Cacheable, Idempotent, AtomicAllowed; // *** here so that the pmachecker has somewhere to put these outputs. *** I'm leaving them as outputs to pma checker, but I'm stopping them here.
// Translation lookaside buffer
tlb #(.ENTRY_BITS(ENTRY_BITS), .ITLB(IMMU)) tlb(.*);
///////////////////////////////////////////
// Check physical memory accesses
///////////////////////////////////////////
pmachecker pmachecker(.*);
pmpchecker pmpchecker(.*);
assign SquashBusAccess = PMASquashBusAccess || PMPSquashBusAccess;
endmodule

View File

@ -66,7 +66,7 @@ module pmachecker (
assign ValidBootTim = '1; assign ValidBootTim = '1;
assign ValidTim = '1; assign ValidTim = '1;
assign ValidCLINT = ~ExecuteAccessF && ((HSIZE == 3'b011) || (HSIZE == 3'b010)); assign ValidCLINT = ~ExecuteAccessF && ((HSIZE == 3'b011 && `XLEN==64) || (HSIZE == 3'b010 && `XLEN==32));
assign ValidGPIO = ~ExecuteAccessF && (HSIZE == 3'b010); assign ValidGPIO = ~ExecuteAccessF && (HSIZE == 3'b010);
assign ValidUART = ~ExecuteAccessF && (HSIZE == 3'b000); assign ValidUART = ~ExecuteAccessF && (HSIZE == 3'b000);
assign ValidPLIC = ~ExecuteAccessF && (HSIZE == 3'b010); assign ValidPLIC = ~ExecuteAccessF && (HSIZE == 3'b010);

View File

@ -27,6 +27,7 @@
/////////////////////////////////////////// ///////////////////////////////////////////
`include "wally-config.vh" `include "wally-config.vh"
`include "wally-constants.vh"
module pmpchecker ( module pmpchecker (
input logic clk, reset, input logic clk, reset,
@ -35,9 +36,6 @@ module pmpchecker (
input logic [1:0] PrivilegeModeW, input logic [1:0] PrivilegeModeW,
input logic [1:0] STATUS_MPP,
input logic STATUS_MPRV,
input logic [63:0] PMPCFG01_REGW, PMPCFG23_REGW, input logic [63:0] PMPCFG01_REGW, PMPCFG23_REGW,
// *** ModelSim has a switch -svinputport which controls whether input ports // *** ModelSim has a switch -svinputport which controls whether input ports

View File

@ -51,39 +51,39 @@
// The TLB will have 2**ENTRY_BITS total entries // The TLB will have 2**ENTRY_BITS total entries
module tlb #(parameter ENTRY_BITS = 3, module tlb #(parameter ENTRY_BITS = 3,
parameter ITLB = 0) ( parameter ITLB = 0) (
input clk, reset, input logic clk, reset,
// Current value of satp CSR (from privileged unit) // Current value of satp CSR (from privileged unit)
input [`XLEN-1:0] SATP_REGW, input logic [`XLEN-1:0] SATP_REGW,
input STATUS_MXR, STATUS_SUM, input logic STATUS_MXR, STATUS_SUM,
// Current privilege level of the processeor // Current privilege level of the processeor
input [1:0] PrivilegeModeW, input logic [1:0] PrivilegeModeW,
// 00 - TLB is not being accessed // 00 - TLB is not being accessed
// 1x - TLB is accessed for a read (or an instruction) // 1x - TLB is accessed for a read (or an instruction)
// x1 - TLB is accessed for a write // x1 - TLB is accessed for a write
// 11 - TLB is accessed for both read and write // 11 - TLB is accessed for both read and write
input [1:0] TLBAccessType, input logic [1:0] TLBAccessType,
// Virtual address input // Virtual address input
input [`XLEN-1:0] VirtualAddress, input logic [`XLEN-1:0] VirtualAddress,
// Controls for writing a new entry to the TLB // Controls for writing a new entry to the TLB
input [`XLEN-1:0] PageTableEntryWrite, input logic [`XLEN-1:0] PageTableEntryWrite,
input [1:0] PageTypeWrite, input logic [1:0] PageTypeWrite,
input TLBWrite, input logic TLBWrite,
// Invalidate all TLB entries // Invalidate all TLB entries
input TLBFlush, input logic TLBFlush,
// Physical address outputs // Physical address outputs
output [`XLEN-1:0] PhysicalAddress, output logic [`XLEN-1:0] PhysicalAddress,
output TLBMiss, output logic TLBMiss,
output TLBHit, output logic TLBHit,
// Faults // Faults
output TLBPageFault output logic TLBPageFault
); );
logic Translate; logic Translate;
@ -143,7 +143,7 @@ module tlb #(parameter ENTRY_BITS = 3,
assign PageOffset = VirtualAddress[11:0]; assign PageOffset = VirtualAddress[11:0];
// TLB entries are evicted according to the LRU algorithm // TLB entries are evicted according to the LRU algorithm
tlb_lru lru(.*); tlb_lru #(ENTRY_BITS) lru(.*);
tlb_ram #(ENTRY_BITS) tlb_ram(.*); tlb_ram #(ENTRY_BITS) tlb_ram(.*);
tlb_cam #(ENTRY_BITS, `VPN_BITS, `VPN_SEGMENT_BITS) tlb_cam(.*); tlb_cam #(ENTRY_BITS, `VPN_BITS, `VPN_SEGMENT_BITS) tlb_cam(.*);

View File

@ -26,6 +26,7 @@
/////////////////////////////////////////// ///////////////////////////////////////////
`include "wally-config.vh" `include "wally-config.vh"
`include "wally-constants.vh"
module csr #(parameter module csr #(parameter
// Constants // Constants

View File

@ -28,6 +28,7 @@
/////////////////////////////////////////// ///////////////////////////////////////////
`include "wally-config.vh" `include "wally-config.vh"
`include "wally-constants.vh"
module csrc ( module csrc (
input logic clk, reset, input logic clk, reset,

View File

@ -25,6 +25,7 @@
/////////////////////////////////////////// ///////////////////////////////////////////
`include "wally-config.vh" `include "wally-config.vh"
`include "wally-constants.vh"
module csrsr ( module csrsr (
input logic clk, reset, StallW, input logic clk, reset, StallW,

View File

@ -25,6 +25,7 @@
/////////////////////////////////////////// ///////////////////////////////////////////
`include "wally-config.vh" `include "wally-config.vh"
`include "wally-constants.vh"
module privdec ( module privdec (
input logic [31:20] InstrM, input logic [31:20] InstrM,

View File

@ -25,7 +25,9 @@
/////////////////////////////////////////// ///////////////////////////////////////////
`include "wally-config.vh" `include "wally-config.vh"
`include "wally-constants.vh"
// *** remove signals not needed by PMA/PMP now that it is moved
module privileged ( module privileged (
input logic clk, reset, input logic clk, reset,
input logic FlushW, input logic FlushW,
@ -52,21 +54,24 @@ module privileged (
input logic TimerIntM, ExtIntM, SwIntM, input logic TimerIntM, ExtIntM, SwIntM,
input logic [`XLEN-1:0] InstrMisalignedAdrM, MemAdrM, input logic [`XLEN-1:0] InstrMisalignedAdrM, MemAdrM,
input logic [4:0] SetFflagsM, input logic [4:0] SetFflagsM,
// Trap signals from pmp/pma in mmu
// *** do these need to be split up into one for dmem and one for ifu?
// instead, could we only care about the instr and F pins that come from ifu and only care about the load/store and m pins that come from dmem?
input logic PMAInstrAccessFaultF, PMPInstrAccessFaultF,
input logic PMALoadAccessFaultM, PMPLoadAccessFaultM,
input logic PMAStoreAccessFaultM, PMPStoreAccessFaultM,
output logic IllegalFPUInstrE, output logic IllegalFPUInstrE,
output logic [1:0] PrivilegeModeW, output logic [1:0] PrivilegeModeW,
output logic [`XLEN-1:0] SATP_REGW, output logic [`XLEN-1:0] SATP_REGW,
output logic STATUS_MXR, STATUS_SUM, output logic STATUS_MXR, STATUS_SUM,
output logic [63:0] PMPCFG01_REGW, PMPCFG23_REGW,
output logic [`XLEN-1:0] PMPADDR_ARRAY_REGW [0:15], //*** to be sent up through wallypipelinedhart into the pma/pmp in ifu and dmem. *** is it a bad idea to have this huge bus running all over?
output logic [2:0] FRM_REGW, output logic [2:0] FRM_REGW,
input logic FlushD, FlushE, FlushM, StallD, StallW, StallE, StallM, input logic FlushD, FlushE, FlushM, StallD, StallW, StallE, StallM
// PMA checker signals
input logic [31:0] HADDR,
input logic [2:0] HSIZE, HBURST,
input logic HWRITE,
input logic AtomicAccessM, ExecuteAccessF, WriteAccessM, ReadAccessM,
output logic Cacheable, Idempotent, AtomicAllowed,
output logic SquashBusAccess,
output logic [5:0] HSELRegions
); );
logic [1:0] NextPrivilegeModeM; logic [1:0] NextPrivilegeModeM;
@ -91,18 +96,11 @@ module privileged (
logic InterruptM; logic InterruptM;
logic [1:0] STATUS_MPP; logic [1:0] STATUS_MPP;
logic STATUS_SPP, STATUS_TSR; logic STATUS_SPP, STATUS_TSR, STATUS_MPRV; // **** status mprv is unused outside of the csr module as of 4 June 2021. should it be deleted alltogether from the module, or should I leav the pin here in case someone needs it?
logic STATUS_MIE, STATUS_SIE; logic STATUS_MIE, STATUS_SIE;
logic STATUS_MPRV;
logic [11:0] MIP_REGW, MIE_REGW; logic [11:0] MIP_REGW, MIE_REGW;
logic md, sd; logic md, sd;
logic [63:0] PMPCFG01_REGW, PMPCFG23_REGW;
logic [`XLEN-1:0] PMPADDR_ARRAY_REGW [0:15];
logic PMASquashBusAccess, PMPSquashBusAccess;
logic PMAInstrAccessFaultF, PMALoadAccessFaultM, PMAStoreAccessFaultM;
logic PMPInstrAccessFaultF, PMPLoadAccessFaultM, PMPStoreAccessFaultM;
/////////////////////////////////////////// ///////////////////////////////////////////
// track the current privilege level // track the current privilege level
@ -143,13 +141,6 @@ module privileged (
csr csr(.*); csr csr(.*);
///////////////////////////////////////////
// Check physical memory accesses
///////////////////////////////////////////
pmachecker pmachecker(.*);
pmpchecker pmpchecker(.*);
/////////////////////////////////////////// ///////////////////////////////////////////
// Extract exceptions by name and handle them // Extract exceptions by name and handle them
/////////////////////////////////////////// ///////////////////////////////////////////
@ -169,8 +160,6 @@ module privileged (
assign LoadAccessFaultM = PMALoadAccessFaultM || PMPLoadAccessFaultM; assign LoadAccessFaultM = PMALoadAccessFaultM || PMPLoadAccessFaultM;
assign StoreAccessFaultM = PMAStoreAccessFaultM || PMPStoreAccessFaultM; assign StoreAccessFaultM = PMAStoreAccessFaultM || PMPStoreAccessFaultM;
assign SquashBusAccess = PMASquashBusAccess || PMPSquashBusAccess;
// pipeline fault signals // pipeline fault signals
flopenrc #(2) faultregD(clk, reset, FlushD, ~StallD, flopenrc #(2) faultregD(clk, reset, FlushD, ~StallD,
{InstrPageFaultF, InstrAccessFaultF}, {InstrPageFaultF, InstrAccessFaultF},

View File

@ -25,6 +25,7 @@
/////////////////////////////////////////// ///////////////////////////////////////////
`include "wally-config.vh" `include "wally-config.vh"
`include "wally-constants.vh"
module trap ( module trap (
input logic clk, reset, input logic clk, reset,

View File

@ -99,7 +99,7 @@ module wallypipelinedhart (
logic FStallD; logic FStallD;
logic FWriteIntE, FWriteIntW, FWriteIntM; logic FWriteIntE, FWriteIntW, FWriteIntM;
logic [31:0] FSROutW; logic [31:0] FSROutW;
logic FDivSqrtDoneM; logic FDivBusyE;
logic IllegalFPUInstrD, IllegalFPUInstrE; logic IllegalFPUInstrD, IllegalFPUInstrE;
logic [`XLEN-1:0] FPUResultW; logic [`XLEN-1:0] FPUResultW;
@ -111,14 +111,18 @@ module wallypipelinedhart (
logic [`XLEN-1:0] SATP_REGW; logic [`XLEN-1:0] SATP_REGW;
logic STATUS_MXR, STATUS_SUM; logic STATUS_MXR, STATUS_SUM;
logic [1:0] PrivilegeModeW; logic [1:0] PrivilegeModeW;
logic [`XLEN-1:0] PageTableEntryF, PageTableEntryM; logic [`XLEN-1:0] PageTableEntryF, PageTableEntryM;
logic [1:0] PageTypeF, PageTypeM; logic [1:0] PageTypeF, PageTypeM;
// PMA checker signals // PMA checker signals
logic AtomicAccessM, ExecuteAccessF, WriteAccessM, ReadAccessM; logic AtomicAccessM, ExecuteAccessF, WriteAccessM, ReadAccessM;
logic Cacheable, Idempotent, AtomicAllowed; logic PMPInstrAccessFaultF, PMPLoadAccessFaultM, PMPStoreAccessFaultM;
logic SquashBusAccess; logic PMAInstrAccessFaultF, PMALoadAccessFaultM, PMAStoreAccessFaultM;
logic DSquashBusAccessM, ISquashBusAccessF;
logic [5:0] DHSELRegionsM, IHSELRegionsF;
logic [`XLEN-1:0] PMPADDR_ARRAY_REGW [0:15]; // *** again, this is a huge bus to be sending all around.
logic [63:0] PMPCFG01_REGW, PMPCFG23_REGW; // signals being sent from privileged unit to pmp/pma in dmem and ifu.
assign HSELRegions = ExecuteAccessF ? IHSELRegionsF : DHSELRegionsM; // *** this is a pure guess on how one of these should be selected. it passes tests, but is it the right way to do this?
// IMem stalls // IMem stalls
logic ICacheStallF; logic ICacheStallF;

View File

@ -1,4 +1,5 @@
`include "wally-config.vh" `include "wally-config.vh"
`include "wally-constants.vh"
module testbench(); module testbench();

View File

@ -122,6 +122,10 @@ string tests32f[] = '{
}; };
string tests64d[] = '{ string tests64d[] = '{
// "rv64d/I-FDIV-D-01", "2000",
"rv64d/I-FNMADD-D-01", "2000",
"rv64d/I-FNMSUB-D-01", "2000",
"rv64d/I-FMSUB-D-01", "2000",
"rv64d/I-FMAX-D-01", "2000", "rv64d/I-FMAX-D-01", "2000",
"rv64d/I-FMIN-D-01", "2000", "rv64d/I-FMIN-D-01", "2000",
"rv64d/I-FLE-D-01", "2000", "rv64d/I-FLE-D-01", "2000",
@ -139,16 +143,12 @@ string tests32f[] = '{
// "rv64d/I-FCVT-S-D-01", "2000", // "rv64d/I-FCVT-S-D-01", "2000",
// "rv64d/I-FCVT-W-D-01", "2000", // "rv64d/I-FCVT-W-D-01", "2000",
// "rv64d/I-FCVT-WU-D-01", "2000", // "rv64d/I-FCVT-WU-D-01", "2000",
// "rv64d/I-FDIV-D-01", "2000",
"rv64d/I-FSD-01", "2000", "rv64d/I-FSD-01", "2000",
"rv64d/I-FLD-01", "2420", "rv64d/I-FLD-01", "2420",
"rv64d/I-FMADD-D-01", "2000", "rv64d/I-FMADD-D-01", "2000",
// "rv64d/I-FMSUB-D-01", "2000", "rv64d/I-FMUL-D-01", "2000",
// "rv64d/I-FMUL-D-01", "2000",
"rv64d/I-FMV-D-X-01", "2000", "rv64d/I-FMV-D-X-01", "2000",
"rv64d/I-FMV-X-D-01", "2000", "rv64d/I-FMV-X-D-01", "2000",
// "rv64d/I-FNMADD-D-01", "2000",
// "rv64d/I-FNMSUB-D-01", "2000",
"rv64d/I-FSGNJ-D-01", "2000", "rv64d/I-FSGNJ-D-01", "2000",
"rv64d/I-FSGNJN-D-01", "2000", "rv64d/I-FSGNJN-D-01", "2000",
"rv64d/I-FSGNJX-D-01", "2000", "rv64d/I-FSGNJX-D-01", "2000",